diff --git a/03_source/mobile.compile_ok b/03_source/mobile.compile_ok
deleted file mode 160000
index 69f0997..0000000
--- a/03_source/mobile.compile_ok
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 69f0997a2768594b18bf5fc8054bf5e5159957ce
diff --git a/03_source/mobile_notworking.del/.editorconfig b/03_source/mobile_notworking.del/.editorconfig
deleted file mode 100644
index 82da0b1..0000000
--- a/03_source/mobile_notworking.del/.editorconfig
+++ /dev/null
@@ -1,15 +0,0 @@
-# http://editorconfig.org
-
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.md]
-insert_final_newline = false
-trim_trailing_whitespace = false
\ No newline at end of file
diff --git a/03_source/mobile_notworking.del/.env.example b/03_source/mobile_notworking.del/.env.example
deleted file mode 100644
index 496aabc..0000000
--- a/03_source/mobile_notworking.del/.env.example
+++ /dev/null
@@ -1,2 +0,0 @@
-VITE_SUPABASE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE
-VITE_SUPABASE_URL=http://192.168.10.89:8000
\ No newline at end of file
diff --git a/03_source/mobile_notworking.del/.firebaserc b/03_source/mobile_notworking.del/.firebaserc
deleted file mode 100644
index 711741d..0000000
--- a/03_source/mobile_notworking.del/.firebaserc
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "projects": {
- "default": "ionic-react-conference-app"
- }
-}
diff --git a/03_source/mobile_notworking.del/.gitignore b/03_source/mobile_notworking.del/.gitignore
deleted file mode 100644
index 0f63220..0000000
--- a/03_source/mobile_notworking.del/.gitignore
+++ /dev/null
@@ -1,93 +0,0 @@
-**/*log
-**/*log.*
-**/*del
-**/*del.*
-**/*copy*
-*copy*
-**/_backup/*
-**/*bak
-**/*bak.*
-
-# Logs
-.firebase
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-bower_components
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (http://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-node_modules/
-jspm_packages/
-
-# Typescript v1 declaration files
-typings/
-
-# Optional npm cache directory
-.npm
-
-# Optional eslint cache
-.eslintcache
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variables file
-.env
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-
-# testing
-/coverage
-
-# production
-/dist
-
-# misc
-.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-.stencil/
diff --git a/03_source/mobile_notworking.del/.netlify/_redirects b/03_source/mobile_notworking.del/.netlify/_redirects
deleted file mode 100644
index 50a4633..0000000
--- a/03_source/mobile_notworking.del/.netlify/_redirects
+++ /dev/null
@@ -1 +0,0 @@
-/* /index.html 200
\ No newline at end of file
diff --git a/03_source/mobile_notworking.del/.netlify/state.json b/03_source/mobile_notworking.del/.netlify/state.json
deleted file mode 100644
index 6daa700..0000000
--- a/03_source/mobile_notworking.del/.netlify/state.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "siteId": "86675615-6271-4145-8ffe-9c78dc4d34a3"
-}
diff --git a/03_source/mobile_notworking.del/.prettierignore b/03_source/mobile_notworking.del/.prettierignore
deleted file mode 100644
index 9df5fd4..0000000
--- a/03_source/mobile_notworking.del/.prettierignore
+++ /dev/null
@@ -1 +0,0 @@
-**/_backup
\ No newline at end of file
diff --git a/03_source/mobile_notworking.del/.prettierrc.js b/03_source/mobile_notworking.del/.prettierrc.js
deleted file mode 100644
index cddf861..0000000
--- a/03_source/mobile_notworking.del/.prettierrc.js
+++ /dev/null
@@ -1,34 +0,0 @@
-module.exports = {
- arrowParens: 'avoid',
- bracketSpacing: true,
- htmlWhitespaceSensitivity: 'strict',
- insertPragma: false,
- jsxBracketSameLine: false,
- jsxSingleQuote: false,
- printWidth: 120,
- proseWrap: 'preserve',
- quoteProps: 'as-needed',
- requirePragma: false,
- semi: true,
- singleQuote: true,
- tabWidth: 2,
- trailingComma: 'all',
- useTabs: false,
- endOfLine: 'lf',
- //
- overrides: [
- {
- files: ['*.yml'],
- options: {
- singleQuote: false,
- },
- },
- {
- files: ['*.md', '*.mdx'],
- options: {
- useTabs: false,
- },
- },
- ],
- plugins: [require.resolve('prettier-plugin-organize-imports')],
-};
diff --git a/03_source/mobile_notworking.del/.vscode/settings.json b/03_source/mobile_notworking.del/.vscode/settings.json
deleted file mode 100644
index ca6026c..0000000
--- a/03_source/mobile_notworking.del/.vscode/settings.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "javascript.updateImportsOnFileMove.enabled": "always",
- "typescript.updateImportsOnFileMove.enabled": "always",
- "git.ignoreLimitWarning": true
-}
diff --git a/03_source/mobile_notworking.del/Dockerfile b/03_source/mobile_notworking.del/Dockerfile
deleted file mode 100644
index 50f9ef0..0000000
--- a/03_source/mobile_notworking.del/Dockerfile
+++ /dev/null
@@ -1 +0,0 @@
-FROM node:20-bullseye-slim
diff --git a/03_source/mobile_notworking.del/LICENSE b/03_source/mobile_notworking.del/LICENSE
deleted file mode 100644
index 623c70a..0000000
--- a/03_source/mobile_notworking.del/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-Copyright 2015-present Drifty Co.
-http://drifty.com/
-
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/03_source/mobile_notworking.del/README.md b/03_source/mobile_notworking.del/README.md
deleted file mode 100644
index 90bbe13..0000000
--- a/03_source/mobile_notworking.del/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# Ionic React Conference Application
-
-This application is purely a kitchen-sink demo of the Ionic Framework and React.
-
-**There is not an actual Ionic Conference at this time.** This project is just to show off Ionic components in a real-world application.
-
-## Angular and Vue versions
-
-We've built versions of this Conference app in Angular and Vue for developers that would prefer to use one of those framework options:
-
-https://github.com/ionic-team/ionic-conference-app
-
-https://github.com/ionic-team/ionic-vue-conference-app
-
-## Table of Contents
-
-- [Getting Started](#getting-started)
-- [App Preview](#app-preview)
-
-## Getting Started
-
-- [Download the installer](https://nodejs.org/) for Node LTS.
-- Install the ionic CLI globally: `npm install -g ionic`
-- Clone this repository: `git clone https://github.com/ionic-team/ionic-react-conference-app.git`.
-- Run `npm install` from the project root.
-- Run `ionic serve` in a terminal from the project root.
-- Profit. :tada:
-
-## App Preview
-
-### [Menu](https://github.com/ionic-team/ionic-react-conference-app/blob/main/src/components/Menu.tsx)
-
-| Material Design | iOS |
-| -------------------------------------------------------- | ------------------------------------------------ |
-|  |  |
-
-### [Schedule Page](https://github.com/ionic-team/ionic-react-conference-app/blob/main/src/pages/SchedulePage.tsx)
-
-| Material Design | iOS |
-| ---------------------------------------------------------------- | -------------------------------------------------------- |
-|  |  |
-
-### [Speakers Page](https://github.com/ionic-team/ionic-react-conference-app/blob/main/src/pages/SpeakerList.tsx)
-
-| Material Design | iOS |
-| ---------------------------------------------------------------- | -------------------------------------------------------- |
-|  |  |
-
-### [Speaker Detail Page](https://github.com/ionic-team/ionic-react-conference-app/blob/main/src/pages/SpeakerDetail.tsx)
-
-| Material Design | iOS |
-| ---------------------------------------------------------------------------- | -------------------------------------------------------------------- |
-|  |  |
-
-### [About Page](https://github.com/ionic-team/ionic-react-conference-app/blob/main/src/pages/About.tsx)
-
-| Material Design | iOS |
-| ---------------------------------------------------------- | -------------------------------------------------- |
-|  |  |
diff --git a/03_source/mobile_notworking.del/babel.config.js b/03_source/mobile_notworking.del/babel.config.js
deleted file mode 100644
index e659974..0000000
--- a/03_source/mobile_notworking.del/babel.config.js
+++ /dev/null
@@ -1,14 +0,0 @@
-// Only used for jest
-module.exports = {
- presets: [
- [
- '@babel/preset-env',
- {
- targets: {
- node: 'current',
- },
- },
- ],
- '@babel/preset-typescript',
- ],
-};
diff --git a/03_source/mobile_notworking.del/backup_src.js b/03_source/mobile_notworking.del/backup_src.js
deleted file mode 100644
index 2a41dad..0000000
--- a/03_source/mobile_notworking.del/backup_src.js
+++ /dev/null
@@ -1,63 +0,0 @@
-const execSync = require('child_process').execSync;
-const fs = require('fs');
-const path = require('path');
-// const chalk = require('chalk');
-
-// Function to get all subdirectories of a given directory
-function getDirectories(srcPath, excludeDirs) {
- return fs
- .readdirSync(srcPath)
- .filter(file => !excludeDirs.includes(file) && fs.lstatSync(path.join(srcPath, file)).isDirectory())
- .map(name => path.join(srcPath, name));
-}
-
-// Get current working directory
-const cwd = process.cwd();
-const backup_dir = path.join(cwd, '_backup');
-
-// Path to app-head directory
-const appHeadDir = path.join(cwd, 'src');
-
-// Check if app-head exists
-if (!fs.existsSync(appHeadDir)) {
- console.error(`Error: ${appHeadDir} does not exist.`);
- process.exit(1);
-}
-
-// Execute reset.bat scripts
-try {
- // execSync(`cmd /c "cd ${appHeadDir} && scripts\\reset.bat"`, { stdio: 'inherit' });
-} catch (err) {
- console.error(`Error executing reset.bat script: ${err.message}`);
- process.exit(1);
-}
-
-// Define excluded directories
-const excludedDirs = ['.next', 'node_modules', '.git', 'volumes', '_mp4'];
-
-// Copy app-head directory and its contents to a new directory with an increasing number suffix
-let maxNum = 0;
-const directories = getDirectories(backup_dir, excludedDirs);
-for (const dir of directories) {
- const match = dir.match(/^.+draft-(\d+).*$/);
- if (match) {
- const num = parseInt(match[1], 10);
- if (num > maxNum) {
- maxNum = num;
- }
- }
-}
-
-var zerofilled = ('0000' + (maxNum + 1)).slice(-4);
-const targetDir = path.join(backup_dir, `draft-${zerofilled}`);
-fs.mkdirSync(targetDir);
-
-// Copy app-head directory and its contents to targetDir, excluding specified directories
-fs.cpSync(appHeadDir, targetDir, {
- filter: src => !excludedDirs.includes(path.basename(src)),
- recursive: true,
-});
-
-console.log(' DONE DONE DONE \n' + ' DONE DONE DONE \n' + ' DONE DONE DONE \n');
-
-console.log(`Successfully backup to ${targetDir}.`);
diff --git a/03_source/mobile_notworking.del/capacitor.config.json b/03_source/mobile_notworking.del/capacitor.config.json
deleted file mode 100644
index 0f2dd5f..0000000
--- a/03_source/mobile_notworking.del/capacitor.config.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "appId": "io.ionic.starter",
- "appName": "ionic-react-conference-app",
- "bundledWebRuntime": false,
- "npmClient": "npm",
- "webDir": "dist",
- "cordova": {}
-}
diff --git a/03_source/mobile_notworking.del/dc_up.sh b/03_source/mobile_notworking.del/dc_up.sh
deleted file mode 100755
index 3e67268..0000000
--- a/03_source/mobile_notworking.del/dc_up.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env bash
-
-set -ex
-
-docker compose up -d
-
-docker compose exec -it mobile bash
\ No newline at end of file
diff --git a/03_source/mobile_notworking.del/docker-compose.yml b/03_source/mobile_notworking.del/docker-compose.yml
deleted file mode 100644
index 576ee97..0000000
--- a/03_source/mobile_notworking.del/docker-compose.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-name: 009_poc_chatroom_implement
-
-services:
- mobile:
- build: .
- ports:
- - 3000:3000
- command: sleep infinity
- volumes:
- - .:/app
- working_dir: /app
diff --git a/03_source/mobile_notworking.del/firebase.json b/03_source/mobile_notworking.del/firebase.json
deleted file mode 100644
index 49a74df..0000000
--- a/03_source/mobile_notworking.del/firebase.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "hosting": {
- "public": "build",
- "rewrites": [
- {
- "source": "**",
- "destination": "/index.html"
- }
- ],
- "headers": [
- {
- "source": "**/static/**",
- "headers": [
- {
- "key": "Cache-Control",
- "value": "max-age=31536000"
- }
- ]
- },
- {
- "source": "**/*.@(jpg|jpeg|gif|png|svg)",
- "headers": [
- {
- "key": "Cache-Control",
- "value": "max-age=31536000"
- }
- ]
- }
- ]
- }
-}
diff --git a/03_source/mobile_notworking.del/index.html b/03_source/mobile_notworking.del/index.html
deleted file mode 100644
index 613a63a..0000000
--- a/03_source/mobile_notworking.del/index.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- Ionic Conference App
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/03_source/mobile_notworking.del/ionic.config.json b/03_source/mobile_notworking.del/ionic.config.json
deleted file mode 100644
index f610198..0000000
--- a/03_source/mobile_notworking.del/ionic.config.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "name": "ionic-react-conference-app",
- "integrations": {
- "capacitor": {}
- },
- "type": "react"
-}
diff --git a/03_source/mobile_notworking.del/package-lock.json b/03_source/mobile_notworking.del/package-lock.json
deleted file mode 100644
index 7d49635..0000000
--- a/03_source/mobile_notworking.del/package-lock.json
+++ /dev/null
@@ -1,13057 +0,0 @@
-{
- "name": "ionic-react-conference-app",
- "version": "0.0.1",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "ionic-react-conference-app",
- "version": "0.0.1",
- "dependencies": {
- "@capacitor/camera": "^4.1.5",
- "@capacitor/core": "^4.6.1",
- "@capacitor/preferences": "^4.0.2",
- "@ionic/pwa-elements": "^3.3.0",
- "@ionic/react": "8.2.6",
- "@ionic/react-router": "8.2.6",
- "@supabase/auth-helpers-nextjs": "^0.9.0",
- "@supabase/auth-helpers-react": "^0.3.1",
- "@supabase/ssr": "latest",
- "@supabase/supabase-js": "2.44.0",
- "date-fns": "^2.25.0",
- "dayjs": "^1.11.13",
- "i18next": "^22.4.14",
- "i18next-browser-languagedetector": "^7.0.1",
- "ionicons": "^7.1.2",
- "lodash": "^4.17.21",
- "prettier-plugin-organize-imports": "^4.0.0",
- "pullstate": "^1.22.1",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-i18next": "^12.2.0",
- "react-markdown": "^9.0.1",
- "react-router": "^5.3.4",
- "react-router-dom": "^5.3.4",
- "react-use": "^17.2.4",
- "reselect": "^4.0.0",
- "sass": "^1.59.3",
- "swiper": "^9.1.1",
- "typescript": "5.3.3"
- },
- "devDependencies": {
- "@capacitor/cli": "^4.6.1",
- "@testing-library/react": "^9.3.1",
- "@types/googlemaps": "^3.38.0",
- "@types/jest": "24.0.18",
- "@types/node": "20.11.5",
- "@types/react": "18.2.48",
- "@types/react-dom": "18.2.18",
- "@types/react-router": "^5.1.20",
- "@types/react-router-dom": "^5.3.3",
- "@vitejs/plugin-legacy": "^5.4.1",
- "@vitejs/plugin-react": "^4.3.1",
- "lint-staged": "^13.2.0",
- "prettier": "^2.8.6",
- "vite": "^5.4.0"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
- "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
- "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/highlight": "^7.24.7",
- "picocolors": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz",
- "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz",
- "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.0",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-module-transforms": "^7.25.2",
- "@babel/helpers": "^7.25.0",
- "@babel/parser": "^7.25.0",
- "@babel/template": "^7.25.0",
- "@babel/traverse": "^7.25.2",
- "@babel/types": "^7.25.2",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz",
- "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.25.6",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^2.5.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
- "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz",
- "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
- "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.25.2",
- "@babel/helper-validator-option": "^7.24.8",
- "browserslist": "^4.23.1",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz",
- "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-member-expression-to-functions": "^7.24.8",
- "@babel/helper-optimise-call-expression": "^7.24.7",
- "@babel/helper-replace-supers": "^7.25.0",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/traverse": "^7.25.4",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz",
- "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "regexpu-core": "^5.3.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
- "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.22.6",
- "@babel/helper-plugin-utils": "^7.22.5",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz",
- "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.24.8",
- "@babel/types": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
- "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
- "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-simple-access": "^7.24.7",
- "@babel/helper-validator-identifier": "^7.24.7",
- "@babel/traverse": "^7.25.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
- "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
- "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz",
- "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-wrap-function": "^7.25.0",
- "@babel/traverse": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-replace-supers": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz",
- "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-member-expression-to-functions": "^7.24.8",
- "@babel/helper-optimise-call-expression": "^7.24.7",
- "@babel/traverse": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
- "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz",
- "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
- "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
- "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
- "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-wrap-function": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz",
- "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.25.0",
- "@babel/traverse": "^7.25.0",
- "@babel/types": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz",
- "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
- "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.24.7",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
- "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.25.6"
- },
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
- "version": "7.25.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz",
- "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz",
- "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz",
- "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz",
- "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.13.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz",
- "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0-placeholder-for-preset-env.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
- "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-static-block": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
- "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz",
- "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz",
- "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-private-property-in-object": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
- "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
- "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz",
- "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz",
- "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-remap-async-to-generator": "^7.25.0",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/traverse": "^7.25.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz",
- "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-remap-async-to-generator": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz",
- "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz",
- "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz",
- "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.25.4",
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz",
- "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.12.0"
- }
- },
- "node_modules/@babel/plugin-transform-classes": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz",
- "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-replace-supers": "^7.25.0",
- "@babel/traverse": "^7.25.4",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz",
- "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/template": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz",
- "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz",
- "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz",
- "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz",
- "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.0",
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-dynamic-import": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz",
- "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz",
- "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-export-namespace-from": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz",
- "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-for-of": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz",
- "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-function-name": {
- "version": "7.25.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz",
- "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.24.8",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-json-strings": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz",
- "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-literals": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz",
- "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz",
- "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz",
- "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz",
- "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz",
- "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.24.8",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-simple-access": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz",
- "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.25.0",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
- "@babel/traverse": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz",
- "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz",
- "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-new-target": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz",
- "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz",
- "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-numeric-separator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz",
- "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz",
- "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-object-super": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz",
- "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-replace-supers": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-optional-catch-binding": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz",
- "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz",
- "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-parameters": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz",
- "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz",
- "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.25.4",
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz",
- "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz",
- "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz",
- "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz",
- "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz",
- "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "regenerator-transform": "^0.15.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz",
- "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz",
- "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-spread": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz",
- "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz",
- "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz",
- "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz",
- "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz",
- "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-property-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz",
- "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz",
- "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz",
- "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/preset-env": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz",
- "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.25.4",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-validator-option": "^7.24.8",
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3",
- "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0",
- "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.24.7",
- "@babel/plugin-syntax-import-attributes": "^7.24.7",
- "@babel/plugin-syntax-import-meta": "^7.10.4",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.24.7",
- "@babel/plugin-transform-async-generator-functions": "^7.25.4",
- "@babel/plugin-transform-async-to-generator": "^7.24.7",
- "@babel/plugin-transform-block-scoped-functions": "^7.24.7",
- "@babel/plugin-transform-block-scoping": "^7.25.0",
- "@babel/plugin-transform-class-properties": "^7.25.4",
- "@babel/plugin-transform-class-static-block": "^7.24.7",
- "@babel/plugin-transform-classes": "^7.25.4",
- "@babel/plugin-transform-computed-properties": "^7.24.7",
- "@babel/plugin-transform-destructuring": "^7.24.8",
- "@babel/plugin-transform-dotall-regex": "^7.24.7",
- "@babel/plugin-transform-duplicate-keys": "^7.24.7",
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0",
- "@babel/plugin-transform-dynamic-import": "^7.24.7",
- "@babel/plugin-transform-exponentiation-operator": "^7.24.7",
- "@babel/plugin-transform-export-namespace-from": "^7.24.7",
- "@babel/plugin-transform-for-of": "^7.24.7",
- "@babel/plugin-transform-function-name": "^7.25.1",
- "@babel/plugin-transform-json-strings": "^7.24.7",
- "@babel/plugin-transform-literals": "^7.25.2",
- "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
- "@babel/plugin-transform-member-expression-literals": "^7.24.7",
- "@babel/plugin-transform-modules-amd": "^7.24.7",
- "@babel/plugin-transform-modules-commonjs": "^7.24.8",
- "@babel/plugin-transform-modules-systemjs": "^7.25.0",
- "@babel/plugin-transform-modules-umd": "^7.24.7",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
- "@babel/plugin-transform-new-target": "^7.24.7",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
- "@babel/plugin-transform-numeric-separator": "^7.24.7",
- "@babel/plugin-transform-object-rest-spread": "^7.24.7",
- "@babel/plugin-transform-object-super": "^7.24.7",
- "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.8",
- "@babel/plugin-transform-parameters": "^7.24.7",
- "@babel/plugin-transform-private-methods": "^7.25.4",
- "@babel/plugin-transform-private-property-in-object": "^7.24.7",
- "@babel/plugin-transform-property-literals": "^7.24.7",
- "@babel/plugin-transform-regenerator": "^7.24.7",
- "@babel/plugin-transform-reserved-words": "^7.24.7",
- "@babel/plugin-transform-shorthand-properties": "^7.24.7",
- "@babel/plugin-transform-spread": "^7.24.7",
- "@babel/plugin-transform-sticky-regex": "^7.24.7",
- "@babel/plugin-transform-template-literals": "^7.24.7",
- "@babel/plugin-transform-typeof-symbol": "^7.24.8",
- "@babel/plugin-transform-unicode-escapes": "^7.24.7",
- "@babel/plugin-transform-unicode-property-regex": "^7.24.7",
- "@babel/plugin-transform-unicode-regex": "^7.24.7",
- "@babel/plugin-transform-unicode-sets-regex": "^7.25.4",
- "@babel/preset-modules": "0.1.6-no-external-plugins",
- "babel-plugin-polyfill-corejs2": "^0.4.10",
- "babel-plugin-polyfill-corejs3": "^0.10.6",
- "babel-plugin-polyfill-regenerator": "^0.6.1",
- "core-js-compat": "^3.37.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-env/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/preset-modules": {
- "version": "0.1.6-no-external-plugins",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
- "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/@babel/regjsgen": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@babel/runtime": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
- "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
- "license": "MIT",
- "dependencies": {
- "regenerator-runtime": "^0.14.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
- "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/parser": "^7.25.0",
- "@babel/types": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz",
- "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.6",
- "@babel/parser": "^7.25.6",
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.6",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
- "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@capacitor/camera": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@capacitor/camera/-/camera-4.1.5.tgz",
- "integrity": "sha512-E00IRsJiIr1kP3EkJa0OWp//TDFXOx3ifDfmLOmIkPxKt1FfuNheE0ipWBo5b44pKsx9pO64Rm9MkfUhgH5Rfg==",
- "license": "MIT",
- "peerDependencies": {
- "@capacitor/core": "^4.0.0"
- }
- },
- "node_modules/@capacitor/cli": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-4.7.1.tgz",
- "integrity": "sha512-cUEMci4KBb8gwIDXaO9F2Woz1wnugB/vVq2sRVy8+fzOfhmHlxweuH+h9RktDkpceVi+COfxYw/VPjg1wjC1tA==",
- "dev": true,
- "dependencies": {
- "@ionic/cli-framework-output": "^2.2.5",
- "@ionic/utils-fs": "^3.1.6",
- "@ionic/utils-subprocess": "^2.1.11",
- "@ionic/utils-terminal": "^2.3.3",
- "commander": "^9.3.0",
- "debug": "^4.3.4",
- "env-paths": "^2.2.0",
- "kleur": "^4.1.4",
- "native-run": "^1.6.0",
- "open": "^8.4.0",
- "plist": "^3.0.5",
- "prompts": "^2.4.2",
- "rimraf": "^3.0.2",
- "semver": "^7.3.7",
- "tar": "^6.1.11",
- "tslib": "^2.4.0",
- "xml2js": "^0.4.23"
- },
- "bin": {
- "cap": "bin/capacitor",
- "capacitor": "bin/capacitor"
- },
- "engines": {
- "node": ">=12.4.0"
- }
- },
- "node_modules/@capacitor/cli/node_modules/commander": {
- "version": "9.5.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
- "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || >=14"
- }
- },
- "node_modules/@capacitor/core": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-4.7.1.tgz",
- "integrity": "sha512-NZcsyPNt1avNELnKuD5OsL/O/ejQxlw9UkLUEuiptPPAEwS8WJ1gGabaEBbCb2wNA/nPfrGH+ZC2LGhlpMlLeg==",
- "dependencies": {
- "tslib": "^2.1.0"
- }
- },
- "node_modules/@capacitor/preferences": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@capacitor/preferences/-/preferences-4.0.2.tgz",
- "integrity": "sha512-HgcRkMdVHSIV3TeQLZFmCaCeMWQ25wLyZZ7dA2f8Rw81Q1Nroxsi7HxTEGNqrWKSN9PNKBJD8vChr6eB2GNtZg==",
- "peerDependencies": {
- "@capacitor/core": "^4.0.0"
- }
- },
- "node_modules/@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@ionic/cli-framework-output": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/@ionic/cli-framework-output/-/cli-framework-output-2.2.5.tgz",
- "integrity": "sha512-YeDLTnTaE6V4IDUxT8GDIep0GuRIFaR7YZDLANMuuWJZDmnTku6DP+MmQoltBeLmVvz1BAAZgk41xzxdq6H2FQ==",
- "dev": true,
- "dependencies": {
- "@ionic/utils-terminal": "2.3.3",
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/core": {
- "version": "8.2.6",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.2.6.tgz",
- "integrity": "sha512-9vLxIR+QFzeim/C6LV62vOm5e6EIoVZsLb5RjlnQICDbDf14iqcBjA+MZpW628HbADX7p9/ulaq8WFgx5085ZA==",
- "license": "MIT",
- "dependencies": {
- "@stencil/core": "^4.19.2",
- "ionicons": "^7.2.2",
- "tslib": "^2.1.0"
- }
- },
- "node_modules/@ionic/pwa-elements": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@ionic/pwa-elements/-/pwa-elements-3.3.0.tgz",
- "integrity": "sha512-vbykpxd2nGRlA67AnqDwsiVf8PUmInLyi6lQdnPDjeiML1WZa0CPe6r632nGDV9PTi+sWNde9Xexg9SD6Pwyqw==",
- "license": "MIT",
- "engines": {
- "node": ">=16.0.0",
- "npm": ">=8.0.0"
- }
- },
- "node_modules/@ionic/react": {
- "version": "8.2.6",
- "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.2.6.tgz",
- "integrity": "sha512-qcdd04P3vZzeyQvjF/7RIK9JJPxQgpBm3VxUh6a/NUPuLsq4d66UcD2pr4vGaejD3Vf15wyZeHDAVQGjqq+X2A==",
- "license": "MIT",
- "dependencies": {
- "@ionic/core": "8.2.6",
- "ionicons": "^7.0.0",
- "tslib": "*"
- },
- "peerDependencies": {
- "react": ">=16.8.6",
- "react-dom": ">=16.8.6"
- }
- },
- "node_modules/@ionic/react-router": {
- "version": "8.2.6",
- "resolved": "https://registry.npmjs.org/@ionic/react-router/-/react-router-8.2.6.tgz",
- "integrity": "sha512-Fs8IafBxD8tMmsN9PvAEgW0GHJGl1gtVeAW1NkW22wOeS+mLoZxd6iV0lqr5tnV1uhQZBQeCoaH4MtM497ltdw==",
- "license": "MIT",
- "dependencies": {
- "@ionic/react": "8.2.6",
- "tslib": "*"
- },
- "peerDependencies": {
- "react": ">=16.8.6",
- "react-dom": ">=16.8.6",
- "react-router": "^5.0.1",
- "react-router-dom": "^5.0.1"
- }
- },
- "node_modules/@ionic/utils-array": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.5.tgz",
- "integrity": "sha512-HD72a71IQVBmQckDwmA8RxNVMTbxnaLbgFOl+dO5tbvW9CkkSFCv41h6fUuNsSEVgngfkn0i98HDuZC8mk+lTA==",
- "dev": true,
- "dependencies": {
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-fs": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.6.tgz",
- "integrity": "sha512-eikrNkK89CfGPmexjTfSWl4EYqsPSBh0Ka7by4F0PLc1hJZYtJxUZV3X4r5ecA8ikjicUmcbU7zJmAjmqutG/w==",
- "dev": true,
- "dependencies": {
- "@types/fs-extra": "^8.0.0",
- "debug": "^4.0.0",
- "fs-extra": "^9.0.0",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-object": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.5.tgz",
- "integrity": "sha512-XnYNSwfewUqxq+yjER1hxTKggftpNjFLJH0s37jcrNDwbzmbpFTQTVAp4ikNK4rd9DOebX/jbeZb8jfD86IYxw==",
- "dev": true,
- "dependencies": {
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-process": {
- "version": "2.1.10",
- "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.10.tgz",
- "integrity": "sha512-mZ7JEowcuGQK+SKsJXi0liYTcXd2bNMR3nE0CyTROpMECUpJeAvvaBaPGZf5ERQUPeWBVuwqAqjUmIdxhz5bxw==",
- "dev": true,
- "dependencies": {
- "@ionic/utils-object": "2.1.5",
- "@ionic/utils-terminal": "2.3.3",
- "debug": "^4.0.0",
- "signal-exit": "^3.0.3",
- "tree-kill": "^1.2.2",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-stream": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.5.tgz",
- "integrity": "sha512-hkm46uHvEC05X/8PHgdJi4l4zv9VQDELZTM+Kz69odtO9zZYfnt8DkfXHJqJ+PxmtiE5mk/ehJWLnn/XAczTUw==",
- "dev": true,
- "dependencies": {
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-subprocess": {
- "version": "2.1.11",
- "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.11.tgz",
- "integrity": "sha512-6zCDixNmZCbMCy5np8klSxOZF85kuDyzZSTTQKQP90ZtYNCcPYmuFSzaqDwApJT4r5L3MY3JrqK1gLkc6xiUPw==",
- "dev": true,
- "dependencies": {
- "@ionic/utils-array": "2.1.5",
- "@ionic/utils-fs": "3.1.6",
- "@ionic/utils-process": "2.1.10",
- "@ionic/utils-stream": "3.1.5",
- "@ionic/utils-terminal": "2.3.3",
- "cross-spawn": "^7.0.3",
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-terminal": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.3.tgz",
- "integrity": "sha512-RnuSfNZ5fLEyX3R5mtcMY97cGD1A0NVBbarsSQ6yMMfRJ5YHU7hHVyUfvZeClbqkBC/pAqI/rYJuXKCT9YeMCQ==",
- "dev": true,
- "dependencies": {
- "@types/slice-ansi": "^4.0.0",
- "debug": "^4.0.0",
- "signal-exit": "^3.0.3",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "tslib": "^2.0.1",
- "untildify": "^4.0.0",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-terminal/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@ionic/utils-terminal/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@ionic/utils-terminal/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/@ionic/utils-terminal/node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/@jest/types": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
- "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^13.0.0"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/source-map": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz",
- "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
- "license": "MIT"
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz",
- "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz",
- "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz",
- "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz",
- "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz",
- "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz",
- "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz",
- "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz",
- "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz",
- "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz",
- "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz",
- "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz",
- "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz",
- "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz",
- "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz",
- "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz",
- "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@sheerun/mutationobserver-shim": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz",
- "integrity": "sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q==",
- "dev": true
- },
- "node_modules/@stencil/core": {
- "version": "4.21.0",
- "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.21.0.tgz",
- "integrity": "sha512-v50lnVbzS8mpMSnEVxR+G75XpvxHKtkJaQrNPE8+/fF6Ppr5z4bcdcBhcP8LPfEW+4BZcic6VifMXRwTopc+kw==",
- "license": "MIT",
- "bin": {
- "stencil": "bin/stencil"
- },
- "engines": {
- "node": ">=16.0.0",
- "npm": ">=7.10.0"
- }
- },
- "node_modules/@supabase/auth-helpers-nextjs": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.9.0.tgz",
- "integrity": "sha512-V+UKFngSCkzAucX3Zi5D4TRiJZUUx0RDme7W217nIkwhCTvJY7Ih2L1cgnAMihQost2YYgTzJ7DrUzz4mm8i8A==",
- "license": "MIT",
- "dependencies": {
- "@supabase/auth-helpers-shared": "0.6.3",
- "set-cookie-parser": "^2.6.0"
- },
- "peerDependencies": {
- "@supabase/supabase-js": "^2.19.0"
- }
- },
- "node_modules/@supabase/auth-helpers-react": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-react/-/auth-helpers-react-0.3.1.tgz",
- "integrity": "sha512-g3SFv08Dz9FapNif/ZY1b7qKGlMJDyTLSayHBz3kb3FuYxg7aLWgQtydDhm5AGbc0XtvpIBuhGTIOVevwpdosA==",
- "license": "MIT",
- "peerDependencies": {
- "@supabase/supabase-js": "^2.0.4"
- }
- },
- "node_modules/@supabase/auth-helpers-shared": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.6.3.tgz",
- "integrity": "sha512-xYQRLFeFkL4ZfwC7p9VKcarshj3FB2QJMgJPydvOY7J5czJe6xSG5/wM1z63RmAzGbCkKg+dzpq61oeSyWiGBQ==",
- "license": "MIT",
- "dependencies": {
- "jose": "^4.14.4"
- },
- "peerDependencies": {
- "@supabase/supabase-js": "^2.19.0"
- }
- },
- "node_modules/@supabase/auth-js": {
- "version": "2.64.2",
- "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.64.2.tgz",
- "integrity": "sha512-s+lkHEdGiczDrzXJ1YWt2y3bxRi+qIUnXcgkpLSrId7yjBeaXBFygNjTaoZLG02KNcYwbuZ9qkEIqmj2hF7svw==",
- "license": "MIT",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "node_modules/@supabase/functions-js": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.1.tgz",
- "integrity": "sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA==",
- "license": "MIT",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "node_modules/@supabase/node-fetch": {
- "version": "2.6.15",
- "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz",
- "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==",
- "license": "MIT",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- }
- },
- "node_modules/@supabase/postgrest-js": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.15.6.tgz",
- "integrity": "sha512-zg3URVhoHOijdqMyn3LIFHh+Pqj5BmRqWAaoSExzIHc4m0kGBMPMjDcleamGhbelAAiKbjpQ04mBgooDliGl5A==",
- "license": "MIT",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "node_modules/@supabase/realtime-js": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.10.1.tgz",
- "integrity": "sha512-SrrXxE8xgwWvjREQMkC9LIHIoCQde+OqkFPKP2s/O0ROjhmJ/iXeLvoWhAzXh9gwire4oaK14/ncL/iRiaVWQw==",
- "license": "MIT",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14",
- "@types/phoenix": "^1.5.4",
- "@types/ws": "^8.5.10",
- "ws": "^8.14.2"
- }
- },
- "node_modules/@supabase/ssr": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@supabase/ssr/-/ssr-0.5.1.tgz",
- "integrity": "sha512-+G94H/GZG0nErZ3FQV9yJmsC5Rj7dmcfCAwOt37hxeR1La+QTl8cE9whzYwPUrTJjMLGNXoO+1BMvVxwBAbz4g==",
- "license": "MIT",
- "dependencies": {
- "cookie": "^0.6.0"
- },
- "peerDependencies": {
- "@supabase/supabase-js": "^2.43.4"
- }
- },
- "node_modules/@supabase/storage-js": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.6.0.tgz",
- "integrity": "sha512-REAxr7myf+3utMkI2oOmZ6sdplMZZ71/2NEIEMBZHL9Fkmm3/JnaOZVSRqvG4LStYj2v5WhCruCzuMn6oD/Drw==",
- "license": "MIT",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "node_modules/@supabase/supabase-js": {
- "version": "2.44.0",
- "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.44.0.tgz",
- "integrity": "sha512-SzMvAgSVuPzx7itiYiascXAVBqTcZ9zX3ONIdhZEWKUEgWaJftfPyVvz+PMYznK77miSMuy1f4geAvPElyiS2g==",
- "license": "MIT",
- "dependencies": {
- "@supabase/auth-js": "2.64.2",
- "@supabase/functions-js": "2.4.1",
- "@supabase/node-fetch": "2.6.15",
- "@supabase/postgrest-js": "1.15.6",
- "@supabase/realtime-js": "2.10.1",
- "@supabase/storage-js": "2.6.0"
- }
- },
- "node_modules/@testing-library/dom": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-6.10.0.tgz",
- "integrity": "sha512-8Tq4aRDeukB+6WE0rVXO1TlS38uu05CpbHgEa9SLR3JWuBajOVEPk9HgOfOFOqWqoo5nEIthXBgLobbofEhuUg==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.6.2",
- "@sheerun/mutationobserver-shim": "^0.3.2",
- "@types/testing-library__dom": "^6.0.0",
- "aria-query": "3.0.0",
- "pretty-format": "^24.9.0",
- "wait-for-expect": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@testing-library/react": {
- "version": "9.3.1",
- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-9.3.1.tgz",
- "integrity": "sha512-BXlYrbxTkifNVb7rIC8EHqYXgG/rBeULqG3V0wbEAuSaZ7n5ERX9Bcp0i+9EecrNpLNPwR0cIxdKNp6qVTZS9A==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.6.0",
- "@testing-library/dom": "^6.3.0",
- "@types/testing-library__react": "^9.1.0"
- },
- "engines": {
- "node": ">=8"
- },
- "peerDependencies": {
- "react": "*",
- "react-dom": "*"
- }
- },
- "node_modules/@types/babel__core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "node_modules/@types/babel__generator": {
- "version": "7.6.8",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
- "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__template": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__traverse": {
- "version": "7.20.6",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
- "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.20.7"
- }
- },
- "node_modules/@types/debug": {
- "version": "4.1.12",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
- "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
- "license": "MIT",
- "dependencies": {
- "@types/ms": "*"
- }
- },
- "node_modules/@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "license": "MIT"
- },
- "node_modules/@types/estree-jsx": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
- "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
- "license": "MIT",
- "dependencies": {
- "@types/estree": "*"
- }
- },
- "node_modules/@types/fs-extra": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz",
- "integrity": "sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/googlemaps": {
- "version": "3.38.0",
- "resolved": "https://registry.npmjs.org/@types/googlemaps/-/googlemaps-3.38.0.tgz",
- "integrity": "sha512-Rp7FnrwyYGnjoxM+/q/4DRqUzvV9JKK1SBRXx8APxU6NNMtYMsWmOMsQOV2U6z8aMFzlUbRv3EDixLcDep8t9w==",
- "deprecated": "Types for the Google Maps browser API have moved to @types/google.maps. Note: these types are not for the googlemaps npm package, which is a Node API.",
- "dev": true
- },
- "node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/@types/history": {
- "version": "4.7.11",
- "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz",
- "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==",
- "dev": true
- },
- "node_modules/@types/istanbul-lib-coverage": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
- "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==",
- "dev": true
- },
- "node_modules/@types/istanbul-lib-report": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz",
- "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "node_modules/@types/istanbul-reports": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz",
- "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "*",
- "@types/istanbul-lib-report": "*"
- }
- },
- "node_modules/@types/jest": {
- "version": "24.0.18",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.18.tgz",
- "integrity": "sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==",
- "dev": true,
- "dependencies": {
- "@types/jest-diff": "*"
- }
- },
- "node_modules/@types/jest-diff": {
- "version": "20.0.1",
- "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz",
- "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==",
- "dev": true
- },
- "node_modules/@types/js-cookie": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz",
- "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==",
- "license": "MIT"
- },
- "node_modules/@types/mdast": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
- "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/@types/ms": {
- "version": "0.7.34",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
- "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==",
- "license": "MIT"
- },
- "node_modules/@types/node": {
- "version": "20.11.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz",
- "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==",
- "license": "MIT",
- "dependencies": {
- "undici-types": "~5.26.4"
- }
- },
- "node_modules/@types/phoenix": {
- "version": "1.6.5",
- "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.5.tgz",
- "integrity": "sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==",
- "license": "MIT"
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.3",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
- "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
- },
- "node_modules/@types/react": {
- "version": "18.2.48",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz",
- "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==",
- "license": "MIT",
- "dependencies": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@types/react-dom": {
- "version": "18.2.18",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz",
- "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/react": "*"
- }
- },
- "node_modules/@types/react-router": {
- "version": "5.1.20",
- "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz",
- "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==",
- "dev": true,
- "dependencies": {
- "@types/history": "^4.7.11",
- "@types/react": "*"
- }
- },
- "node_modules/@types/react-router-dom": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz",
- "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==",
- "dev": true,
- "dependencies": {
- "@types/history": "^4.7.11",
- "@types/react": "*",
- "@types/react-router": "*"
- }
- },
- "node_modules/@types/scheduler": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
- },
- "node_modules/@types/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-+OpjSaq85gvlZAYINyzKpLeiFkSC4EsC6IIiT6v6TLSU5k5U83fHGj9Lel8oKEXM0HqgrMVCjXPDPVICtxF7EQ==",
- "dev": true
- },
- "node_modules/@types/testing-library__dom": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.10.0.tgz",
- "integrity": "sha512-mL/GMlyQxiZplbUuFNwA0vAI3k3uJNSf6slr5AVve9TXmfLfyefNT0uHHnxwdYuPMxYD5gI/+dgAvc/5opW9JQ==",
- "dev": true,
- "dependencies": {
- "pretty-format": "^24.3.0"
- }
- },
- "node_modules/@types/testing-library__react": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.2.tgz",
- "integrity": "sha512-CYaMqrswQ+cJACy268jsLAw355DZtPZGt3Jwmmotlcu8O/tkoXBI6AeZ84oZBJsIsesozPKzWzmv/0TIU+1E9Q==",
- "dev": true,
- "dependencies": {
- "@types/react-dom": "*",
- "@types/testing-library__dom": "*"
- }
- },
- "node_modules/@types/unist": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
- "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
- "license": "MIT"
- },
- "node_modules/@types/ws": {
- "version": "8.5.12",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz",
- "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/yargs": {
- "version": "13.0.3",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz",
- "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==",
- "dev": true,
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/@types/yargs-parser": {
- "version": "13.1.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz",
- "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==",
- "dev": true
- },
- "node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "license": "ISC"
- },
- "node_modules/@vitejs/plugin-legacy": {
- "version": "5.4.2",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-5.4.2.tgz",
- "integrity": "sha512-hlyyQL+wEIyOWdwsUKX+0g3kBU4AbHmVzHarLvVKiGGGqLIYjttMvvjk6zGY8RD9dab6QuFNhDoxg0YFhQ26xA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.25.2",
- "@babel/preset-env": "^7.25.3",
- "browserslist": "^4.23.3",
- "browserslist-to-esbuild": "^2.1.1",
- "core-js": "^3.38.0",
- "magic-string": "^0.30.11",
- "regenerator-runtime": "^0.14.1",
- "systemjs": "^6.15.1"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "peerDependencies": {
- "terser": "^5.4.0",
- "vite": "^5.0.0"
- }
- },
- "node_modules/@vitejs/plugin-react": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz",
- "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.24.5",
- "@babel/plugin-transform-react-jsx-self": "^7.24.5",
- "@babel/plugin-transform-react-jsx-source": "^7.24.1",
- "@types/babel__core": "^7.20.5",
- "react-refresh": "^0.14.2"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "peerDependencies": {
- "vite": "^4.2.0 || ^5.0.0"
- }
- },
- "node_modules/@xobotyi/scrollbar-width": {
- "version": "1.9.5",
- "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz",
- "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==",
- "license": "MIT"
- },
- "node_modules/acorn": {
- "version": "8.8.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
- "dev": true,
- "peer": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dev": true,
- "dependencies": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/aria-query": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
- "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=",
- "dev": true,
- "dependencies": {
- "ast-types-flow": "0.0.7",
- "commander": "^2.11.0"
- }
- },
- "node_modules/ast-types-flow": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
- "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
- "dev": true
- },
- "node_modules/astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true,
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.11",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
- "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.6.2",
- "semver": "^6.3.1"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.10.6",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
- "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.2",
- "core-js-compat": "^3.38.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
- "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/bail": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
- "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/big-integer": {
- "version": "1.6.51",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
- "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
- "dev": true,
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/bplist-parser": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz",
- "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==",
- "dev": true,
- "dependencies": {
- "big-integer": "1.6.x"
- },
- "engines": {
- "node": ">= 5.10.0"
- }
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browserslist": {
- "version": "4.23.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
- "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "caniuse-lite": "^1.0.30001646",
- "electron-to-chromium": "^1.5.4",
- "node-releases": "^2.0.18",
- "update-browserslist-db": "^1.1.0"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/browserslist-to-esbuild": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/browserslist-to-esbuild/-/browserslist-to-esbuild-2.1.1.tgz",
- "integrity": "sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "meow": "^13.0.0"
- },
- "bin": {
- "browserslist-to-esbuild": "cli/index.js"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "browserslist": "*"
- }
- },
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001655",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz",
- "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "CC-BY-4.0"
- },
- "node_modules/ccount": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
- "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/character-entities": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
- "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-html4": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
- "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-legacy": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
- "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-reference-invalid": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
- "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cli-truncate": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
- "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==",
- "dev": true,
- "dependencies": {
- "slice-ansi": "^5.0.0",
- "string-width": "^5.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cli-truncate/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/cli-truncate/node_modules/string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dev": true,
- "dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cli-truncate/node_modules/strip-ansi": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
- "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "node_modules/colorette": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
- "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
- "dev": true
- },
- "node_modules/comma-separated-tokens": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
- "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/commander": {
- "version": "2.20.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.1.tgz",
- "integrity": "sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/copy-to-clipboard": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
- "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
- "license": "MIT",
- "dependencies": {
- "toggle-selection": "^1.0.6"
- }
- },
- "node_modules/core-js": {
- "version": "3.38.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz",
- "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/core-js-compat": {
- "version": "3.38.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz",
- "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.23.3"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/cross-spawn/node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/css-in-js-utils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz",
- "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==",
- "license": "MIT",
- "dependencies": {
- "hyphenate-style-name": "^1.0.3"
- }
- },
- "node_modules/css-tree": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
- "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
- "license": "MIT",
- "dependencies": {
- "mdn-data": "2.0.14",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
- "license": "MIT"
- },
- "node_modules/date-fns": {
- "version": "2.25.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz",
- "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==",
- "engines": {
- "node": ">=0.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/date-fns"
- }
- },
- "node_modules/dayjs": {
- "version": "1.11.13",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
- "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
- "license": "MIT"
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decode-named-character-reference": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
- "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
- "license": "MIT",
- "dependencies": {
- "character-entities": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/define-lazy-prop": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
- "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dequal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/devlop": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
- "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
- "license": "MIT",
- "dependencies": {
- "dequal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true
- },
- "node_modules/electron-to-chromium": {
- "version": "1.5.13",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz",
- "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/elementtree": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz",
- "integrity": "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg==",
- "dev": true,
- "dependencies": {
- "sax": "1.1.4"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
- },
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/error-stack-parser": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
- "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
- "license": "MIT",
- "dependencies": {
- "stackframe": "^1.3.4"
- }
- },
- "node_modules/esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/estree-util-is-identifier-name": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
- "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/execa": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz",
- "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.1",
- "human-signals": "^4.3.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^3.0.7",
- "strip-final-newline": "^3.0.0"
- },
- "engines": {
- "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/execa/node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/execa/node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "license": "MIT"
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "license": "MIT"
- },
- "node_modules/fast-shallow-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz",
- "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw=="
- },
- "node_modules/fastest-stable-stringify": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz",
- "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==",
- "license": "MIT"
- },
- "node_modules/fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dev": true,
- "dependencies": {
- "pend": "~1.2.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dev": true,
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/fs-minipass/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/fs-minipass/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/hast-util-to-jsx-runtime": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz",
- "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==",
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/unist": "^3.0.0",
- "comma-separated-tokens": "^2.0.0",
- "devlop": "^1.0.0",
- "estree-util-is-identifier-name": "^3.0.0",
- "hast-util-whitespace": "^3.0.0",
- "mdast-util-mdx-expression": "^2.0.0",
- "mdast-util-mdx-jsx": "^3.0.0",
- "mdast-util-mdxjs-esm": "^2.0.0",
- "property-information": "^6.0.0",
- "space-separated-tokens": "^2.0.0",
- "style-to-object": "^1.0.0",
- "unist-util-position": "^5.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-whitespace": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
- "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/history": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
- "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
- "dependencies": {
- "@babel/runtime": "^7.1.2",
- "loose-envify": "^1.2.0",
- "resolve-pathname": "^3.0.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0",
- "value-equal": "^1.0.1"
- }
- },
- "node_modules/hoist-non-react-statics": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
- "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
- "dependencies": {
- "react-is": "^16.7.0"
- }
- },
- "node_modules/html-parse-stringify": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
- "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==",
- "license": "MIT",
- "dependencies": {
- "void-elements": "3.1.0"
- }
- },
- "node_modules/html-url-attributes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.0.tgz",
- "integrity": "sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/human-signals": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
- "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
- "dev": true,
- "engines": {
- "node": ">=14.18.0"
- }
- },
- "node_modules/hyphenate-style-name": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz",
- "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==",
- "license": "BSD-3-Clause"
- },
- "node_modules/i18next": {
- "version": "22.5.1",
- "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.1.tgz",
- "integrity": "sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==",
- "funding": [
- {
- "type": "individual",
- "url": "https://locize.com"
- },
- {
- "type": "individual",
- "url": "https://locize.com/i18next.html"
- },
- {
- "type": "individual",
- "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.20.6"
- }
- },
- "node_modules/i18next-browser-languagedetector": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.1.tgz",
- "integrity": "sha512-h/pM34bcH6tbz8WgGXcmWauNpQupCGr25XPp9cZwZInR9XHSjIFDYp1SIok7zSPsTOMxdvuLyu86V+g2Kycnfw==",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.23.2"
- }
- },
- "node_modules/immer": {
- "version": "9.0.21",
- "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
- "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/immer"
- }
- },
- "node_modules/immutable": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
- "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg=="
- },
- "node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/ini": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz",
- "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==",
- "dev": true,
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/inline-style-parser": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz",
- "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==",
- "license": "MIT"
- },
- "node_modules/inline-style-prefixer": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz",
- "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==",
- "license": "MIT",
- "dependencies": {
- "css-in-js-utils": "^3.1.0"
- }
- },
- "node_modules/ionicons": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-7.2.2.tgz",
- "integrity": "sha512-I3iYIfc9Q9FRifWyFSwTAvbEABWlWY32i0sAVDDPGYnaIZVugkLCZFbEcrphW6ixVPg8tt1oLwalo/JJwbEqnA==",
- "dependencies": {
- "@stencil/core": "^4.0.3"
- }
- },
- "node_modules/is-alphabetical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
- "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-alphanumerical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
- "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
- "license": "MIT",
- "dependencies": {
- "is-alphabetical": "^2.0.0",
- "is-decimal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
- "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-decimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
- "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true,
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-hexadecimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
- "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "dependencies": {
- "is-docker": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "node_modules/jose": {
- "version": "4.15.9",
- "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz",
- "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/panva"
- }
- },
- "node_modules/js-cookie": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
- "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==",
- "license": "MIT"
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/kleur": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/lilconfig": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
- "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/lint-staged": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.0.tgz",
- "integrity": "sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==",
- "dev": true,
- "dependencies": {
- "chalk": "5.2.0",
- "cli-truncate": "^3.1.0",
- "commander": "^10.0.0",
- "debug": "^4.3.4",
- "execa": "^7.0.0",
- "lilconfig": "2.1.0",
- "listr2": "^5.0.7",
- "micromatch": "^4.0.5",
- "normalize-path": "^3.0.0",
- "object-inspect": "^1.12.3",
- "pidtree": "^0.6.0",
- "string-argv": "^0.3.1",
- "yaml": "^2.2.1"
- },
- "bin": {
- "lint-staged": "bin/lint-staged.js"
- },
- "engines": {
- "node": "^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/lint-staged"
- }
- },
- "node_modules/lint-staged/node_modules/chalk": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
- "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
- "dev": true,
- "engines": {
- "node": "^12.17.0 || ^14.13 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/lint-staged/node_modules/commander": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz",
- "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==",
- "dev": true,
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/listr2": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz",
- "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==",
- "dev": true,
- "dependencies": {
- "cli-truncate": "^2.1.0",
- "colorette": "^2.0.19",
- "log-update": "^4.0.0",
- "p-map": "^4.0.0",
- "rfdc": "^1.3.0",
- "rxjs": "^7.8.0",
- "through": "^2.3.8",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": "^14.13.1 || >=16.0.0"
- },
- "peerDependencies": {
- "enquirer": ">= 2.3.0 < 3"
- },
- "peerDependenciesMeta": {
- "enquirer": {
- "optional": true
- }
- }
- },
- "node_modules/listr2/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/listr2/node_modules/cli-truncate": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
- "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
- "dev": true,
- "dependencies": {
- "slice-ansi": "^3.0.0",
- "string-width": "^4.2.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/listr2/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/listr2/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/listr2/node_modules/rxjs": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
- "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
- "dev": true,
- "dependencies": {
- "tslib": "^2.1.0"
- }
- },
- "node_modules/listr2/node_modules/slice-ansi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
- "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "license": "MIT"
- },
- "node_modules/lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/log-update": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
- "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
- "dev": true,
- "dependencies": {
- "ansi-escapes": "^4.3.0",
- "cli-cursor": "^3.1.0",
- "slice-ansi": "^4.0.0",
- "wrap-ansi": "^6.2.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/log-update/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/log-update/node_modules/cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "dependencies": {
- "restore-cursor": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/log-update/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/log-update/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/log-update/node_modules/restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/log-update/node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/log-update/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/longest-streak": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
- "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/magic-string": {
- "version": "0.30.11",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
- "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.0"
- }
- },
- "node_modules/mdast-util-from-markdown": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz",
- "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark": "^4.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdx-expression": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz",
- "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdx-jsx": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz",
- "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "ccount": "^2.0.0",
- "devlop": "^1.1.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0",
- "parse-entities": "^4.0.0",
- "stringify-entities": "^4.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdxjs-esm": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
- "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-phrasing": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
- "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-hast": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
- "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@ungap/structured-clone": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "trim-lines": "^3.0.0",
- "unist-util-position": "^5.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-markdown": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz",
- "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "longest-streak": "^3.0.0",
- "mdast-util-phrasing": "^4.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "unist-util-visit": "^5.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
- "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdn-data": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
- "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
- "license": "CC0-1.0"
- },
- "node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "node_modules/micromark": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz",
- "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-combine-extensions": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-core-commonmark": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz",
- "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-factory-destination": "^2.0.0",
- "micromark-factory-label": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-factory-title": "^2.0.0",
- "micromark-factory-whitespace": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-html-tag-name": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-destination": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz",
- "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-label": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz",
- "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-space": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
- "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-title": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz",
- "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-whitespace": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz",
- "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-character": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
- "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-chunked": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz",
- "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-classify-character": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz",
- "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-combine-extensions": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz",
- "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-decode-numeric-character-reference": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz",
- "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-decode-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz",
- "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-encode": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
- "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-html-tag-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz",
- "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-normalize-identifier": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz",
- "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-resolve-all": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz",
- "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-sanitize-uri": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz",
- "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-subtokenize": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz",
- "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-types": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
- "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minipass": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz",
- "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "dev": true,
- "dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minizlib/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minizlib/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true,
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/nano-css": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.6.2.tgz",
- "integrity": "sha512-+6bHaC8dSDGALM1HJjOHVXpuastdu2xFoZlC77Jh4cg+33Zcgm+Gxd+1xsnpZK14eyHObSp82+ll5y3SX75liw==",
- "license": "Unlicense",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.15",
- "css-tree": "^1.1.2",
- "csstype": "^3.1.2",
- "fastest-stable-stringify": "^2.0.2",
- "inline-style-prefixer": "^7.0.1",
- "rtl-css-js": "^1.16.1",
- "stacktrace-js": "^2.0.2",
- "stylis": "^4.3.0"
- },
- "peerDependencies": {
- "react": "*",
- "react-dom": "*"
- }
- },
- "node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/native-run": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/native-run/-/native-run-1.7.2.tgz",
- "integrity": "sha512-2aahC8iXIO8BcvEukVMrYwL5sXurkuIGyQgfSGBto832W6ejV+cB5Ww+2/CRxmyozhbxARJ2OMpEGPV8sTqsrQ==",
- "dev": true,
- "dependencies": {
- "@ionic/utils-fs": "^3.1.6",
- "@ionic/utils-terminal": "^2.3.3",
- "bplist-parser": "^0.3.2",
- "debug": "^4.3.4",
- "elementtree": "^0.1.7",
- "ini": "^3.0.1",
- "plist": "^3.0.6",
- "split2": "^4.1.0",
- "through2": "^4.0.2",
- "tslib": "^2.4.0",
- "yauzl": "^2.10.0"
- },
- "bin": {
- "native-run": "bin/native-run"
- },
- "engines": {
- "node": ">=12.13.0"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
- "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-run-path": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
- "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
- "dev": true,
- "dependencies": {
- "path-key": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/npm-run-path/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/open": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
- "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
- "dev": true,
- "dependencies": {
- "define-lazy-prop": "^2.0.0",
- "is-docker": "^2.1.1",
- "is-wsl": "^2.2.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
- "dependencies": {
- "aggregate-error": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parse-entities": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
- "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "character-entities": "^2.0.0",
- "character-entities-legacy": "^3.0.0",
- "character-reference-invalid": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "is-alphanumerical": "^2.0.0",
- "is-decimal": "^2.0.0",
- "is-hexadecimal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/parse-entities/node_modules/@types/unist": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
- "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
- "license": "MIT"
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "dependencies": {
- "isarray": "0.0.1"
- }
- },
- "node_modules/pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
- },
- "node_modules/picocolors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
- "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pidtree": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
- "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
- "dev": true,
- "bin": {
- "pidtree": "bin/pidtree.js"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/plist": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz",
- "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==",
- "dev": true,
- "dependencies": {
- "base64-js": "^1.5.1",
- "xmlbuilder": "^15.1.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/postcss": {
- "version": "8.4.44",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz",
- "integrity": "sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.1",
- "source-map-js": "^1.2.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/prettier": {
- "version": "2.8.6",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
- "integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "node_modules/prettier-plugin-organize-imports": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.0.0.tgz",
- "integrity": "sha512-vnKSdgv9aOlqKeEFGhf9SCBsTyzDSyScy1k7E0R1Uo4L0cTcOV7c1XQaT7jfXIOc/p08WLBfN2QUQA9zDSZMxA==",
- "peerDependencies": {
- "@vue/language-plugin-pug": "^2.0.24",
- "prettier": ">=2.0",
- "typescript": ">=2.9",
- "vue-tsc": "^2.0.24"
- },
- "peerDependenciesMeta": {
- "@vue/language-plugin-pug": {
- "optional": true
- },
- "vue-tsc": {
- "optional": true
- }
- }
- },
- "node_modules/pretty-format": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
- "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^24.9.0",
- "ansi-regex": "^4.0.0",
- "ansi-styles": "^3.2.0",
- "react-is": "^16.8.4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/pretty-format/node_modules/ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/prompts": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
- "dev": true,
- "dependencies": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/prompts/node_modules/kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/prop-types": {
- "version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dependencies": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.13.1"
- }
- },
- "node_modules/prop-types/node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
- "node_modules/property-information": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
- "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/pullstate": {
- "version": "1.25.0",
- "resolved": "https://registry.npmjs.org/pullstate/-/pullstate-1.25.0.tgz",
- "integrity": "sha512-6SJMhK5EbDhrbyocMQOZKY3QKC5RfLcdtYD1y7wioF5dseVsdi3vmeHG3TwW4SrhQQP/WKyU/Np2X6UOhq1F6g==",
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "immer": "^9.0.16"
- },
- "peerDependencies": {
- "react": "^16.12.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.0"
- },
- "peerDependencies": {
- "react": "^18.2.0"
- }
- },
- "node_modules/react-i18next": {
- "version": "12.3.1",
- "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.3.1.tgz",
- "integrity": "sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.20.6",
- "html-parse-stringify": "^3.0.1"
- },
- "peerDependencies": {
- "i18next": ">= 19.0.0",
- "react": ">= 16.8.0"
- },
- "peerDependenciesMeta": {
- "react-dom": {
- "optional": true
- },
- "react-native": {
- "optional": true
- }
- }
- },
- "node_modules/react-is": {
- "version": "16.10.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.1.tgz",
- "integrity": "sha512-BXUMf9sIOPXXZWqr7+c5SeOKJykyVr2u0UDzEf4LNGc6taGkQe1A9DFD07umCIXz45RLr9oAAwZbAJ0Pkknfaw=="
- },
- "node_modules/react-markdown": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz",
- "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "devlop": "^1.0.0",
- "hast-util-to-jsx-runtime": "^2.0.0",
- "html-url-attributes": "^3.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "remark-parse": "^11.0.0",
- "remark-rehype": "^11.0.0",
- "unified": "^11.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- },
- "peerDependencies": {
- "@types/react": ">=18",
- "react": ">=18"
- }
- },
- "node_modules/react-refresh": {
- "version": "0.14.2",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
- "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-router": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
- "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==",
- "dependencies": {
- "@babel/runtime": "^7.12.13",
- "history": "^4.9.0",
- "hoist-non-react-statics": "^3.1.0",
- "loose-envify": "^1.3.1",
- "path-to-regexp": "^1.7.0",
- "prop-types": "^15.6.2",
- "react-is": "^16.6.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0"
- },
- "peerDependencies": {
- "react": ">=15"
- }
- },
- "node_modules/react-router-dom": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz",
- "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==",
- "dependencies": {
- "@babel/runtime": "^7.12.13",
- "history": "^4.9.0",
- "loose-envify": "^1.3.1",
- "prop-types": "^15.6.2",
- "react-router": "5.3.4",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0"
- },
- "peerDependencies": {
- "react": ">=15"
- }
- },
- "node_modules/react-universal-interface": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz",
- "integrity": "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==",
- "peerDependencies": {
- "react": "*",
- "tslib": "*"
- }
- },
- "node_modules/react-use": {
- "version": "17.5.1",
- "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.5.1.tgz",
- "integrity": "sha512-LG/uPEVRflLWMwi3j/sZqR00nF6JGqTTDblkXK2nzXsIvij06hXl1V/MZIlwj1OKIQUtlh1l9jK8gLsRyCQxMg==",
- "license": "Unlicense",
- "dependencies": {
- "@types/js-cookie": "^2.2.6",
- "@xobotyi/scrollbar-width": "^1.9.5",
- "copy-to-clipboard": "^3.3.1",
- "fast-deep-equal": "^3.1.3",
- "fast-shallow-equal": "^1.0.0",
- "js-cookie": "^2.2.1",
- "nano-css": "^5.6.2",
- "react-universal-interface": "^0.6.2",
- "resize-observer-polyfill": "^1.5.1",
- "screenfull": "^5.1.0",
- "set-harmonic-interval": "^1.0.1",
- "throttle-debounce": "^3.0.1",
- "ts-easing": "^0.2.0",
- "tslib": "^2.1.0"
- },
- "peerDependencies": {
- "react": "*",
- "react-dom": "*"
- }
- },
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/regenerate-unicode-properties": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
- "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "regenerate": "^1.4.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regenerator-runtime": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
- "license": "MIT"
- },
- "node_modules/regenerator-transform": {
- "version": "0.15.2",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
- "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "node_modules/regexpu-core": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
- "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/regjsgen": "^0.8.0",
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regjsparser": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
- "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "jsesc": "~0.5.0"
- },
- "bin": {
- "regjsparser": "bin/parser"
- }
- },
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- }
- },
- "node_modules/remark-parse": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
- "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unified": "^11.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-rehype": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz",
- "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "unified": "^11.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/reselect": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz",
- "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA=="
- },
- "node_modules/resize-observer-polyfill": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
- "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
- "license": "MIT"
- },
- "node_modules/resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-pathname": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
- "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
- },
- "node_modules/rfdc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
- "dev": true
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rollup": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.2.tgz",
- "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/estree": "1.0.5"
- },
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.21.2",
- "@rollup/rollup-android-arm64": "4.21.2",
- "@rollup/rollup-darwin-arm64": "4.21.2",
- "@rollup/rollup-darwin-x64": "4.21.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.21.2",
- "@rollup/rollup-linux-arm-musleabihf": "4.21.2",
- "@rollup/rollup-linux-arm64-gnu": "4.21.2",
- "@rollup/rollup-linux-arm64-musl": "4.21.2",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.21.2",
- "@rollup/rollup-linux-s390x-gnu": "4.21.2",
- "@rollup/rollup-linux-x64-gnu": "4.21.2",
- "@rollup/rollup-linux-x64-musl": "4.21.2",
- "@rollup/rollup-win32-arm64-msvc": "4.21.2",
- "@rollup/rollup-win32-ia32-msvc": "4.21.2",
- "@rollup/rollup-win32-x64-msvc": "4.21.2",
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/rtl-css-js": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz",
- "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.1.2"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/sass": {
- "version": "1.59.3",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.59.3.tgz",
- "integrity": "sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ==",
- "dependencies": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
- "source-map-js": ">=0.6.2 <2.0.0"
- },
- "bin": {
- "sass": "sass.js"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/sax": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz",
- "integrity": "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==",
- "dev": true
- },
- "node_modules/scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/screenfull": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz",
- "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/semver/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/set-cookie-parser": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz",
- "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==",
- "license": "MIT"
- },
- "node_modules/set-harmonic-interval": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz",
- "integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==",
- "license": "Unlicense",
- "engines": {
- "node": ">=6.9"
- }
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
- },
- "node_modules/slice-ansi": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
- "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^6.0.0",
- "is-fullwidth-code-point": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/slice-ansi/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
- "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/space-separated-tokens": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
- "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/split2": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz",
- "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==",
- "dev": true,
- "engines": {
- "node": ">= 10.x"
- }
- },
- "node_modules/ssr-window": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz",
- "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ=="
- },
- "node_modules/stack-generator": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
- "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
- "license": "MIT",
- "dependencies": {
- "stackframe": "^1.3.4"
- }
- },
- "node_modules/stackframe": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
- "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
- "license": "MIT"
- },
- "node_modules/stacktrace-gps": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz",
- "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==",
- "license": "MIT",
- "dependencies": {
- "source-map": "0.5.6",
- "stackframe": "^1.3.4"
- }
- },
- "node_modules/stacktrace-gps/node_modules/source-map": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
- "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stacktrace-js": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz",
- "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==",
- "license": "MIT",
- "dependencies": {
- "error-stack-parser": "^2.0.6",
- "stack-generator": "^2.0.5",
- "stacktrace-gps": "^3.0.4"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string-argv": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
- "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
- "dev": true,
- "engines": {
- "node": ">=0.6.19"
- }
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/stringify-entities": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
- "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
- "license": "MIT",
- "dependencies": {
- "character-entities-html4": "^2.0.0",
- "character-entities-legacy": "^3.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/style-to-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.7.tgz",
- "integrity": "sha512-uSjr59G5u6fbxUfKbb8GcqMGT3Xs9v5IbPkjb0S16GyOeBLAzSRK0CixBv5YrYvzO6TDLzIS6QCn78tkqWngPw==",
- "license": "MIT",
- "dependencies": {
- "inline-style-parser": "0.2.3"
- }
- },
- "node_modules/stylis": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz",
- "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==",
- "license": "MIT"
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/swiper": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/swiper/-/swiper-9.1.1.tgz",
- "integrity": "sha512-D1zArOwI6XCXCYBULPA4jTxpqp5SQtvntjinbXNZwXzj6P3KS51zSWuMarCLXq5oRISay4nX+TuShpxz8qhtbw==",
- "funding": [
- {
- "type": "patreon",
- "url": "https://www.patreon.com/swiperjs"
- },
- {
- "type": "open_collective",
- "url": "http://opencollective.com/swiper"
- }
- ],
- "dependencies": {
- "ssr-window": "^4.0.2"
- },
- "engines": {
- "node": ">= 4.7.0"
- }
- },
- "node_modules/systemjs": {
- "version": "6.15.1",
- "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.15.1.tgz",
- "integrity": "sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/tar": {
- "version": "6.1.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
- "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
- "dev": true,
- "dependencies": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^4.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/tar/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/terser": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.0.tgz",
- "integrity": "sha512-pdL757Ig5a0I+owA42l6tIuEycRuM7FPY4n62h44mRLRfnOxJkkOHd6i89dOpwZlpF6JXBwaAHF6yWzFrt+QyA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.8.2",
- "commander": "^2.20.0",
- "source-map-support": "~0.5.20"
- },
- "bin": {
- "terser": "bin/terser"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/throttle-debounce": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
- "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "node_modules/through2": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
- "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
- "dev": true,
- "dependencies": {
- "readable-stream": "3"
- }
- },
- "node_modules/tiny-invariant": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz",
- "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw=="
- },
- "node_modules/tiny-warning": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
- "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/toggle-selection": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
- "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==",
- "license": "MIT"
- },
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
- "license": "MIT"
- },
- "node_modules/tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true,
- "bin": {
- "tree-kill": "cli.js"
- }
- },
- "node_modules/trim-lines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
- "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/trough": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
- "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/ts-easing": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz",
- "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==",
- "license": "Unlicense"
- },
- "node_modules/tslib": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
- "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
- },
- "node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typescript": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
- "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
- "license": "MIT"
- },
- "node_modules/unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
- "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
- "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unified": {
- "version": "11.0.5",
- "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
- "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "bail": "^2.0.0",
- "devlop": "^1.0.0",
- "extend": "^3.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-is": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
- "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-position": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
- "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-stringify-position": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
- "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0",
- "unist-util-visit-parents": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit-parents": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
- "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/untildify": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
- "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
- "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "escalade": "^3.1.2",
- "picocolors": "^1.0.1"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "node_modules/value-equal": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
- "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
- },
- "node_modules/vfile": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
- "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-message": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
- "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vite": {
- "version": "5.4.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.3.tgz",
- "integrity": "sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.21.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/void-elements": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
- "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wait-for-expect": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.1.tgz",
- "integrity": "sha512-3Ha7lu+zshEG/CeHdcpmQsZnnZpPj/UsG3DuKO8FskjuDbkx3jE3845H+CuwZjA2YWYDfKMU2KhnCaXMLd3wVw==",
- "dev": true
- },
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
- "license": "BSD-2-Clause"
- },
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "license": "MIT",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/wrap-ansi/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "node_modules/ws": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
- "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
- "license": "MIT",
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": ">=5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
- "dev": true,
- "dependencies": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/xml2js/node_modules/xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/xmlbuilder": {
- "version": "15.1.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
- "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
- "dev": true,
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/yaml": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz",
- "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==",
- "dev": true,
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "dev": true,
- "dependencies": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
- }
- },
- "node_modules/zwitch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
- "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- }
- },
- "dependencies": {
- "@ampproject/remapping": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
- "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
- "dev": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "@babel/code-frame": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
- "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.24.7",
- "picocolors": "^1.0.0"
- }
- },
- "@babel/compat-data": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz",
- "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==",
- "dev": true
- },
- "@babel/core": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz",
- "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
- "dev": true,
- "requires": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.0",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-module-transforms": "^7.25.2",
- "@babel/helpers": "^7.25.0",
- "@babel/parser": "^7.25.0",
- "@babel/template": "^7.25.0",
- "@babel/traverse": "^7.25.2",
- "@babel/types": "^7.25.2",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@babel/generator": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz",
- "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.25.6",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^2.5.1"
- }
- },
- "@babel/helper-annotate-as-pure": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
- "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.24.7"
- }
- },
- "@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz",
- "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
- "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.25.2",
- "@babel/helper-validator-option": "^7.24.8",
- "browserslist": "^4.23.1",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@babel/helper-create-class-features-plugin": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz",
- "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-member-expression-to-functions": "^7.24.8",
- "@babel/helper-optimise-call-expression": "^7.24.7",
- "@babel/helper-replace-supers": "^7.25.0",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/traverse": "^7.25.4",
- "semver": "^6.3.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@babel/helper-create-regexp-features-plugin": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz",
- "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "regexpu-core": "^5.3.1",
- "semver": "^6.3.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@babel/helper-define-polyfill-provider": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
- "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
- "dev": true,
- "requires": {
- "@babel/helper-compilation-targets": "^7.22.6",
- "@babel/helper-plugin-utils": "^7.22.5",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2"
- }
- },
- "@babel/helper-member-expression-to-functions": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz",
- "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.24.8",
- "@babel/types": "^7.24.8"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
- "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
- "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
- "dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-simple-access": "^7.24.7",
- "@babel/helper-validator-identifier": "^7.24.7",
- "@babel/traverse": "^7.25.2"
- }
- },
- "@babel/helper-optimise-call-expression": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
- "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.24.7"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
- "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
- "dev": true
- },
- "@babel/helper-remap-async-to-generator": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz",
- "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-wrap-function": "^7.25.0",
- "@babel/traverse": "^7.25.0"
- }
- },
- "@babel/helper-replace-supers": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz",
- "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==",
- "dev": true,
- "requires": {
- "@babel/helper-member-expression-to-functions": "^7.24.8",
- "@babel/helper-optimise-call-expression": "^7.24.7",
- "@babel/traverse": "^7.25.0"
- }
- },
- "@babel/helper-simple-access": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
- "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- }
- },
- "@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz",
- "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- }
- },
- "@babel/helper-string-parser": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
- "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
- "dev": true
- },
- "@babel/helper-validator-identifier": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
- "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
- "dev": true
- },
- "@babel/helper-validator-option": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
- "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
- "dev": true
- },
- "@babel/helper-wrap-function": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz",
- "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.25.0",
- "@babel/traverse": "^7.25.0",
- "@babel/types": "^7.25.0"
- }
- },
- "@babel/helpers": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz",
- "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.6"
- }
- },
- "@babel/highlight": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
- "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.24.7",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
- "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.25.6"
- }
- },
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
- "version": "7.25.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz",
- "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.3"
- }
- },
- "@babel/plugin-bugfix-safari-class-field-initializer-scope": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz",
- "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz",
- "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz",
- "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.7"
- }
- },
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz",
- "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.0"
- }
- },
- "@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0-placeholder-for-preset-env.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
- "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
- "dev": true,
- "requires": {}
- },
- "@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
- }
- },
- "@babel/plugin-syntax-class-static-block": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
- "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
- }
- },
- "@babel/plugin-syntax-import-assertions": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz",
- "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-syntax-import-attributes": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz",
- "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-private-property-in-object": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
- "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-unicode-sets-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
- "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-arrow-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz",
- "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-async-generator-functions": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz",
- "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-remap-async-to-generator": "^7.25.0",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/traverse": "^7.25.4"
- }
- },
- "@babel/plugin-transform-async-to-generator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz",
- "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==",
- "dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-remap-async-to-generator": "^7.24.7"
- }
- },
- "@babel/plugin-transform-block-scoped-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz",
- "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-block-scoping": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz",
- "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-class-properties": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz",
- "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.25.4",
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-class-static-block": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz",
- "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- }
- },
- "@babel/plugin-transform-classes": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz",
- "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-replace-supers": "^7.25.0",
- "@babel/traverse": "^7.25.4",
- "globals": "^11.1.0"
- }
- },
- "@babel/plugin-transform-computed-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz",
- "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/template": "^7.24.7"
- }
- },
- "@babel/plugin-transform-destructuring": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz",
- "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-dotall-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz",
- "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-duplicate-keys": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz",
- "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz",
- "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.0",
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-dynamic-import": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz",
- "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- }
- },
- "@babel/plugin-transform-exponentiation-operator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz",
- "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==",
- "dev": true,
- "requires": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-export-namespace-from": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz",
- "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- }
- },
- "@babel/plugin-transform-for-of": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz",
- "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
- }
- },
- "@babel/plugin-transform-function-name": {
- "version": "7.25.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz",
- "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==",
- "dev": true,
- "requires": {
- "@babel/helper-compilation-targets": "^7.24.8",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.1"
- }
- },
- "@babel/plugin-transform-json-strings": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz",
- "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- }
- },
- "@babel/plugin-transform-literals": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz",
- "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz",
- "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- }
- },
- "@babel/plugin-transform-member-expression-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz",
- "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-modules-amd": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz",
- "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-modules-commonjs": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz",
- "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.24.8",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-simple-access": "^7.24.7"
- }
- },
- "@babel/plugin-transform-modules-systemjs": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz",
- "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.25.0",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
- "@babel/traverse": "^7.25.0"
- }
- },
- "@babel/plugin-transform-modules-umd": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz",
- "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz",
- "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-new-target": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz",
- "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz",
- "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- }
- },
- "@babel/plugin-transform-numeric-separator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz",
- "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- }
- },
- "@babel/plugin-transform-object-rest-spread": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz",
- "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==",
- "dev": true,
- "requires": {
- "@babel/helper-compilation-targets": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.24.7"
- }
- },
- "@babel/plugin-transform-object-super": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz",
- "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-replace-supers": "^7.24.7"
- }
- },
- "@babel/plugin-transform-optional-catch-binding": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz",
- "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- }
- },
- "@babel/plugin-transform-optional-chaining": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz",
- "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- }
- },
- "@babel/plugin-transform-parameters": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz",
- "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-private-methods": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz",
- "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.25.4",
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-private-property-in-object": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz",
- "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- }
- },
- "@babel/plugin-transform-property-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz",
- "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-react-jsx-self": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz",
- "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-react-jsx-source": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz",
- "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-regenerator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz",
- "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "regenerator-transform": "^0.15.2"
- }
- },
- "@babel/plugin-transform-reserved-words": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz",
- "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-shorthand-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz",
- "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-spread": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz",
- "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
- }
- },
- "@babel/plugin-transform-sticky-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz",
- "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-template-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz",
- "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-typeof-symbol": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz",
- "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-unicode-escapes": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz",
- "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-unicode-property-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz",
- "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-unicode-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz",
- "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz",
- "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/preset-env": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz",
- "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.25.4",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-validator-option": "^7.24.8",
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3",
- "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0",
- "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.24.7",
- "@babel/plugin-syntax-import-attributes": "^7.24.7",
- "@babel/plugin-syntax-import-meta": "^7.10.4",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.24.7",
- "@babel/plugin-transform-async-generator-functions": "^7.25.4",
- "@babel/plugin-transform-async-to-generator": "^7.24.7",
- "@babel/plugin-transform-block-scoped-functions": "^7.24.7",
- "@babel/plugin-transform-block-scoping": "^7.25.0",
- "@babel/plugin-transform-class-properties": "^7.25.4",
- "@babel/plugin-transform-class-static-block": "^7.24.7",
- "@babel/plugin-transform-classes": "^7.25.4",
- "@babel/plugin-transform-computed-properties": "^7.24.7",
- "@babel/plugin-transform-destructuring": "^7.24.8",
- "@babel/plugin-transform-dotall-regex": "^7.24.7",
- "@babel/plugin-transform-duplicate-keys": "^7.24.7",
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0",
- "@babel/plugin-transform-dynamic-import": "^7.24.7",
- "@babel/plugin-transform-exponentiation-operator": "^7.24.7",
- "@babel/plugin-transform-export-namespace-from": "^7.24.7",
- "@babel/plugin-transform-for-of": "^7.24.7",
- "@babel/plugin-transform-function-name": "^7.25.1",
- "@babel/plugin-transform-json-strings": "^7.24.7",
- "@babel/plugin-transform-literals": "^7.25.2",
- "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
- "@babel/plugin-transform-member-expression-literals": "^7.24.7",
- "@babel/plugin-transform-modules-amd": "^7.24.7",
- "@babel/plugin-transform-modules-commonjs": "^7.24.8",
- "@babel/plugin-transform-modules-systemjs": "^7.25.0",
- "@babel/plugin-transform-modules-umd": "^7.24.7",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
- "@babel/plugin-transform-new-target": "^7.24.7",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
- "@babel/plugin-transform-numeric-separator": "^7.24.7",
- "@babel/plugin-transform-object-rest-spread": "^7.24.7",
- "@babel/plugin-transform-object-super": "^7.24.7",
- "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.8",
- "@babel/plugin-transform-parameters": "^7.24.7",
- "@babel/plugin-transform-private-methods": "^7.25.4",
- "@babel/plugin-transform-private-property-in-object": "^7.24.7",
- "@babel/plugin-transform-property-literals": "^7.24.7",
- "@babel/plugin-transform-regenerator": "^7.24.7",
- "@babel/plugin-transform-reserved-words": "^7.24.7",
- "@babel/plugin-transform-shorthand-properties": "^7.24.7",
- "@babel/plugin-transform-spread": "^7.24.7",
- "@babel/plugin-transform-sticky-regex": "^7.24.7",
- "@babel/plugin-transform-template-literals": "^7.24.7",
- "@babel/plugin-transform-typeof-symbol": "^7.24.8",
- "@babel/plugin-transform-unicode-escapes": "^7.24.7",
- "@babel/plugin-transform-unicode-property-regex": "^7.24.7",
- "@babel/plugin-transform-unicode-regex": "^7.24.7",
- "@babel/plugin-transform-unicode-sets-regex": "^7.25.4",
- "@babel/preset-modules": "0.1.6-no-external-plugins",
- "babel-plugin-polyfill-corejs2": "^0.4.10",
- "babel-plugin-polyfill-corejs3": "^0.10.6",
- "babel-plugin-polyfill-regenerator": "^0.6.1",
- "core-js-compat": "^3.37.1",
- "semver": "^6.3.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@babel/preset-modules": {
- "version": "0.1.6-no-external-plugins",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
- "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
- }
- },
- "@babel/regjsgen": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
- "dev": true
- },
- "@babel/runtime": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
- "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
- "requires": {
- "regenerator-runtime": "^0.14.0"
- }
- },
- "@babel/template": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
- "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.24.7",
- "@babel/parser": "^7.25.0",
- "@babel/types": "^7.25.0"
- }
- },
- "@babel/traverse": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz",
- "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.6",
- "@babel/parser": "^7.25.6",
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.6",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
- }
- },
- "@babel/types": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
- "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
- "dev": true,
- "requires": {
- "@babel/helper-string-parser": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@capacitor/camera": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@capacitor/camera/-/camera-4.1.5.tgz",
- "integrity": "sha512-E00IRsJiIr1kP3EkJa0OWp//TDFXOx3ifDfmLOmIkPxKt1FfuNheE0ipWBo5b44pKsx9pO64Rm9MkfUhgH5Rfg==",
- "requires": {}
- },
- "@capacitor/cli": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-4.7.1.tgz",
- "integrity": "sha512-cUEMci4KBb8gwIDXaO9F2Woz1wnugB/vVq2sRVy8+fzOfhmHlxweuH+h9RktDkpceVi+COfxYw/VPjg1wjC1tA==",
- "dev": true,
- "requires": {
- "@ionic/cli-framework-output": "^2.2.5",
- "@ionic/utils-fs": "^3.1.6",
- "@ionic/utils-subprocess": "^2.1.11",
- "@ionic/utils-terminal": "^2.3.3",
- "commander": "^9.3.0",
- "debug": "^4.3.4",
- "env-paths": "^2.2.0",
- "kleur": "^4.1.4",
- "native-run": "^1.6.0",
- "open": "^8.4.0",
- "plist": "^3.0.5",
- "prompts": "^2.4.2",
- "rimraf": "^3.0.2",
- "semver": "^7.3.7",
- "tar": "^6.1.11",
- "tslib": "^2.4.0",
- "xml2js": "^0.4.23"
- },
- "dependencies": {
- "commander": {
- "version": "9.5.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
- "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
- "dev": true
- }
- }
- },
- "@capacitor/core": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-4.7.1.tgz",
- "integrity": "sha512-NZcsyPNt1avNELnKuD5OsL/O/ejQxlw9UkLUEuiptPPAEwS8WJ1gGabaEBbCb2wNA/nPfrGH+ZC2LGhlpMlLeg==",
- "requires": {
- "tslib": "^2.1.0"
- }
- },
- "@capacitor/preferences": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@capacitor/preferences/-/preferences-4.0.2.tgz",
- "integrity": "sha512-HgcRkMdVHSIV3TeQLZFmCaCeMWQ25wLyZZ7dA2f8Rw81Q1Nroxsi7HxTEGNqrWKSN9PNKBJD8vChr6eB2GNtZg==",
- "requires": {}
- },
- "@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
- "dev": true,
- "optional": true
- },
- "@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
- "dev": true,
- "optional": true
- },
- "@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
- "dev": true,
- "optional": true
- },
- "@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
- "dev": true,
- "optional": true
- },
- "@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
- "dev": true,
- "optional": true
- },
- "@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
- "dev": true,
- "optional": true
- },
- "@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
- "dev": true,
- "optional": true
- },
- "@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
- "dev": true,
- "optional": true
- },
- "@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
- "dev": true,
- "optional": true
- },
- "@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
- "dev": true,
- "optional": true
- },
- "@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
- "dev": true,
- "optional": true
- },
- "@ionic/cli-framework-output": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/@ionic/cli-framework-output/-/cli-framework-output-2.2.5.tgz",
- "integrity": "sha512-YeDLTnTaE6V4IDUxT8GDIep0GuRIFaR7YZDLANMuuWJZDmnTku6DP+MmQoltBeLmVvz1BAAZgk41xzxdq6H2FQ==",
- "dev": true,
- "requires": {
- "@ionic/utils-terminal": "2.3.3",
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/core": {
- "version": "8.2.6",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.2.6.tgz",
- "integrity": "sha512-9vLxIR+QFzeim/C6LV62vOm5e6EIoVZsLb5RjlnQICDbDf14iqcBjA+MZpW628HbADX7p9/ulaq8WFgx5085ZA==",
- "requires": {
- "@stencil/core": "^4.19.2",
- "ionicons": "^7.2.2",
- "tslib": "^2.1.0"
- }
- },
- "@ionic/pwa-elements": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@ionic/pwa-elements/-/pwa-elements-3.3.0.tgz",
- "integrity": "sha512-vbykpxd2nGRlA67AnqDwsiVf8PUmInLyi6lQdnPDjeiML1WZa0CPe6r632nGDV9PTi+sWNde9Xexg9SD6Pwyqw=="
- },
- "@ionic/react": {
- "version": "8.2.6",
- "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.2.6.tgz",
- "integrity": "sha512-qcdd04P3vZzeyQvjF/7RIK9JJPxQgpBm3VxUh6a/NUPuLsq4d66UcD2pr4vGaejD3Vf15wyZeHDAVQGjqq+X2A==",
- "requires": {
- "@ionic/core": "8.2.6",
- "ionicons": "^7.0.0",
- "tslib": "*"
- }
- },
- "@ionic/react-router": {
- "version": "8.2.6",
- "resolved": "https://registry.npmjs.org/@ionic/react-router/-/react-router-8.2.6.tgz",
- "integrity": "sha512-Fs8IafBxD8tMmsN9PvAEgW0GHJGl1gtVeAW1NkW22wOeS+mLoZxd6iV0lqr5tnV1uhQZBQeCoaH4MtM497ltdw==",
- "requires": {
- "@ionic/react": "8.2.6",
- "tslib": "*"
- }
- },
- "@ionic/utils-array": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.5.tgz",
- "integrity": "sha512-HD72a71IQVBmQckDwmA8RxNVMTbxnaLbgFOl+dO5tbvW9CkkSFCv41h6fUuNsSEVgngfkn0i98HDuZC8mk+lTA==",
- "dev": true,
- "requires": {
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/utils-fs": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.6.tgz",
- "integrity": "sha512-eikrNkK89CfGPmexjTfSWl4EYqsPSBh0Ka7by4F0PLc1hJZYtJxUZV3X4r5ecA8ikjicUmcbU7zJmAjmqutG/w==",
- "dev": true,
- "requires": {
- "@types/fs-extra": "^8.0.0",
- "debug": "^4.0.0",
- "fs-extra": "^9.0.0",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/utils-object": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.5.tgz",
- "integrity": "sha512-XnYNSwfewUqxq+yjER1hxTKggftpNjFLJH0s37jcrNDwbzmbpFTQTVAp4ikNK4rd9DOebX/jbeZb8jfD86IYxw==",
- "dev": true,
- "requires": {
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/utils-process": {
- "version": "2.1.10",
- "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.10.tgz",
- "integrity": "sha512-mZ7JEowcuGQK+SKsJXi0liYTcXd2bNMR3nE0CyTROpMECUpJeAvvaBaPGZf5ERQUPeWBVuwqAqjUmIdxhz5bxw==",
- "dev": true,
- "requires": {
- "@ionic/utils-object": "2.1.5",
- "@ionic/utils-terminal": "2.3.3",
- "debug": "^4.0.0",
- "signal-exit": "^3.0.3",
- "tree-kill": "^1.2.2",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/utils-stream": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.5.tgz",
- "integrity": "sha512-hkm46uHvEC05X/8PHgdJi4l4zv9VQDELZTM+Kz69odtO9zZYfnt8DkfXHJqJ+PxmtiE5mk/ehJWLnn/XAczTUw==",
- "dev": true,
- "requires": {
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/utils-subprocess": {
- "version": "2.1.11",
- "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.11.tgz",
- "integrity": "sha512-6zCDixNmZCbMCy5np8klSxOZF85kuDyzZSTTQKQP90ZtYNCcPYmuFSzaqDwApJT4r5L3MY3JrqK1gLkc6xiUPw==",
- "dev": true,
- "requires": {
- "@ionic/utils-array": "2.1.5",
- "@ionic/utils-fs": "3.1.6",
- "@ionic/utils-process": "2.1.10",
- "@ionic/utils-stream": "3.1.5",
- "@ionic/utils-terminal": "2.3.3",
- "cross-spawn": "^7.0.3",
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/utils-terminal": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.3.tgz",
- "integrity": "sha512-RnuSfNZ5fLEyX3R5mtcMY97cGD1A0NVBbarsSQ6yMMfRJ5YHU7hHVyUfvZeClbqkBC/pAqI/rYJuXKCT9YeMCQ==",
- "dev": true,
- "requires": {
- "@types/slice-ansi": "^4.0.0",
- "debug": "^4.0.0",
- "signal-exit": "^3.0.3",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "tslib": "^2.0.1",
- "untildify": "^4.0.0",
- "wrap-ansi": "^7.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- }
- }
- }
- },
- "@jest/types": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
- "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^13.0.0"
- }
- },
- "@jridgewell/gen-mapping": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true
- },
- "@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true
- },
- "@jridgewell/source-map": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz",
- "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
- "dev": true,
- "peer": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "@rollup/rollup-android-arm-eabi": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz",
- "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-android-arm64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz",
- "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-darwin-arm64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz",
- "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-darwin-x64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz",
- "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz",
- "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz",
- "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-arm64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz",
- "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-arm64-musl": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz",
- "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz",
- "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz",
- "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-s390x-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz",
- "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-x64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz",
- "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-x64-musl": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz",
- "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-win32-arm64-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz",
- "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-win32-ia32-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz",
- "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-win32-x64-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz",
- "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==",
- "dev": true,
- "optional": true
- },
- "@sheerun/mutationobserver-shim": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz",
- "integrity": "sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q==",
- "dev": true
- },
- "@stencil/core": {
- "version": "4.21.0",
- "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.21.0.tgz",
- "integrity": "sha512-v50lnVbzS8mpMSnEVxR+G75XpvxHKtkJaQrNPE8+/fF6Ppr5z4bcdcBhcP8LPfEW+4BZcic6VifMXRwTopc+kw=="
- },
- "@supabase/auth-helpers-nextjs": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.9.0.tgz",
- "integrity": "sha512-V+UKFngSCkzAucX3Zi5D4TRiJZUUx0RDme7W217nIkwhCTvJY7Ih2L1cgnAMihQost2YYgTzJ7DrUzz4mm8i8A==",
- "requires": {
- "@supabase/auth-helpers-shared": "0.6.3",
- "set-cookie-parser": "^2.6.0"
- }
- },
- "@supabase/auth-helpers-react": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-react/-/auth-helpers-react-0.3.1.tgz",
- "integrity": "sha512-g3SFv08Dz9FapNif/ZY1b7qKGlMJDyTLSayHBz3kb3FuYxg7aLWgQtydDhm5AGbc0XtvpIBuhGTIOVevwpdosA==",
- "requires": {}
- },
- "@supabase/auth-helpers-shared": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.6.3.tgz",
- "integrity": "sha512-xYQRLFeFkL4ZfwC7p9VKcarshj3FB2QJMgJPydvOY7J5czJe6xSG5/wM1z63RmAzGbCkKg+dzpq61oeSyWiGBQ==",
- "requires": {
- "jose": "^4.14.4"
- }
- },
- "@supabase/auth-js": {
- "version": "2.64.2",
- "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.64.2.tgz",
- "integrity": "sha512-s+lkHEdGiczDrzXJ1YWt2y3bxRi+qIUnXcgkpLSrId7yjBeaXBFygNjTaoZLG02KNcYwbuZ9qkEIqmj2hF7svw==",
- "requires": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "@supabase/functions-js": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.1.tgz",
- "integrity": "sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA==",
- "requires": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "@supabase/node-fetch": {
- "version": "2.6.15",
- "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz",
- "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==",
- "requires": {
- "whatwg-url": "^5.0.0"
- }
- },
- "@supabase/postgrest-js": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.15.6.tgz",
- "integrity": "sha512-zg3URVhoHOijdqMyn3LIFHh+Pqj5BmRqWAaoSExzIHc4m0kGBMPMjDcleamGhbelAAiKbjpQ04mBgooDliGl5A==",
- "requires": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "@supabase/realtime-js": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.10.1.tgz",
- "integrity": "sha512-SrrXxE8xgwWvjREQMkC9LIHIoCQde+OqkFPKP2s/O0ROjhmJ/iXeLvoWhAzXh9gwire4oaK14/ncL/iRiaVWQw==",
- "requires": {
- "@supabase/node-fetch": "^2.6.14",
- "@types/phoenix": "^1.5.4",
- "@types/ws": "^8.5.10",
- "ws": "^8.14.2"
- }
- },
- "@supabase/ssr": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@supabase/ssr/-/ssr-0.5.1.tgz",
- "integrity": "sha512-+G94H/GZG0nErZ3FQV9yJmsC5Rj7dmcfCAwOt37hxeR1La+QTl8cE9whzYwPUrTJjMLGNXoO+1BMvVxwBAbz4g==",
- "requires": {
- "cookie": "^0.6.0"
- }
- },
- "@supabase/storage-js": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.6.0.tgz",
- "integrity": "sha512-REAxr7myf+3utMkI2oOmZ6sdplMZZ71/2NEIEMBZHL9Fkmm3/JnaOZVSRqvG4LStYj2v5WhCruCzuMn6oD/Drw==",
- "requires": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "@supabase/supabase-js": {
- "version": "2.44.0",
- "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.44.0.tgz",
- "integrity": "sha512-SzMvAgSVuPzx7itiYiascXAVBqTcZ9zX3ONIdhZEWKUEgWaJftfPyVvz+PMYznK77miSMuy1f4geAvPElyiS2g==",
- "requires": {
- "@supabase/auth-js": "2.64.2",
- "@supabase/functions-js": "2.4.1",
- "@supabase/node-fetch": "2.6.15",
- "@supabase/postgrest-js": "1.15.6",
- "@supabase/realtime-js": "2.10.1",
- "@supabase/storage-js": "2.6.0"
- }
- },
- "@testing-library/dom": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-6.10.0.tgz",
- "integrity": "sha512-8Tq4aRDeukB+6WE0rVXO1TlS38uu05CpbHgEa9SLR3JWuBajOVEPk9HgOfOFOqWqoo5nEIthXBgLobbofEhuUg==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.6.2",
- "@sheerun/mutationobserver-shim": "^0.3.2",
- "@types/testing-library__dom": "^6.0.0",
- "aria-query": "3.0.0",
- "pretty-format": "^24.9.0",
- "wait-for-expect": "^3.0.0"
- }
- },
- "@testing-library/react": {
- "version": "9.3.1",
- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-9.3.1.tgz",
- "integrity": "sha512-BXlYrbxTkifNVb7rIC8EHqYXgG/rBeULqG3V0wbEAuSaZ7n5ERX9Bcp0i+9EecrNpLNPwR0cIxdKNp6qVTZS9A==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.6.0",
- "@testing-library/dom": "^6.3.0",
- "@types/testing-library__react": "^9.1.0"
- }
- },
- "@types/babel__core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "@types/babel__generator": {
- "version": "7.6.8",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
- "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__template": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__traverse": {
- "version": "7.20.6",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
- "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.20.7"
- }
- },
- "@types/debug": {
- "version": "4.1.12",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
- "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
- "requires": {
- "@types/ms": "*"
- }
- },
- "@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
- },
- "@types/estree-jsx": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
- "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
- "requires": {
- "@types/estree": "*"
- }
- },
- "@types/fs-extra": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz",
- "integrity": "sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/googlemaps": {
- "version": "3.38.0",
- "resolved": "https://registry.npmjs.org/@types/googlemaps/-/googlemaps-3.38.0.tgz",
- "integrity": "sha512-Rp7FnrwyYGnjoxM+/q/4DRqUzvV9JKK1SBRXx8APxU6NNMtYMsWmOMsQOV2U6z8aMFzlUbRv3EDixLcDep8t9w==",
- "dev": true
- },
- "@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "requires": {
- "@types/unist": "*"
- }
- },
- "@types/history": {
- "version": "4.7.11",
- "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz",
- "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==",
- "dev": true
- },
- "@types/istanbul-lib-coverage": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
- "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==",
- "dev": true
- },
- "@types/istanbul-lib-report": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz",
- "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "@types/istanbul-reports": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz",
- "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "*",
- "@types/istanbul-lib-report": "*"
- }
- },
- "@types/jest": {
- "version": "24.0.18",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.18.tgz",
- "integrity": "sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==",
- "dev": true,
- "requires": {
- "@types/jest-diff": "*"
- }
- },
- "@types/jest-diff": {
- "version": "20.0.1",
- "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz",
- "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==",
- "dev": true
- },
- "@types/js-cookie": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz",
- "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA=="
- },
- "@types/mdast": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
- "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
- "requires": {
- "@types/unist": "*"
- }
- },
- "@types/ms": {
- "version": "0.7.34",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
- "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
- },
- "@types/node": {
- "version": "20.11.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz",
- "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==",
- "requires": {
- "undici-types": "~5.26.4"
- }
- },
- "@types/phoenix": {
- "version": "1.6.5",
- "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.5.tgz",
- "integrity": "sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w=="
- },
- "@types/prop-types": {
- "version": "15.7.3",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
- "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
- },
- "@types/react": {
- "version": "18.2.48",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz",
- "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==",
- "requires": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "@types/react-dom": {
- "version": "18.2.18",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz",
- "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==",
- "dev": true,
- "requires": {
- "@types/react": "*"
- }
- },
- "@types/react-router": {
- "version": "5.1.20",
- "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz",
- "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==",
- "dev": true,
- "requires": {
- "@types/history": "^4.7.11",
- "@types/react": "*"
- }
- },
- "@types/react-router-dom": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz",
- "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==",
- "dev": true,
- "requires": {
- "@types/history": "^4.7.11",
- "@types/react": "*",
- "@types/react-router": "*"
- }
- },
- "@types/scheduler": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
- },
- "@types/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-+OpjSaq85gvlZAYINyzKpLeiFkSC4EsC6IIiT6v6TLSU5k5U83fHGj9Lel8oKEXM0HqgrMVCjXPDPVICtxF7EQ==",
- "dev": true
- },
- "@types/testing-library__dom": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.10.0.tgz",
- "integrity": "sha512-mL/GMlyQxiZplbUuFNwA0vAI3k3uJNSf6slr5AVve9TXmfLfyefNT0uHHnxwdYuPMxYD5gI/+dgAvc/5opW9JQ==",
- "dev": true,
- "requires": {
- "pretty-format": "^24.3.0"
- }
- },
- "@types/testing-library__react": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.2.tgz",
- "integrity": "sha512-CYaMqrswQ+cJACy268jsLAw355DZtPZGt3Jwmmotlcu8O/tkoXBI6AeZ84oZBJsIsesozPKzWzmv/0TIU+1E9Q==",
- "dev": true,
- "requires": {
- "@types/react-dom": "*",
- "@types/testing-library__dom": "*"
- }
- },
- "@types/unist": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
- "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="
- },
- "@types/ws": {
- "version": "8.5.12",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz",
- "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/yargs": {
- "version": "13.0.3",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz",
- "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==",
- "dev": true,
- "requires": {
- "@types/yargs-parser": "*"
- }
- },
- "@types/yargs-parser": {
- "version": "13.1.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz",
- "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==",
- "dev": true
- },
- "@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
- },
- "@vitejs/plugin-legacy": {
- "version": "5.4.2",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-5.4.2.tgz",
- "integrity": "sha512-hlyyQL+wEIyOWdwsUKX+0g3kBU4AbHmVzHarLvVKiGGGqLIYjttMvvjk6zGY8RD9dab6QuFNhDoxg0YFhQ26xA==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.25.2",
- "@babel/preset-env": "^7.25.3",
- "browserslist": "^4.23.3",
- "browserslist-to-esbuild": "^2.1.1",
- "core-js": "^3.38.0",
- "magic-string": "^0.30.11",
- "regenerator-runtime": "^0.14.1",
- "systemjs": "^6.15.1"
- }
- },
- "@vitejs/plugin-react": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz",
- "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.24.5",
- "@babel/plugin-transform-react-jsx-self": "^7.24.5",
- "@babel/plugin-transform-react-jsx-source": "^7.24.1",
- "@types/babel__core": "^7.20.5",
- "react-refresh": "^0.14.2"
- }
- },
- "@xobotyi/scrollbar-width": {
- "version": "1.9.5",
- "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz",
- "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ=="
- },
- "acorn": {
- "version": "8.8.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
- "dev": true,
- "peer": true
- },
- "aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dev": true,
- "requires": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- }
- },
- "ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.21.3"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "aria-query": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
- "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=",
- "dev": true,
- "requires": {
- "ast-types-flow": "0.0.7",
- "commander": "^2.11.0"
- }
- },
- "ast-types-flow": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
- "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
- "dev": true
- },
- "astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true
- },
- "at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true
- },
- "babel-plugin-polyfill-corejs2": {
- "version": "0.4.11",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
- "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.6.2",
- "semver": "^6.3.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "babel-plugin-polyfill-corejs3": {
- "version": "0.10.6",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
- "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
- "dev": true,
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.6.2",
- "core-js-compat": "^3.38.0"
- }
- },
- "babel-plugin-polyfill-regenerator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
- "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
- "dev": true,
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.6.2"
- }
- },
- "bail": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
- "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true
- },
- "big-integer": {
- "version": "1.6.51",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
- "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
- "dev": true
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
- },
- "bplist-parser": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz",
- "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==",
- "dev": true,
- "requires": {
- "big-integer": "1.6.x"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browserslist": {
- "version": "4.23.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
- "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001646",
- "electron-to-chromium": "^1.5.4",
- "node-releases": "^2.0.18",
- "update-browserslist-db": "^1.1.0"
- }
- },
- "browserslist-to-esbuild": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/browserslist-to-esbuild/-/browserslist-to-esbuild-2.1.1.tgz",
- "integrity": "sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==",
- "dev": true,
- "requires": {
- "meow": "^13.0.0"
- }
- },
- "buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true,
- "peer": true
- },
- "caniuse-lite": {
- "version": "1.0.30001655",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz",
- "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==",
- "dev": true
- },
- "ccount": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
- "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "character-entities": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
- "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="
- },
- "character-entities-html4": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
- "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="
- },
- "character-entities-legacy": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
- "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="
- },
- "character-reference-invalid": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
- "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="
- },
- "chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "dev": true
- },
- "clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "dev": true
- },
- "cli-truncate": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
- "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==",
- "dev": true,
- "requires": {
- "slice-ansi": "^5.0.0",
- "string-width": "^5.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true
- },
- "string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dev": true,
- "requires": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
- }
- },
- "strip-ansi": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
- "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
- "dev": true,
- "requires": {
- "ansi-regex": "^6.0.1"
- }
- }
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "colorette": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
- "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
- "dev": true
- },
- "comma-separated-tokens": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
- "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="
- },
- "commander": {
- "version": "2.20.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.1.tgz",
- "integrity": "sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
- },
- "cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw=="
- },
- "copy-to-clipboard": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
- "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
- "requires": {
- "toggle-selection": "^1.0.6"
- }
- },
- "core-js": {
- "version": "3.38.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz",
- "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==",
- "dev": true
- },
- "core-js-compat": {
- "version": "3.38.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz",
- "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==",
- "dev": true,
- "requires": {
- "browserslist": "^4.23.3"
- }
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "dependencies": {
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "css-in-js-utils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz",
- "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==",
- "requires": {
- "hyphenate-style-name": "^1.0.3"
- }
- },
- "css-tree": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
- "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
- "requires": {
- "mdn-data": "2.0.14",
- "source-map": "^0.6.1"
- }
- },
- "csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
- },
- "date-fns": {
- "version": "2.25.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz",
- "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w=="
- },
- "dayjs": {
- "version": "1.11.13",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
- "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "decode-named-character-reference": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
- "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
- "requires": {
- "character-entities": "^2.0.0"
- }
- },
- "define-lazy-prop": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
- "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
- "dev": true
- },
- "dequal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="
- },
- "devlop": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
- "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
- "requires": {
- "dequal": "^2.0.0"
- }
- },
- "eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true
- },
- "electron-to-chromium": {
- "version": "1.5.13",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz",
- "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==",
- "dev": true
- },
- "elementtree": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz",
- "integrity": "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg==",
- "dev": true,
- "requires": {
- "sax": "1.1.4"
- }
- },
- "emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
- },
- "env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true
- },
- "error-stack-parser": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
- "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
- "requires": {
- "stackframe": "^1.3.4"
- }
- },
- "esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
- "dev": true,
- "requires": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
- }
- },
- "escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "estree-util-is-identifier-name": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
- "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "execa": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz",
- "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.1",
- "human-signals": "^4.3.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^3.0.7",
- "strip-final-newline": "^3.0.0"
- },
- "dependencies": {
- "mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true
- },
- "onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
- "requires": {
- "mimic-fn": "^4.0.0"
- }
- }
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "fast-shallow-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz",
- "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw=="
- },
- "fastest-stable-stringify": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz",
- "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q=="
- },
- "fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dev": true,
- "requires": {
- "pend": "~1.2.0"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dev": true,
- "requires": {
- "minipass": "^3.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "optional": true
- },
- "function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true
- },
- "get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- },
- "graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.2"
- }
- },
- "hast-util-to-jsx-runtime": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz",
- "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==",
- "requires": {
- "@types/estree": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/unist": "^3.0.0",
- "comma-separated-tokens": "^2.0.0",
- "devlop": "^1.0.0",
- "estree-util-is-identifier-name": "^3.0.0",
- "hast-util-whitespace": "^3.0.0",
- "mdast-util-mdx-expression": "^2.0.0",
- "mdast-util-mdx-jsx": "^3.0.0",
- "mdast-util-mdxjs-esm": "^2.0.0",
- "property-information": "^6.0.0",
- "space-separated-tokens": "^2.0.0",
- "style-to-object": "^1.0.0",
- "unist-util-position": "^5.0.0",
- "vfile-message": "^4.0.0"
- }
- },
- "hast-util-whitespace": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
- "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
- "requires": {
- "@types/hast": "^3.0.0"
- }
- },
- "history": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
- "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
- "requires": {
- "@babel/runtime": "^7.1.2",
- "loose-envify": "^1.2.0",
- "resolve-pathname": "^3.0.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0",
- "value-equal": "^1.0.1"
- }
- },
- "hoist-non-react-statics": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
- "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
- "requires": {
- "react-is": "^16.7.0"
- }
- },
- "html-parse-stringify": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
- "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==",
- "requires": {
- "void-elements": "3.1.0"
- }
- },
- "html-url-attributes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.0.tgz",
- "integrity": "sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow=="
- },
- "human-signals": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
- "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
- "dev": true
- },
- "hyphenate-style-name": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz",
- "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw=="
- },
- "i18next": {
- "version": "22.5.1",
- "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.1.tgz",
- "integrity": "sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==",
- "requires": {
- "@babel/runtime": "^7.20.6"
- }
- },
- "i18next-browser-languagedetector": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.1.tgz",
- "integrity": "sha512-h/pM34bcH6tbz8WgGXcmWauNpQupCGr25XPp9cZwZInR9XHSjIFDYp1SIok7zSPsTOMxdvuLyu86V+g2Kycnfw==",
- "requires": {
- "@babel/runtime": "^7.23.2"
- }
- },
- "immer": {
- "version": "9.0.21",
- "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
- "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA=="
- },
- "immutable": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
- "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg=="
- },
- "indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "ini": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz",
- "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==",
- "dev": true
- },
- "inline-style-parser": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz",
- "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g=="
- },
- "inline-style-prefixer": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz",
- "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==",
- "requires": {
- "css-in-js-utils": "^3.1.0"
- }
- },
- "ionicons": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-7.2.2.tgz",
- "integrity": "sha512-I3iYIfc9Q9FRifWyFSwTAvbEABWlWY32i0sAVDDPGYnaIZVugkLCZFbEcrphW6ixVPg8tt1oLwalo/JJwbEqnA==",
- "requires": {
- "@stencil/core": "^4.0.3"
- }
- },
- "is-alphabetical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
- "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="
- },
- "is-alphanumerical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
- "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
- "requires": {
- "is-alphabetical": "^2.0.0",
- "is-decimal": "^2.0.0"
- }
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-core-module": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
- "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
- "dev": true,
- "requires": {
- "hasown": "^2.0.2"
- }
- },
- "is-decimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
- "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="
- },
- "is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-hexadecimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
- "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
- },
- "is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="
- },
- "is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true
- },
- "is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "requires": {
- "is-docker": "^2.0.0"
- }
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "jose": {
- "version": "4.15.9",
- "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz",
- "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA=="
- },
- "js-cookie": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
- "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ=="
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
- "json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "kleur": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
- "dev": true
- },
- "lilconfig": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
- "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
- "dev": true
- },
- "lint-staged": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.0.tgz",
- "integrity": "sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==",
- "dev": true,
- "requires": {
- "chalk": "5.2.0",
- "cli-truncate": "^3.1.0",
- "commander": "^10.0.0",
- "debug": "^4.3.4",
- "execa": "^7.0.0",
- "lilconfig": "2.1.0",
- "listr2": "^5.0.7",
- "micromatch": "^4.0.5",
- "normalize-path": "^3.0.0",
- "object-inspect": "^1.12.3",
- "pidtree": "^0.6.0",
- "string-argv": "^0.3.1",
- "yaml": "^2.2.1"
- },
- "dependencies": {
- "chalk": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
- "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
- "dev": true
- },
- "commander": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz",
- "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==",
- "dev": true
- }
- }
- },
- "listr2": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz",
- "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==",
- "dev": true,
- "requires": {
- "cli-truncate": "^2.1.0",
- "colorette": "^2.0.19",
- "log-update": "^4.0.0",
- "p-map": "^4.0.0",
- "rfdc": "^1.3.0",
- "rxjs": "^7.8.0",
- "through": "^2.3.8",
- "wrap-ansi": "^7.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "cli-truncate": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
- "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
- "dev": true,
- "requires": {
- "slice-ansi": "^3.0.0",
- "string-width": "^4.2.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "rxjs": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
- "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
- "dev": true,
- "requires": {
- "tslib": "^2.1.0"
- }
- },
- "slice-ansi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
- "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- }
- }
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
- "dev": true
- },
- "log-update": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
- "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^4.3.0",
- "cli-cursor": "^3.1.0",
- "slice-ansi": "^4.0.0",
- "wrap-ansi": "^6.2.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "requires": {
- "restore-cursor": "^3.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "requires": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- }
- },
- "slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- }
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- }
- }
- },
- "longest-streak": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
- "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="
- },
- "loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "requires": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- }
- },
- "lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "requires": {
- "yallist": "^3.0.2"
- }
- },
- "magic-string": {
- "version": "0.30.11",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
- "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
- "dev": true,
- "requires": {
- "@jridgewell/sourcemap-codec": "^1.5.0"
- }
- },
- "mdast-util-from-markdown": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz",
- "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==",
- "requires": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark": "^4.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unist-util-stringify-position": "^4.0.0"
- }
- },
- "mdast-util-mdx-expression": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz",
- "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- }
- },
- "mdast-util-mdx-jsx": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz",
- "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "ccount": "^2.0.0",
- "devlop": "^1.1.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0",
- "parse-entities": "^4.0.0",
- "stringify-entities": "^4.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "vfile-message": "^4.0.0"
- }
- },
- "mdast-util-mdxjs-esm": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
- "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- }
- },
- "mdast-util-phrasing": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
- "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
- "requires": {
- "@types/mdast": "^4.0.0",
- "unist-util-is": "^6.0.0"
- }
- },
- "mdast-util-to-hast": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
- "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
- "requires": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@ungap/structured-clone": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "trim-lines": "^3.0.0",
- "unist-util-position": "^5.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
- }
- },
- "mdast-util-to-markdown": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz",
- "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==",
- "requires": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "longest-streak": "^3.0.0",
- "mdast-util-phrasing": "^4.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "unist-util-visit": "^5.0.0",
- "zwitch": "^2.0.0"
- }
- },
- "mdast-util-to-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
- "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
- "requires": {
- "@types/mdast": "^4.0.0"
- }
- },
- "mdn-data": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
- "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
- },
- "meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true
- },
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "micromark": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz",
- "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==",
- "requires": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-combine-extensions": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-core-commonmark": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz",
- "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==",
- "requires": {
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-factory-destination": "^2.0.0",
- "micromark-factory-label": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-factory-title": "^2.0.0",
- "micromark-factory-whitespace": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-html-tag-name": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-factory-destination": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz",
- "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==",
- "requires": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-factory-label": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz",
- "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==",
- "requires": {
- "devlop": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-factory-space": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
- "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
- "requires": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-factory-title": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz",
- "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==",
- "requires": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-factory-whitespace": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz",
- "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==",
- "requires": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-util-character": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
- "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
- "requires": {
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-util-chunked": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz",
- "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==",
- "requires": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "micromark-util-classify-character": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz",
- "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==",
- "requires": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-util-combine-extensions": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz",
- "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==",
- "requires": {
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-util-decode-numeric-character-reference": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz",
- "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==",
- "requires": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "micromark-util-decode-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz",
- "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==",
- "requires": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "micromark-util-encode": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
- "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA=="
- },
- "micromark-util-html-tag-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz",
- "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw=="
- },
- "micromark-util-normalize-identifier": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz",
- "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==",
- "requires": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "micromark-util-resolve-all": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz",
- "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==",
- "requires": {
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-util-sanitize-uri": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz",
- "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==",
- "requires": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "micromark-util-subtokenize": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz",
- "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==",
- "requires": {
- "devlop": "^1.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw=="
- },
- "micromark-util-types": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
- "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w=="
- },
- "micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minipass": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz",
- "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==",
- "dev": true
- },
- "minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "dev": true,
- "requires": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "nano-css": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.6.2.tgz",
- "integrity": "sha512-+6bHaC8dSDGALM1HJjOHVXpuastdu2xFoZlC77Jh4cg+33Zcgm+Gxd+1xsnpZK14eyHObSp82+ll5y3SX75liw==",
- "requires": {
- "@jridgewell/sourcemap-codec": "^1.4.15",
- "css-tree": "^1.1.2",
- "csstype": "^3.1.2",
- "fastest-stable-stringify": "^2.0.2",
- "inline-style-prefixer": "^7.0.1",
- "rtl-css-js": "^1.16.1",
- "stacktrace-js": "^2.0.2",
- "stylis": "^4.3.0"
- }
- },
- "nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
- "dev": true
- },
- "native-run": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/native-run/-/native-run-1.7.2.tgz",
- "integrity": "sha512-2aahC8iXIO8BcvEukVMrYwL5sXurkuIGyQgfSGBto832W6ejV+cB5Ww+2/CRxmyozhbxARJ2OMpEGPV8sTqsrQ==",
- "dev": true,
- "requires": {
- "@ionic/utils-fs": "^3.1.6",
- "@ionic/utils-terminal": "^2.3.3",
- "bplist-parser": "^0.3.2",
- "debug": "^4.3.4",
- "elementtree": "^0.1.7",
- "ini": "^3.0.1",
- "plist": "^3.0.6",
- "split2": "^4.1.0",
- "through2": "^4.0.2",
- "tslib": "^2.4.0",
- "yauzl": "^2.10.0"
- }
- },
- "node-releases": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
- "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
- "dev": true
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
- },
- "npm-run-path": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
- "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
- "dev": true,
- "requires": {
- "path-key": "^4.0.0"
- },
- "dependencies": {
- "path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true
- }
- }
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
- "object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "open": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
- "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
- "dev": true,
- "requires": {
- "define-lazy-prop": "^2.0.0",
- "is-docker": "^2.1.1",
- "is-wsl": "^2.2.0"
- }
- },
- "p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
- "requires": {
- "aggregate-error": "^3.0.0"
- }
- },
- "parse-entities": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
- "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
- "requires": {
- "@types/unist": "^2.0.0",
- "character-entities": "^2.0.0",
- "character-entities-legacy": "^3.0.0",
- "character-reference-invalid": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "is-alphanumerical": "^2.0.0",
- "is-decimal": "^2.0.0",
- "is-hexadecimal": "^2.0.0"
- },
- "dependencies": {
- "@types/unist": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
- "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
- }
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "requires": {
- "isarray": "0.0.1"
- }
- },
- "pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
- },
- "picocolors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
- "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
- },
- "pidtree": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
- "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
- "dev": true
- },
- "plist": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz",
- "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==",
- "dev": true,
- "requires": {
- "base64-js": "^1.5.1",
- "xmlbuilder": "^15.1.1"
- }
- },
- "postcss": {
- "version": "8.4.44",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz",
- "integrity": "sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==",
- "dev": true,
- "requires": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.1",
- "source-map-js": "^1.2.0"
- }
- },
- "prettier": {
- "version": "2.8.6",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
- "integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ=="
- },
- "prettier-plugin-organize-imports": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.0.0.tgz",
- "integrity": "sha512-vnKSdgv9aOlqKeEFGhf9SCBsTyzDSyScy1k7E0R1Uo4L0cTcOV7c1XQaT7jfXIOc/p08WLBfN2QUQA9zDSZMxA==",
- "requires": {}
- },
- "pretty-format": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
- "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "ansi-regex": "^4.0.0",
- "ansi-styles": "^3.2.0",
- "react-is": "^16.8.4"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true
- }
- }
- },
- "prompts": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
- "dev": true,
- "requires": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
- "dependencies": {
- "kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true
- }
- }
- },
- "prop-types": {
- "version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "requires": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.13.1"
- },
- "dependencies": {
- "react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- }
- }
- },
- "property-information": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
- "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="
- },
- "pullstate": {
- "version": "1.25.0",
- "resolved": "https://registry.npmjs.org/pullstate/-/pullstate-1.25.0.tgz",
- "integrity": "sha512-6SJMhK5EbDhrbyocMQOZKY3QKC5RfLcdtYD1y7wioF5dseVsdi3vmeHG3TwW4SrhQQP/WKyU/Np2X6UOhq1F6g==",
- "requires": {
- "fast-deep-equal": "^3.1.3",
- "immer": "^9.0.16"
- }
- },
- "react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
- "requires": {
- "loose-envify": "^1.1.0"
- }
- },
- "react-dom": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
- "requires": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.0"
- }
- },
- "react-i18next": {
- "version": "12.3.1",
- "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.3.1.tgz",
- "integrity": "sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==",
- "requires": {
- "@babel/runtime": "^7.20.6",
- "html-parse-stringify": "^3.0.1"
- }
- },
- "react-is": {
- "version": "16.10.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.1.tgz",
- "integrity": "sha512-BXUMf9sIOPXXZWqr7+c5SeOKJykyVr2u0UDzEf4LNGc6taGkQe1A9DFD07umCIXz45RLr9oAAwZbAJ0Pkknfaw=="
- },
- "react-markdown": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz",
- "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==",
- "requires": {
- "@types/hast": "^3.0.0",
- "devlop": "^1.0.0",
- "hast-util-to-jsx-runtime": "^2.0.0",
- "html-url-attributes": "^3.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "remark-parse": "^11.0.0",
- "remark-rehype": "^11.0.0",
- "unified": "^11.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
- }
- },
- "react-refresh": {
- "version": "0.14.2",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
- "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
- "dev": true
- },
- "react-router": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
- "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==",
- "requires": {
- "@babel/runtime": "^7.12.13",
- "history": "^4.9.0",
- "hoist-non-react-statics": "^3.1.0",
- "loose-envify": "^1.3.1",
- "path-to-regexp": "^1.7.0",
- "prop-types": "^15.6.2",
- "react-is": "^16.6.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0"
- }
- },
- "react-router-dom": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz",
- "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==",
- "requires": {
- "@babel/runtime": "^7.12.13",
- "history": "^4.9.0",
- "loose-envify": "^1.3.1",
- "prop-types": "^15.6.2",
- "react-router": "5.3.4",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0"
- }
- },
- "react-universal-interface": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz",
- "integrity": "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==",
- "requires": {}
- },
- "react-use": {
- "version": "17.5.1",
- "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.5.1.tgz",
- "integrity": "sha512-LG/uPEVRflLWMwi3j/sZqR00nF6JGqTTDblkXK2nzXsIvij06hXl1V/MZIlwj1OKIQUtlh1l9jK8gLsRyCQxMg==",
- "requires": {
- "@types/js-cookie": "^2.2.6",
- "@xobotyi/scrollbar-width": "^1.9.5",
- "copy-to-clipboard": "^3.3.1",
- "fast-deep-equal": "^3.1.3",
- "fast-shallow-equal": "^1.0.0",
- "js-cookie": "^2.2.1",
- "nano-css": "^5.6.2",
- "react-universal-interface": "^0.6.2",
- "resize-observer-polyfill": "^1.5.1",
- "screenfull": "^5.1.0",
- "set-harmonic-interval": "^1.0.1",
- "throttle-debounce": "^3.0.1",
- "ts-easing": "^0.2.0",
- "tslib": "^2.1.0"
- }
- },
- "readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
- "dev": true
- },
- "regenerate-unicode-properties": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
- "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
- "dev": true,
- "requires": {
- "regenerate": "^1.4.2"
- }
- },
- "regenerator-runtime": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
- },
- "regenerator-transform": {
- "version": "0.15.2",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
- "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "regexpu-core": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
- "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
- "dev": true,
- "requires": {
- "@babel/regjsgen": "^0.8.0",
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- }
- },
- "regjsparser": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
- "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
- "dev": true,
- "requires": {
- "jsesc": "~0.5.0"
- },
- "dependencies": {
- "jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "dev": true
- }
- }
- },
- "remark-parse": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
- "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
- "requires": {
- "@types/mdast": "^4.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unified": "^11.0.0"
- }
- },
- "remark-rehype": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz",
- "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==",
- "requires": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "unified": "^11.0.0",
- "vfile": "^6.0.0"
- }
- },
- "reselect": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz",
- "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA=="
- },
- "resize-observer-polyfill": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
- "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
- },
- "resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "resolve-pathname": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
- "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
- },
- "rfdc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "rollup": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.2.tgz",
- "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==",
- "dev": true,
- "requires": {
- "@rollup/rollup-android-arm-eabi": "4.21.2",
- "@rollup/rollup-android-arm64": "4.21.2",
- "@rollup/rollup-darwin-arm64": "4.21.2",
- "@rollup/rollup-darwin-x64": "4.21.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.21.2",
- "@rollup/rollup-linux-arm-musleabihf": "4.21.2",
- "@rollup/rollup-linux-arm64-gnu": "4.21.2",
- "@rollup/rollup-linux-arm64-musl": "4.21.2",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.21.2",
- "@rollup/rollup-linux-s390x-gnu": "4.21.2",
- "@rollup/rollup-linux-x64-gnu": "4.21.2",
- "@rollup/rollup-linux-x64-musl": "4.21.2",
- "@rollup/rollup-win32-arm64-msvc": "4.21.2",
- "@rollup/rollup-win32-ia32-msvc": "4.21.2",
- "@rollup/rollup-win32-x64-msvc": "4.21.2",
- "@types/estree": "1.0.5",
- "fsevents": "~2.3.2"
- }
- },
- "rtl-css-js": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz",
- "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==",
- "requires": {
- "@babel/runtime": "^7.1.2"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- },
- "sass": {
- "version": "1.59.3",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.59.3.tgz",
- "integrity": "sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ==",
- "requires": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
- "source-map-js": ">=0.6.2 <2.0.0"
- }
- },
- "sax": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz",
- "integrity": "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==",
- "dev": true
- },
- "scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
- "requires": {
- "loose-envify": "^1.1.0"
- }
- },
- "screenfull": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz",
- "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA=="
- },
- "semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "set-cookie-parser": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz",
- "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ=="
- },
- "set-harmonic-interval": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz",
- "integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g=="
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
- },
- "slice-ansi": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
- "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^6.0.0",
- "is-fullwidth-code-point": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
- "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
- "dev": true
- }
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "source-map-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg=="
- },
- "source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "peer": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "space-separated-tokens": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
- "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="
- },
- "split2": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz",
- "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==",
- "dev": true
- },
- "ssr-window": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz",
- "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ=="
- },
- "stack-generator": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
- "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
- "requires": {
- "stackframe": "^1.3.4"
- }
- },
- "stackframe": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
- "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
- },
- "stacktrace-gps": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz",
- "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==",
- "requires": {
- "source-map": "0.5.6",
- "stackframe": "^1.3.4"
- },
- "dependencies": {
- "source-map": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
- "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA=="
- }
- }
- },
- "stacktrace-js": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz",
- "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==",
- "requires": {
- "error-stack-parser": "^2.0.6",
- "stack-generator": "^2.0.5",
- "stacktrace-gps": "^3.0.4"
- }
- },
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.2.0"
- }
- },
- "string-argv": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
- "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "dependencies": {
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- }
- }
- },
- "stringify-entities": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
- "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
- "requires": {
- "character-entities-html4": "^2.0.0",
- "character-entities-legacy": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true
- },
- "style-to-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.7.tgz",
- "integrity": "sha512-uSjr59G5u6fbxUfKbb8GcqMGT3Xs9v5IbPkjb0S16GyOeBLAzSRK0CixBv5YrYvzO6TDLzIS6QCn78tkqWngPw==",
- "requires": {
- "inline-style-parser": "0.2.3"
- }
- },
- "stylis": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz",
- "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now=="
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true
- },
- "swiper": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/swiper/-/swiper-9.1.1.tgz",
- "integrity": "sha512-D1zArOwI6XCXCYBULPA4jTxpqp5SQtvntjinbXNZwXzj6P3KS51zSWuMarCLXq5oRISay4nX+TuShpxz8qhtbw==",
- "requires": {
- "ssr-window": "^4.0.2"
- }
- },
- "systemjs": {
- "version": "6.15.1",
- "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.15.1.tgz",
- "integrity": "sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==",
- "dev": true
- },
- "tar": {
- "version": "6.1.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
- "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
- "dev": true,
- "requires": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^4.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "dependencies": {
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "terser": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.0.tgz",
- "integrity": "sha512-pdL757Ig5a0I+owA42l6tIuEycRuM7FPY4n62h44mRLRfnOxJkkOHd6i89dOpwZlpF6JXBwaAHF6yWzFrt+QyA==",
- "dev": true,
- "peer": true,
- "requires": {
- "@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.8.2",
- "commander": "^2.20.0",
- "source-map-support": "~0.5.20"
- }
- },
- "throttle-debounce": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
- "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg=="
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "through2": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
- "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
- "dev": true,
- "requires": {
- "readable-stream": "3"
- }
- },
- "tiny-invariant": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz",
- "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw=="
- },
- "tiny-warning": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
- "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "toggle-selection": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
- "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
- },
- "tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
- "tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true
- },
- "trim-lines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
- "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="
- },
- "trough": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
- "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="
- },
- "ts-easing": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz",
- "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ=="
- },
- "tslib": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
- "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
- },
- "type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true
- },
- "typescript": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
- "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw=="
- },
- "undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
- },
- "unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
- "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
- "dev": true
- },
- "unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
- "dev": true,
- "requires": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- }
- },
- "unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
- "dev": true
- },
- "unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
- "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
- "dev": true
- },
- "unified": {
- "version": "11.0.5",
- "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
- "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
- "requires": {
- "@types/unist": "^3.0.0",
- "bail": "^2.0.0",
- "devlop": "^1.0.0",
- "extend": "^3.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^6.0.0"
- }
- },
- "unist-util-is": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
- "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
- "requires": {
- "@types/unist": "^3.0.0"
- }
- },
- "unist-util-position": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
- "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
- "requires": {
- "@types/unist": "^3.0.0"
- }
- },
- "unist-util-stringify-position": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
- "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
- "requires": {
- "@types/unist": "^3.0.0"
- }
- },
- "unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
- "requires": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0",
- "unist-util-visit-parents": "^6.0.0"
- }
- },
- "unist-util-visit-parents": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
- "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
- "requires": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true
- },
- "untildify": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
- "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
- "dev": true
- },
- "update-browserslist-db": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
- "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
- "dev": true,
- "requires": {
- "escalade": "^3.1.2",
- "picocolors": "^1.0.1"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "value-equal": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
- "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
- },
- "vfile": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
- "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
- "requires": {
- "@types/unist": "^3.0.0",
- "vfile-message": "^4.0.0"
- }
- },
- "vfile-message": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
- "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
- "requires": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
- }
- },
- "vite": {
- "version": "5.4.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.3.tgz",
- "integrity": "sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==",
- "dev": true,
- "requires": {
- "esbuild": "^0.21.3",
- "fsevents": "~2.3.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- }
- },
- "void-elements": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
- "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w=="
- },
- "wait-for-expect": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.1.tgz",
- "integrity": "sha512-3Ha7lu+zshEG/CeHdcpmQsZnnZpPj/UsG3DuKO8FskjuDbkx3jE3845H+CuwZjA2YWYDfKMU2KhnCaXMLd3wVw==",
- "dev": true
- },
- "webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
- "whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "requires": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "ws": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
- "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
- "requires": {}
- },
- "xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
- "dev": true,
- "requires": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- },
- "dependencies": {
- "xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
- "dev": true
- }
- }
- },
- "xmlbuilder": {
- "version": "15.1.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
- "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
- "dev": true
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- },
- "yaml": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz",
- "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==",
- "dev": true
- },
- "yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "dev": true,
- "requires": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
- }
- },
- "zwitch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
- "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="
- }
- }
-}
diff --git a/03_source/mobile_notworking.del/package.json b/03_source/mobile_notworking.del/package.json
deleted file mode 100644
index 68e0fd1..0000000
--- a/03_source/mobile_notworking.del/package.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "browserslist": [
- ">0.2%",
- "not dead",
- "not ie <= 11",
- "not op_mini all"
- ],
- "dependencies": {
- "@capacitor/camera": "^4.1.5",
- "@capacitor/core": "^4.6.1",
- "@capacitor/preferences": "^4.0.2",
- "@ionic/pwa-elements": "^3.3.0",
- "@ionic/react": "8.2.6",
- "@ionic/react-router": "8.2.6",
- "@supabase/auth-helpers-nextjs": "^0.9.0",
- "@supabase/auth-helpers-react": "^0.3.1",
- "@supabase/ssr": "latest",
- "@supabase/supabase-js": "2.44.0",
- "date-fns": "^2.25.0",
- "dayjs": "^1.11.13",
- "i18next": "^22.4.14",
- "i18next-browser-languagedetector": "^7.0.1",
- "ionicons": "^7.1.2",
- "lodash": "^4.17.21",
- "prettier-plugin-organize-imports": "^4.0.0",
- "pullstate": "^1.22.1",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-i18next": "^12.2.0",
- "react-markdown": "^9.0.1",
- "react-router": "^5.3.4",
- "react-router-dom": "^5.3.4",
- "react-use": "^17.2.4",
- "reselect": "^4.0.0",
- "sass": "^1.59.3",
- "swiper": "^9.1.1",
- "typescript": "5.3.3"
- },
- "description": "An Ionic project",
- "devDependencies": {
- "@capacitor/cli": "^4.6.1",
- "@testing-library/react": "^9.3.1",
- "@types/googlemaps": "^3.38.0",
- "@types/jest": "24.0.18",
- "@types/node": "20.11.5",
- "@types/react": "18.2.48",
- "@types/react-dom": "18.2.18",
- "@types/react-router": "^5.1.20",
- "@types/react-router-dom": "^5.3.3",
- "@vitejs/plugin-legacy": "^5.4.1",
- "@vitejs/plugin-react": "^4.3.1",
- "lint-staged": "^13.2.0",
- "prettier": "^2.8.6",
- "vite": "^5.4.0"
- },
- "eslintConfig": {
- "extends": "react-app"
- },
- "lint-staged": {
- "src/**/*.{js,jsx,ts,tsx,json,md}": [
- "prettier --write",
- "git add"
- ]
- },
- "name": "ionic-react-conference-app",
- "private": true,
- "scripts": {
- "build": "tsc && vite build",
- "dev": "vite --host 0.0.0.0 --cors --force --strictPort",
- "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,json,md}\"",
- "precommit": "npm run format && lint-staged",
- "preview": "vite preview",
- "start": "npm run dev"
- },
- "version": "0.0.1"
-}
\ No newline at end of file
diff --git a/03_source/mobile_notworking.del/public/assets/data/S_A.en.md b/03_source/mobile_notworking.del/public/assets/data/S_A.en.md
deleted file mode 100644
index 2719d0d..0000000
--- a/03_source/mobile_notworking.del/public/assets/data/S_A.en.md
+++ /dev/null
@@ -1,55 +0,0 @@
-歡迎使用香港單身派對!本服務協議及社區規範(以下簡稱“協議”)旨在規範您使用香港單身派對(以下簡稱“平台”)的行為,確保平台的健康運營和用戶的良好體驗。請在使用平台前仔細閱讀並遵守本協議。
-
-1. 服務內容
- 香港單身派對提供以下服務:
-
- (a) 附近的人交友:使用地理定位功能幫助您認識附近的用戶。
-
- (b) 線上活動參與:平台不定期舉辦各類線上活動,包括但不限於遊戲配對、主題討論和社交聚會。
-
-2. 用戶權利與義務
-
- (a) 用戶有權使用平台提供的服務,並參與平台組織的活動。
-
- (b) 用戶應確保其在平台上發布的個人照片及資料真實且屬於本人,不得使用他人的照片或虛假信息。
-
- (c) 用戶應遵守相關法律法規,不得利用平台進行任何非法活動。
-
- (d) 用戶應尊重其他用戶的隱私權和個人信息安全,不得收集、使用或披露其他用戶的信息。
-
- (e) 用戶應維護良好的社區環境,不得發布任何違背公序良俗、含有歧視、騷擾、暴力或色情等內容的信息。
-
- (f) 用戶不得抄襲、模仿或以其他方式侵犯平台的知識產權,包括但不限於應用程序的界面設計、功能實現和內容創作。
-
- (g) 本平台僅限於 18 歲以上的用戶使用。未滿 18 歲的用戶不得使用平台,一旦發現,其帳號將被終止。
-
-3. 社區規範
- (a) 禁止發布任何形式的廣告、垃圾信息或欺詐信息。
- (b) 用戶應保持友好互動,避免使用侮辱性、攻擊性的語言。
- (c) 用戶不得發布、傳播任何侵犯他人知識產權或其他合法權益的信息。
- (d) 用戶應遵守平台的操作規範,不得進行任何破壞平台正常運行的行為。
-
-4. 隱私保護
- 平台將採取合理措施保護用戶的個人信息,並遵守相關隱私保護法律法規。用戶同意平台在提供服務過程中收集和使用其個人信息。
-
-5. 違規處理
- 用戶違反本協議時,平台將視情節輕重給予警告或終止其帳號的使用權。嚴重違反者將被永久禁止使用平台服務。
-
-6. 協議的變更與終止
-
- (a) 平台有權根據需要對本協議進行修改,並在平台上公佈最新版本。
-
- (b) 如用戶違反本協議,平台有權限制或終止其使用平台的權利。
-
-7. 爭議解決
- 因本協議引起的任何爭議,雙方應首先嘗試友好協商解決;協商不成時,任何一方可直接提出訴訟。
-
-8. 其他
-
- (a) 本平台保留對所有情況的最終決定權和解釋權。
-
- (b) 本協議的附件是協議不可分割的一部分,與協議具有同等法律效力。
-
-用戶在使用平台服務時,即表示已閱讀、理解並同意遵守本協議。
-
-~ 完 ~
diff --git a/03_source/mobile_notworking.del/public/assets/data/S_A.zh..md b/03_source/mobile_notworking.del/public/assets/data/S_A.zh..md
deleted file mode 100644
index aec9cec..0000000
--- a/03_source/mobile_notworking.del/public/assets/data/S_A.zh..md
+++ /dev/null
@@ -1,53 +0,0 @@
-歡迎使用香港單身派對!本服務協議及社區規範(以下簡稱“協議”)旨在規範您使用香港單身派對(以下簡稱“平台”)的行為,確保平台的健康運營和用戶的良好體驗。請在使用平台前仔細閱讀並遵守本協議。
-
-1. 服務內容
- 香港單身派對提供以下服務:
-
- (a) 附近的人交友:使用地理定位功能幫助您認識附近的用戶。
-
- (b) 線上活動參與:平台不定期舉辦各類線上活動,包括但不限於遊戲配對、主題討論和社交聚會。
-
-2. 用戶權利與義務
-
- (a) 用戶有權使用平台提供的服務,並參與平台組織的活動。
-
- (b) 用戶應確保其在平台上發布的個人照片及資料真實且屬於本人,不得使用他人的照片或虛假信息。
-
- (c) 用戶應遵守相關法律法規,不得利用平台進行任何非法活動。
-
- (d) 用戶應尊重其他用戶的隱私權和個人信息安全,不得收集、使用或披露其他用戶的信息。
-
- (e) 用戶應維護良好的社區環境,不得發布任何違背公序良俗、含有歧視、騷擾、暴力或色情等內容的信息。
-
- (f) 用戶不得抄襲、模仿或以其他方式侵犯平台的知識產權,包括但不限於應用程序的界面設計、功能實現和內容創作。
-
- (g) 本平台僅限於 18 歲以上的用戶使用。未滿 18 歲的用戶不得使用平台,一旦發現,其帳號將被終止。
-
-3. 社區規範
- (a) 禁止發布任何形式的廣告、垃圾信息或欺詐信息。
- (b) 用戶應保持友好互動,避免使用侮辱性、攻擊性的語言。
- (c) 用戶不得發布、傳播任何侵犯他人知識產權或其他合法權益的信息。
- (d) 用戶應遵守平台的操作規範,不得進行任何破壞平台正常運行的行為。
-
-4. 隱私保護
- 平台將採取合理措施保護用戶的個人信息,並遵守相關隱私保護法律法規。用戶同意平台在提供服務過程中收集和使用其個人信息。
-
-5. 違規處理
- 用戶違反本協議時,平台將視情節輕重給予警告或終止其帳號的使用權。嚴重違反者將被永久禁止使用平台服務。
-
-6. 協議的變更與終止
-
- (a) 平台有權根據需要對本協議進行修改,並在平台上公佈最新版本。
-
- (b) 如用戶違反本協議,平台有權限制或終止其使用平台的權利。
-
-7. 爭議解決
- 因本協議引起的任何爭議,雙方應首先嘗試友好協商解決;協商不成時,任何一方可直接提出訴訟。
-
-8. 其他
-
- (a) 本平台保留對所有情況的最終決定權和解釋權。
-
- (b) 本協議的附件是協議不可分割的一部分,與協議具有同等法律效力。
-
-用戶在使用平台服務時,即表示已閱讀、理解並同意遵守本協議。
diff --git a/03_source/mobile_notworking.del/public/assets/data/Terms.en.md b/03_source/mobile_notworking.del/public/assets/data/Terms.en.md
deleted file mode 100644
index 94d5c47..0000000
--- a/03_source/mobile_notworking.del/public/assets/data/Terms.en.md
+++ /dev/null
@@ -1,45 +0,0 @@
-## Privacy Policy
-
-Welcome to Hong Kong Single Party. We understand the importance of privacy to you and are committed to taking all reasonable measures to protect your personal information. This Privacy Policy aims to explain how we collect, use, store, and protect your personal information, as well as the rights you have regarding your information.
-
-1. Collection of Personal Information
- To provide the best social experience, we may collect the following types of personal information when you use [Friend Circle]:
-
- - Basic Information: Such as your name, gender, date of birth, phone number, and email address.
- - Location Information: When you enable location services, we may collect information about the location of your device to recommend nearby activities and friends.
- - Usage Information: Including the time, frequency, preference settings, and interaction data of your use of [Friend Circle].
- - Activity Participation Information: When you participate in our offline activities, we may collect information about your participation and feedback.
-
-2. Use of Personal Information
- We use your personal information mainly for the following purposes:
-
- - Service Provision and Improvement: To ensure that [Friend Circle] functions properly and to continuously optimize and improve it.
- - Personalized Experience: To provide you with a more personalized service and recommendations based on your preferences and usage habits.
- - Activity Organization: To organize and arrange offline activities that interest you, including game matching and social gatherings.
- - Communication: To send you important notifications, such as activity updates, new features, or customer service-related information.
- - Security: To protect the security of your account and to prevent and investigate potential security issues.
-
-3. Storage and Protection of Personal Information
- We will take appropriate technical and organizational measures to protect your personal information against unauthorized access, disclosure, alteration, or destruction. We will store your personal information on secure servers and restrict employee access to this information.
-
-4. Sharing and Transfer of Personal Information
- We will not sell or provide your personal information to third parties unless:
-
- - We have your explicit consent.
- - It is necessary to share information with trusted third-party partners to provide a service or feature you have requested.
- - Required by law or to comply with legal processes.
-
-5. Your Rights
- You have the following rights regarding your personal information:
-
- - Right to Access: You have the right to access the personal information we hold about you.
- - Right to Rectification: You have the right to request corrections if you find any inaccuracies in the information we hold.
- - Right to Erasure: Under certain circumstances, you have the right to request the deletion of your personal information.
-
-6. Policy Updates
- We may update this Privacy Policy from time to time. All updates will be published within the [Friend Circle] application and will be reflected in the new effective date of the updated Privacy Policy.
-
-7. Contact Us
- If you have any questions or concerns about this Privacy Policy, or if you wish to exercise any of the above rights, please contact us using “Contact us”of Hong Kong Single party. Our team will respond as soon as possible. Please wait.
-
-Hong Kong Single Party. We will continue to strive to provide you with a safer and more reliable social experience.
diff --git a/03_source/mobile_notworking.del/public/assets/data/Terms.zh.md b/03_source/mobile_notworking.del/public/assets/data/Terms.zh.md
deleted file mode 100644
index 94d5c47..0000000
--- a/03_source/mobile_notworking.del/public/assets/data/Terms.zh.md
+++ /dev/null
@@ -1,45 +0,0 @@
-## Privacy Policy
-
-Welcome to Hong Kong Single Party. We understand the importance of privacy to you and are committed to taking all reasonable measures to protect your personal information. This Privacy Policy aims to explain how we collect, use, store, and protect your personal information, as well as the rights you have regarding your information.
-
-1. Collection of Personal Information
- To provide the best social experience, we may collect the following types of personal information when you use [Friend Circle]:
-
- - Basic Information: Such as your name, gender, date of birth, phone number, and email address.
- - Location Information: When you enable location services, we may collect information about the location of your device to recommend nearby activities and friends.
- - Usage Information: Including the time, frequency, preference settings, and interaction data of your use of [Friend Circle].
- - Activity Participation Information: When you participate in our offline activities, we may collect information about your participation and feedback.
-
-2. Use of Personal Information
- We use your personal information mainly for the following purposes:
-
- - Service Provision and Improvement: To ensure that [Friend Circle] functions properly and to continuously optimize and improve it.
- - Personalized Experience: To provide you with a more personalized service and recommendations based on your preferences and usage habits.
- - Activity Organization: To organize and arrange offline activities that interest you, including game matching and social gatherings.
- - Communication: To send you important notifications, such as activity updates, new features, or customer service-related information.
- - Security: To protect the security of your account and to prevent and investigate potential security issues.
-
-3. Storage and Protection of Personal Information
- We will take appropriate technical and organizational measures to protect your personal information against unauthorized access, disclosure, alteration, or destruction. We will store your personal information on secure servers and restrict employee access to this information.
-
-4. Sharing and Transfer of Personal Information
- We will not sell or provide your personal information to third parties unless:
-
- - We have your explicit consent.
- - It is necessary to share information with trusted third-party partners to provide a service or feature you have requested.
- - Required by law or to comply with legal processes.
-
-5. Your Rights
- You have the following rights regarding your personal information:
-
- - Right to Access: You have the right to access the personal information we hold about you.
- - Right to Rectification: You have the right to request corrections if you find any inaccuracies in the information we hold.
- - Right to Erasure: Under certain circumstances, you have the right to request the deletion of your personal information.
-
-6. Policy Updates
- We may update this Privacy Policy from time to time. All updates will be published within the [Friend Circle] application and will be reflected in the new effective date of the updated Privacy Policy.
-
-7. Contact Us
- If you have any questions or concerns about this Privacy Policy, or if you wish to exercise any of the above rights, please contact us using “Contact us”of Hong Kong Single party. Our team will respond as soon as possible. Please wait.
-
-Hong Kong Single Party. We will continue to strive to provide you with a safer and more reliable social experience.
diff --git a/03_source/mobile_notworking.del/public/assets/data/data.json b/03_source/mobile_notworking.del/public/assets/data/data.json
deleted file mode 100644
index 5675cdc..0000000
--- a/03_source/mobile_notworking.del/public/assets/data/data.json
+++ /dev/null
@@ -1,467 +0,0 @@
-{
- "schedule": [
- {
- "date": "2047-05-17",
- "groups": [
- {
- "time": "8:00 am",
- "sessions": [
- {
- "name": "Breakfast",
- "timeStart": "8:00 am",
- "timeEnd": "9:00 am",
- "location": "Dining Hall",
- "tracks": ["Food"],
- "id": "1"
- }
- ]
- },
- {
- "time": "9:15 am",
- "sessions": [
- {
- "name": "Getting Started with Ionic",
- "location": "Hall 2",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Ted Turtle"],
- "timeStart": "9:30 am",
- "timeEnd": "9:45 am",
- "tracks": ["Ionic"],
- "id": "2"
- },
- {
- "name": "Ionic Tooling",
- "location": "Executive Ballroom",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Rachel Rabbit"],
- "timeStart": "9:45 am",
- "timeEnd": "10:00 am",
- "tracks": ["Tooling"],
- "id": "3"
- },
- {
- "name": "University of Ionic",
- "location": "Hall 3",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Ellie Elephant"],
- "timeStart": "9:15 am",
- "timeEnd": "9:30 am",
- "tracks": ["Ionic"],
- "id": "4"
- }
- ]
- },
- {
- "time": "10:00 am",
- "sessions": [
- {
- "name": "Migrating to Ionic",
- "location": "Hall 1",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Eva Eagle", "Lionel Lion"],
- "timeStart": "10:00 am",
- "timeEnd": "10:15 am",
- "tracks": ["Ionic"],
- "id": "5"
- },
- {
- "name": "What's New in Angular",
- "location": "Hall 3",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Rachel Rabbit"],
- "timeStart": "10:15 am",
- "timeEnd": "10:30 am",
- "tracks": ["Angular"],
- "id": "6"
- },
- {
- "name": "The Evolution of Ionicons",
- "location": "Hall 2",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Isabella Iguana", "Eva Eagle"],
- "timeStart": "10:15 am",
- "timeEnd": "10:30 am",
- "tracks": ["Design"],
- "id": "7"
- },
- {
- "name": "Ionic Pro",
- "location": "Grand Ballroom A",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Charlie Cheetah"],
- "timeStart": "10:45 am",
- "timeEnd": "11:00 am",
- "tracks": ["Services"],
- "id": "8"
- }
- ]
- },
- {
- "time": "11:00 am",
- "sessions": [
- {
- "name": "Ionic Workshop",
- "location": "Hall 1",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Karl Kitten", "Lionel Lion"],
- "timeStart": "11:00 am",
- "timeEnd": "11:45 am",
- "tracks": ["Workshop"],
- "id": "9"
- },
- {
- "name": "Community Interaction",
- "location": "Hall 3",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Lionel Lion", "Gino Giraffe"],
- "timeStart": "11:30 am",
- "timeEnd": "11:50 am",
- "tracks": ["Communication"],
- "id": "10"
- },
- {
- "name": "Navigation in Ionic",
- "location": "Grand Ballroom A",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Rachel Rabbit", "Eva Eagle"],
- "timeStart": "11:30 am",
- "timeEnd": "12:00 pm",
- "tracks": ["Navigation"],
- "id": "11"
- }
- ]
- },
- {
- "time": "12:00 pm",
- "sessions": [
- {
- "name": "Lunch",
- "location": "Dining Hall",
- "description": "Come grab lunch with all the Ionic fanatics and talk all things Ionic",
- "timeStart": "12:00 pm",
- "timeEnd": "1:00 pm",
- "tracks": ["Food"],
- "id": "12"
- }
- ]
- },
- {
- "time": "1:00 pm",
- "sessions": [
- {
- "name": "Ionic in the Enterprise",
- "location": "Hall 1",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Paul Puppy"],
- "timeStart": "1:00 pm",
- "timeEnd": "1:15 pm",
- "tracks": ["Communication"],
- "id": "13"
- },
- {
- "name": "Ionic Worldwide",
- "location": "Hall 1",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Gino Giraffe"],
- "timeStart": "1:15 pm",
- "timeEnd": "1:30 pm",
- "tracks": ["Communication"],
- "id": "14"
- },
- {
- "name": "The Ionic Package",
- "location": "Grand Ballroom B",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Molly Mouse", "Burt Bear"],
- "timeStart": "1:30 pm",
- "timeEnd": "2:00 pm",
- "tracks": ["Services"],
- "id": "15"
- }
- ]
- },
- {
- "time": "2:00 pm",
- "sessions": [
- {
- "name": "Push Notifications in Ionic",
- "location": "Hall 2",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Burt Bear", "Charlie Cheetah"],
- "timeStart": "2:00 pm",
- "timeEnd": "2:30 pm",
- "tracks": ["Services"],
- "id": "16"
- },
- {
- "name": "Ionic Documentation",
- "location": "Grand Ballroom B",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Donald Duck"],
- "timeStart": "2:30 pm",
- "timeEnd": "2:45 pm",
- "tracks": ["Documentation"],
- "id": "17"
- },
- {
- "name": "UX in Ionic",
- "location": "Hall 3",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Isabella Iguana", "Ellie Elephant"],
- "timeStart": "2:45 pm",
- "timeEnd": "3:00 pm",
- "tracks": ["Design"],
- "id": "18"
- }
- ]
- },
- {
- "time": "3:00",
- "sessions": [
- {
- "name": "Angular Directives in Ionic",
- "location": "Hall 1",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Ted Turtle"],
- "timeStart": "3:00 pm",
- "timeEnd": "3:30 pm",
- "tracks": ["Angular"],
- "id": "19"
- },
- {
- "name": "Mobile States",
- "location": "Hall 2",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Rachel Rabbit"],
- "timeStart": "3:30 pm",
- "timeEnd": "3:45 pm",
- "tracks": ["Navigation"],
- "id": "20"
- }
- ]
- }
- ]
- }
- ],
-
- "speakers": [
- {
- "name": "Burt Bear",
- "profilePic": "/assets/img/speakers/bear.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Burt is a Bear. Burt's interests include poetry, dashing space heroes, and lions.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "burt@example.com",
- "phone": "+1-541-754-3010",
- "id": "1"
- },
- {
- "name": "Charlie Cheetah",
- "profilePic": "/assets/img/speakers/cheetah.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Charlie is a Cheetah. Charlie's interests include country music, plush animals, pyrotechnics, and skeletons.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "charlie@example.com",
- "phone": "+1-541-754-3010",
- "id": "2"
- },
- {
- "name": "Donald Duck",
- "profilePic": "/assets/img/speakers/duck.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Donald is a Duck. Donald's interests include carpentry, superheroes, merpeople, and glam rock.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "donald@example.com",
- "phone": "+1-541-754-3010",
- "id": "3"
- },
- {
- "name": "Eva Eagle",
- "profilePic": "/assets/img/speakers/eagle.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Eva is an Eagle. Eva's interests include ants, seashells, and cupcakes.",
- "title": "Developer Advocate",
- "location": "Everywhere",
- "email": "eva@example.com",
- "phone": "+1-541-754-3010",
- "id": "4"
- },
- {
- "name": "Ellie Elephant",
- "profilePic": "/assets/img/speakers/elephant.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Ellie is an Elephant. Ellie's interests include pocket watches, pool, hand fans, and ninjas.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "ellie@example.com",
- "phone": "+1-541-754-3010",
- "id": "5"
- },
- {
- "name": "Gino Giraffe",
- "profilePic": "/assets/img/speakers/giraffe.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Gino is a Giraffe. Gino's interests include candy-making, unicorns, and birdhouses.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "gino@example.com",
- "phone": "+1-541-754-3010",
- "id": "6"
- },
- {
- "name": "Isabella Iguana",
- "profilePic": "/assets/img/speakers/iguana.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Isabella is an Iguana. Isabella's interests include crystals, architecture, and candle-making.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "isabella@example.com",
- "phone": "+1-541-754-3010",
- "id": "7"
- },
- {
- "name": "Karl Kitten",
- "profilePic": "/assets/img/speakers/kitten.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Karl is a Kitten. Karl's interests include skiing, jewelry, and needlepoint.",
- "title": "Developer Advocate",
- "location": "Everywhere",
- "email": "karl@example.com",
- "phone": "+1-541-754-3010",
- "id": "8"
- },
- {
- "name": "Lionel Lion",
- "profilePic": "/assets/img/speakers/lion.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Lionel is a Lion. Lionel's interests include lizards and mathematics.",
- "title": "Developer Advocate",
- "location": "Everywhere",
- "email": "lionel@example.com",
- "phone": "+1-541-754-3010",
- "id": "9"
- },
- {
- "name": "Molly Mouse",
- "profilePic": "/assets/img/speakers/mouse.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Molly is a Mouse. Molly's interests include werewolves and magic.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "molly@example.com",
- "phone": "+1-541-754-3010",
- "id": "10"
- },
- {
- "name": "Paul Puppy",
- "profilePic": "/assets/img/speakers/puppy.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Paul is a Puppy. Paul's interests include maps, whales, and dragons.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "paul@example.com",
- "phone": "+1-541-754-3010",
- "id": "11"
- },
- {
- "name": "Rachel Rabbit",
- "profilePic": "/assets/img/speakers/rabbit.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Rachel is a Rabbit. Rachel's interests include clowns, skeletons, and yo-yos.",
- "title": "Senior Software Engineer",
- "location": "Everywhere",
- "email": "rachel@example.com",
- "phone": "+1-541-754-3010",
- "id": "12"
- },
- {
- "name": "Ted Turtle",
- "profilePic": "/assets/img/speakers/turtle.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Ted is a Turtle. Ted's interests include butterflies, skiing, and cupcakes.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "ted@example.com",
- "phone": "+1-541-754-3010",
- "id": "13"
- }
- ],
-
- "map": [
- {
- "name": "Monona Terrace Convention Center",
- "lat": 43.071584,
- "lng": -89.38012,
- "center": true
- },
- {
- "name": "Ionic HQ",
- "lat": 43.074395,
- "lng": -89.381056
- },
- {
- "name": "Afterparty - Brocach Irish Pub",
- "lat": 43.07336,
- "lng": -89.38335
- }
- ],
-
- "tracks": [
- {
- "name": "Angular",
- "icon": "logo-angular"
- },
- {
- "name": "Documentation",
- "icon": "document"
- },
- {
- "name": "Food",
- "icon": "restaurant"
- },
- {
- "name": "Ionic",
- "icon": "logo-ionic"
- },
- {
- "name": "Tooling",
- "icon": "hammer"
- },
- {
- "name": "Design",
- "icon": "color-palette"
- },
- {
- "name": "Services",
- "icon": "cog"
- },
- {
- "name": "Workshop",
- "icon": "construct"
- },
- {
- "name": "Communication",
- "icon": "call"
- },
- {
- "name": "Navigation",
- "icon": "compass"
- }
- ]
-}
diff --git a/03_source/mobile_notworking.del/public/assets/data/locations.json b/03_source/mobile_notworking.del/public/assets/data/locations.json
deleted file mode 100644
index a6967ea..0000000
--- a/03_source/mobile_notworking.del/public/assets/data/locations.json
+++ /dev/null
@@ -1,26 +0,0 @@
-[
- {
- "id": 1,
- "name": "Map Center",
- "lat": 43.071584,
- "lng": -89.38012
- },
- {
- "id": 2,
- "name": "Monona Terrace Convention Center",
- "lat": 43.071584,
- "lng": -89.38012
- },
- {
- "id": 3,
- "name": "Ionic HQ",
- "lat": 43.074395,
- "lng": -89.381056
- },
- {
- "id": 4,
- "name": "Afterparty - Brocach Irish Pub",
- "lat": 43.07336,
- "lng": -89.38335
- }
-]
diff --git a/03_source/mobile_notworking.del/public/assets/icon/favicon.png b/03_source/mobile_notworking.del/public/assets/icon/favicon.png
deleted file mode 100644
index 51888a7..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/icon/favicon.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/about/austin.jpg b/03_source/mobile_notworking.del/public/assets/img/about/austin.jpg
deleted file mode 100644
index b4eb329..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/about/austin.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/about/chicago.jpg b/03_source/mobile_notworking.del/public/assets/img/about/chicago.jpg
deleted file mode 100644
index b982b65..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/about/chicago.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/about/madison.jpg b/03_source/mobile_notworking.del/public/assets/img/about/madison.jpg
deleted file mode 100644
index c46fbf0..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/about/madison.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/about/seattle.jpg b/03_source/mobile_notworking.del/public/assets/img/about/seattle.jpg
deleted file mode 100644
index 4c5946a..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/about/seattle.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/appicon.png b/03_source/mobile_notworking.del/public/assets/img/appicon.png
deleted file mode 100644
index 3aa6ee2..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/appicon.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/appicon.svg b/03_source/mobile_notworking.del/public/assets/img/appicon.svg
deleted file mode 100644
index 3d2a03b..0000000
--- a/03_source/mobile_notworking.del/public/assets/img/appicon.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/03_source/mobile_notworking.del/public/assets/img/ica-slidebox-img-1.png b/03_source/mobile_notworking.del/public/assets/img/ica-slidebox-img-1.png
deleted file mode 100644
index 9233602..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/ica-slidebox-img-1.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/ica-slidebox-img-2.png b/03_source/mobile_notworking.del/public/assets/img/ica-slidebox-img-2.png
deleted file mode 100644
index 2fdce7d..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/ica-slidebox-img-2.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/ica-slidebox-img-3.png b/03_source/mobile_notworking.del/public/assets/img/ica-slidebox-img-3.png
deleted file mode 100644
index a304e88..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/ica-slidebox-img-3.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/ica-slidebox-img-4.png b/03_source/mobile_notworking.del/public/assets/img/ica-slidebox-img-4.png
deleted file mode 100644
index 2f263d6..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/ica-slidebox-img-4.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/ionic-logo-white.svg b/03_source/mobile_notworking.del/public/assets/img/ionic-logo-white.svg
deleted file mode 100644
index 7ebf0cd..0000000
--- a/03_source/mobile_notworking.del/public/assets/img/ionic-logo-white.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/03_source/mobile_notworking.del/public/assets/img/samples/party_image.avif b/03_source/mobile_notworking.del/public/assets/img/samples/party_image.avif
deleted file mode 100644
index 661c2c1..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/samples/party_image.avif and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/samples/party_image.png b/03_source/mobile_notworking.del/public/assets/img/samples/party_image.png
deleted file mode 100644
index 40eba63..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/samples/party_image.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speaker-background.png b/03_source/mobile_notworking.del/public/assets/img/speaker-background.png
deleted file mode 100644
index 220634e..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speaker-background.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/bear.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/bear.jpg
deleted file mode 100644
index a968db7..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/bear.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/cheetah.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/cheetah.jpg
deleted file mode 100644
index f188a81..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/cheetah.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/duck.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/duck.jpg
deleted file mode 100644
index b8b7c52..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/duck.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/eagle.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/eagle.jpg
deleted file mode 100644
index ac839a5..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/eagle.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/elephant.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/elephant.jpg
deleted file mode 100644
index 0727847..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/elephant.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/giraffe.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/giraffe.jpg
deleted file mode 100644
index 30a854c..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/giraffe.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/iguana.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/iguana.jpg
deleted file mode 100644
index 75d528f..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/iguana.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/kitten.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/kitten.jpg
deleted file mode 100644
index 3cc1359..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/kitten.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/lion.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/lion.jpg
deleted file mode 100644
index f5eb632..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/lion.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/mouse.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/mouse.jpg
deleted file mode 100644
index ca30177..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/mouse.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/puppy.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/puppy.jpg
deleted file mode 100644
index d635a8a..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/puppy.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/rabbit.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/rabbit.jpg
deleted file mode 100644
index 475d62c..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/rabbit.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/img/speakers/turtle.jpg b/03_source/mobile_notworking.del/public/assets/img/speakers/turtle.jpg
deleted file mode 100644
index 60c3496..0000000
Binary files a/03_source/mobile_notworking.del/public/assets/img/speakers/turtle.jpg and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/assets/shapes.svg b/03_source/mobile_notworking.del/public/assets/shapes.svg
deleted file mode 100644
index d370b4d..0000000
--- a/03_source/mobile_notworking.del/public/assets/shapes.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/03_source/mobile_notworking.del/public/favicon.ico b/03_source/mobile_notworking.del/public/favicon.ico
deleted file mode 100644
index a11777c..0000000
Binary files a/03_source/mobile_notworking.del/public/favicon.ico and /dev/null differ
diff --git a/03_source/mobile_notworking.del/public/manifest.json b/03_source/mobile_notworking.del/public/manifest.json
deleted file mode 100644
index ee4307c..0000000
--- a/03_source/mobile_notworking.del/public/manifest.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "short_name": "Ionic React Conf",
- "name": "Ionic React Conf",
- "icons": [
- {
- "src": "assets/icon/favicon.png",
- "sizes": "64x64 32x32 24x24 16x16",
- "type": "image/x-icon"
- },
- {
- "src": "assets/icon/icon.png",
- "type": "image/png",
- "sizes": "512x512",
- "purpose": "maskable"
- }
- ],
- "start_url": ".",
- "display": "standalone",
- "theme_color": "#ffffff",
- "background_color": "#ffffff"
-}
diff --git a/03_source/mobile_notworking.del/resources/screenshots/android-about.png b/03_source/mobile_notworking.del/resources/screenshots/android-about.png
deleted file mode 100644
index 4a742f2..0000000
Binary files a/03_source/mobile_notworking.del/resources/screenshots/android-about.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/resources/screenshots/android-menu.png b/03_source/mobile_notworking.del/resources/screenshots/android-menu.png
deleted file mode 100644
index 2227764..0000000
Binary files a/03_source/mobile_notworking.del/resources/screenshots/android-menu.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/resources/screenshots/android-schedule.png b/03_source/mobile_notworking.del/resources/screenshots/android-schedule.png
deleted file mode 100644
index 7c7629a..0000000
Binary files a/03_source/mobile_notworking.del/resources/screenshots/android-schedule.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/resources/screenshots/android-speaker-detail.png b/03_source/mobile_notworking.del/resources/screenshots/android-speaker-detail.png
deleted file mode 100644
index 9aca16f..0000000
Binary files a/03_source/mobile_notworking.del/resources/screenshots/android-speaker-detail.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/resources/screenshots/android-speakers.png b/03_source/mobile_notworking.del/resources/screenshots/android-speakers.png
deleted file mode 100644
index b59ab00..0000000
Binary files a/03_source/mobile_notworking.del/resources/screenshots/android-speakers.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/resources/screenshots/ios-about.png b/03_source/mobile_notworking.del/resources/screenshots/ios-about.png
deleted file mode 100644
index 86a8e81..0000000
Binary files a/03_source/mobile_notworking.del/resources/screenshots/ios-about.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/resources/screenshots/ios-menu.png b/03_source/mobile_notworking.del/resources/screenshots/ios-menu.png
deleted file mode 100644
index 4803f31..0000000
Binary files a/03_source/mobile_notworking.del/resources/screenshots/ios-menu.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/resources/screenshots/ios-schedule.png b/03_source/mobile_notworking.del/resources/screenshots/ios-schedule.png
deleted file mode 100644
index c581de1..0000000
Binary files a/03_source/mobile_notworking.del/resources/screenshots/ios-schedule.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/resources/screenshots/ios-speaker-detail.png b/03_source/mobile_notworking.del/resources/screenshots/ios-speaker-detail.png
deleted file mode 100644
index 761a9ec..0000000
Binary files a/03_source/mobile_notworking.del/resources/screenshots/ios-speaker-detail.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/resources/screenshots/ios-speakers.png b/03_source/mobile_notworking.del/resources/screenshots/ios-speakers.png
deleted file mode 100644
index b938fd1..0000000
Binary files a/03_source/mobile_notworking.del/resources/screenshots/ios-speakers.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/App.scss b/03_source/mobile_notworking.del/src/App.scss
deleted file mode 100644
index 13076f3..0000000
--- a/03_source/mobile_notworking.del/src/App.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-/*
- * App Global CSS
- * ----------------------------------------------------------------------------
- * Put style rules here that you want to apply globally. These styles are for
- * the entire app and not just one component.
- */
diff --git a/03_source/mobile_notworking.del/src/App.test.tsx b/03_source/mobile_notworking.del/src/App.test.tsx
deleted file mode 100644
index ea2e0c9..0000000
--- a/03_source/mobile_notworking.del/src/App.test.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import { render } from '@testing-library/react';
-import App from './App';
-
-it('renders without crashing', () => {
- const { asFragment, container } = render( );
- expect(asFragment()).toMatchSnapshot();
-});
diff --git a/03_source/mobile_notworking.del/src/App.tsx b/03_source/mobile_notworking.del/src/App.tsx
deleted file mode 100644
index 55927f3..0000000
--- a/03_source/mobile_notworking.del/src/App.tsx
+++ /dev/null
@@ -1,273 +0,0 @@
-import { IonApp, IonNav, IonRouterOutlet, IonSplitPane, setupIonicReact } from '@ionic/react';
-import { IonReactRouter } from '@ionic/react-router';
-import React, { useContext, useEffect } from 'react';
-import { Route } from 'react-router-dom';
-
-import Menu from './components/Menu';
-
-/* Core CSS required for Ionic components to work properly */
-import '@ionic/react/css/core.css';
-
-/* Basic CSS for apps built with Ionic */
-import '@ionic/react/css/normalize.css';
-import '@ionic/react/css/structure.css';
-import '@ionic/react/css/typography.css';
-
-/* Optional CSS utils that can be commented out */
-import '@ionic/react/css/display.css';
-import '@ionic/react/css/flex-utils.css';
-import '@ionic/react/css/float-elements.css';
-import '@ionic/react/css/padding.css';
-import '@ionic/react/css/text-alignment.css';
-import '@ionic/react/css/text-transformation.css';
-
-/**
- * Ionic Dark Mode
- * -----------------------------------------------------
- * For more info, please see:
- * https://ionicframework.com/docs/theming/dark-mode
- */
-
-// import "@ionic/react/css/palettes/dark.always.css";
-// import "@ionic/react/css/palettes/dark.system.css";
-import '@ionic/react/css/palettes/dark.class.css';
-
-/* Theme variables */
-import './theme/variables.css';
-
-/* Global styles */
-import './App.scss';
-import RedirectToLogin from './components/RedirectToLogin';
-import { AppContext, AppContextProvider } from './data/AppContext';
-import { connect } from './data/connect';
-import { loadConfData } from './data/sessions/sessions.actions';
-import { loadUserData, setIsLoggedIn, setUsername } from './data/user/user.actions';
-import { Schedule } from './models/Schedule';
-import Account from './pages/Account';
-import Login from './pages/Login';
-import MainTabs from './pages/MainTabs';
-import Signup from './pages/Signup';
-import Support from './pages/Support';
-import Tutorial from './pages/Tutorial';
-
-//
-import { Redirect } from 'react-router';
-import { AccountPage } from './pages/SBAccount';
-import LoginPage from './pages/SBLogin';
-
-//
-import SBLogout from './pages/SBLogout';
-import StartupLoading from './pages/debug/StartupLoading';
-import WelcomePage from './pages/debug/WelcomePage';
-import Helloworld from './pages/debug/helloworld';
-
-//
-import SBLoginError from './SBLoginError';
-import './i18n';
-import UnlockMemberShip from './pages/UnlockMembership';
-import EventDetail from './pages/event_detail';
-//
-
-// A wrapper for that redirects to the login
-// screen if you're not yet authenticated.
-function PrivateRoute({ children, ...rest }) {
- const { session } = useContext(AppContext);
-
- return (session ? children : )} />;
-}
-
-setupIonicReact();
-
-const App: React.FC = () => {
- return (
-
-
-
- );
-};
-
-interface StateProps {
- darkMode: boolean;
- schedule: Schedule;
-}
-
-interface DispatchProps {
- loadConfData: typeof loadConfData;
- loadUserData: typeof loadUserData;
- setIsLoggedIn: typeof setIsLoggedIn;
- setUsername: typeof setUsername;
-}
-
-interface IonicAppProps extends StateProps, DispatchProps {}
-
-function AppOutlet() {
- return (
-
- {/*
- We use IonRoute here to keep the tabs state intact,
- which makes transitions between tabs and non tab pages smooth
- */}
- {/* } /> */}
-
-
-
-
-
-
- {
- return ;
- }}
- />
-
-
-
-
-
-
-
-
-
- } exact={true} />
-
- {/* */}
- } exact={true} />
-
- {/* nested route / cascade route example */}
-
-
-
-
- } />
- } />
- } />
-
-
-
-
-
- {/* */}
- }
- />
-
- );
-}
-
-const IonicApp: React.FC = ({
- darkMode,
- schedule,
- setIsLoggedIn,
- setUsername,
- loadConfData,
- loadUserData,
-}) => {
- useEffect(() => {
- loadUserData();
- loadConfData();
- // eslint-disable-next-line
- }, []);
-
- return schedule.groups.length === 0 ? (
-
- ) : (
-
-
-
- {/* */}
-
- {/* */}
- }> ;
-
-
-
- );
-
- // TODO: obsoleted, delete this
- // return schedule.groups.length === 0 ? (
- //
- // ) : (
- //
- //
- //
- // {/* */}
- //
-
- //
- // {/*
- // We use IonRoute here to keep the tabs state intact,
- // which makes transitions between tabs and non tab pages smooth
- // */}
- // {/* } /> */}
- //
- //
- //
- //
- //
- // {
- // return ;
- // }}
- // />
-
- //
- //
- //
- //
- //
-
- //
-
- // } exact={true} />
-
- // {/* nested route / cascade route example */}
- //
- //
- //
-
- //
- //
- //
-
- // {
- // return ;
- // }}
- // />
-
- // {
- // return ;
- // }}
- // />
-
- //
- //
- //
- //
- //
- // );
-};
-
-export default App;
-
-const IonicAppConnected = connect<{}, StateProps, DispatchProps>({
- mapStateToProps: state => ({
- darkMode: state.user.darkMode,
- schedule: state.data.schedule,
- }),
- mapDispatchToProps: {
- loadConfData,
- loadUserData,
- setIsLoggedIn,
- setUsername,
- },
- component: IonicApp,
-});
diff --git a/03_source/mobile_notworking.del/src/SBLoginError/index.tsx b/03_source/mobile_notworking.del/src/SBLoginError/index.tsx
deleted file mode 100644
index f1a8615..0000000
--- a/03_source/mobile_notworking.del/src/SBLoginError/index.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-const SBLoginError = () => {
- return <>Login Error>;
-};
-
-export default SBLoginError;
diff --git a/03_source/mobile_notworking.del/src/__snapshots__/App.test.tsx.snap b/03_source/mobile_notworking.del/src/__snapshots__/App.test.tsx.snap
deleted file mode 100644
index 444f038..0000000
--- a/03_source/mobile_notworking.del/src/__snapshots__/App.test.tsx.snap
+++ /dev/null
@@ -1,280 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`renders without crashing 1`] = `
-
-
-
-
-
-
-
- Menu
-
-
-
-
-
-
- Navigate
-
-
-
-
-
- Schedule
-
-
-
-
-
-
-
- Speakers
-
-
-
-
-
-
-
- Map
-
-
-
-
-
-
-
- About
-
-
-
-
-
-
- Account
-
-
-
-
-
- Account
-
-
-
-
-
-
-
- Support
-
-
-
-
-
-
-
- Logout
-
-
-
-
-
-
- Tutorial
-
-
-
- Show Tutorial
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- All
-
-
- Favorites
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- No Sessions Found
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Schedule
-
-
-
-
-
- Speakers
-
-
-
-
-
- Map
-
-
-
-
-
- About
-
-
-
-
-
-
-
-
-`;
diff --git a/03_source/mobile_notworking.del/src/components/AboutPopover.tsx b/03_source/mobile_notworking.del/src/components/AboutPopover.tsx
deleted file mode 100644
index dabfa73..0000000
--- a/03_source/mobile_notworking.del/src/components/AboutPopover.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import { IonItem, IonLabel, IonList } from '@ionic/react';
-import React from 'react';
-
-interface AboutPopoverProps {
- dismiss: () => void;
-}
-
-const AboutPopover: React.FC = ({ dismiss }) => {
- const close = (url: string) => {
- window.open(url, '_blank');
- dismiss();
- };
-
- return (
-
- close('https://ionicframework.com/docs')}>
- Learn Ionic
-
- close('https://ionicframework.com/docs/react')}>
- Documentation
-
- close('https://showcase.ionicframework.com')}>
- Showcase
-
- close('https://github.com/ionic-team/ionic-framework')}>
- GitHub Repo
-
-
- Support
-
-
- );
-};
-
-export default AboutPopover;
diff --git a/03_source/mobile_notworking.del/src/components/Avatar.css b/03_source/mobile_notworking.del/src/components/Avatar.css
deleted file mode 100644
index 73a4798..0000000
--- a/03_source/mobile_notworking.del/src/components/Avatar.css
+++ /dev/null
@@ -1,27 +0,0 @@
-.avatar {
- display: block;
- margin: auto;
- min-height: 150px;
-}
-.avatar .avatar_wrapper {
- margin: 16px auto 16px;
- border-radius: 50%;
- overflow: hidden;
- height: 150px;
- aspect-ratio: 1;
- background: var(--ion-color-step-50);
- border: thick solid var(--ion-color-step-200);
-}
-.avatar .avatar_wrapper:hover {
- cursor: pointer;
-}
-.avatar .avatar_wrapper ion-icon.no-avatar {
- width: 100%;
- height: 115%;
-}
-.avatar img {
- display: block;
- object-fit: cover;
- width: 100%;
- height: 100%;
-}
diff --git a/03_source/mobile_notworking.del/src/components/Avatar.tsx b/03_source/mobile_notworking.del/src/components/Avatar.tsx
deleted file mode 100644
index 523b5a9..0000000
--- a/03_source/mobile_notworking.del/src/components/Avatar.tsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import { Camera, CameraResultType } from '@capacitor/camera';
-import { IonIcon } from '@ionic/react';
-import { person } from 'ionicons/icons';
-import { useEffect, useState } from 'react';
-import { supabase } from '../supabaseClient';
-import './Avatar.css';
-export function Avatar({ url, onUpload }: { url: string; onUpload: (e: any, file: string) => Promise }) {
- const [avatarUrl, setAvatarUrl] = useState();
-
- useEffect(() => {
- if (url) {
- downloadImage(url);
- }
- }, [url]);
- const uploadAvatar = async () => {
- try {
- const photo = await Camera.getPhoto({
- resultType: CameraResultType.DataUrl,
- });
-
- const file = await fetch(photo.dataUrl!)
- .then(res => res.blob())
- .then(blob => new File([blob], 'my-file', { type: `image/${photo.format}` }));
-
- const fileName = `${Math.random()}-${new Date().getTime()}.${photo.format}`;
- let { error: uploadError } = await supabase.storage.from('avatars').upload(fileName, file);
- if (uploadError) {
- throw uploadError;
- }
- onUpload(null, fileName);
- } catch (error) {
- console.log(error);
- }
- };
-
- const downloadImage = async (path: string) => {
- try {
- const { data, error } = await supabase.storage.from('avatars').download(path);
- if (error) {
- throw error;
- }
- const url = URL.createObjectURL(data!);
- setAvatarUrl(url);
- } catch (error: any) {
- console.log('Error downloading image: ', error.message);
- }
- };
-
- return (
-
-
- {avatarUrl ?
:
}
-
-
- );
-}
diff --git a/03_source/mobile_notworking.del/src/components/ChatBottomDetails.jsx b/03_source/mobile_notworking.del/src/components/ChatBottomDetails.jsx
deleted file mode 100644
index deab9ca..0000000
--- a/03_source/mobile_notworking.del/src/components/ChatBottomDetails.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { IonIcon } from '@ionic/react';
-import { checkmarkDone, star } from 'ionicons/icons';
-
-export const ChatBottomDetails = ({ message }) => (
-
- {message.date}
- {message.sent && }
- {message.starred && }
-
-);
diff --git a/03_source/mobile_notworking.del/src/components/ChatItem/index.jsx b/03_source/mobile_notworking.del/src/components/ChatItem/index.jsx
deleted file mode 100644
index 3531675..0000000
--- a/03_source/mobile_notworking.del/src/components/ChatItem/index.jsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import {
- IonIcon,
- IonItem,
- IonItemOption,
- IonItemOptions,
- IonItemSliding,
- IonNavLink,
- IonText,
- IonThumbnail,
-} from '@ionic/react';
-import { checkmarkDone } from 'ionicons/icons';
-import ChatHelloworld from '../../pages/chat';
-import { ContactStore } from '../../store';
-import { getContacts } from '../../store/Selectors';
-
-import HKPartyIonDeleteIcon from '../HKPartyIonDeleteIcon';
-import './style.scss';
-
-const ChatItem = ({ chat }) => {
- const contacts = ContactStore.useState(getContacts);
- const { chats, contact_id } = chat;
- const { read, date, preview, received } = chats[chats.length - 1];
- const contact = contacts.filter(c => c.id === contact_id)[0];
- const notificationCount = chats.filter(chat => chat.read === false).length;
-
- return (
- <>
-
- {/*
-
- Archive
-
- */}
-
- {/* */}
- }>
-
-
-
-
-
- {contact.name}
- {read && received && }
- {preview}
-
-
-
- {date}
-
- {notificationCount > 0 && {notificationCount} }
-
-
-
-
-
- {/* */}
-
-
-
-
-
-
- >
- );
-};
-
-export default ChatItem;
diff --git a/03_source/mobile_notworking.del/src/components/ChatItem/style.scss b/03_source/mobile_notworking.del/src/components/ChatItem/style.scss
deleted file mode 100644
index 8e962a8..0000000
--- a/03_source/mobile_notworking.del/src/components/ChatItem/style.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-.chat-row {
- .chat-row-content {
- padding: 1rem;
- }
- .chat-content {
- background-color: pink;
- }
- // img {
- // border-radius: 500px;
- // height: 2.5rem;
- // width: 2.5rem;
- // margin-right: 1.5rem;
- // }
-
- // ion-label {
- // h1 {
- // font-size: 1rem;
- // }
- // }
-}
diff --git a/03_source/mobile_notworking.del/src/components/ChatRepliedQuote.jsx b/03_source/mobile_notworking.del/src/components/ChatRepliedQuote.jsx
deleted file mode 100644
index 6365556..0000000
--- a/03_source/mobile_notworking.del/src/components/ChatRepliedQuote.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-const Quote = ({ message, contact, repliedMessage }) => (
-
-
{contact.name}
-
{repliedMessage.preview}
-
-);
-
-export const ChatRepliedQuote = ({ message, contact, repliedMessage }) => {
- if (message.reply && repliedMessage) {
- return
;
- } else {
- return '';
- }
-};
diff --git a/03_source/mobile_notworking.del/src/components/ContactModal.jsx b/03_source/mobile_notworking.del/src/components/ContactModal.jsx
deleted file mode 100644
index 53e68c7..0000000
--- a/03_source/mobile_notworking.del/src/components/ContactModal.jsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import {
- IonButton,
- IonButtons,
- IonContent,
- IonHeader,
- IonItem,
- IonLabel,
- IonList,
- IonTitle,
- IonToolbar,
-} from '@ionic/react';
-import { ContactStore } from '../store';
-import { getContacts } from '../store/Selectors';
-
-import './ContactModal.scss';
-
-const ContactModal = ({ close }) => {
- const contacts = ContactStore.useState(getContacts);
-
- return (
-
-
-
- New Chat
-
-
- Cancel
-
-
-
-
-
-
-
- {contacts.map(contact => {
- return (
-
-
-
- {contact.name}
- Available
-
-
- );
- })}
-
-
-
- );
-};
-
-export default ContactModal;
diff --git a/03_source/mobile_notworking.del/src/components/ContactModal.scss b/03_source/mobile_notworking.del/src/components/ContactModal.scss
deleted file mode 100644
index 0ed4a84..0000000
--- a/03_source/mobile_notworking.del/src/components/ContactModal.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-.contact-item {
- img {
- border-radius: 500px;
- height: 2.5rem;
- width: 2.5rem;
- margin-right: 1.5rem;
- }
-
- ion-label {
- h1 {
- font-size: 1rem;
- }
- }
-}
diff --git a/03_source/mobile_notworking.del/src/components/HKPartyIonArchiveIcon/index.tsx b/03_source/mobile_notworking.del/src/components/HKPartyIonArchiveIcon/index.tsx
deleted file mode 100644
index 8dc349e..0000000
--- a/03_source/mobile_notworking.del/src/components/HKPartyIonArchiveIcon/index.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import { IonIcon } from '@ionic/react';
-import { trashOutline } from 'ionicons/icons';
-
-const HKPartyIonDeleteIcon = ({ ...props }) => {
- return ;
-};
-
-export default HKPartyIonDeleteIcon;
diff --git a/03_source/mobile_notworking.del/src/components/HKPartyIonDeleteIcon/index.tsx b/03_source/mobile_notworking.del/src/components/HKPartyIonDeleteIcon/index.tsx
deleted file mode 100644
index 8dc349e..0000000
--- a/03_source/mobile_notworking.del/src/components/HKPartyIonDeleteIcon/index.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import { IonIcon } from '@ionic/react';
-import { trashOutline } from 'ionicons/icons';
-
-const HKPartyIonDeleteIcon = ({ ...props }) => {
- return ;
-};
-
-export default HKPartyIonDeleteIcon;
diff --git a/03_source/mobile_notworking.del/src/components/HKPartyIonHeader/index.tsx b/03_source/mobile_notworking.del/src/components/HKPartyIonHeader/index.tsx
deleted file mode 100644
index eb2d591..0000000
--- a/03_source/mobile_notworking.del/src/components/HKPartyIonHeader/index.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { IonHeader } from '@ionic/react';
-
-const HKPartyIonHeader = ({ children, ...props }) => {
- return (
-
- {/* */}
- {children}
- {/* */}
-
- );
-};
-
-export default HKPartyIonHeader;
diff --git a/03_source/mobile_notworking.del/src/components/HKPartyIonPage/index.tsx b/03_source/mobile_notworking.del/src/components/HKPartyIonPage/index.tsx
deleted file mode 100644
index dbe241d..0000000
--- a/03_source/mobile_notworking.del/src/components/HKPartyIonPage/index.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { IonPage } from '@ionic/react';
-
-const HKPartyIonPage = ({ children, ...props }) => {
- return (
-
- {/* */}
- {children}
- {/* */}
-
- );
-};
-
-export default HKPartyIonPage;
diff --git a/03_source/mobile_notworking.del/src/components/HKPartyIonToolbar/index.tsx b/03_source/mobile_notworking.del/src/components/HKPartyIonToolbar/index.tsx
deleted file mode 100644
index 77e6fc5..0000000
--- a/03_source/mobile_notworking.del/src/components/HKPartyIonToolbar/index.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import { IonToolbar } from '@ionic/react';
-
-const HKPartyIonToolbar = ({ children, ...props }) => {
- return (
-
- {/* */}
-
- {children}
-
- {/* */}
-
- );
-};
-
-export default HKPartyIonToolbar;
diff --git a/03_source/mobile_notworking.del/src/components/HomeOrTutorial.tsx b/03_source/mobile_notworking.del/src/components/HomeOrTutorial.tsx
deleted file mode 100644
index 24de34c..0000000
--- a/03_source/mobile_notworking.del/src/components/HomeOrTutorial.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React from 'react';
-import { Redirect } from 'react-router';
-import { connect } from '../data/connect';
-
-interface StateProps {
- hasSeenTutorial: boolean;
-}
-
-const HomeOrTutorial: React.FC = ({ hasSeenTutorial }) => {
- return hasSeenTutorial ? : ;
-};
-
-export default connect<{}, StateProps, {}>({
- mapStateToProps: state => ({
- hasSeenTutorial: state.user.hasSeenTutorial,
- }),
- component: HomeOrTutorial,
-});
diff --git a/03_source/mobile_notworking.del/src/components/Loading/index.tsx b/03_source/mobile_notworking.del/src/components/Loading/index.tsx
deleted file mode 100644
index ada69b0..0000000
--- a/03_source/mobile_notworking.del/src/components/Loading/index.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { IonContent, IonPage, IonSpinner, IonText } from '@ionic/react';
-
-function Loading() {
- return (
-
-
-
-
- {'Loading'}
-
-
-
- );
-}
-
-export default Loading;
diff --git a/03_source/mobile_notworking.del/src/components/Map.tsx b/03_source/mobile_notworking.del/src/components/Map.tsx
deleted file mode 100644
index ba581c3..0000000
--- a/03_source/mobile_notworking.del/src/components/Map.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import React, { useEffect, useRef } from 'react';
-import { Location } from '../models/Location';
-
-interface MapProps {
- locations: Location[];
- mapCenter: Location;
-}
-
-const Map: React.FC = ({ mapCenter, locations }) => {
- const mapEle = useRef(null);
- const map = useRef();
-
- useEffect(() => {
- map.current = new google.maps.Map(mapEle.current, {
- center: {
- lat: mapCenter.lat,
- lng: mapCenter.lng,
- },
- zoom: 16,
- });
-
- addMarkers();
-
- google.maps.event.addListenerOnce(map.current, 'idle', () => {
- if (mapEle.current) {
- mapEle.current.classList.add('show-map');
- }
- });
-
- function addMarkers() {
- locations.forEach(markerData => {
- let infoWindow = new google.maps.InfoWindow({
- content: `${markerData.name} `,
- });
-
- let marker = new google.maps.Marker({
- position: new google.maps.LatLng(markerData.lat, markerData.lng),
- map: map.current!,
- title: markerData.name,
- });
-
- marker.addListener('click', () => {
- infoWindow.open(map.current!, marker);
- });
- });
- }
- }, [mapCenter, locations]);
-
- return
;
-};
-
-export default Map;
diff --git a/03_source/mobile_notworking.del/src/components/Menu.css b/03_source/mobile_notworking.del/src/components/Menu.css
deleted file mode 100644
index 1740a2f..0000000
--- a/03_source/mobile_notworking.del/src/components/Menu.css
+++ /dev/null
@@ -1,88 +0,0 @@
-ion-menu ion-content {
- --padding-top: 20px;
- --padding-bottom: 20px;
-
- --background: var(--ion-item-background, var(--ion-background-color, #fff));
-}
-
-/* Remove background transitions for switching themes */
-ion-menu ion-item {
- --transition: none;
-}
-
-ion-item.selected {
- --color: var(--ion-color-primary);
-}
-
-/*
- * Material Design Menu
-*/
-ion-menu.md ion-list {
- padding: 20px 0;
-}
-
-ion-menu.md ion-list-header {
- padding-left: 18px;
- padding-right: 18px;
-
- text-transform: uppercase;
- letter-spacing: 0.1em;
- font-size: min(0.875rem, 32px);
- font-weight: 450;
-}
-
-ion-menu.md ion-item {
- --padding-start: 18px;
-
- margin-right: 10px;
-
- border-radius: 0 50px 50px 0;
-
- font-weight: 500;
-}
-
-ion-menu.md ion-item.selected {
- --background: rgba(var(--ion-color-primary-rgb), 0.14);
-}
-
-ion-menu.md ion-item.selected ion-icon {
- color: var(--ion-color-primary);
-}
-
-ion-menu.md ion-list-header,
-ion-menu.md ion-item ion-icon {
- color: var(--ion-color-step-650, #5f6368);
-}
-
-ion-menu.md ion-list:not(:last-of-type) {
- border-bottom: 1px solid var(--ion-color-step-150, #d7d8da);
-}
-
-/*
- * iOS Menu
-*/
-ion-menu.ios ion-list-header {
- padding-left: 16px;
- padding-right: 16px;
-
- margin-bottom: 8px;
- font-size: clamp(22px, 1.375rem, 40px);
-}
-
-ion-menu.ios ion-list {
- padding: 20px 0 0;
-}
-
-ion-menu.ios ion-item {
- --padding-start: 16px;
- --min-height: 50px;
-}
-
-ion-menu.ios ion-item ion-icon {
- font-size: 24px;
- color: #73849a;
-}
-
-ion-menu.ios ion-item.selected ion-icon {
- color: var(--ion-color-primary);
-}
diff --git a/03_source/mobile_notworking.del/src/components/Menu.tsx b/03_source/mobile_notworking.del/src/components/Menu.tsx
deleted file mode 100644
index 98ff2e6..0000000
--- a/03_source/mobile_notworking.del/src/components/Menu.tsx
+++ /dev/null
@@ -1,138 +0,0 @@
-import React from 'react';
-import { RouteComponentProps, useLocation, withRouter } from 'react-router';
-
-import {
- IonContent,
- IonIcon,
- IonItem,
- IonLabel,
- IonList,
- IonListHeader,
- IonMenu,
- IonMenuToggle,
- IonToggle,
-} from '@ionic/react';
-import {
- calendarOutline,
- hammer,
- help,
- informationCircleOutline,
- logIn,
- logOut,
- mapOutline,
- moonOutline,
- peopleOutline,
- person,
- personAdd,
-} from 'ionicons/icons';
-
-import { connect } from '../data/connect';
-import { setDarkMode } from '../data/user/user.actions';
-
-import './Menu.css';
-
-const routes = {
- appPages: [
- { title: 'Schedule', path: '/tabs/schedule', icon: calendarOutline },
- { title: 'Speakers', path: '/tabs/speakers', icon: peopleOutline },
- { title: 'Map', path: '/tabs/map', icon: mapOutline },
- { title: 'About', path: '/tabs/about', icon: informationCircleOutline },
- { title: 'Message', path: '/tabs/message', icon: informationCircleOutline },
- { title: 'Profile', path: '/tabs/profile', icon: informationCircleOutline },
- ],
- loggedInPages: [
- { title: 'Account', path: '/account', icon: person },
- { title: 'Support', path: '/support', icon: help },
- { title: 'Logout', path: '/logout', icon: logOut },
- ],
- loggedOutPages: [
- { title: 'Login', path: '/login', icon: logIn },
- { title: 'Support', path: '/support', icon: help },
- { title: 'Signup', path: '/signup', icon: personAdd },
- ],
-};
-
-interface Pages {
- title: string;
- path: string;
- icon: string;
- routerDirection?: string;
-}
-interface StateProps {
- darkMode: boolean;
- isAuthenticated: boolean;
- menuEnabled: boolean;
-}
-
-interface DispatchProps {
- setDarkMode: typeof setDarkMode;
-}
-
-interface MenuProps extends RouteComponentProps, StateProps, DispatchProps {}
-
-const Menu: React.FC = ({ darkMode, history, isAuthenticated, setDarkMode, menuEnabled }) => {
- const location = useLocation();
-
- function renderlistItems(list: Pages[]) {
- return list
- .filter(route => !!route.path)
- .map(p => (
-
-
-
- {p.title}
-
-
- ));
- }
-
- return (
-
-
-
- Conference
- {renderlistItems(routes.appPages)}
-
-
- Account
- {isAuthenticated ? renderlistItems(routes.loggedInPages) : renderlistItems(routes.loggedOutPages)}
-
-
- setDarkMode(!darkMode)}>
- Dark Mode
-
-
-
-
- Tutorial
- {
- history.push('/tutorial');
- }}
- >
-
- Show Tutorial
-
-
-
-
- );
-};
-
-export default connect<{}, StateProps, {}>({
- mapStateToProps: state => ({
- darkMode: state.user.darkMode,
- isAuthenticated: state.user.isLoggedin,
- menuEnabled: state.data.menuEnabled,
- }),
- mapDispatchToProps: {
- setDarkMode,
- },
- component: withRouter(Menu),
-});
diff --git a/03_source/mobile_notworking.del/src/components/RedirectToLogin.tsx b/03_source/mobile_notworking.del/src/components/RedirectToLogin.tsx
deleted file mode 100644
index 9c873ef..0000000
--- a/03_source/mobile_notworking.del/src/components/RedirectToLogin.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import { IonRouterContext } from '@ionic/react';
-import React, { useContext, useEffect } from 'react';
-
-interface RedirectToLoginProps {
- setIsLoggedIn: Function;
- setUsername: Function;
-}
-
-const RedirectToLogin: React.FC = ({ setIsLoggedIn, setUsername }) => {
- const ionRouterContext = useContext(IonRouterContext);
-
- useEffect(() => {
- setIsLoggedIn(false);
- setUsername(undefined);
- ionRouterContext.push('/tabs/schedule');
-
- console.error('who call this ?');
- }, [setIsLoggedIn, setUsername]);
-
- return null;
-};
-
-export default RedirectToLogin;
diff --git a/03_source/mobile_notworking.del/src/components/ReplyTo/index.jsx b/03_source/mobile_notworking.del/src/components/ReplyTo/index.jsx
deleted file mode 100644
index 7f7010a..0000000
--- a/03_source/mobile_notworking.del/src/components/ReplyTo/index.jsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import { CreateAnimation, IonButton, IonCol, IonIcon, IonLabel, IonRow } from '@ionic/react';
-import { closeCircleOutline } from 'ionicons/icons';
-import { useEffect, useState } from 'react';
-
-// import './style.css';
-const ReplyTo = ({ contact, replyToMessage = false, replyToAnimationRef, setReplyToMessage, messageSent }) => {
- const [cancellingReplyTo, setCancellingReplyTo] = useState(false);
-
- useEffect(() => {
- messageSent && cancelReplyTo();
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [messageSent]);
-
- const slideAnimation = {
- property: 'transform',
- fromValue: 'translateY(100px)',
- toValue: 'translateY(0px)',
- };
-
- const replyToAnimation = {
- duration: 300,
- direction: !cancellingReplyTo ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [slideAnimation],
- easing: 'ease-in-out',
- };
-
- // Cancel the reply-to
- const cancelReplyTo = async () => {
- setCancellingReplyTo(true);
- await replyToAnimationRef.current.animation.play();
- setCancellingReplyTo(false);
- setReplyToMessage(false);
- };
-
- return (
-
-
-
- {contact}
- {replyToMessage.preview}
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default ReplyTo;
diff --git a/03_source/mobile_notworking.del/src/components/ReplyTo/style.css b/03_source/mobile_notworking.del/src/components/ReplyTo/style.css
deleted file mode 100644
index 928443f..0000000
--- a/03_source/mobile_notworking.del/src/components/ReplyTo/style.css
+++ /dev/null
@@ -1,290 +0,0 @@
-.chat-page ion-header,
-.chat-page ion-toolbar {
-
- --min-height: 3.5rem;
-}
-
-.chat-page ion-title {
-
- margin-left: -3.5rem;
-}
-
-.chat-page ion-title p {
-
- padding: 0;
- margin: 0;
-}
-
-.chat-contact {
-
- display: flex;
- flex-direction: row;
- align-content: center;
- justify-content: center;
- align-items: center;
-}
-
-.chat-contact img {
-
- height: 2rem;
- width: 2rem;
- border-radius: 500px;
-}
-
-.chat-contact-details {
-
- display: flex;
- flex-direction: column;
- margin-left: 0.5rem;
- text-align: left;
-}
-
-.chat-contact-details p {
-
- font-size: 0.9rem;
-}
-
-.chat-contact-details ion-text {
-
- font-size: 0.7rem;
- font-weight: 400;
-}
-
-.chat-bubble {
-
- border-radius: 5px;
- margin-left: 1rem;
- margin-right: 1rem;
- margin-top: 0.8rem;
-
- padding: 0.5rem;
- max-width: 80%;
- clear: both;
-
- display: flex;
- flex-direction: row;
- transition: 0.2s all linear;
-}
-
-.chat-bubble:last-child {
-
- margin-bottom: 0.8rem;
-}
-
-.bubble-sent {
-
- background-color: var(--chat-bubble-sent-color);
- float: right;
-}
-
-.bubble-received {
-
- background-color: var(--chat-bubble-received-color);
- float: left;
-}
-
-.chat-bubble p {
-
- padding: 0;
- margin: 0;
-}
-
-.chat-footer {
-
- /* background-color: rgb(22, 22, 22); */
- border-top: 1px solid rgb(47, 47, 47);
- padding-top: 0.2rem;
- padding-bottom: 1rem;
-}
-
-.chat-footer ion-textarea {
-
- /* background-color: rgb(31, 31, 31); */
- background-color: rgba(32, 32, 32, 0.1);
- /* border: 1px solid rgb(36, 36, 36); */
- color: white;
- border-radius: 25px;
- padding-left: 0.5rem;
- caret-color: var(--ion-color-primary);
-}
-
-.chat-footer ion-icon {
-
- font-size: 1.5rem;
- margin-top: 0.2rem;
-}
-
-.chat-input-container {
-
- width: 70%;
- margin-right: 0.75rem;
-}
-
-.chat-send-button {
-
- margin: 0 !important;
- padding: 0 !important;
- position: absolute;
- right: 17px;
- margin-top: -0.2rem !important;
-
- display: flex;
- flex-direction: row;
- align-content: center;
- align-items: center;
- justify-content: center;
-}
-
-.chat-send-button ion-icon {
-
- color: white;
- background-color: var(--ion-color-primary);
- font-size: 1.1rem;
- border-radius: 500px;
- padding: 0.5rem;
-}
-
-.chat-time {
-
- color: rgb(165, 165, 165);
- font-size: 0.75rem;
- right: 0;
- bottom: 0 !important;
- margin: 0;
- padding: 0;
- margin-top: 5px;
-}
-
-.bubble-arrow {
-
- position: absolute;
- float: left;
- left: 6px;
- margin-top: -8px;
- /* top: 0px; */
-}
-
-.bubble-arrow.alt {
-
- position: relative;
- bottom: 0px;
- left: auto;
- right: -3px;
- float: right;
-}
-
-.bubble-arrow:after {
-
- content: "";
- position: absolute;
- border-top: 15px solid var(--chat-bubble-received-color);
- border-left: 15px solid transparent;
- border-radius: 4px 0 0 0px;
- width: 0;
- height: 0;
-}
-
-.bubble-arrow.alt:after {
-
- border-top: 15px solid var(--chat-bubble-sent-color);
- transform: scaleX(-1);
-}
-
-.chat-reply-to-row {
-
- bottom: 70px !important;
- position: absolute;
-
- border-left: 4px solid rgb(224, 176, 18);
- width: 100%;
- background-color: rgb(22, 22, 22);
- border-top: 1px solid rgb(47, 47, 47);
- padding: 0.5rem;
- padding-bottom: 0.8rem;
-}
-
-.chat-reply-to-container {
-
- display: flex;
- flex-direction: column;
-}
-
-.chat-reply-to-name {
-
- color: rgb(224, 176, 18);
- font-weight: 500;
- margin-bottom: 0.5rem;
-}
-
-.chat-reply-to-message {
-
- font-size: 0.8rem;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.all-chats {
-
-
-}
-
-.chat-bottom-details {
-
- display: flex;
- flex-direction: row;
- width: 100%;
- align-content: center;
- align-items: center;
- justify-content: flex-end;
- margin-top: 0.4rem;
-}
-
-.chat-bottom-details ion-icon {
-
- font-size: 0.6rem;
- color: grey;
- margin-left: 0.5rem;
- margin-top: 0.05rem;
-}
-
-.chat-bottom-details span {
-
- margin: 0;
- padding: 0;
- font-size: 0.75rem;
- color: rgb(190, 190, 190);
-}
-
-.in-chat-reply-to-container {
-
- /* background-color: rgba(0, 0, 0, 0.2); */
- border-left: 3px solid rgb(224, 176, 18);
- height: fit-content;
- padding: 0.5rem;
- border-radius: 5px;
- margin-bottom: 0.5rem;
-}
-
-.in-chat-reply-to-container h1 {
-
- margin: 0;
- padding: 0;
- color: rgb(224, 176, 18);
- font-size: 0.8rem;
-}
-
-.in-chat-reply-to-container p {
-
- color: rgb(167, 167, 167);
- font-size: 0.8rem;
-}
-
-.bottom-container {
-
- position: absolute;
- bottom: 4.5rem;
- height: 5rem;
- background-color: red;
- width: 100%;
-}
\ No newline at end of file
diff --git a/03_source/mobile_notworking.del/src/components/SessionList.tsx b/03_source/mobile_notworking.del/src/components/SessionList.tsx
deleted file mode 100644
index 8a25ea2..0000000
--- a/03_source/mobile_notworking.del/src/components/SessionList.tsx
+++ /dev/null
@@ -1,102 +0,0 @@
-import { AlertButton, IonAlert, IonItemDivider, IonItemGroup, IonLabel, IonList, IonListHeader } from '@ionic/react';
-import React, { useCallback, useEffect, useRef, useState } from 'react';
-import { connect } from '../data/connect';
-import { addFavorite, removeFavorite } from '../data/sessions/sessions.actions';
-import { Schedule, Session } from '../models/Schedule';
-import SessionListItem from './SessionListItem';
-
-interface OwnProps {
- schedule: Schedule;
- listType: 'all' | 'favorites';
- hide: boolean;
-}
-
-interface StateProps {
- favoriteSessions: number[];
-}
-
-interface DispatchProps {
- addFavorite: typeof addFavorite;
- removeFavorite: typeof removeFavorite;
-}
-
-interface SessionListProps extends OwnProps, StateProps, DispatchProps {}
-
-const SessionList: React.FC = ({
- addFavorite,
- removeFavorite,
- favoriteSessions,
- hide,
- schedule,
- listType,
-}) => {
- const scheduleListRef = useRef(null);
- const [showAlert, setShowAlert] = useState(false);
- const [alertHeader, setAlertHeader] = useState('');
- const [alertMessage, setAlertMessage] = useState('');
- const [alertButtons, setAlertButtons] = useState<(AlertButton | string)[]>([]);
-
- const handleShowAlert = useCallback((header: string, message: string, buttons: AlertButton[]) => {
- setAlertHeader(header);
- setAlertMessage(message);
- setAlertButtons(buttons);
- setShowAlert(true);
- }, []);
-
- useEffect(() => {
- if (scheduleListRef.current) {
- scheduleListRef.current.closeSlidingItems();
- }
- }, [hide]);
-
- if (schedule.groups.length === 0 && !hide) {
- return (
-
- No Sessions Found
-
- );
- }
-
- return (
- <>
-
- {schedule.groups.map((group, index: number) => (
-
-
- {group.time}
-
- {group.sessions.map((session: Session, sessionIndex: number) => (
- -1}
- onAddFavorite={addFavorite}
- onRemoveFavorite={removeFavorite}
- key={`group-${index}-${sessionIndex}`}
- session={session}
- listType={listType}
- />
- ))}
-
- ))}
-
- setShowAlert(false)}
- >
- >
- );
-};
-
-export default connect({
- mapStateToProps: state => ({
- favoriteSessions: state.data.favorites,
- }),
- mapDispatchToProps: {
- addFavorite,
- removeFavorite,
- },
- component: SessionList,
-});
diff --git a/03_source/mobile_notworking.del/src/components/SessionListFilter.css b/03_source/mobile_notworking.del/src/components/SessionListFilter.css
deleted file mode 100644
index 4516c7a..0000000
--- a/03_source/mobile_notworking.del/src/components/SessionListFilter.css
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Material Design
- */
-
-.md .session-list-filter ion-toolbar ion-button {
- text-transform: capitalize;
- letter-spacing: 0;
-}
-
-.md .session-list-filter ion-checkbox {
- --checkbox-background-checked: transparent;
- --border-color: transparent;
- --border-color-checked: transparent;
- --checkmark-color: var(--ion-color-primary);
-}
-
-.md .session-list-filter ion-list {
- background: inherit;
-}
-
-/*
- * iOS
- */
-
-.ios .session-list-filter ion-list-header {
- margin-top: 10px;
-}
-
-.ios .session-list-filter ion-checkbox {
- color: var(--ion-color-primary);
-}
diff --git a/03_source/mobile_notworking.del/src/components/SessionListFilter.tsx b/03_source/mobile_notworking.del/src/components/SessionListFilter.tsx
deleted file mode 100644
index a0683f6..0000000
--- a/03_source/mobile_notworking.del/src/components/SessionListFilter.tsx
+++ /dev/null
@@ -1,152 +0,0 @@
-import React from 'react';
-
-import { getMode } from '@ionic/core';
-import {
- IonButton,
- IonButtons,
- IonCheckbox,
- IonContent,
- IonFooter,
- IonHeader,
- IonIcon,
- IonItem,
- IonList,
- IonListHeader,
- IonTitle,
- IonToolbar,
-} from '@ionic/react';
-import {
- call,
- cog,
- colorPalette,
- compass,
- construct,
- document,
- hammer,
- logoAngular,
- logoIonic,
- restaurant,
-} from 'ionicons/icons';
-
-import './SessionListFilter.css';
-
-import { connect } from '../data/connect';
-import { updateFilteredTracks } from '../data/sessions/sessions.actions';
-
-interface OwnProps {
- onDismissModal: () => void;
-}
-
-interface StateProps {
- allTracks: string[];
- filteredTracks: string[];
-}
-
-interface DispatchProps {
- updateFilteredTracks: typeof updateFilteredTracks;
-}
-
-type SessionListFilterProps = OwnProps & StateProps & DispatchProps;
-
-const SessionListFilter: React.FC = ({
- allTracks,
- filteredTracks,
- onDismissModal,
- updateFilteredTracks,
-}) => {
- const ios = getMode() === 'ios';
-
- const toggleTrackFilter = (track: string) => {
- if (filteredTracks.indexOf(track) > -1) {
- updateFilteredTracks(filteredTracks.filter(x => x !== track));
- } else {
- updateFilteredTracks([...filteredTracks, track]);
- }
- };
-
- const handleDeselectAll = () => {
- updateFilteredTracks([]);
- };
-
- const handleSelectAll = () => {
- updateFilteredTracks([...allTracks]);
- };
-
- const iconMap: { [key: string]: any } = {
- Angular: logoAngular,
- Documentation: document,
- Food: restaurant,
- Ionic: logoIonic,
- Tooling: hammer,
- Design: colorPalette,
- Services: cog,
- Workshop: construct,
- Navigation: compass,
- Communication: call,
- };
-
- return (
- <>
-
-
-
- {ios && Cancel }
- {!ios && Reset }
-
-
- Filter Sessions
-
-
-
- Done
-
-
-
-
-
-
-
- Tracks
-
- {allTracks.map(track => (
-
- {ios && }
- toggleTrackFilter(track)}
- checked={filteredTracks.indexOf(track) !== -1}
- color="primary"
- value={track}
- >
- {track}
-
-
- ))}
-
-
-
- {ios && (
-
-
-
- Deselect All
-
-
- Select All
-
-
-
- )}
- >
- );
-};
-
-export default connect({
- mapStateToProps: state => ({
- allTracks: state.data.allTracks,
- filteredTracks: state.data.filteredTracks,
- }),
- mapDispatchToProps: {
- updateFilteredTracks,
- },
- component: SessionListFilter,
-});
diff --git a/03_source/mobile_notworking.del/src/components/SessionListItem.tsx b/03_source/mobile_notworking.del/src/components/SessionListItem.tsx
deleted file mode 100644
index e6bee15..0000000
--- a/03_source/mobile_notworking.del/src/components/SessionListItem.tsx
+++ /dev/null
@@ -1,106 +0,0 @@
-import {
- AlertButton,
- IonItem,
- IonItemOption,
- IonItemOptions,
- IonItemSliding,
- IonLabel,
- useIonToast,
-} from '@ionic/react';
-import React, { useRef } from 'react';
-import { Session } from '../models/Schedule';
-
-interface SessionListItemProps {
- session: Session;
- listType: 'all' | 'favorites';
- onAddFavorite: (id: number) => void;
- onRemoveFavorite: (id: number) => void;
- onShowAlert: (header: string, message: string, buttons: AlertButton[]) => void;
- isFavorite: boolean;
-}
-
-const SessionListItem: React.FC = ({
- isFavorite,
- onAddFavorite,
- onRemoveFavorite,
- onShowAlert,
- session,
- listType,
-}) => {
- const [presentToast] = useIonToast();
- const ionItemSlidingRef = useRef(null);
-
- const dismissAlert = () => {
- ionItemSlidingRef.current && ionItemSlidingRef.current.close();
- };
-
- const removeFavoriteSession = (title: string) => {
- onAddFavorite(session.id);
- onShowAlert(title, 'Would you like to remove this session from your favorites?', [
- {
- text: 'Cancel',
- handler: dismissAlert,
- },
- {
- text: 'Remove',
- handler: () => {
- onRemoveFavorite(session.id);
- dismissAlert();
- },
- },
- ]);
- };
-
- const addFavoriteSession = async () => {
- if (isFavorite) {
- // Prompt to remove favorite
- removeFavoriteSession('Favorite already added');
- } else {
- // Add as a favorite
- onAddFavorite(session.id);
-
- // Close the open item
- ionItemSlidingRef.current && ionItemSlidingRef.current.close();
-
- // Create a toast
- presentToast({
- message: `${session.name} was successfully added as a favorite.`,
- duration: 3000,
- buttons: [
- {
- text: 'Close',
- role: 'cancel',
- },
- ],
- });
- }
- };
-
- return (
-
-
-
- {session.name}
-
- {session.timeStart}—
- {session.timeStart}—
- {session.location}
-
-
-
-
- {listType === 'favorites' ? (
- removeFavoriteSession('Remove Favorite')}>
- Remove
-
- ) : (
-
- Favorite
-
- )}
-
-
- );
-};
-
-export default React.memo(SessionListItem);
diff --git a/03_source/mobile_notworking.del/src/components/ShareSocialFab.tsx b/03_source/mobile_notworking.del/src/components/ShareSocialFab.tsx
deleted file mode 100644
index e9b5b7f..0000000
--- a/03_source/mobile_notworking.del/src/components/ShareSocialFab.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import { IonFab, IonFabButton, IonFabList, IonIcon, IonLoading } from '@ionic/react';
-import { logoFacebook, logoInstagram, logoTwitter, logoVimeo, shareSocial } from 'ionicons/icons';
-import React, { useState } from 'react';
-
-const ShareSocialFab: React.FC = () => {
- const [loadingMessage, setLoadingMessage] = useState('');
- const [showLoading, setShowLoading] = useState(false);
-
- const openSocial = (network: string) => {
- setLoadingMessage(`Posting to ${network}`);
- setShowLoading(true);
- };
-
- return (
- <>
- setShowLoading(false)}
- />
-
-
-
-
-
- openSocial('Vimeo')}>
-
-
- openSocial('Instagram')}>
-
-
- openSocial('Twitter')}>
-
-
- openSocial('Facebook')}>
-
-
-
-
- >
- );
-};
-
-export default ShareSocialFab;
diff --git a/03_source/mobile_notworking.del/src/components/SpeakerItem.tsx b/03_source/mobile_notworking.del/src/components/SpeakerItem.tsx
deleted file mode 100644
index 24da1a5..0000000
--- a/03_source/mobile_notworking.del/src/components/SpeakerItem.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import { IonAvatar, IonCard, IonCardContent, IonCardHeader, IonItem, IonLabel, IonList } from '@ionic/react';
-import React from 'react';
-import { Session } from '../models/Schedule';
-import { Speaker } from '../models/Speaker';
-
-interface SpeakerItemProps {
- speaker: Speaker;
- sessions: Session[];
-}
-
-const SpeakerItem: React.FC = ({ speaker, sessions }) => {
- return (
- <>
-
-
-
-
-
-
-
- {speaker.name}
- {speaker.title}
-
-
-
-
-
-
- {sessions.map(session => (
-
-
- {session.name}
-
-
- ))}
-
-
- About {speaker.name}
-
-
-
-
-
- >
- );
-};
-
-export default SpeakerItem;
diff --git a/03_source/mobile_notworking.del/src/constants.ts b/03_source/mobile_notworking.del/src/constants.ts
deleted file mode 100644
index 015284e..0000000
--- a/03_source/mobile_notworking.del/src/constants.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-const IONIC_DEFAULT_AVATAR = 'https://ionicframework.com/docs/img/demos/avatar.svg';
-
-export default { IONIC_DEFAULT_AVATAR };
diff --git a/03_source/mobile_notworking.del/src/contexts/SessionProvider.tsx b/03_source/mobile_notworking.del/src/contexts/SessionProvider.tsx
deleted file mode 100644
index 114457b..0000000
--- a/03_source/mobile_notworking.del/src/contexts/SessionProvider.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import { Session } from '@supabase/supabase-js';
-import React, { createContext, useContext, useState } from 'react';
-import { supabase } from '../supabaseClient';
-
-export const SessionContext = createContext<{
- session: Session | null;
-} | null>(null);
-
-export const SessionProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
- const [session] = useState(() => supabase.auth.session());
-
- // const value = useMemo(() => ({ session, setSession }), [session, setSession]);
- const value = { session };
-
- return {children} ;
-};
-
-export const useSession = () => {
- const context = useContext(SessionContext);
-
- if (!context) {
- throw new Error('useSession must be used within a SessionProvider');
- }
-
- return context;
-};
diff --git a/03_source/mobile_notworking.del/src/data/AppContext.tsx b/03_source/mobile_notworking.del/src/data/AppContext.tsx
deleted file mode 100644
index ca5b05f..0000000
--- a/03_source/mobile_notworking.del/src/data/AppContext.tsx
+++ /dev/null
@@ -1,79 +0,0 @@
-import { Session } from '@supabase/supabase-js';
-import React, { createContext, PropsWithChildren, useEffect, useReducer, useState } from 'react';
-import { useListPartyEventSummaries } from '../hooks/useListPartyEventSummaries';
-import { supabase } from '../supabaseClient';
-import { AppState, initialState, reducers } from './state';
-
-export interface AppContextState {
- state: AppState;
- dispatch: React.Dispatch;
- session: Session | null;
-}
-
-export const AppContext = createContext({
- state: initialState,
- dispatch: () => undefined,
- session: null,
-});
-
-export const AppContextProvider: React.FC = ({ children }) => {
- const [store, dispatch] = useReducer(reducers, initialState);
- const [party_event_summaries] = useListPartyEventSummaries();
-
- const [session, setSession] = useState(null);
- const [profile, setProfile] = useState<{} | null>(null);
-
- const [showBottomTabBar, setShowBottomTabBar] = useState(true);
-
- const [helloworld, setHelloworld] = useState('');
-
- function getProfileById(id) {
- return supabase.from('profiles').select('*').filter('id', 'in', `("${id}")`);
- }
-
- useEffect(() => {
- console.log({ profile });
- }, [profile]);
-
- useEffect(() => {
- const run = async () => {
- const { data } = await supabase.auth.getSession();
- setSession(data.session);
- };
-
- run();
-
- supabase.auth.onAuthStateChange((_event, session) => {
- setSession(session);
- if (session && session.user) {
- const { id } = session.user;
- getProfileById(id).then(({ data }) => {
- setProfile(data[0]);
- });
- }
- });
- }, []);
-
- useEffect(() => {
- console.log('helloworld from appcontext');
- }, [helloworld]);
-
- return (
-
- {children}
-
- );
-};
diff --git a/03_source/mobile_notworking.del/src/data/combineReducers.ts b/03_source/mobile_notworking.del/src/data/combineReducers.ts
deleted file mode 100644
index 3404a0c..0000000
--- a/03_source/mobile_notworking.del/src/data/combineReducers.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-interface R {
- [key: string]: (...args: any) => any;
-}
-
-export function combineReducers(reducers: R) {
- type keys = keyof typeof reducers;
- type returnType = { [K in keys]: ReturnType<(typeof reducers)[K]> };
- const combinedReducer = (state: any, action: any) => {
- const newState: returnType = {} as any;
- const keys = Object.keys(reducers);
- keys.forEach(key => {
- const result = reducers[key](state[key], action);
- newState[key as keys] = result || state[key];
- });
- return newState;
- };
- return combinedReducer;
-}
diff --git a/03_source/mobile_notworking.del/src/data/connect.tsx b/03_source/mobile_notworking.del/src/data/connect.tsx
deleted file mode 100644
index 50016c2..0000000
--- a/03_source/mobile_notworking.del/src/data/connect.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import React, { useContext, useMemo } from 'react';
-import { DispatchObject } from '../util/types';
-import { AppContext } from './AppContext';
-import { AppState } from './state';
-
-interface ConnectParams {
- mapStateToProps?: (state: AppState, props: TOwnProps) => TStateProps;
- mapDispatchToProps?: TDispatchProps;
- component: React.ComponentType;
-}
-
-export function connect({
- mapStateToProps = () => ({} as TStateProps),
- mapDispatchToProps = {} as TDispatchProps,
- component,
-}: ConnectParams): React.FunctionComponent {
- const Connect = (ownProps: TOwnProps) => {
- const context = useContext(AppContext);
-
- const dispatchFuncs = useMemo(() => {
- const dispatchFuncs: { [key: string]: any } = {};
- if (mapDispatchToProps) {
- Object.keys(mapDispatchToProps).forEach(key => {
- const oldFunc = (mapDispatchToProps as any)[key];
- const newFunc = (...args: any) => {
- const dispatchFunc = oldFunc(...args);
- if (typeof dispatchFunc === 'object') {
- context.dispatch(dispatchFunc);
- } else {
- const result = dispatchFunc(context.dispatch);
- if (typeof result === 'object' && result.then) {
- result.then((dispatchObject?: DispatchObject) => {
- if (dispatchObject && dispatchObject.type) {
- context.dispatch(dispatchObject);
- }
- });
- }
- }
- };
- dispatchFuncs[key] = newFunc;
- });
- }
- return dispatchFuncs;
- // eslint-disable-next-line
- }, [mapDispatchToProps]);
-
- const props = useMemo(() => {
- return Object.assign({}, ownProps, mapStateToProps(context.state, ownProps), dispatchFuncs);
- // eslint-disable-next-line
- }, [ownProps, context.state]);
-
- return React.createElement(component, props);
- };
- return React.memo(Connect as any);
-}
diff --git a/03_source/mobile_notworking.del/src/data/dataApi.ts b/03_source/mobile_notworking.del/src/data/dataApi.ts
deleted file mode 100644
index 105caaa..0000000
--- a/03_source/mobile_notworking.del/src/data/dataApi.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import { Preferences as Storage } from '@capacitor/preferences';
-import { Location } from '../models/Location';
-import { Schedule, Session } from '../models/Schedule';
-import { Speaker } from '../models/Speaker';
-
-const dataUrl = '/assets/data/data.json';
-const locationsUrl = '/assets/data/locations.json';
-
-const HAS_LOGGED_IN = 'hasLoggedIn';
-const HAS_SEEN_TUTORIAL = 'hasSeenTutorial';
-const USERNAME = 'username';
-
-export const getConfData = async () => {
- const response = await Promise.all([fetch(dataUrl), fetch(locationsUrl)]);
- const responseData = await response[0].json();
- const schedule = responseData.schedule[0] as Schedule;
- const sessions = parseSessions(schedule);
- const speakers = responseData.speakers as Speaker[];
- const locations = (await response[1].json()) as Location[];
- const allTracks = sessions
- .reduce((all, session) => all.concat(session.tracks), [] as string[])
- .filter((trackName, index, array) => array.indexOf(trackName) === index)
- .sort();
-
- const data = {
- schedule,
- sessions,
- locations,
- speakers,
- allTracks,
- filteredTracks: [...allTracks],
- };
- return data;
-};
-
-export const getUserData = async () => {
- const response = await Promise.all([
- Storage.get({ key: HAS_LOGGED_IN }),
- Storage.get({ key: HAS_SEEN_TUTORIAL }),
- Storage.get({ key: USERNAME }),
- ]);
- const isLoggedin = (await response[0].value) === 'true';
- const hasSeenTutorial = (await response[1].value) === 'true';
- const username = (await response[2].value) || undefined;
- const data = {
- isLoggedin,
- hasSeenTutorial,
- username,
- };
- return data;
-};
-
-export const setIsLoggedInData = async (isLoggedIn: boolean) => {
- await Storage.set({ key: HAS_LOGGED_IN, value: JSON.stringify(isLoggedIn) });
-};
-
-export const setHasSeenTutorialData = async (hasSeenTutorial: boolean) => {
- await Storage.set({
- key: HAS_SEEN_TUTORIAL,
- value: JSON.stringify(hasSeenTutorial),
- });
-};
-
-export const setUsernameData = async (username?: string) => {
- if (!username) {
- await Storage.remove({ key: USERNAME });
- } else {
- await Storage.set({ key: USERNAME, value: username });
- }
-};
-
-function parseSessions(schedule: Schedule) {
- const sessions: Session[] = [];
- schedule.groups.forEach(g => {
- g.sessions.forEach(s => sessions.push(s));
- });
- return sessions;
-}
diff --git a/03_source/mobile_notworking.del/src/data/selectors.ts b/03_source/mobile_notworking.del/src/data/selectors.ts
deleted file mode 100644
index 3abb35a..0000000
--- a/03_source/mobile_notworking.del/src/data/selectors.ts
+++ /dev/null
@@ -1,122 +0,0 @@
-import { createSelector } from 'reselect';
-import { Location } from '../models/Location';
-import { Schedule, ScheduleGroup, Session } from '../models/Schedule';
-import { Speaker } from '../models/Speaker';
-import { AppState } from './state';
-
-const getSchedule = (state: AppState) => {
- return state.data.schedule;
-};
-export const getSpeakers = (state: AppState) => state.data.speakers;
-const getSessions = (state: AppState) => state.data.sessions;
-const getFilteredTracks = (state: AppState) => state.data.filteredTracks;
-const getFavoriteIds = (state: AppState) => state.data.favorites;
-const getSearchText = (state: AppState) => state.data.searchText;
-
-export const getFilteredSchedule = createSelector(getSchedule, getFilteredTracks, (schedule, filteredTracks) => {
- const groups: ScheduleGroup[] = [];
- schedule.groups.forEach((group: ScheduleGroup) => {
- const sessions: Session[] = [];
- group.sessions.forEach(session => {
- session.tracks.forEach(track => {
- if (filteredTracks.indexOf(track) > -1) {
- sessions.push(session);
- }
- });
- });
- if (sessions.length) {
- const groupToAdd: ScheduleGroup = {
- time: group.time,
- sessions,
- };
- groups.push(groupToAdd);
- }
- });
-
- return {
- date: schedule.date,
- groups,
- } as Schedule;
-});
-
-export const getSearchedSchedule = createSelector(getFilteredSchedule, getSearchText, (schedule, searchText) => {
- if (!searchText) {
- return schedule;
- }
- const groups: ScheduleGroup[] = [];
- schedule.groups.forEach(group => {
- const sessions = group.sessions.filter(s => s.name.toLowerCase().indexOf(searchText.toLowerCase()) > -1);
- if (sessions.length) {
- const groupToAdd: ScheduleGroup = {
- time: group.time,
- sessions,
- };
- groups.push(groupToAdd);
- }
- });
- return {
- date: schedule.date,
- groups,
- } as Schedule;
-});
-
-export const getScheduleList = createSelector(getSearchedSchedule, schedule => schedule);
-
-export const getGroupedFavorites = createSelector(getScheduleList, getFavoriteIds, (schedule, favoriteIds) => {
- const groups: ScheduleGroup[] = [];
- schedule.groups.forEach(group => {
- const sessions = group.sessions.filter(s => favoriteIds.indexOf(s.id) > -1);
- if (sessions.length) {
- const groupToAdd: ScheduleGroup = {
- time: group.time,
- sessions,
- };
- groups.push(groupToAdd);
- }
- });
- return {
- date: schedule.date,
- groups,
- } as Schedule;
-});
-
-const getIdParam = (_state: AppState, props: any) => {
- return props.match.params['id'];
-};
-
-export const getSession = createSelector(getSessions, getIdParam, (sessions, id) => {
- return sessions.find((s: Session) => s.id === id);
-});
-
-export const getSpeaker = createSelector(getSpeakers, getIdParam, (speakers, id) =>
- speakers.find((x: Speaker) => x.id === id),
-);
-
-export const getSpeakerSessions = createSelector(getSessions, sessions => {
- const speakerSessions: { [key: string]: Session[] } = {};
-
- sessions.forEach((session: Session) => {
- session.speakerNames &&
- session.speakerNames.forEach(name => {
- if (speakerSessions[name]) {
- speakerSessions[name].push(session);
- } else {
- speakerSessions[name] = [session];
- }
- });
- });
- return speakerSessions;
-});
-
-export const mapCenter = (state: AppState) => {
- const item = state.data.locations.find((l: Location) => l.id === state.data.mapCenterId);
- if (item == null) {
- return {
- id: 1,
- name: 'Map Center',
- lat: 43.071584,
- lng: -89.38012,
- };
- }
- return item;
-};
diff --git a/03_source/mobile_notworking.del/src/data/sessions/conf.state.ts b/03_source/mobile_notworking.del/src/data/sessions/conf.state.ts
deleted file mode 100644
index b5c7628..0000000
--- a/03_source/mobile_notworking.del/src/data/sessions/conf.state.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { Location } from '../../models/Location';
-import { Schedule, Session } from '../../models/Schedule';
-import { Speaker } from '../../models/Speaker';
-export interface ConfState {
- schedule: Schedule;
- sessions: Session[];
- speakers: Speaker[];
- favorites: number[];
- locations: Location[];
- filteredTracks: string[];
- searchText?: string;
- mapCenterId?: number;
- loading?: boolean;
- allTracks: string[];
- menuEnabled: boolean;
-}
diff --git a/03_source/mobile_notworking.del/src/data/sessions/sessions.actions.ts b/03_source/mobile_notworking.del/src/data/sessions/sessions.actions.ts
deleted file mode 100644
index bab9a3b..0000000
--- a/03_source/mobile_notworking.del/src/data/sessions/sessions.actions.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { ActionType } from '../../util/types';
-import { getConfData } from '../dataApi';
-import { ConfState } from './conf.state';
-
-export const loadConfData = () => async (dispatch: React.Dispatch) => {
- dispatch(setLoading(true));
- const data = await getConfData();
- dispatch(setData(data));
- dispatch(setLoading(false));
-};
-
-export const setLoading = (isLoading: boolean) =>
- ({
- type: 'set-conf-loading',
- isLoading,
- } as const);
-
-export const setData = (data: Partial) =>
- ({
- type: 'set-conf-data',
- data,
- } as const);
-
-export const addFavorite = (sessionId: number) =>
- ({
- type: 'add-favorite',
- sessionId,
- } as const);
-
-export const removeFavorite = (sessionId: number) =>
- ({
- type: 'remove-favorite',
- sessionId,
- } as const);
-
-export const updateFilteredTracks = (filteredTracks: string[]) =>
- ({
- type: 'update-filtered-tracks',
- filteredTracks,
- } as const);
-
-export const setSearchText = (searchText?: string) =>
- ({
- type: 'set-search-text',
- searchText,
- } as const);
-
-export const setMenuEnabled = (menuEnabled: boolean) =>
- ({
- type: 'set-menu-enabled',
- menuEnabled,
- } as const);
-
-export type SessionsActions =
- | ActionType
- | ActionType
- | ActionType
- | ActionType
- | ActionType
- | ActionType
- | ActionType;
diff --git a/03_source/mobile_notworking.del/src/data/sessions/sessions.reducer.ts b/03_source/mobile_notworking.del/src/data/sessions/sessions.reducer.ts
deleted file mode 100644
index ab41af4..0000000
--- a/03_source/mobile_notworking.del/src/data/sessions/sessions.reducer.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { ConfState } from './conf.state';
-import { SessionsActions } from './sessions.actions';
-
-export const sessionsReducer = (state: ConfState, action: SessionsActions): ConfState => {
- switch (action.type) {
- case 'set-conf-loading': {
- return { ...state, loading: action.isLoading };
- }
- case 'set-conf-data': {
- return { ...state, ...action.data };
- }
- case 'add-favorite': {
- return { ...state, favorites: [...state.favorites, action.sessionId] };
- }
- case 'remove-favorite': {
- return {
- ...state,
- favorites: [...state.favorites.filter(x => x !== action.sessionId)],
- };
- }
- case 'update-filtered-tracks': {
- return { ...state, filteredTracks: action.filteredTracks };
- }
- case 'set-search-text': {
- return { ...state, searchText: action.searchText };
- }
- case 'set-menu-enabled': {
- return { ...state, menuEnabled: action.menuEnabled };
- }
- }
-};
diff --git a/03_source/mobile_notworking.del/src/data/state.ts b/03_source/mobile_notworking.del/src/data/state.ts
deleted file mode 100644
index 2d35fbc..0000000
--- a/03_source/mobile_notworking.del/src/data/state.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { combineReducers } from './combineReducers';
-import { sessionsReducer } from './sessions/sessions.reducer';
-import { userReducer } from './user/user.reducer';
-
-export const initialState: AppState = {
- data: {
- schedule: { groups: [] } as any,
- sessions: [],
- speakers: [],
- favorites: [],
- locations: [],
- allTracks: [],
- filteredTracks: [],
- mapCenterId: 0,
- loading: false,
- menuEnabled: true,
- },
- user: {
- hasSeenTutorial: false,
- darkMode: false,
- isLoggedin: false,
- loading: false,
- },
-};
-
-export const reducers = combineReducers({
- data: sessionsReducer,
- user: userReducer,
-});
-
-export type AppState = ReturnType;
diff --git a/03_source/mobile_notworking.del/src/data/user/user.actions.ts b/03_source/mobile_notworking.del/src/data/user/user.actions.ts
deleted file mode 100644
index 5a6154f..0000000
--- a/03_source/mobile_notworking.del/src/data/user/user.actions.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import { ActionType } from '../../util/types';
-import { getUserData, setHasSeenTutorialData, setIsLoggedInData, setUsernameData } from '../dataApi';
-import { UserState } from './user.state';
-
-export const loadUserData = () => async (dispatch: React.Dispatch) => {
- dispatch(setLoading(true));
- const data = await getUserData();
- dispatch(setData(data));
- dispatch(setLoading(false));
-};
-
-export const setLoading = (isLoading: boolean) =>
- ({
- type: 'set-user-loading',
- isLoading,
- } as const);
-
-export const setData = (data: Partial) =>
- ({
- type: 'set-user-data',
- data,
- } as const);
-
-export const logoutUser = () => async (dispatch: React.Dispatch) => {
- await setIsLoggedInData(false);
- dispatch(setUsername());
-};
-
-export const setIsLoggedIn = (loggedIn: boolean) => async (dispatch: React.Dispatch) => {
- await setIsLoggedInData(loggedIn);
- return {
- type: 'set-is-loggedin',
- loggedIn,
- } as const;
-};
-
-export const setUsername = (username?: string) => async (dispatch: React.Dispatch) => {
- await setUsernameData(username);
- return {
- type: 'set-username',
- username,
- } as const;
-};
-
-export const setHasSeenTutorial = (hasSeenTutorial: boolean) => async (dispatch: React.Dispatch) => {
- await setHasSeenTutorialData(hasSeenTutorial);
- return {
- type: 'set-has-seen-tutorial',
- hasSeenTutorial,
- } as const;
-};
-
-export const setDarkMode = (darkMode: boolean) =>
- ({
- type: 'set-dark-mode',
- darkMode,
- } as const);
-
-export type UserActions =
- | ActionType
- | ActionType
- | ActionType
- | ActionType
- | ActionType
- | ActionType;
diff --git a/03_source/mobile_notworking.del/src/data/user/user.reducer.ts b/03_source/mobile_notworking.del/src/data/user/user.reducer.ts
deleted file mode 100644
index 9f0247d..0000000
--- a/03_source/mobile_notworking.del/src/data/user/user.reducer.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { UserActions } from './user.actions';
-import { UserState } from './user.state';
-
-export function userReducer(state: UserState, action: UserActions): UserState {
- switch (action.type) {
- case 'set-user-loading':
- return { ...state, loading: action.isLoading };
- case 'set-user-data':
- return { ...state, ...action.data };
- case 'set-username':
- return { ...state, username: action.username };
- case 'set-has-seen-tutorial':
- return { ...state, hasSeenTutorial: action.hasSeenTutorial };
- case 'set-dark-mode':
- return { ...state, darkMode: action.darkMode };
- case 'set-is-loggedin':
- return { ...state, isLoggedin: action.loggedIn };
- }
-}
diff --git a/03_source/mobile_notworking.del/src/data/user/user.state.ts b/03_source/mobile_notworking.del/src/data/user/user.state.ts
deleted file mode 100644
index e8a1f8e..0000000
--- a/03_source/mobile_notworking.del/src/data/user/user.state.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export interface UserState {
- isLoggedin: boolean;
- username?: string;
- darkMode: boolean;
- hasSeenTutorial: boolean;
- loading: boolean;
-}
diff --git a/03_source/mobile_notworking.del/src/declarations.ts b/03_source/mobile_notworking.del/src/declarations.ts
deleted file mode 100644
index dbe667a..0000000
--- a/03_source/mobile_notworking.del/src/declarations.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export interface AppPage {
- url: string;
- icon: object;
- title: string;
-}
diff --git a/03_source/mobile_notworking.del/src/hooks/useCamera.js b/03_source/mobile_notworking.del/src/hooks/useCamera.js
deleted file mode 100644
index de50d9a..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useCamera.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Camera, CameraResultType, CameraSource } from '@capacitor/camera';
-import { Capacitor } from '@capacitor/core';
-
-export const useCamera = () => {
- const takePhoto = async () => {
- const options = {
- resultType: CameraResultType.Uri,
- source: CameraSource.Camera,
- quality: 100,
- };
- const cameraPhoto = await Camera.getPhoto(options);
- return Capacitor.convertFileSrc(cameraPhoto.webPath);
- };
-
- return {
- takePhoto,
- };
-};
diff --git a/03_source/mobile_notworking.del/src/hooks/useFriendStatus.template b/03_source/mobile_notworking.del/src/hooks/useFriendStatus.template
deleted file mode 100644
index c1f9e30..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useFriendStatus.template
+++ /dev/null
@@ -1,20 +0,0 @@
-import { useState, useEffect } from 'react';
-
-function useFriendStatus(friendID) {
- const [isOnline, setIsOnline] = useState(null);
-
- useEffect(() => {
- function handleStatusChange(status) {
- setIsOnline(status.isOnline);
- }
-
- ChatAPI.subscribeToFriendStatus(friendID, handleStatusChange);
- return () => {
- ChatAPI.unsubscribeFromFriendStatus(friendID, handleStatusChange);
- };
- });
-
- return isOnline;
-}
-
-export default useFriendStatus;
\ No newline at end of file
diff --git a/03_source/mobile_notworking.del/src/hooks/useGallery.js b/03_source/mobile_notworking.del/src/hooks/useGallery.js
deleted file mode 100644
index 7ff93ef..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useGallery.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Camera, CameraResultType, CameraSource } from '@capacitor/camera';
-import { Capacitor } from '@capacitor/core';
-
-export const useGallery = () => {
- const prompt = async () => {
- const options = {
- resultType: CameraResultType.Uri,
- source: CameraSource.Prompt,
- quality: 100,
- };
- const cameraPhoto = await Camera.getPhoto(options);
- return Capacitor.convertFileSrc(cameraPhoto.webPath);
- };
-
- return {
- prompt,
- };
-};
diff --git a/03_source/mobile_notworking.del/src/hooks/useGetPartyEventDetail.ts b/03_source/mobile_notworking.del/src/hooks/useGetPartyEventDetail.ts
deleted file mode 100644
index 8a9330d..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useGetPartyEventDetail.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { useEffect, useState } from 'react';
-
-import { supabase } from '../supabaseClient';
-
-export const useGetPartyEventDetail = ({ party_event_id }) => {
- const [party_event_detail, setPartyEventDetail] = useState(null);
-
- async function getPartyEvents() {
- let { data } = await supabase.from('view_party_event_summaries').select('*').filter('id', '=', party_event_id);
- setPartyEventDetail(data);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, [party_event_id]);
-
- return [party_event_detail];
-};
diff --git a/03_source/mobile_notworking.del/src/hooks/useGetPartyEventOrder.ts b/03_source/mobile_notworking.del/src/hooks/useGetPartyEventOrder.ts
deleted file mode 100644
index 7740e30..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useGetPartyEventOrder.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { useEffect, useState } from 'react';
-
-import { supabase } from '../supabaseClient';
-
-export const useGetPartyEventOrder = ({ event_id }) => {
- const [party_event_order, setPartyEventOrder] = useState(null);
-
- async function getPartyEventOrder() {
- let { data } = await supabase.from('party_event_orders').select(`
- id, profiles(id, full_name, gender, remarks)
- `);
- // status == 2 , paid
-
- // tidy up
-
- // .filter('party_event_id', 'in', `("${event_id}")`);
- // setPartyEventOrder(data);
- // console.log({data})
- }
-
- useEffect(() => {
- getPartyEventOrder();
- }, []);
-
- return [party_event_order];
-};
diff --git a/03_source/mobile_notworking.del/src/hooks/useGetProfileById.ts b/03_source/mobile_notworking.del/src/hooks/useGetProfileById.ts
deleted file mode 100644
index 373193e..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useGetProfileById.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { useEffect, useState } from 'react';
-
-import { supabase } from '../supabaseClient';
-
-export const useGetProfileById = ({ id }) => {
- const [party_event_order, setPartyEventOrder] = useState(null);
-
- async function getPartyEventOrder() {
- let { data } = await supabase
- .from('profiles')
- .select('*')
- .filter('id', 'in', `("33a1f462-7085-4655-b42e-a0f1e8395f6c")`);
- }
-
- useEffect(() => {
- getPartyEventOrder();
- }, []);
-
- return [party_event_order];
-};
diff --git a/03_source/mobile_notworking.del/src/hooks/useGetUserProfileById.ts b/03_source/mobile_notworking.del/src/hooks/useGetUserProfileById.ts
deleted file mode 100644
index 158240f..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useGetUserProfileById.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-// REQ0044/near_by_page
-// what to do:
-// list users near by except current user
-
-import { useContext, useEffect, useState } from 'react';
-
-import { AppContext } from '../data/AppContext';
-import { supabase } from '../supabaseClient';
-
-export const useGetUserProfileById = ({ user_id }) => {
- const { profile } = useContext(AppContext);
- const [other_user_profiles, setOtherUserProfiles] = useState([]);
-
- async function getPartyEvents() {
- let { data } = await supabase.from('profiles').select('*').filter('user_id', 'in', `(${user_id})`).limit(1);
-
- setOtherUserProfiles(data[0]);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [other_user_profiles];
-};
diff --git a/03_source/mobile_notworking.del/src/hooks/useJoinTest.ts b/03_source/mobile_notworking.del/src/hooks/useJoinTest.ts
deleted file mode 100644
index ea2c7bf..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useJoinTest.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { useEffect, useState } from 'react';
-
-import { supabase } from '../supabaseClient';
-
-export const useJoinTest = () => {
- const [test_data, setTestData] = useState(null);
-
- async function getPartyEvents() {
- const { data, error } = await supabase.from('countries').select(`
- id,
- name,
- cities ( id, name )
- `);
-
- console.log({ data });
-
- setTestData(data);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [test_data];
-};
diff --git a/03_source/mobile_notworking.del/src/hooks/useListOtherUserProfiles.ts b/03_source/mobile_notworking.del/src/hooks/useListOtherUserProfiles.ts
deleted file mode 100644
index 35b3611..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useListOtherUserProfiles.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-// REQ0044/near_by_page
-// what to do:
-// list users near by except current user
-
-import { useContext, useEffect, useState } from 'react';
-
-import { AppContext } from '../data/AppContext';
-import { supabase } from '../supabaseClient';
-
-export const useListOtherUserProfiles = () => {
- const { profile } = useContext(AppContext);
- const [other_user_profiles, setOtherUserProfiles] = useState([]);
- const user_id = '1';
-
- async function getPartyEvents() {
- console.log({ profile });
- let { data } = await supabase.from('profiles').select('*').not('user_id', 'in', `(${user_id})`).limit(10);
- setOtherUserProfiles(data);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [other_user_profiles];
-};
diff --git a/03_source/mobile_notworking.del/src/hooks/useListPartyEventOrderSummary.ts b/03_source/mobile_notworking.del/src/hooks/useListPartyEventOrderSummary.ts
deleted file mode 100644
index 96d196b..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useListPartyEventOrderSummary.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { useEffect, useState } from 'react';
-import { supabase } from '../supabaseClient';
-
-export const useListPartyEventOrderSummary = ({ user_id }) => {
- const [party_event_summaries, setPartyEventSummaries] = useState(null);
-
- async function getPartyEvents() {
- let { data } = await supabase.from('view_party_event_orders_summary').select('*').filter('user_id', 'eq', '1');
- setPartyEventSummaries(data);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [party_event_summaries];
-};
diff --git a/03_source/mobile_notworking.del/src/hooks/useListPartyEventOrders.ts b/03_source/mobile_notworking.del/src/hooks/useListPartyEventOrders.ts
deleted file mode 100644
index e5f0a9f..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useListPartyEventOrders.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { useEffect, useState } from 'react';
-import { supabase } from '../supabaseClient';
-
-export const useListPartyEventOrders = ({ user_id }) => {
- const [party_event_summaries, setPartyEventSummaries] = useState(null);
-
- async function getPartyEvents() {
- let { data } = await supabase.from('view_party_event_orders').select('*').filter('user_id', 'eq', '1');
- setPartyEventSummaries(data);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [party_event_summaries];
-};
diff --git a/03_source/mobile_notworking.del/src/hooks/useListPartyEventSummaries.ts b/03_source/mobile_notworking.del/src/hooks/useListPartyEventSummaries.ts
deleted file mode 100644
index aa04952..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useListPartyEventSummaries.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { useEffect, useState } from 'react';
-
-import { supabase } from '../supabaseClient';
-
-export const useListPartyEventSummaries = () => {
- const [party_event_summaries, setPartyEventSummaries] = useState(null);
-
- async function getPartyEvents() {
- let { data } = await supabase.from('view_party_event_summaries').select('*');
- setPartyEventSummaries(data);
- console.log({ party_event_summaries });
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [party_event_summaries];
-};
diff --git a/03_source/mobile_notworking.del/src/hooks/useListPartyEvents.ts b/03_source/mobile_notworking.del/src/hooks/useListPartyEvents.ts
deleted file mode 100644
index ff5566b..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useListPartyEvents.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { useEffect, useState } from 'react';
-
-import { supabase } from '../supabaseClient';
-
-export const useListPartyEvents = () => {
- const [party_event_summaries, setPartyEventSummaries] = useState(null);
-
- async function getPartyEvents() {
- let { data } = await supabase.from('view_party_event_summaries').select('*');
- setPartyEventSummaries(data);
- console.log({ data });
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [party_event_summaries];
-};
diff --git a/03_source/mobile_notworking.del/src/hooks/useViewPartyEventParticipants.ts b/03_source/mobile_notworking.del/src/hooks/useViewPartyEventParticipants.ts
deleted file mode 100644
index 5197a33..0000000
--- a/03_source/mobile_notworking.del/src/hooks/useViewPartyEventParticipants.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-// REQ0041/home_discover_event_tab
-import { useEffect, useState } from 'react';
-
-import { supabase } from '../supabaseClient';
-
-export const useViewPartyEventParticipants = ({ party_event_id, limit }) => {
- const [participants, setParticipants] = useState(null);
-
- async function getPartyEvents() {
- let { data } = await supabase
- .from('view_party_event_participants')
- .select('*')
- .filter('id', '=', party_event_id)
- .limit(limit);
-
- setParticipants(data);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, [party_event_id]);
-
- return [participants];
-};
diff --git a/03_source/mobile_notworking.del/src/i18n.ts b/03_source/mobile_notworking.del/src/i18n.ts
deleted file mode 100644
index c3d81bb..0000000
--- a/03_source/mobile_notworking.del/src/i18n.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import i18n from 'i18next';
-import Languagedetector from 'i18next-browser-languagedetector';
-import { initReactI18next } from 'react-i18next';
-import en from './locales/en/en.json';
-import hk from './locales/hk/hk.json';
-
-i18n
- .use(initReactI18next)
- .use(Languagedetector)
- .init({
- resources: {
- en: { translation: en },
- zhHk: { translation: hk },
- },
- fallbackLng: 'en',
- interpolation: {
- escapeValue: false,
- },
- });
-
-export { i18n };
diff --git a/03_source/mobile_notworking.del/src/locales/en/en.json b/03_source/mobile_notworking.del/src/locales/en/en.json
deleted file mode 100644
index d5fc061..0000000
--- a/03_source/mobile_notworking.del/src/locales/en/en.json
+++ /dev/null
@@ -1,1634 +0,0 @@
-{
- "helloworld": "this is helloworld",
- "onboarding": {
- "slides": [
- {
- "title": "Welcome to your Cardano Foundation Identity Wallet",
- "description": "An opensource mobile digital wallet that enables you to securely manage your own identity in a privacy-preserving and self-sovereign manner."
- },
- {
- "title": "Empowerment with Self-Sovereign Identity (SSI)",
- "description": "Embrace SSI principles, store private keys locally in your mobile device's Hardware Security Module, and control your identity."
- },
- {
- "title": "Privacy & Security: Your Top Priorities",
- "description": "Prioritize privacy and security with Decentralized Identifiers and Verifiable Credentials. Control your data, what you share, with whom, and for how long."
- },
- {
- "title": "Embrace Interoperability for a Wider Reach",
- "description": "Supporting new and existing standards, ecosystems, and frameworks is crucial to achieving widespread adoption and seamless interoperability."
- },
- {
- "title": "Decentralize Your Digital Identity",
- "description": "Traditional identity systems offer minimal control over your digital identifiers. Decentralized technology transfers ownership and control to you."
- }
- ],
- "getstarted": {
- "button": {
- "label": "Get Started"
- }
- },
- "alreadywallet": {
- "button": {
- "label": "I already have a wallet"
- }
- }
- },
- "createpasscodemodule": {
- "errornomatch": "Passcode didn’t match",
- "errormatch": "Passcode already in use",
- "cantremember": "Can't remember?"
- },
- "setpasscode": {
- "enterpasscode": "Create your Passcode",
- "description": "Create a passcode to secure your wallet and to continue the onboarding process",
- "recoverydescription": "Create a passcode to secure your wallet and to continue the recovery process",
- "reenterpasscode": "Re-enter your Passcode",
- "cancelbtn": "Cancel",
- "backbtn": "Back"
- },
- "generateseedphrase": {
- "onboarding": {
- "title": "Generate recovery phrase",
- "paragraph": {
- "top": "Think of your secret recovery phrase as a safety net for your identity. If you ever lose your phone or switch to a new wallet, this phrase will help you recover your identity.",
- "bottom": "It's important to keep these words safe and sound! Store them in a secure location, like a password manager, and remember to never share them with anyone."
- },
- "button": {
- "continue": "Generate",
- "switch": "Switch to recover a wallet"
- }
- },
- "segment": "{{length}} words",
- "privacy": {
- "overlay": {
- "text": "Press the ‘view’ button when you’re ready to see your seed phrase. Remember to make sure nobody is looking!",
- "button": "View Seed Phrase"
- }
- },
- "alert": {
- "confirm": {
- "text": "Have you double-checked you’ve copied your 18 word phrase correctly?",
- "button": {
- "confirm": "Yes, copied",
- "cancel": "Cancel"
- }
- },
- "exit": {
- "text": "If you go back you will lose your current progress. Are you sure you want to do this?",
- "button": {
- "confirm": "Confirm",
- "cancel": "Cancel"
- }
- },
- "toggle": {
- "text": "Switching tabs will remove the words you have already entered, are you sire you want to switch?",
- "button": {
- "confirm": "Yes, switch tabs",
- "cancel": "Cancel"
- }
- },
- "verify": {
- "text": "Your seed phrase couldn’t be verified. Please, try again or choose an alternative method",
- "button": {
- "confirm": "Try again",
- "cancel": "Cancel"
- }
- }
- },
- "termsandconditions": {
- "text": "I have read and agree to the <0>{{clickableTerms}}0> and <1>{{clickablePrivacy}}1>.",
- "terms": "Terms of Use",
- "privacy": "Privacy Policy"
- }
- },
- "termsofuse": {
- "done": "Done",
- "intro": {
- "title": "Terms & conditions",
- "text": "Please read these terms of use (\"Terms & conditions\" or \"Terms\") carefully before using the services offered by Cardano Foundation (together with our subsidiaries and affiliates, referred to as \"Foundation,\" \"We,\" \"Us\" or \"Our\" in these Terms of Use). These Terms of Use set forth the legally binding terms and conditions for your use of this website and all of the related websites, mobile apps, products and services offered by the Foundation and its affiliated entities including our APK's, API's, plug-ins and browser extensions (collectively, the \"Products\"). By using the Products in any manner, you agree to be bound by these Terms of Use."
- },
- "sections": [
- {
- "title": "1. USE OF PRODUCTS",
- "content": [
- {
- "subtitle": "a. Eligibility:",
- "text": "You represent and warrant that you: (a) are of legal age to form a binding contract in your jurisdiction; (b) have not previously been suspended or removed from using the Products; and (c) have full power and authority to enter into these Terms of Use and in doing so will not violate any other agreement to which you are a party. If you are registering to use the Products on behalf of a legal entity, you further represent and warrant that (i) such legal entity is duly organized and validly existing under the applicable laws of the jurisdiction of its organization, and (ii) you are duly authorized by such legal entity to act on its behalf."
- },
- {
- "subtitle": "b. Product Changes:",
- "text": "We reserve the right to make changes or updates to the Products at any time without notice, for any reason at Our sole discretion. We retain the authority to modify, update, limit, or revoke your access to Our Products, including any related accounts, at any time and without prior notice, for any reason at Our sole discretion."
- },
- {
- "subtitle": "c. Additional Terms:",
- "text": "In addition, some Products may be subject to additional terms and conditions promulgated by the Foundation from time to time; your use of such Products is subject to those additional terms and conditions, which are incorporated into these Terms of Use by this reference. If there are any inconsistencies between these Terms of Use and the additional terms, the additional terms will take precedence."
- },
- {
- "subtitle": "d. Download and use of Android Package Kit (“APK”) Products:",
- "text": "The use of APK Products is subject to these Terms of Use, and by downloading and using APK Products, you agree to comply with these terms and any additional terms we may provide you concerning the use of APK Products. You acknowledge that downloading and installing APK Products requires manual installation on your device and that you are solely responsible for the process and any issues that may arise from installation and use. We ensure that the APK Products we provide are secure, but you must take necessary precautions to protect your device. We may offer limited support for APK Products, and you agree to seek support through the channels we designate. APK Products might not receive automatic updates and It is your responsibility to monitor and install any updates we provide."
- },
- {
- "subtitle": "e. Privacy Policy:",
- "text": "By using the Products in any way, you understand and acknowledge that the terms of the Privacy Policy apply to you."
- },
- {
- "subtitle": "f. Feedback:",
- "text": "We appreciate any feedback or suggestions you might have regarding Our Products. You can share your thoughts at https://cardanofoundation.org/en/contact-us/. When you provide feedback in any form, you give Us permission to use, share, and build upon your input as We see fit, without owing you anything in return."
- },
- {
- "subtitle": "g. Dispute Resolution:",
- "text": "If you have a dispute with the Foundation or a claim to raise in relation to the Products, you agree to contact Us using the form at https://cardanofoundation.org/en/contact-us/ to attempt to resolve the issue informally first."
- }
- ]
- },
- {
- "title": "2. YOUR CONTENT",
- "content": [
- {
- "subtitle": "a. Definition of 'Your Content':",
- "text": "For the purposes of these Terms of Use, 'Your Content' refers to all materials you submit or transmit to, through, or in connection with Our Products, including but not limited to photographs, profile pictures, messages, comments, testimonials, and any other text, graphics, videos, or audio content."
- },
- {
- "subtitle": "b. License Grant:",
- "text": "By submitting, posting, or displaying Your Content on or through Our Products, you grant Us a non-exclusive, worldwide, royalty-free, fully paid-up, sublicensable, and transferable license to use, reproduce, process, distribute, create derivative works of, display, and perform Your Content in connection with Our Products and Our business, including for promoting and redistributing part or all of the Products (and derivative works thereof) in any media formats and through any media channels. This license will exist for the period during which Your Content is posted on Our Products or until We choose to remove it, whichever is shorter."
- },
- {
- "subtitle": "c. Ownership of Your Content:",
- "text": "You retain ownership rights in Your Content. However, by submitting Your Content to Our Products, you hereby grant Us the non-exclusive rights and license as set out above. Other than the rights and license you grant in these Terms of Use, We acknowledge and agree that We obtain no right, title, or interest from you under these Terms of Use in any of Your Content."
- },
- {
- "subtitle": "d. Representations and Warranties:",
- "text": "You represent and warrant that:\n\n- You either own Your Content or have the necessary licenses, rights, consents, and permissions to grant the rights and licenses as provided herein;\n- Your Content does not and will not infringe or violate any third party's intellectual property rights, proprietary rights, privacy rights, confidentiality, rights of publicity or otherwise violate these Terms of Use or applicable law; and\n- You have obtained all required permissions from any individual whose personal data is part of Your Content, allowing Us to use and disclose the data as set out in these Terms of Use."
- },
- {
- "subtitle": "e. Your Responsibility:",
- "text": "You are solely responsible for Your Content and the consequences of posting, publishing, or sharing it. We do not endorse any of Your Content or any opinion, recommendation, or advice expressed therein, and We expressly disclaim any and all liability in connection with Your Content."
- }
- ]
- },
- {
- "title": "3. INTELLECTUAL PROPERTY",
- "content": [
- {
- "subtitle": "a. Ownership:",
- "text": "All intellectual property in or related to the Products, including but not limited to the software, 'Cardano' and 'ADA' marks, logos and the names and logos of the Products ('Our Intellectual Property'), is the property of the Foundation."
- },
- {
- "subtitle": "b. Grant of Licence:",
- "text": "We provide you a limited, non-exclusive licence to access and utilise Our Intellectual Property as part of your use of the Products, all in accordance with these Terms of Use. We retain the right to revoke this license at any time for any reason. Outside of the permissions explicitly granted in these Terms of Use, all other rights remain with Us."
- },
- {
- "subtitle": "c. Restrictions:",
- "text": "Except as provided in these Terms of Use, you agree not to copy, rent, lease, sell or distribute, or create derivative works of Our Intellectual Property Rights. Some Products might be governed by open-source licenses; in such instances, the terms of those specific licenses will apply. You should refer to the specific license terms accompanying each Product or component thereof to understand your rights and obligations. Any other use of the Foundation's intellectual property requires Our express written permission."
- },
- {
- "subtitle": "d. Trademarks:",
- "text": "You are granted no rights or license to use Foundation trademarks unless in strict accordance with the Foundation's trademark policy."
- }
- ]
- },
- {
- "title": "4. DISCLAIMERS; LIMITATION OF LIABILITY",
- "content": [
- {
- "subtitle": "a. Disclaimer of Warranties:",
- "text": "YOU UNDERSTAND AND ACKNOWLEDGE THAT WE ARE PROVIDING THE PRODUCTS, SERVICES, INCLUDING RELATED INFORMATION AND CONTENT, ON AN 'AS IS' AND 'AS AVAILABLE' BASIS, WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED. THIS MAY INCLUDE PRODUCTS OFFERED IN 'BETA' VERSIONS, INTENDED TO PROVIDE THE FOUNDATION WITH FEEDBACK ON THE QUALITY AND USABILITY OF THE PRODUCTS AND APPLICATION PROGRAMMING INTERFACES (APIs). THE FOUNDATION ENTITIES MAKE NO REPRESENTATIONS AND EXPRESSLY DISCLAIM ALL WARRANTIES ABOUT THE SUITABILITY, MERCHANTABILITY, FITNESS FOR PURPOSE, RELIABILITY, AVAILABILITY, TIMELINESS, SECURITY, TITLE AND NON-INFRINGEMENT, ACCURACY OR COMPLETENESS, DATA SYNCHED TO OR MADE AVAILABLE FROM THE PRODUCTS, PRODUCT CONTENT, OR ANY CONSULTING SERVICES WE PROVIDE FOR ANY ASSOCIATED PURPOSE."
- },
- {
- "subtitle": "No Indirect Damages:",
- "text": "TO THE EXTENT PERMITTED BY LAW, IN NO EVENT WILL FOUNDATION ENTITIES BE LIABLE FOR ANY INDIRECT, INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES, OR LOSS OF PROFITS, REVENUE, DATA OR BUSINESS OPPORTUNITIES ARISING OUT OF OR RELATED TO THESE TERMS OF USE, WHETHER AN ACTION IS IN CONTRACT OR TORT AND REGARDLESS OF THE THEORY OF LIABILITY."
- },
- {
- "subtitle": "b. Third Party Products:",
- "text": "THE FOUNDATION ENTITIES MAKE NO PROMISES WITH RESPECT TO, AND EXPRESSLY DISCLAIM ALL LIABILITY, TO THE MAXIMUM EXTENT PERMITTED BY LAW, FOR: (i) CONTENT POSTED BY ANY THIRD-PARTY ON THE PRODUCTS, (ii) THE PRODUCT DESCRIPTIONS OR PRODUCTS, (iii) THIRD-PARTY SITES AND ANY THIRD-PARTY PRODUCT OR SERVICE LISTED ON OR ACCESSIBLE TO YOU THROUGH THE PRODUCTS, AND (iv) THE QUALITY OR CONDUCT OF ANY THIRD PARTY YOU ENCOUNTER IN CONNECTION WITH YOUR USE OF ANY PRODUCT OR WEBSITE ('Third Party Products)."
- },
- {
- "subtitle": "c. Limitation of Liability:",
- "text": "ANY LIABILITY OF THE FOUNDATION ENTITIES IS HEREBY LIMITED TO THE MAXIMUM EXTENT ALLOWED BY APPLICABLE LAW. THE AGGREGATE LIABILITY OF FOUNDATION ENTITIES WILL IN ANY EVENT BE LIMITED TO A SUM EQUAL TO THE TOTAL AMOUNTS PAID OR PAYABLE FOR THE PRODUCTS IN THE TWELVE MONTH PERIOD PRECEDING THE EVENT GIVING RISE TO A CLAIM; PROVIDED HOWEVER, THIS LIMITATION WILL NOT APPLY TO YOU IF NO SUCH FEES ARE PAYABLE, AND IN THIS CASE, IF WE ARE DETERMINED TO HAVE ANY LIABILITY TO YOU OR ANY THIRD PARTY ARISING FROM YOUR USE OF THE PRODUCTS, THEN OUR AGGREGATE LIABILITY WILL BE LIMITED TO ONE HUNDRED U.S. DOLLARS."
- },
- {
- "subtitle": "d. Agreement to Liability Limit:",
- "text": "YOU UNDERSTAND AND AGREE THAT ABSENT YOUR AGREEMENT TO THIS LIMITATION OF LIABILITY, WE WOULD NOT PROVIDE THE PRODUCTS TO YOU."
- }
- ]
- },
- {
- "title": "5. INDEMNIFICATION",
- "content": [
- {
- "subtitle": "",
- "text": "You agree to fully indemnify, defend and hold the Foundation Entities, including their directors, officers, employees, consultants, and other representatives, harmless from and against any claims, damages, losses, costs (including reasonable legal fees), and other expenses resulting directly or indirectly from: (a) any breach or noncompliance of these Terms of Use by you or your affiliates, inclusive of policies mentioned herein; (b) allegations that materials you provide or convey to the Products violate the intellectual property rights of a third party; (c) your or your affiliates' use of Third-Party Products; and/or (d) any negligent or intentional misconduct by you. You shall not agree to any settlement that (i) obligates Us in any manner; (ii) demands an admission from Us; or (iii) assigns liability beyond these indemnifications or restricts Us, without obtaining Our prior written approval."
- }
- ]
- },
- {
- "title": "6. MISCELLANEOUS",
- "content": [
- {
- "subtitle": "a. Amendment:",
- "text": "We may modify any part or all of these Terms of Use. The revised version will become effective and binding the next business day after it is posted. We will provide you notice of this revision by email, website banner, in-product notification or publishing revised Terms of Use at this page, if applicable. YOU AGREE THAT YOUR CONTINUED USE OF THE PRODUCTS AFTER SUCH CHANGES BECOME EFFECTIVE CONSTITUTES YOUR ACCEPTANCE OF THE CHANGES. If you do not agree with a modification to the Terms of Use, you must notify Us in writing within thirty (30) days after We send notice of the revision. If We can no longer reasonably provide the Product to you under the terms prior to modification, then the Terms of Use and/or your access to the Products will terminate upon Our notice to you and We will promptly refund any prepaid but unused fees, if any, covering use of the Product."
- },
- {
- "subtitle": "b. Application Provider Terms:",
- "text": "These Terms of Use are between you and the Foundation only, and not with an application service or application platform provider (such as Apple, Inc., or Google Inc.), which may provide you the application subject to its own terms of use."
- },
- {
- "subtitle": "c. Governing Law and Jurisdiction:",
- "text": "These Terms of Use will be interpreted in accordance with the laws of Switzerland. You agree that any disputes arising out of or in connection with these Terms of Use, not otherwise resolved in accordance with dispute resolution provision set forth in section 1(f) shall be subject to the exclusive jurisdiction of the courts located in Zug, Switzerland."
- },
- {
- "subtitle": "d. Languages:",
- "text": "The English version of these Terms of Use is the definitive and binding version. All notices, alerts, and procedures communications concerning these Terms of Use will be executed in English, even if translations into other languages are made available. Should there be any discrepancies between the English version and other translations, the English version will take precedence, as permitted by law."
- },
- {
- "subtitle": "e. Assignment:",
- "text": "You may not assign, transfer, delegate, or sublicense any rights, obligations, or remedies under these Terms of Use without the prior written consent of the Foundation. Any such attempts without this consent will be considered void. We retain the discretion to assign, transfer, or delegate Our rights, obligations, or remedies under these Terms of Use as We see fit."
- },
- {
- "subtitle": "f. Waiver:",
- "text": "Our failure to assert a right or provision under these Terms of Use will not constitute a waiver of such right or provision."
- },
- {
- "subtitle": "g. Entire Agreement and Severability:",
- "text": "These Terms of Use supersede all prior terms, agreements, discussions and writings regarding the Products and constitutes the entire agreement between you and Us regarding the Products. If any part of these Terms of Use is determined to be invalid or unenforceable by applicable law, then the invalid or unenforceable provision will be deemed superseded by a valid, enforceable provision that most closely matches the intent of the original provision and the remainder of these Terms of Use will continue in effect."
- },
- {
- "subtitle": "h. Survival:",
- "text": "The following provisions will survive expiration or termination of these Terms of Use: Section 2 (Your Content), Section 3(a)(Ownership) and (c)(Restrictions), Section 4 (Disclaimers and Limitations of Liability), Section 5 (indemnification), Section 1(f) (Dispute Resolution) and Section 6 (Miscellaneous)."
- },
- {
- "subtitle": "i. Contact:",
- "text": "Feel free to contact Us with any questions about these Terms of Use. You can also write to Us at:\n\nCardano Foundation,\nDammstrasse 16,\n6300, Zug,\nSwitzerland\nAttn: Legal"
- }
- ]
- }
- ]
- },
- "privacypolicy": {
- "done": "Done",
- "intro": {
- "title": "Privacy Policy",
- "text": "Cardano Foundation (referred to as \"Foundation\", \"We\", \"Our\", or \"Us\") is committed to innovating in digital identity management while prioritising user privacy and data protection. This Privacy Policy specifically applies to the Identity Wallet developed by the Cardano Foundation (the \"Identity Wallet\") and the website http://identity.cardanofoundation.org (the \"Products\"). The Identity Wallet is a product designed to facilitate the creation and management of digital identities using Key Event Receipt Infrastructure (KERI) and Decentralized Identifiers (DIDs), operating without linking to any real-world names or personal identifiable information (PII). The Identity Wallet does not require users to submit emails, names, phone numbers, or any documents. Instead, it provides a framework for users to manage their own digital identities autonomously. This is achieved by securely storing private key material on the user's device for identification purposes, enabling users to control their own identity information and securely communicate with other users and entities. This policy outlines our practices regarding the collection, use, disclosure, and protection of any data associated with the Identity Wallet. Note that this policy may differ from other privacy policies pertaining to different CF products or services. Please read this Privacy Policy carefully."
- },
- "sections": [
- {
- "title": "1. Data controller and contact details",
- "content": [
- {
- "subtitle": "",
- "text": "The controller of the data processing described in this Privacy Policy is Cardano Foundation, unless we inform you otherwise in certain cases. You can notify Us of any data protection-related concerns using the following contact details:\n\nCardano Foundation\nDammstrasse 16\n6300 Zug\n\ngdpr@cardanofoundation.org"
- }
- ]
- },
- {
- "title": "2. Types of Data Collected",
- "content": [
- {
- "subtitle": "",
- "text": "For the Identity Wallet, We collect and manage data differently, aligning with our commitment to user privacy and secure identity management. We do not collect typical personal data like names, addresses, or contact information. When using the Products, the Foundation may ask you to provide certain information that can be used to identify or contact you 'Personal Data'. The types of Personal Data that We collect from you depend on the circumstances of collection, the nature of the Product used or the transaction undertaken. Data We collect may include, but is not limited to:"
- },
- {
- "subtitle": "a. Device/ Network Data:",
- "text": "Information regarding your interaction with a Product. This includes technical information (e.g., IP Address, MAC Address, SSIDs, etc.), online user ID, device characteristics (such as browser/OS version), web server logs, browser plug-ins, your time zone application logs and language settings, cookie data, usage data. It also includes practical information like any login information, information about how you use Our Products and interact with Us and limited technical information necessary for the operation and security of the wallet, such as device type and operating system version. This is to ensure the proper functioning of the wallet and to provide security features."
- },
- {
- "subtitle": "",
- "text": "To clarify, We do not collect the following data, which remains stored on the user's device:"
- },
- {
- "subtitle": "- Identity Data:",
- "text": "This includes any personal details users choose to employ for setting up or supporting their digital identities, like their names, physical addresses, identification documents, or proofs of residency and credentials."
- },
- {
- "subtitle": "- Digital Identity Data:",
- "text": "Information related to the digital identities created using the wallet, including KERI and DIDs. This does not include real-world names or personal details, unless the user opts to incorporate these details."
- },
- {
- "subtitle": "- Private Key Material:",
- "text": "This comprises private keys, which are essential for identity management and verification purposes."
- }
- ]
- },
- {
- "title": "3. How we collect your Personal Data",
- "content": [
- {
- "subtitle": "",
- "text": "You may give Us personal information when you use, apply or register for a Foundation product or otherwise submit information to use through the Products or other communications with Us. For example:"
- },
- {
- "subtitle": "a.",
- "text": "We may collect information when you create a profile on Our Products;"
- },
- {
- "subtitle": "b.",
- "text": "We may collect Device/Network Data when you access and use Our websites. Some of this data is necessary for Us to run Our website or to respond to your requests, like ticket bookings. Other data is huge help to Us in providing you with better services and maintaining a well-run organisation;"
- },
- {
- "subtitle": "c.",
- "text": "We may collect information about you from third parties; and other channels including Our support."
- },
- {
- "subtitle": "d.",
- "text": "We may collect data under any other contractual agreement or arrangement;"
- }
- ]
- },
- {
- "title": "4. Use of Personal Data",
- "content": [
- {
- "subtitle": "",
- "text": "We may use your Personal Data for the following purposes:"
- },
- {
- "subtitle": "a.",
- "text": "For legitimate business purposes and to provide the Products you request. This includes but is not limited to: fulfilling Our obligations to you and to financial or other institutions, compliance with laws, audits, protect rights, prevent fraud, and for business improvement, including sending relevant information, responding to law enforcement, gathering feedback, and addressing complaints or disputes;"
- },
- {
- "subtitle": "b.",
- "text": "to protect the safety and the well being of yourself and/or other users;"
- },
- {
- "subtitle": "c.",
- "text": "for business development purposes such as statistical and marketing analysis, systems testing, maintenance and development, customer surveys or to help Us in any future dealings with you, for example by identifying your requirements and preference; for all other purposes ancillary to any of the purposes stated above (\"Ancillary Purposes\");"
- },
- {
- "subtitle": "d.",
- "text": "based on your consent: If you have given us consent to process your personal data for certain purposes, we process your personal data within the scope of and based on this consent, unless we have another legal basis and we require such a basis. Consent given can be revoked at any time, but this has no effect on data processing that has already taken place."
- },
- {
- "subtitle": "",
- "text": "(collectively, \"Purposes\")"
- }
- ]
- },
- {
- "title": "5. Data Security and Transfer",
- "content": [
- {
- "subtitle": "",
- "text": "While no system is absolutely secure, We use reasonable technical and organisational precautions to protect your data and to respect your privacy."
- },
- {
- "subtitle": "",
- "text": "We employ measures like encryption, secure physical storage, limited access zones, confidentiality agreements, and routine assessments for timely data deletion to safeguard your information."
- },
- {
- "subtitle": "",
- "text": "The Identity Wallet is designed to store Digital Identity Data and Private Key Material directly on the user's device. As such, no transfer of this data occurs to Cardano Foundation servers or external entities, providing an additional layer of privacy and security."
- },
- {
- "subtitle": "",
- "text": "Personal Data may be transferred to, and stored at a destination outside the European Economic Area (\"EEA\") where there are appropriate safeguards in place pursuant to Article 46 of the GDPR. This data might be handled by Our staff or Our suppliers outside the EEA for various tasks, including service provision. By providing your personal data, you consent to such transfers, storage, or processing."
- }
- ]
- },
- {
- "title": "6. Retention",
- "content": [
- {
- "subtitle": "",
- "text": "The Foundation will hold onto your Personal Data only as long as needed based on the reasons outlined in this Privacy Policy."
- },
- {
- "subtitle": "",
- "text": "Digital Identity Data and Private Key Material will be retained on the user's device and will not be stored on Cardano Foundation servers. Users have full control over this data, including its deletion."
- },
- {
- "subtitle": "",
- "text": "Device/Network Data will be retained only as long as necessary for operational and security purposes. This data will be subject to regular review and deletion as per our data minimization principles."
- },
- {
- "subtitle": "",
- "text": "We will store and utilize your Personal Data as long as it's required to meet legal obligations, address disagreements, and uphold Our legal agreements and policies. Additionally, We will keep usage data for Our internal analysis purposes. Typically, usage data is kept for a shorter duration unless it aids in enhancing product security or functionality, or when legal requirements necessitate longer retention."
- }
- ]
- },
- {
- "title": "7. Data Disclosure",
- "content": [
- {
- "subtitle": "",
- "text": "We will not trade or sell your Personal Data to third parties."
- },
- {
- "subtitle": "",
- "text": "We will not disclose any Digital Identity Data or Private Key Information to third parties, as this data is stored solely on the user's device."
- },
- {
- "subtitle": "",
- "text": "Your other Personal Data, if any, shall only be disclosed or transferred to the following third parties appointed or authorised by the Foundation for the fulfilment of the Purposes described herein, in accordance with GDPR principles such as consent, contractual necessity, legal obligation, vital interests, public task, and legitimate interests. This may include third party processors, such as:"
- },
- {
- "subtitle": "a.",
- "text": "Data warehouses;"
- },
- {
- "subtitle": "b.",
- "text": "IT service providers;"
- },
- {
- "subtitle": "c.",
- "text": "Data analytics and/or marketing agencies;"
- },
- {
- "subtitle": "d.",
- "text": "Third party service providers, tools or plugins that enable a better user experience for Products, such as social media plugins or online marketing tools, newsletter providers"
- },
- {
- "subtitle": "e.",
- "text": "Auditors"
- },
- {
- "subtitle": "",
- "text": "We shall take practical steps to ensure that their employees, officers, agents, consultants, contractors and such other third parties mentioned above who are involved in the collection or processing of your Personal Data will observe and adhere to the terms of this Privacy Policy and GDPR requirements."
- },
- {
- "subtitle": "",
- "text": "The Foundation may disclose your Personal Data in good faith belief that such disclosure is necessary for one of the following reasons: complying with a legal obligation; protecting and defending the rights or property of the Foundation; preventing or investigating possible wrongdoing in connection with the Products; protecting the personal safety of users of Products or the public; protecting against legal liability; or responding to legal bodies as permitted or required by law such as in compliance with a warrant or subpoena issued by a court of competent jurisdiction; and/or responding to regulatory authorities."
- },
- {
- "subtitle": "",
- "text": "In addition to the above, your Personal Data may also be disclosed or transferred to Our affiliates and subsidiaries."
- }
- ]
- },
- {
- "title": "8. Your Rights",
- "content": [
- {
- "subtitle": "",
- "text": "Users can access, manage, and delete their Digital Identity Data within the wallet at any time. Any Private Key Material or other data securely stored within your device (as described in section 2) must be removed manually by the user."
- },
- {
- "subtitle": "",
- "text": "If you want to know what Personal Data the Foundation holds about you or wish for it to be deleted, please reach out to Us at gdpr@cardanofoundation.org."
- },
- {
- "subtitle": "",
- "text": "In certain circumstances, you possess these data protection rights:"
- },
- {
- "subtitle": "a.",
- "text": "Access: You can ask for details about your personal data We have."
- },
- {
- "subtitle": "b.",
- "text": "Rectification: If the data is inaccurate or incomplete, you can request corrections."
- },
- {
- "subtitle": "c.",
- "text": "Objection: You can contest the use of your data for specific reasons; for instance, using the unsubscribe option in our emails."
- },
- {
- "subtitle": "d.",
- "text": "Restriction: You can ask Us to limit the processing of your data."
- },
- {
- "subtitle": "e.",
- "text": "Data Portability: Request a copy of your data from Us in a standard, machine-readable format."
- },
- {
- "subtitle": "f.",
- "text": "Withdraw Consent: Should We process data based on your consent, you can retract it anytime."
- },
- {
- "subtitle": "",
- "text": "Please understand We might ask you to confirm your identity before acting on these requests. If unsatisfied with how We handle your data, you can report to your local Data Protection Authority in the EU or EEA."
- }
- ]
- },
- {
- "title": "9. Third Party Links",
- "content": [
- {
- "subtitle": "",
- "text": "Products may contain links to other companies, organizations or websites (collectively, 'Third Party Links'). This Privacy Notice does not apply to such Third Party Links. If you access Third Party Links using the links provided, the operators may collect your personal information."
- },
- {
- "subtitle": "",
- "text": "The Foundation has no control over and assumes no responsibility for the content, privacy policies or practices of any third-party product or service."
- }
- ]
- },
- {
- "title": "10. Changes",
- "content": [
- {
- "subtitle": "",
- "text": "We may revise or update this Privacy Policy from time to time."
- },
- {
- "subtitle": "",
- "text": "Any modifications will be reflected on this page. We'll notify you of updates either through email or a notable alert on the Product, while also adjusting the 'effective date' at this Policy's beginning. Regularly reviewing this Policy ensures you stay informed of any alterations, which take effect once displayed on this page."
- }
- ]
- },
- {
- "title": "11. Data Privacy Contact",
- "content": [
- {
- "subtitle": "",
- "text": "For further inquiries or requests in relation to Our handling of your Personal Data or this Privacy Policy please contact Us at gdpr@cardanofoundation.org"
- }
- ]
- }
- ]
- },
- "aboutssiagent": {
- "done": "Done",
- "intro": {
- "title": "About SSI agent",
- "text": ""
- },
- "sections": []
- },
- "lockpage": {
- "title": "Welcome back",
- "description": "Please enter your passcode to login",
- "error": "Incorrect passcode",
- "forgotten": {
- "button": "I've forgotten my passcode"
- },
- "attempterror": "{{attempt}} attempt remaining",
- "attemptalert": {
- "title": "Login unavailable",
- "content": "Try again in {{time}}",
- "hour": "{{value}} hour",
- "hours": "{{value}} hours",
- "minute": "{{value}} minute",
- "minutes": "{{value}} minutes"
- },
- "alert": {
- "text": {
- "verify": "If you've forgotten your passcode, please verify your seed phrase to gain access to your wallet",
- "restart": "You currently haven't generated a seed phrase, would you like to start your onboarding again?"
- },
- "button": {
- "verify": "Verify your Seed Phrase",
- "restart": "Start again",
- "cancel": "Cancel"
- }
- }
- },
- "verifyseedphrase": {
- "onboarding": {
- "title": "Verify your recovery phrase",
- "button": {
- "continue": "Verify",
- "back": "Back",
- "clear": "Clear all"
- }
- },
- "paragraph": {
- "top": "Please select each word in the order it was presented to you."
- },
- "alert": {
- "fail": {
- "text": "Sorry, the seed phrase you have entered is incorrect!",
- "button": {
- "confirm": "Try again"
- }
- },
- "exit": {
- "text": "If you go back you will lose your current progress. Are you sure you want to do this?",
- "button": {
- "confirm": "Confirm",
- "cancel": "Cancel"
- }
- },
- "clear": {
- "text": "Are you sure you want to clear all the words you have entered so far?",
- "button": {
- "confirm": "Clear all",
- "cancel": "Cancel"
- }
- }
- }
- },
- "verifyrecoveryseedphrase": {
- "title": "Recover wallet",
- "button": {
- "continue": "Confirm",
- "lock": "Try again in 1 minute",
- "clear": "Clear all",
- "switch": "Switch to create new wallet"
- },
- "paragraph": {
- "top": "Please verify your recovery phrase to recover your wallet. To start typing click on the first option."
- },
- "suggestions": {
- "title": "Suggestions",
- "error": "All words must be compatible with the suggestions"
- },
- "alert": {
- "fail": {
- "text": "Sorry, the recovery phrase you have entered is incorrect!",
- "button": {
- "confirm": "Try again"
- }
- },
- "clear": {
- "text": "Are you sure you want to clear all the words you have entered so far?",
- "button": {
- "confirm": "Clear all",
- "cancel": "Cancel"
- }
- },
- "toomanyattempts": {
- "text": "Too many failed attempts. Please try again later.",
- "button": {
- "confirm": "Ok"
- }
- }
- }
- },
- "tabsmenu": {
- "label": {
- "identifiers": "Identity",
- "creds": "Credentials",
- "scan": "Scan",
- "notifications": "Notifications",
- "menu": "Menu"
- }
- },
- "custominput": {
- "optional": "(optional)"
- },
- "switchmodemodal": {
- "title": "Before you switch",
- "button": {
- "back": "Back",
- "continue": "Continue"
- },
- "recovery": {
- "title": "Switch to recover an existing wallet",
- "paragraphtop": "You're about to switch to the wallet recovery process. Here's what will happen:",
- "warning": {
- "one": "Passcode & Operations Password: You'll keep your existing passcode and operations password. If you chose to skip setting an operations password, that preference will remain.",
- "two": "Recovery Phrase: If you've gone beyond the generation of a new recovery phrase, this will be wiped. You'll need to verify the recovery phrase associated with your previous wallet.",
- "three": "Connect URL: You will only need the Connect URL for the SSI agent screen."
- },
- "paragraphbot": "When you switch, you'll be able to enter your recovery details to access your existing wallet."
- },
- "create": {
- "title": "Switch to create a new wallet",
- "paragraphtop": "You're about to switch to the new wallet creation process. Here's what will happen:",
- "warning": {
- "one": "Passcode & Operations Password: You'll keep your existing passcode and operations password. If you chose to skip setting an operations password, that preference will remain.",
- "two": "Recovery Phrase: You'll need to generate a recovery phrase and copy these words down somewhere safe",
- "three": "Boot URL and Connect URL: You will need both your Boot URL and Connect URL for the SSI agent screen."
- },
- "paragraphbot": "When you switch, you'll start the process to create a brand new wallet."
- },
- "checkbox": "I have read and understand."
- },
- "removependingalert": {
- "button": {
- "done": "Done",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- }
- },
- "createpassword": {
- "title": "Create password",
- "change": "New password",
- "cancel": "Cancel",
- "description": "Set your operations password so you can access additional wallet features.",
- "input": {
- "first": {
- "title": "Create password",
- "placeholder": "Type password"
- },
- "second": {
- "title": "Confirm password",
- "placeholder": "Retype your password"
- },
- "third": {
- "title": "Create a hint",
- "placeholder": "Create a password hint"
- }
- },
- "button": {
- "continue": "Create Password",
- "skip": "Skip"
- },
- "alert": {
- "text": "Are you sure you want to skip? By doing this, you will be required to use your passcode for any protected operations. You can, of course, set this up later if you prefer.",
- "button": {
- "confirm": "Yes, skip",
- "cancel": "Cancel"
- }
- },
- "error": {
- "hasSpecialChar": "Please enter a valid character",
- "isTooShort": "Must be more than 8 characters long",
- "isTooLong": "Must be less than 64 characters long",
- "hasNoUppercase": "Must contain an uppercase letter",
- "hasNoLowercase": "Must contain a lowercase letter",
- "hasNoNumber": "Must contain a number",
- "hasNoSymbol": "Must contain a valid symbol",
- "hasNoMatch": "Passwords do not match",
- "hintSameAsPassword": "Your hint cannot be your password"
- }
- },
- "ssiagent": {
- "title": "Enter your SSI agent details",
- "description": "To continue, please enter the SSI agent boot and connect URLs (in your email or from your command line).",
- "verifydescription": "To continue, please enter the SSI agent connect URL (in your email or from your command line).",
- "button": {
- "info": "Get more information",
- "validate": "Validate"
- },
- "input": {
- "boot": {
- "label": "Boot URL",
- "placeholder": "Paste or scan your boot URL"
- },
- "connect": {
- "label": "Connect URL",
- "placeholder": "Paste or scan your connect URL"
- }
- },
- "error": {
- "invalidurl": "Enter a valid URL",
- "invalidbooturl": "Enter a valid boot URL",
- "invalidconnecturl": "Enter a valid connect URL",
- "mismatchconnecturl": "This connect URL doesn’t match the boot URL"
- }
- },
- "operationspasswordregex": {
- "label": {
- "length": "8 - 64 characters long",
- "uppercase": "Contains an uppercase letter",
- "lowercase": "Contains a lowercase letter",
- "number": "Contains a number",
- "symbol": "Contains a symbol"
- }
- },
- "identifiers": {
- "tab": {
- "title": "Identity",
- "create": "Add an identifier",
- "favourites": "Favourites",
- "allidentifiers": "All identifiers",
- "pendingidentifiers": "Pending identifiers",
- "multisigidentifiers": "For groups"
- },
- "detelepending": {
- "title": "Identifier options",
- "description": "Your identifier is pending and may still complete. If you no longer require this identifier, tap “Delete identifier” to remove it.",
- "mutilsigdescription": "This multi-sig is pending. It will complete once it meets the required member threshold. To remove it from your pending list, tap “Delete identifier”.",
- "button": "Delete identifier",
- "secondchecktitle": "Are you sure you want to delete this identifier?"
- },
- "layout": {
- "created": "CREATED"
- },
- "details": {
- "done": "Done",
- "information": "Information",
- "type": "Type",
- "publickeybase": "Public Key Base 58",
- "delegator": {
- "title": "Delegator Identifier Prefix",
- "icon": "DI"
- },
- "signingkeyslist": {
- "title": "List of Signing Keys",
- "icon": "K"
- },
- "signingkeysthreshold": {
- "title": "Keys Signing Threshold",
- "icon": "KT"
- },
- "nextkeyslist": {
- "title": "List of Next Key Digests",
- "icon": "N"
- },
- "nextkeysthreshold": {
- "title": "Next Keys Signing Threshold",
- "icon": "NT"
- },
- "creationtimestamp": {
- "title": "Creation Timestamp"
- },
- "rotationtimestamp": {
- "title": "Last Key Rotation Timestamp",
- "icon": "DT"
- },
- "sequencenumber": {
- "title": "Sequence Number",
- "icon": "S"
- },
- "backerslist": {
- "title": "List of Backers",
- "icon": "B"
- },
- "backeraddress": {
- "title": "Backer Address"
- },
- "delete": {
- "button": "Delete identifier",
- "alert": {
- "title": "Are you sure you want to delete this identifier?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- }
- },
- "options": {
- "title": "Identifier options",
- "cancel": "Cancel",
- "view": "View JSON",
- "edit": "Edit identifier",
- "share": "Share identifier",
- "delete": "Delete identifier",
- "rotatekeys": "Rotate keys",
- "inner": {
- "label": "Display name",
- "theme": "Edit theme",
- "confirm": "Confirm changes",
- "error": "Must be less than 32 characters long",
- "color": "Choose card colour"
- }
- },
- "rotatekeys": {
- "done": "Done",
- "description": "Rotating your signing keys boosts security by reducing the risk of key compromise."
- },
- "clouderror": "We couldn’t locate this identifier in the cloud. It might become available again soon, but some information could be lost.\n\nIf you no longer require this identifier, tap “Delete identifier” to remove."
- }
- },
- "credentials": {
- "tab": {
- "title": "Credentials",
- "create": "Add a credential",
- "viewarchived": "Archived & Revoked",
- "favourites": "Favourites",
- "allcreds": "All credentials",
- "pendingcred": "Pending credentials",
- "detelepending": {
- "title": "Credential options",
- "description": "Your credential is pending and may still complete. If you no longer require this credential, tap “Delete credential” to remove it.",
- "button": "Delete credential",
- "secondchecktitle": "Are you sure you want to delete this credential?"
- }
- },
- "layout": {
- "issued": "Issued"
- },
- "details": {
- "done": "Done",
- "restore": "Restore",
- "delete": "Delete",
- "type": "Type",
- "title": "Title",
- "description": "Description",
- "revoked": "Revoked",
- "attributes": {
- "label": "Attributes",
- "issuee": "Issuee",
- "issuancedate": "Issuance Date",
- "lei": "LEI"
- },
- "schemaversion": "Schema Version",
- "issuer": "Issuer",
- "status": {
- "label": "Status",
- "issued": "Issued",
- "revoked": "Revoked",
- "timestamp": "Timestamp"
- },
- "options": {
- "title": "Credential options",
- "view": "View JSON",
- "archive": "Archive credential"
- },
- "button": {
- "delete": "Delete credential",
- "archive": "Archive credential"
- },
- "alert": {
- "archive": {
- "title": "Are you sure you want to archive this credential?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- },
- "delete": {
- "title": "Are you sure you want to delete this credential?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- },
- "restore": {
- "title": "Are you sure you want to view this with your other credentials?",
- "confirm": "Yes, restore credential",
- "cancel": "Cancel"
- }
- },
- "toast": {
- "clipboard": "Copied to clipboard"
- },
- "clouderror": "We couldn’t locate this credential in the cloud. It might become available again soon, but some information could be lost.\n\nIf you no longer require this credential, tap “Delete credential” to remove."
- },
- "create": {
- "alert": {
- "title": "Once this credential is visible you'll receive a notification. Until then you won't be able to access more details.",
- "confirm": "Ok"
- }
- },
- "archived": {
- "title": "History",
- "done": "Done",
- "select": "Select",
- "selectall": "Select All",
- "deselectall": "Deselect all",
- "cancel": "Cancel",
- "delete": "Delete",
- "restore": "Restore",
- "oneselected": "1 Credential Selected",
- "manyselected": "{{amount}} Credentials Selected",
- "archivedtitle": "Archived credentials",
- "revokedtitle": "Revoked credentials",
- "revokedlabel": "Revoked",
- "alert": {
- "restoresingle": {
- "title": "Are you sure you want to view this with your other credentials?",
- "confirm": "Yes, restore credential",
- "cancel": "Cancel"
- },
- "restoremultiple": {
- "title": "Are you sure you want to view these with your other credentials?",
- "confirm": "Yes, restore credentials",
- "cancel": "Cancel"
- },
- "deletesingle": {
- "title": "This will delete the selected credential from your wallet permanently",
- "confirm": "Delete from wallet",
- "cancel": "Cancel"
- },
- "deletemultiple": {
- "title": "This will delete the selected credentials from your wallet permanently",
- "confirm": "Delete from wallet",
- "cancel": "Cancel"
- },
- "restorerevoked": {
- "title": "You cannot restore revoked credentials.",
- "confirm": "Ok"
- }
- }
- }
- },
- "scan": {
- "tab": {
- "title": "Align the QR code within the frame to scan"
- },
- "alert": {
- "title": "Would you like to grant permission for using your camera?"
- },
- "pastemeerkatid": "Paste Meerkat ID"
- },
- "notifications": {
- "tab": {
- "header": "Notifications",
- "empty": "No notifications",
- "chips": {
- "all": "All",
- "identifiers": "Identifiers",
- "credentials": "Credentials"
- },
- "sections": {
- "new": "New",
- "earlier": {
- "title": "Earlier",
- "end": "End of notifications",
- "buttons": {
- "showealier": "View previous notifications"
- }
- }
- },
- "optionmodal": {
- "title": "Notification options",
- "done": "Done",
- "showdetail": "Show details",
- "markasread": "Mark as read",
- "markasunread": "Mark as unread",
- "delete": "Delete notification",
- "deletealert": {
- "text": "Deleting this notification cannot be undone. Once deleted you will no longer be able to require any actions required from this notification.",
- "accept": "Delete",
- "cancel": "Cancel"
- }
- },
- "labels": {
- "exnipexgrant": "{{connection}} wants to issue you a credential",
- "multisigicp": "{{connection}} is requesting to create a group identifier with you",
- "exnipexapply": "{{connection}} has requested a credential from you",
- "exnipexgrantrevoke": "Your {{credential}} credential has been revoked"
- }
- },
- "details": {
- "buttons": {
- "close": "Close",
- "accept": "Accept",
- "decline": "Decline",
- "cancel": "Cancel",
- "back": "Back",
- "choosecredential": "Choose credential",
- "providecredential": "Provide credential"
- },
- "credential": {
- "request": {
- "alert": {
- "text": "You don’t have any credentials available that match this request. In order to offer this credential you will need to acquire one first.",
- "confirm": "OK"
- },
- "information": {
- "title": "Credential request",
- "requestfrom": "Request from",
- "requestedcredential": "Requested credential",
- "informationrequired": "Information required",
- "alert": {
- "textdecline": "Are you sure you want to decline this credential request? You won't be able to change your decision later."
- }
- },
- "choosecredential": {
- "description": "Select the most appropriate {{requestCred}} to provide the required information",
- "title": "Choose credential"
- }
- },
- "receive": {
- "title": "Receive credential",
- "receivefrom": "Receive a credential from",
- "credentialpending": "Credential pending",
- "alert": {
- "textdecline": "Are you sure you want to decline this credential issuance? You won't be able to change your decision later."
- }
- }
- },
- "identifier": {
- "title": "Identifier request",
- "subtitle": "Review this group identifier request",
- "requestfrom": "Request from",
- "othermembers": "Other members",
- "pending": "Pending",
- "accepted": "Accepted",
- "threshold": "Threshold",
- "alert": {
- "textdecline": "Are you sure you want to decline this request? You won't be able to change your decision later."
- },
- "errorpage": {
- "title": "Please review",
- "alerttext": "You are missing one or more connections required for this group request. Please scan all necessary QR codes to proceed.",
- "instructions": {
- "title": "Instructions",
- "detailtext": "In order to continue and complete the group setup, please follow the instructions below.",
- "stepone": "Ensure you have scanned all participant's QR codes.",
- "steptwo": "After scanning, try to open this notification again."
- },
- "help": {
- "title": "Need help?",
- "detailtext": "If you need assistance, please message us on our <0>{{discordSupportChannel}}0>.",
- "supportchannel": "Discord support channel"
- },
- "continuesetup": "Continue setup"
- }
- }
- }
- },
- "menu": {
- "tab": {
- "header": "Menu",
- "items": {
- "profile": {
- "title": "Profile"
- },
- "crypto": {
- "title": "Crypto"
- },
- "connections": {
- "title": "Connections"
- },
- "connectwallet": {
- "title": "Cardano connect",
- "cip": "CIP-45",
- "tabheader": "Cardano Connect",
- "connectbtn": "Connect with Cardano",
- "disconnectbeforecreatealert": {
- "message": "You are currently connected. To connect with a new wallet, you will be disconnected from your current selection. Would you like to disconnect and continue?",
- "confirm": "Continue",
- "cancel": "Cancel"
- },
- "connectionbrokenalert": {
- "message": "Your connection has been disconnected as you have deleted the chosen identifier paired with this connection. Please choose a new identifier to re-establish this connection.",
- "confirm": "Ok"
- },
- "inputpidmodal": {
- "header": "Paste Meerkat ID",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "scanQR": "Scan QR code"
- },
- "connectionhistory": {
- "title": "Connection History",
- "action": {
- "delete": "Delete"
- },
- "deletealert": {
- "message": "Are you sure you want to delete this connection?",
- "confirm": "Yes, I’m sure",
- "cancel": "Cancel"
- },
- "missingidentifieralert": {
- "message": "To connect with Cardano, you need to create a KERI AID identifier. Would you like to create one now?",
- "confirm": "Create identifier",
- "cancel": "Cancel"
- },
- "confirmconnect": {
- "done": "Done",
- "connectbtn": "Connect",
- "disconnectbtn": "Disconnect",
- "connectingbtn": "Connecting...",
- "pending": "Pending"
- }
- },
- "request": {
- "stageone": {
- "title": "Connect Cardano",
- "message": "Would you like to establish a CIP-45 Connection?",
- "alert": {
- "titleconfirm": "Are you sure you want to decline this connection?",
- "confirm": "Decline",
- "cancel": "Cancel"
- }
- },
- "stagetwo": {
- "title": "Choose identifier",
- "message": "Which KERI AID identifier would you like to make the connection with?",
- "confirm": "Confirm"
- },
- "button": {
- "back": "Back",
- "accept": "Accept",
- "decline": "Decline"
- }
- }
- }
- }
- }
- },
- "settings": {
- "sections": {
- "header": "Settings",
- "security": {
- "title": "Security",
- "biometry": "Biometric authentication",
- "changepin": {
- "title": "Change passcode",
- "createpasscode": "Create new passcode",
- "reenterpasscode": "Re-enter new passcode",
- "cancel": "Cancel",
- "back": "Back",
- "description": "Create a new passcode to secure your wallet",
- "cantremember": {
- "label": "Can't remember?"
- }
- },
- "managepassword": {
- "title": "Manage operations password",
- "page": {
- "title": "Manage password",
- "enable": "Enable operations password",
- "change": "Change operations password",
- "alert": {
- "enablemessage": "By turning on an operations password you will be required to use this to verify any future operations instead of your passcode.",
- "disablemessage": "By turning off your operations password you will be required to use your passcode to verify any future operations.",
- "existingpassword": "Your new operations password must be different to your existing one.",
- "confirm": "Continue",
- "cancel": "Cancel",
- "ok": "Ok"
- }
- }
- },
- "seedphrase": {
- "title": "Recovery phrase",
- "page": {
- "title": "Recovery phrase",
- "tips": {
- "label": "Useful tips:",
- "one": "Write down or make a copy of your recovery phrase and store it in a safe location.",
- "two": "Double-check that your words are copied in the correct order (1 to 18).",
- "three": "Ensure there are no spelling errors."
- },
- "hiddentext": "Press the ‘view recovery phrase’ button when you’re ready to see your recovery phrase. Remember to make sure nobody is looking!",
- "button": {
- "view": "View recovery phrase",
- "hide": "Hide recovery phrase"
- },
- "confirmmodal": {
- "title": "Stay safe",
- "subtitle": "Confirm and acknowledge the following:",
- "firstcondition": "Nobody else can see my screen",
- "secondcondition": "Sharing my recovery phrase with others puts my identity at risk",
- "thirdcondition": "Losing my recovery phrase means I will lose access to my wallet",
- "button": {
- "confirm": "View recovery phrase",
- "cancel": "Cancel"
- }
- }
- }
- }
- },
- "support": {
- "title": "Support & Legal",
- "contact": "Connect via Discord",
- "learnmore": "Learn More About Cardano IDW",
- "terms": {
- "title": "Terms and Privacy Policy",
- "submenu": {
- "title": "Terms & privacy",
- "termandcondition": "Terms & conditions",
- "privacy": "Privacy policy"
- }
- },
- "version": "App Version"
- }
- }
- },
- "connections": {
- "tab": {
- "title": "Connections",
- "create": "Add a connection",
- "indentifierselector": {
- "title": "Choose identifier",
- "message": "Which KERI AID identifier would you like to make the connection with?",
- "button": {
- "cancel": "Cancel",
- "confirm": "Confirm"
- }
- },
- "alert": {
- "message": "To create a connection, you need to create an individual KERI AID identifier. Would you like to create one now?",
- "confirm": "Create identifier",
- "cancel": "Cancel"
- },
- "detelepending": {
- "title": "Connection options",
- "description": "This connection is pending you’ll be notified once they accept. If you no longer require this connection, tap “Delete connection” to remove.",
- "button": "Delete connection",
- "secondchecktitle": "Are you sure you want to delete this connection?"
- }
- },
- "details": {
- "done": "Done",
- "label": "Label",
- "date": "Date Created",
- "endpoints": "Service Endpoints",
- "history": "Connection History",
- "connectedwith": "Connected with \"{{ issuer }}\"",
- "issuance": "Received a \"{{ credential }}\"",
- "present": "\"{{ issuer }}\" has requested a credential presentation",
- "agree": "Presentation offer agreed",
- "update": "\"{{ credential }}\" has been revoked",
- "notavailable": "N/A",
- "details": "Details",
- "notes": "Notes",
- "nocurrentnotes": "No current notes",
- "nocurrentnotesext": "There are currently no notes associated with this connection.",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "title": "Title",
- "message": "Message",
- "delete": "Delete connection",
- "options": {
- "title": "Connection options",
- "labels": {
- "add": "Add a note",
- "manage": "Manage notes",
- "delete": "Delete connection"
- },
- "alert": {
- "deleteconnection": {
- "title": "Are you sure you want to delete this connection?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- },
- "deletenote": {
- "title": "Are you sure you want to delete this note?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- }
- }
- },
- "clouderror": "We couldn’t locate this connection in the cloud. It might become available again soon, but some information could be lost.\n\nIf you no longer require this connection, tap “Delete connection” to remove."
- }
- },
- "connectmodal": {
- "title": "Add a",
- "scan": "Scan QR Code",
- "connect": "Scan to connect",
- "provide": "Provide QR Code",
- "close": "Done"
- },
- "verifypassword": {
- "title": "Enter password",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "button": {
- "forgot": "I've forgotten my password"
- },
- "error": {
- "hasNoMatch": "Password didn't match"
- },
- "alert": {
- "choice": {
- "title": "Would you like to see your password hint or reset your password?"
- },
- "button": {
- "seepasswordhint": "See my password hint",
- "resetmypassword": "Reset my password",
- "tryagain": "Great, I'll try again!"
- },
- "hint": {
- "title": "Your password hint is"
- }
- }
- },
- "verifypasscode": {
- "cancel": "Cancel",
- "title": "Enter passcode",
- "description": "Please enter your passcode to verify",
- "error": "Incorrect passcode",
- "forgotten": {
- "button": "I've forgotten my passcode"
- },
- "alert": {
- "text": {
- "verify": "If you've forgotten your passcode, please verify your seed phrase to gain access to your wallet",
- "restart": "You currently haven't generated a seed phrase, would you like to start your onboarding again?"
- },
- "button": {
- "verify": "Verify your Seed Phrase",
- "restart": "Start again",
- "cancel": "Cancel"
- }
- }
- },
- "forgotauth": {
- "cancel": "Cancel",
- "passcode": {
- "title": "Forgot passcode",
- "description": "Please verify your seed phrase to reset your passcode. To start typing click on the first option."
- },
- "password": {
- "title": "Forgot password",
- "description": "Please verify your seed phrase to reset your password. To start typing click on the first option."
- },
- "newpasscode": {
- "title": "New passcode",
- "description": "Create a new passcode to re-secure your wallet and perform operations",
- "reenterpasscode": "Re-enter passcode"
- },
- "newpassword": {
- "title": "New password",
- "description": "Create a new operations password so you can access additional wallet features."
- }
- },
- "shareidentifier": {
- "title": "Share connection",
- "subtitle": {
- "identifier": "To share, either scan the QR code or select from the provided options below",
- "connection": "Show this QR code to the person you want to connect with, or click the 'More share options' link"
- },
- "done": "Done",
- "divider": "or",
- "copykey": "Copy connection URL",
- "more": "More share options"
- },
- "createidentifier": {
- "cancel": "Cancel",
- "back": "Back",
- "done": "Done",
- "add": {
- "title": "Add an identifier",
- "confirmbutton": "Create identifier"
- },
- "share": {
- "title": "Share identifier",
- "subtitle": "You've scanned",
- "copybutton": "Copy OOBI connection",
- "notes": {
- "top": "Before proceeding, please make sure that everyone you want to include as a signer scans this QR code.",
- "middle": "After everyone has scanned your QR code, please be sure to scan everyone else's QR code as well.",
- "bottom": "To continue with the initiation of the mult-sig you must have scanned at least one other QR code."
- },
- "scanbutton": "Scan QR codes",
- "initiatebutton": "Initiate group",
- "scanalert": {
- "text": "Have all the individuals you want to include as members scanned your QR code?",
- "confirm": "Confirm and scan",
- "cancel": "Cancel"
- }
- },
- "receive": {
- "title": "Setup identifier",
- "confirmbutton": "Add identifier",
- "notes": {
- "top": "Before proceeding, please make sure everyone included as a member scans this QR code.",
- "middle": "Remember to scan everyone else’s QR code too!"
- }
- },
- "scan": {
- "cancel": "Cancel",
- "confirm": "Confirm",
- "pasteoobi": "Paste OOBI",
- "initiate": "Initiate group",
- "scanqrcode": "Scan QR code",
- "pastecontents": "Paste contents"
- },
- "connections": {
- "title": "Connections",
- "subtitle": "These are the members you scanned. Please review before proceeding.",
- "continue": "Confirm connections"
- },
- "threshold": {
- "title": "Set a Threshold",
- "subtitle": "Set the threshold to determine the level of consensus required",
- "label": "Threshold",
- "continue": "Confirm threshold"
- },
- "confirm": {
- "title": "Confirm",
- "subtitle": "Confirm all details for your Keri AID group identifier are accurate",
- "displayname": "Display Name",
- "selectedmembers": "Selected Members",
- "treshold": "Threshold",
- "continue": "Confirm identifier",
- "cancel": "Cancel",
- "alert": {
- "text": "Cancelling now means you'll need to restart the group initiation process.",
- "cancel": "Yes, cancel",
- "back": "Back"
- }
- },
- "displayname": {
- "title": "Display name",
- "placeholder": "Create a name for this identifier"
- },
- "identifiertype": {
- "title": "Identifier type",
- "didkey": "did:key",
- "keri": "KERI AID"
- },
- "color": {
- "title": "Choose card colour"
- },
- "aidtype": {
- "title": "AID type",
- "default": {
- "label": "Individual",
- "tooltip": "Lorem ipsum dolor sit amet"
- },
- "multisig": {
- "label": "Group",
- "tooltip": "Lorem ipsum dolor sit amet"
- },
- "delegated": {
- "label": "Delegated",
- "tooltip": "Lorem ipsum dolor sit amet"
- }
- },
- "aidinfo": {
- "title": "AID types",
- "text": "A description of each KERI AID type you can create identifiers for.",
- "individual": {
- "label": "Individual",
- "text": "Use these identifiers to represent all your individual personas. Currently, a single key pair is used to sign statements with these identifiers, and it can be updated. In the future, these identifiers might become more robust with multi-device support and social recovery options."
- },
- "group": {
- "label": "Group",
- "text": "Use a group identifier to represent an entity controlled by multiple people, like a committee. You can set a threshold to decide how many members are needed to create a valid signature or recover the identifier."
- },
- "delegated": {
- "label": "Delegated",
- "text": "The delegated option is currently being developed. Identifiers might be delegated for advanced recovery in case of a security breach, which is ideal for an organisational structure in enterprises."
- },
- "button": {
- "done": "Done"
- }
- },
- "theme": {
- "title": "Choose a theme"
- },
- "error": {
- "maxlength": "Must be less than 32 characters long"
- }
- },
- "offline": {
- "title": "You’re offline",
- "description": "You’ve lost connection to the cloud agent. Once the connection has been re-established your wallet will return to normal usage."
- },
- "shareqr": {
- "divider": "or",
- "more": "More share options"
- },
- "toast": {
- "copiedtoclipboard": "Copied to clipboard",
- "identifierrequested": "Identifier request pending",
- "identifiercreated": "New identifier created successfully",
- "identifierupdated": "Identifier successfully updated",
- "identifierdeleted": "Identifier successfully deleted",
- "credentialdeleted": "Credential deleted successfully",
- "credentialsdeleted": "Credentials deleted successfully",
- "credentialarchived": "Credential archived successfully",
- "credentialrestored": "Credential restored successfully",
- "credentialsrestored": "Credentials restored successfully",
- "connectiondeleted": "Connection deleted successfully",
- "qrsuccess": "QR code scanned successfully",
- "qrerror": "QR code not recognised",
- "connectionrequestincoming": "New Connection Request",
- "connectionrequestpending": "Connection request pending",
- "newconnectionadded": "New connection added",
- "credentialrequestpending": "Credential request pending",
- "newcredentialadded": "New credential added",
- "notesupdated": "Notes updated successfully",
- "noteremoved": "Note removed successfully",
- "maxfavouritesreached": "Maximum of 5 favourites reached",
- "usernamecreationsuccess": "Welcome, {{username}}!",
- "usernamecreationerror": "Unable to set name. Please try again.",
- "walletconnectiondeleted": "Delete successfully",
- "connectwalletsuccess": "Connected successfully",
- "disconnectwallet": "Disconnected successfully",
- "unableconnectwallet": "Unable to connect",
- "peeridsuccess": "Peer ID successful",
- "peeriderror": "Peer ID not recognised",
- "peeridnotrecognised": "Peer ID not recognised",
- "setupbiometricsuccess": "Biometrics setup successfully",
- "rotatekeysuccess": "Keys rotated successfully",
- "rotatekeyerror": "Unable to rotate keys",
- "newmultisignmember": "New member added to group",
- "multisignidentifiercreated": "Identifier added to \"For groups\"",
- "delegatedidentifiercreated": "Identifier added to \"For delegates\"",
- "passcodeupdated": "Passcode updated successfully",
- "passwordupdated": "Password updated successfully",
- "passworddisabled": "Password turned off",
- "passwordcreated": "Password created successfully",
- "sharecredsuccess": "Credential shared successfully",
- "sharecrederror": "Unable to share credential",
- "deleteconnectionerror": "Unable to delete connection",
- "deletecrederror": "Unable to delete credential",
- "deleteidentifiererror": "Unable to delete identifier",
- "archivedcrederror": "Unable to archive credential",
- "signsuccessful": "Sign successful",
- "savepasswordhinterror": "Unable to delete password hint",
- "editidentifiererror": "Unable to update identifier"
- },
- "request": {
- "sign": {
- "title": "Sign",
- "identifier": "Identifier",
- "transaction": {
- "data": "Data"
- }
- },
- "button": {
- "acceptoffer": "Accept credential",
- "cancel": "Cancel",
- "back": "Back",
- "accept": "Accept",
- "decline": "Decline",
- "sign": "Sign",
- "dontallow": "Don't allow"
- },
- "alert": {
- "cancel": "Cancel"
- },
- "pending": "{{action}} pending",
- "success": "{{action}} successful"
- },
- "setusername": {
- "title": "Welcome! What should we call you?",
- "input": {
- "title": "Name"
- },
- "button": {
- "confirm": "Confirm"
- },
- "toast": {
- "usernameCreated": "Welcome, {{username}}!",
- "usernameError": "Unable to set name. Please try again."
- }
- },
- "biometry": {
- "reason": "Please authenticate",
- "canceltitle": "Cancel",
- "iosfallbacktitle": "Use passcode",
- "androidtitle": "Authentication",
- "androidsubtitle": "Authentication using biometrics",
- "setupandroidbiometryheader": "Do you want to allow “IDW” to use biometrics?",
- "setupandroidbiometryconfirm": "Ok",
- "setupandroidbiometrycancel": "Don't allow",
- "cancelbiometryheader": "You canceled Biometrics. You can set this up later via the settings page."
- }
-}
diff --git a/03_source/mobile_notworking.del/src/locales/hk/hk.json b/03_source/mobile_notworking.del/src/locales/hk/hk.json
deleted file mode 100644
index 3eae7d8..0000000
--- a/03_source/mobile_notworking.del/src/locales/hk/hk.json
+++ /dev/null
@@ -1,1634 +0,0 @@
-{
- "helloworld": "這是蘋果",
- "onboarding": {
- "slides": [
- {
- "title": "Welcome to your Cardano Foundation Identity Wallet",
- "description": "An opensource mobile digital wallet that enables you to securely manage your own identity in a privacy-preserving and self-sovereign manner."
- },
- {
- "title": "Empowerment with Self-Sovereign Identity (SSI)",
- "description": "Embrace SSI principles, store private keys locally in your mobile device's Hardware Security Module, and control your identity."
- },
- {
- "title": "Privacy & Security: Your Top Priorities",
- "description": "Prioritize privacy and security with Decentralized Identifiers and Verifiable Credentials. Control your data, what you share, with whom, and for how long."
- },
- {
- "title": "Embrace Interoperability for a Wider Reach",
- "description": "Supporting new and existing standards, ecosystems, and frameworks is crucial to achieving widespread adoption and seamless interoperability."
- },
- {
- "title": "Decentralize Your Digital Identity",
- "description": "Traditional identity systems offer minimal control over your digital identifiers. Decentralized technology transfers ownership and control to you."
- }
- ],
- "getstarted": {
- "button": {
- "label": "Get Started"
- }
- },
- "alreadywallet": {
- "button": {
- "label": "I already have a wallet"
- }
- }
- },
- "createpasscodemodule": {
- "errornomatch": "Passcode didn’t match",
- "errormatch": "Passcode already in use",
- "cantremember": "Can't remember?"
- },
- "setpasscode": {
- "enterpasscode": "Create your Passcode",
- "description": "Create a passcode to secure your wallet and to continue the onboarding process",
- "recoverydescription": "Create a passcode to secure your wallet and to continue the recovery process",
- "reenterpasscode": "Re-enter your Passcode",
- "cancelbtn": "Cancel",
- "backbtn": "Back"
- },
- "generateseedphrase": {
- "onboarding": {
- "title": "Generate recovery phrase",
- "paragraph": {
- "top": "Think of your secret recovery phrase as a safety net for your identity. If you ever lose your phone or switch to a new wallet, this phrase will help you recover your identity.",
- "bottom": "It's important to keep these words safe and sound! Store them in a secure location, like a password manager, and remember to never share them with anyone."
- },
- "button": {
- "continue": "Generate",
- "switch": "Switch to recover a wallet"
- }
- },
- "segment": "{{length}} words",
- "privacy": {
- "overlay": {
- "text": "Press the ‘view’ button when you’re ready to see your seed phrase. Remember to make sure nobody is looking!",
- "button": "View Seed Phrase"
- }
- },
- "alert": {
- "confirm": {
- "text": "Have you double-checked you’ve copied your 18 word phrase correctly?",
- "button": {
- "confirm": "Yes, copied",
- "cancel": "Cancel"
- }
- },
- "exit": {
- "text": "If you go back you will lose your current progress. Are you sure you want to do this?",
- "button": {
- "confirm": "Confirm",
- "cancel": "Cancel"
- }
- },
- "toggle": {
- "text": "Switching tabs will remove the words you have already entered, are you sire you want to switch?",
- "button": {
- "confirm": "Yes, switch tabs",
- "cancel": "Cancel"
- }
- },
- "verify": {
- "text": "Your seed phrase couldn’t be verified. Please, try again or choose an alternative method",
- "button": {
- "confirm": "Try again",
- "cancel": "Cancel"
- }
- }
- },
- "termsandconditions": {
- "text": "I have read and agree to the <0>{{clickableTerms}}0> and <1>{{clickablePrivacy}}1>.",
- "terms": "Terms of Use",
- "privacy": "Privacy Policy"
- }
- },
- "termsofuse": {
- "done": "Done",
- "intro": {
- "title": "Terms & conditions",
- "text": "Please read these terms of use (\"Terms & conditions\" or \"Terms\") carefully before using the services offered by Cardano Foundation (together with our subsidiaries and affiliates, referred to as \"Foundation,\" \"We,\" \"Us\" or \"Our\" in these Terms of Use). These Terms of Use set forth the legally binding terms and conditions for your use of this website and all of the related websites, mobile apps, products and services offered by the Foundation and its affiliated entities including our APK's, API's, plug-ins and browser extensions (collectively, the \"Products\"). By using the Products in any manner, you agree to be bound by these Terms of Use."
- },
- "sections": [
- {
- "title": "1. USE OF PRODUCTS",
- "content": [
- {
- "subtitle": "a. Eligibility:",
- "text": "You represent and warrant that you: (a) are of legal age to form a binding contract in your jurisdiction; (b) have not previously been suspended or removed from using the Products; and (c) have full power and authority to enter into these Terms of Use and in doing so will not violate any other agreement to which you are a party. If you are registering to use the Products on behalf of a legal entity, you further represent and warrant that (i) such legal entity is duly organized and validly existing under the applicable laws of the jurisdiction of its organization, and (ii) you are duly authorized by such legal entity to act on its behalf."
- },
- {
- "subtitle": "b. Product Changes:",
- "text": "We reserve the right to make changes or updates to the Products at any time without notice, for any reason at Our sole discretion. We retain the authority to modify, update, limit, or revoke your access to Our Products, including any related accounts, at any time and without prior notice, for any reason at Our sole discretion."
- },
- {
- "subtitle": "c. Additional Terms:",
- "text": "In addition, some Products may be subject to additional terms and conditions promulgated by the Foundation from time to time; your use of such Products is subject to those additional terms and conditions, which are incorporated into these Terms of Use by this reference. If there are any inconsistencies between these Terms of Use and the additional terms, the additional terms will take precedence."
- },
- {
- "subtitle": "d. Download and use of Android Package Kit (“APK”) Products:",
- "text": "The use of APK Products is subject to these Terms of Use, and by downloading and using APK Products, you agree to comply with these terms and any additional terms we may provide you concerning the use of APK Products. You acknowledge that downloading and installing APK Products requires manual installation on your device and that you are solely responsible for the process and any issues that may arise from installation and use. We ensure that the APK Products we provide are secure, but you must take necessary precautions to protect your device. We may offer limited support for APK Products, and you agree to seek support through the channels we designate. APK Products might not receive automatic updates and It is your responsibility to monitor and install any updates we provide."
- },
- {
- "subtitle": "e. Privacy Policy:",
- "text": "By using the Products in any way, you understand and acknowledge that the terms of the Privacy Policy apply to you."
- },
- {
- "subtitle": "f. Feedback:",
- "text": "We appreciate any feedback or suggestions you might have regarding Our Products. You can share your thoughts at https://cardanofoundation.org/en/contact-us/. When you provide feedback in any form, you give Us permission to use, share, and build upon your input as We see fit, without owing you anything in return."
- },
- {
- "subtitle": "g. Dispute Resolution:",
- "text": "If you have a dispute with the Foundation or a claim to raise in relation to the Products, you agree to contact Us using the form at https://cardanofoundation.org/en/contact-us/ to attempt to resolve the issue informally first."
- }
- ]
- },
- {
- "title": "2. YOUR CONTENT",
- "content": [
- {
- "subtitle": "a. Definition of 'Your Content':",
- "text": "For the purposes of these Terms of Use, 'Your Content' refers to all materials you submit or transmit to, through, or in connection with Our Products, including but not limited to photographs, profile pictures, messages, comments, testimonials, and any other text, graphics, videos, or audio content."
- },
- {
- "subtitle": "b. License Grant:",
- "text": "By submitting, posting, or displaying Your Content on or through Our Products, you grant Us a non-exclusive, worldwide, royalty-free, fully paid-up, sublicensable, and transferable license to use, reproduce, process, distribute, create derivative works of, display, and perform Your Content in connection with Our Products and Our business, including for promoting and redistributing part or all of the Products (and derivative works thereof) in any media formats and through any media channels. This license will exist for the period during which Your Content is posted on Our Products or until We choose to remove it, whichever is shorter."
- },
- {
- "subtitle": "c. Ownership of Your Content:",
- "text": "You retain ownership rights in Your Content. However, by submitting Your Content to Our Products, you hereby grant Us the non-exclusive rights and license as set out above. Other than the rights and license you grant in these Terms of Use, We acknowledge and agree that We obtain no right, title, or interest from you under these Terms of Use in any of Your Content."
- },
- {
- "subtitle": "d. Representations and Warranties:",
- "text": "You represent and warrant that:\n\n- You either own Your Content or have the necessary licenses, rights, consents, and permissions to grant the rights and licenses as provided herein;\n- Your Content does not and will not infringe or violate any third party's intellectual property rights, proprietary rights, privacy rights, confidentiality, rights of publicity or otherwise violate these Terms of Use or applicable law; and\n- You have obtained all required permissions from any individual whose personal data is part of Your Content, allowing Us to use and disclose the data as set out in these Terms of Use."
- },
- {
- "subtitle": "e. Your Responsibility:",
- "text": "You are solely responsible for Your Content and the consequences of posting, publishing, or sharing it. We do not endorse any of Your Content or any opinion, recommendation, or advice expressed therein, and We expressly disclaim any and all liability in connection with Your Content."
- }
- ]
- },
- {
- "title": "3. INTELLECTUAL PROPERTY",
- "content": [
- {
- "subtitle": "a. Ownership:",
- "text": "All intellectual property in or related to the Products, including but not limited to the software, 'Cardano' and 'ADA' marks, logos and the names and logos of the Products ('Our Intellectual Property'), is the property of the Foundation."
- },
- {
- "subtitle": "b. Grant of Licence:",
- "text": "We provide you a limited, non-exclusive licence to access and utilise Our Intellectual Property as part of your use of the Products, all in accordance with these Terms of Use. We retain the right to revoke this license at any time for any reason. Outside of the permissions explicitly granted in these Terms of Use, all other rights remain with Us."
- },
- {
- "subtitle": "c. Restrictions:",
- "text": "Except as provided in these Terms of Use, you agree not to copy, rent, lease, sell or distribute, or create derivative works of Our Intellectual Property Rights. Some Products might be governed by open-source licenses; in such instances, the terms of those specific licenses will apply. You should refer to the specific license terms accompanying each Product or component thereof to understand your rights and obligations. Any other use of the Foundation's intellectual property requires Our express written permission."
- },
- {
- "subtitle": "d. Trademarks:",
- "text": "You are granted no rights or license to use Foundation trademarks unless in strict accordance with the Foundation's trademark policy."
- }
- ]
- },
- {
- "title": "4. DISCLAIMERS; LIMITATION OF LIABILITY",
- "content": [
- {
- "subtitle": "a. Disclaimer of Warranties:",
- "text": "YOU UNDERSTAND AND ACKNOWLEDGE THAT WE ARE PROVIDING THE PRODUCTS, SERVICES, INCLUDING RELATED INFORMATION AND CONTENT, ON AN 'AS IS' AND 'AS AVAILABLE' BASIS, WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED. THIS MAY INCLUDE PRODUCTS OFFERED IN 'BETA' VERSIONS, INTENDED TO PROVIDE THE FOUNDATION WITH FEEDBACK ON THE QUALITY AND USABILITY OF THE PRODUCTS AND APPLICATION PROGRAMMING INTERFACES (APIs). THE FOUNDATION ENTITIES MAKE NO REPRESENTATIONS AND EXPRESSLY DISCLAIM ALL WARRANTIES ABOUT THE SUITABILITY, MERCHANTABILITY, FITNESS FOR PURPOSE, RELIABILITY, AVAILABILITY, TIMELINESS, SECURITY, TITLE AND NON-INFRINGEMENT, ACCURACY OR COMPLETENESS, DATA SYNCHED TO OR MADE AVAILABLE FROM THE PRODUCTS, PRODUCT CONTENT, OR ANY CONSULTING SERVICES WE PROVIDE FOR ANY ASSOCIATED PURPOSE."
- },
- {
- "subtitle": "No Indirect Damages:",
- "text": "TO THE EXTENT PERMITTED BY LAW, IN NO EVENT WILL FOUNDATION ENTITIES BE LIABLE FOR ANY INDIRECT, INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES, OR LOSS OF PROFITS, REVENUE, DATA OR BUSINESS OPPORTUNITIES ARISING OUT OF OR RELATED TO THESE TERMS OF USE, WHETHER AN ACTION IS IN CONTRACT OR TORT AND REGARDLESS OF THE THEORY OF LIABILITY."
- },
- {
- "subtitle": "b. Third Party Products:",
- "text": "THE FOUNDATION ENTITIES MAKE NO PROMISES WITH RESPECT TO, AND EXPRESSLY DISCLAIM ALL LIABILITY, TO THE MAXIMUM EXTENT PERMITTED BY LAW, FOR: (i) CONTENT POSTED BY ANY THIRD-PARTY ON THE PRODUCTS, (ii) THE PRODUCT DESCRIPTIONS OR PRODUCTS, (iii) THIRD-PARTY SITES AND ANY THIRD-PARTY PRODUCT OR SERVICE LISTED ON OR ACCESSIBLE TO YOU THROUGH THE PRODUCTS, AND (iv) THE QUALITY OR CONDUCT OF ANY THIRD PARTY YOU ENCOUNTER IN CONNECTION WITH YOUR USE OF ANY PRODUCT OR WEBSITE ('Third Party Products)."
- },
- {
- "subtitle": "c. Limitation of Liability:",
- "text": "ANY LIABILITY OF THE FOUNDATION ENTITIES IS HEREBY LIMITED TO THE MAXIMUM EXTENT ALLOWED BY APPLICABLE LAW. THE AGGREGATE LIABILITY OF FOUNDATION ENTITIES WILL IN ANY EVENT BE LIMITED TO A SUM EQUAL TO THE TOTAL AMOUNTS PAID OR PAYABLE FOR THE PRODUCTS IN THE TWELVE MONTH PERIOD PRECEDING THE EVENT GIVING RISE TO A CLAIM; PROVIDED HOWEVER, THIS LIMITATION WILL NOT APPLY TO YOU IF NO SUCH FEES ARE PAYABLE, AND IN THIS CASE, IF WE ARE DETERMINED TO HAVE ANY LIABILITY TO YOU OR ANY THIRD PARTY ARISING FROM YOUR USE OF THE PRODUCTS, THEN OUR AGGREGATE LIABILITY WILL BE LIMITED TO ONE HUNDRED U.S. DOLLARS."
- },
- {
- "subtitle": "d. Agreement to Liability Limit:",
- "text": "YOU UNDERSTAND AND AGREE THAT ABSENT YOUR AGREEMENT TO THIS LIMITATION OF LIABILITY, WE WOULD NOT PROVIDE THE PRODUCTS TO YOU."
- }
- ]
- },
- {
- "title": "5. INDEMNIFICATION",
- "content": [
- {
- "subtitle": "",
- "text": "You agree to fully indemnify, defend and hold the Foundation Entities, including their directors, officers, employees, consultants, and other representatives, harmless from and against any claims, damages, losses, costs (including reasonable legal fees), and other expenses resulting directly or indirectly from: (a) any breach or noncompliance of these Terms of Use by you or your affiliates, inclusive of policies mentioned herein; (b) allegations that materials you provide or convey to the Products violate the intellectual property rights of a third party; (c) your or your affiliates' use of Third-Party Products; and/or (d) any negligent or intentional misconduct by you. You shall not agree to any settlement that (i) obligates Us in any manner; (ii) demands an admission from Us; or (iii) assigns liability beyond these indemnifications or restricts Us, without obtaining Our prior written approval."
- }
- ]
- },
- {
- "title": "6. MISCELLANEOUS",
- "content": [
- {
- "subtitle": "a. Amendment:",
- "text": "We may modify any part or all of these Terms of Use. The revised version will become effective and binding the next business day after it is posted. We will provide you notice of this revision by email, website banner, in-product notification or publishing revised Terms of Use at this page, if applicable. YOU AGREE THAT YOUR CONTINUED USE OF THE PRODUCTS AFTER SUCH CHANGES BECOME EFFECTIVE CONSTITUTES YOUR ACCEPTANCE OF THE CHANGES. If you do not agree with a modification to the Terms of Use, you must notify Us in writing within thirty (30) days after We send notice of the revision. If We can no longer reasonably provide the Product to you under the terms prior to modification, then the Terms of Use and/or your access to the Products will terminate upon Our notice to you and We will promptly refund any prepaid but unused fees, if any, covering use of the Product."
- },
- {
- "subtitle": "b. Application Provider Terms:",
- "text": "These Terms of Use are between you and the Foundation only, and not with an application service or application platform provider (such as Apple, Inc., or Google Inc.), which may provide you the application subject to its own terms of use."
- },
- {
- "subtitle": "c. Governing Law and Jurisdiction:",
- "text": "These Terms of Use will be interpreted in accordance with the laws of Switzerland. You agree that any disputes arising out of or in connection with these Terms of Use, not otherwise resolved in accordance with dispute resolution provision set forth in section 1(f) shall be subject to the exclusive jurisdiction of the courts located in Zug, Switzerland."
- },
- {
- "subtitle": "d. Languages:",
- "text": "The English version of these Terms of Use is the definitive and binding version. All notices, alerts, and procedures communications concerning these Terms of Use will be executed in English, even if translations into other languages are made available. Should there be any discrepancies between the English version and other translations, the English version will take precedence, as permitted by law."
- },
- {
- "subtitle": "e. Assignment:",
- "text": "You may not assign, transfer, delegate, or sublicense any rights, obligations, or remedies under these Terms of Use without the prior written consent of the Foundation. Any such attempts without this consent will be considered void. We retain the discretion to assign, transfer, or delegate Our rights, obligations, or remedies under these Terms of Use as We see fit."
- },
- {
- "subtitle": "f. Waiver:",
- "text": "Our failure to assert a right or provision under these Terms of Use will not constitute a waiver of such right or provision."
- },
- {
- "subtitle": "g. Entire Agreement and Severability:",
- "text": "These Terms of Use supersede all prior terms, agreements, discussions and writings regarding the Products and constitutes the entire agreement between you and Us regarding the Products. If any part of these Terms of Use is determined to be invalid or unenforceable by applicable law, then the invalid or unenforceable provision will be deemed superseded by a valid, enforceable provision that most closely matches the intent of the original provision and the remainder of these Terms of Use will continue in effect."
- },
- {
- "subtitle": "h. Survival:",
- "text": "The following provisions will survive expiration or termination of these Terms of Use: Section 2 (Your Content), Section 3(a)(Ownership) and (c)(Restrictions), Section 4 (Disclaimers and Limitations of Liability), Section 5 (indemnification), Section 1(f) (Dispute Resolution) and Section 6 (Miscellaneous)."
- },
- {
- "subtitle": "i. Contact:",
- "text": "Feel free to contact Us with any questions about these Terms of Use. You can also write to Us at:\n\nCardano Foundation,\nDammstrasse 16,\n6300, Zug,\nSwitzerland\nAttn: Legal"
- }
- ]
- }
- ]
- },
- "privacypolicy": {
- "done": "Done",
- "intro": {
- "title": "Privacy Policy",
- "text": "Cardano Foundation (referred to as \"Foundation\", \"We\", \"Our\", or \"Us\") is committed to innovating in digital identity management while prioritising user privacy and data protection. This Privacy Policy specifically applies to the Identity Wallet developed by the Cardano Foundation (the \"Identity Wallet\") and the website http://identity.cardanofoundation.org (the \"Products\"). The Identity Wallet is a product designed to facilitate the creation and management of digital identities using Key Event Receipt Infrastructure (KERI) and Decentralized Identifiers (DIDs), operating without linking to any real-world names or personal identifiable information (PII). The Identity Wallet does not require users to submit emails, names, phone numbers, or any documents. Instead, it provides a framework for users to manage their own digital identities autonomously. This is achieved by securely storing private key material on the user's device for identification purposes, enabling users to control their own identity information and securely communicate with other users and entities. This policy outlines our practices regarding the collection, use, disclosure, and protection of any data associated with the Identity Wallet. Note that this policy may differ from other privacy policies pertaining to different CF products or services. Please read this Privacy Policy carefully."
- },
- "sections": [
- {
- "title": "1. Data controller and contact details",
- "content": [
- {
- "subtitle": "",
- "text": "The controller of the data processing described in this Privacy Policy is Cardano Foundation, unless we inform you otherwise in certain cases. You can notify Us of any data protection-related concerns using the following contact details:\n\nCardano Foundation\nDammstrasse 16\n6300 Zug\n\ngdpr@cardanofoundation.org"
- }
- ]
- },
- {
- "title": "2. Types of Data Collected",
- "content": [
- {
- "subtitle": "",
- "text": "For the Identity Wallet, We collect and manage data differently, aligning with our commitment to user privacy and secure identity management. We do not collect typical personal data like names, addresses, or contact information. When using the Products, the Foundation may ask you to provide certain information that can be used to identify or contact you 'Personal Data'. The types of Personal Data that We collect from you depend on the circumstances of collection, the nature of the Product used or the transaction undertaken. Data We collect may include, but is not limited to:"
- },
- {
- "subtitle": "a. Device/ Network Data:",
- "text": "Information regarding your interaction with a Product. This includes technical information (e.g., IP Address, MAC Address, SSIDs, etc.), online user ID, device characteristics (such as browser/OS version), web server logs, browser plug-ins, your time zone application logs and language settings, cookie data, usage data. It also includes practical information like any login information, information about how you use Our Products and interact with Us and limited technical information necessary for the operation and security of the wallet, such as device type and operating system version. This is to ensure the proper functioning of the wallet and to provide security features."
- },
- {
- "subtitle": "",
- "text": "To clarify, We do not collect the following data, which remains stored on the user's device:"
- },
- {
- "subtitle": "- Identity Data:",
- "text": "This includes any personal details users choose to employ for setting up or supporting their digital identities, like their names, physical addresses, identification documents, or proofs of residency and credentials."
- },
- {
- "subtitle": "- Digital Identity Data:",
- "text": "Information related to the digital identities created using the wallet, including KERI and DIDs. This does not include real-world names or personal details, unless the user opts to incorporate these details."
- },
- {
- "subtitle": "- Private Key Material:",
- "text": "This comprises private keys, which are essential for identity management and verification purposes."
- }
- ]
- },
- {
- "title": "3. How we collect your Personal Data",
- "content": [
- {
- "subtitle": "",
- "text": "You may give Us personal information when you use, apply or register for a Foundation product or otherwise submit information to use through the Products or other communications with Us. For example:"
- },
- {
- "subtitle": "a.",
- "text": "We may collect information when you create a profile on Our Products;"
- },
- {
- "subtitle": "b.",
- "text": "We may collect Device/Network Data when you access and use Our websites. Some of this data is necessary for Us to run Our website or to respond to your requests, like ticket bookings. Other data is huge help to Us in providing you with better services and maintaining a well-run organisation;"
- },
- {
- "subtitle": "c.",
- "text": "We may collect information about you from third parties; and other channels including Our support."
- },
- {
- "subtitle": "d.",
- "text": "We may collect data under any other contractual agreement or arrangement;"
- }
- ]
- },
- {
- "title": "4. Use of Personal Data",
- "content": [
- {
- "subtitle": "",
- "text": "We may use your Personal Data for the following purposes:"
- },
- {
- "subtitle": "a.",
- "text": "For legitimate business purposes and to provide the Products you request. This includes but is not limited to: fulfilling Our obligations to you and to financial or other institutions, compliance with laws, audits, protect rights, prevent fraud, and for business improvement, including sending relevant information, responding to law enforcement, gathering feedback, and addressing complaints or disputes;"
- },
- {
- "subtitle": "b.",
- "text": "to protect the safety and the well being of yourself and/or other users;"
- },
- {
- "subtitle": "c.",
- "text": "for business development purposes such as statistical and marketing analysis, systems testing, maintenance and development, customer surveys or to help Us in any future dealings with you, for example by identifying your requirements and preference; for all other purposes ancillary to any of the purposes stated above (\"Ancillary Purposes\");"
- },
- {
- "subtitle": "d.",
- "text": "based on your consent: If you have given us consent to process your personal data for certain purposes, we process your personal data within the scope of and based on this consent, unless we have another legal basis and we require such a basis. Consent given can be revoked at any time, but this has no effect on data processing that has already taken place."
- },
- {
- "subtitle": "",
- "text": "(collectively, \"Purposes\")"
- }
- ]
- },
- {
- "title": "5. Data Security and Transfer",
- "content": [
- {
- "subtitle": "",
- "text": "While no system is absolutely secure, We use reasonable technical and organisational precautions to protect your data and to respect your privacy."
- },
- {
- "subtitle": "",
- "text": "We employ measures like encryption, secure physical storage, limited access zones, confidentiality agreements, and routine assessments for timely data deletion to safeguard your information."
- },
- {
- "subtitle": "",
- "text": "The Identity Wallet is designed to store Digital Identity Data and Private Key Material directly on the user's device. As such, no transfer of this data occurs to Cardano Foundation servers or external entities, providing an additional layer of privacy and security."
- },
- {
- "subtitle": "",
- "text": "Personal Data may be transferred to, and stored at a destination outside the European Economic Area (\"EEA\") where there are appropriate safeguards in place pursuant to Article 46 of the GDPR. This data might be handled by Our staff or Our suppliers outside the EEA for various tasks, including service provision. By providing your personal data, you consent to such transfers, storage, or processing."
- }
- ]
- },
- {
- "title": "6. Retention",
- "content": [
- {
- "subtitle": "",
- "text": "The Foundation will hold onto your Personal Data only as long as needed based on the reasons outlined in this Privacy Policy."
- },
- {
- "subtitle": "",
- "text": "Digital Identity Data and Private Key Material will be retained on the user's device and will not be stored on Cardano Foundation servers. Users have full control over this data, including its deletion."
- },
- {
- "subtitle": "",
- "text": "Device/Network Data will be retained only as long as necessary for operational and security purposes. This data will be subject to regular review and deletion as per our data minimization principles."
- },
- {
- "subtitle": "",
- "text": "We will store and utilize your Personal Data as long as it's required to meet legal obligations, address disagreements, and uphold Our legal agreements and policies. Additionally, We will keep usage data for Our internal analysis purposes. Typically, usage data is kept for a shorter duration unless it aids in enhancing product security or functionality, or when legal requirements necessitate longer retention."
- }
- ]
- },
- {
- "title": "7. Data Disclosure",
- "content": [
- {
- "subtitle": "",
- "text": "We will not trade or sell your Personal Data to third parties."
- },
- {
- "subtitle": "",
- "text": "We will not disclose any Digital Identity Data or Private Key Information to third parties, as this data is stored solely on the user's device."
- },
- {
- "subtitle": "",
- "text": "Your other Personal Data, if any, shall only be disclosed or transferred to the following third parties appointed or authorised by the Foundation for the fulfilment of the Purposes described herein, in accordance with GDPR principles such as consent, contractual necessity, legal obligation, vital interests, public task, and legitimate interests. This may include third party processors, such as:"
- },
- {
- "subtitle": "a.",
- "text": "Data warehouses;"
- },
- {
- "subtitle": "b.",
- "text": "IT service providers;"
- },
- {
- "subtitle": "c.",
- "text": "Data analytics and/or marketing agencies;"
- },
- {
- "subtitle": "d.",
- "text": "Third party service providers, tools or plugins that enable a better user experience for Products, such as social media plugins or online marketing tools, newsletter providers"
- },
- {
- "subtitle": "e.",
- "text": "Auditors"
- },
- {
- "subtitle": "",
- "text": "We shall take practical steps to ensure that their employees, officers, agents, consultants, contractors and such other third parties mentioned above who are involved in the collection or processing of your Personal Data will observe and adhere to the terms of this Privacy Policy and GDPR requirements."
- },
- {
- "subtitle": "",
- "text": "The Foundation may disclose your Personal Data in good faith belief that such disclosure is necessary for one of the following reasons: complying with a legal obligation; protecting and defending the rights or property of the Foundation; preventing or investigating possible wrongdoing in connection with the Products; protecting the personal safety of users of Products or the public; protecting against legal liability; or responding to legal bodies as permitted or required by law such as in compliance with a warrant or subpoena issued by a court of competent jurisdiction; and/or responding to regulatory authorities."
- },
- {
- "subtitle": "",
- "text": "In addition to the above, your Personal Data may also be disclosed or transferred to Our affiliates and subsidiaries."
- }
- ]
- },
- {
- "title": "8. Your Rights",
- "content": [
- {
- "subtitle": "",
- "text": "Users can access, manage, and delete their Digital Identity Data within the wallet at any time. Any Private Key Material or other data securely stored within your device (as described in section 2) must be removed manually by the user."
- },
- {
- "subtitle": "",
- "text": "If you want to know what Personal Data the Foundation holds about you or wish for it to be deleted, please reach out to Us at gdpr@cardanofoundation.org."
- },
- {
- "subtitle": "",
- "text": "In certain circumstances, you possess these data protection rights:"
- },
- {
- "subtitle": "a.",
- "text": "Access: You can ask for details about your personal data We have."
- },
- {
- "subtitle": "b.",
- "text": "Rectification: If the data is inaccurate or incomplete, you can request corrections."
- },
- {
- "subtitle": "c.",
- "text": "Objection: You can contest the use of your data for specific reasons; for instance, using the unsubscribe option in our emails."
- },
- {
- "subtitle": "d.",
- "text": "Restriction: You can ask Us to limit the processing of your data."
- },
- {
- "subtitle": "e.",
- "text": "Data Portability: Request a copy of your data from Us in a standard, machine-readable format."
- },
- {
- "subtitle": "f.",
- "text": "Withdraw Consent: Should We process data based on your consent, you can retract it anytime."
- },
- {
- "subtitle": "",
- "text": "Please understand We might ask you to confirm your identity before acting on these requests. If unsatisfied with how We handle your data, you can report to your local Data Protection Authority in the EU or EEA."
- }
- ]
- },
- {
- "title": "9. Third Party Links",
- "content": [
- {
- "subtitle": "",
- "text": "Products may contain links to other companies, organizations or websites (collectively, 'Third Party Links'). This Privacy Notice does not apply to such Third Party Links. If you access Third Party Links using the links provided, the operators may collect your personal information."
- },
- {
- "subtitle": "",
- "text": "The Foundation has no control over and assumes no responsibility for the content, privacy policies or practices of any third-party product or service."
- }
- ]
- },
- {
- "title": "10. Changes",
- "content": [
- {
- "subtitle": "",
- "text": "We may revise or update this Privacy Policy from time to time."
- },
- {
- "subtitle": "",
- "text": "Any modifications will be reflected on this page. We'll notify you of updates either through email or a notable alert on the Product, while also adjusting the 'effective date' at this Policy's beginning. Regularly reviewing this Policy ensures you stay informed of any alterations, which take effect once displayed on this page."
- }
- ]
- },
- {
- "title": "11. Data Privacy Contact",
- "content": [
- {
- "subtitle": "",
- "text": "For further inquiries or requests in relation to Our handling of your Personal Data or this Privacy Policy please contact Us at gdpr@cardanofoundation.org"
- }
- ]
- }
- ]
- },
- "aboutssiagent": {
- "done": "Done",
- "intro": {
- "title": "About SSI agent",
- "text": ""
- },
- "sections": []
- },
- "lockpage": {
- "title": "Welcome back",
- "description": "Please enter your passcode to login",
- "error": "Incorrect passcode",
- "forgotten": {
- "button": "I've forgotten my passcode"
- },
- "attempterror": "{{attempt}} attempt remaining",
- "attemptalert": {
- "title": "Login unavailable",
- "content": "Try again in {{time}}",
- "hour": "{{value}} hour",
- "hours": "{{value}} hours",
- "minute": "{{value}} minute",
- "minutes": "{{value}} minutes"
- },
- "alert": {
- "text": {
- "verify": "If you've forgotten your passcode, please verify your seed phrase to gain access to your wallet",
- "restart": "You currently haven't generated a seed phrase, would you like to start your onboarding again?"
- },
- "button": {
- "verify": "Verify your Seed Phrase",
- "restart": "Start again",
- "cancel": "Cancel"
- }
- }
- },
- "verifyseedphrase": {
- "onboarding": {
- "title": "Verify your recovery phrase",
- "button": {
- "continue": "Verify",
- "back": "Back",
- "clear": "Clear all"
- }
- },
- "paragraph": {
- "top": "Please select each word in the order it was presented to you."
- },
- "alert": {
- "fail": {
- "text": "Sorry, the seed phrase you have entered is incorrect!",
- "button": {
- "confirm": "Try again"
- }
- },
- "exit": {
- "text": "If you go back you will lose your current progress. Are you sure you want to do this?",
- "button": {
- "confirm": "Confirm",
- "cancel": "Cancel"
- }
- },
- "clear": {
- "text": "Are you sure you want to clear all the words you have entered so far?",
- "button": {
- "confirm": "Clear all",
- "cancel": "Cancel"
- }
- }
- }
- },
- "verifyrecoveryseedphrase": {
- "title": "Recover wallet",
- "button": {
- "continue": "Confirm",
- "lock": "Try again in 1 minute",
- "clear": "Clear all",
- "switch": "Switch to create new wallet"
- },
- "paragraph": {
- "top": "Please verify your recovery phrase to recover your wallet. To start typing click on the first option."
- },
- "suggestions": {
- "title": "Suggestions",
- "error": "All words must be compatible with the suggestions"
- },
- "alert": {
- "fail": {
- "text": "Sorry, the recovery phrase you have entered is incorrect!",
- "button": {
- "confirm": "Try again"
- }
- },
- "clear": {
- "text": "Are you sure you want to clear all the words you have entered so far?",
- "button": {
- "confirm": "Clear all",
- "cancel": "Cancel"
- }
- },
- "toomanyattempts": {
- "text": "Too many failed attempts. Please try again later.",
- "button": {
- "confirm": "Ok"
- }
- }
- }
- },
- "tabsmenu": {
- "label": {
- "identifiers": "Identity",
- "creds": "Credentials",
- "scan": "Scan",
- "notifications": "Notifications",
- "menu": "Menu"
- }
- },
- "custominput": {
- "optional": "(optional)"
- },
- "switchmodemodal": {
- "title": "Before you switch",
- "button": {
- "back": "Back",
- "continue": "Continue"
- },
- "recovery": {
- "title": "Switch to recover an existing wallet",
- "paragraphtop": "You're about to switch to the wallet recovery process. Here's what will happen:",
- "warning": {
- "one": "Passcode & Operations Password: You'll keep your existing passcode and operations password. If you chose to skip setting an operations password, that preference will remain.",
- "two": "Recovery Phrase: If you've gone beyond the generation of a new recovery phrase, this will be wiped. You'll need to verify the recovery phrase associated with your previous wallet.",
- "three": "Connect URL: You will only need the Connect URL for the SSI agent screen."
- },
- "paragraphbot": "When you switch, you'll be able to enter your recovery details to access your existing wallet."
- },
- "create": {
- "title": "Switch to create a new wallet",
- "paragraphtop": "You're about to switch to the new wallet creation process. Here's what will happen:",
- "warning": {
- "one": "Passcode & Operations Password: You'll keep your existing passcode and operations password. If you chose to skip setting an operations password, that preference will remain.",
- "two": "Recovery Phrase: You'll need to generate a recovery phrase and copy these words down somewhere safe",
- "three": "Boot URL and Connect URL: You will need both your Boot URL and Connect URL for the SSI agent screen."
- },
- "paragraphbot": "When you switch, you'll start the process to create a brand new wallet."
- },
- "checkbox": "I have read and understand."
- },
- "removependingalert": {
- "button": {
- "done": "Done",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- }
- },
- "createpassword": {
- "title": "Create password",
- "change": "New password",
- "cancel": "Cancel",
- "description": "Set your operations password so you can access additional wallet features.",
- "input": {
- "first": {
- "title": "Create password",
- "placeholder": "Type password"
- },
- "second": {
- "title": "Confirm password",
- "placeholder": "Retype your password"
- },
- "third": {
- "title": "Create a hint",
- "placeholder": "Create a password hint"
- }
- },
- "button": {
- "continue": "Create Password",
- "skip": "Skip"
- },
- "alert": {
- "text": "Are you sure you want to skip? By doing this, you will be required to use your passcode for any protected operations. You can, of course, set this up later if you prefer.",
- "button": {
- "confirm": "Yes, skip",
- "cancel": "Cancel"
- }
- },
- "error": {
- "hasSpecialChar": "Please enter a valid character",
- "isTooShort": "Must be more than 8 characters long",
- "isTooLong": "Must be less than 64 characters long",
- "hasNoUppercase": "Must contain an uppercase letter",
- "hasNoLowercase": "Must contain a lowercase letter",
- "hasNoNumber": "Must contain a number",
- "hasNoSymbol": "Must contain a valid symbol",
- "hasNoMatch": "Passwords do not match",
- "hintSameAsPassword": "Your hint cannot be your password"
- }
- },
- "ssiagent": {
- "title": "Enter your SSI agent details",
- "description": "To continue, please enter the SSI agent boot and connect URLs (in your email or from your command line).",
- "verifydescription": "To continue, please enter the SSI agent connect URL (in your email or from your command line).",
- "button": {
- "info": "Get more information",
- "validate": "Validate"
- },
- "input": {
- "boot": {
- "label": "Boot URL",
- "placeholder": "Paste or scan your boot URL"
- },
- "connect": {
- "label": "Connect URL",
- "placeholder": "Paste or scan your connect URL"
- }
- },
- "error": {
- "invalidurl": "Enter a valid URL",
- "invalidbooturl": "Enter a valid boot URL",
- "invalidconnecturl": "Enter a valid connect URL",
- "mismatchconnecturl": "This connect URL doesn’t match the boot URL"
- }
- },
- "operationspasswordregex": {
- "label": {
- "length": "8 - 64 characters long",
- "uppercase": "Contains an uppercase letter",
- "lowercase": "Contains a lowercase letter",
- "number": "Contains a number",
- "symbol": "Contains a symbol"
- }
- },
- "identifiers": {
- "tab": {
- "title": "Identity",
- "create": "Add an identifier",
- "favourites": "Favourites",
- "allidentifiers": "All identifiers",
- "pendingidentifiers": "Pending identifiers",
- "multisigidentifiers": "For groups"
- },
- "detelepending": {
- "title": "Identifier options",
- "description": "Your identifier is pending and may still complete. If you no longer require this identifier, tap “Delete identifier” to remove it.",
- "mutilsigdescription": "This multi-sig is pending. It will complete once it meets the required member threshold. To remove it from your pending list, tap “Delete identifier”.",
- "button": "Delete identifier",
- "secondchecktitle": "Are you sure you want to delete this identifier?"
- },
- "layout": {
- "created": "CREATED"
- },
- "details": {
- "done": "Done",
- "information": "Information",
- "type": "Type",
- "publickeybase": "Public Key Base 58",
- "delegator": {
- "title": "Delegator Identifier Prefix",
- "icon": "DI"
- },
- "signingkeyslist": {
- "title": "List of Signing Keys",
- "icon": "K"
- },
- "signingkeysthreshold": {
- "title": "Keys Signing Threshold",
- "icon": "KT"
- },
- "nextkeyslist": {
- "title": "List of Next Key Digests",
- "icon": "N"
- },
- "nextkeysthreshold": {
- "title": "Next Keys Signing Threshold",
- "icon": "NT"
- },
- "creationtimestamp": {
- "title": "Creation Timestamp"
- },
- "rotationtimestamp": {
- "title": "Last Key Rotation Timestamp",
- "icon": "DT"
- },
- "sequencenumber": {
- "title": "Sequence Number",
- "icon": "S"
- },
- "backerslist": {
- "title": "List of Backers",
- "icon": "B"
- },
- "backeraddress": {
- "title": "Backer Address"
- },
- "delete": {
- "button": "Delete identifier",
- "alert": {
- "title": "Are you sure you want to delete this identifier?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- }
- },
- "options": {
- "title": "Identifier options",
- "cancel": "Cancel",
- "view": "View JSON",
- "edit": "Edit identifier",
- "share": "Share identifier",
- "delete": "Delete identifier",
- "rotatekeys": "Rotate keys",
- "inner": {
- "label": "Display name",
- "theme": "Edit theme",
- "confirm": "Confirm changes",
- "error": "Must be less than 32 characters long",
- "color": "Choose card colour"
- }
- },
- "rotatekeys": {
- "done": "Done",
- "description": "Rotating your signing keys boosts security by reducing the risk of key compromise."
- },
- "clouderror": "We couldn’t locate this identifier in the cloud. It might become available again soon, but some information could be lost.\n\nIf you no longer require this identifier, tap “Delete identifier” to remove."
- }
- },
- "credentials": {
- "tab": {
- "title": "Credentials",
- "create": "Add a credential",
- "viewarchived": "Archived & Revoked",
- "favourites": "Favourites",
- "allcreds": "All credentials",
- "pendingcred": "Pending credentials",
- "detelepending": {
- "title": "Credential options",
- "description": "Your credential is pending and may still complete. If you no longer require this credential, tap “Delete credential” to remove it.",
- "button": "Delete credential",
- "secondchecktitle": "Are you sure you want to delete this credential?"
- }
- },
- "layout": {
- "issued": "Issued"
- },
- "details": {
- "done": "Done",
- "restore": "Restore",
- "delete": "Delete",
- "type": "Type",
- "title": "Title",
- "description": "Description",
- "revoked": "Revoked",
- "attributes": {
- "label": "Attributes",
- "issuee": "Issuee",
- "issuancedate": "Issuance Date",
- "lei": "LEI"
- },
- "schemaversion": "Schema Version",
- "issuer": "Issuer",
- "status": {
- "label": "Status",
- "issued": "Issued",
- "revoked": "Revoked",
- "timestamp": "Timestamp"
- },
- "options": {
- "title": "Credential options",
- "view": "View JSON",
- "archive": "Archive credential"
- },
- "button": {
- "delete": "Delete credential",
- "archive": "Archive credential"
- },
- "alert": {
- "archive": {
- "title": "Are you sure you want to archive this credential?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- },
- "delete": {
- "title": "Are you sure you want to delete this credential?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- },
- "restore": {
- "title": "Are you sure you want to view this with your other credentials?",
- "confirm": "Yes, restore credential",
- "cancel": "Cancel"
- }
- },
- "toast": {
- "clipboard": "Copied to clipboard"
- },
- "clouderror": "We couldn’t locate this credential in the cloud. It might become available again soon, but some information could be lost.\n\nIf you no longer require this credential, tap “Delete credential” to remove."
- },
- "create": {
- "alert": {
- "title": "Once this credential is visible you'll receive a notification. Until then you won't be able to access more details.",
- "confirm": "Ok"
- }
- },
- "archived": {
- "title": "History",
- "done": "Done",
- "select": "Select",
- "selectall": "Select All",
- "deselectall": "Deselect all",
- "cancel": "Cancel",
- "delete": "Delete",
- "restore": "Restore",
- "oneselected": "1 Credential Selected",
- "manyselected": "{{amount}} Credentials Selected",
- "archivedtitle": "Archived credentials",
- "revokedtitle": "Revoked credentials",
- "revokedlabel": "Revoked",
- "alert": {
- "restoresingle": {
- "title": "Are you sure you want to view this with your other credentials?",
- "confirm": "Yes, restore credential",
- "cancel": "Cancel"
- },
- "restoremultiple": {
- "title": "Are you sure you want to view these with your other credentials?",
- "confirm": "Yes, restore credentials",
- "cancel": "Cancel"
- },
- "deletesingle": {
- "title": "This will delete the selected credential from your wallet permanently",
- "confirm": "Delete from wallet",
- "cancel": "Cancel"
- },
- "deletemultiple": {
- "title": "This will delete the selected credentials from your wallet permanently",
- "confirm": "Delete from wallet",
- "cancel": "Cancel"
- },
- "restorerevoked": {
- "title": "You cannot restore revoked credentials.",
- "confirm": "Ok"
- }
- }
- }
- },
- "scan": {
- "tab": {
- "title": "Align the QR code within the frame to scan"
- },
- "alert": {
- "title": "Would you like to grant permission for using your camera?"
- },
- "pastemeerkatid": "Paste Meerkat ID"
- },
- "notifications": {
- "tab": {
- "header": "Notifications",
- "empty": "No notifications",
- "chips": {
- "all": "All",
- "identifiers": "Identifiers",
- "credentials": "Credentials"
- },
- "sections": {
- "new": "New",
- "earlier": {
- "title": "Earlier",
- "end": "End of notifications",
- "buttons": {
- "showealier": "View previous notifications"
- }
- }
- },
- "optionmodal": {
- "title": "Notification options",
- "done": "Done",
- "showdetail": "Show details",
- "markasread": "Mark as read",
- "markasunread": "Mark as unread",
- "delete": "Delete notification",
- "deletealert": {
- "text": "Deleting this notification cannot be undone. Once deleted you will no longer be able to require any actions required from this notification.",
- "accept": "Delete",
- "cancel": "Cancel"
- }
- },
- "labels": {
- "exnipexgrant": "{{connection}} wants to issue you a credential",
- "multisigicp": "{{connection}} is requesting to create a group identifier with you",
- "exnipexapply": "{{connection}} has requested a credential from you",
- "exnipexgrantrevoke": "Your {{credential}} credential has been revoked"
- }
- },
- "details": {
- "buttons": {
- "close": "Close",
- "accept": "Accept",
- "decline": "Decline",
- "cancel": "Cancel",
- "back": "Back",
- "choosecredential": "Choose credential",
- "providecredential": "Provide credential"
- },
- "credential": {
- "request": {
- "alert": {
- "text": "You don’t have any credentials available that match this request. In order to offer this credential you will need to acquire one first.",
- "confirm": "OK"
- },
- "information": {
- "title": "Credential request",
- "requestfrom": "Request from",
- "requestedcredential": "Requested credential",
- "informationrequired": "Information required",
- "alert": {
- "textdecline": "Are you sure you want to decline this credential request? You won't be able to change your decision later."
- }
- },
- "choosecredential": {
- "description": "Select the most appropriate {{requestCred}} to provide the required information",
- "title": "Choose credential"
- }
- },
- "receive": {
- "title": "Receive credential",
- "receivefrom": "Receive a credential from",
- "credentialpending": "Credential pending",
- "alert": {
- "textdecline": "Are you sure you want to decline this credential issuance? You won't be able to change your decision later."
- }
- }
- },
- "identifier": {
- "title": "Identifier request",
- "subtitle": "Review this group identifier request",
- "requestfrom": "Request from",
- "othermembers": "Other members",
- "pending": "Pending",
- "accepted": "Accepted",
- "threshold": "Threshold",
- "alert": {
- "textdecline": "Are you sure you want to decline this request? You won't be able to change your decision later."
- },
- "errorpage": {
- "title": "Please review",
- "alerttext": "You are missing one or more connections required for this group request. Please scan all necessary QR codes to proceed.",
- "instructions": {
- "title": "Instructions",
- "detailtext": "In order to continue and complete the group setup, please follow the instructions below.",
- "stepone": "Ensure you have scanned all participant's QR codes.",
- "steptwo": "After scanning, try to open this notification again."
- },
- "help": {
- "title": "Need help?",
- "detailtext": "If you need assistance, please message us on our <0>{{discordSupportChannel}}0>.",
- "supportchannel": "Discord support channel"
- },
- "continuesetup": "Continue setup"
- }
- }
- }
- },
- "menu": {
- "tab": {
- "header": "Menu",
- "items": {
- "profile": {
- "title": "Profile"
- },
- "crypto": {
- "title": "Crypto"
- },
- "connections": {
- "title": "Connections"
- },
- "connectwallet": {
- "title": "Cardano connect",
- "cip": "CIP-45",
- "tabheader": "Cardano Connect",
- "connectbtn": "Connect with Cardano",
- "disconnectbeforecreatealert": {
- "message": "You are currently connected. To connect with a new wallet, you will be disconnected from your current selection. Would you like to disconnect and continue?",
- "confirm": "Continue",
- "cancel": "Cancel"
- },
- "connectionbrokenalert": {
- "message": "Your connection has been disconnected as you have deleted the chosen identifier paired with this connection. Please choose a new identifier to re-establish this connection.",
- "confirm": "Ok"
- },
- "inputpidmodal": {
- "header": "Paste Meerkat ID",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "scanQR": "Scan QR code"
- },
- "connectionhistory": {
- "title": "Connection History",
- "action": {
- "delete": "Delete"
- },
- "deletealert": {
- "message": "Are you sure you want to delete this connection?",
- "confirm": "Yes, I’m sure",
- "cancel": "Cancel"
- },
- "missingidentifieralert": {
- "message": "To connect with Cardano, you need to create a KERI AID identifier. Would you like to create one now?",
- "confirm": "Create identifier",
- "cancel": "Cancel"
- },
- "confirmconnect": {
- "done": "Done",
- "connectbtn": "Connect",
- "disconnectbtn": "Disconnect",
- "connectingbtn": "Connecting...",
- "pending": "Pending"
- }
- },
- "request": {
- "stageone": {
- "title": "Connect Cardano",
- "message": "Would you like to establish a CIP-45 Connection?",
- "alert": {
- "titleconfirm": "Are you sure you want to decline this connection?",
- "confirm": "Decline",
- "cancel": "Cancel"
- }
- },
- "stagetwo": {
- "title": "Choose identifier",
- "message": "Which KERI AID identifier would you like to make the connection with?",
- "confirm": "Confirm"
- },
- "button": {
- "back": "Back",
- "accept": "Accept",
- "decline": "Decline"
- }
- }
- }
- }
- }
- },
- "settings": {
- "sections": {
- "header": "Settings",
- "security": {
- "title": "Security",
- "biometry": "Biometric authentication",
- "changepin": {
- "title": "Change passcode",
- "createpasscode": "Create new passcode",
- "reenterpasscode": "Re-enter new passcode",
- "cancel": "Cancel",
- "back": "Back",
- "description": "Create a new passcode to secure your wallet",
- "cantremember": {
- "label": "Can't remember?"
- }
- },
- "managepassword": {
- "title": "Manage operations password",
- "page": {
- "title": "Manage password",
- "enable": "Enable operations password",
- "change": "Change operations password",
- "alert": {
- "enablemessage": "By turning on an operations password you will be required to use this to verify any future operations instead of your passcode.",
- "disablemessage": "By turning off your operations password you will be required to use your passcode to verify any future operations.",
- "existingpassword": "Your new operations password must be different to your existing one.",
- "confirm": "Continue",
- "cancel": "Cancel",
- "ok": "Ok"
- }
- }
- },
- "seedphrase": {
- "title": "Recovery phrase",
- "page": {
- "title": "Recovery phrase",
- "tips": {
- "label": "Useful tips:",
- "one": "Write down or make a copy of your recovery phrase and store it in a safe location.",
- "two": "Double-check that your words are copied in the correct order (1 to 18).",
- "three": "Ensure there are no spelling errors."
- },
- "hiddentext": "Press the ‘view recovery phrase’ button when you’re ready to see your recovery phrase. Remember to make sure nobody is looking!",
- "button": {
- "view": "View recovery phrase",
- "hide": "Hide recovery phrase"
- },
- "confirmmodal": {
- "title": "Stay safe",
- "subtitle": "Confirm and acknowledge the following:",
- "firstcondition": "Nobody else can see my screen",
- "secondcondition": "Sharing my recovery phrase with others puts my identity at risk",
- "thirdcondition": "Losing my recovery phrase means I will lose access to my wallet",
- "button": {
- "confirm": "View recovery phrase",
- "cancel": "Cancel"
- }
- }
- }
- }
- },
- "support": {
- "title": "Support & Legal",
- "contact": "Connect via Discord",
- "learnmore": "Learn More About Cardano IDW",
- "terms": {
- "title": "Terms and Privacy Policy",
- "submenu": {
- "title": "Terms & privacy",
- "termandcondition": "Terms & conditions",
- "privacy": "Privacy policy"
- }
- },
- "version": "App Version"
- }
- }
- },
- "connections": {
- "tab": {
- "title": "Connections",
- "create": "Add a connection",
- "indentifierselector": {
- "title": "Choose identifier",
- "message": "Which KERI AID identifier would you like to make the connection with?",
- "button": {
- "cancel": "Cancel",
- "confirm": "Confirm"
- }
- },
- "alert": {
- "message": "To create a connection, you need to create an individual KERI AID identifier. Would you like to create one now?",
- "confirm": "Create identifier",
- "cancel": "Cancel"
- },
- "detelepending": {
- "title": "Connection options",
- "description": "This connection is pending you’ll be notified once they accept. If you no longer require this connection, tap “Delete connection” to remove.",
- "button": "Delete connection",
- "secondchecktitle": "Are you sure you want to delete this connection?"
- }
- },
- "details": {
- "done": "Done",
- "label": "Label",
- "date": "Date Created",
- "endpoints": "Service Endpoints",
- "history": "Connection History",
- "connectedwith": "Connected with \"{{ issuer }}\"",
- "issuance": "Received a \"{{ credential }}\"",
- "present": "\"{{ issuer }}\" has requested a credential presentation",
- "agree": "Presentation offer agreed",
- "update": "\"{{ credential }}\" has been revoked",
- "notavailable": "N/A",
- "details": "Details",
- "notes": "Notes",
- "nocurrentnotes": "No current notes",
- "nocurrentnotesext": "There are currently no notes associated with this connection.",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "title": "Title",
- "message": "Message",
- "delete": "Delete connection",
- "options": {
- "title": "Connection options",
- "labels": {
- "add": "Add a note",
- "manage": "Manage notes",
- "delete": "Delete connection"
- },
- "alert": {
- "deleteconnection": {
- "title": "Are you sure you want to delete this connection?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- },
- "deletenote": {
- "title": "Are you sure you want to delete this note?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- }
- }
- },
- "clouderror": "We couldn’t locate this connection in the cloud. It might become available again soon, but some information could be lost.\n\nIf you no longer require this connection, tap “Delete connection” to remove."
- }
- },
- "connectmodal": {
- "title": "Add a",
- "scan": "Scan QR Code",
- "connect": "Scan to connect",
- "provide": "Provide QR Code",
- "close": "Done"
- },
- "verifypassword": {
- "title": "Enter password",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "button": {
- "forgot": "I've forgotten my password"
- },
- "error": {
- "hasNoMatch": "Password didn't match"
- },
- "alert": {
- "choice": {
- "title": "Would you like to see your password hint or reset your password?"
- },
- "button": {
- "seepasswordhint": "See my password hint",
- "resetmypassword": "Reset my password",
- "tryagain": "Great, I'll try again!"
- },
- "hint": {
- "title": "Your password hint is"
- }
- }
- },
- "verifypasscode": {
- "cancel": "Cancel",
- "title": "Enter passcode",
- "description": "Please enter your passcode to verify",
- "error": "Incorrect passcode",
- "forgotten": {
- "button": "I've forgotten my passcode"
- },
- "alert": {
- "text": {
- "verify": "If you've forgotten your passcode, please verify your seed phrase to gain access to your wallet",
- "restart": "You currently haven't generated a seed phrase, would you like to start your onboarding again?"
- },
- "button": {
- "verify": "Verify your Seed Phrase",
- "restart": "Start again",
- "cancel": "Cancel"
- }
- }
- },
- "forgotauth": {
- "cancel": "Cancel",
- "passcode": {
- "title": "Forgot passcode",
- "description": "Please verify your seed phrase to reset your passcode. To start typing click on the first option."
- },
- "password": {
- "title": "Forgot password",
- "description": "Please verify your seed phrase to reset your password. To start typing click on the first option."
- },
- "newpasscode": {
- "title": "New passcode",
- "description": "Create a new passcode to re-secure your wallet and perform operations",
- "reenterpasscode": "Re-enter passcode"
- },
- "newpassword": {
- "title": "New password",
- "description": "Create a new operations password so you can access additional wallet features."
- }
- },
- "shareidentifier": {
- "title": "Share connection",
- "subtitle": {
- "identifier": "To share, either scan the QR code or select from the provided options below",
- "connection": "Show this QR code to the person you want to connect with, or click the 'More share options' link"
- },
- "done": "Done",
- "divider": "or",
- "copykey": "Copy connection URL",
- "more": "More share options"
- },
- "createidentifier": {
- "cancel": "Cancel",
- "back": "Back",
- "done": "Done",
- "add": {
- "title": "Add an identifier",
- "confirmbutton": "Create identifier"
- },
- "share": {
- "title": "Share identifier",
- "subtitle": "You've scanned",
- "copybutton": "Copy OOBI connection",
- "notes": {
- "top": "Before proceeding, please make sure that everyone you want to include as a signer scans this QR code.",
- "middle": "After everyone has scanned your QR code, please be sure to scan everyone else's QR code as well.",
- "bottom": "To continue with the initiation of the mult-sig you must have scanned at least one other QR code."
- },
- "scanbutton": "Scan QR codes",
- "initiatebutton": "Initiate group",
- "scanalert": {
- "text": "Have all the individuals you want to include as members scanned your QR code?",
- "confirm": "Confirm and scan",
- "cancel": "Cancel"
- }
- },
- "receive": {
- "title": "Setup identifier",
- "confirmbutton": "Add identifier",
- "notes": {
- "top": "Before proceeding, please make sure everyone included as a member scans this QR code.",
- "middle": "Remember to scan everyone else’s QR code too!"
- }
- },
- "scan": {
- "cancel": "Cancel",
- "confirm": "Confirm",
- "pasteoobi": "Paste OOBI",
- "initiate": "Initiate group",
- "scanqrcode": "Scan QR code",
- "pastecontents": "Paste contents"
- },
- "connections": {
- "title": "Connections",
- "subtitle": "These are the members you scanned. Please review before proceeding.",
- "continue": "Confirm connections"
- },
- "threshold": {
- "title": "Set a Threshold",
- "subtitle": "Set the threshold to determine the level of consensus required",
- "label": "Threshold",
- "continue": "Confirm threshold"
- },
- "confirm": {
- "title": "Confirm",
- "subtitle": "Confirm all details for your Keri AID group identifier are accurate",
- "displayname": "Display Name",
- "selectedmembers": "Selected Members",
- "treshold": "Threshold",
- "continue": "Confirm identifier",
- "cancel": "Cancel",
- "alert": {
- "text": "Cancelling now means you'll need to restart the group initiation process.",
- "cancel": "Yes, cancel",
- "back": "Back"
- }
- },
- "displayname": {
- "title": "Display name",
- "placeholder": "Create a name for this identifier"
- },
- "identifiertype": {
- "title": "Identifier type",
- "didkey": "did:key",
- "keri": "KERI AID"
- },
- "color": {
- "title": "Choose card colour"
- },
- "aidtype": {
- "title": "AID type",
- "default": {
- "label": "Individual",
- "tooltip": "Lorem ipsum dolor sit amet"
- },
- "multisig": {
- "label": "Group",
- "tooltip": "Lorem ipsum dolor sit amet"
- },
- "delegated": {
- "label": "Delegated",
- "tooltip": "Lorem ipsum dolor sit amet"
- }
- },
- "aidinfo": {
- "title": "AID types",
- "text": "A description of each KERI AID type you can create identifiers for.",
- "individual": {
- "label": "Individual",
- "text": "Use these identifiers to represent all your individual personas. Currently, a single key pair is used to sign statements with these identifiers, and it can be updated. In the future, these identifiers might become more robust with multi-device support and social recovery options."
- },
- "group": {
- "label": "Group",
- "text": "Use a group identifier to represent an entity controlled by multiple people, like a committee. You can set a threshold to decide how many members are needed to create a valid signature or recover the identifier."
- },
- "delegated": {
- "label": "Delegated",
- "text": "The delegated option is currently being developed. Identifiers might be delegated for advanced recovery in case of a security breach, which is ideal for an organisational structure in enterprises."
- },
- "button": {
- "done": "Done"
- }
- },
- "theme": {
- "title": "Choose a theme"
- },
- "error": {
- "maxlength": "Must be less than 32 characters long"
- }
- },
- "offline": {
- "title": "You’re offline",
- "description": "You’ve lost connection to the cloud agent. Once the connection has been re-established your wallet will return to normal usage."
- },
- "shareqr": {
- "divider": "or",
- "more": "More share options"
- },
- "toast": {
- "copiedtoclipboard": "Copied to clipboard",
- "identifierrequested": "Identifier request pending",
- "identifiercreated": "New identifier created successfully",
- "identifierupdated": "Identifier successfully updated",
- "identifierdeleted": "Identifier successfully deleted",
- "credentialdeleted": "Credential deleted successfully",
- "credentialsdeleted": "Credentials deleted successfully",
- "credentialarchived": "Credential archived successfully",
- "credentialrestored": "Credential restored successfully",
- "credentialsrestored": "Credentials restored successfully",
- "connectiondeleted": "Connection deleted successfully",
- "qrsuccess": "QR code scanned successfully",
- "qrerror": "QR code not recognised",
- "connectionrequestincoming": "New Connection Request",
- "connectionrequestpending": "Connection request pending",
- "newconnectionadded": "New connection added",
- "credentialrequestpending": "Credential request pending",
- "newcredentialadded": "New credential added",
- "notesupdated": "Notes updated successfully",
- "noteremoved": "Note removed successfully",
- "maxfavouritesreached": "Maximum of 5 favourites reached",
- "usernamecreationsuccess": "Welcome, {{username}}!",
- "usernamecreationerror": "Unable to set name. Please try again.",
- "walletconnectiondeleted": "Delete successfully",
- "connectwalletsuccess": "Connected successfully",
- "disconnectwallet": "Disconnected successfully",
- "unableconnectwallet": "Unable to connect",
- "peeridsuccess": "Peer ID successful",
- "peeriderror": "Peer ID not recognised",
- "peeridnotrecognised": "Peer ID not recognised",
- "setupbiometricsuccess": "Biometrics setup successfully",
- "rotatekeysuccess": "Keys rotated successfully",
- "rotatekeyerror": "Unable to rotate keys",
- "newmultisignmember": "New member added to group",
- "multisignidentifiercreated": "Identifier added to \"For groups\"",
- "delegatedidentifiercreated": "Identifier added to \"For delegates\"",
- "passcodeupdated": "Passcode updated successfully",
- "passwordupdated": "Password updated successfully",
- "passworddisabled": "Password turned off",
- "passwordcreated": "Password created successfully",
- "sharecredsuccess": "Credential shared successfully",
- "sharecrederror": "Unable to share credential",
- "deleteconnectionerror": "Unable to delete connection",
- "deletecrederror": "Unable to delete credential",
- "deleteidentifiererror": "Unable to delete identifier",
- "archivedcrederror": "Unable to archive credential",
- "signsuccessful": "Sign successful",
- "savepasswordhinterror": "Unable to delete password hint",
- "editidentifiererror": "Unable to update identifier"
- },
- "request": {
- "sign": {
- "title": "Sign",
- "identifier": "Identifier",
- "transaction": {
- "data": "Data"
- }
- },
- "button": {
- "acceptoffer": "Accept credential",
- "cancel": "Cancel",
- "back": "Back",
- "accept": "Accept",
- "decline": "Decline",
- "sign": "Sign",
- "dontallow": "Don't allow"
- },
- "alert": {
- "cancel": "Cancel"
- },
- "pending": "{{action}} pending",
- "success": "{{action}} successful"
- },
- "setusername": {
- "title": "Welcome! What should we call you?",
- "input": {
- "title": "Name"
- },
- "button": {
- "confirm": "Confirm"
- },
- "toast": {
- "usernameCreated": "Welcome, {{username}}!",
- "usernameError": "Unable to set name. Please try again."
- }
- },
- "biometry": {
- "reason": "Please authenticate",
- "canceltitle": "Cancel",
- "iosfallbacktitle": "Use passcode",
- "androidtitle": "Authentication",
- "androidsubtitle": "Authentication using biometrics",
- "setupandroidbiometryheader": "Do you want to allow “IDW” to use biometrics?",
- "setupandroidbiometryconfirm": "Ok",
- "setupandroidbiometrycancel": "Don't allow",
- "cancelbiometryheader": "You canceled Biometrics. You can set this up later via the settings page."
- }
-}
diff --git a/03_source/mobile_notworking.del/src/main.tsx b/03_source/mobile_notworking.del/src/main.tsx
deleted file mode 100644
index d4ff2e3..0000000
--- a/03_source/mobile_notworking.del/src/main.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from 'react';
-import ReactDOM from 'react-dom/client';
-import App from './App';
-import * as serviceWorker from './serviceWorker';
-
-ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
-
-
- ,
-);
-
-// If you want your app to work offline and load faster, you can change
-// unregister() to register() below. Note this comes with some pitfalls.
-// Learn more about service workers: https://bit.ly/CRA-PWA
-serviceWorker.register();
diff --git a/03_source/mobile_notworking.del/src/models/Location.ts b/03_source/mobile_notworking.del/src/models/Location.ts
deleted file mode 100644
index 6ab6509..0000000
--- a/03_source/mobile_notworking.del/src/models/Location.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export interface Location {
- id: number;
- name?: string;
- lat: number;
- lng: number;
-}
diff --git a/03_source/mobile_notworking.del/src/models/Schedule.ts b/03_source/mobile_notworking.del/src/models/Schedule.ts
deleted file mode 100644
index f210ff8..0000000
--- a/03_source/mobile_notworking.del/src/models/Schedule.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-export interface Schedule {
- date: string;
- groups: ScheduleGroup[];
-}
-
-export interface ScheduleGroup {
- time: string;
- sessions: Session[];
-}
-
-export interface Session {
- id: number;
- timeStart: string;
- timeEnd: string;
- name: string;
- location: string;
- description: string;
- speakerNames: string[];
- tracks: string[];
-}
diff --git a/03_source/mobile_notworking.del/src/models/SessionGroup.ts b/03_source/mobile_notworking.del/src/models/SessionGroup.ts
deleted file mode 100644
index 93d46ad..0000000
--- a/03_source/mobile_notworking.del/src/models/SessionGroup.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { Session } from './Schedule';
-export interface SessionGroup {
- startTime: string;
- sessions: Session[];
-}
diff --git a/03_source/mobile_notworking.del/src/models/Speaker.ts b/03_source/mobile_notworking.del/src/models/Speaker.ts
deleted file mode 100644
index 35d8c78..0000000
--- a/03_source/mobile_notworking.del/src/models/Speaker.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export interface Speaker {
- id: number;
- name: string;
- profilePic: string;
- twitter: string;
- instagram: string;
- about: string;
- title: string;
- location: string;
- email: string;
- phone: string;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/About/index.tsx b/03_source/mobile_notworking.del/src/pages/About/index.tsx
deleted file mode 100644
index e10a997..0000000
--- a/03_source/mobile_notworking.del/src/pages/About/index.tsx
+++ /dev/null
@@ -1,138 +0,0 @@
-import {
- IonButton,
- IonButtons,
- IonContent,
- IonDatetime,
- IonHeader,
- IonIcon,
- IonItem,
- IonLabel,
- IonList,
- IonMenuButton,
- IonPage,
- IonPopover,
- IonSelect,
- IonSelectOption,
- IonText,
- IonToolbar,
-} from '@ionic/react';
-import { format, parseISO } from 'date-fns';
-import { ellipsisHorizontal, ellipsisVertical } from 'ionicons/icons';
-import React, { useState } from 'react';
-import AboutPopover from '../../components/AboutPopover';
-import './style.scss';
-
-interface AboutProps {}
-
-const About: React.FC = () => {
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
- const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison');
- const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00');
-
- const selectOptions = {
- header: 'Select a Location',
- };
-
- const presentPopover = (e: React.MouseEvent) => {
- setPopoverEvent(e.nativeEvent);
- setShowPopover(true);
- };
-
- function displayDate(date: string, dateFormat: string) {
- return format(parseISO(date), dateFormat);
- }
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* Instead of loading an image each time the select changes, use opacity to transition them */}
-
-
-
-
-
-
-
About
-
-
- The Ionic Conference is a one-day conference on {displayDate(conferenceDate, 'MMM dd, yyyy')} featuring
- talks from the Ionic team. It is focused on Ionic applications being built with Ionic Framework. This
- includes migrating apps to the latest version of the framework, Angular concepts, Webpack, Sass, and many
- other technologies used in Ionic 2. Tickets are completely sold out, and we’re expecting more than 1000
- developers – making this the largest Ionic conference ever!
-
-
-
Details
-
-
-
- setLocation(e.detail.value as any)}
- >
- Madison, WI
- Austin, TX
- Chicago, IL
- Seattle, WA
-
-
-
- Date
- {displayDate(conferenceDate, 'MMM dd, yyyy')}
-
- setConferenceDate(e.detail.value! as string)}
- presentation="date"
- >
-
-
-
-
-
Internet
-
-
-
- Wifi network
- ica{displayDate(conferenceDate, 'y')}
-
-
- Password
- makegoodthings
-
-
-
-
-
- setShowPopover(false)}>
- setShowPopover(false)} />
-
-
- );
-};
-
-export default React.memo(About);
diff --git a/03_source/mobile_notworking.del/src/pages/About/style.scss b/03_source/mobile_notworking.del/src/pages/About/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_notworking.del/src/pages/About/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/Account.scss b/03_source/mobile_notworking.del/src/pages/Account.scss
deleted file mode 100644
index 7c588ef..0000000
--- a/03_source/mobile_notworking.del/src/pages/Account.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-#account-page {
- img {
- max-width: 140px;
- border-radius: 50%;
- }
-}
diff --git a/03_source/mobile_notworking.del/src/pages/Account.tsx b/03_source/mobile_notworking.del/src/pages/Account.tsx
deleted file mode 100644
index 85c1658..0000000
--- a/03_source/mobile_notworking.del/src/pages/Account.tsx
+++ /dev/null
@@ -1,101 +0,0 @@
-import {
- IonAlert,
- IonButtons,
- IonContent,
- IonHeader,
- IonItem,
- IonList,
- IonMenuButton,
- IonPage,
- IonTitle,
- IonToolbar,
-} from '@ionic/react';
-import React, { useState } from 'react';
-import { RouteComponentProps } from 'react-router';
-import { connect } from '../data/connect';
-import { setUsername } from '../data/user/user.actions';
-import './Account.scss';
-
-interface OwnProps extends RouteComponentProps {}
-
-interface StateProps {
- username?: string;
-}
-
-interface DispatchProps {
- setUsername: typeof setUsername;
-}
-
-interface AccountProps extends OwnProps, StateProps, DispatchProps {}
-
-const Account: React.FC = ({ setUsername, username }) => {
- const [showAlert, setShowAlert] = useState(false);
-
- const clicked = (text: string) => {
- console.log(`Clicked ${text}`);
- };
-
- return (
-
-
-
-
-
-
- Account
-
-
-
- {username && (
-
-
-
{username}
-
- clicked('Update Picture')}>Update Picture
- setShowAlert(true)}>Change Username
- clicked('Change Password')}>Change Password
-
- Support
-
-
- Logout
-
-
-
- )}
-
- {
- setUsername(data.username);
- },
- },
- ]}
- inputs={[
- {
- type: 'text',
- name: 'username',
- value: username,
- placeholder: 'username',
- },
- ]}
- onDidDismiss={() => setShowAlert(false)}
- />
-
- );
-};
-
-export default connect({
- mapStateToProps: state => ({
- username: state.user.username,
- }),
- mapDispatchToProps: {
- setUsername,
- },
- component: Account,
-});
diff --git a/03_source/mobile_notworking.del/src/pages/Login.scss b/03_source/mobile_notworking.del/src/pages/Login.scss
deleted file mode 100644
index f512514..0000000
--- a/03_source/mobile_notworking.del/src/pages/Login.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-#login-page,
-#signup-page,
-#support-page {
- .login-logo {
- padding: 20px 0;
- min-height: 200px;
- text-align: center;
- }
-
- .login-logo img {
- max-width: 150px;
- }
-
- .list {
- margin-bottom: 0;
- }
-}
diff --git a/03_source/mobile_notworking.del/src/pages/Login.tsx b/03_source/mobile_notworking.del/src/pages/Login.tsx
deleted file mode 100644
index 339a57f..0000000
--- a/03_source/mobile_notworking.del/src/pages/Login.tsx
+++ /dev/null
@@ -1,137 +0,0 @@
-import {
- IonButton,
- IonButtons,
- IonCol,
- IonContent,
- IonHeader,
- IonInput,
- IonItem,
- IonList,
- IonMenuButton,
- IonPage,
- IonRow,
- IonText,
- IonTitle,
- IonToolbar,
-} from '@ionic/react';
-import React, { useState } from 'react';
-import { RouteComponentProps } from 'react-router';
-import { connect } from '../data/connect';
-import { setIsLoggedIn, setUsername } from '../data/user/user.actions';
-import './Login.scss';
-
-interface OwnProps extends RouteComponentProps {}
-
-interface DispatchProps {
- setIsLoggedIn: typeof setIsLoggedIn;
- setUsername: typeof setUsername;
-}
-
-interface LoginProps extends OwnProps, DispatchProps {}
-
-const Login: React.FC = ({ setIsLoggedIn, history, setUsername: setUsernameAction }) => {
- const [username, setUsername] = useState('');
- const [password, setPassword] = useState('');
- const [formSubmitted, setFormSubmitted] = useState(false);
- const [usernameError, setUsernameError] = useState(false);
- const [passwordError, setPasswordError] = useState(false);
-
- const login = async (e: React.FormEvent) => {
- e.preventDefault();
- setFormSubmitted(true);
- if (!username) {
- setUsernameError(true);
- }
- if (!password) {
- setPasswordError(true);
- }
-
- if (username && password) {
- await setIsLoggedIn(true);
- await setUsernameAction(username);
- history.push('/tabs/schedule', { direction: 'none' });
- }
- };
-
- return (
-
-
-
-
-
-
- Login
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default connect({
- mapDispatchToProps: {
- setIsLoggedIn,
- setUsername,
- },
- component: Login,
-});
diff --git a/03_source/mobile_notworking.del/src/pages/MainTabs/index.tsx b/03_source/mobile_notworking.del/src/pages/MainTabs/index.tsx
deleted file mode 100644
index bbad0f7..0000000
--- a/03_source/mobile_notworking.del/src/pages/MainTabs/index.tsx
+++ /dev/null
@@ -1,94 +0,0 @@
-// REQ102-navigation-bar
-
-import { IonIcon, IonLabel, IonRouterOutlet, IonTabBar, IonTabButton, IonTabs } from '@ionic/react';
-import { calendar, informationCircle, location, people } from 'ionicons/icons';
-import React, { useContext } from 'react';
-import { Redirect, Route } from 'react-router';
-import About from '../About';
-import MapView from '../MapView';
-import SchedulePage from '../SchedulePage';
-import SessionDetail from '../SessionDetail';
-import SpeakerDetail from '../SpeakerDetail';
-import SpeakerList from '../SpeakerList';
-
-//
-import { AppContext } from '../../data/AppContext';
-// import Chat from '../chat.del.3';
-import Events from '../events';
-import FavouriteEvents from '../favourite_events';
-import Messages from '../messages';
-import NearBy from '../near_by';
-import Orders from '../orders';
-import Profile from '../profile';
-import UserProfile from '../user_profile';
-
-interface MainTabsProps {}
-
-const MainTabs: React.FC = () => {
- const { showBottomTabBar } = useContext(AppContext);
-
- return (
-
-
-
- {/*
- Using the render method prop cuts down the number of renders your components will have due to route changes.
- Use the component prop when your component depends on the RouterComponentProps passed in automatically.
- */}
-
- } exact={true} />
- } exact={true} />
- } exact={true} />
- } exact={true} />
- } exact={true} />
-
- } exact={true} />
-
- {/* FIXME: chat room missing */}
- {/* */}
-
- } exact={true} />
-
- } exact={true} />
-
- } exact={true} />
-
-
- } exact={true} />
-
-
-
-
-
-
-
-
-
- {'Events'}
-
-
-
-
- {'NearBy'}
-
-
-
-
- {'Orders'}
-
-
-
-
- {'Message'}
-
-
-
-
- {'Profile'}
-
-
-
- );
-};
-
-export default MainTabs;
diff --git a/03_source/mobile_notworking.del/src/pages/MapView.scss b/03_source/mobile_notworking.del/src/pages/MapView.scss
deleted file mode 100644
index d9ac521..0000000
--- a/03_source/mobile_notworking.del/src/pages/MapView.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-#map-view {
- .map-canvas {
- position: absolute;
-
- height: 100%;
- width: 100%;
-
- background-color: transparent;
-
- opacity: 0;
- transition: opacity 250ms ease-in;
- }
-
- .show-map {
- opacity: 1;
- }
-}
diff --git a/03_source/mobile_notworking.del/src/pages/MapView.tsx b/03_source/mobile_notworking.del/src/pages/MapView.tsx
deleted file mode 100644
index 7c08c43..0000000
--- a/03_source/mobile_notworking.del/src/pages/MapView.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import { IonButtons, IonContent, IonHeader, IonMenuButton, IonPage, IonTitle, IonToolbar } from '@ionic/react';
-import React from 'react';
-import Map from '../components/Map';
-import { connect } from '../data/connect';
-import * as selectors from '../data/selectors';
-import { Location } from '../models/Location';
-import './MapView.scss';
-
-interface OwnProps {}
-
-interface StateProps {
- locations: Location[];
- mapCenter: Location;
-}
-
-interface DispatchProps {}
-
-interface MapViewProps extends OwnProps, StateProps, DispatchProps {}
-
-const MapView: React.FC = ({ locations, mapCenter }) => {
- return (
-
-
-
-
-
-
- Map
-
-
-
-
-
-
-
- );
-};
-
-export default connect({
- mapStateToProps: state => ({
- locations: state.data.locations,
- mapCenter: selectors.mapCenter(state),
- }),
- component: MapView,
-});
diff --git a/03_source/mobile_notworking.del/src/pages/SBAccount/index.tsx b/03_source/mobile_notworking.del/src/pages/SBAccount/index.tsx
deleted file mode 100644
index 16c9ff9..0000000
--- a/03_source/mobile_notworking.del/src/pages/SBAccount/index.tsx
+++ /dev/null
@@ -1,161 +0,0 @@
-import {
- IonButton,
- IonContent,
- IonHeader,
- IonInput,
- IonItem,
- IonLabel,
- IonPage,
- IonTitle,
- IonToolbar,
- useIonLoading,
- useIonRouter,
- useIonToast,
-} from '@ionic/react';
-import { useEffect, useState } from 'react';
-import { Avatar } from '../../components/Avatar';
-import { supabase } from '../../supabaseClient';
-
-import './style.scss';
-
-export function AccountPage() {
- const [showLoading, hideLoading] = useIonLoading();
- const [showToast] = useIonToast();
-
- const [session] = useState(() => supabase.auth.session());
- const router = useIonRouter();
-
- const [profile, setProfile] = useState({
- username: '',
- website: '',
- avatar_url: '',
- });
-
- useEffect(() => {
- getProfile();
- }, [session]);
-
- const getProfile = async () => {
- console.log('get');
- // await showLoading();
- try {
- const user = supabase.auth.user();
- let { data, error, status } = await supabase
- .from('profiles')
- .select(`username, website, avatar_url`)
- .eq('id', user!.id)
- .single();
-
- if (error && status !== 406) {
- throw error;
- }
-
- if (data) {
- setProfile({
- username: data.username,
- website: data.website,
- avatar_url: data.avatar_url,
- });
- }
- } catch (error: any) {
- showToast({ message: error.message, duration: 5000 });
- } finally {
- // await hideLoading();
- }
- };
-
- // const signOut = async () => {
- // await supabase.auth.signOut();
- // router.push('/', 'forward', 'replace');
- // };
-
- const updateProfile = async (e?: any, avatar_url: string = '') => {
- e?.preventDefault();
-
- console.log('update ');
- console.log('show loading here');
- // await showLoading();
-
- try {
- const user = supabase.auth.user();
-
- const updates = {
- id: user!.id,
- ...profile,
- avatar_url: avatar_url,
- updated_at: new Date(),
- };
-
- let { error } = await supabase.from('profiles').upsert(updates, {
- returning: 'minimal', // Don't return the value after inserting
- });
-
- if (error) {
- throw error;
- }
- } catch (error: any) {
- showToast({ message: error.message, duration: 5000 });
- } finally {
- console.log('hide loading here');
- // await hideLoading();
- }
- };
-
- return (
-
-
-
- Account
-
-
-
-
-
-
-
-
- {
- router.push('/sblogout', 'forward', 'replace');
- }}
- >
- Log Out
-
-
-
-
- );
-}
diff --git a/03_source/mobile_notworking.del/src/pages/SBAccount/style.scss b/03_source/mobile_notworking.del/src/pages/SBAccount/style.scss
deleted file mode 100644
index e69de29..0000000
diff --git a/03_source/mobile_notworking.del/src/pages/SBLogin/index.tsx b/03_source/mobile_notworking.del/src/pages/SBLogin/index.tsx
deleted file mode 100644
index 9bd6a31..0000000
--- a/03_source/mobile_notworking.del/src/pages/SBLogin/index.tsx
+++ /dev/null
@@ -1,93 +0,0 @@
-import React, { useState } from 'react';
-
-import {
- IonButton,
- IonContent,
- IonInput,
- IonItem,
- IonLabel,
- IonList,
- IonPage,
- useIonLoading,
- useIonRouter,
- useIonToast,
-} from '@ionic/react';
-
-import { supabase } from '../../supabaseClient';
-
-function LoginPage() {
- const [email, setEmail] = useState('user1@example.com');
- const [password, setPassword] = useState('Aa1234567');
-
- const [showLoading, hideLoading] = useIonLoading();
- const [showToast] = useIonToast();
-
- const router = useIonRouter();
-
- const handleLogin = async (e: React.FormEvent) => {
- e.preventDefault();
-
- await showLoading();
-
- try {
- // // OPT
- // // await supabase.auth.signIn({ email });
- console.log({ email, password });
- const { error } = await supabase.auth.signInWithPassword({
- email,
- password,
- });
-
- if (error) {
- console.error(error);
- router.push('/login_error', 'forward', 'replace');
- // return redirect('/login?message=Could not authenticate user');
- }
- router.push('/tabs/events', 'forward', 'replace');
- // return redirect('/protected');
- } catch (e: any) {
- await showToast({
- message: e.error_description || e.message,
- duration: 5000,
- });
- } finally {
- await hideLoading();
- }
- };
-
- return (
-
-
-
-
-
-
-
- );
-}
-export default React.memo(LoginPage);
diff --git a/03_source/mobile_notworking.del/src/pages/SBLogout/index.tsx b/03_source/mobile_notworking.del/src/pages/SBLogout/index.tsx
deleted file mode 100644
index 8c818f9..0000000
--- a/03_source/mobile_notworking.del/src/pages/SBLogout/index.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import { useIonRouter } from '@ionic/react';
-import { useContext, useEffect } from 'react';
-import { AppContext } from '../../data/AppContext';
-import { supabase } from '../../supabaseClient';
-
-function SBLogout() {
- const router = useIonRouter();
- const { session } = useContext(AppContext);
-
- useEffect(() => {
- supabase.auth.signOut();
- router.push('/sblogin');
- }, []);
-
- return <>SBLogout>;
-}
-
-export default SBLogout;
diff --git a/03_source/mobile_notworking.del/src/pages/SchedulePage.scss b/03_source/mobile_notworking.del/src/pages/SchedulePage.scss
deleted file mode 100644
index 8ad2909..0000000
--- a/03_source/mobile_notworking.del/src/pages/SchedulePage.scss
+++ /dev/null
@@ -1,58 +0,0 @@
-#schedule-page {
- ion-fab-button {
- --background: var(--ion-color-step-150, #fff);
- --background-hover: var(--ion-color-step-200, #f2f2f2);
- --background-focused: var(--ion-color-step-250, #d9d9d9);
-
- --color: var(--ion-color-primary, #3880ff);
- }
-
- /*
- * Material Design uses the ripple for activated
- * so only style the iOS activated background
- */
- .ios ion-fab-button {
- --background-activated: var(--ion-color-step-250, #d9d9d9);
- }
-
- ion-item-sliding.track-ionic ion-label {
- border-left: 2px solid var(--ion-color-primary);
- padding-left: 10px;
- }
- ion-item-sliding.track-angular ion-label {
- border-left: 2px solid var(--ion-color-angular);
- padding-left: 10px;
- }
- ion-item-sliding.track-communication ion-label {
- border-left: 2px solid var(--ion-color-communication);
- padding-left: 10px;
- }
- ion-item-sliding.track-tooling ion-label {
- border-left: 2px solid var(--ion-color-tooling);
- padding-left: 10px;
- }
- ion-item-sliding.track-services ion-label {
- border-left: 2px solid var(--ion-color-services);
- padding-left: 10px;
- }
- ion-item-sliding.track-design ion-label {
- border-left: 2px solid var(--ion-color-design);
- padding-left: 10px;
- }
- ion-item-sliding.track-workshop ion-label {
- border-left: 2px solid var(--ion-color-workshop);
- padding-left: 10px;
- }
- ion-item-sliding.track-food ion-label {
- border-left: 2px solid var(--ion-color-food);
- padding-left: 10px;
- }
- ion-item-sliding.track-documentation ion-label {
- border-left: 2px solid var(--ion-color-documentation);
- padding-left: 10px;
- }
- ion-item-sliding.track-navigation ion-label {
- border-left: 2px solid var(--ion-color-navigation);
- padding-left: 10px;
- }
-}
diff --git a/03_source/mobile_notworking.del/src/pages/SchedulePage.tsx b/03_source/mobile_notworking.del/src/pages/SchedulePage.tsx
deleted file mode 100644
index 1bbc2e1..0000000
--- a/03_source/mobile_notworking.del/src/pages/SchedulePage.tsx
+++ /dev/null
@@ -1,167 +0,0 @@
-import React, { useRef, useState } from 'react';
-
-import {
- IonButton,
- IonButtons,
- IonContent,
- IonHeader,
- IonIcon,
- IonMenuButton,
- IonModal,
- IonPage,
- IonRefresher,
- IonRefresherContent,
- IonSearchbar,
- IonSegment,
- IonSegmentButton,
- IonTitle,
- IonToast,
- IonToolbar,
- getConfig,
-} from '@ionic/react';
-import { options, search } from 'ionicons/icons';
-
-import SessionList from '../components/SessionList';
-import SessionListFilter from '../components/SessionListFilter';
-import './SchedulePage.scss';
-
-import ShareSocialFab from '../components/ShareSocialFab';
-
-import { connect } from '../data/connect';
-import * as selectors from '../data/selectors';
-import { setSearchText } from '../data/sessions/sessions.actions';
-import { Schedule } from '../models/Schedule';
-
-interface OwnProps {}
-
-interface StateProps {
- schedule: Schedule;
- favoritesSchedule: Schedule;
- mode: 'ios' | 'md';
-}
-
-interface DispatchProps {
- setSearchText: typeof setSearchText;
-}
-
-type SchedulePageProps = OwnProps & StateProps & DispatchProps;
-
-const SchedulePage: React.FC = ({ favoritesSchedule, schedule, setSearchText, mode }) => {
- const [segment, setSegment] = useState<'all' | 'favorites'>('all');
- const [showSearchbar, setShowSearchbar] = useState(false);
- const [showFilterModal, setShowFilterModal] = useState(false);
- const ionRefresherRef = useRef(null);
- const [showCompleteToast, setShowCompleteToast] = useState(false);
-
- const pageRef = useRef(null);
-
- const ios = mode === 'ios';
-
- const doRefresh = () => {
- setTimeout(() => {
- ionRefresherRef.current!.complete();
- setShowCompleteToast(true);
- }, 2500);
- };
-
- return (
-
-
-
- {!showSearchbar && (
-
-
-
- )}
- {ios && (
- setSegment(e.detail.value as any)}>
- All
- Favorites
-
- )}
- {!ios && !showSearchbar && Schedule }
- {showSearchbar && (
- setSearchText(e.detail.value)}
- onIonCancel={() => setShowSearchbar(false)}
- >
- )}
-
-
- {!ios && !showSearchbar && (
- setShowSearchbar(true)}>
-
-
- )}
- {!showSearchbar && (
- setShowFilterModal(true)}>
- {mode === 'ios' ? 'Filter' : }
-
- )}
-
-
-
- {!ios && (
-
- setSegment(e.detail.value as any)}>
- All
- Favorites
-
-
- )}
-
-
-
-
-
- Schedule
-
-
- setSearchText(e.detail.value)}
- >
-
-
-
-
-
-
-
- setShowCompleteToast(false)}
- />
-
-
-
-
-
- setShowFilterModal(false)}
- presentingElement={pageRef.current!}
- >
- setShowFilterModal(false)} />
-
-
-
-
- );
-};
-
-export default connect({
- mapStateToProps: state => ({
- schedule: selectors.getSearchedSchedule(state),
- favoritesSchedule: selectors.getGroupedFavorites(state),
- mode: getConfig()!.get('mode'),
- }),
- mapDispatchToProps: {
- setSearchText,
- },
- component: React.memo(SchedulePage),
-});
diff --git a/03_source/mobile_notworking.del/src/pages/SessionDetail.scss b/03_source/mobile_notworking.del/src/pages/SessionDetail.scss
deleted file mode 100644
index 49a5a4f..0000000
--- a/03_source/mobile_notworking.del/src/pages/SessionDetail.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-#session-detail-page {
- .session-track-ionic {
- color: var(--ion-color-primary);
- }
-
- .session-track-angular {
- color: var(--ion-color-angular);
- }
-
- .session-track-communication {
- color: var(--ion-color-communication);
- }
-
- .session-track-tooling {
- color: var(--ion-color-tooling);
- }
-
- .session-track-services {
- color: var(--ion-color-services);
- }
-
- .session-track-design {
- color: var(--ion-color-design);
- }
-
- .session-track-workshop {
- color: var(--ion-color-workshop);
- }
-
- .session-track-food {
- color: var(--ion-color-food);
- }
-
- .session-track-documentation {
- color: var(--ion-color-documentation);
- }
-
- .session-track-navigation {
- color: var(--ion-color-navigation);
- }
-
- .show-favorite {
- position: relative;
- }
-
- .icon-heart-empty {
- position: absolute;
- top: 5px;
- right: 5px;
- transform: scale(1);
- transition: transform 0.3s ease;
- }
-
- .icon-heart {
- position: absolute;
- top: 5px;
- right: 5px;
- transform: scale(0);
- transition: transform 0.3s ease;
- }
-
- .show-favorite .icon-heart {
- transform: scale(1);
- }
-
- .show-favorite .icon-heart-empty {
- transform: scale(0);
- }
-
- h1 {
- margin: 0;
- }
-}
diff --git a/03_source/mobile_notworking.del/src/pages/SessionDetail.tsx b/03_source/mobile_notworking.del/src/pages/SessionDetail.tsx
deleted file mode 100644
index 0f5ca78..0000000
--- a/03_source/mobile_notworking.del/src/pages/SessionDetail.tsx
+++ /dev/null
@@ -1,122 +0,0 @@
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonContent,
- IonHeader,
- IonIcon,
- IonItem,
- IonLabel,
- IonList,
- IonPage,
- IonText,
- IonToolbar,
-} from '@ionic/react';
-import { cloudDownload, share, star, starOutline } from 'ionicons/icons';
-import React from 'react';
-import { RouteComponentProps, withRouter } from 'react-router';
-import { connect } from '../data/connect';
-import * as selectors from '../data/selectors';
-import { addFavorite, removeFavorite } from '../data/sessions/sessions.actions';
-import { Session } from '../models/Schedule';
-import './SessionDetail.scss';
-
-interface OwnProps extends RouteComponentProps {}
-
-interface StateProps {
- session?: Session;
- favoriteSessions: number[];
-}
-
-interface DispatchProps {
- addFavorite: typeof addFavorite;
- removeFavorite: typeof removeFavorite;
-}
-
-type SessionDetailProps = OwnProps & StateProps & DispatchProps;
-
-const SessionDetail: React.FC = ({ session, addFavorite, removeFavorite, favoriteSessions }) => {
- if (!session) {
- return Session not found
;
- }
-
- const isFavorite = favoriteSessions.indexOf(session.id) > -1;
-
- const toggleFavorite = () => {
- isFavorite ? removeFavorite(session.id) : addFavorite(session.id);
- };
- const shareSession = () => {};
- const sessionClick = (text: string) => {
- console.log(`Clicked ${text}`);
- };
-
- return (
-
-
-
-
-
-
-
- toggleFavorite()}>
- {isFavorite ? (
-
- ) : (
-
- )}
-
- shareSession}>
-
-
-
-
-
-
-
-
{session.name}
- {session.tracks.map(track => (
-
- {track}
-
- ))}
-
{session.description}
-
- {session.timeStart} – {session.timeEnd}
-
- {session.location}
-
-
-
- sessionClick('watch')} button>
- Watch
-
- sessionClick('add to calendar')} button>
- Add to Calendar
-
- sessionClick('mark as unwatched')} button>
- Mark as Unwatched
-
- sessionClick('download video')} button>
- Download Video
-
-
- sessionClick('leave feedback')} button>
- Leave Feedback
-
-
-
-
- );
-};
-
-export default connect({
- mapStateToProps: (state, OwnProps) => ({
- session: selectors.getSession(state, OwnProps),
- favoriteSessions: state.data.favorites,
- }),
- mapDispatchToProps: {
- addFavorite,
- removeFavorite,
- },
- component: withRouter(SessionDetail),
-});
diff --git a/03_source/mobile_notworking.del/src/pages/Signup.tsx b/03_source/mobile_notworking.del/src/pages/Signup.tsx
deleted file mode 100644
index 2359206..0000000
--- a/03_source/mobile_notworking.del/src/pages/Signup.tsx
+++ /dev/null
@@ -1,138 +0,0 @@
-import {
- IonButton,
- IonButtons,
- IonCol,
- IonContent,
- IonHeader,
- IonInput,
- IonItem,
- IonList,
- IonMenuButton,
- IonPage,
- IonRow,
- IonText,
- IonTitle,
- IonToolbar,
-} from '@ionic/react';
-import React, { useState } from 'react';
-import { RouteComponentProps } from 'react-router';
-import { connect } from '../data/connect';
-import { setIsLoggedIn, setUsername } from '../data/user/user.actions';
-import './Login.scss';
-
-interface OwnProps extends RouteComponentProps {}
-
-interface DispatchProps {
- setIsLoggedIn: typeof setIsLoggedIn;
- setUsername: typeof setUsername;
-}
-
-interface LoginProps extends OwnProps, DispatchProps {}
-
-const Login: React.FC = ({ setIsLoggedIn, history, setUsername: setUsernameAction }) => {
- const [username, setUsername] = useState('');
- const [password, setPassword] = useState('');
- const [formSubmitted, setFormSubmitted] = useState(false);
- const [usernameError, setUsernameError] = useState(false);
- const [passwordError, setPasswordError] = useState(false);
-
- const login = async (e: React.FormEvent) => {
- e.preventDefault();
- setFormSubmitted(true);
- if (!username) {
- setUsernameError(true);
- }
- if (!password) {
- setPasswordError(true);
- }
-
- if (username && password) {
- await setIsLoggedIn(true);
- await setUsernameAction(username);
- history.push('/tabs/schedule', { direction: 'none' });
- }
- };
-
- return (
-
-
-
-
-
-
- Signup
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default connect({
- mapDispatchToProps: {
- setIsLoggedIn,
- setUsername,
- },
- component: Login,
-});
diff --git a/03_source/mobile_notworking.del/src/pages/SpeakerDetail.scss b/03_source/mobile_notworking.del/src/pages/SpeakerDetail.scss
deleted file mode 100644
index abdefda..0000000
--- a/03_source/mobile_notworking.del/src/pages/SpeakerDetail.scss
+++ /dev/null
@@ -1,77 +0,0 @@
-#speaker-detail {
- /*
- * Speaker Background
- */
-
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .speaker-background {
- position: relative;
-
- display: flex;
-
- padding-top: var(--ion-safe-area-top);
-
- align-items: center;
- justify-content: center;
-
- flex-direction: column;
-
- height: calc(250px + var(--ion-safe-area-top));
-
- background: center / cover url('/assets/img/speaker-background.png') no-repeat;
- }
-
- .speaker-background img {
- width: 70px;
- border-radius: 50%;
- margin-top: calc(-1 * var(--ion-safe-area-top));
- }
-
- .speaker-background h2 {
- position: absolute;
-
- bottom: 10px;
-
- color: white;
- }
-
- .md .speaker-background {
- box-shadow: rgba(0, 0, 0, 0.2) 0 3px 1px -2px, rgba(0, 0, 0, 0.14) 0 2px 2px 0px, rgba(0, 0, 0, 0.12) 0 1px 5px 0;
- }
-
- .ios .speaker-background {
- box-shadow: rgba(0, 0, 0, 0.12) 0 4px 16px;
- }
-
- /*
- * Speaker Details
- */
-
- .speaker-detail p {
- margin-left: 6px;
- margin-right: 6px;
- }
-
- .speaker-detail hr {
- margin-top: 20px;
- margin-bottom: 20px;
-
- background: var(--ion-color-step-150, #d7d8da);
- }
-}
diff --git a/03_source/mobile_notworking.del/src/pages/SpeakerDetail.tsx b/03_source/mobile_notworking.del/src/pages/SpeakerDetail.tsx
deleted file mode 100644
index c8911d4..0000000
--- a/03_source/mobile_notworking.del/src/pages/SpeakerDetail.tsx
+++ /dev/null
@@ -1,163 +0,0 @@
-import React, { useState } from 'react';
-import { RouteComponentProps } from 'react-router';
-
-import './SpeakerDetail.scss';
-
-import { ActionSheetButton } from '@ionic/core';
-import {
- IonActionSheet,
- IonBackButton,
- IonButton,
- IonButtons,
- IonChip,
- IonContent,
- IonHeader,
- IonIcon,
- IonLabel,
- IonPage,
- IonToolbar,
-} from '@ionic/react';
-import {
- callOutline,
- callSharp,
- logoGithub,
- logoInstagram,
- logoTwitter,
- shareOutline,
- shareSharp,
-} from 'ionicons/icons';
-
-import { connect } from '../data/connect';
-import * as selectors from '../data/selectors';
-
-import { Speaker } from '../models/Speaker';
-
-interface OwnProps extends RouteComponentProps {
- speaker?: Speaker;
-}
-
-interface StateProps {}
-
-interface DispatchProps {}
-
-interface SpeakerDetailProps extends OwnProps, StateProps, DispatchProps {}
-
-const SpeakerDetail: React.FC = ({ speaker }) => {
- const [showActionSheet, setShowActionSheet] = useState(false);
- const [actionSheetButtons, setActionSheetButtons] = useState([]);
- const [actionSheetHeader, setActionSheetHeader] = useState('');
-
- function openSpeakerShare(speaker: Speaker) {
- setActionSheetButtons([
- {
- text: 'Copy Link',
- handler: () => {
- console.log('Copy Link clicked');
- },
- },
- {
- text: 'Share via ...',
- handler: () => {
- console.log('Share via clicked');
- },
- },
- {
- text: 'Cancel',
- role: 'cancel',
- handler: () => {
- console.log('Cancel clicked');
- },
- },
- ]);
- setActionSheetHeader(`Share ${speaker.name}`);
- setShowActionSheet(true);
- }
-
- function openContact(speaker: Speaker) {
- setActionSheetButtons([
- {
- text: `Email ( ${speaker.email} )`,
- handler: () => {
- window.open('mailto:' + speaker.email);
- },
- },
- {
- text: `Call ( ${speaker.phone} )`,
- handler: () => {
- window.open('tel:' + speaker.phone);
- },
- },
- ]);
- setActionSheetHeader(`Share ${speaker.name}`);
- setShowActionSheet(true);
- }
-
- function openExternalUrl(url: string) {
- window.open(url, '_blank');
- }
-
- if (!speaker) {
- return Speaker not found
;
- }
-
- return (
-
-
-
-
-
-
-
-
- openContact(speaker)}>
-
-
- openSpeakerShare(speaker)}>
-
-
-
-
-
-
-
-
-
{speaker.name}
-
-
-
-
{speaker.about} Say hello on social media!
-
-
-
-
openExternalUrl(`https://twitter.com/${speaker.twitter}`)}>
-
- Twitter
-
-
-
openExternalUrl('https://github.com/ionic-team/ionic-framework')}>
-
- GitHub
-
-
-
openExternalUrl('https://instagram.com/ionicframework')}>
-
- Instagram
-
-
-
- setShowActionSheet(false)}
- buttons={actionSheetButtons}
- />
-
- );
-};
-
-export default connect({
- mapStateToProps: (state, ownProps) => ({
- speaker: selectors.getSpeaker(state, ownProps),
- }),
- component: SpeakerDetail,
-});
diff --git a/03_source/mobile_notworking.del/src/pages/SpeakerList.scss b/03_source/mobile_notworking.del/src/pages/SpeakerList.scss
deleted file mode 100644
index 051d7ac..0000000
--- a/03_source/mobile_notworking.del/src/pages/SpeakerList.scss
+++ /dev/null
@@ -1,48 +0,0 @@
-#speaker-list {
- .speaker-card {
- display: flex;
- flex-direction: column;
- }
-
- /* Due to the fact the cards are inside of columns the margins don't overlap
- * properly so we want to remove the extra margin between cards
- */
- ion-col:not(:last-of-type) .speaker-card {
- margin-bottom: 0;
- }
-
- .speaker-card .speaker-item {
- --min-height: 85px;
- }
-
- .speaker-card .speaker-item h2 {
- font-size: 18px;
- font-weight: 500;
- letter-spacing: 0.02em;
- }
-
- .speaker-card .speaker-item p {
- font-size: 13px;
- letter-spacing: 0.02em;
- }
-
- .speaker-card ion-card-header {
- padding: 0;
- }
-
- .speaker-card ion-card-content {
- flex: 1 1 auto;
-
- padding: 0;
- }
-
- .ios ion-list {
- margin-bottom: 10px;
- }
-
- .md ion-list {
- border-top: 1px solid var(--ion-color-step-150, #d7d8da);
-
- padding: 0;
- }
-}
diff --git a/03_source/mobile_notworking.del/src/pages/SpeakerList.tsx b/03_source/mobile_notworking.del/src/pages/SpeakerList.tsx
deleted file mode 100644
index 7b78b4b..0000000
--- a/03_source/mobile_notworking.del/src/pages/SpeakerList.tsx
+++ /dev/null
@@ -1,71 +0,0 @@
-import {
- IonButtons,
- IonCol,
- IonContent,
- IonGrid,
- IonHeader,
- IonMenuButton,
- IonPage,
- IonRow,
- IonTitle,
- IonToolbar,
-} from '@ionic/react';
-import React from 'react';
-import SpeakerItem from '../components/SpeakerItem';
-import { connect } from '../data/connect';
-import * as selectors from '../data/selectors';
-import { Session } from '../models/Schedule';
-import { Speaker } from '../models/Speaker';
-import './SpeakerList.scss';
-
-interface OwnProps {}
-
-interface StateProps {
- speakers: Speaker[];
- speakerSessions: { [key: string]: Session[] };
-}
-
-interface DispatchProps {}
-
-interface SpeakerListProps extends OwnProps, StateProps, DispatchProps {}
-
-const SpeakerList: React.FC = ({ speakers, speakerSessions }) => {
- return (
-
-
-
-
-
-
- Speakers
-
-
-
-
-
-
- Speakers
-
-
-
-
-
- {speakers.map(speaker => (
-
-
-
- ))}
-
-
-
-
- );
-};
-
-export default connect({
- mapStateToProps: state => ({
- speakers: selectors.getSpeakers(state),
- speakerSessions: selectors.getSpeakerSessions(state),
- }),
- component: React.memo(SpeakerList),
-});
diff --git a/03_source/mobile_notworking.del/src/pages/Support.tsx b/03_source/mobile_notworking.del/src/pages/Support.tsx
deleted file mode 100644
index 0dd434e..0000000
--- a/03_source/mobile_notworking.del/src/pages/Support.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-import {
- IonButton,
- IonButtons,
- IonCol,
- IonContent,
- IonHeader,
- IonItem,
- IonList,
- IonMenuButton,
- IonPage,
- IonRow,
- IonText,
- IonTextarea,
- IonTitle,
- IonToast,
- IonToolbar,
-} from '@ionic/react';
-import React, { useState } from 'react';
-import { connect } from '../data/connect';
-import './Login.scss';
-
-interface OwnProps {}
-
-interface DispatchProps {}
-
-interface SupportProps extends OwnProps, DispatchProps {}
-
-const Support: React.FC = () => {
- const [message, setMessage] = useState('');
- const [formSubmitted, setFormSubmitted] = useState(false);
- const [messageError, setMessageError] = useState(false);
- const [showToast, setShowToast] = useState(false);
-
- const send = (e: React.FormEvent) => {
- e.preventDefault();
- setFormSubmitted(true);
- if (!message) {
- setMessageError(true);
- }
- if (message) {
- setMessage('');
- setShowToast(true);
- }
- };
-
- return (
-
-
-
-
-
-
- Support
-
-
-
-
-
-
-
-
-
-
- setShowToast(false)}
- />
-
- );
-};
-
-export default connect({
- component: Support,
-});
diff --git a/03_source/mobile_notworking.del/src/pages/Tutorial.scss b/03_source/mobile_notworking.del/src/pages/Tutorial.scss
deleted file mode 100644
index 5b9f8a7..0000000
--- a/03_source/mobile_notworking.del/src/pages/Tutorial.scss
+++ /dev/null
@@ -1,56 +0,0 @@
-#tutorial-page {
- ion-toolbar {
- --background: transparent;
- --border-color: transparent;
- }
-
- .slide-title {
- margin-top: 2.8rem;
- }
-
- .slider {
- display: grid;
- grid-template-columns: repeat(4, 100%);
- grid-template-rows: 1fr;
-
- height: 100%;
-
- overflow: scroll;
- scroll-snap-type: x mandatory;
- }
-
- section {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- text-align: center;
-
- width: 100%;
-
- scroll-snap-align: center;
- scroll-snap-stop: always;
- }
-
- .slide-image {
- max-height: 50%;
- max-width: 60%;
- margin: -5vh 0 0;
- pointer-events: none;
- }
-
- b {
- font-weight: 500;
- }
-
- p {
- padding: 0 40px;
- font-size: 14px;
- line-height: 1.5;
- color: var(--ion-color-step-600, #60646b);
-
- b {
- color: var(--ion-text-color, #000000);
- }
- }
-}
diff --git a/03_source/mobile_notworking.del/src/pages/Tutorial.tsx b/03_source/mobile_notworking.del/src/pages/Tutorial.tsx
deleted file mode 100644
index 5a8a0c3..0000000
--- a/03_source/mobile_notworking.del/src/pages/Tutorial.tsx
+++ /dev/null
@@ -1,105 +0,0 @@
-import {
- IonButton,
- IonButtons,
- IonContent,
- IonHeader,
- IonIcon,
- IonPage,
- IonToolbar,
- useIonViewWillEnter,
-} from '@ionic/react';
-import { arrowForward } from 'ionicons/icons';
-import React from 'react';
-import { RouteComponentProps } from 'react-router';
-import { connect } from '../data/connect';
-import { setMenuEnabled } from '../data/sessions/sessions.actions';
-import { setHasSeenTutorial } from '../data/user/user.actions';
-import './Tutorial.scss';
-
-interface OwnProps extends RouteComponentProps {}
-interface DispatchProps {
- setHasSeenTutorial: typeof setHasSeenTutorial;
- setMenuEnabled: typeof setMenuEnabled;
-}
-
-interface TutorialProps extends OwnProps, DispatchProps {}
-
-const Tutorial: React.FC = ({ history, setHasSeenTutorial, setMenuEnabled }) => {
- useIonViewWillEnter(() => {
- setMenuEnabled(false);
- });
-
- const startApp = async () => {
- await setHasSeenTutorial(true);
- await setMenuEnabled(true);
- history.push('/tabs/schedule', { direction: 'none' });
- };
-
- return (
-
-
-
-
-
- Skip
-
-
-
-
-
-
-
-
-
-
- Welcome to ICA
-
-
- The ionic conference app is a practical preview of the ionic framework in action, and a
- demonstration of proper code use.
-
-
-
-
-
-
-
What is Ionic?
-
- Ionic Framework is an open source SDK that enables developers to build high quality mobile apps
- with web technologies like HTML, CSS, and JavaScript.
-
-
-
-
-
-
-
What is Ionic Appflow?
-
- Ionic Appflow is a powerful set of services and features built on top of Ionic Framework that
- brings a totally new level of app development agility to mobile dev teams.
-
-
-
-
-
-
-
Ready to Play?
-
- Continue
-
-
-
-
-
-
-
- );
-};
-
-export default connect({
- mapDispatchToProps: {
- setHasSeenTutorial,
- setMenuEnabled,
- },
- component: Tutorial,
-});
diff --git a/03_source/mobile_notworking.del/src/pages/UnlockMembership/index.tsx b/03_source/mobile_notworking.del/src/pages/UnlockMembership/index.tsx
deleted file mode 100644
index f797211..0000000
--- a/03_source/mobile_notworking.del/src/pages/UnlockMembership/index.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-// REQ0114/Unlock-membership
-
-import { IonButton } from '@ionic/react';
-import React from 'react';
-
-interface UnlockMemberShipProps {
- setIsLoggedIn: Function;
- setUsername: Function;
-}
-
-const UnlockMemberShip: React.FC = () => {
- return (
- <>
- {'Unlock membership place holder'}
-
- {
- window.history.back();
- }}
- >
- {'Back'}
-
-
- >
- );
-};
-
-export default UnlockMemberShip;
diff --git a/03_source/mobile_notworking.del/src/pages/ViewParticipants/ParticipantDetail/index.tsx b/03_source/mobile_notworking.del/src/pages/ViewParticipants/ParticipantDetail/index.tsx
deleted file mode 100644
index f0b1b39..0000000
--- a/03_source/mobile_notworking.del/src/pages/ViewParticipants/ParticipantDetail/index.tsx
+++ /dev/null
@@ -1,173 +0,0 @@
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonChip,
- IonContent,
- IonFooter,
- IonIcon,
- IonItem,
- IonLabel,
- IonList,
- IonPopover,
- IonText,
- IonTitle,
-} from '@ionic/react';
-import React, { useEffect } from 'react';
-import HKPartyIonHeader from '../../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../../components/HKPartyIonToolbar';
-import { useGetUserProfileById } from '../../../hooks/useGetUserProfileById';
-
-import { chevronBackOutline, ellipsisHorizontal, ellipsisVertical, helpCircleOutline } from 'ionicons/icons';
-import Loading from '../../../components/Loading';
-import constants from '../../../constants';
-import './style.scss';
-
-function ParticipantDetail({ user_id }) {
- const [user_profile] = useGetUserProfileById({ user_id });
-
- const [page_content, setPageContent] = React.useState(null);
-
- useEffect(() => {
- setPageContent({
- about_user: user_profile?.about_user || 'No About',
- gender: user_profile?.gender || -1,
- height_cm: user_profile?.height_cm || -1,
- weight_kg: user_profile?.weight_kg || -1,
- avatar_url: user_profile?.avatar_urls?.length > 0 ? user_profile?.avatar_urls[0] : constants.IONIC_DEFAULT_AVATAR,
- other_tags: user_profile?.other_tags || [],
- career: user_profile?.career || [],
- spoken_language: user_profile?.spoken_language || [],
- education: user_profile?.education || [],
- });
- }, [user_profile]);
-
- if (!page_content) return ;
-
- return (
- <>
-
-
-
- close('https://ionicframework.com/docs')}>
- {'Block'}
-
- close('https://ionicframework.com/docs')}>
- {'Report and Block'}
-
-
-
-
-
-
-
-
-
-
- {'Profiles'}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {page_content.about_user}
-
-
-
-
-
-
- {page_content.gender == 1 ? 'Male' : 'Female'}
-
-
-
- {page_content.height_cm} cm
-
-
-
- {page_content.weight_kg} kg
-
-
-
-
-
-
- {page_content.spoken_language.map((t, i) => (i > 0 ? ', ' + t : t))}
-
-
-
-
-
- {page_content.education}
-
-
-
-
-
-
{'About me'}
- {page_content.about_user}
-
-
-
-
{'Career'}
-
- {page_content.career.map((t, i) => (
- {t}
- ))}
-
-
-
-
-
{'Spoken Language'}
-
- {page_content.spoken_language.map((t, i) => (
- {t}
- ))}
-
-
-
-
-
{'Other Tags'}
-
- {page_content.other_tags.map((t, i) => (
- {t}
- ))}
-
-
-
-
-
-
-
-
-
- {'chat'}
-
-
- >
- );
-}
-
-export default React.memo(ParticipantDetail);
diff --git a/03_source/mobile_notworking.del/src/pages/ViewParticipants/ParticipantDetail/style.scss b/03_source/mobile_notworking.del/src/pages/ViewParticipants/ParticipantDetail/style.scss
deleted file mode 100644
index 2375d77..0000000
--- a/03_source/mobile_notworking.del/src/pages/ViewParticipants/ParticipantDetail/style.scss
+++ /dev/null
@@ -1,49 +0,0 @@
-ion-chip {
- --background: #00213f;
- --color: #adefd1;
-}
-
-div.detail_table {
- margin: 0.25rem;
-
- border-radius: 0.5rem;
- border: 1px solid gray;
-
- .detail_row {
- border-bottom: 1px solid gray;
- display: flex;
- }
-
- .last_detail_row {
- border-bottom: unset;
- }
-
- .detail_cell {
- border-right: 1px solid gray;
- width: 33%;
- padding: 10px;
- display: flex;
- flex-direction: row;
- justify-content: center;
- align-items: center;
-
- ion-icon {
- margin-right: 0.5rem;
- }
- }
-
- .right_most_cell {
- border-right: unset;
- }
-
- .full_row {
- width: 100%;
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
-
- ion-icon {
- margin-right: 0.5rem;
- }
- }
-}
diff --git a/03_source/mobile_notworking.del/src/pages/ViewParticipants/index.tsx b/03_source/mobile_notworking.del/src/pages/ViewParticipants/index.tsx
deleted file mode 100644
index 5480e0a..0000000
--- a/03_source/mobile_notworking.del/src/pages/ViewParticipants/index.tsx
+++ /dev/null
@@ -1,91 +0,0 @@
-// REQ0080/party_participants
-
-import { IonBackButton, IonButton, IonButtons, IonContent, IonNavLink, IonTitle } from '@ionic/react';
-import { chevronBackOutline } from 'ionicons/icons';
-
-import { useEffect, useState } from 'react';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-import constants from '../../constants';
-import ParticipantDetail from './ParticipantDetail';
-import './style.scss';
-
-function ParticipantsPhoto({ participant }) {
- const [loading, setLoading] = useState(true);
- const [content, setContent] = useState({
- avatar_url: participant?.acatar_urls?.length > 0 ? participant?.acatar_urls[0] : constants.IONIC_DEFAULT_AVATAR,
- user_id: participant.user_id || 0,
- });
-
- useEffect(() => {
- if (participant.avatar_urls?.length > 0) {
- setContent({ ...content, avatar_url: participant.avatar_urls[0] });
- }
-
- console.log({ participant });
- setLoading(false);
- }, []);
-
- if (loading) return ;
-
- return (
- }>
-
-
- );
-}
-
-function ViewParticipants({ participants }) {
- return (
- <>
-
-
-
-
-
- {'View Participants'}
- {/*
-
-
-
-
-
- */}
-
-
-
-
-
- {participants.map((u, i) => (
-
- ))}
-
-
-
-
-
- {'Unlock'}
-
-
- >
- );
-}
-
-export default ViewParticipants;
diff --git a/03_source/mobile_notworking.del/src/pages/ViewParticipants/style.scss b/03_source/mobile_notworking.del/src/pages/ViewParticipants/style.scss
deleted file mode 100644
index 3ae038e..0000000
--- a/03_source/mobile_notworking.del/src/pages/ViewParticipants/style.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-.ion-padding {
- background-color: gold;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/chat/index.tsx b/03_source/mobile_notworking.del/src/pages/chat/index.tsx
deleted file mode 100644
index 5c9fe75..0000000
--- a/03_source/mobile_notworking.del/src/pages/chat/index.tsx
+++ /dev/null
@@ -1,421 +0,0 @@
-import {
- CreateAnimation,
- IonActionSheet,
- IonBackButton,
- IonButton,
- IonButtons,
- IonCol,
- IonContent,
- IonFooter,
- IonGrid,
- IonIcon,
- IonRow,
- IonText,
- IonTextarea,
- IonThumbnail,
- IonTitle,
- IonToast,
- createGesture,
- useIonViewWillEnter,
-} from '@ionic/react';
-import {
- addOutline,
- alertOutline,
- callOutline,
- cameraOutline,
- chevronBackOutline,
- micOutline,
- send,
- shareOutline,
- starOutline,
- trashOutline,
- videocamOutline,
-} from 'ionicons/icons';
-import { useEffect, useRef, useState } from 'react';
-import { ChatStore, ContactStore } from '../../store';
-import { getNotificationCount, markAllAsRead, sendChatMessage, starChatMessage } from '../../store/ChatStore';
-import { getChat, getChats, getContact } from '../../store/Selectors';
-
-//
-import { useLongPress } from 'react-use';
-import { ChatBottomDetails } from '../../components/ChatBottomDetails';
-import { ChatRepliedQuote } from '../../components/ChatRepliedQuote';
-import ReplyTo from '../../components/ReplyTo';
-import { useCamera } from '../../hooks/useCamera';
-import { useGallery } from '../../hooks/useGallery';
-
-//
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import './style.scss';
-
-const ChatHelloworld = () => {
- // TODO: hardcoded for development purpose, should use `useParams()`
- // const params = useParams();
- const params = { contact_id: 1 };
- // Global State
- const chat = ChatStore.useState(getChat(params.contact_id));
-
- const chats = ChatStore.useState(getChats);
- const contact = ContactStore.useState(getContact(params.contact_id));
- const notificationCount = getNotificationCount(chats);
-
- const { takePhoto } = useCamera();
- const { prompt } = useGallery();
-
- // Local state
- const [message, setMessage] = useState('');
- const [showSendButton, setShowSendButton] = useState(false);
- const [replyToMessage, setReplyToMessage] = useState(false);
- const [messageSent, setMessageSent] = useState(false);
-
- const [showActionSheet, setShowActionSheet] = useState(false);
- const [actionMessage, setActionMessage] = useState(false);
-
- const [showToast, setShowToast] = useState(false);
- const [toastMessage, setToastMessage] = useState('');
-
- // Refs
- const contentRef = useRef();
- const swiperRefs = useRef([]);
- const textareaRef = useRef();
- const sideRef = useRef();
- const sendRef = useRef();
- const replyToAnimationRef = useRef();
-
- const actionSheetButtons = [
- {
- text: actionMessage && actionMessage.starred ? 'Unstar Message' : 'Star Message',
- icon: starOutline,
- handler: () => starChatMessage(params.contact_id, actionMessage.id),
- },
- actionMessage && actionMessage.received
- ? {
- text: 'Reply To Message',
- icon: shareOutline,
- handler: () => showReplyToMessage(actionMessage),
- }
- : {
- text: 'Unsend Message',
- icon: alertOutline,
- handler: () => toaster("I haven't implemented unsend :) Simple store update though"),
- },
- {
- text: 'Delete Message',
- icon: trashOutline,
- handler: () => toaster("I haven't implemented delete :) Simple store update though"),
- role: 'destructive',
- },
- ];
-
- useEffect(() => {
- !showActionSheet && setActionMessage(false);
- }, [showActionSheet]);
-
- // Scroll to end of content
- // Mark all chats as read if we come into a chat
- // Set up our swipe events for animations and gestures
- useIonViewWillEnter(() => {
- scrollToBottom();
- setupObserver();
- markAllAsRead(params.contact_id);
- setSwipeEvents();
- });
-
- // For displaying toast messages
- const toaster = message => {
- setToastMessage(message);
- setShowToast(true);
- };
-
- // Scroll to end of content
- const scrollToBottom = async () => {
- contentRef.current.scrollToBottom();
- };
-
- // Watch for DOM changes
- // Then scroll to bottom
- // This ensures that the new chat message has *actually* been rendered
- // Check this:
- // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
- const setupObserver = () => {
- // Mutation Observers watch for DOM changes
- // This will ensure that we scroll to bottom AFTER the new chat has rendered
- const observer = new MutationObserver(() => {
- scrollToBottom();
- });
-
- // We observe the ion-content (or containing element of chats)
- observer.observe(contentRef.current, {
- childList: true,
- });
- };
-
- // Long press callback
- const onLongPress = e => {
- const elementID = e.target.id;
- const chatMessageID = elementID.includes('chatText')
- ? parseInt(elementID.replace('chatText_', ''))
- : elementID.includes('chatTime')
- ? parseInt(elementID.replace('chatTime_', ''))
- : parseInt(elementID.replace('chatBubble_', ''));
-
- const chatMessage = chat.filter(message => parseInt(message.id) === parseInt(chatMessageID))[0];
-
- setActionMessage(chatMessage);
- setShowActionSheet(true);
- };
-
- const longPressEvent = useLongPress(onLongPress, {
- isPreventDefault: true,
- delay: 2000,
- });
-
- const showReplyToMessage = async message => {
- // Activate reply-to functionality
- setReplyToMessage(message);
- await replyToAnimationRef.current.animation.play();
- contentRef.current.scrollToBottom(300);
- };
-
- const checkBubble = async (bubble, message, event) => {
- if (event.deltaX >= 120) {
- // Activate reply-to functionality
- bubble.style.transform = 'none';
- showReplyToMessage(message);
- } else {
- // Put chat bubble back to original position
- bubble.style.transform = 'none';
- }
- };
-
- // Function to move a bubble with the deltaX swipe
- const moveBubble = (bubble, event) => {
- if (event.velocityX > 0) {
- bubble.style.transform = `translateX(${event.deltaX}px)`;
- }
- };
-
- const setSwipeEvents = () => {
- chat.forEach((message, index) => {
- if (!message.sent) {
- const chatBubble = swiperRefs.current[index];
-
- const swipeGesture = createGesture({
- el: chatBubble,
- onEnd: e => checkBubble(chatBubble, message, e),
- onMove: e => moveBubble(chatBubble, e),
- });
-
- swipeGesture.enable();
- }
- });
- };
-
- const widthAnimation = {
- property: 'width',
- fromValue: '110%',
- toValue: '100%',
- };
-
- const fadeAnimation = {
- property: 'opacity',
- fromValue: '100%',
- toValue: '0%',
- };
-
- const sideButtonsAnimation = {
- duration: 200,
- direction: showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [fadeAnimation],
- easing: 'ease-in-out',
- };
-
- const sendButtonAnimation = {
- duration: showSendButton ? 300 : 100,
- direction: !showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [fadeAnimation],
- easing: 'ease-in-out',
- };
-
- const textareaAnimation = {
- duration: 200,
- direction: !showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [widthAnimation],
- easing: 'ease-in-out',
- };
-
- // Set the state value when message val changes
- useEffect(() => {
- setShowSendButton(message !== '');
- }, [message]);
-
- // Play the animations when the state value changes
- useEffect(() => {
- textareaRef.current.animation.play();
- sideRef.current.animation.play();
- sendRef.current.animation.play();
- }, [showSendButton]);
-
- const sendMessage = (image = false, imagePath = false) => {
- if (message !== '' || image === true) {
- sendChatMessage(
- params.contact_id,
- message,
- replyToMessage,
- replyToMessage ? replyToMessage.id : false,
- image,
- imagePath,
- );
- setMessage('');
-
- setMessageSent(true);
- setTimeout(() => setMessageSent(false), 10);
- image && setTimeout(() => scrollToBottom(), 100);
- }
- };
-
- const handlePhoto = async () => {
- const returnedFilePath = await takePhoto();
- sendMessage(true, returnedFilePath);
- };
-
- const handlePrompt = async () => {
- const returnedFilePath = await prompt();
- sendMessage(true, returnedFilePath);
- };
-
- const replyToProps = {
- replyToAnimationRef,
- replyToMessage,
- setReplyToMessage,
- contact: contact.name,
- messageSent,
- };
-
- return (
- <>
-
-
-
- {/* 0 ? notificationCount : ''} /> */}
-
-
-
-
-
-
- {contact.name}
- last seen today at 22:10
-
-
-
-
-
- toaster("As this is a UI only, video calling wouldn't work here.")}>
-
-
-
- toaster("As this is a UI only, calling wouldn't work here.")}>
-
-
-
-
-
-
-
- {chat.map((message, index) => {
- const repliedMessage = chat.filter(subMessage => parseInt(subMessage.id) === parseInt(message.replyID))[0];
-
- return (
- (swiperRefs.current[index] = ref)}
- id={`chatBubble_${message.id}`}
- key={index}
- className={`chat-bubble ${message.sent ? 'bubble-sent' : 'bubble-received'}`}
- {...longPressEvent}
- >
-
-
-
- {message.preview}
- {message.image && message.imagePath &&
}
-
-
-
-
-
- );
- })}
-
- setShowActionSheet(false)}
- buttons={actionSheetButtons}
- />
-
- setShowToast(false)}
- message={toastMessage}
- position="bottom"
- duration="3000"
- />
-
-
- {replyToMessage && }
-
-
- >
- );
-};
-
-export default ChatHelloworld;
diff --git a/03_source/mobile_notworking.del/src/pages/chat/style.scss b/03_source/mobile_notworking.del/src/pages/chat/style.scss
deleted file mode 100644
index 9e02ca9..0000000
--- a/03_source/mobile_notworking.del/src/pages/chat/style.scss
+++ /dev/null
@@ -1,255 +0,0 @@
-//
-$chat-bubble-sent-color: #c6538c;
-$chat-bubble-received-color: #f7f7f7;
-
-.chat-page ion-header,
-.chat-page ion-toolbar {
- --min-height: 3.5rem;
-}
-
-.chat-page ion-title {
- margin-left: -3.5rem;
-}
-
-.chat-page ion-title p {
- padding: 0;
- margin: 0;
-}
-
-.chat-contact {
- display: flex;
- flex-direction: row;
- align-content: center;
- justify-content: center;
- align-items: center;
-
- img {
- //
- }
-
- .chat-contact-details {
- display: flex;
- flex-direction: column;
- margin-left: 0.5rem;
- text-align: left;
-
- ion-text {
- font-size: 0.9rem;
- font-weight: 400;
- }
-
- p {
- font-size: 0.9rem;
- }
- }
-}
-
-.chat-contact .chat-contact-details .chat-contact-details .chat-bubble {
- border-radius: 5px;
- margin-left: 1rem;
- margin-right: 1rem;
- margin-top: 0.8rem;
-
- padding: 0.5rem;
- max-width: 80%;
- clear: both;
-
- display: flex;
- flex-direction: row;
- transition: 0.2s all linear;
-}
-
-.chat-bubble:last-child {
- margin-bottom: 0.8rem;
-}
-
-.bubble-sent {
- background-color: var(--chat-bubble-sent-color);
- float: right;
-}
-
-.bubble-received {
- background-color: var(--chat-bubble-received-color);
- float: left;
-}
-
-.chat-bubble p {
- padding: 0;
- margin: 0;
-}
-
-.chat-footer {
- // background-color: rgb(22, 22, 22);
- border-top: 1px solid rgb(47, 47, 47);
- padding-top: 0.2rem;
- padding-bottom: 1rem;
-}
-
-.chat-footer ion-textarea {
- /* background-color: rgb(31, 31, 31); */
- background-color: rgba(32, 32, 32, 0.1);
- /* border: 1px solid rgb(36, 36, 36); */
- // color: white;
- border-radius: 25px;
- padding-left: 0.5rem;
- caret-color: var(--ion-color-primary);
-}
-
-.chat-footer ion-icon {
- font-size: 1.5rem;
- margin-top: 0.2rem;
-}
-
-.chat-input-container {
- width: 70%;
- margin-right: 0.75rem;
-}
-
-.chat-send-button {
- margin: 0 !important;
- padding: 0 !important;
- position: absolute;
- right: 17px;
- margin-top: -0.2rem !important;
-
- display: flex;
- flex-direction: row;
- align-content: center;
- align-items: center;
- justify-content: center;
-}
-
-.chat-send-button ion-icon {
- color: white;
- background-color: var(--ion-color-primary);
- font-size: 1.1rem;
- border-radius: 500px;
- padding: 0.5rem;
-}
-
-.chat-time {
- color: rgb(165, 165, 165);
- font-size: 0.75rem;
- right: 0;
- bottom: 0 !important;
- margin: 0;
- padding: 0;
- margin-top: 5px;
-}
-
-.bubble-arrow {
- position: absolute;
- float: left;
- left: 6px;
- margin-top: -8px;
- /* top: 0px; */
-}
-
-.bubble-arrow.alt {
- position: relative;
- bottom: 0px;
- left: auto;
- right: -3px;
- float: right;
-}
-
-.bubble-arrow:after {
- content: '';
- position: absolute;
- border-top: 15px solid var(--chat-bubble-received-color);
- border-left: 15px solid transparent;
- border-radius: 4px 0 0 0px;
- width: 0;
- height: 0;
-}
-
-.bubble-arrow.alt:after {
- border-top: 15px solid var(--chat-bubble-sent-color);
- transform: scaleX(-1);
-}
-
-.chat-reply-to-row {
- bottom: 70px !important;
- position: absolute;
-
- border-left: 4px solid rgb(224, 176, 18);
- width: 100%;
- background-color: rgb(22, 22, 22);
- border-top: 1px solid rgb(47, 47, 47);
- padding: 0.5rem;
- padding-bottom: 0.8rem;
-}
-
-.chat-reply-to-container {
- display: flex;
- flex-direction: column;
-}
-
-.chat-reply-to-name {
- color: rgb(224, 176, 18);
- font-weight: 500;
- margin-bottom: 0.5rem;
-}
-
-.chat-reply-to-message {
- font-size: 0.8rem;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.all-chats {
-}
-
-.chat-bottom-details {
- display: flex;
- flex-direction: row;
- width: 100%;
- align-content: center;
- align-items: center;
- justify-content: flex-end;
- margin-top: 0.4rem;
-}
-
-.chat-bottom-details ion-icon {
- font-size: 0.6rem;
- color: grey;
- margin-left: 0.5rem;
- margin-top: 0.05rem;
-}
-
-.chat-bottom-details span {
- margin: 0;
- padding: 0;
- font-size: 0.75rem;
- color: rgb(190, 190, 190);
-}
-
-.in-chat-reply-to-container {
- background-color: rgba(0, 0, 0, 0.2);
- border-left: 3px solid rgb(224, 176, 18);
- height: fit-content;
- padding: 0.5rem;
- border-radius: 5px;
- margin-bottom: 0.5rem;
-}
-
-.in-chat-reply-to-container h1 {
- margin: 0;
- padding: 0;
- color: rgb(224, 176, 18);
- font-size: 0.8rem;
-}
-
-.in-chat-reply-to-container p {
- color: rgb(167, 167, 167);
- font-size: 0.8rem;
-}
-
-.bottom-container {
- position: absolute;
- bottom: 4.5rem;
- height: 5rem;
- background-color: red;
- width: 100%;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/debug/StartupLoading/index.scss b/03_source/mobile_notworking.del/src/pages/debug/StartupLoading/index.scss
deleted file mode 100644
index da80d78..0000000
--- a/03_source/mobile_notworking.del/src/pages/debug/StartupLoading/index.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-ion-content {
- --background: rgb(146, 16, 248);
- --color: white;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/debug/StartupLoading/index.tsx b/03_source/mobile_notworking.del/src/pages/debug/StartupLoading/index.tsx
deleted file mode 100644
index b6e9592..0000000
--- a/03_source/mobile_notworking.del/src/pages/debug/StartupLoading/index.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-// REQ0032-start_up_loading
-
-import { IonContent, IonPage } from '@ionic/react';
-import React from 'react';
-import { RouteComponentProps } from 'react-router';
-import { connect } from '../../../data/connect';
-
-import './index.scss';
-
-interface OwnProps extends RouteComponentProps {}
-interface DispatchProps {}
-
-const StartupLoading: React.FC = () => {
- return (
- <>
-
-
-
- HK Single Party
-
-
-
- >
- );
-};
-
-export default connect({
- mapDispatchToProps: {},
- component: StartupLoading,
-});
diff --git a/03_source/mobile_notworking.del/src/pages/debug/WelcomePage/index.scss b/03_source/mobile_notworking.del/src/pages/debug/WelcomePage/index.scss
deleted file mode 100644
index 8508945..0000000
--- a/03_source/mobile_notworking.del/src/pages/debug/WelcomePage/index.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-ion-content {
- --background: white;
- --color: rgba(0, 0, 0, 0.9);
-}
diff --git a/03_source/mobile_notworking.del/src/pages/debug/WelcomePage/index.tsx b/03_source/mobile_notworking.del/src/pages/debug/WelcomePage/index.tsx
deleted file mode 100644
index 8c98e26..0000000
--- a/03_source/mobile_notworking.del/src/pages/debug/WelcomePage/index.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-// REQ0032-start_up_loading
-
-import { IonButton, IonContent, IonPage } from '@ionic/react';
-import React from 'react';
-import { useTranslation } from 'react-i18next';
-import { RouteComponentProps, useHistory } from 'react-router';
-import { connect } from '../../../data/connect';
-
-import './index.scss';
-
-interface OwnProps extends RouteComponentProps {}
-interface DispatchProps {}
-
-const StartupLoading: React.FC = () => {
- const history = useHistory();
- const { t, i18n } = useTranslation();
-
- return (
- <>
-
-
-
-
- Icon
-
-
-
- HK Single Party
-
-
{t('helloworld')}
-
Let's get together into your account
-
-
-
- Continue with Phone
-
-
{
- i18n.changeLanguage('en');
- }}
- >
- eng 1
-
-
{
- i18n.changeLanguage('zhHk');
- }}
- >
- chi 2
-
-
-
-
-
- >
- );
-};
-
-export default connect({
- mapDispatchToProps: {},
- component: StartupLoading,
-});
diff --git a/03_source/mobile_notworking.del/src/pages/debug/helloworld/index.tsx b/03_source/mobile_notworking.del/src/pages/debug/helloworld/index.tsx
deleted file mode 100644
index 86e9e69..0000000
--- a/03_source/mobile_notworking.del/src/pages/debug/helloworld/index.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { IonContent, IonPage, IonTabButton } from '@ionic/react';
-import React from 'react';
-import { RouteComponentProps } from 'react-router';
-import { connect } from '../../../data/connect';
-
-interface OwnProps extends RouteComponentProps {}
-interface DispatchProps {}
-
-const Helloworld: React.FC = () => {
- return (
- <>
-
-
- Profile
-
-
- >
- );
-};
-
-export default connect({
- mapDispatchToProps: {},
- component: Helloworld,
-});
diff --git a/03_source/mobile_notworking.del/src/pages/event_detail/EventDetailAvatar/index.tsx b/03_source/mobile_notworking.del/src/pages/event_detail/EventDetailAvatar/index.tsx
deleted file mode 100644
index e8e37c5..0000000
--- a/03_source/mobile_notworking.del/src/pages/event_detail/EventDetailAvatar/index.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-// REQ0041-home_discover_event_tab
-
-import { IonAvatar } from '@ionic/react';
-import React from 'react';
-
-import './style.scss';
-
-interface AboutProps {}
-
-const EventDetailAvatar: React.FC = ({ profile }) => {
- console.log({ profile });
-
- return (
- <>
-
-
-
- >
- );
-};
-
-export default React.memo(EventDetailAvatar);
diff --git a/03_source/mobile_notworking.del/src/pages/event_detail/EventDetailAvatar/style.scss b/03_source/mobile_notworking.del/src/pages/event_detail/EventDetailAvatar/style.scss
deleted file mode 100644
index f25817f..0000000
--- a/03_source/mobile_notworking.del/src/pages/event_detail/EventDetailAvatar/style.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-.event-detail-avatar {
- margin-left: 0.2rem;
-}
-.user-going-text {
- margin-left: 0.2rem;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/event_detail/getEventSummary.ts b/03_source/mobile_notworking.del/src/pages/event_detail/getEventSummary.ts
deleted file mode 100644
index 61c60de..0000000
--- a/03_source/mobile_notworking.del/src/pages/event_detail/getEventSummary.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { supabase } from '../../supabaseClient';
-
-function getEventSummary(party_event_id: string) {
- return supabase.from('view_party_event_summaries').select('*').filter('id', 'eq', party_event_id);
-}
-
-export default getEventSummary;
diff --git a/03_source/mobile_notworking.del/src/pages/event_detail/index.tsx b/03_source/mobile_notworking.del/src/pages/event_detail/index.tsx
deleted file mode 100644
index 4df1813..0000000
--- a/03_source/mobile_notworking.del/src/pages/event_detail/index.tsx
+++ /dev/null
@@ -1,238 +0,0 @@
-// REQ0042/event-detail
-
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonCard,
- IonContent,
- IonFooter,
- IonIcon,
- IonText,
- IonTitle,
-} from '@ionic/react';
-import { format, parseISO } from 'date-fns';
-import { bookmarkOutline, chevronBackOutline, logoIonic } from 'ionicons/icons';
-import React, { useContext, useEffect, useState } from 'react';
-import './style.scss';
-
-import EventDetailAvatar from './EventDetailAvatar';
-
-import { useGetPartyEventDetail } from '../../hooks/useGetPartyEventDetail';
-import { supabase } from '../../supabaseClient';
-// useGetPartyEventDetail
-// import { useGetPartyEventDetail } from '../../hooks/useGetPartyEventDetail';
-import { useViewPartyEventParticipants } from '../../hooks/useViewPartyEventParticipants';
-
-import dayjs from 'dayjs';
-import duration from 'dayjs/plugin/duration';
-import relativeTime from 'dayjs/plugin/relativeTime';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-import { AppContext } from '../../data/AppContext';
-dayjs.extend(duration);
-dayjs.extend(relativeTime);
-
-interface AboutProps {
- party_event: any;
-}
-
-const EventDetail: React.FC = ({ party_event }) => {
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
- const { profile } = useContext(AppContext);
-
- const [page_content, setPageContent] = useState({});
- const [party_event_detail] = useGetPartyEventDetail({ party_event_id: party_event.id });
- // view_party_event_participants
- const [participants] = useViewPartyEventParticipants({ party_event_id: party_event.id, limit: 10 });
-
- const [is_loading, setIsLoading] = useState(false);
-
- const selectOptions = {
- header: 'Select a Location',
- };
-
- const presentPopover = (e: React.MouseEvent) => {
- setPopoverEvent(e.nativeEvent);
- setShowPopover(true);
- };
-
- function displayDate(date: string, dateFormat: string) {
- return format(parseISO(date), dateFormat);
- }
-
- function getEventSummary(party_event_id) {
- return supabase.from('view_party_event_summaries').select('*').filter('id', 'eq', party_event_id);
- }
-
- function viewEventParticipants(party_event_id, limit) {
- return supabase
- .from('view_party_event_participants')
- .select('*')
- .filter('pe_id', 'eq', party_event_id)
- .limit(limit);
- }
-
- useEffect(() => {
- Promise.all([
- //
- getEventSummary(party_event.id),
- viewEventParticipants(party_event.id, 3),
- ]).then(([{ data: event_summaries }, { data: party_participants }]) => {
- let event_summary = event_summaries[0];
- setPageContent({
- title: event_summary.title,
- num_m: event_summary.male_count,
- num_f: event_summary.female_count,
- age_min: 18,
- age_max: 48,
- event_date: '2019-01-25',
- event_duration_min: 90,
- // event_summary.event_duration_min,
- address: 'hello address',
- price_per_person: event_summary.price,
- currency: event_summary.currency,
- party_participants,
-
- // TODO: test below to replace when i review this two lines
- // show_party_participants: party_participants ? party_participants.length > 0 : false,
- // party_participants_going: party_participants ? party_participants.length - 3 : 0,
- show_party_participants: party_participants.length > 0,
- party_participants_going: party_participants.length - 3,
- });
-
- setIsLoading(false);
- });
- }, []);
-
- function handleJoinClick() {
- console.log({ profile });
-
- supabase
- .from('party_event_orders')
- .insert({
- user_id: profile.user_id,
- party_event_id: party_event.id,
- status: 2,
- remarks: 'test from ionic',
- })
- .then(() => {
- console.log('insert done');
- });
- console.log('Join clicked');
- }
-
- if (is_loading) return ;
-
- return (
- <>
-
-
-
-
-
- {'Event Detail'}
-
-
-
-
-
-
-
-
- {/* */}
-
- {/* page content */}
-
-
-
-
-
{dayjs(page_content.event_date).format('DD/MM/YYYY')}
-
{party_event.title}
-
-
-
- {page_content.show_party_participants ? (
- <>
- {page_content.party_participants.map(({ profile }, i) => (
-
- ))}
- {page_content.party_participants_going > 0 ? (
-
+{page_content.party_participants_going} Going
- ) : (
- <>>
- )}
- >
- ) : (
- <>>
- )}
-
-
- {'More'}
-
-
-
-
-
-
-
- {page_content.currency}
- {page_content.price_per_person} {'per person'}
-
-
-
-
-
-
- {page_content.event_duration_min / 60} {'hours'}
-
-
-
-
-
-
- {page_content.age_min}-{page_content.age_max} {'years old'}
-
-
-
-
-
-
{page_content.address}
-
-
-
-
-
{page_content.num_m + page_content.num_f}
-
-
{page_content.num_m}
-
-
{page_content.num_f}
-
-
-
-
-
-
- {/* REQ0077/flow-join-event */}
-
-
- {'Join'}
-
-
- >
- );
-};
-
-export default React.memo(EventDetail);
diff --git a/03_source/mobile_notworking.del/src/pages/event_detail/profile_eng.png b/03_source/mobile_notworking.del/src/pages/event_detail/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/event_detail/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/event_detail/sample_party_image.avif b/03_source/mobile_notworking.del/src/pages/event_detail/sample_party_image.avif
deleted file mode 100644
index 661c2c1..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/event_detail/sample_party_image.avif and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/event_detail/style.scss b/03_source/mobile_notworking.del/src/pages/event_detail/style.scss
deleted file mode 100644
index 7a1f760..0000000
--- a/03_source/mobile_notworking.del/src/pages/event_detail/style.scss
+++ /dev/null
@@ -1,65 +0,0 @@
-#event-detail-page {
- .row {
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
- align-items: center;
- gap: 0.5rem;
- }
-
- .avatar-row {
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- align-items: center;
- }
-
- .user-avatar-list {
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
- align-items: center;
- }
-
- .event-properties-list {
- display: flex;
- flex-direction: column;
-
- .item {
- margin-top: 0.5rem;
-
- display: flex;
- flex-direction: row;
-
- div {
- margin-left: 0.5rem;
- }
- }
-
- .item-user-count {
- margin-top: 0.5rem;
-
- display: flex;
- flex-direction: row;
-
- ion-icon:nth-child(3) {
- margin-left: 1rem;
- }
-
- ion-icon:nth-child(5) {
- margin-left: 1rem;
- }
-
- div {
- margin-left: 0.5rem;
- }
- }
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/events/EventIonCard.tsx b/03_source/mobile_notworking.del/src/pages/events/EventIonCard.tsx
deleted file mode 100644
index a29800b..0000000
--- a/03_source/mobile_notworking.del/src/pages/events/EventIonCard.tsx
+++ /dev/null
@@ -1,100 +0,0 @@
-// REQ0041-home_discover_event_tab
-
-import { IonButton, IonCard, IonCardContent, IonIcon, IonImg, IonNavLink } from '@ionic/react';
-import { bookmarkOutline, logoApple, logoIonic } from 'ionicons/icons';
-import React, { useEffect, useState } from 'react';
-import './style.scss';
-
-import Loading from '../../components/Loading';
-import EventDetail from '../event_detail';
-// url('/assets/img/about/austin.jpg');
-
-interface AboutProps {
- event_summary: any;
-}
-
-const EventIonCard: React.FC = ({ event_summary }) => {
- const [page_content, setPageContent] = useState(null);
-
- useEffect(() => {
- setPageContent({
- title: event_summary.title,
- price: event_summary.price,
- currency: 'HKD',
- NUM_M: event_summary.male_count,
- NUM_F: event_summary.female_count,
- image: '/assets/img/samples/party_image.png',
- });
-
- console.log({ party_event: event_summary });
- }, [event_summary]);
-
- if (!page_content) return ;
-
- return (
- <>
-
-
- {
- e.stopPropagation();
- }}
- >
-
-
-
-
}>
-
-
-
-
-
{page_content.title}
-
- {page_content.currency}
- {page_content.price}
-
-
-
-
-
-
-
{page_content.NUM_M + page_content.NUM_F}
-
-
-
-
{page_content.NUM_M}
-
-
-
-
{page_content.NUM_F}
-
-
-
-
-
-
- >
- );
-};
-
-export default React.memo(EventIonCard);
diff --git a/03_source/mobile_notworking.del/src/pages/events/PageOne.tsx b/03_source/mobile_notworking.del/src/pages/events/PageOne.tsx
deleted file mode 100644
index 05df72a..0000000
--- a/03_source/mobile_notworking.del/src/pages/events/PageOne.tsx
+++ /dev/null
@@ -1,60 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { IonBackButton, IonButton, IonButtons, IonContent, IonIcon, IonItem, IonList, IonTitle } from '@ionic/react';
-import { chevronBackOutline, settingsSharp } from 'ionicons/icons';
-import React from 'react';
-import './style.scss';
-
-import EventIonCard from './EventIonCard';
-
-import { useListPartyEventSummaries } from '../../hooks/useListPartyEventSummaries';
-
-import dayjs from 'dayjs';
-import duration from 'dayjs/plugin/duration';
-import relativeTime from 'dayjs/plugin/relativeTime';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-dayjs.extend(duration);
-dayjs.extend(relativeTime);
-
-interface AboutProps {}
-
-const Events: React.FC = () => {
- // const { party_event_summaries } = useContext(AppContext);
- const [party_event_summaries] = useListPartyEventSummaries();
-
- // TODO: loading screen
- if (!party_event_summaries) return ;
- if (party_event_summaries && party_event_summaries.length === 0) return ;
-
- return (
- <>
-
-
-
-
-
- {'Discover events'}
-
-
-
-
-
-
-
-
-
-
- {party_event_summaries.map((event_summary, i) => (
-
-
-
- ))}
-
-
- >
- );
-};
-
-export default React.memo(Events);
diff --git a/03_source/mobile_notworking.del/src/pages/events/index.tsx b/03_source/mobile_notworking.del/src/pages/events/index.tsx
deleted file mode 100644
index 7302a46..0000000
--- a/03_source/mobile_notworking.del/src/pages/events/index.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { IonContent, IonPage } from '@ionic/react';
-import React from 'react';
-import './style.scss';
-
-import PageOne from './PageOne';
-
-interface AboutProps {}
-
-const Events: React.FC = () => {
- return (
- <>
-
-
-
-
-
- >
- );
-};
-
-export default React.memo(Events);
diff --git a/03_source/mobile_notworking.del/src/pages/events/page-two.tsx b/03_source/mobile_notworking.del/src/pages/events/page-two.tsx
deleted file mode 100644
index ee73a38..0000000
--- a/03_source/mobile_notworking.del/src/pages/events/page-two.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { IonBackButton, IonButtons, IonContent, IonHeader, IonToolbar } from '@ionic/react';
-import { chevronBackOutline } from 'ionicons/icons';
-
-function ShowEventDetail() {
- return (
- <>
- {/* */}
-
-
-
-
-
-
-
- {/* */}
-
- Page Two
- Use the back button to navigate to the previous page.
-
- {/* */}
- >
- );
-}
-
-export default ShowEventDetail;
diff --git a/03_source/mobile_notworking.del/src/pages/events/profile_eng.png b/03_source/mobile_notworking.del/src/pages/events/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/events/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/events/sample_party_image.avif b/03_source/mobile_notworking.del/src/pages/events/sample_party_image.avif
deleted file mode 100644
index 661c2c1..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/events/sample_party_image.avif and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/events/style.scss b/03_source/mobile_notworking.del/src/pages/events/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_notworking.del/src/pages/events/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/favourite_events/index.tsx b/03_source/mobile_notworking.del/src/pages/favourite_events/index.tsx
deleted file mode 100644
index da55da8..0000000
--- a/03_source/mobile_notworking.del/src/pages/favourite_events/index.tsx
+++ /dev/null
@@ -1,150 +0,0 @@
-// REQ0089-favorite-event-list
-
-import {
- IonButton,
- IonButtons,
- IonContent,
- IonDatetime,
- IonHeader,
- IonIcon,
- IonItem,
- IonLabel,
- IonList,
- IonMenuButton,
- IonPage,
- IonPopover,
- IonSelect,
- IonSelectOption,
- IonText,
- IonToolbar,
-} from '@ionic/react';
-import { format, parseISO } from 'date-fns';
-import { ellipsisHorizontal, ellipsisVertical } from 'ionicons/icons';
-import React, { useState } from 'react';
-import AboutPopover from '../../components/AboutPopover';
-import './style.scss';
-
-interface AboutProps {}
-
-const FavouriteEvents: React.FC = () => {
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
- const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison');
- const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00');
-
- const selectOptions = {
- header: 'Select a Location',
- };
-
- const presentPopover = (e: React.MouseEvent) => {
- setPopoverEvent(e.nativeEvent);
- setShowPopover(true);
- };
-
- function displayDate(date: string, dateFormat: string) {
- return format(parseISO(date), dateFormat);
- }
-
- return (
- <>
-
-
- hello favourite
-
-
- >
- );
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* Instead of loading an image each time the select changes, use opacity to transition them */}
-
-
-
-
-
-
-
About
-
-
- The Ionic Conference is a one-day conference on {displayDate(conferenceDate, 'MMM dd, yyyy')} featuring
- talks from the Ionic team. It is focused on Ionic applications being built with Ionic Framework. This
- includes migrating apps to the latest version of the framework, Angular concepts, Webpack, Sass, and many
- other technologies used in Ionic 2. Tickets are completely sold out, and we’re expecting more than 1000
- developers – making this the largest Ionic conference ever!
-
-
-
Details
-
-
-
- setLocation(e.detail.value as any)}
- >
- Madison, WI
- Austin, TX
- Chicago, IL
- Seattle, WA
-
-
-
- Date
- {displayDate(conferenceDate, 'MMM dd, yyyy')}
-
- setConferenceDate(e.detail.value! as string)}
- presentation="date"
- >
-
-
-
-
-
Internet
-
-
-
- Wifi network
- ica{displayDate(conferenceDate, 'y')}
-
-
- Password
- makegoodthings
-
-
-
-
-
- setShowPopover(false)}>
- setShowPopover(false)} />
-
-
- );
-};
-
-export default React.memo(FavouriteEvents);
diff --git a/03_source/mobile_notworking.del/src/pages/favourite_events/profile_eng.png b/03_source/mobile_notworking.del/src/pages/favourite_events/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/favourite_events/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/favourite_events/style.scss b/03_source/mobile_notworking.del/src/pages/favourite_events/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_notworking.del/src/pages/favourite_events/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/helloworld/index.tsx b/03_source/mobile_notworking.del/src/pages/helloworld/index.tsx
deleted file mode 100644
index 3a1224e..0000000
--- a/03_source/mobile_notworking.del/src/pages/helloworld/index.tsx
+++ /dev/null
@@ -1,158 +0,0 @@
-// REQ0041-home_discover_event_tab
-
-import {
- IonButton,
- IonButtons,
- IonContent,
- IonDatetime,
- IonHeader,
- IonIcon,
- IonItem,
- IonLabel,
- IonList,
- IonMenuButton,
- IonPage,
- IonPopover,
- IonSelect,
- IonSelectOption,
- IonText,
- IonToolbar,
-} from '@ionic/react';
-import { format, parseISO } from 'date-fns';
-import { ellipsisHorizontal, ellipsisVertical } from 'ionicons/icons';
-import React, { useState } from 'react';
-import AboutPopover from '../../components/AboutPopover';
-import './style.scss';
-
-import ProfileEng from './profile_eng.png';
-
-interface AboutProps {}
-
-const Events: React.FC = () => {
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
- const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison');
- const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00');
-
- const selectOptions = {
- header: 'Select a Location',
- };
-
- const presentPopover = (e: React.MouseEvent) => {
- setPopoverEvent(e.nativeEvent);
- setShowPopover(true);
- };
-
- function displayDate(date: string, dateFormat: string) {
- return format(parseISO(date), dateFormat);
- }
-
- return (
- <>
-
-
-
-
-
- >
- );
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* Instead of loading an image each time the select changes, use opacity to transition them */}
-
-
-
-
-
-
-
About
-
-
- The Ionic Conference is a one-day conference on {displayDate(conferenceDate, 'MMM dd, yyyy')} featuring
- talks from the Ionic team. It is focused on Ionic applications being built with Ionic Framework. This
- includes migrating apps to the latest version of the framework, Angular concepts, Webpack, Sass, and many
- other technologies used in Ionic 2. Tickets are completely sold out, and we’re expecting more than 1000
- developers – making this the largest Ionic conference ever!
-
-
-
Details
-
-
-
- setLocation(e.detail.value as any)}
- >
- Madison, WI
- Austin, TX
- Chicago, IL
- Seattle, WA
-
-
-
- Date
- {displayDate(conferenceDate, 'MMM dd, yyyy')}
-
- setConferenceDate(e.detail.value! as string)}
- presentation="date"
- >
-
-
-
-
-
Internet
-
-
-
- Wifi network
- ica{displayDate(conferenceDate, 'y')}
-
-
- Password
- makegoodthings
-
-
-
-
-
- setShowPopover(false)}>
- setShowPopover(false)} />
-
-
- );
-};
-
-export default React.memo(Events);
diff --git a/03_source/mobile_notworking.del/src/pages/helloworld/profile_eng.png b/03_source/mobile_notworking.del/src/pages/helloworld/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/helloworld/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/helloworld/style.scss b/03_source/mobile_notworking.del/src/pages/helloworld/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_notworking.del/src/pages/helloworld/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/message/index.tsx b/03_source/mobile_notworking.del/src/pages/message/index.tsx
deleted file mode 100644
index d21db27..0000000
--- a/03_source/mobile_notworking.del/src/pages/message/index.tsx
+++ /dev/null
@@ -1,406 +0,0 @@
-import {
- CreateAnimation,
- IonActionSheet,
- IonBackButton,
- IonButton,
- IonButtons,
- IonCol,
- IonContent,
- IonFooter,
- IonGrid,
- IonHeader,
- IonIcon,
- IonPage,
- IonRow,
- IonText,
- IonTextarea,
- IonTitle,
- IonToast,
- IonToolbar,
- createGesture,
- useIonViewWillEnter,
-} from '@ionic/react';
-import {
- addOutline,
- alertOutline,
- callOutline,
- cameraOutline,
- micOutline,
- send,
- shareOutline,
- starOutline,
- trashOutline,
- videocamOutline,
-} from 'ionicons/icons';
-import { useEffect, useRef, useState } from 'react';
-//
-import { ChatStore, ContactStore } from '../../store';
-import { getNotificationCount, markAllAsRead, sendChatMessage, starChatMessage } from '../../store/ChatStore';
-import { getChat, getChats, getContact } from '../../store/Selectors';
-
-//
-import { useLongPress } from 'react-use';
-//
-import { ChatBottomDetails } from '../../components/ChatBottomDetails';
-import { ChatRepliedQuote } from '../../components/ChatRepliedQuote';
-import ReplyTo from '../../components/ReplyTo';
-import { useCamera } from '../../hooks/useCamera';
-import { useGallery } from '../../hooks/useGallery';
-import './Chat.css';
-
-const Chat = () => {
- // const params = useParams();
-
- // TODO: Fix this
- const params = { contact_id: 1 };
- // Global State
- const chat = ChatStore.useState(getChat(params.contact_id));
-
- const chats = ChatStore.useState(getChats);
- const contact = ContactStore.useState(getContact(params.contact_id));
- const notificationCount = getNotificationCount(chats);
-
- const { takePhoto } = useCamera();
- const { prompt } = useGallery();
-
- // Local state
- const [message, setMessage] = useState('');
- const [showSendButton, setShowSendButton] = useState(false);
- const [replyToMessage, setReplyToMessage] = useState(false);
- const [messageSent, setMessageSent] = useState(false);
-
- const [showActionSheet, setShowActionSheet] = useState(false);
- const [actionMessage, setActionMessage] = useState(false);
-
- const [showToast, setShowToast] = useState(false);
- const [toastMessage, setToastMessage] = useState('');
-
- // Refs
- const contentRef = useRef();
- const swiperRefs = useRef([]);
- const textareaRef = useRef();
- const sideRef = useRef();
- const sendRef = useRef();
- const replyToAnimationRef = useRef();
-
- const actionSheetButtons = [
- {
- text: actionMessage && actionMessage.starred ? 'Unstar Message' : 'Star Message',
- icon: starOutline,
- handler: () => starChatMessage(params.contact_id, actionMessage.id),
- },
- actionMessage && actionMessage.received
- ? {
- text: 'Reply To Message',
- icon: shareOutline,
- handler: () => showReplyToMessage(actionMessage),
- }
- : {
- text: 'Unsend Message',
- icon: alertOutline,
- handler: () => toaster("I haven't implemented unsend :) Simple store update though"),
- },
- {
- text: 'Delete Message',
- icon: trashOutline,
- handler: () => toaster("I haven't implemented delete :) Simple store update though"),
- role: 'destructive',
- },
- ];
-
- useEffect(() => {
- !showActionSheet && setActionMessage(false);
- }, [showActionSheet]);
-
- // Scroll to end of content
- // Mark all chats as read if we come into a chat
- // Set up our swipe events for animations and gestures
- useIonViewWillEnter(() => {
- scrollToBottom();
- setupObserver();
- markAllAsRead(params.contact_id);
- setSwipeEvents();
- });
-
- // For displaying toast messages
- const toaster = message => {
- setToastMessage(message);
- setShowToast(true);
- };
-
- // Scroll to end of content
- const scrollToBottom = async () => {
- contentRef.current.scrollToBottom();
- };
-
- // Watch for DOM changes
- // Then scroll to bottom
- // This ensures that the new chat message has *actually* been rendered
- // Check this:
- // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
- const setupObserver = () => {
- // Mutation Observers watch for DOM changes
- // This will ensure that we scroll to bottom AFTER the new chat has rendered
- const observer = new MutationObserver(() => {
- scrollToBottom();
- });
-
- // We observe the ion-content (or containing element of chats)
- observer.observe(contentRef.current, {
- childList: true,
- });
- };
-
- // Long press callback
- const onLongPress = e => {
- const elementID = e.target.id;
- const chatMessageID = elementID.includes('chatText')
- ? parseInt(elementID.replace('chatText_', ''))
- : elementID.includes('chatTime')
- ? parseInt(elementID.replace('chatTime_', ''))
- : parseInt(elementID.replace('chatBubble_', ''));
-
- const chatMessage = chat.filter(message => parseInt(message.id) === parseInt(chatMessageID))[0];
-
- setActionMessage(chatMessage);
- setShowActionSheet(true);
- };
-
- const longPressEvent = useLongPress(onLongPress, {
- isPreventDefault: true,
- delay: 2000,
- });
-
- const showReplyToMessage = async message => {
- // Activate reply-to functionality
- setReplyToMessage(message);
- await replyToAnimationRef.current.animation.play();
- contentRef.current.scrollToBottom(300);
- };
-
- const checkBubble = async (bubble, message, event) => {
- if (event.deltaX >= 120) {
- // Activate reply-to functionality
- bubble.style.transform = 'none';
- showReplyToMessage(message);
- } else {
- // Put chat bubble back to original position
- bubble.style.transform = 'none';
- }
- };
-
- // Function to move a bubble with the deltaX swipe
- const moveBubble = (bubble, event) => {
- if (event.velocityX > 0) {
- bubble.style.transform = `translateX(${event.deltaX}px)`;
- }
- };
-
- const setSwipeEvents = () => {
- chat.forEach((message, index) => {
- if (!message.sent) {
- const chatBubble = swiperRefs.current[index];
-
- const swipeGesture = createGesture({
- el: chatBubble,
- onEnd: e => checkBubble(chatBubble, message, e),
- onMove: e => moveBubble(chatBubble, e),
- });
-
- swipeGesture.enable();
- }
- });
- };
-
- const widthAnimation = {
- property: 'width',
- fromValue: '110%',
- toValue: '100%',
- };
-
- const fadeAnimation = {
- property: 'opacity',
- fromValue: '100%',
- toValue: '0%',
- };
-
- const sideButtonsAnimation = {
- duration: 200,
- direction: showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [fadeAnimation],
- easing: 'ease-in-out',
- };
-
- const sendButtonAnimation = {
- duration: showSendButton ? 300 : 100,
- direction: !showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [fadeAnimation],
- easing: 'ease-in-out',
- };
-
- const textareaAnimation = {
- duration: 200,
- direction: !showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [widthAnimation],
- easing: 'ease-in-out',
- };
-
- // Set the state value when message val changes
- useEffect(() => {
- setShowSendButton(message !== '');
- }, [message]);
-
- // Play the animations when the state value changes
- useEffect(() => {
- textareaRef.current.animation.play();
- sideRef.current.animation.play();
- sendRef.current.animation.play();
- }, [showSendButton]);
-
- const sendMessage = (image = false, imagePath = false) => {
- if (message !== '' || image === true) {
- sendChatMessage(
- params.contact_id,
- message,
- replyToMessage,
- replyToMessage ? replyToMessage.id : false,
- image,
- imagePath,
- );
- setMessage('');
-
- setMessageSent(true);
- setTimeout(() => setMessageSent(false), 10);
- image && setTimeout(() => scrollToBottom(), 100);
- }
- };
-
- const handlePhoto = async () => {
- const returnedFilePath = await takePhoto();
- sendMessage(true, returnedFilePath);
- };
-
- const handlePrompt = async () => {
- const returnedFilePath = await prompt();
- sendMessage(true, returnedFilePath);
- };
-
- const replyToProps = {
- replyToAnimationRef,
- replyToMessage,
- setReplyToMessage,
- contact: contact.name,
- messageSent,
- };
-
- return (
-
-
-
- 0 ? notificationCount : ''} />
-
-
-
-
-
{contact.name}
-
last seen today at 22:10
-
-
-
-
-
- toaster("As this is a UI only, video calling wouldn't work here.")}>
-
-
-
- toaster("As this is a UI only, calling wouldn't work here.")}>
-
-
-
-
-
-
-
- {chat.map((message, index) => {
- const repliedMessage = chat.filter(subMessage => parseInt(subMessage.id) === parseInt(message.replyID))[0];
-
- return (
- (swiperRefs.current[index] = ref)}
- id={`chatBubble_${message.id}`}
- key={index}
- className={`chat-bubble ${message.sent ? 'bubble-sent' : 'bubble-received'}`}
- {...longPressEvent}
- >
-
-
-
- {message.preview}
- {message.image && message.imagePath &&
}
-
-
-
-
-
- );
- })}
-
- setShowActionSheet(false)}
- buttons={actionSheetButtons}
- />
-
- setShowToast(false)}
- message={toastMessage}
- position="bottom"
- duration="3000"
- />
-
-
- {replyToMessage && }
-
-
-
- );
-};
-
-export default Chat;
diff --git a/03_source/mobile_notworking.del/src/pages/message/profile_eng.png b/03_source/mobile_notworking.del/src/pages/message/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/message/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/message/style.scss b/03_source/mobile_notworking.del/src/pages/message/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_notworking.del/src/pages/message/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/messages/Chat.css b/03_source/mobile_notworking.del/src/pages/messages/Chat.css
deleted file mode 100644
index 4dc7e8b..0000000
--- a/03_source/mobile_notworking.del/src/pages/messages/Chat.css
+++ /dev/null
@@ -1,252 +0,0 @@
-.chat-page ion-header,
-.chat-page ion-toolbar {
- --min-height: 3.5rem;
-}
-
-.chat-page ion-title {
- margin-left: -3.5rem;
-}
-
-.chat-page ion-title p {
- padding: 0;
- margin: 0;
-}
-
-.chat-contact {
- display: flex;
- flex-direction: row;
- align-content: center;
- justify-content: center;
- align-items: center;
-}
-
-.chat-contact img {
- height: 2rem;
- width: 2rem;
- border-radius: 500px;
-}
-
-.chat-contact-details {
- display: flex;
- flex-direction: column;
- margin-left: 0.5rem;
- text-align: left;
-}
-
-.chat-contact-details p {
- font-size: 0.9rem;
-}
-
-.chat-contact-details ion-text {
- font-size: 0.7rem;
- font-weight: 400;
-}
-
-.chat-bubble {
- border-radius: 5px;
- margin-left: 1rem;
- margin-right: 1rem;
- margin-top: 0.8rem;
-
- padding: 0.5rem;
- max-width: 80%;
- clear: both;
-
- display: flex;
- flex-direction: row;
- transition: 0.2s all linear;
-}
-
-.chat-bubble:last-child {
- margin-bottom: 0.8rem;
-}
-
-.bubble-sent {
- background-color: var(--chat-bubble-sent-color);
- float: right;
-}
-
-.bubble-received {
- background-color: var(--chat-bubble-received-color);
- float: left;
-}
-
-.chat-bubble p {
- padding: 0;
- margin: 0;
-}
-
-.chat-footer {
- background-color: rgb(22, 22, 22);
- border-top: 1px solid rgb(47, 47, 47);
- padding-top: 0.2rem;
- padding-bottom: 1rem;
-}
-
-.chat-footer ion-textarea {
- background-color: rgb(31, 31, 31);
- border: 1px solid rgb(36, 36, 36);
- color: white;
- border-radius: 25px;
- padding-left: 0.5rem;
- caret-color: var(--ion-color-primary);
-}
-
-.chat-footer ion-icon {
- font-size: 1.5rem;
- margin-top: 0.2rem;
-}
-
-.chat-input-container {
- width: 70%;
- margin-right: 0.75rem;
-}
-
-.chat-send-button {
- margin: 0 !important;
- padding: 0 !important;
- position: absolute;
- right: 17px;
- margin-top: -0.2rem !important;
-
- display: flex;
- flex-direction: row;
- align-content: center;
- align-items: center;
- justify-content: center;
-}
-
-.chat-send-button ion-icon {
- color: white;
- background-color: var(--ion-color-primary);
- font-size: 1.1rem;
- border-radius: 500px;
- padding: 0.5rem;
-}
-
-.chat-time {
- color: rgb(165, 165, 165);
- font-size: 0.75rem;
- right: 0;
- bottom: 0 !important;
- margin: 0;
- padding: 0;
- margin-top: 5px;
-}
-
-.bubble-arrow {
- position: absolute;
- float: left;
- left: 6px;
- margin-top: -8px;
- /* top: 0px; */
-}
-
-.bubble-arrow.alt {
- position: relative;
- bottom: 0px;
- left: auto;
- right: -3px;
- float: right;
-}
-
-.bubble-arrow:after {
- content: '';
- position: absolute;
- border-top: 15px solid var(--chat-bubble-received-color);
- border-left: 15px solid transparent;
- border-radius: 4px 0 0 0px;
- width: 0;
- height: 0;
-}
-
-.bubble-arrow.alt:after {
- border-top: 15px solid var(--chat-bubble-sent-color);
- transform: scaleX(-1);
-}
-
-.chat-reply-to-row {
- bottom: 70px !important;
- position: absolute;
-
- border-left: 4px solid rgb(224, 176, 18);
- width: 100%;
- background-color: rgb(22, 22, 22);
- border-top: 1px solid rgb(47, 47, 47);
- padding: 0.5rem;
- padding-bottom: 0.8rem;
-}
-
-.chat-reply-to-container {
- display: flex;
- flex-direction: column;
-}
-
-.chat-reply-to-name {
- color: rgb(224, 176, 18);
- font-weight: 500;
- margin-bottom: 0.5rem;
-}
-
-.chat-reply-to-message {
- font-size: 0.8rem;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.all-chats {
-}
-
-.chat-bottom-details {
- display: flex;
- flex-direction: row;
- width: 100%;
- align-content: center;
- align-items: center;
- justify-content: flex-end;
- margin-top: 0.4rem;
-}
-
-.chat-bottom-details ion-icon {
- font-size: 0.6rem;
- color: grey;
- margin-left: 0.5rem;
- margin-top: 0.05rem;
-}
-
-.chat-bottom-details span {
- margin: 0;
- padding: 0;
- font-size: 0.75rem;
- color: rgb(190, 190, 190);
-}
-
-.in-chat-reply-to-container {
- background-color: rgba(0, 0, 0, 0.2);
- border-left: 3px solid rgb(224, 176, 18);
- height: fit-content;
- padding: 0.5rem;
- border-radius: 5px;
- margin-bottom: 0.5rem;
-}
-
-.in-chat-reply-to-container h1 {
- margin: 0;
- padding: 0;
- color: rgb(224, 176, 18);
- font-size: 0.8rem;
-}
-
-.in-chat-reply-to-container p {
- color: rgb(167, 167, 167);
- font-size: 0.8rem;
-}
-
-.bottom-container {
- position: absolute;
- bottom: 4.5rem;
- height: 5rem;
- background-color: red;
- width: 100%;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/messages/VisitorAvatar/index.tsx b/03_source/mobile_notworking.del/src/pages/messages/VisitorAvatar/index.tsx
deleted file mode 100644
index f573710..0000000
--- a/03_source/mobile_notworking.del/src/pages/messages/VisitorAvatar/index.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import { useEffect, useRef, useState } from 'react';
-
-import { IonThumbnail } from '@ionic/react';
-
-//
-import './style.scss';
-
-import { ChatStore, ContactStore } from '../../../store';
-import { getChats, getContacts } from '../../../store/Selectors';
-
-const VisitorAvatar = () => {
- const pageRef = useRef();
- const contacts = ContactStore.useState(getContacts);
- const latestChats = ChatStore.useState(getChats);
-
- const [results, setResults] = useState(latestChats);
- const [showContactModal, setShowContactModal] = useState(false);
-
- useEffect(() => {
- setResults(latestChats);
- }, [latestChats]);
-
- const search = e => {
- const searchTerm = e.target.value;
-
- if (searchTerm !== '') {
- const searchTermLower = searchTerm.toLowerCase();
-
- const newResults = latestChats.filter(chat =>
- contacts
- .filter(c => c.id === chat.contact_id)[0]
- .name.toLowerCase()
- .includes(searchTermLower),
- );
- setResults(newResults);
- } else {
- setResults(latestChats);
- }
- };
-
- return (
- <>
-
-
-
-
-
12:30
-
- >
- );
-};
-
-export default VisitorAvatar;
diff --git a/03_source/mobile_notworking.del/src/pages/messages/VisitorAvatar/style.scss b/03_source/mobile_notworking.del/src/pages/messages/VisitorAvatar/style.scss
deleted file mode 100644
index 33a4cfe..0000000
--- a/03_source/mobile_notworking.del/src/pages/messages/VisitorAvatar/style.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-.visitor-avatar {
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
-
- .time {
- padding-top: 1rem;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/messages/chat.tsx b/03_source/mobile_notworking.del/src/pages/messages/chat.tsx
deleted file mode 100644
index d21db27..0000000
--- a/03_source/mobile_notworking.del/src/pages/messages/chat.tsx
+++ /dev/null
@@ -1,406 +0,0 @@
-import {
- CreateAnimation,
- IonActionSheet,
- IonBackButton,
- IonButton,
- IonButtons,
- IonCol,
- IonContent,
- IonFooter,
- IonGrid,
- IonHeader,
- IonIcon,
- IonPage,
- IonRow,
- IonText,
- IonTextarea,
- IonTitle,
- IonToast,
- IonToolbar,
- createGesture,
- useIonViewWillEnter,
-} from '@ionic/react';
-import {
- addOutline,
- alertOutline,
- callOutline,
- cameraOutline,
- micOutline,
- send,
- shareOutline,
- starOutline,
- trashOutline,
- videocamOutline,
-} from 'ionicons/icons';
-import { useEffect, useRef, useState } from 'react';
-//
-import { ChatStore, ContactStore } from '../../store';
-import { getNotificationCount, markAllAsRead, sendChatMessage, starChatMessage } from '../../store/ChatStore';
-import { getChat, getChats, getContact } from '../../store/Selectors';
-
-//
-import { useLongPress } from 'react-use';
-//
-import { ChatBottomDetails } from '../../components/ChatBottomDetails';
-import { ChatRepliedQuote } from '../../components/ChatRepliedQuote';
-import ReplyTo from '../../components/ReplyTo';
-import { useCamera } from '../../hooks/useCamera';
-import { useGallery } from '../../hooks/useGallery';
-import './Chat.css';
-
-const Chat = () => {
- // const params = useParams();
-
- // TODO: Fix this
- const params = { contact_id: 1 };
- // Global State
- const chat = ChatStore.useState(getChat(params.contact_id));
-
- const chats = ChatStore.useState(getChats);
- const contact = ContactStore.useState(getContact(params.contact_id));
- const notificationCount = getNotificationCount(chats);
-
- const { takePhoto } = useCamera();
- const { prompt } = useGallery();
-
- // Local state
- const [message, setMessage] = useState('');
- const [showSendButton, setShowSendButton] = useState(false);
- const [replyToMessage, setReplyToMessage] = useState(false);
- const [messageSent, setMessageSent] = useState(false);
-
- const [showActionSheet, setShowActionSheet] = useState(false);
- const [actionMessage, setActionMessage] = useState(false);
-
- const [showToast, setShowToast] = useState(false);
- const [toastMessage, setToastMessage] = useState('');
-
- // Refs
- const contentRef = useRef();
- const swiperRefs = useRef([]);
- const textareaRef = useRef();
- const sideRef = useRef();
- const sendRef = useRef();
- const replyToAnimationRef = useRef();
-
- const actionSheetButtons = [
- {
- text: actionMessage && actionMessage.starred ? 'Unstar Message' : 'Star Message',
- icon: starOutline,
- handler: () => starChatMessage(params.contact_id, actionMessage.id),
- },
- actionMessage && actionMessage.received
- ? {
- text: 'Reply To Message',
- icon: shareOutline,
- handler: () => showReplyToMessage(actionMessage),
- }
- : {
- text: 'Unsend Message',
- icon: alertOutline,
- handler: () => toaster("I haven't implemented unsend :) Simple store update though"),
- },
- {
- text: 'Delete Message',
- icon: trashOutline,
- handler: () => toaster("I haven't implemented delete :) Simple store update though"),
- role: 'destructive',
- },
- ];
-
- useEffect(() => {
- !showActionSheet && setActionMessage(false);
- }, [showActionSheet]);
-
- // Scroll to end of content
- // Mark all chats as read if we come into a chat
- // Set up our swipe events for animations and gestures
- useIonViewWillEnter(() => {
- scrollToBottom();
- setupObserver();
- markAllAsRead(params.contact_id);
- setSwipeEvents();
- });
-
- // For displaying toast messages
- const toaster = message => {
- setToastMessage(message);
- setShowToast(true);
- };
-
- // Scroll to end of content
- const scrollToBottom = async () => {
- contentRef.current.scrollToBottom();
- };
-
- // Watch for DOM changes
- // Then scroll to bottom
- // This ensures that the new chat message has *actually* been rendered
- // Check this:
- // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
- const setupObserver = () => {
- // Mutation Observers watch for DOM changes
- // This will ensure that we scroll to bottom AFTER the new chat has rendered
- const observer = new MutationObserver(() => {
- scrollToBottom();
- });
-
- // We observe the ion-content (or containing element of chats)
- observer.observe(contentRef.current, {
- childList: true,
- });
- };
-
- // Long press callback
- const onLongPress = e => {
- const elementID = e.target.id;
- const chatMessageID = elementID.includes('chatText')
- ? parseInt(elementID.replace('chatText_', ''))
- : elementID.includes('chatTime')
- ? parseInt(elementID.replace('chatTime_', ''))
- : parseInt(elementID.replace('chatBubble_', ''));
-
- const chatMessage = chat.filter(message => parseInt(message.id) === parseInt(chatMessageID))[0];
-
- setActionMessage(chatMessage);
- setShowActionSheet(true);
- };
-
- const longPressEvent = useLongPress(onLongPress, {
- isPreventDefault: true,
- delay: 2000,
- });
-
- const showReplyToMessage = async message => {
- // Activate reply-to functionality
- setReplyToMessage(message);
- await replyToAnimationRef.current.animation.play();
- contentRef.current.scrollToBottom(300);
- };
-
- const checkBubble = async (bubble, message, event) => {
- if (event.deltaX >= 120) {
- // Activate reply-to functionality
- bubble.style.transform = 'none';
- showReplyToMessage(message);
- } else {
- // Put chat bubble back to original position
- bubble.style.transform = 'none';
- }
- };
-
- // Function to move a bubble with the deltaX swipe
- const moveBubble = (bubble, event) => {
- if (event.velocityX > 0) {
- bubble.style.transform = `translateX(${event.deltaX}px)`;
- }
- };
-
- const setSwipeEvents = () => {
- chat.forEach((message, index) => {
- if (!message.sent) {
- const chatBubble = swiperRefs.current[index];
-
- const swipeGesture = createGesture({
- el: chatBubble,
- onEnd: e => checkBubble(chatBubble, message, e),
- onMove: e => moveBubble(chatBubble, e),
- });
-
- swipeGesture.enable();
- }
- });
- };
-
- const widthAnimation = {
- property: 'width',
- fromValue: '110%',
- toValue: '100%',
- };
-
- const fadeAnimation = {
- property: 'opacity',
- fromValue: '100%',
- toValue: '0%',
- };
-
- const sideButtonsAnimation = {
- duration: 200,
- direction: showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [fadeAnimation],
- easing: 'ease-in-out',
- };
-
- const sendButtonAnimation = {
- duration: showSendButton ? 300 : 100,
- direction: !showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [fadeAnimation],
- easing: 'ease-in-out',
- };
-
- const textareaAnimation = {
- duration: 200,
- direction: !showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [widthAnimation],
- easing: 'ease-in-out',
- };
-
- // Set the state value when message val changes
- useEffect(() => {
- setShowSendButton(message !== '');
- }, [message]);
-
- // Play the animations when the state value changes
- useEffect(() => {
- textareaRef.current.animation.play();
- sideRef.current.animation.play();
- sendRef.current.animation.play();
- }, [showSendButton]);
-
- const sendMessage = (image = false, imagePath = false) => {
- if (message !== '' || image === true) {
- sendChatMessage(
- params.contact_id,
- message,
- replyToMessage,
- replyToMessage ? replyToMessage.id : false,
- image,
- imagePath,
- );
- setMessage('');
-
- setMessageSent(true);
- setTimeout(() => setMessageSent(false), 10);
- image && setTimeout(() => scrollToBottom(), 100);
- }
- };
-
- const handlePhoto = async () => {
- const returnedFilePath = await takePhoto();
- sendMessage(true, returnedFilePath);
- };
-
- const handlePrompt = async () => {
- const returnedFilePath = await prompt();
- sendMessage(true, returnedFilePath);
- };
-
- const replyToProps = {
- replyToAnimationRef,
- replyToMessage,
- setReplyToMessage,
- contact: contact.name,
- messageSent,
- };
-
- return (
-
-
-
- 0 ? notificationCount : ''} />
-
-
-
-
-
{contact.name}
-
last seen today at 22:10
-
-
-
-
-
- toaster("As this is a UI only, video calling wouldn't work here.")}>
-
-
-
- toaster("As this is a UI only, calling wouldn't work here.")}>
-
-
-
-
-
-
-
- {chat.map((message, index) => {
- const repliedMessage = chat.filter(subMessage => parseInt(subMessage.id) === parseInt(message.replyID))[0];
-
- return (
- (swiperRefs.current[index] = ref)}
- id={`chatBubble_${message.id}`}
- key={index}
- className={`chat-bubble ${message.sent ? 'bubble-sent' : 'bubble-received'}`}
- {...longPressEvent}
- >
-
-
-
- {message.preview}
- {message.image && message.imagePath &&
}
-
-
-
-
-
- );
- })}
-
- setShowActionSheet(false)}
- buttons={actionSheetButtons}
- />
-
- setShowToast(false)}
- message={toastMessage}
- position="bottom"
- duration="3000"
- />
-
-
- {replyToMessage && }
-
-
-
- );
-};
-
-export default Chat;
diff --git a/03_source/mobile_notworking.del/src/pages/messages/index.tsx b/03_source/mobile_notworking.del/src/pages/messages/index.tsx
deleted file mode 100644
index 3ad100d..0000000
--- a/03_source/mobile_notworking.del/src/pages/messages/index.tsx
+++ /dev/null
@@ -1,88 +0,0 @@
-import { useEffect, useState } from 'react';
-
-import { IonButton, IonContent, IonIcon, IonNavLink, IonPage, IonTitle } from '@ionic/react';
-import { logoApple, settingsOutline } from 'ionicons/icons';
-
-//
-import './style.scss';
-
-import ChatItem from '../../components/ChatItem';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import { ChatStore, ContactStore } from '../../store';
-import { getChats, getContacts } from '../../store/Selectors';
-import PageHelloworld from '../page-helloworld';
-import VisitorAvatar from './VisitorAvatar';
-
-const Messages = () => {
- // const pageRef = useRef();
- const contacts = ContactStore.useState(getContacts);
- const latestChats = ChatStore.useState(getChats);
-
- const [results, setResults] = useState(latestChats);
- const [showContactModal, setShowContactModal] = useState(false);
-
- useEffect(() => {
- setResults(latestChats);
- }, [latestChats]);
-
- const search = e => {
- const searchTerm = e.target.value;
-
- if (searchTerm !== '') {
- const searchTermLower = searchTerm.toLowerCase();
-
- const newResults = latestChats.filter(chat =>
- contacts
- .filter(c => c.id === chat.contact_id)[0]
- .name.toLowerCase()
- .includes(searchTermLower),
- );
- setResults(newResults);
- } else {
- setResults(latestChats);
- }
- };
-
- // return (
- //
- // {/* */}
- // helloworld message page
- //
- // );
-
- return (
-
-
-
- Chatting Room 1
- }>
-
-
-
-
-
-
- {/* */}
-
-
-
Visitor
-
- {[...Array(3)].map((_, i) => (
-
- ))}
-
-
-
- {results.map((chat, index) => {
- return ;
- })}
-
-
- );
-};
-
-export default Messages;
diff --git a/03_source/mobile_notworking.del/src/pages/messages/page-root.tsx b/03_source/mobile_notworking.del/src/pages/messages/page-root.tsx
deleted file mode 100644
index fd2e7c3..0000000
--- a/03_source/mobile_notworking.del/src/pages/messages/page-root.tsx
+++ /dev/null
@@ -1,79 +0,0 @@
-import { useEffect, useState } from 'react';
-
-import { IonButton, IonContent, IonIcon, IonTitle } from '@ionic/react';
-import { logoApple, notificationsOutline } from 'ionicons/icons';
-
-//
-import './style.scss';
-
-import ChatItem from '../../components/ChatItem';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonPage from '../../components/HKPartyIonPage';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import { ChatStore, ContactStore } from '../../store';
-import { getChats, getContacts } from '../../store/Selectors';
-import VisitorAvatar from './VisitorAvatar';
-
-const ChatsPageRoot = () => {
- // const pageRef = useRef();
- const contacts = ContactStore.useState(getContacts);
- const latestChats = ChatStore.useState(getChats);
-
- const [results, setResults] = useState(latestChats);
- const [showContactModal, setShowContactModal] = useState(false);
-
- useEffect(() => {
- setResults(latestChats);
- }, [latestChats]);
-
- const search = e => {
- const searchTerm = e.target.value;
-
- if (searchTerm !== '') {
- const searchTermLower = searchTerm.toLowerCase();
-
- const newResults = latestChats.filter(chat =>
- contacts
- .filter(c => c.id === chat.contact_id)[0]
- .name.toLowerCase()
- .includes(searchTermLower),
- );
- setResults(newResults);
- } else {
- setResults(latestChats);
- }
- };
-
- return (
-
-
-
- Chatting Room 2
-
-
-
-
-
- {/* */}
-
-
-
Visitor
-
- {[...Array(3)].map((_, i) => (
-
- ))}
-
-
-
- {results.map((chat, index) => {
- return ;
- })}
-
-
- );
-};
-
-export default ChatsPageRoot;
diff --git a/03_source/mobile_notworking.del/src/pages/messages/profile_eng.png b/03_source/mobile_notworking.del/src/pages/messages/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/messages/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/messages/style.scss b/03_source/mobile_notworking.del/src/pages/messages/style.scss
deleted file mode 100644
index 6934b9d..0000000
--- a/03_source/mobile_notworking.del/src/pages/messages/style.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-#chats-page {
- .visitor-list {
- display: flex;
- flex-direction: row;
-
- overflow-x: scroll;
-
- .visitor-avatar:nth-child(n + 2) {
- margin-left: 1rem;
- }
- }
-}
diff --git a/03_source/mobile_notworking.del/src/pages/near_by/NearByIonItem.tsx b/03_source/mobile_notworking.del/src/pages/near_by/NearByIonItem.tsx
deleted file mode 100644
index 8307c20..0000000
--- a/03_source/mobile_notworking.del/src/pages/near_by/NearByIonItem.tsx
+++ /dev/null
@@ -1,127 +0,0 @@
-// REQ0047-order-page
-// REQ0044/near_by_page
-
-import { IonItem, IonThumbnail } from '@ionic/react';
-import { caretForwardOutline } from 'ionicons/icons';
-import React, { useEffect, useState } from 'react';
-import Loading from '../../components/Loading';
-import './style.scss';
-
-interface AboutProps {
- user_profile: any;
-}
-const getAge = (year: number): string => {
- const now = new Date();
- const then = new Date(year, 0, 1);
- const age = now.getFullYear() - then.getFullYear();
- const m = now.getMonth() - then.getMonth();
-
- if (m < 0 || (m === 0 && now.getDate() < then.getDate())) {
- return String(age - 1);
- }
-
- return String(age);
-};
-
-const deg2rad = (deg: number) => {
- return deg * (Math.PI / 180);
-};
-
-const getDistanceFromLatLonInKm = (lat1: number, lon1: number, lat2: number, lon2: number) => {
- const R = 6371; // Radius of the earth in km
- const dLat = deg2rad(lat2 - lat1); // deg2rad below
- const dLon = deg2rad(lon2 - lon1);
- const a =
- Math.sin(dLat / 2) * Math.sin(dLat / 2) +
- Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
-
- const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
- const d = R * c; // Distance in km
-
- return d;
-};
-
-const NearByIonItem: React.FC = ({ user_profile }) => {
- const [page_content, setPageContent] = useState({
- full_name: user_profile.full_name || '',
- year_of_birth: getAge(user_profile.year_of_birth) || '',
- distance_between: '',
- avatar_url: user_profile.avatar_urls[0] || 'https://ionicframework.com/docs/img/demos/thumbnail.svg',
- });
-
- useEffect(() => {
- console.log({ user_profile });
- // get lang log from string "(59.628687602265,-37.0533834722112)"
- const regex = /\((.*?),(.*?)\)/;
- const match = user_profile.current_pos.match(regex);
- if (match) {
- const lat = parseFloat(match[1]);
- const lon = parseFloat(match[2]);
-
- let temp = getDistanceFromLatLonInKm(lat, lon, 22.3961, 114.1092).toFixed(1);
- setPageContent({ ...page_content, distance_between: temp });
- } else {
- console.log('no lang/log found in db');
- }
- }, []);
-
- // check if user_profile is null
- if (!user_profile) return ;
-
- console.log({ user_profile });
-
- return (
- <>
-
-
-
-
-
-
-
-
-
- {page_content.full_name || ''} {page_content.year_of_birth}
-
-
- {user_profile.other_tags.map((o, i) => (
- <>
- {i > 0 && ', '}
- {o}
- >
- ))}
-
-
- {page_content.distance_between}
- km. {'Sai Kung'}
-
-
-
-
- >
- );
-};
-
-export default React.memo(NearByIonItem);
diff --git a/03_source/mobile_notworking.del/src/pages/near_by/index.tsx b/03_source/mobile_notworking.del/src/pages/near_by/index.tsx
deleted file mode 100644
index 6c61542..0000000
--- a/03_source/mobile_notworking.del/src/pages/near_by/index.tsx
+++ /dev/null
@@ -1,61 +0,0 @@
-// REQ0044/near_by_page
-
-import { IonBackButton, IonButton, IonButtons, IonContent, IonIcon, IonList, IonPage, IonTitle } from '@ionic/react';
-import { chevronBackOutline, settingsSharp } from 'ionicons/icons';
-import React, { useContext } from 'react';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-import { AppContext } from '../../data/AppContext';
-import { useListOtherUserProfiles } from '../../hooks/useListOtherUserProfiles';
-import IsLoggedIn from '../../util/IsLoggedIn';
-import NearByIonItem from './NearByIonItem';
-import './style.scss';
-
-// import ProfileEng from './profile_eng.png';
-
-interface AboutProps {}
-
-const NearBy: React.FC = () => {
- //
- const { profile } = useContext(AppContext);
- //
- const [other_user_profiles] = useListOtherUserProfiles();
-
- // redirect if not logged in
- if (!IsLoggedIn(profile)) {
- window.history.replaceState({}, '', '/sblogin');
- }
-
- if (!other_user_profiles || other_user_profiles.length === 0) return ;
-
- return (
- <>
-
-
-
-
-
-
- {'My Nearby'}
-
-
-
-
-
-
-
-
-
-
- {other_user_profiles.map((up, i) => (
-
- ))}
-
-
-
- >
- );
-};
-
-export default React.memo(NearBy);
diff --git a/03_source/mobile_notworking.del/src/pages/near_by/profile_eng.png b/03_source/mobile_notworking.del/src/pages/near_by/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/near_by/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/near_by/style.scss b/03_source/mobile_notworking.del/src/pages/near_by/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_notworking.del/src/pages/near_by/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/order_event_detail/EventDetailAvatar/index.tsx b/03_source/mobile_notworking.del/src/pages/order_event_detail/EventDetailAvatar/index.tsx
deleted file mode 100644
index 61ec4cc..0000000
--- a/03_source/mobile_notworking.del/src/pages/order_event_detail/EventDetailAvatar/index.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-// REQ0041-home_discover_event_tab
-
-import { IonAvatar } from '@ionic/react';
-import React, { useEffect, useState } from 'react';
-
-import Loading from '../../../components/Loading';
-import './style.scss';
-
-interface AboutProps {
- profile: any;
-}
-
-function EventDetailAvatar({ profile }) {
- const [content, setContent] = useState(null);
-
- useEffect(() => {
- setContent({ avatar_url: profile?.avatar_urls?.length > 0 ? profile?.avatar_urls[0] : '' });
- }, []);
-
- if (!content) return ;
-
- return (
- <>
-
-
-
- >
- );
-}
-
-export default React.memo(EventDetailAvatar);
diff --git a/03_source/mobile_notworking.del/src/pages/order_event_detail/EventDetailAvatar/style.scss b/03_source/mobile_notworking.del/src/pages/order_event_detail/EventDetailAvatar/style.scss
deleted file mode 100644
index f25817f..0000000
--- a/03_source/mobile_notworking.del/src/pages/order_event_detail/EventDetailAvatar/style.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-.event-detail-avatar {
- margin-left: 0.2rem;
-}
-.user-going-text {
- margin-left: 0.2rem;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/order_event_detail/index.tsx b/03_source/mobile_notworking.del/src/pages/order_event_detail/index.tsx
deleted file mode 100644
index 47ae78b..0000000
--- a/03_source/mobile_notworking.del/src/pages/order_event_detail/index.tsx
+++ /dev/null
@@ -1,182 +0,0 @@
-// REQ0042/event-detail
-
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonCard,
- IonContent,
- IonFooter,
- IonIcon,
- IonNavLink,
- IonText,
- IonTitle,
-} from '@ionic/react';
-import { chevronBackOutline, logoIonic } from 'ionicons/icons';
-import React, { useContext, useEffect, useState } from 'react';
-import './style.scss';
-
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-import { AppContext } from '../../data/AppContext';
-import { supabase } from '../../supabaseClient';
-import ViewParticipants from '../ViewParticipants';
-import getEventSummary from '../event_detail/getEventSummary';
-import EventDetailAvatar from './EventDetailAvatar';
-
-function OrderEventDetail({ event_detail }) {
- const { showBottomTabBar, setShowBottomTabBar } = useContext(AppContext);
- const [is_loading, setIsLoading] = useState(true);
- const [content, setContent] = useState(null);
- const [page_content, setPageContent] = useState(null);
-
- function viewEventParticipants(party_event_id, limit) {
- return supabase.from('view_party_event_participants').select('*').filter('pe_id', 'eq', party_event_id);
- }
-
- useEffect(() => {
- let { id: party_event_id } = event_detail;
-
- Promise.all([getEventSummary(party_event_id), viewEventParticipants(party_event_id, 3)]).then(
- ([{ data: event_summaries }, { data: party_participants }]) => {
- let event_summary = event_summaries[0];
-
- setPageContent({
- ...event_detail,
- currency: event_summary.currency,
- price_per_person: event_summary.price,
- age_min: 18,
- age_max: 48,
- event_date: '2019-01-25',
- event_duration_min: 90,
- num_m: event_summary.male_count,
- num_f: event_summary.female_count,
- party_participants,
- show_party_participants: party_participants ? party_participants.length > 0 : false,
- party_participants_going: party_participants ? party_participants.length - 3 : 0,
- });
-
- setIsLoading(false);
- },
- );
- }, []);
-
- if (is_loading) return ;
-
- if (!page_content) return ;
-
- return (
- <>
-
-
-
-
-
-
-
- {'Order event details'}
-
-
- {/* */}
-
-
-
-
-
-
-
-
- {page_content.event_date}
- {page_content.title}
-
-
-
- {page_content.show_party_participants ? (
- <>
- {page_content.party_participants.map((profile, i) =>
- i < 3 ?
: null,
- )}
- {page_content.party_participants_going > 0 ? (
-
- {' '}
- +{page_content.party_participants_going} {'Going'}
-
- ) : (
- <>>
- )}
- >
- ) : (
- <>>
- )}
-
-
- {/*
{
- console.log('click into view participants');
- return ;
- }}
- > */}
- }
- >
- {'More'}
-
-
-
-
-
-
-
- {page_content.currency}
- {page_content.price_per_person} {'per person'}
-
-
-
-
-
- {page_content.event_duration_min / 60} {'hours'}
-
-
-
-
-
- {page_content.age_min}-{page_content.age_max} {'years old'}
-
-
-
-
-
Room 1228, Luk hwu Estate, Hong Kong
-
-
-
-
-
{page_content.num_m + page_content.num_f}
-
-
{page_content.num_m}
-
-
{page_content.num_f}
-
-
-
-
-
-
- {'Pay Now'}
-
-
- >
- );
-}
-
-export default React.memo(OrderEventDetail);
diff --git a/03_source/mobile_notworking.del/src/pages/order_event_detail/profile_eng.png b/03_source/mobile_notworking.del/src/pages/order_event_detail/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/order_event_detail/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/order_event_detail/sample_party_image.avif b/03_source/mobile_notworking.del/src/pages/order_event_detail/sample_party_image.avif
deleted file mode 100644
index 661c2c1..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/order_event_detail/sample_party_image.avif and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/order_event_detail/style.scss b/03_source/mobile_notworking.del/src/pages/order_event_detail/style.scss
deleted file mode 100644
index e9e3838..0000000
--- a/03_source/mobile_notworking.del/src/pages/order_event_detail/style.scss
+++ /dev/null
@@ -1,63 +0,0 @@
-.row {
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
- align-items: center;
- gap: 0.5rem;
-}
-
-.avatar-row {
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- align-items: center;
-}
-
-.user-avatar-list {
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
- align-items: center;
-}
-
-.event-properties-list {
- display: flex;
- flex-direction: column;
-
- .item {
- margin-top: 0.5rem;
-
- display: flex;
- flex-direction: row;
-
- div {
- margin-left: 0.5rem;
- }
- }
-
- .item-user-count {
- margin-top: 0.5rem;
-
- display: flex;
- flex-direction: row;
-
- ion-icon:nth-child(3) {
- margin-left: 1rem;
- }
-
- ion-icon:nth-child(5) {
- margin-left: 1rem;
- }
-
- div {
- margin-left: 0.5rem;
- }
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/orders/OrderIonItem.tsx b/03_source/mobile_notworking.del/src/pages/orders/OrderIonItem.tsx
deleted file mode 100644
index 2be7315..0000000
--- a/03_source/mobile_notworking.del/src/pages/orders/OrderIonItem.tsx
+++ /dev/null
@@ -1,92 +0,0 @@
-// REQ0047/order-page
-
-import { IonButton, IonItem, IonText, IonThumbnail } from '@ionic/react';
-import { caretForwardOutline } from 'ionicons/icons';
-import React, { useEffect, useState } from 'react';
-import Loading from '../../components/Loading';
-import './style.scss';
-
-interface AboutProps {}
-
-const OrderIonItem: React.FC = ({ event_detail }) => {
- let [is_loading, setIsLoading] = useState(true);
- let [contents, setContents] = useState(null);
-
- useEffect(() => {
- setContents({
- ...event_detail,
- order_time: event_detail.create_at.split('T')[0],
- last_payment_date: event_detail.last_payment_time.split('T')[0],
- renmaining_date: 50,
- });
- setIsLoading(false);
- }, []);
-
- if (is_loading) return ;
-
- if (!contents) return ;
-
- return (
- <>
-
-
- {/* */}
-
-
-
-
-
-
-
{contents.title}
-
-
-
- {'Number of participants:'}
- {contents.participant_count}
-
-
-
- {'Order time:'}
- {contents.order_time}
-
-
-
- {'Last payment date:'}
- {contents.last_payment_date}
-
-
-
- {'Remaining dates:'}
- {contents.renmaining_date}
-
-
-
-
- {contents.status ? 'Pending' : 'Paid'}
-
-
-
-
- {/* */}
-
-
- >
- );
-};
-
-export default React.memo(OrderIonItem);
diff --git a/03_source/mobile_notworking.del/src/pages/orders/UserOrdersListPage.tsx b/03_source/mobile_notworking.del/src/pages/orders/UserOrdersListPage.tsx
deleted file mode 100644
index 2a16980..0000000
--- a/03_source/mobile_notworking.del/src/pages/orders/UserOrdersListPage.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-// REQ0047/order-page
-
-import { IonNavLink } from '@ionic/react';
-import { useContext, useEffect, useState } from 'react';
-
-import Loading from '../../components/Loading';
-import { AppContext } from '../../data/AppContext';
-import { useListPartyEventOrderSummary } from '../../hooks/useListPartyEventOrderSummary';
-import IsLoggedIn from '../../util/IsLoggedIn';
-import OrderEventDetail from '../order_event_detail';
-import OrderIonItem from './OrderIonItem';
-
-function UserOrdersListPage() {
- const [is_loading, setIsLoading] = useState(true);
- const { profile } = useContext(AppContext);
-
- const [party_event_orders] = useListPartyEventOrderSummary({ user_id: '1' });
-
- useEffect(() => {
- console.log({ party_event_orders });
- setIsLoading(false);
- }, []);
-
- // redirect if not logged in
- if (!IsLoggedIn(profile)) {
- window.history.replaceState({}, '', '/sblogin');
- }
-
- if (is_loading) return ;
-
- // consider if party_event_orders is null during loading
- if (!party_event_orders) return ;
-
- return (
- <>
- {party_event_orders.map((event_detail, i) => (
- }
- >
-
-
- ))}
- >
- );
-}
-
-export default UserOrdersListPage;
diff --git a/03_source/mobile_notworking.del/src/pages/orders/index.tsx b/03_source/mobile_notworking.del/src/pages/orders/index.tsx
deleted file mode 100644
index a6388ac..0000000
--- a/03_source/mobile_notworking.del/src/pages/orders/index.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-// REQ0047/order-page
-
-import { IonBackButton, IonButton, IonButtons, IonContent, IonIcon, IonPage, IonTitle } from '@ionic/react';
-import { chevronBackOutline, ellipsisHorizontal, ellipsisVertical } from 'ionicons/icons';
-import React from 'react';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import './style.scss';
-
-interface AboutProps {}
-
-const Orders: React.FC = () => {
- return (
- <>
-
-
-
-
-
-
- {'My Orders'}
-
-
-
-
-
-
-
-
-
- {/* */}
- helloworld orders ?
-
-
- >
- );
-};
-
-export default React.memo(Orders);
diff --git a/03_source/mobile_notworking.del/src/pages/orders/page-two.tsx b/03_source/mobile_notworking.del/src/pages/orders/page-two.tsx
deleted file mode 100644
index f0fe8ff..0000000
--- a/03_source/mobile_notworking.del/src/pages/orders/page-two.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { IonBackButton, IonButtons, IonContent, IonHeader, IonToolbar } from '@ionic/react';
-import { chevronBackOutline } from 'ionicons/icons';
-
-function PageTwo() {
- return (
- <>
- {/* */}
-
-
-
-
-
-
-
- {/* */}
-
- Page Two
- Use the back button to navigate to the previous page.
-
- {/* */}
- >
- );
-}
-
-export default PageTwo;
diff --git a/03_source/mobile_notworking.del/src/pages/orders/profile_eng.png b/03_source/mobile_notworking.del/src/pages/orders/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/orders/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/orders/style.scss b/03_source/mobile_notworking.del/src/pages/orders/style.scss
deleted file mode 100644
index 0c30c4f..0000000
--- a/03_source/mobile_notworking.del/src/pages/orders/style.scss
+++ /dev/null
@@ -1,2 +0,0 @@
-#orders-page {
-}
diff --git a/03_source/mobile_notworking.del/src/pages/page-chat/index.tsx b/03_source/mobile_notworking.del/src/pages/page-chat/index.tsx
deleted file mode 100644
index 14a3853..0000000
--- a/03_source/mobile_notworking.del/src/pages/page-chat/index.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { IonBackButton, IonButtons, IonContent, IonText, IonTitle } from '@ionic/react';
-import { chevronBackOutline } from 'ionicons/icons';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-
-const PageHelloworld = () => {
- return (
- <>
-
-
-
-
-
- Helloworld
-
-
-
- PageHelloworld
-
- >
- );
-};
-
-export default PageHelloworld;
diff --git a/03_source/mobile_notworking.del/src/pages/page-helloworld/index.tsx b/03_source/mobile_notworking.del/src/pages/page-helloworld/index.tsx
deleted file mode 100644
index 14a3853..0000000
--- a/03_source/mobile_notworking.del/src/pages/page-helloworld/index.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { IonBackButton, IonButtons, IonContent, IonText, IonTitle } from '@ionic/react';
-import { chevronBackOutline } from 'ionicons/icons';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-
-const PageHelloworld = () => {
- return (
- <>
-
-
-
-
-
- Helloworld
-
-
-
- PageHelloworld
-
- >
- );
-};
-
-export default PageHelloworld;
diff --git a/03_source/mobile_notworking.del/src/pages/profile/Contactus/index.tsx b/03_source/mobile_notworking.del/src/pages/profile/Contactus/index.tsx
deleted file mode 100644
index cdfc50f..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/Contactus/index.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import { IonBackButton, IonButton, IonButtons, IonContent, IonTextarea, IonTitle } from '@ionic/react';
-import { chevronBackOutline } from 'ionicons/icons';
-import React from 'react';
-import HKPartyIonHeader from '../../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../../components/HKPartyIonToolbar';
-
-import './style.scss';
-
-interface AboutProps {}
-
-const ContactUsPage: React.FC = () => {
- return (
- <>
-
-
-
-
-
- {'Contact us'}
-
-
- {/* */}
-
-
-
{'What assistance do you need?'}
-
-
-
-
{'Add attachments'}
-
-
-
-
-
- {'Send'}
-
-
-
- {/* */}
-
- >
- );
-};
-
-export default ContactUsPage;
diff --git a/03_source/mobile_notworking.del/src/pages/profile/Contactus/style.scss b/03_source/mobile_notworking.del/src/pages/profile/Contactus/style.scss
deleted file mode 100644
index 75a111d..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/Contactus/style.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-.contact-us-page {
- .image-place-holder {
- width: calc(100vw / 3);
- height: calc(100vw / 3);
- background-color: gold;
- border-radius: 1rem;
- }
-
- .row {
- background-color: gold;
-
- display: flex;
- flex-direction: row;
- gap: 1rem;
- justify-content: center;
- margin: 1rem;
- background-color: unset;
- }
-}
diff --git a/03_source/mobile_notworking.del/src/pages/profile/DeleteAccount/index.tsx b/03_source/mobile_notworking.del/src/pages/profile/DeleteAccount/index.tsx
deleted file mode 100644
index 3376632..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/DeleteAccount/index.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonContent,
- IonHeader,
- IonTextarea,
- IonTitle,
- IonToolbar,
-} from '@ionic/react';
-
-function ContactUsPage() {
- return (
- <>
-
-
-
-
-
- Contact us
-
-
-
-
-
What assistance do you need?
-
-
-
-
Add attachments
-
-
-
- {/* */}
-
-
- Send
-
-
-
- >
- );
-}
-
-export default ContactUsPage;
diff --git a/03_source/mobile_notworking.del/src/pages/profile/Language/index.tsx b/03_source/mobile_notworking.del/src/pages/profile/Language/index.tsx
deleted file mode 100644
index 3376632..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/Language/index.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonContent,
- IonHeader,
- IonTextarea,
- IonTitle,
- IonToolbar,
-} from '@ionic/react';
-
-function ContactUsPage() {
- return (
- <>
-
-
-
-
-
- Contact us
-
-
-
-
-
What assistance do you need?
-
-
-
-
Add attachments
-
-
-
- {/* */}
-
-
- Send
-
-
-
- >
- );
-}
-
-export default ContactUsPage;
diff --git a/03_source/mobile_notworking.del/src/pages/profile/PageRoot.tsx b/03_source/mobile_notworking.del/src/pages/profile/PageRoot.tsx
deleted file mode 100644
index 26c6256..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/PageRoot.tsx
+++ /dev/null
@@ -1,193 +0,0 @@
-// REQ0053/Profile-page
-
-import {
- IonButton,
- IonCardSubtitle,
- IonCardTitle,
- IonContent,
- IonIcon,
- IonNavLink,
- IonPopover,
- IonThumbnail,
- IonTitle,
-} from '@ionic/react';
-import { checkmarkCircleOutline, logoApple, settingsOutline } from 'ionicons/icons';
-import React, { useContext, useEffect, useState } from 'react';
-import AboutPopover from '../../components/AboutPopover';
-import './style.scss';
-
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-import { AppContext } from '../../data/AppContext';
-import IsLoggedIn from '../../util/IsLoggedIn';
-import PageSetting from './page-setting';
-
-interface AboutProps {}
-
-const PageRoot: React.FC = () => {
- const [is_loading, setIsLoading] = useState(true);
- const { profile } = useContext(AppContext);
-
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
-
- const [page_content, setPageContent] = useState({});
-
- useEffect(() => {
- setPageContent({
- full_name: profile?.full_name || '',
- user_verified: false,
- user_vip: false,
- });
-
- setIsLoading(false);
- }, []);
-
- // consider content is loading
- if (is_loading) return ;
-
- // consider if profile is null, then redirect to login
- if (!IsLoggedIn(profile)) {
- window.history.replaceState({}, '', '/sblogin');
- console.log('login info not found');
- return <>>;
- }
-
- return (
- <>
-
-
- {'My Profile'}
- }>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {page_content.full_name}
- {page_content.user_verified ? <>verified> : <>>}
- {page_content.user_vip ? <>VIP> : <>>}
-
-
-
- {'Edit'}
-
-
- {/* */}
-
-
-
-
-
-
-
- {'MemberShip'}
- 7 {'of the exclusive privileges'}
-
-
-
{
- window.location.href = '/unlock-membership';
- }}
- >
- {'Unlock'}
-
-
-
-
-
Privileges Unlocked
-
-
-
-
Unlock participant list
-
-
-
-
-
-
Exclusive vip logo
-
-
-
-
-
-
-
Tips of message read
-
-
-
-
-
-
Voice and images transmission
-
-
-
-
-
-
Pinned to the top of nearby list
-
-
-
-
-
-
-
-
- setShowPopover(false)}>
- setShowPopover(false)} />
-
- >
- );
-};
-
-export default React.memo(PageRoot);
diff --git a/03_source/mobile_notworking.del/src/pages/profile/Privacy/index.tsx b/03_source/mobile_notworking.del/src/pages/profile/Privacy/index.tsx
deleted file mode 100644
index 2a823bb..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/Privacy/index.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import { useEffect, useState } from 'react';
-
-import Markdown from 'react-markdown';
-
-import { IonBackButton, IonButtons, IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/react';
-import Loading from '../../../components/Loading';
-
-function Privacy() {
- let [terms_temp, setTermsTemp] = useState({ terms: '' });
- const markdown = '# Hi, *Pluto*!';
-
- useEffect(() => {
- fetch('/assets/data/Terms.en.md')
- .then(res => res.text())
- .then(text => {
- setTermsTemp({ terms: text });
- });
- }, []);
-
- if (!terms_temp.terms || terms_temp.terms === '') {
- return ;
- }
-
- return (
- <>
- {/* */}
-
-
-
-
-
- Privacy
-
-
- {/* */}
-
- {terms_temp.terms}
-
- {/* */}
- >
- );
-}
-
-export default Privacy;
diff --git a/03_source/mobile_notworking.del/src/pages/profile/ServiceAgreement/index.tsx b/03_source/mobile_notworking.del/src/pages/profile/ServiceAgreement/index.tsx
deleted file mode 100644
index 7bacc42..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/ServiceAgreement/index.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import { IonBackButton, IonButtons, IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/react';
-import { useEffect, useState } from 'react';
-import Markdown from 'react-markdown';
-import Loading from '../../../components/Loading';
-
-function ServiceAgreement() {
- let [terms_temp, setTermsTemp] = useState({ terms: '' });
- const markdown = '# Hi, *Pluto*!';
-
- useEffect(() => {
- fetch('/assets/data/S_A.en.md')
- .then(res => res.text())
- .then(text => {
- setTermsTemp({ terms: text });
- });
- }, []);
-
- if (!terms_temp.terms || terms_temp.terms === '') {
- return ;
- }
-
- return (
- <>
- {/* */}
-
-
-
-
-
- 服務協議及社區規範
-
-
- {/* */}
-
- {terms_temp.terms}
-
- {/* */}
- >
- );
-}
-
-export default ServiceAgreement;
diff --git a/03_source/mobile_notworking.del/src/pages/profile/Share/index.tsx b/03_source/mobile_notworking.del/src/pages/profile/Share/index.tsx
deleted file mode 100644
index 3376632..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/Share/index.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonContent,
- IonHeader,
- IonTextarea,
- IonTitle,
- IonToolbar,
-} from '@ionic/react';
-
-function ContactUsPage() {
- return (
- <>
-
-
-
-
-
- Contact us
-
-
-
-
-
What assistance do you need?
-
-
-
-
Add attachments
-
-
-
- {/* */}
-
-
- Send
-
-
-
- >
- );
-}
-
-export default ContactUsPage;
diff --git a/03_source/mobile_notworking.del/src/pages/profile/index.tsx b/03_source/mobile_notworking.del/src/pages/profile/index.tsx
deleted file mode 100644
index 602c3f9..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/index.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-// REQ0053/Profile-page
-
-import { IonContent, IonPage } from '@ionic/react';
-import React from 'react';
-import './style.scss';
-
-import PageRoot from './PageRoot';
-
-interface AboutProps {}
-
-const Profile: React.FC = () => {
- return (
- <>
-
-
-
-
-
- >
- );
-};
-
-export default React.memo(Profile);
diff --git a/03_source/mobile_notworking.del/src/pages/profile/page-setting/ChangeLanguageModal/index.tsx b/03_source/mobile_notworking.del/src/pages/profile/page-setting/ChangeLanguageModal/index.tsx
deleted file mode 100644
index e61da63..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/page-setting/ChangeLanguageModal/index.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import { IonButton } from '@ionic/react';
-import { useRef } from 'react';
-
-import './style.scss';
-
-const ChangeLanguageModal = ({
- dismiss,
-}: {
- dismiss: (data?: string | null | undefined | number, role?: string) => void;
-}) => {
- const inputRef = useRef(null);
- return (
- <>
-
-
Language
-
-
- dismiss(inputRef.current?.value, 'confirm')}
- fill="outline"
- shape="round"
- size="large"
- >
- English
-
- dismiss(inputRef.current?.value, 'confirm')}
- fill="outline"
- shape="round"
- size="large"
- >
- 中文
-
-
-
-
-
- Change
-
-
-
- >
- );
-};
-
-export default ChangeLanguageModal;
diff --git a/03_source/mobile_notworking.del/src/pages/profile/page-setting/ChangeLanguageModal/style.scss b/03_source/mobile_notworking.del/src/pages/profile/page-setting/ChangeLanguageModal/style.scss
deleted file mode 100644
index cc447c0..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/page-setting/ChangeLanguageModal/style.scss
+++ /dev/null
@@ -1,69 +0,0 @@
-.change-language-modal-block {
- width: 100%;
- height: 400px;
-
- position: relative;
-
- //
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- //
-
- .title {
- font-weight: bold;
- font-size: 1.2rem;
- padding-top: 1rem;
- }
-
- .subtitle {
- font-size: 0.9rem;
- font-weight: 300;
- padding-top: 1rem;
- }
-
- .button-row {
- display: flex;
- flex-direction: row;
- width: 100%;
- justify-content: center;
- align-items: center;
-
- ion-button {
- width: 45%;
- }
- }
-
- .button-column {
- display: flex;
- flex-direction: column;
-
- width: 100%;
-
- padding: 1rem 2rem;
-
- ion-button {
- padding-top: 1rem;
- }
- }
-}
-
-ion-modal {
- --height: auto;
-}
-
-.modal-wrapper {
- position: fixed;
- bottom: 0px;
-}
-
-.apple {
- position: fixed;
- bottom: 0px;
-}
-
-ion-modal::part(content) {
- position: fixed;
- bottom: 0;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/profile/page-setting/index.tsx b/03_source/mobile_notworking.del/src/pages/profile/page-setting/index.tsx
deleted file mode 100644
index e25ab6f..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/page-setting/index.tsx
+++ /dev/null
@@ -1,161 +0,0 @@
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonContent,
- IonIcon,
- IonItem,
- IonLabel,
- IonList,
- IonNavLink,
- IonTitle,
- useIonModal,
-} from '@ionic/react';
-import {
- alertCircle,
- chatbubbles,
- chevronBackOutline,
- earth,
- idCard,
- newspaper,
- shareSocial,
- trash,
-} from 'ionicons/icons';
-import { useRef, useState } from 'react';
-
-import ContactUsPage from '../Contactus';
-import Privacy from '../Privacy';
-
-import { OverlayEventDetail } from '@ionic/react/dist/types/components/react-component-lib/interfaces';
-import HKPartyIonHeader from '../../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../../components/HKPartyIonToolbar';
-import ServiceAgreement from '../ServiceAgreement';
-import ChangeLanguageModal from './ChangeLanguageModal';
-import './style.scss';
-
-const DeleteTheAccountModal = ({
- dismiss,
-}: {
- dismiss: (data?: string | null | undefined | number, role?: string) => void;
-}) => {
- const inputRef = useRef(null);
- return (
- <>
-
-
-
-
-
Delete the Account
-
You cannot re-register after deleting your account
-
-
- Confirm
-
- dismiss(inputRef.current?.value, 'confirm')}
- fill="outline"
- shape="round"
- size="large"
- >
- Cancel
-
-
-
- >
- );
-};
-
-function PageSetting() {
- const [delete_the_account_modal_present, delete_the_account_modal_dismiss] = useIonModal(DeleteTheAccountModal, {
- dismiss: (data: string, role: string) => delete_the_account_modal_dismiss(data, role),
- });
- const [message, setMessage] = useState('This modal example uses the modalController to present and dismiss modals.');
-
- function openDeleteTheAccountModal() {
- delete_the_account_modal_present({
- onWillDismiss: (ev: CustomEvent) => {
- if (ev.detail.role === 'confirm') {
- setMessage(`Hello, ${ev.detail.data}!`);
- }
- },
- });
- }
-
- const [change_language_modal_present, change_language_modal_dismiss] = useIonModal(ChangeLanguageModal, {
- dismiss: (data: string, role: string) => change_language_modal_dismiss(data, role),
- });
-
- function openChangeLanguageModal() {
- change_language_modal_present({
- onWillDismiss: (ev: CustomEvent) => {
- if (ev.detail.role === 'confirm') {
- setMessage(`Hello, ${ev.detail.data}!`);
- }
- },
- });
- }
-
- return (
- <>
-
-
-
-
-
- {'Settings'}
-
-
- {/* */}
-
-
- }>
-
-
- {'Contact us'}
-
-
-
- openChangeLanguageModal()}>
-
- {'Language'}
-
-
- }>
-
-
- {'Privacy'}
-
-
-
- }>
-
-
- {'Service agreement'}
-
-
-
-
-
- {'Share'}
-
-
- openDeleteTheAccountModal()}>
-
- {'Delete Account'}
-
-
-
- {/* */}
-
- {/* */}
-
- {/* */}
- >
- );
-}
-
-export default PageSetting;
diff --git a/03_source/mobile_notworking.del/src/pages/profile/page-setting/style.scss b/03_source/mobile_notworking.del/src/pages/profile/page-setting/style.scss
deleted file mode 100644
index 1a337fe..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/page-setting/style.scss
+++ /dev/null
@@ -1,57 +0,0 @@
-.block {
- width: 100%;
- height: 400px;
-
- position: relative;
-
- //
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- //
-
- .title {
- font-weight: bold;
- font-size: 1.2rem;
- padding-top: 1rem;
- }
-
- .subtitle {
- font-size: 0.9rem;
- font-weight: 300;
- padding-top: 1rem;
- }
-
- .button-column {
- display: flex;
- flex-direction: column;
-
- width: 100%;
-
- padding: 1rem 2rem;
-
- ion-button {
- padding-top: 1rem;
- }
- }
-}
-
-ion-modal {
- --height: auto;
-}
-
-.modal-wrapper {
- position: fixed;
- bottom: 0px;
-}
-
-.apple {
- position: fixed;
- bottom: 0px;
-}
-
-ion-modal::part(content) {
- position: fixed;
- bottom: 0;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/profile/page-three.tsx b/03_source/mobile_notworking.del/src/pages/profile/page-three.tsx
deleted file mode 100644
index 5cbb9e4..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/page-three.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import { IonBackButton, IonButtons, IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/react';
-
-function PageThree() {
- return (
- <>
-
-
-
-
-
- Page Three
-
-
-
- Page Three
-
- >
- );
-}
-
-export default PageThree;
diff --git a/03_source/mobile_notworking.del/src/pages/profile/page-two.tsx b/03_source/mobile_notworking.del/src/pages/profile/page-two.tsx
deleted file mode 100644
index f0fe8ff..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/page-two.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { IonBackButton, IonButtons, IonContent, IonHeader, IonToolbar } from '@ionic/react';
-import { chevronBackOutline } from 'ionicons/icons';
-
-function PageTwo() {
- return (
- <>
- {/* */}
-
-
-
-
-
-
-
- {/* */}
-
- Page Two
- Use the back button to navigate to the previous page.
-
- {/* */}
- >
- );
-}
-
-export default PageTwo;
diff --git a/03_source/mobile_notworking.del/src/pages/profile/profile_eng.png b/03_source/mobile_notworking.del/src/pages/profile/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/profile/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/profile/style.scss b/03_source/mobile_notworking.del/src/pages/profile/style.scss
deleted file mode 100644
index 64af671..0000000
--- a/03_source/mobile_notworking.del/src/pages/profile/style.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-#my-profile-page {
- background-color: white;
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
-
-.row {
- margin: 1rem 0rem;
- display: flex;
- flex-direction: row;
- justify-content: space-between;
-}
diff --git a/03_source/mobile_notworking.del/src/pages/user_profile/NearByIonItem.tsx b/03_source/mobile_notworking.del/src/pages/user_profile/NearByIonItem.tsx
deleted file mode 100644
index ce04e37..0000000
--- a/03_source/mobile_notworking.del/src/pages/user_profile/NearByIonItem.tsx
+++ /dev/null
@@ -1,177 +0,0 @@
-// REQ0047-order-page
-
-import {
- IonButton,
- IonButtons,
- IonContent,
- IonDatetime,
- IonHeader,
- IonIcon,
- IonItem,
- IonLabel,
- IonList,
- IonMenuButton,
- IonPage,
- IonPopover,
- IonSelect,
- IonSelectOption,
- IonText,
- IonThumbnail,
- IonToolbar,
-} from '@ionic/react';
-import { format, parseISO } from 'date-fns';
-import { caretForwardOutline, ellipsisHorizontal, ellipsisVertical } from 'ionicons/icons';
-import React, { useState } from 'react';
-import AboutPopover from '../../components/AboutPopover';
-import './style.scss';
-
-interface AboutProps {}
-
-const NearByIonItem: React.FC = () => {
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
- const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison');
- const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00');
-
- const selectOptions = {
- header: 'Select a Location',
- };
-
- const presentPopover = (e: React.MouseEvent) => {
- setPopoverEvent(e.nativeEvent);
- setShowPopover(true);
- };
-
- function displayDate(date: string, dateFormat: string) {
- return format(parseISO(date), dateFormat);
- }
-
- return (
- <>
-
-
-
-
-
-
-
-
-
John 20
-
Fishing, basketball, piano
-
40 km. Sai Kung
-
-
-
- >
- );
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* Instead of loading an image each time the select changes, use opacity to transition them */}
-
-
-
-
-
-
-
About
-
-
- The Ionic Conference is a one-day conference on {displayDate(conferenceDate, 'MMM dd, yyyy')} featuring
- talks from the Ionic team. It is focused on Ionic applications being built with Ionic Framework. This
- includes migrating apps to the latest version of the framework, Angular concepts, Webpack, Sass, and many
- other technologies used in Ionic 2. Tickets are completely sold out, and we’re expecting more than 1000
- developers – making this the largest Ionic conference ever!
-
-
-
Details
-
-
-
- setLocation(e.detail.value as any)}
- >
- Madison, WI
- Austin, TX
- Chicago, IL
- Seattle, WA
-
-
-
- Date
- {displayDate(conferenceDate, 'MMM dd, yyyy')}
-
- setConferenceDate(e.detail.value! as string)}
- presentation="date"
- >
-
-
-
-
-
Internet
-
-
-
- Wifi network
- ica{displayDate(conferenceDate, 'y')}
-
-
- Password
- makegoodthings
-
-
-
-
-
- setShowPopover(false)}>
- setShowPopover(false)} />
-
-
- );
-};
-
-export default React.memo(NearByIonItem);
diff --git a/03_source/mobile_notworking.del/src/pages/user_profile/index.tsx b/03_source/mobile_notworking.del/src/pages/user_profile/index.tsx
deleted file mode 100644
index 88656bb..0000000
--- a/03_source/mobile_notworking.del/src/pages/user_profile/index.tsx
+++ /dev/null
@@ -1,117 +0,0 @@
-// REQ0043/profile_detail
-
-import {
- IonButton,
- IonButtons,
- IonContent,
- IonFooter,
- IonIcon,
- IonPage,
- IonPopover,
- IonText,
- IonTitle,
-} from '@ionic/react';
-import { chevronBackOutline, ellipsisHorizontal, ellipsisVertical } from 'ionicons/icons';
-import React, { useEffect, useState } from 'react';
-import AboutPopover from '../../components/AboutPopover';
-import './style.scss';
-
-// import ProfileEng from './profile_eng.png';
-import { useGetUserProfileById } from '../../hooks/useGetUserProfileById';
-
-import _ from 'lodash';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-
-interface AboutProps {
- match: { params: { user_id: any } };
-}
-
-const UserProfile: React.FC = props => {
- let {
- match: {
- params: { user_id },
- },
- } = props;
- const [user_profile] = useGetUserProfileById({ user_id });
- const [page_content, setPageContent] = useState({});
-
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
- const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison');
- const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00');
-
- const presentPopover = (e: React.MouseEvent) => {
- setPopoverEvent(e.nativeEvent);
- setShowPopover(true);
- };
-
- useEffect(() => {
- if (!_.isEmpty(user_profile)) {
- console.log(user_profile);
- setPageContent({ ...user_profile, avatar_url: user_profile.avatar_urls[0] });
- }
- }, [user_profile]);
-
- if (_.isEmpty(page_content)) return ;
-
- return (
- <>
-
-
-
-
-
- history.back()} icon={chevronBackOutline}>
-
-
- {'Near by Profiles'}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {page_content.about_user}
-
-
{page_content.gender == 1 ? 'Male' : 'Female'}
-
{page_content.height_cm} cm
-
{page_content.weight_kg} kg
-
{page_content.career}
-
{page_content.spoken_language}
-
{page_content.education}
-
-
-
-
-
-
- {'Chat'}
-
-
-
- setShowPopover(false)}>
- setShowPopover(false)} />
-
-
- >
- );
-};
-
-export default React.memo(UserProfile);
diff --git a/03_source/mobile_notworking.del/src/pages/user_profile/profile_eng.png b/03_source/mobile_notworking.del/src/pages/user_profile/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/user_profile/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/user_profile/sample_user_profile_pic.avif b/03_source/mobile_notworking.del/src/pages/user_profile/sample_user_profile_pic.avif
deleted file mode 100644
index 1ee563e..0000000
Binary files a/03_source/mobile_notworking.del/src/pages/user_profile/sample_user_profile_pic.avif and /dev/null differ
diff --git a/03_source/mobile_notworking.del/src/pages/user_profile/style.scss b/03_source/mobile_notworking.del/src/pages/user_profile/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_notworking.del/src/pages/user_profile/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_notworking.del/src/react-app-env.d.ts b/03_source/mobile_notworking.del/src/react-app-env.d.ts
deleted file mode 100644
index 6431bc5..0000000
--- a/03_source/mobile_notworking.del/src/react-app-env.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-///
diff --git a/03_source/mobile_notworking.del/src/serviceWorker.ts b/03_source/mobile_notworking.del/src/serviceWorker.ts
deleted file mode 100644
index b27f047..0000000
--- a/03_source/mobile_notworking.del/src/serviceWorker.ts
+++ /dev/null
@@ -1,133 +0,0 @@
-// This optional code is used to register a service worker.
-// register() is not called by default.
-
-// This lets the app load faster on subsequent visits in production, and gives
-// it offline capabilities. However, it also means that developers (and users)
-// will only see deployed updates on subsequent visits to a page, after all the
-// existing tabs open on the page have been closed, since previously cached
-// resources are updated in the background.
-
-// To learn more about the benefits of this model and instructions on how to
-// opt-in, read https://bit.ly/CRA-PWA
-
-const isLocalhost = Boolean(
- window.location.hostname === 'localhost' ||
- // [::1] is the IPv6 localhost address.
- window.location.hostname === '[::1]' ||
- // 127.0.0.1/8 is considered localhost for IPv4.
- window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),
-);
-
-type Config = {
- onSuccess?: (registration: ServiceWorkerRegistration) => void;
- onUpdate?: (registration: ServiceWorkerRegistration) => void;
-};
-
-export function register(config?: Config) {
- if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
- // The URL constructor is available in all browsers that support SW.
- const publicUrl = new URL((process as { env: { [key: string]: string } }).env.PUBLIC_URL, window.location.href);
- if (publicUrl.origin !== window.location.origin) {
- // Our service worker won't work if PUBLIC_URL is on a different origin
- // from what our page is served on. This might happen if a CDN is used to
- // serve assets; see https://github.com/facebook/create-react-app/issues/2374
- return;
- }
-
- window.addEventListener('load', () => {
- const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
-
- if (isLocalhost) {
- // This is running on localhost. Let's check if a service worker still exists or not.
- checkValidServiceWorker(swUrl, config);
-
- // Add some additional logging to localhost, pointing developers to the
- // service worker/PWA documentation.
- navigator.serviceWorker.ready.then(() => {
- console.log(
- 'This web app is being served cache-first by a service ' +
- 'worker. To learn more, visit https://bit.ly/CRA-PWA',
- );
- });
- } else {
- // Is not localhost. Just register service worker
- registerValidSW(swUrl, config);
- }
- });
- }
-}
-
-function registerValidSW(swUrl: string, config?: Config) {
- navigator.serviceWorker
- .register(swUrl)
- .then(registration => {
- registration.onupdatefound = () => {
- const installingWorker = registration.installing;
- if (installingWorker == null) {
- return;
- }
- installingWorker.onstatechange = () => {
- if (installingWorker.state === 'installed') {
- if (navigator.serviceWorker.controller) {
- // At this point, the updated precached content has been fetched,
- // but the previous service worker will still serve the older
- // content until all client tabs are closed.
- console.log(
- 'New content is available and will be used when all ' +
- 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',
- );
-
- // Execute callback
- if (config && config.onUpdate) {
- config.onUpdate(registration);
- }
- } else {
- // At this point, everything has been precached.
- // It's the perfect time to display a
- // "Content is cached for offline use." message.
- console.log('Content is cached for offline use.');
-
- // Execute callback
- if (config && config.onSuccess) {
- config.onSuccess(registration);
- }
- }
- }
- };
- };
- })
- .catch(error => {
- console.error('Error during service worker registration:', error);
- });
-}
-
-function checkValidServiceWorker(swUrl: string, config?: Config) {
- // Check if the service worker can be found. If it can't reload the page.
- fetch(swUrl)
- .then(response => {
- // Ensure service worker exists, and that we really are getting a JS file.
- const contentType = response.headers.get('content-type');
- if (response.status === 404 || (contentType != null && contentType.indexOf('javascript') === -1)) {
- // No service worker found. Probably a different app. Reload the page.
- navigator.serviceWorker.ready.then(registration => {
- registration.unregister().then(() => {
- window.location.reload();
- });
- });
- } else {
- // Service worker found. Proceed as normal.
- registerValidSW(swUrl, config);
- }
- })
- .catch(() => {
- console.log('No internet connection found. App is running in offline mode.');
- });
-}
-
-export function unregister() {
- if ('serviceWorker' in navigator) {
- navigator.serviceWorker.ready.then(registration => {
- registration.unregister();
- });
- }
-}
diff --git a/03_source/mobile_notworking.del/src/store/ChatStore.js b/03_source/mobile_notworking.del/src/store/ChatStore.js
deleted file mode 100644
index feaf22b..0000000
--- a/03_source/mobile_notworking.del/src/store/ChatStore.js
+++ /dev/null
@@ -1,373 +0,0 @@
-import { Store } from 'pullstate';
-
-const ChatStore = new Store({
- chats: [
- {
- id: 1,
- contact_id: 1,
- chats: [
- {
- id: 1,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 2,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 3,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 4,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 5,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 6,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 7,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 8,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 9,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 10,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 11,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 12,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 13,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 14,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:10',
- read: false,
- starred: false,
- },
- ],
- },
- {
- id: 2,
- contact_id: 2,
- chats: [
- {
- id: 1,
- preview: "Excited for the Ioniconf 2021! The 23rd can't come quick enough",
- received: false,
- sent: true,
- date: 'Yesterday',
- read: true,
- starred: false,
- },
- ],
- },
- {
- id: 3,
- contact_id: 3,
- chats: [
- {
- id: 1,
- preview: "Excited for the Ioniconf 2021! The 23rd can't come quick enough",
- received: false,
- sent: true,
- date: 'Saturday',
- read: true,
- starred: false,
- },
- ],
- },
- {
- id: 4,
- contact_id: 4,
- chats: [
- {
- id: 1,
- preview: 'Hey Alan, this is a test whatsapp message',
- received: true,
- sent: false,
- date: 'Friday',
- read: false,
- starred: false,
- },
- ],
- },
- {
- id: 5,
- contact_id: 5,
- chats: [
- {
- id: 1,
- preview: 'Hey Alan, this is a test whatsapp message',
- received: true,
- sent: false,
- date: 'Thursday',
- read: false,
- starred: false,
- },
- ],
- },
- {
- id: 6,
- contact_id: 6,
- chats: [
- {
- id: 1,
- preview: 'Hey Alan, this is a test received whatsapp message',
- received: true,
- sent: false,
- date: 'Wednesday',
- read: false,
- starred: false,
- },
- {
- id: 2,
- preview: 'Hey Josh, this is a test sent whatsapp message',
- received: true,
- sent: true,
- date: 'Wednesday',
- read: true,
- starred: false,
- },
- {
- id: 3,
- preview: 'Awesome man! This seems to be coming together OK!',
- received: true,
- sent: false,
- date: 'Wednesday',
- read: true,
- starred: false,
- },
- ],
- },
- {
- id: 7,
- contact_id: 7,
- chats: [
- {
- id: 1,
- preview: 'Goodluck on the quest to space, the moon and mars!',
- received: true,
- sent: false,
- date: '08/06/2021',
- read: true,
- starred: false,
- },
- ],
- },
- {
- id: 8,
- contact_id: 8,
- chats: [
- {
- id: 1,
- preview: 'Hey Bill, This is a test sent message to your whatsapp',
- received: true,
- sent: false,
- date: '05/06/2021',
- read: true,
- starred: false,
- },
- ],
- },
- {
- id: 9,
- contact_id: 10,
- chats: [
- {
- id: 1,
- preview:
- 'This is Alans WhatsApp clone using the Ionic Framework and CapacitorJS for some native functionality.',
- received: true,
- sent: false,
- date: 'Wednesday',
- read: false,
- starred: false,
- },
- {
- id: 2,
- preview:
- "Yep, and don't forget the Ionic Animations for the slick UI transitions you see, and some Ionic Gestures for sliding etc, as well as some other things!",
- received: true,
- sent: true,
- date: 'Wednesday',
- read: true,
- starred: false,
- },
- {
- id: 3,
- preview: 'Cool! It looks good, can we get another teaser?',
- received: true,
- sent: false,
- date: 'Wednesday',
- read: true,
- starred: false,
- },
- {
- id: 4,
- preview: "Sure... I'll post one on Twitter now!",
- received: false,
- sent: true,
- date: 'Wednesday',
- read: true,
- starred: false,
- },
- ],
- },
- ],
-});
-
-export const getNotificationCount = allChats => {
- let notificationCount = 0;
-
- allChats.forEach(chats => {
- chats.chats.forEach(chat => {
- if (!chat.read) {
- notificationCount++;
- }
- });
- });
-
- return notificationCount;
-};
-
-export const markAllAsRead = contactId => {
- ChatStore.update(s => {
- const chatIndex = s.chats.findIndex(chat => chat.contact_id === parseInt(contactId));
-
- s.chats[chatIndex].chats.forEach(chat => {
- chat.read = true;
- });
- });
-};
-
-export const sendChatMessage = (
- contactId,
- message,
- reply = false,
- replyID = false,
- image = false,
- imagePath = false,
-) => {
- const today = new Date();
- const currentTime = `${today.getHours() < 10 ? `0${today.getHours()}` : today.getHours()}:${
- today.getMinutes() < 10 ? `0${today.getMinutes()}` : today.getMinutes()
- }`;
-
- ChatStore.update(s => {
- const chatIndex = s.chats.findIndex(chat => chat.contact_id === parseInt(contactId));
- const newChat = {
- id: s.chats[chatIndex].length + 1,
- preview: message,
- received: false,
- sent: true,
- date: currentTime,
- read: true,
- starred: false,
- reply,
- replyID,
- image: image,
- imagePath: imagePath,
- };
-
- s.chats[chatIndex].chats.push(newChat);
- });
-};
-
-export const starChatMessage = (contactId, messageId) => {
- ChatStore.update(s => {
- const chatIndex = s.chats.findIndex(chat => chat.contact_id === parseInt(contactId));
- const messageIndex = s.chats[chatIndex].chats.findIndex(message => message.id === parseInt(messageId));
-
- s.chats[chatIndex].chats[messageIndex].starred = !s.chats[chatIndex].chats[messageIndex].starred;
- });
-};
-
-export default ChatStore;
diff --git a/03_source/mobile_notworking.del/src/store/ContactStore.js b/03_source/mobile_notworking.del/src/store/ContactStore.js
deleted file mode 100644
index 363e4be..0000000
--- a/03_source/mobile_notworking.del/src/store/ContactStore.js
+++ /dev/null
@@ -1,113 +0,0 @@
-import { Store } from 'pullstate';
-
-const ContactStore_long = new Store({
- contacts: [
- {
- id: 1,
- name: 'Amy Sister',
- avatar: '/assets/amy.jpeg',
- },
- {
- id: 2,
- name: 'Max Lynch',
- avatar: '/assets/max.jpeg',
- },
- {
- id: 3,
- name: 'Mike Hartington',
- avatar: '/assets/mike.jpeg',
- },
- {
- id: 4,
- name: 'Henk Jurriens',
- avatar: '/assets/henk.jpeg',
- },
- {
- id: 5,
- name: 'Simon Grimm',
- avatar: '/assets/simon.jpeg',
- },
- {
- id: 6,
- name: 'Josh Morony',
- avatar: '/assets/josh.jpeg',
- },
- {
- id: 7,
- name: 'Elon Musk',
- avatar: '/assets/elon.jpeg',
- },
- {
- id: 8,
- name: 'Bill Gates',
- avatar: '/assets/bill.jpeg',
- },
- {
- id: 9,
- name: 'Mark Zuckerberg',
- avatar: '/assets/mark.jpeg',
- },
- {
- id: 10,
- name: 'Ionic Framework (not)',
- avatar: '/assets/ionic.png',
- },
- ],
-});
-
-const ContactStore = new Store({
- contacts: [
- {
- id: 1,
- name: 'Amy Sister',
- avatar: '/assets/amy.jpeg',
- },
- {
- id: 2,
- name: 'Max Lynch',
- avatar: '/assets/max.jpeg',
- },
- {
- id: 3,
- name: 'Mike Hartington',
- avatar: '/assets/mike.jpeg',
- },
- {
- id: 4,
- name: 'Henk Jurriens',
- avatar: '/assets/henk.jpeg',
- },
- {
- id: 5,
- name: 'Simon Grimm',
- avatar: '/assets/simon.jpeg',
- },
- {
- id: 6,
- name: 'Josh Morony',
- avatar: '/assets/josh.jpeg',
- },
- {
- id: 7,
- name: 'Elon Musk',
- avatar: '/assets/elon.jpeg',
- },
- {
- id: 8,
- name: 'Bill Gates',
- avatar: '/assets/bill.jpeg',
- },
- {
- id: 9,
- name: 'Mark Zuckerberg',
- avatar: '/assets/mark.jpeg',
- },
- {
- id: 10,
- name: 'Ionic Framework (not)',
- avatar: '/assets/ionic.png',
- },
- ],
-});
-
-export default ContactStore;
diff --git a/03_source/mobile_notworking.del/src/store/Selectors.js b/03_source/mobile_notworking.del/src/store/Selectors.js
deleted file mode 100644
index c48e53d..0000000
--- a/03_source/mobile_notworking.del/src/store/Selectors.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import { createSelector } from 'reselect';
-
-const getState = state => state;
-
-// General getters
-export const getContacts = createSelector(getState, state => state.contacts);
-export const getChats = createSelector(getState, state => state.chats);
-
-// More specific getters
-export const getChat = contactId =>
- createSelector(getState, state => state.chats.filter(c => parseInt(c.contact_id) === parseInt(contactId))[0].chats);
-export const getContact = contactId =>
- createSelector(getState, state => state.contacts.filter(c => parseInt(c.id) === parseInt(contactId))[0]);
-
-export const getChatNotificationCount = contactId =>
- createSelector(getState, state =>
- state.chats
- .filter(c => parseInt(c.contact_id) === parseInt(contactId))[0]
- .chats.filter(chat => chat.read === false),
- );
diff --git a/03_source/mobile_notworking.del/src/store/index.js b/03_source/mobile_notworking.del/src/store/index.js
deleted file mode 100644
index 19d02b6..0000000
--- a/03_source/mobile_notworking.del/src/store/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export { default as ChatStore } from './ChatStore';
-export { default as ContactStore } from './ContactStore';
diff --git a/03_source/mobile_notworking.del/src/supabaseClient.ts b/03_source/mobile_notworking.del/src/supabaseClient.ts
deleted file mode 100644
index c064b83..0000000
--- a/03_source/mobile_notworking.del/src/supabaseClient.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { createClient } from '@supabase/supabase-js';
-
-const supabaseUrl = 'import.meta.env.VITE_SUPABASE_URL';
-const supabaseAnonKey = 'import.meta.env.VITE_SUPABASE_ANON_KEY';
-
-export const supabase = createClient(supabaseUrl, supabaseAnonKey);
diff --git a/03_source/mobile_notworking.del/src/theme/variables.css b/03_source/mobile_notworking.del/src/theme/variables.css
deleted file mode 100644
index 7523a20..0000000
--- a/03_source/mobile_notworking.del/src/theme/variables.css
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Ionic Variables and Theming
- * ----------------------------------------------------------------------------
- * For more information, please see
- * https://www.ionicframework.com/docs/theming/
- */
-
-/*
- * Additional Ionic Colors
- * ----------------------------------------------------------------------------
- * In order to add colors to be used within Ionic components,
- * the color should be added as a class with the convention `.ion-color-{COLOR}`
- * where `{COLOR}` is the color to be used on the Ionic component.
- * For more information on adding new colors, please see
- * https://ionicframework.com/docs/theming/colors#adding-colors
- *
- * To generate the code for a new color, check out our new color creator:
- * https://ionicframework.com/docs/theming/colors#new-color-creator
- */
-
-:root {
- --ion-color-favorite: #69bb7b;
- --ion-color-favorite-rgb: 105, 187, 123;
- --ion-color-favorite-contrast: #ffffff;
- --ion-color-favorite-contrast-rgb: 255, 255, 255;
- --ion-color-favorite-shade: #5ca56c;
- --ion-color-favorite-tint: #78c288;
-
- --ion-color-twitter: #1da1f4;
- --ion-color-twitter-rgb: 29, 161, 244;
- --ion-color-twitter-contrast: #ffffff;
- --ion-color-twitter-contrast-rgb: 255, 255, 255;
- --ion-color-twitter-shade: #1a8ed7;
- --ion-color-twitter-tint: #34aaf5;
-
- --ion-color-instagram: #5956d8;
- --ion-color-instagram-rgb: 89, 86, 216;
- --ion-color-instagram-contrast: #ffffff;
- --ion-color-instagram-contrast-rgb: 255, 255, 255;
- --ion-color-instagram-shade: #4e4cbe;
- --ion-color-instagram-tint: #6a67dc;
-
- --ion-color-vimeo: #23b6ea;
- --ion-color-vimeo-rgb: 35, 182, 234;
- --ion-color-vimeo-contrast: #ffffff;
- --ion-color-vimeo-contrast-rgb: 255, 255, 255;
- --ion-color-vimeo-shade: #1fa0ce;
- --ion-color-vimeo-tint: #39bdec;
-
- --ion-color-facebook: #3b5998;
- --ion-color-facebook-rgb: 59, 89, 152;
- --ion-color-facebook-contrast: #ffffff;
- --ion-color-facebook-contrast-rgb: 255, 255, 255;
- --ion-color-facebook-shade: #344e86;
- --ion-color-facebook-tint: #4f6aa2;
-}
-
-.ion-color-favorite {
- --ion-color-base: var(--ion-color-favorite);
- --ion-color-base-rgb: var(--ion-color-favorite-rgb);
- --ion-color-contrast: var(--ion-color-favorite-contrast);
- --ion-color-contrast-rgb: var(--ion-color-favorite-contrast-rgb);
- --ion-color-shade: var(--ion-color-favorite-shade);
- --ion-color-tint: var(--ion-color-favorite-tint);
-}
-
-.ion-color-twitter {
- --ion-color-base: var(--ion-color-twitter);
- --ion-color-base-rgb: var(--ion-color-twitter-rgb);
- --ion-color-contrast: var(--ion-color-twitter-contrast);
- --ion-color-contrast-rgb: var(--ion-color-twitter-contrast-rgb);
- --ion-color-shade: var(--ion-color-twitter-shade);
- --ion-color-tint: var(--ion-color-twitter-tint);
-}
-
-.ion-color-google {
- --ion-color-base: var(--ion-color-google);
- --ion-color-base-rgb: var(--ion-color-google-rgb);
- --ion-color-contrast: var(--ion-color-google-contrast);
- --ion-color-contrast-rgb: var(--ion-color-google-contrast-rgb);
- --ion-color-shade: var(--ion-color-google-shade);
- --ion-color-tint: var(--ion-color-google-tint);
-}
-
-.ion-color-instagram {
- --ion-color-base: var(--ion-color-instagram);
- --ion-color-base-rgb: var(--ion-color-instagram-rgb);
- --ion-color-contrast: var(--ion-color-instagram-contrast);
- --ion-color-contrast-rgb: var(--ion-color-instagram-contrast-rgb);
- --ion-color-shade: var(--ion-color-instagram-shade);
- --ion-color-tint: var(--ion-color-instagram-tint);
-}
-
-.ion-color-vimeo {
- --ion-color-base: var(--ion-color-vimeo);
- --ion-color-base-rgb: var(--ion-color-vimeo-rgb);
- --ion-color-contrast: var(--ion-color-vimeo-contrast);
- --ion-color-contrast-rgb: var(--ion-color-vimeo-contrast-rgb);
- --ion-color-shade: var(--ion-color-vimeo-shade);
- --ion-color-tint: var(--ion-color-vimeo-tint);
-}
-
-.ion-color-facebook {
- --ion-color-base: var(--ion-color-facebook);
- --ion-color-base-rgb: var(--ion-color-facebook-rgb);
- --ion-color-contrast: var(--ion-color-facebook-contrast);
- --ion-color-contrast-rgb: var(--ion-color-facebook-contrast-rgb);
- --ion-color-shade: var(--ion-color-facebook-shade);
- --ion-color-tint: var(--ion-color-facebook-tint);
-}
-
-.ion-color-github {
- --ion-color-base: #211f1f;
- --ion-color-base-rgb: 33, 31, 31;
- --ion-color-contrast: #ffffff;
- --ion-color-contrast-rgb: 255, 255, 255;
- --ion-color-shade: #1d1b1b;
- --ion-color-tint: #373535;
-}
-
-.ion-color-instagram {
- --ion-color-base: #9537bc;
- --ion-color-base-rgb: 149, 55, 188;
- --ion-color-contrast: #ffffff;
- --ion-color-contrast-rgb: 255, 255, 255;
- --ion-color-shade: #8330a5;
- --ion-color-tint: #a04bc3;
-}
-
-/*
- * Shared Variables
- * ----------------------------------------------------------------------------
- * To customize the look and feel of this app, you can override
- * the CSS variables found in Ionic's source files.
- * To view all of the possible Ionic variables, see:
- * https://ionicframework.com/docs/theming/css-variables#ionic-variables
- */
-
-:root {
- --ion-headings-font-weight: 300;
-
- --ion-color-angular: #ac282b;
- --ion-color-communication: #8e8d93;
- --ion-color-tooling: #fe4c52;
- --ion-color-services: #fd8b2d;
- --ion-color-design: #fed035;
- --ion-color-workshop: #69bb7b;
- --ion-color-food: #3bc7c4;
- --ion-color-documentation: #b16be3;
- --ion-color-navigation: #6600cc;
-}
-
-/*
- * App iOS Variables
- * ----------------------------------------------------------------------------
- * iOS only CSS variables can go here
- */
-
-.ios {
-}
-
-/*
- * App Material Design Variables
- * ----------------------------------------------------------------------------
- * Material Design only CSS variables can go here
- */
-
-.md {
-}
diff --git a/03_source/mobile_notworking.del/src/util/IsLoggedIn.tsx b/03_source/mobile_notworking.del/src/util/IsLoggedIn.tsx
deleted file mode 100644
index 5d5bc91..0000000
--- a/03_source/mobile_notworking.del/src/util/IsLoggedIn.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-// if not logged in, checked by profile is null or undefined
-
-export default function IsLoggedIn(profile) {
- if (!profile) return false;
- return true;
-}
diff --git a/03_source/mobile_notworking.del/src/util/types.ts b/03_source/mobile_notworking.del/src/util/types.ts
deleted file mode 100644
index 16d490a..0000000
--- a/03_source/mobile_notworking.del/src/util/types.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-export interface DispatchObject {
- [key: string]: any;
- type: string;
-}
-
-type PromiseResolveValue = T extends Promise ? R : T;
-type EffectType any> = ReturnType>;
-type EffectReturnValue any> = PromiseResolveValue>;
-export type ActionType any> = ReturnType extends DispatchObject
- ? ReturnType
- : EffectReturnValue;
diff --git a/03_source/mobile_notworking.del/tsconfig.json b/03_source/mobile_notworking.del/tsconfig.json
deleted file mode 100644
index 72e8164..0000000
--- a/03_source/mobile_notworking.del/tsconfig.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "compilerOptions": {
- "target": "ESNext",
- "useDefineForClassFields": true,
- "lib": ["DOM", "DOM.Iterable", "ESNext"],
- "allowJs": false,
- "skipLibCheck": true,
- "esModuleInterop": false,
- "allowSyntheticDefaultImports": true,
- "strict": true,
- "forceConsistentCasingInFileNames": true,
- "module": "ESNext",
- "moduleResolution": "Node",
- "resolveJsonModule": true,
- "isolatedModules": true,
- "noEmit": true,
- "jsx": "react-jsx"
- },
- "include": ["src"],
- "references": [{ "path": "./tsconfig.node.json" }],
- "watchOptions": {
- "excludeFiles": ["**/*copy*", "**/*.bak", "**/*.del", "**/_archive"]
- }
-}
diff --git a/03_source/mobile_notworking.del/tsconfig.node.json b/03_source/mobile_notworking.del/tsconfig.node.json
deleted file mode 100644
index 9d31e2a..0000000
--- a/03_source/mobile_notworking.del/tsconfig.node.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "compilerOptions": {
- "composite": true,
- "module": "ESNext",
- "moduleResolution": "Node",
- "allowSyntheticDefaultImports": true
- },
- "include": ["vite.config.ts"]
-}
diff --git a/03_source/mobile_notworking.del/vite.config.ts b/03_source/mobile_notworking.del/vite.config.ts
deleted file mode 100644
index ff25d23..0000000
--- a/03_source/mobile_notworking.del/vite.config.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { defineConfig } from 'vite';
-import react from '@vitejs/plugin-react';
-import legacy from '@vitejs/plugin-legacy';
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [
- react(),
- legacy({
- // es.array.at: Voyager code iOS 15.2
- // es.object.has-own: ReactMarkdown iOS 15.2
- modernPolyfills: ['es.array.at', 'es.object.has-own'],
- }),
- ],
- server: {
- port: 3000,
- },
- define: {
- 'process.env': process.env,
- },
-});
diff --git a/03_source/mobile_old.del/.editorconfig b/03_source/mobile_old.del/.editorconfig
deleted file mode 100644
index 82da0b1..0000000
--- a/03_source/mobile_old.del/.editorconfig
+++ /dev/null
@@ -1,15 +0,0 @@
-# http://editorconfig.org
-
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.md]
-insert_final_newline = false
-trim_trailing_whitespace = false
\ No newline at end of file
diff --git a/03_source/mobile_old.del/.gitignore b/03_source/mobile_old.del/.gitignore
deleted file mode 100644
index adf7544..0000000
--- a/03_source/mobile_old.del/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-**/*.bak
-**/*copy*.*
\ No newline at end of file
diff --git a/03_source/mobile_old.del/.prettierignore b/03_source/mobile_old.del/.prettierignore
deleted file mode 100644
index 91da9b3..0000000
--- a/03_source/mobile_old.del/.prettierignore
+++ /dev/null
@@ -1,5 +0,0 @@
-dist
-node_modules
-coverage
-build
-.next
\ No newline at end of file
diff --git a/03_source/mobile_old.del/.prettierrc.js b/03_source/mobile_old.del/.prettierrc.js
deleted file mode 100644
index 1def622..0000000
--- a/03_source/mobile_old.del/.prettierrc.js
+++ /dev/null
@@ -1,40 +0,0 @@
-module.exports = {
- arrowParens: 'avoid',
- bracketSpacing: true,
- htmlWhitespaceSensitivity: 'strict',
- insertPragma: false,
- jsxBracketSameLine: false,
- jsxSingleQuote: false,
- printWidth: 120,
- proseWrap: 'preserve',
- quoteProps: 'as-needed',
- requirePragma: false,
- semi: true,
- singleQuote: true,
- tabWidth: 2,
- trailingComma: 'all',
- useTabs: false,
- endOfLine: 'lf',
- //
- overrides: [
- {
- files: ['*.yml'],
- options: {
- singleQuote: false,
- },
- },
- {
- files: ['*.md', '*.mdx'],
- options: {
- useTabs: false,
- },
- },
- {
- files: ['**/mobile_main/src/App.tsx'],
- options: {
- printWidth: 360,
- },
- },
- ],
- // plugins: [require.resolve('prettier-plugin-organize-imports')],
-};
diff --git a/03_source/mobile_old.del/.vscode/settings.json b/03_source/mobile_old.del/.vscode/settings.json
deleted file mode 100644
index 3b66410..0000000
--- a/03_source/mobile_old.del/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "git.ignoreLimitWarning": true
-}
\ No newline at end of file
diff --git a/03_source/mobile_old.del/backup.js b/03_source/mobile_old.del/backup.js
deleted file mode 100644
index 59d4515..0000000
--- a/03_source/mobile_old.del/backup.js
+++ /dev/null
@@ -1,63 +0,0 @@
-const execSync = require('child_process').execSync;
-const fs = require('fs');
-const path = require('path');
-// const chalk = require('chalk');
-
-// Function to get all subdirectories of a given directory
-function getDirectories(srcPath, excludeDirs) {
- return fs
- .readdirSync(srcPath)
- .filter(file => !excludeDirs.includes(file) && fs.lstatSync(path.join(srcPath, file)).isDirectory())
- .map(name => path.join(srcPath, name));
-}
-
-// Get current working directory
-const cwd = process.cwd();
-const backup_dir = path.join(cwd, '_backup');
-
-// Path to app-head directory
-const appHeadDir = path.join(cwd, 'mobile_main');
-
-// Check if app-head exists
-if (!fs.existsSync(appHeadDir)) {
- console.error(`Error: ${appHeadDir} does not exist.`);
- process.exit(1);
-}
-
-// Execute reset.bat scripts
-try {
- // execSync(`cmd /c "cd ${appHeadDir} && scripts\\reset.bat"`, { stdio: 'inherit' });
-} catch (err) {
- console.error(`Error executing reset.bat script: ${err.message}`);
- process.exit(1);
-}
-
-// Define excluded directories
-const excludedDirs = ['.next', 'node_modules', '.git', 'volumes', '_mp4'];
-
-// Copy app-head directory and its contents to a new directory with an increasing number suffix
-let maxNum = 0;
-const directories = getDirectories(backup_dir, excludedDirs);
-for (const dir of directories) {
- const match = dir.match(/^.+draft-sut-(\d+).*$/);
- if (match) {
- const num = parseInt(match[1], 10);
- if (num > maxNum) {
- maxNum = num;
- }
- }
-}
-
-var zerofilled = ('0000' + (maxNum + 1)).slice(-4);
-const targetDir = path.join(backup_dir, `draft-sut-${zerofilled}`);
-fs.mkdirSync(targetDir);
-
-// Copy app-head directory and its contents to targetDir, excluding specified directories
-fs.cpSync(appHeadDir, targetDir, {
- filter: src => !excludedDirs.includes(path.basename(src)),
- recursive: true,
-});
-
-console.log(' DONE DONE DONE \n' + ' DONE DONE DONE \n' + ' DONE DONE DONE \n');
-
-console.log(`Successfully backup to ${targetDir}.`);
diff --git a/03_source/mobile_old.del/clear.sh b/03_source/mobile_old.del/clear.sh
deleted file mode 100755
index 7a8aca1..0000000
--- a/03_source/mobile_old.del/clear.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-# sudo chown 1000:1000 -R supabase
-# sudo rm -rf supabase
-# cp -r /home/logic/_wsl_workspace/comission-playlist/buytablet2018@gmail.com/task1/02_design/poc_supabase_budibase/supabase .
-
-# mv ./supabase/volumes ./supabase/volumes.backup
-# cp -r ./supabase/volumes.clean ./supabase/volumes
-
-cd supabase
-
-docker compose kill
-docker compose down --volumes
-
-echo "take a break before remove volumes ... "
-sleep 1
-
-echo "replace volumes with fresh copy..."
-sudo rm -rf ./volumes
-cp -r ../supabase.fresh/volumes ./volumes
-
-docker volume prune --all --force
-
-echo "docker volumes removed..."
-sleep 1
-
-cd ..
-
-echo "clear done"
diff --git a/03_source/mobile_old.del/console_settings.png b/03_source/mobile_old.del/console_settings.png
deleted file mode 100644
index 8396e21..0000000
Binary files a/03_source/mobile_old.del/console_settings.png and /dev/null differ
diff --git a/03_source/mobile_old.del/docker.original/.env.example b/03_source/mobile_old.del/docker.original/.env.example
deleted file mode 100644
index 734802b..0000000
--- a/03_source/mobile_old.del/docker.original/.env.example
+++ /dev/null
@@ -1,105 +0,0 @@
-############
-# Secrets
-# YOU MUST CHANGE THESE BEFORE GOING INTO PRODUCTION
-############
-
-POSTGRES_PASSWORD=your-super-secret-and-long-postgres-password
-JWT_SECRET=your-super-secret-jwt-token-with-at-least-32-characters-long
-ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE
-SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q
-DASHBOARD_USERNAME=supabase
-DASHBOARD_PASSWORD=this_password_is_insecure_and_should_be_updated
-
-############
-# Database - You can change these to any PostgreSQL database that has logical replication enabled.
-############
-
-POSTGRES_HOST=db
-POSTGRES_DB=postgres
-POSTGRES_PORT=5432
-# default user is postgres
-
-############
-# API Proxy - Configuration for the Kong Reverse proxy.
-############
-
-KONG_HTTP_PORT=8000
-KONG_HTTPS_PORT=8443
-
-
-############
-# API - Configuration for PostgREST.
-############
-
-PGRST_DB_SCHEMAS=public,storage,graphql_public
-
-
-############
-# Auth - Configuration for the GoTrue authentication server.
-############
-
-## General
-SITE_URL=http://localhost:3000
-ADDITIONAL_REDIRECT_URLS=
-JWT_EXPIRY=3600
-DISABLE_SIGNUP=false
-API_EXTERNAL_URL=http://localhost:8000
-
-## Mailer Config
-MAILER_URLPATHS_CONFIRMATION="/auth/v1/verify"
-MAILER_URLPATHS_INVITE="/auth/v1/verify"
-MAILER_URLPATHS_RECOVERY="/auth/v1/verify"
-MAILER_URLPATHS_EMAIL_CHANGE="/auth/v1/verify"
-
-## Email auth
-ENABLE_EMAIL_SIGNUP=true
-ENABLE_EMAIL_AUTOCONFIRM=false
-SMTP_ADMIN_EMAIL=admin@example.com
-SMTP_HOST=mail
-SMTP_PORT=2500
-SMTP_USER=fake_mail_user
-SMTP_PASS=fake_mail_password
-SMTP_SENDER_NAME=fake_sender
-ENABLE_ANONYMOUS_USERS=false
-
-## Phone auth
-ENABLE_PHONE_SIGNUP=true
-ENABLE_PHONE_AUTOCONFIRM=true
-
-
-############
-# Studio - Configuration for the Dashboard
-############
-
-STUDIO_DEFAULT_ORGANIZATION=Default Organization
-STUDIO_DEFAULT_PROJECT=Default Project
-
-STUDIO_PORT=3000
-# replace if you intend to use Studio outside of localhost
-SUPABASE_PUBLIC_URL=http://localhost:8000
-
-# Enable webp support
-IMGPROXY_ENABLE_WEBP_DETECTION=true
-
-############
-# Functions - Configuration for Functions
-############
-# NOTE: VERIFY_JWT applies to all functions. Per-function VERIFY_JWT is not supported yet.
-FUNCTIONS_VERIFY_JWT=false
-
-############
-# Logs - Configuration for Logflare
-# Please refer to https://supabase.com/docs/reference/self-hosting-analytics/introduction
-############
-
-LOGFLARE_LOGGER_BACKEND_API_KEY=your-super-secret-and-long-logflare-key
-
-# Change vector.toml sinks to reflect this change
-LOGFLARE_API_KEY=your-super-secret-and-long-logflare-key
-
-# Docker socket location - this value will differ depending on your OS
-DOCKER_SOCKET_LOCATION=/var/run/docker.sock
-
-# Google Cloud Project details
-GOOGLE_PROJECT_ID=GOOGLE_PROJECT_ID
-GOOGLE_PROJECT_NUMBER=GOOGLE_PROJECT_NUMBER
diff --git a/03_source/mobile_old.del/docker.original/.gitignore b/03_source/mobile_old.del/docker.original/.gitignore
deleted file mode 100644
index a1e9dc6..0000000
--- a/03_source/mobile_old.del/docker.original/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-volumes/db/data
-volumes/storage
-.env
-test.http
-docker-compose.override.yml
diff --git a/03_source/mobile_old.del/docker.original/README.md b/03_source/mobile_old.del/docker.original/README.md
deleted file mode 100644
index 9ab215b..0000000
--- a/03_source/mobile_old.del/docker.original/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Supabase Docker
-
-This is a minimal Docker Compose setup for self-hosting Supabase. Follow the steps [here](https://supabase.com/docs/guides/hosting/docker) to get started.
diff --git a/03_source/mobile_old.del/docker.original/db_push.sh b/03_source/mobile_old.del/docker.original/db_push.sh
deleted file mode 100755
index d08e175..0000000
--- a/03_source/mobile_old.del/docker.original/db_push.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env bash
-
-set -ex
-
-export DB_URL="postgres://postgres:your-super-secret-and-long-postgres-password@127.0.0.1:5432/postgres"
-# export SUPABASE_ACCESS_TOKEN="your-super-secret-jwt-token-with-at-least-32-characters-long"
-
-
-echo "y" | npx supabase db reset --db-url $DB_URL
-# npx supabase db push --dry-run --db-url $DB_URL
-
-# npx supabase db diff --db-url $DB_URL
-# npx supabase db dump --db-url $DB_URL \
-# -f ./dump.sql
-# npx supabase db lint --db-url $DB_URL
-# npx supabase db pull --db-url $DB_URL
-# npx supabase db push --db-url $DB_URL
-
-
-
-# npx supabase migration new create_employees_table
-# npx supabase db start --db-url $DB_URL
-
-# npx supabase db push --db-url $DB_URL
-# npx supabase db pull --db-url $DB_URL
-# npx supabase db pull --schema auth,storage --db-url $DB_URL
-# npx supabase db reset --db-url $DB_URL
-# npx supabase seed
diff --git a/03_source/mobile_old.del/docker.original/dc_up.sh b/03_source/mobile_old.del/docker.original/dc_up.sh
deleted file mode 100755
index e681b78..0000000
--- a/03_source/mobile_old.del/docker.original/dc_up.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env bash
-
-set -x
-
-# Start:
-docker compose pull
-
-# production:
-# docker compose up --build
-
-# development, With helpers:
-docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up
-docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml restart mail
-
-# need to manually stop the container, and related volumes as db write to physical disk
-# otherwise the docker won't start
-# Stop:
-docker compose down
-# Destroy:
-docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down -v --remove-orphans
-
-# docker compose logs -f
diff --git a/03_source/mobile_old.del/docker.original/dev/data.sql b/03_source/mobile_old.del/docker.original/dev/data.sql
deleted file mode 100644
index feafb36..0000000
--- a/03_source/mobile_old.del/docker.original/dev/data.sql
+++ /dev/null
@@ -1,50 +0,0 @@
-CREATE TABLE profiles(
- id uuid REFERENCES auth.users NOT NULL,
- updated_at timestamp with time zone,
- username text UNIQUE,
- avatar_url text,
- website text,
- PRIMARY KEY (id),
- UNIQUE (username),
- CONSTRAINT username_length CHECK (char_length(username) >= 3)
-);
-
-ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
-
-CREATE POLICY "Public profiles are viewable by the owner." ON profiles
- FOR SELECT
- USING (auth.uid() = id);
-
-CREATE POLICY "Users can insert their own profile." ON profiles
- FOR INSERT
- WITH CHECK (auth.uid() = id);
-
-CREATE POLICY "Users can update own profile." ON profiles
- FOR UPDATE
- USING (auth.uid() = id);
-
--- Set up Realtime
-BEGIN;
-DROP publication IF EXISTS supabase_realtime;
-CREATE publication supabase_realtime;
-COMMIT;
-
-ALTER publication supabase_realtime
- ADD TABLE profiles;
-
--- Set up Storage
-INSERT INTO storage.buckets(id, name)
- VALUES ('avatars', 'avatars');
-
-CREATE POLICY "Avatar images are publicly accessible." ON storage.objects
- FOR SELECT
- USING (bucket_id = 'avatars');
-
-CREATE POLICY "Anyone can upload an avatar." ON storage.objects
- FOR INSERT
- WITH CHECK (bucket_id = 'avatars');
-
-CREATE POLICY "Anyone can update an avatar." ON storage.objects
- FOR UPDATE
- WITH CHECK (bucket_id = 'avatars');
-
diff --git a/03_source/mobile_old.del/docker.original/dev/docker-compose.dev.yml b/03_source/mobile_old.del/docker.original/dev/docker-compose.dev.yml
deleted file mode 100644
index 226d994..0000000
--- a/03_source/mobile_old.del/docker.original/dev/docker-compose.dev.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-services:
- studio:
- build:
- context: ..
- dockerfile: studio/Dockerfile
- target: dev
- ports:
- - 8082:8082
- mail:
- container_name: supabase-mail
- image: inbucket/inbucket:3.0.3
- ports:
- - "2500:2500" # SMTP
- - "9000:9000" # web interface
- - "1100:1100" # POP3
- auth:
- environment:
- # empty for no smtp server authenatication
- - GOTRUE_SMTP_USER=
- - GOTRUE_SMTP_PASS=
- meta:
- ports:
- - 5555:8080
- db:
- restart: "no"
- volumes:
- # Always use a fresh database when developing
- - /var/lib/postgresql/data
- # Seed data should be inserted last (alphabetical order)
- - ./dev/data.sql:/docker-entrypoint-initdb.d/seed.sql
- storage:
- volumes:
- - /var/lib/storage
diff --git a/03_source/mobile_old.del/docker.original/dev/notes.md b/03_source/mobile_old.del/docker.original/dev/notes.md
deleted file mode 100644
index e1e097e..0000000
--- a/03_source/mobile_old.del/docker.original/dev/notes.md
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/docs-plus/docs.plus/blob/d6e8b2a72f3e943baf13f7efd405876f1f45537c/packages/supabase/scripts/10-1-func-users.sql
diff --git a/03_source/mobile_old.del/docker.original/docker-compose.s3.yml b/03_source/mobile_old.del/docker.original/docker-compose.s3.yml
deleted file mode 100644
index bb8be62..0000000
--- a/03_source/mobile_old.del/docker.original/docker-compose.s3.yml
+++ /dev/null
@@ -1,96 +0,0 @@
-version: "3.8"
-
-services:
-
- minio:
- image: minio/minio
- ports:
- - '9000:9000'
- - '9001:9001'
- environment:
- MINIO_ROOT_USER: supa-storage
- MINIO_ROOT_PASSWORD: secret1234
- command: server --console-address ":9001" /data
- healthcheck:
- test: [ "CMD", "curl", "-f", "http://minio:9000/minio/health/live" ]
- interval: 2s
- timeout: 10s
- retries: 5
- volumes:
- - ./volumes/storage:/data:z
-
- minio-createbucket:
- image: minio/mc
- depends_on:
- minio:
- condition: service_healthy
- entrypoint: >
- /bin/sh -c "
- /usr/bin/mc alias set supa-minio http://minio:9000 supa-storage secret1234;
- /usr/bin/mc mb supa-minio/stub;
- exit 0;
- "
-
- storage:
- container_name: supabase-storage
- image: supabase/storage-api:v0.43.11
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- rest:
- condition: service_started
- imgproxy:
- condition: service_started
- minio:
- condition: service_healthy
- healthcheck:
- test:
- [
- "CMD",
- "wget",
- "--no-verbose",
- "--tries=1",
- "--spider",
- "http://localhost:5000/status"
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- ANON_KEY: ${ANON_KEY}
- SERVICE_KEY: ${SERVICE_ROLE_KEY}
- POSTGREST_URL: http://rest:3000
- PGRST_JWT_SECRET: ${JWT_SECRET}
- DATABASE_URL: postgres://supabase_storage_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- FILE_SIZE_LIMIT: 52428800
- STORAGE_BACKEND: s3
- GLOBAL_S3_BUCKET: stub
- GLOBAL_S3_ENDPOINT: http://minio:9000
- GLOBAL_S3_PROTOCOL: http
- GLOBAL_S3_FORCE_PATH_STYLE: true
- AWS_ACCESS_KEY_ID: supa-storage
- AWS_SECRET_ACCESS_KEY: secret1234
- AWS_DEFAULT_REGION: stub
- FILE_STORAGE_BACKEND_PATH: /var/lib/storage
- TENANT_ID: stub
- # TODO: https://github.com/supabase/storage-api/issues/55
- REGION: stub
- ENABLE_IMAGE_TRANSFORMATION: "true"
- IMGPROXY_URL: http://imgproxy:5001
- volumes:
- - ./volumes/storage:/var/lib/storage:z
-
- imgproxy:
- container_name: supabase-imgproxy
- image: darthsim/imgproxy:v3.8.0
- healthcheck:
- test: [ "CMD", "imgproxy", "health" ]
- timeout: 5s
- interval: 5s
- retries: 3
- environment:
- IMGPROXY_BIND: ":5001"
- IMGPROXY_USE_ETAG: "true"
- IMGPROXY_ENABLE_WEBP_DETECTION: ${IMGPROXY_ENABLE_WEBP_DETECTION}
diff --git a/03_source/mobile_old.del/docker.original/docker-compose.yml b/03_source/mobile_old.del/docker.original/docker-compose.yml
deleted file mode 100644
index 9caaa58..0000000
--- a/03_source/mobile_old.del/docker.original/docker-compose.yml
+++ /dev/null
@@ -1,401 +0,0 @@
-# Usage
-# Start: docker compose up
-# With helpers: docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up
-# Stop: docker compose down
-# Destroy: docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down -v --remove-orphans
-
-# suprbase-CRUD-tryout
-name: supabase
-
-services:
- studio:
- container_name: supabase-studio
- image: supabase/studio:20240729-ce42139
- restart: unless-stopped
- healthcheck:
- test:
- [
- "CMD",
- "node",
- "-e",
- "require('http').get('http://localhost:3000/api/profile', (r) => {if (r.statusCode !== 200) throw new Error(r.statusCode)})",
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- depends_on:
- analytics:
- condition: service_healthy
- environment:
- STUDIO_PG_META_URL: http://meta:8080
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
-
- DEFAULT_ORGANIZATION_NAME: ${STUDIO_DEFAULT_ORGANIZATION}
- DEFAULT_PROJECT_NAME: ${STUDIO_DEFAULT_PROJECT}
-
- SUPABASE_URL: http://kong:8000
- SUPABASE_PUBLIC_URL: ${SUPABASE_PUBLIC_URL}
- SUPABASE_ANON_KEY: ${ANON_KEY}
- SUPABASE_SERVICE_KEY: ${SERVICE_ROLE_KEY}
- AUTH_JWT_SECRET: ${JWT_SECRET}
-
- LOGFLARE_API_KEY: ${LOGFLARE_API_KEY}
- LOGFLARE_URL: http://analytics:4000
- NEXT_PUBLIC_ENABLE_LOGS: true
- # Comment to use Big Query backend for analytics
- NEXT_ANALYTICS_BACKEND_PROVIDER: postgres
- # Uncomment to use Big Query backend for analytics
- # NEXT_ANALYTICS_BACKEND_PROVIDER: bigquery
-
- kong:
- container_name: supabase-kong
- image: kong:2.8.1
- restart: unless-stopped
- # https://unix.stackexchange.com/a/294837
- entrypoint: bash -c 'eval "echo \"$$(cat ~/temp.yml)\"" > ~/kong.yml && /docker-entrypoint.sh kong docker-start'
- ports:
- - ${KONG_HTTP_PORT}:8000/tcp
- - ${KONG_HTTPS_PORT}:8443/tcp
- depends_on:
- analytics:
- condition: service_healthy
- environment:
- KONG_DATABASE: "off"
- KONG_DECLARATIVE_CONFIG: /home/kong/kong.yml
- # https://github.com/supabase/cli/issues/14
- KONG_DNS_ORDER: LAST,A,CNAME
- KONG_PLUGINS: request-transformer,cors,key-auth,acl,basic-auth
- KONG_NGINX_PROXY_PROXY_BUFFER_SIZE: 160k
- KONG_NGINX_PROXY_PROXY_BUFFERS: 64 160k
- SUPABASE_ANON_KEY: ${ANON_KEY}
- SUPABASE_SERVICE_KEY: ${SERVICE_ROLE_KEY}
- DASHBOARD_USERNAME: ${DASHBOARD_USERNAME}
- DASHBOARD_PASSWORD: ${DASHBOARD_PASSWORD}
- volumes:
- # https://github.com/supabase/supabase/issues/12661
- - ./volumes/api/kong.yml:/home/kong/temp.yml:ro
-
- auth:
- container_name: supabase-auth
- image: supabase/gotrue:v2.158.1
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- healthcheck:
- test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:9999/health"]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- GOTRUE_API_HOST: 0.0.0.0
- GOTRUE_API_PORT: 9999
- API_EXTERNAL_URL: ${API_EXTERNAL_URL}
-
- GOTRUE_DB_DRIVER: postgres
- GOTRUE_DB_DATABASE_URL: postgres://supabase_auth_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
-
- GOTRUE_SITE_URL: ${SITE_URL}
- GOTRUE_URI_ALLOW_LIST: ${ADDITIONAL_REDIRECT_URLS}
- GOTRUE_DISABLE_SIGNUP: ${DISABLE_SIGNUP}
-
- GOTRUE_JWT_ADMIN_ROLES: service_role
- GOTRUE_JWT_AUD: authenticated
- GOTRUE_JWT_DEFAULT_GROUP_NAME: authenticated
- GOTRUE_JWT_EXP: ${JWT_EXPIRY}
- GOTRUE_JWT_SECRET: ${JWT_SECRET}
-
- GOTRUE_EXTERNAL_EMAIL_ENABLED: ${ENABLE_EMAIL_SIGNUP}
- GOTRUE_EXTERNAL_ANONYMOUS_USERS_ENABLED: ${ENABLE_ANONYMOUS_USERS}
- GOTRUE_MAILER_AUTOCONFIRM: ${ENABLE_EMAIL_AUTOCONFIRM}
- # GOTRUE_MAILER_SECURE_EMAIL_CHANGE_ENABLED: true
- # GOTRUE_SMTP_MAX_FREQUENCY: 1s
- GOTRUE_SMTP_ADMIN_EMAIL: ${SMTP_ADMIN_EMAIL}
- GOTRUE_SMTP_HOST: ${SMTP_HOST}
- GOTRUE_SMTP_PORT: ${SMTP_PORT}
- GOTRUE_SMTP_USER: ${SMTP_USER}
- GOTRUE_SMTP_PASS: ${SMTP_PASS}
- GOTRUE_SMTP_SENDER_NAME: ${SMTP_SENDER_NAME}
- GOTRUE_MAILER_URLPATHS_INVITE: ${MAILER_URLPATHS_INVITE}
- GOTRUE_MAILER_URLPATHS_CONFIRMATION: ${MAILER_URLPATHS_CONFIRMATION}
- GOTRUE_MAILER_URLPATHS_RECOVERY: ${MAILER_URLPATHS_RECOVERY}
- GOTRUE_MAILER_URLPATHS_EMAIL_CHANGE: ${MAILER_URLPATHS_EMAIL_CHANGE}
-
- GOTRUE_EXTERNAL_PHONE_ENABLED: ${ENABLE_PHONE_SIGNUP}
- GOTRUE_SMS_AUTOCONFIRM: ${ENABLE_PHONE_AUTOCONFIRM}
- # Uncomment to enable custom access token hook. You'll need to create a public.custom_access_token_hook function and grant necessary permissions.
- # See: https://supabase.com/docs/guides/auth/auth-hooks#hook-custom-access-token for details
- # GOTRUE_HOOK_CUSTOM_ACCESS_TOKEN_ENABLED="true"
- # GOTRUE_HOOK_CUSTOM_ACCESS_TOKEN_URI="pg-functions://postgres/public/custom_access_token_hook"
-
- # GOTRUE_HOOK_MFA_VERIFICATION_ATTEMPT_ENABLED="true"
- # GOTRUE_HOOK_MFA_VERIFICATION_ATTEMPT_URI="pg-functions://postgres/public/mfa_verification_attempt"
-
- # GOTRUE_HOOK_PASSWORD_VERIFICATION_ATTEMPT_ENABLED="true"
- # GOTRUE_HOOK_PASSWORD_VERIFICATION_ATTEMPT_URI="pg-functions://postgres/public/password_verification_attempt"
-
- rest:
- container_name: supabase-rest
- image: postgrest/postgrest:v12.2.0
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- restart: unless-stopped
- environment:
- PGRST_DB_URI: postgres://authenticator:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- PGRST_DB_SCHEMAS: ${PGRST_DB_SCHEMAS}
- PGRST_DB_ANON_ROLE: anon
- PGRST_JWT_SECRET: ${JWT_SECRET}
- PGRST_DB_USE_LEGACY_GUCS: "false"
- PGRST_APP_SETTINGS_JWT_SECRET: ${JWT_SECRET}
- PGRST_APP_SETTINGS_JWT_EXP: ${JWT_EXPIRY}
- command: "postgrest"
-
- realtime:
- # This container name looks inconsistent but is correct because realtime constructs tenant id by parsing the subdomain
- container_name: realtime-dev.supabase-realtime
- image: supabase/realtime:v2.30.34
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- healthcheck:
- test:
- [
- "CMD",
- "curl",
- "-sSfL",
- "--head",
- "-o",
- "/dev/null",
- "-H",
- "Authorization: Bearer ${ANON_KEY}",
- "http://localhost:4000/api/tenants/realtime-dev/health",
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- PORT: 4000
- DB_HOST: ${POSTGRES_HOST}
- DB_PORT: ${POSTGRES_PORT}
- DB_USER: supabase_admin
- DB_PASSWORD: ${POSTGRES_PASSWORD}
- DB_NAME: ${POSTGRES_DB}
- DB_AFTER_CONNECT_QUERY: "SET search_path TO _realtime"
- DB_ENC_KEY: supabaserealtime
- API_JWT_SECRET: ${JWT_SECRET}
- SECRET_KEY_BASE: UpNVntn3cDxHJpq99YMc1T1AQgQpc8kfYTuRgBiYa15BLrx8etQoXz3gZv1/u2oq
- ERL_AFLAGS: -proto_dist inet_tcp
- DNS_NODES: "''"
- RLIMIT_NOFILE: "10000"
- APP_NAME: realtime
- SEED_SELF_HOST: true
-
- # To use S3 backed storage: docker compose -f docker-compose.yml -f docker-compose.s3.yml up
- storage:
- container_name: supabase-storage
- image: supabase/storage-api:v1.10.1
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- rest:
- condition: service_started
- imgproxy:
- condition: service_started
- healthcheck:
- test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5000/status"]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- ANON_KEY: ${ANON_KEY}
- SERVICE_KEY: ${SERVICE_ROLE_KEY}
- POSTGREST_URL: http://rest:3000
- PGRST_JWT_SECRET: ${JWT_SECRET}
- DATABASE_URL: postgres://supabase_storage_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- FILE_SIZE_LIMIT: 52428800
- STORAGE_BACKEND: file
- FILE_STORAGE_BACKEND_PATH: /var/lib/storage
- TENANT_ID: stub
- # TODO: https://github.com/supabase/storage-api/issues/55
- REGION: stub
- GLOBAL_S3_BUCKET: stub
- ENABLE_IMAGE_TRANSFORMATION: "true"
- IMGPROXY_URL: http://imgproxy:5001
- volumes:
- - ./volumes/storage:/var/lib/storage:z
-
- imgproxy:
- container_name: supabase-imgproxy
- image: darthsim/imgproxy:v3.8.0
- healthcheck:
- test: ["CMD", "imgproxy", "health"]
- timeout: 5s
- interval: 5s
- retries: 3
- environment:
- IMGPROXY_BIND: ":5001"
- IMGPROXY_LOCAL_FILESYSTEM_ROOT: /
- IMGPROXY_USE_ETAG: "true"
- IMGPROXY_ENABLE_WEBP_DETECTION: ${IMGPROXY_ENABLE_WEBP_DETECTION}
- volumes:
- - ./volumes/storage:/var/lib/storage:z
-
- meta:
- container_name: supabase-meta
- image: supabase/postgres-meta:v0.83.2
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- restart: unless-stopped
- environment:
- PG_META_PORT: 8080
- PG_META_DB_HOST: ${POSTGRES_HOST}
- PG_META_DB_PORT: ${POSTGRES_PORT}
- PG_META_DB_NAME: ${POSTGRES_DB}
- PG_META_DB_USER: supabase_admin
- PG_META_DB_PASSWORD: ${POSTGRES_PASSWORD}
-
- functions:
- container_name: supabase-edge-functions
- image: supabase/edge-runtime:v1.56.1
- restart: unless-stopped
- depends_on:
- analytics:
- condition: service_healthy
- environment:
- JWT_SECRET: ${JWT_SECRET}
- SUPABASE_URL: http://kong:8000
- SUPABASE_ANON_KEY: ${ANON_KEY}
- SUPABASE_SERVICE_ROLE_KEY: ${SERVICE_ROLE_KEY}
- SUPABASE_DB_URL: postgresql://postgres:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- # TODO: Allow configuring VERIFY_JWT per function. This PR might help: https://github.com/supabase/cli/pull/786
- VERIFY_JWT: "${FUNCTIONS_VERIFY_JWT}"
- volumes:
- - ./volumes/functions:/home/deno/functions:Z
- command:
- - start
- - --main-service
- - /home/deno/functions/main
-
- analytics:
- container_name: supabase-analytics
- image: supabase/logflare:1.4.0
- healthcheck:
- test: ["CMD", "curl", "http://localhost:4000/health"]
- timeout: 5s
- interval: 5s
- retries: 10
- restart: unless-stopped
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- # Uncomment to use Big Query backend for analytics
- # volumes:
- # - type: bind
- # source: ${PWD}/gcloud.json
- # target: /opt/app/rel/logflare/bin/gcloud.json
- # read_only: true
- environment:
- LOGFLARE_NODE_HOST: 127.0.0.1
- DB_USERNAME: supabase_admin
- DB_DATABASE: ${POSTGRES_DB}
- DB_HOSTNAME: ${POSTGRES_HOST}
- DB_PORT: ${POSTGRES_PORT}
- DB_PASSWORD: ${POSTGRES_PASSWORD}
- DB_SCHEMA: _analytics
- LOGFLARE_API_KEY: ${LOGFLARE_API_KEY}
- LOGFLARE_SINGLE_TENANT: true
- LOGFLARE_SUPABASE_MODE: true
- LOGFLARE_MIN_CLUSTER_SIZE: 1
-
- # Comment variables to use Big Query backend for analytics
- POSTGRES_BACKEND_URL: postgresql://supabase_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- POSTGRES_BACKEND_SCHEMA: _analytics
- LOGFLARE_FEATURE_FLAG_OVERRIDE: multibackend=true
- # Uncomment to use Big Query backend for analytics
- # GOOGLE_PROJECT_ID: ${GOOGLE_PROJECT_ID}
- # GOOGLE_PROJECT_NUMBER: ${GOOGLE_PROJECT_NUMBER}
- ports:
- - 4000:4000
-
- # Comment out everything below this point if you are using an external Postgres database
- db:
- container_name: supabase-db
- image: supabase/postgres:15.1.1.78
- healthcheck:
- test: pg_isready -U postgres -h localhost
- interval: 5s
- timeout: 5s
- retries: 10
- depends_on:
- vector:
- condition: service_healthy
- command:
- - postgres
- - -c
- - config_file=/etc/postgresql/postgresql.conf
- - -c
- - log_min_messages=fatal # prevents Realtime polling queries from appearing in logs
- restart: unless-stopped
- ports:
- # Pass down internal port because it's set dynamically by other services
- - ${POSTGRES_PORT}:${POSTGRES_PORT}
- environment:
- POSTGRES_HOST: /var/run/postgresql
- PGPORT: ${POSTGRES_PORT}
- POSTGRES_PORT: ${POSTGRES_PORT}
- PGPASSWORD: ${POSTGRES_PASSWORD}
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
- PGDATABASE: ${POSTGRES_DB}
- POSTGRES_DB: ${POSTGRES_DB}
- JWT_SECRET: ${JWT_SECRET}
- JWT_EXP: ${JWT_EXPIRY}
- volumes:
- - ./volumes/db/realtime.sql:/docker-entrypoint-initdb.d/migrations/99-realtime.sql:Z
- # Must be superuser to create event trigger
- - ./volumes/db/webhooks.sql:/docker-entrypoint-initdb.d/init-scripts/98-webhooks.sql:Z
- # Must be superuser to alter reserved role
- - ./volumes/db/roles.sql:/docker-entrypoint-initdb.d/init-scripts/99-roles.sql:Z
- # Initialize the database settings with JWT_SECRET and JWT_EXP
- - ./volumes/db/jwt.sql:/docker-entrypoint-initdb.d/init-scripts/99-jwt.sql:Z
- # PGDATA directory is persisted between restarts
- - ./volumes/db/data:/var/lib/postgresql/data:Z
- # Changes required for Analytics support
- - ./volumes/db/logs.sql:/docker-entrypoint-initdb.d/migrations/99-logs.sql:Z
- # Use named volume to persist pgsodium decryption key between restarts
- - db-config:/etc/postgresql-custom
-
- vector:
- container_name: supabase-vector
- image: timberio/vector:0.28.1-alpine
- healthcheck:
- test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://vector:9001/health"]
- timeout: 5s
- interval: 5s
- retries: 3
- volumes:
- - ./volumes/logs/vector.yml:/etc/vector/vector.yml:ro
- - ${DOCKER_SOCKET_LOCATION}:/var/run/docker.sock:ro
- environment:
- LOGFLARE_API_KEY: ${LOGFLARE_API_KEY}
- command: ["--config", "etc/vector/vector.yml"]
-
-volumes:
- db-config:
diff --git a/03_source/mobile_old.del/docker.original/supabase/.gitignore b/03_source/mobile_old.del/docker.original/supabase/.gitignore
deleted file mode 100644
index a3ad880..0000000
--- a/03_source/mobile_old.del/docker.original/supabase/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# Supabase
-.branches
-.temp
-.env
diff --git a/03_source/mobile_old.del/docker.original/supabase/config.toml b/03_source/mobile_old.del/docker.original/supabase/config.toml
deleted file mode 100644
index 234481a..0000000
--- a/03_source/mobile_old.del/docker.original/supabase/config.toml
+++ /dev/null
@@ -1,237 +0,0 @@
-# A string used to distinguish different Supabase projects on the same host. Defaults to the
-# working directory name when running `supabase init`.
-project_id = "supabase"
-
-[api]
-enabled = true
-# Port to use for the API URL.
-port = 54321
-# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API
-# endpoints. `public` is always included.
-schemas = ["public", "graphql_public"]
-# Extra schemas to add to the search_path of every request. `public` is always included.
-extra_search_path = ["public", "extensions"]
-# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size
-# for accidental or malicious requests.
-max_rows = 1000
-
-[api.tls]
-enabled = false
-
-[db]
-# Port to use for the local database URL.
-port = 54322
-# Port used by db diff command to initialize the shadow database.
-shadow_port = 54320
-# The database major version to use. This has to be the same as your remote database's. Run `SHOW
-# server_version;` on the remote database to check.
-major_version = 15
-
-[db.pooler]
-enabled = false
-# Port to use for the local connection pooler.
-port = 54329
-# Specifies when a server connection can be reused by other clients.
-# Configure one of the supported pooler modes: `transaction`, `session`.
-pool_mode = "transaction"
-# How many server connections to allow per user/database pair.
-default_pool_size = 20
-# Maximum number of client connections allowed.
-max_client_conn = 100
-
-[realtime]
-enabled = true
-# Bind realtime via either IPv4 or IPv6. (default: IPv4)
-# ip_version = "IPv6"
-# The maximum length in bytes of HTTP request headers. (default: 4096)
-# max_header_length = 4096
-
-[studio]
-enabled = true
-# Port to use for Supabase Studio.
-port = 54323
-# External URL of the API server that frontend connects to.
-api_url = "http://127.0.0.1"
-# OpenAI API Key to use for Supabase AI in the Supabase Studio.
-openai_api_key = "env(OPENAI_API_KEY)"
-
-# Email testing server. Emails sent with the local dev setup are not actually sent - rather, they
-# are monitored, and you can view the emails that would have been sent from the web interface.
-[inbucket]
-enabled = true
-# Port to use for the email testing server web interface.
-port = 54324
-# Uncomment to expose additional ports for testing user applications that send emails.
-# smtp_port = 54325
-# pop3_port = 54326
-
-[storage]
-enabled = true
-# The maximum file size allowed (e.g. "5MB", "500KB").
-file_size_limit = "50MiB"
-
-[storage.image_transformation]
-enabled = true
-
-# Uncomment to configure local storage buckets
-# [storage.buckets.images]
-# public = false
-# file_size_limit = "50MiB"
-# allowed_mime_types = ["image/png", "image/jpeg"]
-# objects_path = "./images"
-
-[auth]
-enabled = true
-# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used
-# in emails.
-site_url = "http://127.0.0.1:3000"
-# A list of *exact* URLs that auth providers are permitted to redirect to post authentication.
-additional_redirect_urls = ["https://127.0.0.1:3000"]
-# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week).
-jwt_expiry = 3600
-# If disabled, the refresh token will never expire.
-enable_refresh_token_rotation = true
-# Allows refresh tokens to be reused after expiry, up to the specified interval in seconds.
-# Requires enable_refresh_token_rotation = true.
-refresh_token_reuse_interval = 10
-# Allow/disallow new user signups to your project.
-enable_signup = true
-# Allow/disallow anonymous sign-ins to your project.
-enable_anonymous_sign_ins = false
-# Allow/disallow testing manual linking of accounts
-enable_manual_linking = false
-
-[auth.email]
-# Allow/disallow new user signups via email to your project.
-enable_signup = true
-# If enabled, a user will be required to confirm any email change on both the old, and new email
-# addresses. If disabled, only the new email is required to confirm.
-double_confirm_changes = true
-# If enabled, users need to confirm their email address before signing in.
-enable_confirmations = false
-# Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email.
-max_frequency = "1s"
-
-# Use a production-ready SMTP server
-# [auth.email.smtp]
-# host = "smtp.sendgrid.net"
-# port = 587
-# user = "apikey"
-# pass = "env(SENDGRID_API_KEY)"
-# admin_email = "admin@email.com"
-# sender_name = "Admin"
-
-# Uncomment to customize email template
-# [auth.email.template.invite]
-# subject = "You have been invited"
-# content_path = "./supabase/templates/invite.html"
-
-[auth.sms]
-# Allow/disallow new user signups via SMS to your project.
-enable_signup = true
-# If enabled, users need to confirm their phone number before signing in.
-enable_confirmations = false
-# Template for sending OTP to users
-template = "Your code is {{ .Code }} ."
-# Controls the minimum amount of time that must pass before sending another sms otp.
-max_frequency = "5s"
-
-# Use pre-defined map of phone number to OTP for testing.
-# [auth.sms.test_otp]
-# 4152127777 = "123456"
-
-# Configure logged in session timeouts.
-# [auth.sessions]
-# Force log out after the specified duration.
-# timebox = "24h"
-# Force log out if the user has been inactive longer than the specified duration.
-# inactivity_timeout = "8h"
-
-# This hook runs before a token is issued and allows you to add additional claims based on the authentication method used.
-# [auth.hook.custom_access_token]
-# enabled = true
-# uri = "pg-functions:////"
-
-# Configure one of the supported SMS providers: `twilio`, `twilio_verify`, `messagebird`, `textlocal`, `vonage`.
-[auth.sms.twilio]
-enabled = false
-account_sid = ""
-message_service_sid = ""
-# DO NOT commit your Twilio auth token to git. Use environment variable substitution instead:
-auth_token = "env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)"
-
-[auth.mfa]
-# Control how many MFA factors can be enrolled at once per user.
-max_enrolled_factors = 10
-
-# Control use of MFA via App Authenticator (TOTP)
-[auth.mfa.totp]
-enroll_enabled = true
-verify_enabled = true
-
-# Configure Multi-factor-authentication via Phone Messaging
-# [auth.mfa.phone]
-# enroll_enabled = true
-# verify_enabled = true
-# otp_length = 6
-# template = "Your code is {{ .Code }} ."
-# max_frequency = "10s"
-
-# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`,
-# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin_oidc`, `notion`, `twitch`,
-# `twitter`, `slack`, `spotify`, `workos`, `zoom`.
-[auth.external.apple]
-enabled = false
-client_id = ""
-# DO NOT commit your OAuth provider secret to git. Use environment variable substitution instead:
-secret = "env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)"
-# Overrides the default auth redirectUrl.
-redirect_uri = ""
-# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure,
-# or any other third-party OIDC providers.
-url = ""
-# If enabled, the nonce check will be skipped. Required for local sign in with Google auth.
-skip_nonce_check = false
-
-# Use Firebase Auth as a third-party provider alongside Supabase Auth.
-[auth.third_party.firebase]
-enabled = false
-# project_id = "my-firebase-project"
-
-# Use Auth0 as a third-party provider alongside Supabase Auth.
-[auth.third_party.auth0]
-enabled = false
-# tenant = "my-auth0-tenant"
-# tenant_region = "us"
-
-# Use AWS Cognito (Amplify) as a third-party provider alongside Supabase Auth.
-[auth.third_party.aws_cognito]
-enabled = false
-# user_pool_id = "my-user-pool-id"
-# user_pool_region = "us-east-1"
-
-[edge_runtime]
-enabled = true
-# Configure one of the supported request policies: `oneshot`, `per_worker`.
-# Use `oneshot` for hot reload, or `per_worker` for load testing.
-policy = "oneshot"
-inspector_port = 8083
-
-[analytics]
-enabled = true
-port = 54327
-# Configure one of the supported backends: `postgres`, `bigquery`.
-backend = "postgres"
-
-# Experimental features may be deprecated any time
-[experimental]
-# Configures Postgres storage engine to use OrioleDB (S3)
-orioledb_version = ""
-# Configures S3 bucket URL, eg. .s3-.amazonaws.com
-s3_host = "env(S3_HOST)"
-# Configures S3 bucket region, eg. us-east-1
-s3_region = "env(S3_REGION)"
-# Configures AWS_ACCESS_KEY_ID for S3 bucket
-s3_access_key = "env(S3_ACCESS_KEY)"
-# Configures AWS_SECRET_ACCESS_KEY for S3 bucket
-s3_secret_key = "env(S3_SECRET_KEY)"
diff --git a/03_source/mobile_old.del/docker.original/supabase/migrations/001_create_employees_table.sql b/03_source/mobile_old.del/docker.original/supabase/migrations/001_create_employees_table.sql
deleted file mode 100644
index 98ee813..0000000
--- a/03_source/mobile_old.del/docker.original/supabase/migrations/001_create_employees_table.sql
+++ /dev/null
@@ -1,18 +0,0 @@
---
--- clear storage buckets
---
-BEGIN;
-TRUNCATE storage.buckets CASCADE;
-COMMIT;
-
-BEGIN;
-CREATE TABLE employees(
- id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
- name text,
- email text,
- created_at timestamptz DEFAULT now()
-);
-ALTER TABLE IF EXISTS public.employees
- ADD department text DEFAULT 'Hooli';
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker.original/supabase/migrations/002_todo.sql b/03_source/mobile_old.del/docker.original/supabase/migrations/002_todo.sql
deleted file mode 100644
index ab9e37f..0000000
--- a/03_source/mobile_old.del/docker.original/supabase/migrations/002_todo.sql
+++ /dev/null
@@ -1,24 +0,0 @@
--- Create a table called "todos"
--- with a column to store tasks.
-BEGIN;
-DROP TABLE IF EXISTS "todos";
-CREATE TABLE todos(
- id serial PRIMARY KEY,
- task text
-);
--- Turn on security
-ALTER TABLE "todos" ENABLE ROW LEVEL SECURITY;
--- Allow anonymous access
-CREATE POLICY "Allow public access" ON todos
- FOR SELECT TO anon
- USING (TRUE);
--- Turn on security
-ALTER TABLE "todos" ENABLE ROW LEVEL SECURITY;
--- Add some data
-INSERT INTO todos(task)
- VALUES ('Create tables'),
-('Enable security'),
-('Add data'),
-('Fetch data from the API');
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker.original/supabase/migrations/003_country.sql b/03_source/mobile_old.del/docker.original/supabase/migrations/003_country.sql
deleted file mode 100644
index b4dc1f5..0000000
--- a/03_source/mobile_old.del/docker.original/supabase/migrations/003_country.sql
+++ /dev/null
@@ -1,32 +0,0 @@
---
--- REQXXX countries
---
--- https://supabase.com/docs/guides/getting-started/quickstarts/reactjs
---
--- Create the table
-BEGIN;
-DROP TABLE IF EXISTS "countries";
-CREATE TABLE countries(
- id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
- name text NOT NULL
-);
--- Insert some sample data into the table
-INSERT INTO countries(name)
- VALUES ('Canada'),
-('United States'),
-('Mexico');
-ALTER TABLE countries ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read countries" ON public.countries
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write countries" ON "public"."countries" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update countries" ON "public"."countries" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete countries" ON "public"."countries" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker.original/supabase/migrations/004_realtime_helloworld.sql b/03_source/mobile_old.del/docker.original/supabase/migrations/004_realtime_helloworld.sql
deleted file mode 100644
index 2acd4c4..0000000
--- a/03_source/mobile_old.del/docker.original/supabase/migrations/004_realtime_helloworld.sql
+++ /dev/null
@@ -1,37 +0,0 @@
---
--- REQXXX realtime-helloworld
---
--- https://supabase.com/docs/guides/realtime
---
--- with a column to store tasks.
-BEGIN;
-DROP TABLE IF EXISTS "todos_realtime";
-CREATE TABLE todos_realtime(
- id serial PRIMARY KEY,
- task text
-);
--- Add some data
-INSERT INTO todos_realtime(task)
- VALUES ('Create tables'),
-('Enable security'),
-('Add data'),
-('Fetch data from the API');
-ALTER publication supabase_realtime
- ADD TABLE todos_realtime;
--- -- Turn on security
-ALTER TABLE "todos_realtime" ENABLE ROW LEVEL SECURITY;
--- Allow anonymous access
-CREATE POLICY "public can read todos_realtime" ON public.todos_realtime
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write todos_realtime" ON "public"."todos_realtime" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update todos_realtime" ON "public"."todos_realtime" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete todos_realtime" ON "public"."todos_realtime" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker.original/supabase/migrations/005_test.sql b/03_source/mobile_old.del/docker.original/supabase/migrations/005_test.sql
deleted file mode 100644
index 2655719..0000000
--- a/03_source/mobile_old.del/docker.original/supabase/migrations/005_test.sql
+++ /dev/null
@@ -1,15 +0,0 @@
---
--- REQXXX test-table
---
--- https://supabase.com/docs/guides/realtime
---
-BEGIN;
-DROP TABLE IF EXISTS "public"."Test Table";
-CREATE TABLE "public"."Test Table"("id" bigint GENERATED BY DEFAULT AS IDENTITY NOT NULL, "created_at" timestamp with time zone DEFAULT now()
-);
-ALTER TABLE "public"."Test Table" ENABLE ROW LEVEL SECURITY;
-CREATE UNIQUE INDEX "Test Table_pkey" ON public. "Test Table" USING btree(id);
-ALTER TABLE "public"."Test Table"
- ADD CONSTRAINT "Test Table_pkey" PRIMARY KEY USING INDEX "Test Table_pkey";
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker.original/supabase/migrations/006_profile.sql b/03_source/mobile_old.del/docker.original/supabase/migrations/006_profile.sql
deleted file mode 100644
index 760d29f..0000000
--- a/03_source/mobile_old.del/docker.original/supabase/migrations/006_profile.sql
+++ /dev/null
@@ -1,60 +0,0 @@
---
--- original from repository
---
-BEGIN;
-CREATE TABLE profiles(
- id uuid REFERENCES auth.users NOT NULL,
- updated_at timestamp with time zone,
- username text UNIQUE,
- full_name text,
- avatar_url text,
- website text,
- PRIMARY KEY (id),
- UNIQUE (username),
- CONSTRAINT username_length CHECK (char_length(username) >= 3)
-);
-COMMIT;
-
--- Set up Row Level Security (RLS)
--- See https://supabase.com/docs/guides/auth/row-level-security for more details.
-ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
-
-CREATE POLICY "Public profiles are viewable by the owner." ON profiles
- FOR SELECT
- USING (TRUE);
-
-CREATE POLICY "Users can insert their own profile." ON profiles
- FOR INSERT
- WITH CHECK (auth.uid() = id);
-
-CREATE POLICY "Users can update own profile." ON profiles
- FOR UPDATE
- USING (auth.uid() = id);
-
--- Set up Realtime
-BEGIN;
-DROP publication IF EXISTS supabase_realtime;
-CREATE publication supabase_realtime;
-COMMIT;
-
-ALTER publication supabase_realtime
- ADD TABLE profiles;
-
--- Set up Storage
-BEGIN;
-INSERT INTO storage.buckets(id, name)
- VALUES ('avatars', 'avatars');
-COMMIT;
-
-CREATE POLICY "Avatar images are publicly accessible." ON storage.objects
- FOR SELECT
- USING (bucket_id = 'avatars');
-
-CREATE POLICY "Anyone can upload an avatar." ON storage.objects
- FOR INSERT
- WITH CHECK (bucket_id = 'avatars');
-
-CREATE POLICY "Anyone can update an avatar." ON storage.objects
- FOR UPDATE
- USING (bucket_id = 'avatars');
-
diff --git a/03_source/mobile_old.del/docker.original/supabase/migrations/007_seed_test_user.sql b/03_source/mobile_old.del/docker.original/supabase/migrations/007_seed_test_user.sql
deleted file mode 100644
index 9b831ce..0000000
--- a/03_source/mobile_old.del/docker.original/supabase/migrations/007_seed_test_user.sql
+++ /dev/null
@@ -1,41 +0,0 @@
--- 007_user.sql
--- create test users
-BEGIN;
-INSERT INTO auth.users(instance_id, id, aud, ROLE, email, encrypted_password, email_confirmed_at, recovery_sent_at, last_sign_in_at, raw_app_meta_data, raw_user_meta_data, created_at, updated_at, confirmation_token, email_change, email_change_token_new, recovery_token)(
- SELECT
- '00000000-0000-0000-0000-000000000000',
- uuid_generate_v4(),
- 'authenticated',
- 'authenticated',
- 'user' ||(ROW_NUMBER() OVER ()) || '@example.com',
- crypt('Aa1234567', gen_salt('bf')),
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- '{"provider":"email","providers":["email"]}',
- '{}',
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- '',
- '',
- '',
- ''
- FROM generate_series(1, 5));
-COMMIT;
-
--- test user email identities
-BEGIN;
-INSERT INTO auth.identities(id, user_id, provider_id, identity_data, provider, last_sign_in_at, created_at, updated_at)(
- SELECT
- uuid_generate_v4(),
- id,
- id,
- format('{"sub":"%s","email":"%s"}', id::text, email)::jsonb,
- 'email',
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP
- FROM
- auth.users);
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker.original/supabase/migrations/008_store_helloworld.sql b/03_source/mobile_old.del/docker.original/supabase/migrations/008_store_helloworld.sql
deleted file mode 100644
index 3a0f112..0000000
--- a/03_source/mobile_old.del/docker.original/supabase/migrations/008_store_helloworld.sql
+++ /dev/null
@@ -1,19 +0,0 @@
--- 008_store_helloworld.sql
-BEGIN;
---
-INSERT INTO storage.buckets(id, name)
- VALUES ('store_helloworld', 'store_helloworld');
---
---
-CREATE POLICY "store_helloworld Publicly accessible." ON storage.objects
- FOR SELECT
- USING (bucket_id = 'store_helloworld');
-CREATE POLICY "store_helloworld Anyone can upload" ON storage.objects
- FOR INSERT
- WITH CHECK (bucket_id = 'store_helloworld');
-CREATE POLICY "store_helloworld Anyone can update" ON storage.objects
- FOR UPDATE
- USING (bucket_id = 'store_helloworld');
---
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker.original/supabase/migrations/009_restaurant.sql b/03_source/mobile_old.del/docker.original/supabase/migrations/009_restaurant.sql
deleted file mode 100644
index e69de29..0000000
diff --git a/03_source/mobile_old.del/docker.original/supabase/migrations/010_messages.sql b/03_source/mobile_old.del/docker.original/supabase/migrations/010_messages.sql
deleted file mode 100644
index ae04f14..0000000
--- a/03_source/mobile_old.del/docker.original/supabase/migrations/010_messages.sql
+++ /dev/null
@@ -1,90 +0,0 @@
--- 010_messages.sql
--- REQ0050/chat-room-list
---
-BEGIN;
---
--- Create User Table
-CREATE TABLE Users(
- UserID serial PRIMARY KEY,
- PhoneNumber varchar(255) NOT NULL,
- Username varchar(255) NOT NULL,
- ProfilePicture varchar(255),
- Status text,
- LastSeen timestamp
-);
---
--- Create Contact Table
-CREATE TABLE Contacts(
- ContactID serial PRIMARY KEY,
- UserID int NOT NULL,
- ContactUserID int NOT NULL,
- Nickname varchar(255),
- Blocked boolean,
- FOREIGN KEY (UserID) REFERENCES Users(UserID),
- FOREIGN KEY (ContactUserID) REFERENCES Users(UserID)
-);
---
--- Create Group Table
-CREATE TABLE GROUPS (
- GroupID serial PRIMARY KEY,
- GroupName varchar(255),
- GroupPicture varchar(255),
- AdminID int NOT NULL,
- CreationDate timestamp DEFAULT CURRENT_TIMESTAMP,
- FOREIGN KEY (AdminID) REFERENCES Users(UserID)
-);
--- Create GroupMember Table
-CREATE TABLE GroupMembers(
- GroupMemberID serial PRIMARY KEY,
- GroupID int NOT NULL,
- UserID int NOT NULL,
- JoinDate timestamp DEFAULT CURRENT_TIMESTAMP,
- Role VARCHAR(255),
- FOREIGN KEY (GroupID) REFERENCES GROUPS (GroupID),
- FOREIGN KEY (UserID) REFERENCES Users(UserID)
-);
-CREATE TABLE public.messages(
- MessageID serial PRIMARY KEY,
- Content text,
- created_at timestamp DEFAULT CURRENT_TIMESTAMP,
- MediaURL varchar(255),
- Status varchar(255),
- --
- -- SenderID int NOT NULL,
- -- FOREIGN KEY (SenderID) REFERENCES Users(UserID),
- SenderID uuid NOT NULL,
- FOREIGN KEY (SenderID) REFERENCES auth.users,
- -- ReceiverID int NOT NULL,
- -- FOREIGN KEY (ReceiverID) REFERENCES Users(UserID)
- ReceiverID uuid NOT NULL,
- FOREIGN KEY (ReceiverID) REFERENCES auth.users
-);
--- -- Turn on security
-ALTER TABLE public.messages ENABLE ROW LEVEL SECURITY;
---
-ALTER publication supabase_realtime
- ADD TABLE public.messages;
---
-CREATE POLICY "public can read public.messages" ON public.messages
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write public.messages" ON public.messages AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update public.messages" ON public.messages AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete public.messages" ON public.messages AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO public.messages(MessageID, Content, created_at, MediaURL, Status, SenderID, ReceiverID) (
- SELECT
- ROW_NUMBER() OVER ()::integer, 'hello message', CURRENT_TIMESTAMP, '/google.png', 'sent',
- ( SELECT id FROM auth.users WHERE email = 'user1@example.com'),
- ( SELECT id FROM auth.users WHERE email = 'user2@example.com')
- FROM generate_series(1, 5)
- );
-COMMIT;
-
--- 'user' ||(ROW_NUMBER() OVER ()) || '@example.com'
diff --git a/03_source/mobile_old.del/docker.original/supabase/seed.sql b/03_source/mobile_old.del/docker.original/supabase/seed.sql
deleted file mode 100644
index b176ec2..0000000
--- a/03_source/mobile_old.del/docker.original/supabase/seed.sql
+++ /dev/null
@@ -1,6 +0,0 @@
--- in supabase/seed.sql
-INSERT INTO public.employees(name)
- VALUES ('Erlich Bachman'),
-('Richard Hendricks'),
-('Monica Hall');
-
diff --git a/03_source/mobile_old.del/docker/.env.example b/03_source/mobile_old.del/docker/.env.example
deleted file mode 100644
index 734802b..0000000
--- a/03_source/mobile_old.del/docker/.env.example
+++ /dev/null
@@ -1,105 +0,0 @@
-############
-# Secrets
-# YOU MUST CHANGE THESE BEFORE GOING INTO PRODUCTION
-############
-
-POSTGRES_PASSWORD=your-super-secret-and-long-postgres-password
-JWT_SECRET=your-super-secret-jwt-token-with-at-least-32-characters-long
-ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE
-SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q
-DASHBOARD_USERNAME=supabase
-DASHBOARD_PASSWORD=this_password_is_insecure_and_should_be_updated
-
-############
-# Database - You can change these to any PostgreSQL database that has logical replication enabled.
-############
-
-POSTGRES_HOST=db
-POSTGRES_DB=postgres
-POSTGRES_PORT=5432
-# default user is postgres
-
-############
-# API Proxy - Configuration for the Kong Reverse proxy.
-############
-
-KONG_HTTP_PORT=8000
-KONG_HTTPS_PORT=8443
-
-
-############
-# API - Configuration for PostgREST.
-############
-
-PGRST_DB_SCHEMAS=public,storage,graphql_public
-
-
-############
-# Auth - Configuration for the GoTrue authentication server.
-############
-
-## General
-SITE_URL=http://localhost:3000
-ADDITIONAL_REDIRECT_URLS=
-JWT_EXPIRY=3600
-DISABLE_SIGNUP=false
-API_EXTERNAL_URL=http://localhost:8000
-
-## Mailer Config
-MAILER_URLPATHS_CONFIRMATION="/auth/v1/verify"
-MAILER_URLPATHS_INVITE="/auth/v1/verify"
-MAILER_URLPATHS_RECOVERY="/auth/v1/verify"
-MAILER_URLPATHS_EMAIL_CHANGE="/auth/v1/verify"
-
-## Email auth
-ENABLE_EMAIL_SIGNUP=true
-ENABLE_EMAIL_AUTOCONFIRM=false
-SMTP_ADMIN_EMAIL=admin@example.com
-SMTP_HOST=mail
-SMTP_PORT=2500
-SMTP_USER=fake_mail_user
-SMTP_PASS=fake_mail_password
-SMTP_SENDER_NAME=fake_sender
-ENABLE_ANONYMOUS_USERS=false
-
-## Phone auth
-ENABLE_PHONE_SIGNUP=true
-ENABLE_PHONE_AUTOCONFIRM=true
-
-
-############
-# Studio - Configuration for the Dashboard
-############
-
-STUDIO_DEFAULT_ORGANIZATION=Default Organization
-STUDIO_DEFAULT_PROJECT=Default Project
-
-STUDIO_PORT=3000
-# replace if you intend to use Studio outside of localhost
-SUPABASE_PUBLIC_URL=http://localhost:8000
-
-# Enable webp support
-IMGPROXY_ENABLE_WEBP_DETECTION=true
-
-############
-# Functions - Configuration for Functions
-############
-# NOTE: VERIFY_JWT applies to all functions. Per-function VERIFY_JWT is not supported yet.
-FUNCTIONS_VERIFY_JWT=false
-
-############
-# Logs - Configuration for Logflare
-# Please refer to https://supabase.com/docs/reference/self-hosting-analytics/introduction
-############
-
-LOGFLARE_LOGGER_BACKEND_API_KEY=your-super-secret-and-long-logflare-key
-
-# Change vector.toml sinks to reflect this change
-LOGFLARE_API_KEY=your-super-secret-and-long-logflare-key
-
-# Docker socket location - this value will differ depending on your OS
-DOCKER_SOCKET_LOCATION=/var/run/docker.sock
-
-# Google Cloud Project details
-GOOGLE_PROJECT_ID=GOOGLE_PROJECT_ID
-GOOGLE_PROJECT_NUMBER=GOOGLE_PROJECT_NUMBER
diff --git a/03_source/mobile_old.del/docker/.gitignore b/03_source/mobile_old.del/docker/.gitignore
deleted file mode 100644
index a1e9dc6..0000000
--- a/03_source/mobile_old.del/docker/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-volumes/db/data
-volumes/storage
-.env
-test.http
-docker-compose.override.yml
diff --git a/03_source/mobile_old.del/docker/README.md b/03_source/mobile_old.del/docker/README.md
deleted file mode 100644
index 686a681..0000000
--- a/03_source/mobile_old.del/docker/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-## dev
-
-```bash
-$ ./dc_up.sh
-$ ./db_push.sh
-
-```
diff --git a/03_source/mobile_old.del/docker/db_push.sh b/03_source/mobile_old.del/docker/db_push.sh
deleted file mode 100755
index 1e8cc08..0000000
--- a/03_source/mobile_old.del/docker/db_push.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env bash
-
-set -ex
-
-# to watch and push
-# nodemon --delay 1 --ext sql -w supabase --exec "./db_push.sh"
-#
-
-export DB_URL="postgres://postgres:your-super-secret-and-long-postgres-password@127.0.0.1:5432/postgres"
-# export SUPABASE_ACCESS_TOKEN="your-super-secret-jwt-token-with-at-least-32-characters-long"
-
-
-echo "y" | npx supabase db reset --db-url $DB_URL
-# --debug
-# npx supabase db push --dry-run --db-url $DB_URL
-
-# npx supabase db diff --db-url $DB_URL
-# npx supabase db dump --db-url $DB_URL \
-# -f ./dump.sql
-# npx supabase db lint --db-url $DB_URL
-# npx supabase db pull --db-url $DB_URL
-# npx supabase db push --db-url $DB_URL
-
-
-
-# npx supabase migration new create_employees_table
-# npx supabase db start --db-url $DB_URL
-
-# npx supabase db push --db-url $DB_URL
-# npx supabase db pull --db-url $DB_URL
-# npx supabase db pull --schema auth,storage --db-url $DB_URL
-# npx supabase db reset --db-url $DB_URL
-# npx supabase seed
-
-set +x
-
-echo -e ""
-echo -e "\033[32m| DONE, DONE, DONE |\033[0m"
-echo -e "\033[32m| DONE, DONE, DONE |\033[0m"
-echo -e ""
diff --git a/03_source/mobile_old.del/docker/dc_up.sh b/03_source/mobile_old.del/docker/dc_up.sh
deleted file mode 100755
index e681b78..0000000
--- a/03_source/mobile_old.del/docker/dc_up.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env bash
-
-set -x
-
-# Start:
-docker compose pull
-
-# production:
-# docker compose up --build
-
-# development, With helpers:
-docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up
-docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml restart mail
-
-# need to manually stop the container, and related volumes as db write to physical disk
-# otherwise the docker won't start
-# Stop:
-docker compose down
-# Destroy:
-docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down -v --remove-orphans
-
-# docker compose logs -f
diff --git a/03_source/mobile_old.del/docker/dev/data.sql b/03_source/mobile_old.del/docker/dev/data.sql
deleted file mode 100644
index feafb36..0000000
--- a/03_source/mobile_old.del/docker/dev/data.sql
+++ /dev/null
@@ -1,50 +0,0 @@
-CREATE TABLE profiles(
- id uuid REFERENCES auth.users NOT NULL,
- updated_at timestamp with time zone,
- username text UNIQUE,
- avatar_url text,
- website text,
- PRIMARY KEY (id),
- UNIQUE (username),
- CONSTRAINT username_length CHECK (char_length(username) >= 3)
-);
-
-ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
-
-CREATE POLICY "Public profiles are viewable by the owner." ON profiles
- FOR SELECT
- USING (auth.uid() = id);
-
-CREATE POLICY "Users can insert their own profile." ON profiles
- FOR INSERT
- WITH CHECK (auth.uid() = id);
-
-CREATE POLICY "Users can update own profile." ON profiles
- FOR UPDATE
- USING (auth.uid() = id);
-
--- Set up Realtime
-BEGIN;
-DROP publication IF EXISTS supabase_realtime;
-CREATE publication supabase_realtime;
-COMMIT;
-
-ALTER publication supabase_realtime
- ADD TABLE profiles;
-
--- Set up Storage
-INSERT INTO storage.buckets(id, name)
- VALUES ('avatars', 'avatars');
-
-CREATE POLICY "Avatar images are publicly accessible." ON storage.objects
- FOR SELECT
- USING (bucket_id = 'avatars');
-
-CREATE POLICY "Anyone can upload an avatar." ON storage.objects
- FOR INSERT
- WITH CHECK (bucket_id = 'avatars');
-
-CREATE POLICY "Anyone can update an avatar." ON storage.objects
- FOR UPDATE
- WITH CHECK (bucket_id = 'avatars');
-
diff --git a/03_source/mobile_old.del/docker/dev/docker-compose.dev.yml b/03_source/mobile_old.del/docker/dev/docker-compose.dev.yml
deleted file mode 100644
index 226d994..0000000
--- a/03_source/mobile_old.del/docker/dev/docker-compose.dev.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-services:
- studio:
- build:
- context: ..
- dockerfile: studio/Dockerfile
- target: dev
- ports:
- - 8082:8082
- mail:
- container_name: supabase-mail
- image: inbucket/inbucket:3.0.3
- ports:
- - "2500:2500" # SMTP
- - "9000:9000" # web interface
- - "1100:1100" # POP3
- auth:
- environment:
- # empty for no smtp server authenatication
- - GOTRUE_SMTP_USER=
- - GOTRUE_SMTP_PASS=
- meta:
- ports:
- - 5555:8080
- db:
- restart: "no"
- volumes:
- # Always use a fresh database when developing
- - /var/lib/postgresql/data
- # Seed data should be inserted last (alphabetical order)
- - ./dev/data.sql:/docker-entrypoint-initdb.d/seed.sql
- storage:
- volumes:
- - /var/lib/storage
diff --git a/03_source/mobile_old.del/docker/dev/notes.md b/03_source/mobile_old.del/docker/dev/notes.md
deleted file mode 100644
index e1e097e..0000000
--- a/03_source/mobile_old.del/docker/dev/notes.md
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/docs-plus/docs.plus/blob/d6e8b2a72f3e943baf13f7efd405876f1f45537c/packages/supabase/scripts/10-1-func-users.sql
diff --git a/03_source/mobile_old.del/docker/docker-compose.s3.yml b/03_source/mobile_old.del/docker/docker-compose.s3.yml
deleted file mode 100644
index bb8be62..0000000
--- a/03_source/mobile_old.del/docker/docker-compose.s3.yml
+++ /dev/null
@@ -1,96 +0,0 @@
-version: "3.8"
-
-services:
-
- minio:
- image: minio/minio
- ports:
- - '9000:9000'
- - '9001:9001'
- environment:
- MINIO_ROOT_USER: supa-storage
- MINIO_ROOT_PASSWORD: secret1234
- command: server --console-address ":9001" /data
- healthcheck:
- test: [ "CMD", "curl", "-f", "http://minio:9000/minio/health/live" ]
- interval: 2s
- timeout: 10s
- retries: 5
- volumes:
- - ./volumes/storage:/data:z
-
- minio-createbucket:
- image: minio/mc
- depends_on:
- minio:
- condition: service_healthy
- entrypoint: >
- /bin/sh -c "
- /usr/bin/mc alias set supa-minio http://minio:9000 supa-storage secret1234;
- /usr/bin/mc mb supa-minio/stub;
- exit 0;
- "
-
- storage:
- container_name: supabase-storage
- image: supabase/storage-api:v0.43.11
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- rest:
- condition: service_started
- imgproxy:
- condition: service_started
- minio:
- condition: service_healthy
- healthcheck:
- test:
- [
- "CMD",
- "wget",
- "--no-verbose",
- "--tries=1",
- "--spider",
- "http://localhost:5000/status"
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- ANON_KEY: ${ANON_KEY}
- SERVICE_KEY: ${SERVICE_ROLE_KEY}
- POSTGREST_URL: http://rest:3000
- PGRST_JWT_SECRET: ${JWT_SECRET}
- DATABASE_URL: postgres://supabase_storage_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- FILE_SIZE_LIMIT: 52428800
- STORAGE_BACKEND: s3
- GLOBAL_S3_BUCKET: stub
- GLOBAL_S3_ENDPOINT: http://minio:9000
- GLOBAL_S3_PROTOCOL: http
- GLOBAL_S3_FORCE_PATH_STYLE: true
- AWS_ACCESS_KEY_ID: supa-storage
- AWS_SECRET_ACCESS_KEY: secret1234
- AWS_DEFAULT_REGION: stub
- FILE_STORAGE_BACKEND_PATH: /var/lib/storage
- TENANT_ID: stub
- # TODO: https://github.com/supabase/storage-api/issues/55
- REGION: stub
- ENABLE_IMAGE_TRANSFORMATION: "true"
- IMGPROXY_URL: http://imgproxy:5001
- volumes:
- - ./volumes/storage:/var/lib/storage:z
-
- imgproxy:
- container_name: supabase-imgproxy
- image: darthsim/imgproxy:v3.8.0
- healthcheck:
- test: [ "CMD", "imgproxy", "health" ]
- timeout: 5s
- interval: 5s
- retries: 3
- environment:
- IMGPROXY_BIND: ":5001"
- IMGPROXY_USE_ETAG: "true"
- IMGPROXY_ENABLE_WEBP_DETECTION: ${IMGPROXY_ENABLE_WEBP_DETECTION}
diff --git a/03_source/mobile_old.del/docker/docker-compose.yml b/03_source/mobile_old.del/docker/docker-compose.yml
deleted file mode 100644
index 9caaa58..0000000
--- a/03_source/mobile_old.del/docker/docker-compose.yml
+++ /dev/null
@@ -1,401 +0,0 @@
-# Usage
-# Start: docker compose up
-# With helpers: docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up
-# Stop: docker compose down
-# Destroy: docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down -v --remove-orphans
-
-# suprbase-CRUD-tryout
-name: supabase
-
-services:
- studio:
- container_name: supabase-studio
- image: supabase/studio:20240729-ce42139
- restart: unless-stopped
- healthcheck:
- test:
- [
- "CMD",
- "node",
- "-e",
- "require('http').get('http://localhost:3000/api/profile', (r) => {if (r.statusCode !== 200) throw new Error(r.statusCode)})",
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- depends_on:
- analytics:
- condition: service_healthy
- environment:
- STUDIO_PG_META_URL: http://meta:8080
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
-
- DEFAULT_ORGANIZATION_NAME: ${STUDIO_DEFAULT_ORGANIZATION}
- DEFAULT_PROJECT_NAME: ${STUDIO_DEFAULT_PROJECT}
-
- SUPABASE_URL: http://kong:8000
- SUPABASE_PUBLIC_URL: ${SUPABASE_PUBLIC_URL}
- SUPABASE_ANON_KEY: ${ANON_KEY}
- SUPABASE_SERVICE_KEY: ${SERVICE_ROLE_KEY}
- AUTH_JWT_SECRET: ${JWT_SECRET}
-
- LOGFLARE_API_KEY: ${LOGFLARE_API_KEY}
- LOGFLARE_URL: http://analytics:4000
- NEXT_PUBLIC_ENABLE_LOGS: true
- # Comment to use Big Query backend for analytics
- NEXT_ANALYTICS_BACKEND_PROVIDER: postgres
- # Uncomment to use Big Query backend for analytics
- # NEXT_ANALYTICS_BACKEND_PROVIDER: bigquery
-
- kong:
- container_name: supabase-kong
- image: kong:2.8.1
- restart: unless-stopped
- # https://unix.stackexchange.com/a/294837
- entrypoint: bash -c 'eval "echo \"$$(cat ~/temp.yml)\"" > ~/kong.yml && /docker-entrypoint.sh kong docker-start'
- ports:
- - ${KONG_HTTP_PORT}:8000/tcp
- - ${KONG_HTTPS_PORT}:8443/tcp
- depends_on:
- analytics:
- condition: service_healthy
- environment:
- KONG_DATABASE: "off"
- KONG_DECLARATIVE_CONFIG: /home/kong/kong.yml
- # https://github.com/supabase/cli/issues/14
- KONG_DNS_ORDER: LAST,A,CNAME
- KONG_PLUGINS: request-transformer,cors,key-auth,acl,basic-auth
- KONG_NGINX_PROXY_PROXY_BUFFER_SIZE: 160k
- KONG_NGINX_PROXY_PROXY_BUFFERS: 64 160k
- SUPABASE_ANON_KEY: ${ANON_KEY}
- SUPABASE_SERVICE_KEY: ${SERVICE_ROLE_KEY}
- DASHBOARD_USERNAME: ${DASHBOARD_USERNAME}
- DASHBOARD_PASSWORD: ${DASHBOARD_PASSWORD}
- volumes:
- # https://github.com/supabase/supabase/issues/12661
- - ./volumes/api/kong.yml:/home/kong/temp.yml:ro
-
- auth:
- container_name: supabase-auth
- image: supabase/gotrue:v2.158.1
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- healthcheck:
- test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:9999/health"]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- GOTRUE_API_HOST: 0.0.0.0
- GOTRUE_API_PORT: 9999
- API_EXTERNAL_URL: ${API_EXTERNAL_URL}
-
- GOTRUE_DB_DRIVER: postgres
- GOTRUE_DB_DATABASE_URL: postgres://supabase_auth_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
-
- GOTRUE_SITE_URL: ${SITE_URL}
- GOTRUE_URI_ALLOW_LIST: ${ADDITIONAL_REDIRECT_URLS}
- GOTRUE_DISABLE_SIGNUP: ${DISABLE_SIGNUP}
-
- GOTRUE_JWT_ADMIN_ROLES: service_role
- GOTRUE_JWT_AUD: authenticated
- GOTRUE_JWT_DEFAULT_GROUP_NAME: authenticated
- GOTRUE_JWT_EXP: ${JWT_EXPIRY}
- GOTRUE_JWT_SECRET: ${JWT_SECRET}
-
- GOTRUE_EXTERNAL_EMAIL_ENABLED: ${ENABLE_EMAIL_SIGNUP}
- GOTRUE_EXTERNAL_ANONYMOUS_USERS_ENABLED: ${ENABLE_ANONYMOUS_USERS}
- GOTRUE_MAILER_AUTOCONFIRM: ${ENABLE_EMAIL_AUTOCONFIRM}
- # GOTRUE_MAILER_SECURE_EMAIL_CHANGE_ENABLED: true
- # GOTRUE_SMTP_MAX_FREQUENCY: 1s
- GOTRUE_SMTP_ADMIN_EMAIL: ${SMTP_ADMIN_EMAIL}
- GOTRUE_SMTP_HOST: ${SMTP_HOST}
- GOTRUE_SMTP_PORT: ${SMTP_PORT}
- GOTRUE_SMTP_USER: ${SMTP_USER}
- GOTRUE_SMTP_PASS: ${SMTP_PASS}
- GOTRUE_SMTP_SENDER_NAME: ${SMTP_SENDER_NAME}
- GOTRUE_MAILER_URLPATHS_INVITE: ${MAILER_URLPATHS_INVITE}
- GOTRUE_MAILER_URLPATHS_CONFIRMATION: ${MAILER_URLPATHS_CONFIRMATION}
- GOTRUE_MAILER_URLPATHS_RECOVERY: ${MAILER_URLPATHS_RECOVERY}
- GOTRUE_MAILER_URLPATHS_EMAIL_CHANGE: ${MAILER_URLPATHS_EMAIL_CHANGE}
-
- GOTRUE_EXTERNAL_PHONE_ENABLED: ${ENABLE_PHONE_SIGNUP}
- GOTRUE_SMS_AUTOCONFIRM: ${ENABLE_PHONE_AUTOCONFIRM}
- # Uncomment to enable custom access token hook. You'll need to create a public.custom_access_token_hook function and grant necessary permissions.
- # See: https://supabase.com/docs/guides/auth/auth-hooks#hook-custom-access-token for details
- # GOTRUE_HOOK_CUSTOM_ACCESS_TOKEN_ENABLED="true"
- # GOTRUE_HOOK_CUSTOM_ACCESS_TOKEN_URI="pg-functions://postgres/public/custom_access_token_hook"
-
- # GOTRUE_HOOK_MFA_VERIFICATION_ATTEMPT_ENABLED="true"
- # GOTRUE_HOOK_MFA_VERIFICATION_ATTEMPT_URI="pg-functions://postgres/public/mfa_verification_attempt"
-
- # GOTRUE_HOOK_PASSWORD_VERIFICATION_ATTEMPT_ENABLED="true"
- # GOTRUE_HOOK_PASSWORD_VERIFICATION_ATTEMPT_URI="pg-functions://postgres/public/password_verification_attempt"
-
- rest:
- container_name: supabase-rest
- image: postgrest/postgrest:v12.2.0
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- restart: unless-stopped
- environment:
- PGRST_DB_URI: postgres://authenticator:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- PGRST_DB_SCHEMAS: ${PGRST_DB_SCHEMAS}
- PGRST_DB_ANON_ROLE: anon
- PGRST_JWT_SECRET: ${JWT_SECRET}
- PGRST_DB_USE_LEGACY_GUCS: "false"
- PGRST_APP_SETTINGS_JWT_SECRET: ${JWT_SECRET}
- PGRST_APP_SETTINGS_JWT_EXP: ${JWT_EXPIRY}
- command: "postgrest"
-
- realtime:
- # This container name looks inconsistent but is correct because realtime constructs tenant id by parsing the subdomain
- container_name: realtime-dev.supabase-realtime
- image: supabase/realtime:v2.30.34
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- healthcheck:
- test:
- [
- "CMD",
- "curl",
- "-sSfL",
- "--head",
- "-o",
- "/dev/null",
- "-H",
- "Authorization: Bearer ${ANON_KEY}",
- "http://localhost:4000/api/tenants/realtime-dev/health",
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- PORT: 4000
- DB_HOST: ${POSTGRES_HOST}
- DB_PORT: ${POSTGRES_PORT}
- DB_USER: supabase_admin
- DB_PASSWORD: ${POSTGRES_PASSWORD}
- DB_NAME: ${POSTGRES_DB}
- DB_AFTER_CONNECT_QUERY: "SET search_path TO _realtime"
- DB_ENC_KEY: supabaserealtime
- API_JWT_SECRET: ${JWT_SECRET}
- SECRET_KEY_BASE: UpNVntn3cDxHJpq99YMc1T1AQgQpc8kfYTuRgBiYa15BLrx8etQoXz3gZv1/u2oq
- ERL_AFLAGS: -proto_dist inet_tcp
- DNS_NODES: "''"
- RLIMIT_NOFILE: "10000"
- APP_NAME: realtime
- SEED_SELF_HOST: true
-
- # To use S3 backed storage: docker compose -f docker-compose.yml -f docker-compose.s3.yml up
- storage:
- container_name: supabase-storage
- image: supabase/storage-api:v1.10.1
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- rest:
- condition: service_started
- imgproxy:
- condition: service_started
- healthcheck:
- test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5000/status"]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- ANON_KEY: ${ANON_KEY}
- SERVICE_KEY: ${SERVICE_ROLE_KEY}
- POSTGREST_URL: http://rest:3000
- PGRST_JWT_SECRET: ${JWT_SECRET}
- DATABASE_URL: postgres://supabase_storage_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- FILE_SIZE_LIMIT: 52428800
- STORAGE_BACKEND: file
- FILE_STORAGE_BACKEND_PATH: /var/lib/storage
- TENANT_ID: stub
- # TODO: https://github.com/supabase/storage-api/issues/55
- REGION: stub
- GLOBAL_S3_BUCKET: stub
- ENABLE_IMAGE_TRANSFORMATION: "true"
- IMGPROXY_URL: http://imgproxy:5001
- volumes:
- - ./volumes/storage:/var/lib/storage:z
-
- imgproxy:
- container_name: supabase-imgproxy
- image: darthsim/imgproxy:v3.8.0
- healthcheck:
- test: ["CMD", "imgproxy", "health"]
- timeout: 5s
- interval: 5s
- retries: 3
- environment:
- IMGPROXY_BIND: ":5001"
- IMGPROXY_LOCAL_FILESYSTEM_ROOT: /
- IMGPROXY_USE_ETAG: "true"
- IMGPROXY_ENABLE_WEBP_DETECTION: ${IMGPROXY_ENABLE_WEBP_DETECTION}
- volumes:
- - ./volumes/storage:/var/lib/storage:z
-
- meta:
- container_name: supabase-meta
- image: supabase/postgres-meta:v0.83.2
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- restart: unless-stopped
- environment:
- PG_META_PORT: 8080
- PG_META_DB_HOST: ${POSTGRES_HOST}
- PG_META_DB_PORT: ${POSTGRES_PORT}
- PG_META_DB_NAME: ${POSTGRES_DB}
- PG_META_DB_USER: supabase_admin
- PG_META_DB_PASSWORD: ${POSTGRES_PASSWORD}
-
- functions:
- container_name: supabase-edge-functions
- image: supabase/edge-runtime:v1.56.1
- restart: unless-stopped
- depends_on:
- analytics:
- condition: service_healthy
- environment:
- JWT_SECRET: ${JWT_SECRET}
- SUPABASE_URL: http://kong:8000
- SUPABASE_ANON_KEY: ${ANON_KEY}
- SUPABASE_SERVICE_ROLE_KEY: ${SERVICE_ROLE_KEY}
- SUPABASE_DB_URL: postgresql://postgres:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- # TODO: Allow configuring VERIFY_JWT per function. This PR might help: https://github.com/supabase/cli/pull/786
- VERIFY_JWT: "${FUNCTIONS_VERIFY_JWT}"
- volumes:
- - ./volumes/functions:/home/deno/functions:Z
- command:
- - start
- - --main-service
- - /home/deno/functions/main
-
- analytics:
- container_name: supabase-analytics
- image: supabase/logflare:1.4.0
- healthcheck:
- test: ["CMD", "curl", "http://localhost:4000/health"]
- timeout: 5s
- interval: 5s
- retries: 10
- restart: unless-stopped
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- # Uncomment to use Big Query backend for analytics
- # volumes:
- # - type: bind
- # source: ${PWD}/gcloud.json
- # target: /opt/app/rel/logflare/bin/gcloud.json
- # read_only: true
- environment:
- LOGFLARE_NODE_HOST: 127.0.0.1
- DB_USERNAME: supabase_admin
- DB_DATABASE: ${POSTGRES_DB}
- DB_HOSTNAME: ${POSTGRES_HOST}
- DB_PORT: ${POSTGRES_PORT}
- DB_PASSWORD: ${POSTGRES_PASSWORD}
- DB_SCHEMA: _analytics
- LOGFLARE_API_KEY: ${LOGFLARE_API_KEY}
- LOGFLARE_SINGLE_TENANT: true
- LOGFLARE_SUPABASE_MODE: true
- LOGFLARE_MIN_CLUSTER_SIZE: 1
-
- # Comment variables to use Big Query backend for analytics
- POSTGRES_BACKEND_URL: postgresql://supabase_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- POSTGRES_BACKEND_SCHEMA: _analytics
- LOGFLARE_FEATURE_FLAG_OVERRIDE: multibackend=true
- # Uncomment to use Big Query backend for analytics
- # GOOGLE_PROJECT_ID: ${GOOGLE_PROJECT_ID}
- # GOOGLE_PROJECT_NUMBER: ${GOOGLE_PROJECT_NUMBER}
- ports:
- - 4000:4000
-
- # Comment out everything below this point if you are using an external Postgres database
- db:
- container_name: supabase-db
- image: supabase/postgres:15.1.1.78
- healthcheck:
- test: pg_isready -U postgres -h localhost
- interval: 5s
- timeout: 5s
- retries: 10
- depends_on:
- vector:
- condition: service_healthy
- command:
- - postgres
- - -c
- - config_file=/etc/postgresql/postgresql.conf
- - -c
- - log_min_messages=fatal # prevents Realtime polling queries from appearing in logs
- restart: unless-stopped
- ports:
- # Pass down internal port because it's set dynamically by other services
- - ${POSTGRES_PORT}:${POSTGRES_PORT}
- environment:
- POSTGRES_HOST: /var/run/postgresql
- PGPORT: ${POSTGRES_PORT}
- POSTGRES_PORT: ${POSTGRES_PORT}
- PGPASSWORD: ${POSTGRES_PASSWORD}
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
- PGDATABASE: ${POSTGRES_DB}
- POSTGRES_DB: ${POSTGRES_DB}
- JWT_SECRET: ${JWT_SECRET}
- JWT_EXP: ${JWT_EXPIRY}
- volumes:
- - ./volumes/db/realtime.sql:/docker-entrypoint-initdb.d/migrations/99-realtime.sql:Z
- # Must be superuser to create event trigger
- - ./volumes/db/webhooks.sql:/docker-entrypoint-initdb.d/init-scripts/98-webhooks.sql:Z
- # Must be superuser to alter reserved role
- - ./volumes/db/roles.sql:/docker-entrypoint-initdb.d/init-scripts/99-roles.sql:Z
- # Initialize the database settings with JWT_SECRET and JWT_EXP
- - ./volumes/db/jwt.sql:/docker-entrypoint-initdb.d/init-scripts/99-jwt.sql:Z
- # PGDATA directory is persisted between restarts
- - ./volumes/db/data:/var/lib/postgresql/data:Z
- # Changes required for Analytics support
- - ./volumes/db/logs.sql:/docker-entrypoint-initdb.d/migrations/99-logs.sql:Z
- # Use named volume to persist pgsodium decryption key between restarts
- - db-config:/etc/postgresql-custom
-
- vector:
- container_name: supabase-vector
- image: timberio/vector:0.28.1-alpine
- healthcheck:
- test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://vector:9001/health"]
- timeout: 5s
- interval: 5s
- retries: 3
- volumes:
- - ./volumes/logs/vector.yml:/etc/vector/vector.yml:ro
- - ${DOCKER_SOCKET_LOCATION}:/var/run/docker.sock:ro
- environment:
- LOGFLARE_API_KEY: ${LOGFLARE_API_KEY}
- command: ["--config", "etc/vector/vector.yml"]
-
-volumes:
- db-config:
diff --git a/03_source/mobile_old.del/docker/supabase/.gitignore b/03_source/mobile_old.del/docker/supabase/.gitignore
deleted file mode 100644
index 1e96d9d..0000000
--- a/03_source/mobile_old.del/docker/supabase/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-**/*.bak
-
-# Supabase
-.branches
-.temp
-.env
diff --git a/03_source/mobile_old.del/docker/supabase/config.toml b/03_source/mobile_old.del/docker/supabase/config.toml
deleted file mode 100644
index 234481a..0000000
--- a/03_source/mobile_old.del/docker/supabase/config.toml
+++ /dev/null
@@ -1,237 +0,0 @@
-# A string used to distinguish different Supabase projects on the same host. Defaults to the
-# working directory name when running `supabase init`.
-project_id = "supabase"
-
-[api]
-enabled = true
-# Port to use for the API URL.
-port = 54321
-# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API
-# endpoints. `public` is always included.
-schemas = ["public", "graphql_public"]
-# Extra schemas to add to the search_path of every request. `public` is always included.
-extra_search_path = ["public", "extensions"]
-# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size
-# for accidental or malicious requests.
-max_rows = 1000
-
-[api.tls]
-enabled = false
-
-[db]
-# Port to use for the local database URL.
-port = 54322
-# Port used by db diff command to initialize the shadow database.
-shadow_port = 54320
-# The database major version to use. This has to be the same as your remote database's. Run `SHOW
-# server_version;` on the remote database to check.
-major_version = 15
-
-[db.pooler]
-enabled = false
-# Port to use for the local connection pooler.
-port = 54329
-# Specifies when a server connection can be reused by other clients.
-# Configure one of the supported pooler modes: `transaction`, `session`.
-pool_mode = "transaction"
-# How many server connections to allow per user/database pair.
-default_pool_size = 20
-# Maximum number of client connections allowed.
-max_client_conn = 100
-
-[realtime]
-enabled = true
-# Bind realtime via either IPv4 or IPv6. (default: IPv4)
-# ip_version = "IPv6"
-# The maximum length in bytes of HTTP request headers. (default: 4096)
-# max_header_length = 4096
-
-[studio]
-enabled = true
-# Port to use for Supabase Studio.
-port = 54323
-# External URL of the API server that frontend connects to.
-api_url = "http://127.0.0.1"
-# OpenAI API Key to use for Supabase AI in the Supabase Studio.
-openai_api_key = "env(OPENAI_API_KEY)"
-
-# Email testing server. Emails sent with the local dev setup are not actually sent - rather, they
-# are monitored, and you can view the emails that would have been sent from the web interface.
-[inbucket]
-enabled = true
-# Port to use for the email testing server web interface.
-port = 54324
-# Uncomment to expose additional ports for testing user applications that send emails.
-# smtp_port = 54325
-# pop3_port = 54326
-
-[storage]
-enabled = true
-# The maximum file size allowed (e.g. "5MB", "500KB").
-file_size_limit = "50MiB"
-
-[storage.image_transformation]
-enabled = true
-
-# Uncomment to configure local storage buckets
-# [storage.buckets.images]
-# public = false
-# file_size_limit = "50MiB"
-# allowed_mime_types = ["image/png", "image/jpeg"]
-# objects_path = "./images"
-
-[auth]
-enabled = true
-# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used
-# in emails.
-site_url = "http://127.0.0.1:3000"
-# A list of *exact* URLs that auth providers are permitted to redirect to post authentication.
-additional_redirect_urls = ["https://127.0.0.1:3000"]
-# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week).
-jwt_expiry = 3600
-# If disabled, the refresh token will never expire.
-enable_refresh_token_rotation = true
-# Allows refresh tokens to be reused after expiry, up to the specified interval in seconds.
-# Requires enable_refresh_token_rotation = true.
-refresh_token_reuse_interval = 10
-# Allow/disallow new user signups to your project.
-enable_signup = true
-# Allow/disallow anonymous sign-ins to your project.
-enable_anonymous_sign_ins = false
-# Allow/disallow testing manual linking of accounts
-enable_manual_linking = false
-
-[auth.email]
-# Allow/disallow new user signups via email to your project.
-enable_signup = true
-# If enabled, a user will be required to confirm any email change on both the old, and new email
-# addresses. If disabled, only the new email is required to confirm.
-double_confirm_changes = true
-# If enabled, users need to confirm their email address before signing in.
-enable_confirmations = false
-# Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email.
-max_frequency = "1s"
-
-# Use a production-ready SMTP server
-# [auth.email.smtp]
-# host = "smtp.sendgrid.net"
-# port = 587
-# user = "apikey"
-# pass = "env(SENDGRID_API_KEY)"
-# admin_email = "admin@email.com"
-# sender_name = "Admin"
-
-# Uncomment to customize email template
-# [auth.email.template.invite]
-# subject = "You have been invited"
-# content_path = "./supabase/templates/invite.html"
-
-[auth.sms]
-# Allow/disallow new user signups via SMS to your project.
-enable_signup = true
-# If enabled, users need to confirm their phone number before signing in.
-enable_confirmations = false
-# Template for sending OTP to users
-template = "Your code is {{ .Code }} ."
-# Controls the minimum amount of time that must pass before sending another sms otp.
-max_frequency = "5s"
-
-# Use pre-defined map of phone number to OTP for testing.
-# [auth.sms.test_otp]
-# 4152127777 = "123456"
-
-# Configure logged in session timeouts.
-# [auth.sessions]
-# Force log out after the specified duration.
-# timebox = "24h"
-# Force log out if the user has been inactive longer than the specified duration.
-# inactivity_timeout = "8h"
-
-# This hook runs before a token is issued and allows you to add additional claims based on the authentication method used.
-# [auth.hook.custom_access_token]
-# enabled = true
-# uri = "pg-functions:////"
-
-# Configure one of the supported SMS providers: `twilio`, `twilio_verify`, `messagebird`, `textlocal`, `vonage`.
-[auth.sms.twilio]
-enabled = false
-account_sid = ""
-message_service_sid = ""
-# DO NOT commit your Twilio auth token to git. Use environment variable substitution instead:
-auth_token = "env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)"
-
-[auth.mfa]
-# Control how many MFA factors can be enrolled at once per user.
-max_enrolled_factors = 10
-
-# Control use of MFA via App Authenticator (TOTP)
-[auth.mfa.totp]
-enroll_enabled = true
-verify_enabled = true
-
-# Configure Multi-factor-authentication via Phone Messaging
-# [auth.mfa.phone]
-# enroll_enabled = true
-# verify_enabled = true
-# otp_length = 6
-# template = "Your code is {{ .Code }} ."
-# max_frequency = "10s"
-
-# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`,
-# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin_oidc`, `notion`, `twitch`,
-# `twitter`, `slack`, `spotify`, `workos`, `zoom`.
-[auth.external.apple]
-enabled = false
-client_id = ""
-# DO NOT commit your OAuth provider secret to git. Use environment variable substitution instead:
-secret = "env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)"
-# Overrides the default auth redirectUrl.
-redirect_uri = ""
-# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure,
-# or any other third-party OIDC providers.
-url = ""
-# If enabled, the nonce check will be skipped. Required for local sign in with Google auth.
-skip_nonce_check = false
-
-# Use Firebase Auth as a third-party provider alongside Supabase Auth.
-[auth.third_party.firebase]
-enabled = false
-# project_id = "my-firebase-project"
-
-# Use Auth0 as a third-party provider alongside Supabase Auth.
-[auth.third_party.auth0]
-enabled = false
-# tenant = "my-auth0-tenant"
-# tenant_region = "us"
-
-# Use AWS Cognito (Amplify) as a third-party provider alongside Supabase Auth.
-[auth.third_party.aws_cognito]
-enabled = false
-# user_pool_id = "my-user-pool-id"
-# user_pool_region = "us-east-1"
-
-[edge_runtime]
-enabled = true
-# Configure one of the supported request policies: `oneshot`, `per_worker`.
-# Use `oneshot` for hot reload, or `per_worker` for load testing.
-policy = "oneshot"
-inspector_port = 8083
-
-[analytics]
-enabled = true
-port = 54327
-# Configure one of the supported backends: `postgres`, `bigquery`.
-backend = "postgres"
-
-# Experimental features may be deprecated any time
-[experimental]
-# Configures Postgres storage engine to use OrioleDB (S3)
-orioledb_version = ""
-# Configures S3 bucket URL, eg. .s3-.amazonaws.com
-s3_host = "env(S3_HOST)"
-# Configures S3 bucket region, eg. us-east-1
-s3_region = "env(S3_REGION)"
-# Configures AWS_ACCESS_KEY_ID for S3 bucket
-s3_access_key = "env(S3_ACCESS_KEY)"
-# Configures AWS_SECRET_ACCESS_KEY for S3 bucket
-s3_secret_key = "env(S3_SECRET_KEY)"
diff --git a/03_source/mobile_old.del/docker/supabase/migration.1/00013_profiles.sql b/03_source/mobile_old.del/docker/supabase/migration.1/00013_profiles.sql
deleted file mode 100644
index 2869d6f..0000000
--- a/03_source/mobile_old.del/docker/supabase/migration.1/00013_profiles.sql
+++ /dev/null
@@ -1,51 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read profiles" ON public.profiles
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write profiles" ON "public"."profiles" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update profiles" ON "public"."profiles" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete profiles" ON "public"."profiles" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
-COMMIT;
---
-
--- Set up Realtime
-BEGIN;
-DROP publication IF EXISTS supabase_realtime;
-CREATE publication supabase_realtime;
-COMMIT;
-
-ALTER publication supabase_realtime
- ADD TABLE profiles;
-
--- -- Set up Storage
--- BEGIN;
--- INSERT INTO storage.buckets(id, name)
--- VALUES ('avatars', 'avatars');
--- COMMIT;
-
--- CREATE POLICY "Avatar images are publicly accessible." ON storage.objects
--- FOR SELECT
--- USING (bucket_id = 'avatars');
-
--- CREATE POLICY "Anyone can upload an avatar." ON storage.objects
--- FOR INSERT
--- WITH CHECK (bucket_id = 'avatars');
-
--- CREATE POLICY "Anyone can update an avatar." ON storage.objects
--- FOR UPDATE
--- USING (bucket_id = 'avatars');
-
--- ---
-
----
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migration.1/002_party_schema.sql b/03_source/mobile_old.del/docker/supabase/migration.1/002_party_schema.sql
deleted file mode 100644
index 886dfaa..0000000
--- a/03_source/mobile_old.del/docker/supabase/migration.1/002_party_schema.sql
+++ /dev/null
@@ -1,370 +0,0 @@
--- SQL dump generated using DBML (dbml.dbdiagram.io)
--- Database: PostgreSQL
--- Generated at: 2024-09-12T05:57:06.357Z
-
-CREATE TABLE "fake_auth.users" (
- "id" uuid PRIMARY KEY,
- "username" varchar,
- "remarks" text
-);
-
-CREATE TABLE "message_status" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_rank" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_verified" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_other_tags" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_spoken_language" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_career" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_education" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "notifications" (
- "id" serial PRIMARY KEY,
- "content" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "party_event_status" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "party_events" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "about_event" text NOT NULL DEFAULT '',
- "event_date" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "event_duration_min" integer NOT NULL DEFAULT 90,
- "price" integer NOT NULL DEFAULT 999,
- "currency" text NOT NULL DEFAULT 'HKD',
- "last_payment_time" TIMESTAMPTZ NOT NULL DEFAULT '2999-01-01',
- "address" text NOT NULL DEFAULT '',
- "image_urls" text[] DEFAULT '{}',
- "status" integer NOT NULL DEFAULT 0,
- "join_boy" integer NOT NULL DEFAULT 999,
- "join_girl" integer NOT NULL DEFAULT 999,
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_genders" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "profiles" (
- "id" uuid,
- "user_id" serial UNIQUE,
- "website" text NOT NULL DEFAULT '',
- "gender" integer NOT NULL DEFAULT 1,
- "bookmark_events" integer UNIQUE,
- "avatar_urls" text[] DEFAULT '{}',
- "about_user" text NOT NULL DEFAULT '',
- "spoken_language" integer UNIQUE,
- "career" integer UNIQUE,
- "user_rank" integer UNIQUE,
- "verified" integer UNIQUE,
- "weight_kg" integer NOT NULL DEFAULT 100,
- "height_cm" integer NOT NULL DEFAULT 100,
- "education" integer UNIQUE,
- "other_tags" integer UNIQUE,
- "last_seen" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "year_of_birth" integer DEFAULT 1970,
- "notification_read" integer UNIQUE,
- "block_user_id" text[] NOT NULL DEFAULT '{}',
- "suspend_at" TIMESTAMPTZ DEFAULT '2999-01-01',
- "is_user_suspend" integer NOT NULL DEFAULT 0,
- "is_admin_suspend" integer NOT NULL DEFAULT 0,
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json),
- PRIMARY KEY ("id", "user_id")
-);
-
-CREATE TABLE "messages" (
- "id" serial PRIMARY KEY,
- "content" text NOT NULL DEFAULT '',
- "media_url" varchar(255),
- "sender_user_id" integer NOT NULL,
- "receiver_user_id" integer NOT NULL,
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "visit_user_status" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "visit_user_profile" (
- "id" serial PRIMARY KEY,
- "visitor_user_id" integer NOT NULL,
- "visit_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "host_user_read" integer,
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "party_event_order_status" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "party_event_orders" (
- "id" serial PRIMARY KEY,
- "user_id" integer NOT NULL,
- "party_event_id" integer NOT NULL,
- "status" integer NOT NULL,
- "payment_time" TIMESTAMPTZ NOT NULL DEFAULT '2999-01-01',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "remarks" text DEFAULT '',
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "contact_us_message" (
- "id" serial PRIMARY KEY,
- "content" text NOT NULL DEFAULT '',
- "attachments" text[] DEFAULT '{}',
- "read_status" integer NOT NULL DEFAULT 1,
- "from_user_id" integer NOT NULL,
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "remarks" text NOT NULL DEFAULT '',
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "report_user_reason" (
- "id" serial PRIMARY KEY,
- "content" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "remarks" text NOT NULL DEFAULT '',
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "report_user" (
- "id" serial PRIMARY KEY,
- "content" text NOT NULL DEFAULT '',
- "attachments" text[] DEFAULT '{}',
- "reason" integer NOT NULL,
- "report_user_id" integer NOT NULL,
- "from_user_id" integer NOT NULL,
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "remarks" text NOT NULL DEFAULT '',
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-COMMENT ON TABLE "message_status" IS 'message read/unread status';
-
-COMMENT ON TABLE "user_rank" IS 'store user vip status field';
-
-COMMENT ON TABLE "user_verified" IS 'store user verified field';
-
-COMMENT ON TABLE "user_other_tags" IS 'store user tags field';
-
-COMMENT ON TABLE "user_spoken_language" IS 'store user spoken language field';
-
-COMMENT ON TABLE "user_career" IS 'store user career field';
-
-COMMENT ON TABLE "user_education" IS 'store user education field';
-
-COMMENT ON TABLE "notifications" IS 'handle admin send notification to user';
-
-COMMENT ON TABLE "party_event_status" IS 'store party event status';
-
-COMMENT ON TABLE "party_events" IS 'store party events';
-
-COMMENT ON TABLE "user_genders" IS 'store user party event orders status';
-
-COMMENT ON TABLE "profiles" IS 'store user meta';
-
-COMMENT ON TABLE "messages" IS 'store in-app chat';
-
-COMMENT ON TABLE "visit_user_status" IS 'store visit status read by host';
-
-COMMENT ON TABLE "visit_user_profile" IS 'history list, store user profile visited by others, used in near-by page';
-
-COMMENT ON TABLE "party_event_order_status" IS 'store user party event orders status';
-
-COMMENT ON TABLE "party_event_orders" IS 'store user party event orders';
-
-COMMENT ON TABLE "contact_us_message" IS 'store user to admin messages';
-
-COMMENT ON TABLE "report_user_reason" IS 'store user to admin messages';
-
-COMMENT ON TABLE "report_user" IS 'store report user messages';
-
-ALTER TABLE "party_events" ADD FOREIGN KEY ("status") REFERENCES "party_event_status" ("id");
-
-ALTER TABLE "profiles" ADD FOREIGN KEY ("id") REFERENCES "fake_auth.users" ("id");
-
-ALTER TABLE "profiles" ADD FOREIGN KEY ("gender") REFERENCES "user_genders" ("id");
-
-CREATE TABLE "party_events_profiles" (
- "party_events_id" serial,
- "profiles_bookmark_events" integer,
- PRIMARY KEY ("party_events_id", "profiles_bookmark_events")
-);
-
-ALTER TABLE "party_events_profiles" ADD FOREIGN KEY ("party_events_id") REFERENCES "party_events" ("id");
-
-ALTER TABLE "party_events_profiles" ADD FOREIGN KEY ("profiles_bookmark_events") REFERENCES "profiles" ("bookmark_events");
-
-
-CREATE TABLE "user_spoken_language_profiles" (
- "user_spoken_language_id" serial,
- "profiles_spoken_language" integer,
- PRIMARY KEY ("user_spoken_language_id", "profiles_spoken_language")
-);
-
-ALTER TABLE "user_spoken_language_profiles" ADD FOREIGN KEY ("user_spoken_language_id") REFERENCES "user_spoken_language" ("id");
-
-ALTER TABLE "user_spoken_language_profiles" ADD FOREIGN KEY ("profiles_spoken_language") REFERENCES "profiles" ("spoken_language");
-
-
-CREATE TABLE "user_career_profiles" (
- "user_career_id" serial,
- "profiles_career" integer,
- PRIMARY KEY ("user_career_id", "profiles_career")
-);
-
-ALTER TABLE "user_career_profiles" ADD FOREIGN KEY ("user_career_id") REFERENCES "user_career" ("id");
-
-ALTER TABLE "user_career_profiles" ADD FOREIGN KEY ("profiles_career") REFERENCES "profiles" ("career");
-
-
-CREATE TABLE "user_rank_profiles" (
- "user_rank_id" serial,
- "profiles_user_rank" integer,
- PRIMARY KEY ("user_rank_id", "profiles_user_rank")
-);
-
-ALTER TABLE "user_rank_profiles" ADD FOREIGN KEY ("user_rank_id") REFERENCES "user_rank" ("id");
-
-ALTER TABLE "user_rank_profiles" ADD FOREIGN KEY ("profiles_user_rank") REFERENCES "profiles" ("user_rank");
-
-
-ALTER TABLE "profiles" ADD FOREIGN KEY ("verified") REFERENCES "user_verified" ("id");
-
-ALTER TABLE "profiles" ADD FOREIGN KEY ("education") REFERENCES "user_education" ("id");
-
-CREATE TABLE "user_other_tags_profiles" (
- "user_other_tags_id" serial,
- "profiles_other_tags" integer,
- PRIMARY KEY ("user_other_tags_id", "profiles_other_tags")
-);
-
-ALTER TABLE "user_other_tags_profiles" ADD FOREIGN KEY ("user_other_tags_id") REFERENCES "user_other_tags" ("id");
-
-ALTER TABLE "user_other_tags_profiles" ADD FOREIGN KEY ("profiles_other_tags") REFERENCES "profiles" ("other_tags");
-
-
-CREATE TABLE "notifications_profiles" (
- "notifications_id" serial,
- "profiles_notification_read" integer,
- PRIMARY KEY ("notifications_id", "profiles_notification_read")
-);
-
-ALTER TABLE "notifications_profiles" ADD FOREIGN KEY ("notifications_id") REFERENCES "notifications" ("id");
-
-ALTER TABLE "notifications_profiles" ADD FOREIGN KEY ("profiles_notification_read") REFERENCES "profiles" ("notification_read");
-
-
-ALTER TABLE "messages" ADD FOREIGN KEY ("sender_user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "messages" ADD FOREIGN KEY ("receiver_user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "visit_user_profile" ADD FOREIGN KEY ("visitor_user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "visit_user_profile" ADD FOREIGN KEY ("host_user_read") REFERENCES "visit_user_status" ("id");
-
-ALTER TABLE "party_event_orders" ADD FOREIGN KEY ("user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "party_event_orders" ADD FOREIGN KEY ("party_event_id") REFERENCES "party_events" ("id");
-
-ALTER TABLE "party_event_orders" ADD FOREIGN KEY ("status") REFERENCES "party_event_order_status" ("id");
-
-ALTER TABLE "contact_us_message" ADD FOREIGN KEY ("read_status") REFERENCES "message_status" ("id");
-
-ALTER TABLE "contact_us_message" ADD FOREIGN KEY ("from_user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "report_user" ADD FOREIGN KEY ("reason") REFERENCES "report_user_reason" ("id");
-
-ALTER TABLE "report_user" ADD FOREIGN KEY ("report_user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "report_user" ADD FOREIGN KEY ("from_user_id") REFERENCES "profiles" ("user_id");
diff --git a/03_source/mobile_old.del/docker/supabase/migration.1/004_messages.sql1 b/03_source/mobile_old.del/docker/supabase/migration.1/004_messages.sql1
deleted file mode 100644
index bd2b697..0000000
--- a/03_source/mobile_old.del/docker/supabase/migration.1/004_messages.sql1
+++ /dev/null
@@ -1,27 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE messages ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read messages" ON public.messages
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write messages" ON "public"."messages" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update messages" ON "public"."messages" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete messages" ON "public"."messages" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO messages(content, sender_user_id, receiver_user_id)
- VALUES
- ('test message 1', 0 , 1);
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migration.1/007_seed_test_user.sql b/03_source/mobile_old.del/docker/supabase/migration.1/007_seed_test_user.sql
deleted file mode 100644
index 05c3467..0000000
--- a/03_source/mobile_old.del/docker/supabase/migration.1/007_seed_test_user.sql
+++ /dev/null
@@ -1,41 +0,0 @@
--- 007_seed_test_user.sql
--- create test users
-BEGIN;
-INSERT INTO auth.users(instance_id, id, aud, ROLE, email, encrypted_password, email_confirmed_at, recovery_sent_at, last_sign_in_at, raw_app_meta_data, raw_user_meta_data, created_at, updated_at, confirmation_token, email_change, email_change_token_new, recovery_token)(
- SELECT
- '00000000-0000-0000-0000-000000000000',
- uuid_generate_v4(),
- 'authenticated',
- 'authenticated',
- 'user' ||(ROW_NUMBER() OVER ()) || '@example.com',
- crypt('Aa1234567', gen_salt('bf')),
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- '{"provider":"email","providers":["email"]}',
- '{}',
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- '',
- '',
- '',
- ''
- FROM generate_series(1, 5));
-COMMIT;
-
--- test user email identities
-BEGIN;
-INSERT INTO auth.identities(id, user_id, provider_id, identity_data, provider, last_sign_in_at, created_at, updated_at)(
- SELECT
- uuid_generate_v4(),
- id,
- id,
- format('{"sub":"%s","email":"%s"}', id::text, email)::jsonb,
- 'email',
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP
- FROM
- auth.users);
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker/supabase/migration.1/013_users.sql b/03_source/mobile_old.del/docker/supabase/migration.1/013_users.sql
deleted file mode 100644
index 915d126..0000000
--- a/03_source/mobile_old.del/docker/supabase/migration.1/013_users.sql
+++ /dev/null
@@ -1,23 +0,0 @@
--- create test users
-BEGIN;
-INSERT INTO auth.users(instance_id, id, aud, ROLE, email, encrypted_password, email_confirmed_at, recovery_sent_at, last_sign_in_at, raw_app_meta_data, raw_user_meta_data, created_at, updated_at, confirmation_token, email_change, email_change_token_new, recovery_token)(
- SELECT
- '00000000-0000-0000-0000-000000000000',
- uuid_generate_v4(),
- 'authenticated',
- 'authenticated',
- 'user' ||(ROW_NUMBER() OVER ()) || '@example.com',
- crypt('Aa1234567', gen_salt('bf')),
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- '{"provider":"email","providers":["email"]}',
- '{}',
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- '',
- '',
- '',
- ''
- FROM generate_series(1, 5));
-COMMIT;
diff --git a/03_source/mobile_old.del/docker/supabase/migration.1/023_messages.sql b/03_source/mobile_old.del/docker/supabase/migration.1/023_messages.sql
deleted file mode 100644
index 01f8076..0000000
--- a/03_source/mobile_old.del/docker/supabase/migration.1/023_messages.sql
+++ /dev/null
@@ -1,36 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE messages ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read messages" ON public.messages
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write messages" ON "public"."messages" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update messages" ON "public"."messages" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete messages" ON "public"."messages" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO messages(content, sender_user_id, receiver_user_id)
- VALUES
- ('test message 1', 0 , 1),
- ('test message 2', 0 , 1),
- ('test message 3', 0 , 1),
- ('test message 4', 0 , 1),
- ('test message 5', 0 , 1),
- ('test message 6', 0 , 1),
- ('test message 7', 0 , 1),
- ('test message 8', 0 , 1),
- ('test message 9', 0 , 1),
- ('test message 10', 0 , 1);
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/00001_create_employees_table.sql b/03_source/mobile_old.del/docker/supabase/migrations/00001_create_employees_table.sql
deleted file mode 100644
index 15a8770..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/00001_create_employees_table.sql
+++ /dev/null
@@ -1,32 +0,0 @@
---
--- clear storage buckets
---
-BEGIN;
-TRUNCATE storage.buckets CASCADE;
-COMMIT;
-
-BEGIN;
-CREATE TABLE employees(
- id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
- name text,
- email text,
- created_at timestamptz DEFAULT now()
-);
-ALTER TABLE IF EXISTS public.employees
- ADD department text DEFAULT 'Hooli';
-COMMIT;
-
---
--- insert
-INSERT INTO public.employees(name, email)
- VALUES
- ('Erlich Bachman', 'erlich@hooli.com'),
- ('Richard Hendricks', 'richard@hooli.com'),
- ('Monica Hall', 'monica@hooli.com'),
- ('Nelson Bighead', 'nelson@hooli.com'),
- ('Gavin Belson', 'gavin@hooli.com'),
- ('Jared Dunn', 'jared@hooli.com'),
- ('Gilfoyle', 'gilfoyle@hooli.com'),
- ('Dinesh Chugtai', 'dinesh@hooli.com'),
- ('Carla Walton', 'carla@hooli.com'),
- ('Bertram Gilfoyle', 'bertram@hooli.com');
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/00002_insert_test_users.sql b/03_source/mobile_old.del/docker/supabase/migrations/00002_insert_test_users.sql
deleted file mode 100644
index 3438ac6..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/00002_insert_test_users.sql
+++ /dev/null
@@ -1,40 +0,0 @@
--- create test users
-BEGIN;
-INSERT INTO auth.users(instance_id, id, aud, ROLE, email, encrypted_password, email_confirmed_at, recovery_sent_at, last_sign_in_at, raw_app_meta_data, raw_user_meta_data, created_at, updated_at, confirmation_token, email_change, email_change_token_new, recovery_token)(
- SELECT
- '00000000-0000-0000-0000-000000000000',
- uuid_generate_v4(),
- 'authenticated',
- 'authenticated',
- 'user' ||(ROW_NUMBER() OVER ()) || '@example.com',
- crypt('Aa1234567', gen_salt('bf')),
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- '{"provider":"email","providers":["email"]}',
- '{}',
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- '',
- '',
- '',
- ''
- FROM generate_series(1, 10));
-COMMIT;
-
--- test user email identities
-BEGIN;
-INSERT INTO auth.identities(id, user_id, provider_id, identity_data, provider, last_sign_in_at, created_at, updated_at)(
- SELECT
- uuid_generate_v4(),
- id,
- id,
- format('{"sub":"%s","email":"%s"}', id::text, email)::jsonb,
- 'email',
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP,
- CURRENT_TIMESTAMP
- FROM
- auth.users);
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/00003_party_schema_dbml.sql b/03_source/mobile_old.del/docker/supabase/migrations/00003_party_schema_dbml.sql
deleted file mode 100644
index 6102072..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/00003_party_schema_dbml.sql
+++ /dev/null
@@ -1,333 +0,0 @@
--- SQL dump generated using DBML (dbml.dbdiagram.io)
--- Database: PostgreSQL
--- Generated at: 2024-09-23T10:53:56.703Z
-
-CREATE SCHEMA "fake_auth";
-
--- fake_auth.users part syntax removed.
-
-CREATE TABLE "message_status" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_rank" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_verified" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_other_tags" (
- "id" serial UNIQUE PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_spoken_language" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_career" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_education" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "notifications" (
- "id" serial PRIMARY KEY,
- "content" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "party_event_status" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "party_events" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "about_event" text NOT NULL DEFAULT '',
- "event_date" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "event_duration_min" integer NOT NULL DEFAULT 90,
- "price" integer NOT NULL DEFAULT 999,
- "currency" text NOT NULL DEFAULT 'HKD',
- "last_payment_time" TIMESTAMPTZ NOT NULL DEFAULT '2999-01-01',
- "address" text NOT NULL DEFAULT '',
- "image_urls" text[] DEFAULT '{}',
- "status" integer NOT NULL DEFAULT 0,
- "join_boy" integer NOT NULL DEFAULT 999,
- "join_girl" integer NOT NULL DEFAULT 999,
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "remarks" text NOT NULL DEFAULT '',
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "user_genders" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "profiles" (
- "id" uuid,
- "user_id" serial UNIQUE,
- "website" text NOT NULL DEFAULT '',
- "gender" integer NOT NULL DEFAULT 1,
- "bookmark_events" integer UNIQUE,
- "current_pos" point NOT NULL DEFAULT '(22.3961, 114.1092)',
- "avatar_urls" text[] DEFAULT '{}',
- "about_user" text NOT NULL DEFAULT '',
- "full_name" text NOT NULL DEFAULT '',
- "spoken_language" text[] DEFAULT '{}',
- "user_rank" text[] DEFAULT '{"NOT_VIP"}',
- "career" text[] DEFAULT '{}',
- "other_tags" text[] DEFAULT '{}',
- "verified" integer UNIQUE,
- "weight_kg" integer NOT NULL DEFAULT 100,
- "height_cm" integer NOT NULL DEFAULT 100,
- "education" text[],
- "last_seen" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "year_of_birth" integer DEFAULT 1970,
- "block_user_id" text[] NOT NULL DEFAULT '{}',
- "suspend_at" TIMESTAMPTZ DEFAULT '2999-01-01',
- "is_user_suspend" integer NOT NULL DEFAULT 0,
- "is_admin_suspend" integer NOT NULL DEFAULT 0,
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "remarks" text DEFAULT '',
- "meta" json NOT NULL DEFAULT ('{}'::json),
- PRIMARY KEY ("id", "user_id")
-);
-
-CREATE TABLE "user_read_notifications" (
- "user_id" integer,
- "notification_id" integer
-);
-
-CREATE TABLE "messages" (
- "id" serial PRIMARY KEY,
- "content" text NOT NULL DEFAULT '',
- "media_url" varchar(255),
- "sender_user_id" integer NOT NULL,
- "receiver_user_id" integer NOT NULL,
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "visit_user_profile_read_status" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "visit_user_profile" (
- "id" serial PRIMARY KEY,
- "visitor_user_id" integer NOT NULL,
- "visit_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "host_user_id" integer NOT NULL,
- "host_user_read" integer NOT NULL DEFAULT 1,
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json),
- "remarks" text NOT NULL DEFAULT ''
-);
-
-CREATE TABLE "party_event_order_status" (
- "id" serial PRIMARY KEY,
- "title" text NOT NULL DEFAULT '',
- "remarks" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "party_event_orders" (
- "id" serial PRIMARY KEY,
- "user_id" integer NOT NULL,
- "party_event_id" integer NOT NULL,
- "status" integer DEFAULT '0',
- "payment_time" TIMESTAMPTZ NOT NULL DEFAULT '2999-01-01',
- "last_payment_time" TIMESTAMPTZ NOT NULL DEFAULT '2999-01-01',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "remarks" text DEFAULT '',
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "contact_us_message" (
- "id" serial PRIMARY KEY,
- "content" text NOT NULL DEFAULT '',
- "attachments" text[] DEFAULT '{}',
- "read_status" integer NOT NULL DEFAULT 1,
- "from_user_id" integer NOT NULL,
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "remarks" text NOT NULL DEFAULT '',
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "report_user_reason" (
- "id" serial PRIMARY KEY,
- "content" text NOT NULL DEFAULT '',
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "remarks" text NOT NULL DEFAULT '',
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-CREATE TABLE "report_user" (
- "id" serial PRIMARY KEY,
- "content" text NOT NULL DEFAULT '',
- "attachments" text[] DEFAULT '{}',
- "reason" integer NOT NULL,
- "report_user_id" integer NOT NULL,
- "from_user_id" integer NOT NULL,
- "create_at" TIMESTAMPTZ NOT NULL DEFAULT (CURRENT_TIMESTAMP),
- "update_at" TIMESTAMPTZ NOT NULL DEFAULT (now()),
- "remarks" text NOT NULL DEFAULT '',
- "meta" json NOT NULL DEFAULT ('{}'::json)
-);
-
-COMMENT ON TABLE "message_status" IS 'message read/unread status';
-
-COMMENT ON TABLE "user_rank" IS 'store user vip status field';
-
-COMMENT ON TABLE "user_verified" IS 'store user verified field';
-
-COMMENT ON TABLE "user_other_tags" IS 'store user tags field';
-
-COMMENT ON TABLE "user_spoken_language" IS 'store user spoken language field';
-
-COMMENT ON TABLE "user_career" IS 'store user career field';
-
-COMMENT ON TABLE "user_education" IS 'store user education field';
-
-COMMENT ON TABLE "notifications" IS 'handle admin send notification to user';
-
-COMMENT ON TABLE "party_event_status" IS 'store party event status';
-
-COMMENT ON TABLE "party_events" IS 'store party events';
-
-COMMENT ON TABLE "user_genders" IS 'store user party event orders status';
-
-COMMENT ON TABLE "profiles" IS 'store user meta';
-
-COMMENT ON TABLE "user_read_notifications" IS 'Junction table store user and notification read.
-';
-
-COMMENT ON COLUMN "user_read_notifications"."user_id" IS 'user id';
-
-COMMENT ON COLUMN "user_read_notifications"."notification_id" IS 'notification id read';
-
-COMMENT ON TABLE "messages" IS 'store in-app chat';
-
-COMMENT ON TABLE "visit_user_profile_read_status" IS 'store visit status read by host';
-
-COMMENT ON TABLE "visit_user_profile" IS 'history list, store user profile visited by others, used in near-by page';
-
-COMMENT ON TABLE "party_event_order_status" IS 'store user party event orders status';
-
-COMMENT ON TABLE "party_event_orders" IS 'store user party event orders';
-
-COMMENT ON TABLE "contact_us_message" IS 'store user to admin messages';
-
-COMMENT ON TABLE "report_user_reason" IS 'store user to admin messages';
-
-COMMENT ON TABLE "report_user" IS 'store report user messages';
-
-ALTER TABLE "party_events" ADD FOREIGN KEY ("status") REFERENCES "party_event_status" ("id");
-
-ALTER TABLE "profiles" ADD FOREIGN KEY ("id") REFERENCES auth.users ("id");
-
-ALTER TABLE "profiles" ADD FOREIGN KEY ("gender") REFERENCES "user_genders" ("id");
-
-CREATE TABLE "party_events_profiles" (
- "party_events_id" serial,
- "profiles_bookmark_events" integer,
- PRIMARY KEY ("party_events_id", "profiles_bookmark_events")
-);
-
-ALTER TABLE "party_events_profiles" ADD FOREIGN KEY ("party_events_id") REFERENCES "party_events" ("id");
-
-ALTER TABLE "party_events_profiles" ADD FOREIGN KEY ("profiles_bookmark_events") REFERENCES "profiles" ("bookmark_events");
-
-
-ALTER TABLE "profiles" ADD FOREIGN KEY ("verified") REFERENCES "user_verified" ("id");
-
-ALTER TABLE "user_read_notifications" ADD FOREIGN KEY ("user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "user_read_notifications" ADD FOREIGN KEY ("notification_id") REFERENCES "notifications" ("id");
-
-ALTER TABLE "messages" ADD FOREIGN KEY ("sender_user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "messages" ADD FOREIGN KEY ("receiver_user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "visit_user_profile" ADD FOREIGN KEY ("visitor_user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "visit_user_profile" ADD FOREIGN KEY ("host_user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "visit_user_profile" ADD FOREIGN KEY ("host_user_read") REFERENCES "visit_user_profile_read_status" ("id");
-
-ALTER TABLE "party_event_orders" ADD FOREIGN KEY ("user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "party_event_orders" ADD FOREIGN KEY ("party_event_id") REFERENCES "party_events" ("id");
-
-ALTER TABLE "contact_us_message" ADD FOREIGN KEY ("read_status") REFERENCES "message_status" ("id");
-
-ALTER TABLE "contact_us_message" ADD FOREIGN KEY ("from_user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "report_user" ADD FOREIGN KEY ("reason") REFERENCES "report_user_reason" ("id");
-
-ALTER TABLE "report_user" ADD FOREIGN KEY ("report_user_id") REFERENCES "profiles" ("user_id");
-
-ALTER TABLE "report_user" ADD FOREIGN KEY ("from_user_id") REFERENCES "profiles" ("user_id");
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/00004_join_tables.sql b/03_source/mobile_old.del/docker/supabase/migrations/00004_join_tables.sql
deleted file mode 100644
index c40e712..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/00004_join_tables.sql
+++ /dev/null
@@ -1,76 +0,0 @@
---
--- REQXXX countries
---
--- https://supabase.com/docs/guides/database/joins-and-nesting?queryGroups=output-format&output-format=SQL
---
--- Create the table
-
-CREATE TABLE "countries" (
- "id" serial PRIMARY KEY,
- "name" text
-);
-
-CREATE TABLE "cities" (
- "id" serial PRIMARY KEY,
- "name" text,
- "country_id" int
-);
-
-ALTER TABLE "cities" ADD FOREIGN KEY ("country_id") REFERENCES "countries" ("id");
-
-insert into countries
- (id, name)
-values
- (1, 'United Kingdom'),
- (2, 'United States');
-
-insert into cities
- (name, country_id)
-values
- ('London', 1),
- ('Manchester', 1),
- ('Los Angeles', 2),
- ('New York', 2);
-
-
---------------------------------------
-
-CREATE TABLE students (
- id SERIAL PRIMARY KEY,
- name VARCHAR(50) NOT NULL
-);
-
-CREATE TABLE courses (
- id SERIAL PRIMARY KEY,
- name VARCHAR(50) NOT NULL
-);
-
-CREATE TABLE courses_students
- (
- course_id INTEGER REFERENCES students(id),
- student_id INTEGER REFERENCES courses(id)
- );
-
--- CONSTRAINT
--- courses_students_pk PRIMARY KEY(course_id,student_id)
-
-INSERT INTO students(name) VALUES ('virat'),('john');
-INSERT INTO courses(name) VALUES ('math'),('science');
-INSERT INTO courses_students (student_id,course_id) VALUES (1,1),(1,2);
-
-SELECT s.name as s_name , string_agg(c.name, ',') as c_name FROM courses_students cs
- INNER JOIN courses c ON c.id = cs.course_id
- INNER JOIN students s ON s.id = cs.student_id
- group by s_name;
-
-
-----
-
-
-CREATE TABLE test_pos1 (
- id SERIAL PRIMARY KEY,
- current_pos point NOT NULL DEFAULT ('(22.3964, 114.1095)')
-);
-
-
-----
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/00005_count_tables.sql b/03_source/mobile_old.del/docker/supabase/migrations/00005_count_tables.sql
deleted file mode 100644
index 5851c04..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/00005_count_tables.sql
+++ /dev/null
@@ -1,33 +0,0 @@
---
--- REQXXX countries
---
--- https://supabase.com/docs/guides/database/joins-and-nesting?queryGroups=output-format&output-format=SQL
---
--- Create the table
-
-DROP TABLE IF EXISTS "test_table";
-
-CREATE TABLE "test_table" (
- "id" serial PRIMARY KEY,
- "field_1" int,
- "field_2" int,
- "field_3" int,
- "gender" int
-);
-
-insert into test_table (field_1, field_2, field_3, gender) values
- (1, 1, 1, 1),
- (1, 1, 1, 1),
- (1, 1, 1, 1),
- (1, 1, 1, 1),
- (1, 2, 1, 1),
- (1, 3, 1, 2),
- (1, 2, 1, 2),
- (1, 3, 1, 2),
- (1, 1, 1, 2);
-
-SELECT field_1, field_2,
- COUNT(CASE WHEN gender = 1 THEN 1 END) AS male_count,
- COUNT(CASE WHEN gender = 2 THEN 1 END) AS female_count
-FROM test_table
-GROUP BY field_1, field_2
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/00019_party_event_status.sql b/03_source/mobile_old.del/docker/supabase/migrations/00019_party_event_status.sql
deleted file mode 100644
index 4e3edfc..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/00019_party_event_status.sql
+++ /dev/null
@@ -1,28 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE party_event_status ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read party_event_status" ON public.party_event_status
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write party_event_status" ON "public"."party_event_status" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update party_event_status" ON "public"."party_event_status" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete party_event_status" ON "public"."party_event_status" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO party_event_status(id, title)
- VALUES
- (0,'ONGOING'),
- (1,'CANCELLED');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01050_user_genders.sql b/03_source/mobile_old.del/docker/supabase/migrations/01050_user_genders.sql
deleted file mode 100644
index 019029b..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01050_user_genders.sql
+++ /dev/null
@@ -1,28 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE user_genders ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read user_genders" ON public.user_genders
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write user_genders" ON "public"."user_genders" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update user_genders" ON "public"."user_genders" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete user_genders" ON "public"."user_genders" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO user_genders(title)
- VALUES
- ('MALE'),
- ('FEMALE');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01051_user_other_tags.sql b/03_source/mobile_old.del/docker/supabase/migrations/01051_user_other_tags.sql
deleted file mode 100644
index 99ea225..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01051_user_other_tags.sql
+++ /dev/null
@@ -1,31 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
---
-ALTER TABLE user_other_tags ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read user_other_tags" ON public.user_other_tags
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write user_other_tags" ON "public"."user_other_tags" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update user_other_tags" ON "public"."user_other_tags" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete user_other_tags" ON "public"."user_other_tags" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO user_other_tags(title)
- VALUES
- ('USER_OTHER_TAG_1'),
- ('USER_OTHER_TAG_2'),
- ('USER_OTHER_TAG_3'),
- ('USER_OTHER_TAG_4'),
- ('USER_OTHER_TAG_5'),
- ('USER_OTHER_TAG_6');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01052_user_rank.sql b/03_source/mobile_old.del/docker/supabase/migrations/01052_user_rank.sql
deleted file mode 100644
index c0e1e85..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01052_user_rank.sql
+++ /dev/null
@@ -1,28 +0,0 @@
--- REQ0041/home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE user_rank ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read user_rank" ON public.user_rank
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write user_rank" ON "public"."user_rank" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update user_rank" ON "public"."user_rank" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete user_rank" ON "public"."user_rank" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO user_rank(title)
- VALUES
- ('NON_VIP'),
- ('VIP');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01053_user_career.sql b/03_source/mobile_old.del/docker/supabase/migrations/01053_user_career.sql
deleted file mode 100644
index f78ad52..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01053_user_career.sql
+++ /dev/null
@@ -1,36 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE user_career ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read user_career" ON public.user_career
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write user_career" ON "public"."user_career" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update user_career" ON "public"."user_career" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete user_career" ON "public"."user_career" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO user_career(title)
- VALUES
- ('MARKETING'),
- ('FINANCE'),
- ('ENGINEERING'),
- ('SALES'),
- ('HUMAN RESOURCE'),
- ('OPERATIONS'),
- ('IT'),
- ('CONSULTING'),
- ('DATA SCIENCE'),
- ('PRODUCT DESIGN');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01054_user_education.sql b/03_source/mobile_old.del/docker/supabase/migrations/01054_user_education.sql
deleted file mode 100644
index 9bd2ccc..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01054_user_education.sql
+++ /dev/null
@@ -1,36 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE user_education ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read user_education" ON public.user_education
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write user_education" ON "public"."user_education" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update user_education" ON "public"."user_education" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete user_education" ON "public"."user_education" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO user_education(title)
- VALUES
- ('ASSOCIATE DEGREE'),
- ('BACHELOR DEGREE'),
- ('MASTER DEGREE'),
- ('DOCTORATE DEGREE'),
- ('PHD'),
- ('DIPLOMA'),
- ('CERTIFICATE'),
- ('PROFESSIONAL LICENCE'),
- ('HIGH SCHOOL DIPLOMA'),
- ('GCE A-LEVELS');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01055_user_verified.sql b/03_source/mobile_old.del/docker/supabase/migrations/01055_user_verified.sql
deleted file mode 100644
index f8d96df..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01055_user_verified.sql
+++ /dev/null
@@ -1,28 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE user_verified ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read user_verified" ON public.user_verified
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write user_verified" ON "public"."user_verified" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update user_verified" ON "public"."user_verified" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete user_verified" ON "public"."user_verified" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO user_verified(title)
- VALUES
- ('NOT_VERIFIED'),
- ('VERIFIED');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01056_user_spoken_language.sql b/03_source/mobile_old.del/docker/supabase/migrations/01056_user_spoken_language.sql
deleted file mode 100644
index 80910ff..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01056_user_spoken_language.sql
+++ /dev/null
@@ -1,29 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE user_spoken_language ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read user_spoken_language" ON public.user_spoken_language
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write user_spoken_language" ON "public"."user_spoken_language" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update user_spoken_language" ON "public"."user_spoken_language" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete user_spoken_language" ON "public"."user_spoken_language" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO user_spoken_language(title)
- VALUES
- ('ENGLISH'),
- ('CHINESE'),
- ('MADARINE');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01060_setup_profile_table.sql b/03_source/mobile_old.del/docker/supabase/migrations/01060_setup_profile_table.sql
deleted file mode 100644
index a42c2ea..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01060_setup_profile_table.sql
+++ /dev/null
@@ -1,59 +0,0 @@
---
--- original from repository
---
--- BEGIN;
--- CREATE TABLE profiles(
--- id uuid REFERENCES auth.users NOT NULL,
--- updated_at timestamp with time zone,
--- username text UNIQUE,
--- full_name text,
--- avatar_url text,
--- website text,
--- PRIMARY KEY (id),
--- UNIQUE (username),
--- CONSTRAINT username_length CHECK (char_length(username) >= 3)
--- );
--- COMMIT;
-
--- Set up Row Level Security (RLS)
--- See https://supabase.com/docs/guides/auth/row-level-security for more details.
-ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
-
-CREATE POLICY "Public profiles are viewable by the owner." ON profiles
- FOR SELECT
- USING (TRUE);
-
-CREATE POLICY "Users can insert their own profile." ON profiles
- FOR INSERT
- WITH CHECK (auth.uid() = id);
-
-CREATE POLICY "Users can update own profile." ON profiles
- FOR UPDATE
- USING (auth.uid() = id);
-
--- Set up Realtime
-BEGIN;
-DROP publication IF EXISTS supabase_realtime;
-CREATE publication supabase_realtime;
-COMMIT;
-
-ALTER publication supabase_realtime
- ADD TABLE profiles;
-
--- Set up Storage
-BEGIN;
-INSERT INTO storage.buckets(id, name)
- VALUES ('avatars', 'avatars');
-
-CREATE POLICY "Avatar images are publicly accessible." ON storage.objects
- FOR SELECT
- USING (bucket_id = 'avatars');
-
-CREATE POLICY "Anyone can upload an avatar." ON storage.objects
- FOR INSERT
- WITH CHECK (bucket_id = 'avatars');
-
-CREATE POLICY "Anyone can update an avatar." ON storage.objects
- FOR UPDATE
- USING (bucket_id = 'avatars');
-COMMIT;
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01070_notifications.sql b/03_source/mobile_old.del/docker/supabase/migrations/01070_notifications.sql
deleted file mode 100644
index 718b5b5..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01070_notifications.sql
+++ /dev/null
@@ -1,29 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE notifications ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read notifications" ON public.notifications
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write notifications" ON "public"."notifications" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update notifications" ON "public"."notifications" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete notifications" ON "public"."notifications" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO notifications(content)
- VALUES
- ('Notification 1'),
- ('Notification 2'),
- ('Notification 3');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01071_update_message_table.sql b/03_source/mobile_old.del/docker/supabase/migrations/01071_update_message_table.sql
deleted file mode 100644
index de7fc1d..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01071_update_message_table.sql
+++ /dev/null
@@ -1,36 +0,0 @@
--- REQ0050/chat-room-list
---
-BEGIN;
-
--- -- Turn on security
-ALTER TABLE public.messages ENABLE ROW LEVEL SECURITY;
---
-ALTER publication supabase_realtime
- ADD TABLE public.messages;
---
-CREATE POLICY "public can read public.messages" ON public.messages
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write public.messages" ON public.messages AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update public.messages" ON public.messages AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete public.messages" ON public.messages AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
--- TODO: fix me
-
--- INSERT INTO public.messages(id, Content, created_at, media_url, Status, sender_user_id, receiver_user_id) (
--- SELECT
--- ROW_NUMBER() OVER ()::integer, 'hello message', CURRENT_TIMESTAMP, '/google.png', 'sent',
--- ( SELECT id FROM profiles WHERE email = 'user1@example.com'),
--- ( SELECT id FROM profiles WHERE email = 'user2@example.com')
--- FROM generate_series(1, 5)
--- );
-
--- 'user' ||(ROW_NUMBER() OVER ()) || '@example.com'
-
-COMMIT;
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01080_message_status.sql b/03_source/mobile_old.del/docker/supabase/migrations/01080_message_status.sql
deleted file mode 100644
index 82fbd56..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01080_message_status.sql
+++ /dev/null
@@ -1,28 +0,0 @@
--- REQ0041/home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE message_status ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read message_status" ON public.message_status
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write message_status" ON "public"."message_status" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update message_status" ON "public"."message_status" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete message_status" ON "public"."message_status" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO message_status(title)
- VALUES
- ('UNREAD'),
- ('READ');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01081_visit_user_profile_read_status.sql b/03_source/mobile_old.del/docker/supabase/migrations/01081_visit_user_profile_read_status.sql
deleted file mode 100644
index 272e1ff..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01081_visit_user_profile_read_status.sql
+++ /dev/null
@@ -1,28 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE visit_user_profile_read_status ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read visit_user_profile_read_status" ON public.visit_user_profile_read_status
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write visit_user_profile_read_status" ON "public"."visit_user_profile_read_status" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update visit_user_profile_read_status" ON "public"."visit_user_profile_read_status" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete visit_user_profile_read_status" ON "public"."visit_user_profile_read_status" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-INSERT INTO visit_user_profile_read_status(title)
- VALUES
- ('UNREAD'),
- ('READ');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01085_visit_user_profile.sql b/03_source/mobile_old.del/docker/supabase/migrations/01085_visit_user_profile.sql
deleted file mode 100644
index 4ec2a8a..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01085_visit_user_profile.sql
+++ /dev/null
@@ -1,30 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE visit_user_profile ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read visit_user_profile" ON public.visit_user_profile
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write visit_user_profile" ON "public"."visit_user_profile" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update visit_user_profile" ON "public"."visit_user_profile" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete visit_user_profile" ON "public"."visit_user_profile" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-
--- TODO: insert sample records
--- INSERT INTO visit_user_profile(title)
--- VALUES
--- ('UNREAD'),
--- ('READ');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01090_party_event_orders.sql b/03_source/mobile_old.del/docker/supabase/migrations/01090_party_event_orders.sql
deleted file mode 100644
index 4f4ab7c..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01090_party_event_orders.sql
+++ /dev/null
@@ -1,29 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
---
-ALTER TABLE party_event_orders ENABLE ROW LEVEL SECURITY;
-
-CREATE POLICY "public can read party_event_orders" ON "public"."party_event_orders"
- to public
- USING (TRUE);
-CREATE POLICY "public can write party_event_orders" ON "public"."party_event_orders" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update party_event_orders" ON "public"."party_event_orders" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete party_event_orders" ON "public"."party_event_orders" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-
--- TODO: insert sample records
--- INSERT INTO visit_user_profile(title)
--- VALUES
--- ('UNREAD'),
--- ('READ');
-
---
-COMMIT;
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01091_party_event_order_status.sql b/03_source/mobile_old.del/docker/supabase/migrations/01091_party_event_order_status.sql
deleted file mode 100644
index 56031ef..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01091_party_event_order_status.sql
+++ /dev/null
@@ -1,13 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
-INSERT INTO party_event_order_status(title)
- VALUES
- ('NOT_PAID'),
- ('PAID');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01099_party_events.sql b/03_source/mobile_old.del/docker/supabase/migrations/01099_party_events.sql
deleted file mode 100644
index b8d99de..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01099_party_events.sql
+++ /dev/null
@@ -1,20 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-
-ALTER TABLE party_events ENABLE ROW LEVEL SECURITY;
-
-CREATE POLICY "public can read party_events" ON public.party_events
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write party_events" ON "public"."party_events" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update party_events" ON "public"."party_events" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete party_events" ON "public"."party_events" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
-
-COMMIT;
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01100_contact_us_message.sql b/03_source/mobile_old.del/docker/supabase/migrations/01100_contact_us_message.sql
deleted file mode 100644
index 6b09cb1..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01100_contact_us_message.sql
+++ /dev/null
@@ -1,20 +0,0 @@
---
-BEGIN;
-
---
-ALTER TABLE contact_us_message ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read contact_us_message" ON public.contact_us_message
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write contact_us_message" ON "public"."contact_us_message" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update contact_us_message" ON "public"."contact_us_message" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete contact_us_message" ON "public"."contact_us_message" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-
-COMMIT;
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01110_report_user_reason.sql b/03_source/mobile_old.del/docker/supabase/migrations/01110_report_user_reason.sql
deleted file mode 100644
index 05b0b50..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01110_report_user_reason.sql
+++ /dev/null
@@ -1,33 +0,0 @@
---
-BEGIN;
-
---
-ALTER TABLE report_user_reason ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read report_user_reason" ON public.report_user_reason
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write report_user_reason" ON "public"."report_user_reason" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update report_user_reason" ON "public"."report_user_reason" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete report_user_reason" ON "public"."report_user_reason" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-
-INSERT INTO report_user_reason(content)
- VALUES
- ('Advertising pronnotion'),
- ('underage'),
- ('Suspected fraud'),
- ('Malicous words'),
- ('Harassment'),
- ('Fake photos'),
- ('False information'),
- ('Pornography');
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01120_report_user.sql b/03_source/mobile_old.del/docker/supabase/migrations/01120_report_user.sql
deleted file mode 100644
index f7d481b..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01120_report_user.sql
+++ /dev/null
@@ -1,29 +0,0 @@
---
-BEGIN;
-
---
-ALTER TABLE report_user ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read report_user" ON public.report_user
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write report_user" ON "public"."report_user" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update report_user" ON "public"."report_user" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete report_user" ON "public"."report_user" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-
--- TODO: insert sample records
--- INSERT INTO visit_user_profile(title)
--- VALUES
--- ('UNREAD'),
--- ('READ');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/01130_messages.sql b/03_source/mobile_old.del/docker/supabase/migrations/01130_messages.sql
deleted file mode 100644
index 0f278e3..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/01130_messages.sql
+++ /dev/null
@@ -1,29 +0,0 @@
---
-BEGIN;
-
---
-ALTER TABLE messages ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read messages" ON public.messages
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write messages" ON "public"."messages" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update messages" ON "public"."messages" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete messages" ON "public"."messages" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
---
-
--- TODO: insert sample records
--- INSERT INTO visit_user_profile(title)
--- VALUES
--- ('UNREAD'),
--- ('READ');
-
---
-COMMIT;
-
---
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/09050_country.sql.disabled b/03_source/mobile_old.del/docker/supabase/migrations/09050_country.sql.disabled
deleted file mode 100644
index 5606129..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/09050_country.sql.disabled
+++ /dev/null
@@ -1,51 +0,0 @@
---
--- REQXXX countries
---
--- https://supabase.com/docs/guides/getting-started/quickstarts/reactjs
---
--- Create the table
-BEGIN;
-DROP TABLE IF EXISTS "countries";
-CREATE TABLE countries(
- id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
- name text NOT NULL
-);
-
-ALTER TABLE countries ENABLE ROW LEVEL SECURITY;
-CREATE POLICY "public can read countries" ON public.countries
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write countries" ON "public"."countries" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update countries" ON "public"."countries" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete countries" ON "public"."countries" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
-COMMIT;
-
--- Insert some sample data into the table
-INSERT INTO countries(name)
- VALUES
- ('Canada'),
- ('United States'),
- ('Mexico'),
- ('France'),
- ('Germany'),
- ('Japan'),
- ('United Kingdom'),
- ('China'),
- ('India'),
- ('Brazil'),
- ('Russia'),
- ('Italy'),
- ('South Korea'),
- ('Turkey'),
- ('Australia'),
- ('Spain'),
- ('Indonesia'),
- ('Poland'),
- ('Thailand'),
- ('Vietnam');
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/09060_realtime_helloworld.sql b/03_source/mobile_old.del/docker/supabase/migrations/09060_realtime_helloworld.sql
deleted file mode 100644
index 2acd4c4..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/09060_realtime_helloworld.sql
+++ /dev/null
@@ -1,37 +0,0 @@
---
--- REQXXX realtime-helloworld
---
--- https://supabase.com/docs/guides/realtime
---
--- with a column to store tasks.
-BEGIN;
-DROP TABLE IF EXISTS "todos_realtime";
-CREATE TABLE todos_realtime(
- id serial PRIMARY KEY,
- task text
-);
--- Add some data
-INSERT INTO todos_realtime(task)
- VALUES ('Create tables'),
-('Enable security'),
-('Add data'),
-('Fetch data from the API');
-ALTER publication supabase_realtime
- ADD TABLE todos_realtime;
--- -- Turn on security
-ALTER TABLE "todos_realtime" ENABLE ROW LEVEL SECURITY;
--- Allow anonymous access
-CREATE POLICY "public can read todos_realtime" ON public.todos_realtime
- FOR SELECT TO anon
- USING (TRUE);
-CREATE POLICY "public can write todos_realtime" ON "public"."todos_realtime" AS PERMISSIVE
- FOR INSERT TO public
- WITH CHECK (TRUE);
-CREATE POLICY "public can update todos_realtime" ON "public"."todos_realtime" AS PERMISSIVE
- FOR UPDATE TO public
- USING (TRUE);
-CREATE POLICY "public can delete todos_realtime" ON "public"."todos_realtime" AS PERMISSIVE
- FOR DELETE TO public
- USING (TRUE);
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/09070_todo.sql b/03_source/mobile_old.del/docker/supabase/migrations/09070_todo.sql
deleted file mode 100644
index 4573458..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/09070_todo.sql
+++ /dev/null
@@ -1,29 +0,0 @@
--- Create a table called "todos"
--- with a column to store tasks.
-BEGIN;
-DROP TABLE IF EXISTS "todos";
-CREATE TABLE todos(
- id serial PRIMARY KEY,
- task text
-);
-
--- Turn on security
-ALTER TABLE "todos" ENABLE ROW LEVEL SECURITY;
-
--- Allow anonymous access
-CREATE POLICY "Allow public access" ON todos
- FOR SELECT TO anon
- USING (TRUE);
-
--- Turn on security
-ALTER TABLE "todos" ENABLE ROW LEVEL SECURITY;
-
--- Add some data
-INSERT INTO todos(task)
- VALUES
- ('Create tables'),
- ('Enable security'),
- ('Add data'),
- ('Fetch data from the API');
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/09080_store_helloworld.sql b/03_source/mobile_old.del/docker/supabase/migrations/09080_store_helloworld.sql
deleted file mode 100644
index 3a0f112..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/09080_store_helloworld.sql
+++ /dev/null
@@ -1,19 +0,0 @@
--- 008_store_helloworld.sql
-BEGIN;
---
-INSERT INTO storage.buckets(id, name)
- VALUES ('store_helloworld', 'store_helloworld');
---
---
-CREATE POLICY "store_helloworld Publicly accessible." ON storage.objects
- FOR SELECT
- USING (bucket_id = 'store_helloworld');
-CREATE POLICY "store_helloworld Anyone can upload" ON storage.objects
- FOR INSERT
- WITH CHECK (bucket_id = 'store_helloworld');
-CREATE POLICY "store_helloworld Anyone can update" ON storage.objects
- FOR UPDATE
- USING (bucket_id = 'store_helloworld');
---
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/09090_restaurant.sql b/03_source/mobile_old.del/docker/supabase/migrations/09090_restaurant.sql
deleted file mode 100644
index a169d56..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/09090_restaurant.sql
+++ /dev/null
@@ -1,7 +0,0 @@
--- empty
-BEGIN;
-
---
-
-COMMIT;
-
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/80000_view_party_event_summaries.sql b/03_source/mobile_old.del/docker/supabase/migrations/80000_view_party_event_summaries.sql
deleted file mode 100644
index 919f51d..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/80000_view_party_event_summaries.sql
+++ /dev/null
@@ -1,16 +0,0 @@
---
---
-
-create view view_party_event_summaries as
- select
- pe.*,
- COUNT(CASE WHEN p.gender = 1 THEN 1 END) AS male_count,
- COUNT(CASE WHEN gender = 2 THEN 1 END) AS female_count
- from
- party_events as pe
- left join
- party_event_orders as peo on peo.party_event_id = pe.id
- left join
- profiles as p on p.user_id = peo.user_id
- group by
- pe.id;
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/80001_view_party_event_participants.sql b/03_source/mobile_old.del/docker/supabase/migrations/80001_view_party_event_participants.sql
deleted file mode 100644
index 2d1978f..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/80001_view_party_event_participants.sql
+++ /dev/null
@@ -1,23 +0,0 @@
--- REQ0042/event-detail
--- list Participants by party_event id
---
-
-create view view_party_event_participants as
- select
- pe.id as pe_id,
- pe.title,
- p.full_name,
- p.avatar_urls,
- p.user_id,
- p.gender,
- p.height_cm,
- p.weight_kg
- from
- party_event_orders as peo
- left join
- party_events as pe on peo.party_event_id = pe.id
- left join
- profiles as p on p.user_id = peo.user_id
- order by
- pe.id desc
-
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/80004_view_party_event_orders.sql b/03_source/mobile_old.del/docker/supabase/migrations/80004_view_party_event_orders.sql
deleted file mode 100644
index 58990af..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/80004_view_party_event_orders.sql
+++ /dev/null
@@ -1,21 +0,0 @@
--- REQ0047/order-page
--- list party event orders with party event title
---
-
-create view view_party_event_orders as
- select
- peo.id,
- peo.user_id,
- peo.party_event_id,
- peo.status,
- peo.payment_time,
- peo.create_at,
- peo.update_at,
- peo.remarks,
- peo.meta,
- peo.last_payment_time,
- pe.title, pe.event_date, pe.event_duration_min
- from
- party_event_orders peo
- join party_events pe on peo.party_event_id = pe.id
- order by peo.id desc
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/80005_view_party_event_count_participants.sql b/03_source/mobile_old.del/docker/supabase/migrations/80005_view_party_event_count_participants.sql
deleted file mode 100644
index 4245b70..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/80005_view_party_event_count_participants.sql
+++ /dev/null
@@ -1,11 +0,0 @@
--- REQ0047/order-page
--- count Participants by party_event id
---
-
-create view view_party_event_count_participants as
- select
- party_event_id, count(id)
- from
- party_event_orders
- group by
- party_event_id
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/80006_view_party_event_orders_summary.sql b/03_source/mobile_old.del/docker/supabase/migrations/80006_view_party_event_orders_summary.sql
deleted file mode 100644
index 1777b48..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/80006_view_party_event_orders_summary.sql
+++ /dev/null
@@ -1,23 +0,0 @@
--- REQ0047/order-page
--- list party event orders with party event title
---
-
-create view view_party_event_orders_summary as
- select
- peo.id,
- peo.user_id,
- peo.party_event_id,
- peo.status,
- peo.payment_time,
- peo.create_at,
- peo.update_at,
- peo.remarks,
- peo.meta,
- peo.last_payment_time,
- pe.title, pe.event_date, pe.event_duration_min, pe.image_urls,
- v_pe.count as participant_count
- from
- party_event_orders peo
- join party_events pe on peo.party_event_id = pe.id
- join view_party_event_count_participants v_pe on v_pe.party_event_id = pe.id
- order by peo.id desc
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/91000_insert_profile.sql b/03_source/mobile_old.del/docker/supabase/migrations/91000_insert_profile.sql
deleted file mode 100644
index f6035f7..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/91000_insert_profile.sql
+++ /dev/null
@@ -1,73 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
---
-INSERT INTO profiles(id, gender, full_name, other_tags, career, spoken_language, avatar_urls, current_pos, about_user, education)
-VALUES
- (( SELECT id FROM auth.users WHERE email = 'user1@example.com'), 1, 'Albert',
- '{"fishing","basketball","piano"}'::text[],
- '{"teacher"}'::text[],
- '{"chinese","english"}'::text[],
- '{"https://images.unsplash.com/photo-1500648767791-00dcc994a43e"}'::text[],
- POINT(
- (SELECT 180 * (random() - 0.5)),
- (SELECT 90 * (random() - 0.5))
- ),
- 'Hi, I am Albert. Nice to meet you', '{Degee of Computer Science}'::text[]
- ),
- (( SELECT id FROM auth.users WHERE email = 'user2@example.com'), 1, 'John', '{"fishing","piano"}'::text[], '{"student"}'::text[], '{"spanish","english"}'::text[], '{"https://images.unsplash.com/photo-1500648767791-00dcc994a43e"}'::text[], POINT(
- (SELECT 180 * (random() - 0.5)),
- (SELECT 90 * (random() - 0.5))
- ), 'Hi, I am John. Nice to meet you', '{Degee of Software Engineering}'::text[]),
- (( SELECT id FROM auth.users WHERE email = 'user3@example.com'), 1, 'Steven', '{"basketball","piano"}'::text[], '{"teacher"}'::text[], '{"english"}'::text[], '{"https://images.unsplash.com/photo-1494790108377-be9c29b29330"}'::text[], POINT(
- (SELECT 180 * (random() - 0.5)),
- (SELECT 90 * (random() - 0.5))
- ), 'Hi, I am Steven. Nice to meet you', '{Degee of Electrical Engineering}'::text[]),
- (( SELECT id FROM auth.users WHERE email = 'user4@example.com'), 1, 'Ryan', '{"piano"}'::text[], '{"student"}'::text[], '{"spanish","english"}'::text[], '{"https://images.unsplash.com/photo-1500648767791-00dcc994a43e"}'::text[], POINT(
- (SELECT 180 * (random() - 0.5)),
- (SELECT 90 * (random() - 0.5))
- ), 'Hi, I am Ryan. Nice to meet you', '{Degee of Computer Information System}'::text[]),
- (( SELECT id FROM auth.users WHERE email = 'user5@example.com'), 1, 'Sam', '{"fishing"}'::text[], '{"engineer"}'::text[], '{"english"}'::text[], '{"https://images.unsplash.com/photo-1494790108377-be9c29b29330"}'::text[], POINT(
- (SELECT 180 * (random() - 0.5)),
- (SELECT 90 * (random() - 0.5))
- ), 'Hi, I am Sam. Nice to meet you', '{Degee of Data Science}'::text[]),
- (( SELECT id FROM auth.users WHERE email = 'user6@example.com'), 2, 'Mary', '{"basketball"}'::text[], '{"teacher"}'::text[], '{"english","french"}'::text[], '{"https://images.unsplash.com/photo-1500648767791-00dcc994a43e"}'::text[], POINT(
- (SELECT 180 * (random() - 0.5)),
- (SELECT 90 * (random() - 0.5))
- ), 'Hi, I am Mary. Nice to meet you', '{Degee of Economics}'::text[]),
- (( SELECT id FROM auth.users WHERE email = 'user7@example.com'), 2, 'Kitty', '{"piano"}'::text[], '{"student"}'::text[], '{"chinese","english"}'::text[], '{"https://images.unsplash.com/photo-1494790108377-be9c29b29330"}'::text[], POINT(
- (SELECT 180 * (random() - 0.5)),
- (SELECT 90 * (random() - 0.5))
- ), 'Hi, I am Kitty. Nice to meet you', '{Degee of Computer Networks}'::text[]),
- (( SELECT id FROM auth.users WHERE email = 'user8@example.com'), 2, 'April', '{"fishing","piano"}'::text[], '{"engineer"}'::text[], '{"english","spanish"}'::text[], '{"https://images.unsplash.com/photo-1500648767791-00dcc994a43e"}'::text[], POINT(
- (SELECT 180 * (random() - 0.5)),
- (SELECT 90 * (random() - 0.5))
- ), 'Hi, I am April. Nice to meet you', '{Degee of Computer Systems}'::text[]),
- (( SELECT id FROM auth.users WHERE email = 'user9@example.com'), 2, 'Catherine', '{"basketball","piano"}'::text[], '{"teacher"}'::text[], '{"english","french"}'::text[], '{"https://images.unsplash.com/photo-1494790108377-be9c29b29330"}'::text[], POINT(
- (SELECT 180 * (random() - 0.5)),
- (SELECT 90 * (random() - 0.5))
- ), 'Hi, I am Catherine. Nice to meet you', '{Degee of Business Management}'::text[]),
- (( SELECT id FROM auth.users WHERE email = 'user10@example.com'), 2, 'Betty', '{"fishing","basketball"}'::text[], '{"student"}'::text[], '{"english","spanish"}'::text[], '{"https://images.unsplash.com/photo-1500648767791-00dcc994a43e"}'::text[], POINT(
- (SELECT 180 * (random() - 0.5)),
- (SELECT 90 * (random() - 0.5))
- ), 'Hi, I am Betty. Nice to meet you', '{Degee of Electrical Engineering}'::text[])
- ;
-
--- INSERT INTO profiles(id, gender, full_name) VALUES (( SELECT id FROM auth.users WHERE email = 'user2@example.com'), 1, 'John');
--- INSERT INTO profiles(id, gender, full_name) VALUES (( SELECT id FROM auth.users WHERE email = 'user3@example.com'), 1, 'Steven');
--- INSERT INTO profiles(id, gender, full_name) VALUES (( SELECT id FROM auth.users WHERE email = 'user4@example.com'), 1, 'Ryan');
--- INSERT INTO profiles(id, gender, full_name) VALUES (( SELECT id FROM auth.users WHERE email = 'user5@example.com'), 1, 'Sam');
-
--- INSERT INTO profiles(id, gender, full_name) VALUES (( SELECT id FROM auth.users WHERE email = 'user6@example.com'), 2, 'Mary');
--- INSERT INTO profiles(id, gender, full_name) VALUES (( SELECT id FROM auth.users WHERE email = 'user7@example.com'), 2, 'Kitty');
--- INSERT INTO profiles(id, gender, full_name) VALUES (( SELECT id FROM auth.users WHERE email = 'user8@example.com'), 2, 'April');
--- INSERT INTO profiles(id, gender, full_name) VALUES (( SELECT id FROM auth.users WHERE email = 'user9@example.com'), 2, 'Catherine');
--- INSERT INTO profiles(id, gender, full_name) VALUES (( SELECT id FROM auth.users WHERE email = 'user10@example.com'), 2, 'Betty');
---
-COMMIT;
-
----
-
-SELECT * FROM profiles WHERE 'piano'=ANY(other_tags)
-
-
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/92000_insert_party_events.sql b/03_source/mobile_old.del/docker/supabase/migrations/92000_insert_party_events.sql
deleted file mode 100644
index 403445a..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/92000_insert_party_events.sql
+++ /dev/null
@@ -1,38 +0,0 @@
--- REQ0041-home_discover_event_tab
--- https://plus.unsplash.com/premium_photo-1683121126477-17ef068309bc
-BEGIN;
---
-INSERT INTO party_events(id, title, remarks, address, price, image_urls)
- VALUES
- (1, 'event 1, pe1 Rencontres Speed Friending ', 'party event 1', '11 Place de la R publique, 75003 Paris', 100,
- '{https://plus.unsplash.com/premium_photo-1683121126477-17ef068309bc}'::text[]),
- (2, 'pe2 Soir e Cin ma: Les 400 Coups', 'party event 2', '2 Rue de la Huchette, 75005 Paris',200,
- '{https://plus.unsplash.com/premium_photo-1683121126477-17ef068309bc}'::text[]),
- (3, 'pe3 Speed Friending Amoureux ', 'party event 3', '11 Rue des Petits Champs, 75001 Paris',300,
- '{https://plus.unsplash.com/premium_photo-1683121126477-17ef068309bc}'::text[]),
- (4, 'La Nuit des Jeux de Soci t 2','party event 4', '21 Rue de la Grange aux Belles, 75010 Paris',400,
- '{https://plus.unsplash.com/premium_photo-1683121126477-17ef068309bc}'::text[]),
- (5, 'event 5, F tivit s de l Amour','test no people join party', '56 Rue de Rivoli, 75004 Paris',500,
- '{https://plus.unsplash.com/premium_photo-1683121126477-17ef068309bc}'::text[])
- ;
---
-COMMIT;
-
---
-
--- SELECT
--- pe.id AS party_event_id,
--- pe.title AS party_event_title,
--- po.id AS party_event_order_id,
--- po.status AS party_event_order_status,
--- po.payment_time AS party_event_order_payment_time,
--- p.id AS profile_id,
--- p.full_name AS profile_full_name,
--- p.gender AS profile_gender
--- FROM
--- party_events AS pe
--- LEFT JOIN
--- party_event_orders AS po ON pe.id = po.party_event_id
--- LEFT JOIN
--- profiles AS p ON po.user_id = p.user_id;
-
\ No newline at end of file
diff --git a/03_source/mobile_old.del/docker/supabase/migrations/97000_insert_party_event_orders.sql b/03_source/mobile_old.del/docker/supabase/migrations/97000_insert_party_event_orders.sql
deleted file mode 100644
index ec89b15..0000000
--- a/03_source/mobile_old.del/docker/supabase/migrations/97000_insert_party_event_orders.sql
+++ /dev/null
@@ -1,27 +0,0 @@
--- REQ0041-home_discover_event_tab
---
-BEGIN;
-INSERT INTO party_event_orders( remarks,
- user_id, party_event_id, status, payment_time
- )
- VALUES
- ('user 1 join party 1 paid',
- 1, 1, 1, now()),
- ('user 1 join party 2 paid',
- 1, 2, 1, now()),
- ('user 2 join party 2 paid',
- 2, 2, 1, now()),
- ('user 3 join party 2 paid',
- 3, 2, 1, now()),
- ('user 4 join party 2 paid',
- 4, 2, 1, now()),
- ('user 5 join party 2 paid',
- 5, 2, 1, now()),
- ('user 2 join party 1 paid',
- 2, 1, 1, now()),
- ('user 3 join party 1 not paid',
- 3, 1, 0, now()),
- ('user 4 join party 1 paid',
- 4, 1, 1, now());
---
-COMMIT;
diff --git a/03_source/mobile_old.del/docker/supabase/seed.sql b/03_source/mobile_old.del/docker/supabase/seed.sql
deleted file mode 100644
index 8b13789..0000000
--- a/03_source/mobile_old.del/docker/supabase/seed.sql
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/03_source/mobile_old.del/gitUpdate.sh b/03_source/mobile_old.del/gitUpdate.sh
deleted file mode 100755
index 593352b..0000000
--- a/03_source/mobile_old.del/gitUpdate.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env bash
-
-set -ex
-
-
-git add .
-git commit -m'update,'
-
-git push
\ No newline at end of file
diff --git a/03_source/mobile_old.del/mobile_main/.editorconfig b/03_source/mobile_old.del/mobile_main/.editorconfig
deleted file mode 100644
index 82da0b1..0000000
--- a/03_source/mobile_old.del/mobile_main/.editorconfig
+++ /dev/null
@@ -1,15 +0,0 @@
-# http://editorconfig.org
-
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.md]
-insert_final_newline = false
-trim_trailing_whitespace = false
\ No newline at end of file
diff --git a/03_source/mobile_old.del/mobile_main/.env.example b/03_source/mobile_old.del/mobile_main/.env.example
deleted file mode 100644
index 496aabc..0000000
--- a/03_source/mobile_old.del/mobile_main/.env.example
+++ /dev/null
@@ -1,2 +0,0 @@
-VITE_SUPABASE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE
-VITE_SUPABASE_URL=http://192.168.10.89:8000
\ No newline at end of file
diff --git a/03_source/mobile_old.del/mobile_main/.firebaserc b/03_source/mobile_old.del/mobile_main/.firebaserc
deleted file mode 100644
index 711741d..0000000
--- a/03_source/mobile_old.del/mobile_main/.firebaserc
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "projects": {
- "default": "ionic-react-conference-app"
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/.gitignore b/03_source/mobile_old.del/mobile_main/.gitignore
deleted file mode 100644
index 0f63220..0000000
--- a/03_source/mobile_old.del/mobile_main/.gitignore
+++ /dev/null
@@ -1,93 +0,0 @@
-**/*log
-**/*log.*
-**/*del
-**/*del.*
-**/*copy*
-*copy*
-**/_backup/*
-**/*bak
-**/*bak.*
-
-# Logs
-.firebase
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-bower_components
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (http://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-node_modules/
-jspm_packages/
-
-# Typescript v1 declaration files
-typings/
-
-# Optional npm cache directory
-.npm
-
-# Optional eslint cache
-.eslintcache
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variables file
-.env
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-
-# testing
-/coverage
-
-# production
-/dist
-
-# misc
-.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-.stencil/
diff --git a/03_source/mobile_old.del/mobile_main/.netlify/_redirects b/03_source/mobile_old.del/mobile_main/.netlify/_redirects
deleted file mode 100644
index 50a4633..0000000
--- a/03_source/mobile_old.del/mobile_main/.netlify/_redirects
+++ /dev/null
@@ -1 +0,0 @@
-/* /index.html 200
\ No newline at end of file
diff --git a/03_source/mobile_old.del/mobile_main/.netlify/state.json b/03_source/mobile_old.del/mobile_main/.netlify/state.json
deleted file mode 100644
index 6daa700..0000000
--- a/03_source/mobile_old.del/mobile_main/.netlify/state.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "siteId": "86675615-6271-4145-8ffe-9c78dc4d34a3"
-}
diff --git a/03_source/mobile_old.del/mobile_main/.prettierignore b/03_source/mobile_old.del/mobile_main/.prettierignore
deleted file mode 100644
index 9df5fd4..0000000
--- a/03_source/mobile_old.del/mobile_main/.prettierignore
+++ /dev/null
@@ -1 +0,0 @@
-**/_backup
\ No newline at end of file
diff --git a/03_source/mobile_old.del/mobile_main/.prettierrc.js b/03_source/mobile_old.del/mobile_main/.prettierrc.js
deleted file mode 100644
index cddf861..0000000
--- a/03_source/mobile_old.del/mobile_main/.prettierrc.js
+++ /dev/null
@@ -1,34 +0,0 @@
-module.exports = {
- arrowParens: 'avoid',
- bracketSpacing: true,
- htmlWhitespaceSensitivity: 'strict',
- insertPragma: false,
- jsxBracketSameLine: false,
- jsxSingleQuote: false,
- printWidth: 120,
- proseWrap: 'preserve',
- quoteProps: 'as-needed',
- requirePragma: false,
- semi: true,
- singleQuote: true,
- tabWidth: 2,
- trailingComma: 'all',
- useTabs: false,
- endOfLine: 'lf',
- //
- overrides: [
- {
- files: ['*.yml'],
- options: {
- singleQuote: false,
- },
- },
- {
- files: ['*.md', '*.mdx'],
- options: {
- useTabs: false,
- },
- },
- ],
- plugins: [require.resolve('prettier-plugin-organize-imports')],
-};
diff --git a/03_source/mobile_old.del/mobile_main/.vscode/settings.json b/03_source/mobile_old.del/mobile_main/.vscode/settings.json
deleted file mode 100644
index ca6026c..0000000
--- a/03_source/mobile_old.del/mobile_main/.vscode/settings.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "javascript.updateImportsOnFileMove.enabled": "always",
- "typescript.updateImportsOnFileMove.enabled": "always",
- "git.ignoreLimitWarning": true
-}
diff --git a/03_source/mobile_old.del/mobile_main/Dockerfile b/03_source/mobile_old.del/mobile_main/Dockerfile
deleted file mode 100644
index 50f9ef0..0000000
--- a/03_source/mobile_old.del/mobile_main/Dockerfile
+++ /dev/null
@@ -1 +0,0 @@
-FROM node:20-bullseye-slim
diff --git a/03_source/mobile_old.del/mobile_main/LICENSE b/03_source/mobile_old.del/mobile_main/LICENSE
deleted file mode 100644
index 623c70a..0000000
--- a/03_source/mobile_old.del/mobile_main/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-Copyright 2015-present Drifty Co.
-http://drifty.com/
-
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/03_source/mobile_old.del/mobile_main/README.md b/03_source/mobile_old.del/mobile_main/README.md
deleted file mode 100644
index 90bbe13..0000000
--- a/03_source/mobile_old.del/mobile_main/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# Ionic React Conference Application
-
-This application is purely a kitchen-sink demo of the Ionic Framework and React.
-
-**There is not an actual Ionic Conference at this time.** This project is just to show off Ionic components in a real-world application.
-
-## Angular and Vue versions
-
-We've built versions of this Conference app in Angular and Vue for developers that would prefer to use one of those framework options:
-
-https://github.com/ionic-team/ionic-conference-app
-
-https://github.com/ionic-team/ionic-vue-conference-app
-
-## Table of Contents
-
-- [Getting Started](#getting-started)
-- [App Preview](#app-preview)
-
-## Getting Started
-
-- [Download the installer](https://nodejs.org/) for Node LTS.
-- Install the ionic CLI globally: `npm install -g ionic`
-- Clone this repository: `git clone https://github.com/ionic-team/ionic-react-conference-app.git`.
-- Run `npm install` from the project root.
-- Run `ionic serve` in a terminal from the project root.
-- Profit. :tada:
-
-## App Preview
-
-### [Menu](https://github.com/ionic-team/ionic-react-conference-app/blob/main/src/components/Menu.tsx)
-
-| Material Design | iOS |
-| -------------------------------------------------------- | ------------------------------------------------ |
-|  |  |
-
-### [Schedule Page](https://github.com/ionic-team/ionic-react-conference-app/blob/main/src/pages/SchedulePage.tsx)
-
-| Material Design | iOS |
-| ---------------------------------------------------------------- | -------------------------------------------------------- |
-|  |  |
-
-### [Speakers Page](https://github.com/ionic-team/ionic-react-conference-app/blob/main/src/pages/SpeakerList.tsx)
-
-| Material Design | iOS |
-| ---------------------------------------------------------------- | -------------------------------------------------------- |
-|  |  |
-
-### [Speaker Detail Page](https://github.com/ionic-team/ionic-react-conference-app/blob/main/src/pages/SpeakerDetail.tsx)
-
-| Material Design | iOS |
-| ---------------------------------------------------------------------------- | -------------------------------------------------------------------- |
-|  |  |
-
-### [About Page](https://github.com/ionic-team/ionic-react-conference-app/blob/main/src/pages/About.tsx)
-
-| Material Design | iOS |
-| ---------------------------------------------------------- | -------------------------------------------------- |
-|  |  |
diff --git a/03_source/mobile_old.del/mobile_main/babel.config.js b/03_source/mobile_old.del/mobile_main/babel.config.js
deleted file mode 100644
index e659974..0000000
--- a/03_source/mobile_old.del/mobile_main/babel.config.js
+++ /dev/null
@@ -1,14 +0,0 @@
-// Only used for jest
-module.exports = {
- presets: [
- [
- '@babel/preset-env',
- {
- targets: {
- node: 'current',
- },
- },
- ],
- '@babel/preset-typescript',
- ],
-};
diff --git a/03_source/mobile_old.del/mobile_main/backup_src.js b/03_source/mobile_old.del/mobile_main/backup_src.js
deleted file mode 100644
index 2a41dad..0000000
--- a/03_source/mobile_old.del/mobile_main/backup_src.js
+++ /dev/null
@@ -1,63 +0,0 @@
-const execSync = require('child_process').execSync;
-const fs = require('fs');
-const path = require('path');
-// const chalk = require('chalk');
-
-// Function to get all subdirectories of a given directory
-function getDirectories(srcPath, excludeDirs) {
- return fs
- .readdirSync(srcPath)
- .filter(file => !excludeDirs.includes(file) && fs.lstatSync(path.join(srcPath, file)).isDirectory())
- .map(name => path.join(srcPath, name));
-}
-
-// Get current working directory
-const cwd = process.cwd();
-const backup_dir = path.join(cwd, '_backup');
-
-// Path to app-head directory
-const appHeadDir = path.join(cwd, 'src');
-
-// Check if app-head exists
-if (!fs.existsSync(appHeadDir)) {
- console.error(`Error: ${appHeadDir} does not exist.`);
- process.exit(1);
-}
-
-// Execute reset.bat scripts
-try {
- // execSync(`cmd /c "cd ${appHeadDir} && scripts\\reset.bat"`, { stdio: 'inherit' });
-} catch (err) {
- console.error(`Error executing reset.bat script: ${err.message}`);
- process.exit(1);
-}
-
-// Define excluded directories
-const excludedDirs = ['.next', 'node_modules', '.git', 'volumes', '_mp4'];
-
-// Copy app-head directory and its contents to a new directory with an increasing number suffix
-let maxNum = 0;
-const directories = getDirectories(backup_dir, excludedDirs);
-for (const dir of directories) {
- const match = dir.match(/^.+draft-(\d+).*$/);
- if (match) {
- const num = parseInt(match[1], 10);
- if (num > maxNum) {
- maxNum = num;
- }
- }
-}
-
-var zerofilled = ('0000' + (maxNum + 1)).slice(-4);
-const targetDir = path.join(backup_dir, `draft-${zerofilled}`);
-fs.mkdirSync(targetDir);
-
-// Copy app-head directory and its contents to targetDir, excluding specified directories
-fs.cpSync(appHeadDir, targetDir, {
- filter: src => !excludedDirs.includes(path.basename(src)),
- recursive: true,
-});
-
-console.log(' DONE DONE DONE \n' + ' DONE DONE DONE \n' + ' DONE DONE DONE \n');
-
-console.log(`Successfully backup to ${targetDir}.`);
diff --git a/03_source/mobile_old.del/mobile_main/capacitor.config.json b/03_source/mobile_old.del/mobile_main/capacitor.config.json
deleted file mode 100644
index 0f2dd5f..0000000
--- a/03_source/mobile_old.del/mobile_main/capacitor.config.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "appId": "io.ionic.starter",
- "appName": "ionic-react-conference-app",
- "bundledWebRuntime": false,
- "npmClient": "npm",
- "webDir": "dist",
- "cordova": {}
-}
diff --git a/03_source/mobile_old.del/mobile_main/dc_up.sh b/03_source/mobile_old.del/mobile_main/dc_up.sh
deleted file mode 100755
index 3e67268..0000000
--- a/03_source/mobile_old.del/mobile_main/dc_up.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env bash
-
-set -ex
-
-docker compose up -d
-
-docker compose exec -it mobile bash
\ No newline at end of file
diff --git a/03_source/mobile_old.del/mobile_main/docker-compose.yml b/03_source/mobile_old.del/mobile_main/docker-compose.yml
deleted file mode 100644
index 576ee97..0000000
--- a/03_source/mobile_old.del/mobile_main/docker-compose.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-name: 009_poc_chatroom_implement
-
-services:
- mobile:
- build: .
- ports:
- - 3000:3000
- command: sleep infinity
- volumes:
- - .:/app
- working_dir: /app
diff --git a/03_source/mobile_old.del/mobile_main/firebase.json b/03_source/mobile_old.del/mobile_main/firebase.json
deleted file mode 100644
index 49a74df..0000000
--- a/03_source/mobile_old.del/mobile_main/firebase.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "hosting": {
- "public": "build",
- "rewrites": [
- {
- "source": "**",
- "destination": "/index.html"
- }
- ],
- "headers": [
- {
- "source": "**/static/**",
- "headers": [
- {
- "key": "Cache-Control",
- "value": "max-age=31536000"
- }
- ]
- },
- {
- "source": "**/*.@(jpg|jpeg|gif|png|svg)",
- "headers": [
- {
- "key": "Cache-Control",
- "value": "max-age=31536000"
- }
- ]
- }
- ]
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/index.html b/03_source/mobile_old.del/mobile_main/index.html
deleted file mode 100644
index 613a63a..0000000
--- a/03_source/mobile_old.del/mobile_main/index.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- Ionic Conference App
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/03_source/mobile_old.del/mobile_main/ionic.config.json b/03_source/mobile_old.del/mobile_main/ionic.config.json
deleted file mode 100644
index f610198..0000000
--- a/03_source/mobile_old.del/mobile_main/ionic.config.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "name": "ionic-react-conference-app",
- "integrations": {
- "capacitor": {}
- },
- "type": "react"
-}
diff --git a/03_source/mobile_old.del/mobile_main/package-lock.json b/03_source/mobile_old.del/mobile_main/package-lock.json
deleted file mode 100644
index 9041117..0000000
--- a/03_source/mobile_old.del/mobile_main/package-lock.json
+++ /dev/null
@@ -1,13079 +0,0 @@
-{
- "name": "ionic-react-conference-app",
- "version": "0.0.1",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "ionic-react-conference-app",
- "version": "0.0.1",
- "dependencies": {
- "@capacitor/camera": "^4.1.5",
- "@capacitor/core": "^4.6.1",
- "@capacitor/preferences": "^4.0.2",
- "@ionic/pwa-elements": "^3.3.0",
- "@ionic/react": "8.2.6",
- "@ionic/react-router": "8.2.6",
- "@supabase/auth-helpers-nextjs": "^0.9.0",
- "@supabase/auth-helpers-react": "^0.3.1",
- "@supabase/ssr": "latest",
- "@supabase/supabase-js": "2.44.0",
- "date-fns": "^2.25.0",
- "dayjs": "^1.11.13",
- "i18next": "^22.4.14",
- "i18next-browser-languagedetector": "^7.0.1",
- "ionicons": "^7.1.2",
- "lodash": "^4.17.21",
- "prettier-plugin-organize-imports": "^4.0.0",
- "pullstate": "^1.22.1",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-i18next": "^12.2.0",
- "react-markdown": "^9.0.1",
- "react-router": "^5.3.4",
- "react-router-dom": "^5.3.4",
- "react-use": "^17.2.4",
- "reselect": "^4.0.0",
- "sass": "^1.59.3",
- "swiper": "^9.1.1",
- "typescript": "5.3.3"
- },
- "devDependencies": {
- "@capacitor/cli": "^4.6.1",
- "@testing-library/react": "^9.3.1",
- "@types/googlemaps": "^3.38.0",
- "@types/jest": "24.0.18",
- "@types/node": "20.11.5",
- "@types/react": "18.2.48",
- "@types/react-dom": "18.2.18",
- "@types/react-router": "^5.1.20",
- "@types/react-router-dom": "^5.3.3",
- "@vitejs/plugin-legacy": "^5.4.1",
- "@vitejs/plugin-react": "^4.3.1",
- "husky": "^8.0.3",
- "lint-staged": "^13.2.0",
- "prettier": "^2.8.6",
- "vite": "^5.4.0"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
- "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
- "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/highlight": "^7.24.7",
- "picocolors": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz",
- "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz",
- "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.0",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-module-transforms": "^7.25.2",
- "@babel/helpers": "^7.25.0",
- "@babel/parser": "^7.25.0",
- "@babel/template": "^7.25.0",
- "@babel/traverse": "^7.25.2",
- "@babel/types": "^7.25.2",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz",
- "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.25.6",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^2.5.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
- "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz",
- "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
- "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.25.2",
- "@babel/helper-validator-option": "^7.24.8",
- "browserslist": "^4.23.1",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz",
- "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-member-expression-to-functions": "^7.24.8",
- "@babel/helper-optimise-call-expression": "^7.24.7",
- "@babel/helper-replace-supers": "^7.25.0",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/traverse": "^7.25.4",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz",
- "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "regexpu-core": "^5.3.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
- "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.22.6",
- "@babel/helper-plugin-utils": "^7.22.5",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz",
- "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.24.8",
- "@babel/types": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
- "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
- "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-simple-access": "^7.24.7",
- "@babel/helper-validator-identifier": "^7.24.7",
- "@babel/traverse": "^7.25.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
- "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
- "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz",
- "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-wrap-function": "^7.25.0",
- "@babel/traverse": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-replace-supers": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz",
- "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-member-expression-to-functions": "^7.24.8",
- "@babel/helper-optimise-call-expression": "^7.24.7",
- "@babel/traverse": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
- "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz",
- "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
- "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
- "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
- "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-wrap-function": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz",
- "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.25.0",
- "@babel/traverse": "^7.25.0",
- "@babel/types": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz",
- "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
- "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.24.7",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
- "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.25.6"
- },
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
- "version": "7.25.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz",
- "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz",
- "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz",
- "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz",
- "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.13.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz",
- "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0-placeholder-for-preset-env.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
- "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-static-block": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
- "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz",
- "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz",
- "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-private-property-in-object": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
- "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
- "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz",
- "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz",
- "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-remap-async-to-generator": "^7.25.0",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/traverse": "^7.25.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz",
- "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-remap-async-to-generator": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz",
- "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz",
- "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz",
- "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.25.4",
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz",
- "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.12.0"
- }
- },
- "node_modules/@babel/plugin-transform-classes": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz",
- "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-replace-supers": "^7.25.0",
- "@babel/traverse": "^7.25.4",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz",
- "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/template": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz",
- "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz",
- "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz",
- "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz",
- "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.0",
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-dynamic-import": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz",
- "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz",
- "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-export-namespace-from": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz",
- "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-for-of": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz",
- "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-function-name": {
- "version": "7.25.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz",
- "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.24.8",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-json-strings": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz",
- "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-literals": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz",
- "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz",
- "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz",
- "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz",
- "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz",
- "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.24.8",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-simple-access": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz",
- "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.25.0",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
- "@babel/traverse": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz",
- "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz",
- "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-new-target": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz",
- "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz",
- "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-numeric-separator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz",
- "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz",
- "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-object-super": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz",
- "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-replace-supers": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-optional-catch-binding": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz",
- "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz",
- "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-parameters": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz",
- "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz",
- "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.25.4",
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz",
- "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz",
- "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz",
- "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz",
- "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz",
- "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "regenerator-transform": "^0.15.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz",
- "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz",
- "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-spread": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz",
- "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz",
- "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz",
- "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz",
- "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz",
- "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-property-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz",
- "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz",
- "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz",
- "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/preset-env": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz",
- "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.25.4",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-validator-option": "^7.24.8",
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3",
- "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0",
- "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.24.7",
- "@babel/plugin-syntax-import-attributes": "^7.24.7",
- "@babel/plugin-syntax-import-meta": "^7.10.4",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.24.7",
- "@babel/plugin-transform-async-generator-functions": "^7.25.4",
- "@babel/plugin-transform-async-to-generator": "^7.24.7",
- "@babel/plugin-transform-block-scoped-functions": "^7.24.7",
- "@babel/plugin-transform-block-scoping": "^7.25.0",
- "@babel/plugin-transform-class-properties": "^7.25.4",
- "@babel/plugin-transform-class-static-block": "^7.24.7",
- "@babel/plugin-transform-classes": "^7.25.4",
- "@babel/plugin-transform-computed-properties": "^7.24.7",
- "@babel/plugin-transform-destructuring": "^7.24.8",
- "@babel/plugin-transform-dotall-regex": "^7.24.7",
- "@babel/plugin-transform-duplicate-keys": "^7.24.7",
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0",
- "@babel/plugin-transform-dynamic-import": "^7.24.7",
- "@babel/plugin-transform-exponentiation-operator": "^7.24.7",
- "@babel/plugin-transform-export-namespace-from": "^7.24.7",
- "@babel/plugin-transform-for-of": "^7.24.7",
- "@babel/plugin-transform-function-name": "^7.25.1",
- "@babel/plugin-transform-json-strings": "^7.24.7",
- "@babel/plugin-transform-literals": "^7.25.2",
- "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
- "@babel/plugin-transform-member-expression-literals": "^7.24.7",
- "@babel/plugin-transform-modules-amd": "^7.24.7",
- "@babel/plugin-transform-modules-commonjs": "^7.24.8",
- "@babel/plugin-transform-modules-systemjs": "^7.25.0",
- "@babel/plugin-transform-modules-umd": "^7.24.7",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
- "@babel/plugin-transform-new-target": "^7.24.7",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
- "@babel/plugin-transform-numeric-separator": "^7.24.7",
- "@babel/plugin-transform-object-rest-spread": "^7.24.7",
- "@babel/plugin-transform-object-super": "^7.24.7",
- "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.8",
- "@babel/plugin-transform-parameters": "^7.24.7",
- "@babel/plugin-transform-private-methods": "^7.25.4",
- "@babel/plugin-transform-private-property-in-object": "^7.24.7",
- "@babel/plugin-transform-property-literals": "^7.24.7",
- "@babel/plugin-transform-regenerator": "^7.24.7",
- "@babel/plugin-transform-reserved-words": "^7.24.7",
- "@babel/plugin-transform-shorthand-properties": "^7.24.7",
- "@babel/plugin-transform-spread": "^7.24.7",
- "@babel/plugin-transform-sticky-regex": "^7.24.7",
- "@babel/plugin-transform-template-literals": "^7.24.7",
- "@babel/plugin-transform-typeof-symbol": "^7.24.8",
- "@babel/plugin-transform-unicode-escapes": "^7.24.7",
- "@babel/plugin-transform-unicode-property-regex": "^7.24.7",
- "@babel/plugin-transform-unicode-regex": "^7.24.7",
- "@babel/plugin-transform-unicode-sets-regex": "^7.25.4",
- "@babel/preset-modules": "0.1.6-no-external-plugins",
- "babel-plugin-polyfill-corejs2": "^0.4.10",
- "babel-plugin-polyfill-corejs3": "^0.10.6",
- "babel-plugin-polyfill-regenerator": "^0.6.1",
- "core-js-compat": "^3.37.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-env/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/preset-modules": {
- "version": "0.1.6-no-external-plugins",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
- "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/@babel/regjsgen": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@babel/runtime": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
- "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
- "license": "MIT",
- "dependencies": {
- "regenerator-runtime": "^0.14.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
- "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/parser": "^7.25.0",
- "@babel/types": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz",
- "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.6",
- "@babel/parser": "^7.25.6",
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.6",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
- "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@capacitor/camera": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@capacitor/camera/-/camera-4.1.5.tgz",
- "integrity": "sha512-E00IRsJiIr1kP3EkJa0OWp//TDFXOx3ifDfmLOmIkPxKt1FfuNheE0ipWBo5b44pKsx9pO64Rm9MkfUhgH5Rfg==",
- "license": "MIT",
- "peerDependencies": {
- "@capacitor/core": "^4.0.0"
- }
- },
- "node_modules/@capacitor/cli": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-4.7.1.tgz",
- "integrity": "sha512-cUEMci4KBb8gwIDXaO9F2Woz1wnugB/vVq2sRVy8+fzOfhmHlxweuH+h9RktDkpceVi+COfxYw/VPjg1wjC1tA==",
- "dev": true,
- "dependencies": {
- "@ionic/cli-framework-output": "^2.2.5",
- "@ionic/utils-fs": "^3.1.6",
- "@ionic/utils-subprocess": "^2.1.11",
- "@ionic/utils-terminal": "^2.3.3",
- "commander": "^9.3.0",
- "debug": "^4.3.4",
- "env-paths": "^2.2.0",
- "kleur": "^4.1.4",
- "native-run": "^1.6.0",
- "open": "^8.4.0",
- "plist": "^3.0.5",
- "prompts": "^2.4.2",
- "rimraf": "^3.0.2",
- "semver": "^7.3.7",
- "tar": "^6.1.11",
- "tslib": "^2.4.0",
- "xml2js": "^0.4.23"
- },
- "bin": {
- "cap": "bin/capacitor",
- "capacitor": "bin/capacitor"
- },
- "engines": {
- "node": ">=12.4.0"
- }
- },
- "node_modules/@capacitor/cli/node_modules/commander": {
- "version": "9.5.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
- "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || >=14"
- }
- },
- "node_modules/@capacitor/core": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-4.7.1.tgz",
- "integrity": "sha512-NZcsyPNt1avNELnKuD5OsL/O/ejQxlw9UkLUEuiptPPAEwS8WJ1gGabaEBbCb2wNA/nPfrGH+ZC2LGhlpMlLeg==",
- "dependencies": {
- "tslib": "^2.1.0"
- }
- },
- "node_modules/@capacitor/preferences": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@capacitor/preferences/-/preferences-4.0.2.tgz",
- "integrity": "sha512-HgcRkMdVHSIV3TeQLZFmCaCeMWQ25wLyZZ7dA2f8Rw81Q1Nroxsi7HxTEGNqrWKSN9PNKBJD8vChr6eB2GNtZg==",
- "peerDependencies": {
- "@capacitor/core": "^4.0.0"
- }
- },
- "node_modules/@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@ionic/cli-framework-output": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/@ionic/cli-framework-output/-/cli-framework-output-2.2.5.tgz",
- "integrity": "sha512-YeDLTnTaE6V4IDUxT8GDIep0GuRIFaR7YZDLANMuuWJZDmnTku6DP+MmQoltBeLmVvz1BAAZgk41xzxdq6H2FQ==",
- "dev": true,
- "dependencies": {
- "@ionic/utils-terminal": "2.3.3",
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/core": {
- "version": "8.2.6",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.2.6.tgz",
- "integrity": "sha512-9vLxIR+QFzeim/C6LV62vOm5e6EIoVZsLb5RjlnQICDbDf14iqcBjA+MZpW628HbADX7p9/ulaq8WFgx5085ZA==",
- "license": "MIT",
- "dependencies": {
- "@stencil/core": "^4.19.2",
- "ionicons": "^7.2.2",
- "tslib": "^2.1.0"
- }
- },
- "node_modules/@ionic/pwa-elements": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@ionic/pwa-elements/-/pwa-elements-3.3.0.tgz",
- "integrity": "sha512-vbykpxd2nGRlA67AnqDwsiVf8PUmInLyi6lQdnPDjeiML1WZa0CPe6r632nGDV9PTi+sWNde9Xexg9SD6Pwyqw==",
- "license": "MIT",
- "engines": {
- "node": ">=16.0.0",
- "npm": ">=8.0.0"
- }
- },
- "node_modules/@ionic/react": {
- "version": "8.2.6",
- "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.2.6.tgz",
- "integrity": "sha512-qcdd04P3vZzeyQvjF/7RIK9JJPxQgpBm3VxUh6a/NUPuLsq4d66UcD2pr4vGaejD3Vf15wyZeHDAVQGjqq+X2A==",
- "license": "MIT",
- "dependencies": {
- "@ionic/core": "8.2.6",
- "ionicons": "^7.0.0",
- "tslib": "*"
- },
- "peerDependencies": {
- "react": ">=16.8.6",
- "react-dom": ">=16.8.6"
- }
- },
- "node_modules/@ionic/react-router": {
- "version": "8.2.6",
- "resolved": "https://registry.npmjs.org/@ionic/react-router/-/react-router-8.2.6.tgz",
- "integrity": "sha512-Fs8IafBxD8tMmsN9PvAEgW0GHJGl1gtVeAW1NkW22wOeS+mLoZxd6iV0lqr5tnV1uhQZBQeCoaH4MtM497ltdw==",
- "license": "MIT",
- "dependencies": {
- "@ionic/react": "8.2.6",
- "tslib": "*"
- },
- "peerDependencies": {
- "react": ">=16.8.6",
- "react-dom": ">=16.8.6",
- "react-router": "^5.0.1",
- "react-router-dom": "^5.0.1"
- }
- },
- "node_modules/@ionic/utils-array": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.5.tgz",
- "integrity": "sha512-HD72a71IQVBmQckDwmA8RxNVMTbxnaLbgFOl+dO5tbvW9CkkSFCv41h6fUuNsSEVgngfkn0i98HDuZC8mk+lTA==",
- "dev": true,
- "dependencies": {
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-fs": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.6.tgz",
- "integrity": "sha512-eikrNkK89CfGPmexjTfSWl4EYqsPSBh0Ka7by4F0PLc1hJZYtJxUZV3X4r5ecA8ikjicUmcbU7zJmAjmqutG/w==",
- "dev": true,
- "dependencies": {
- "@types/fs-extra": "^8.0.0",
- "debug": "^4.0.0",
- "fs-extra": "^9.0.0",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-object": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.5.tgz",
- "integrity": "sha512-XnYNSwfewUqxq+yjER1hxTKggftpNjFLJH0s37jcrNDwbzmbpFTQTVAp4ikNK4rd9DOebX/jbeZb8jfD86IYxw==",
- "dev": true,
- "dependencies": {
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-process": {
- "version": "2.1.10",
- "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.10.tgz",
- "integrity": "sha512-mZ7JEowcuGQK+SKsJXi0liYTcXd2bNMR3nE0CyTROpMECUpJeAvvaBaPGZf5ERQUPeWBVuwqAqjUmIdxhz5bxw==",
- "dev": true,
- "dependencies": {
- "@ionic/utils-object": "2.1.5",
- "@ionic/utils-terminal": "2.3.3",
- "debug": "^4.0.0",
- "signal-exit": "^3.0.3",
- "tree-kill": "^1.2.2",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-stream": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.5.tgz",
- "integrity": "sha512-hkm46uHvEC05X/8PHgdJi4l4zv9VQDELZTM+Kz69odtO9zZYfnt8DkfXHJqJ+PxmtiE5mk/ehJWLnn/XAczTUw==",
- "dev": true,
- "dependencies": {
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-subprocess": {
- "version": "2.1.11",
- "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.11.tgz",
- "integrity": "sha512-6zCDixNmZCbMCy5np8klSxOZF85kuDyzZSTTQKQP90ZtYNCcPYmuFSzaqDwApJT4r5L3MY3JrqK1gLkc6xiUPw==",
- "dev": true,
- "dependencies": {
- "@ionic/utils-array": "2.1.5",
- "@ionic/utils-fs": "3.1.6",
- "@ionic/utils-process": "2.1.10",
- "@ionic/utils-stream": "3.1.5",
- "@ionic/utils-terminal": "2.3.3",
- "cross-spawn": "^7.0.3",
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-terminal": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.3.tgz",
- "integrity": "sha512-RnuSfNZ5fLEyX3R5mtcMY97cGD1A0NVBbarsSQ6yMMfRJ5YHU7hHVyUfvZeClbqkBC/pAqI/rYJuXKCT9YeMCQ==",
- "dev": true,
- "dependencies": {
- "@types/slice-ansi": "^4.0.0",
- "debug": "^4.0.0",
- "signal-exit": "^3.0.3",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "tslib": "^2.0.1",
- "untildify": "^4.0.0",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=10.3.0"
- }
- },
- "node_modules/@ionic/utils-terminal/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@ionic/utils-terminal/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@ionic/utils-terminal/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/@ionic/utils-terminal/node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/@jest/types": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
- "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^13.0.0"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/source-map": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz",
- "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
- "license": "MIT"
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz",
- "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz",
- "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz",
- "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz",
- "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz",
- "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz",
- "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz",
- "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz",
- "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz",
- "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz",
- "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz",
- "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz",
- "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz",
- "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz",
- "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz",
- "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz",
- "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@sheerun/mutationobserver-shim": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz",
- "integrity": "sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q==",
- "dev": true
- },
- "node_modules/@stencil/core": {
- "version": "4.21.0",
- "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.21.0.tgz",
- "integrity": "sha512-v50lnVbzS8mpMSnEVxR+G75XpvxHKtkJaQrNPE8+/fF6Ppr5z4bcdcBhcP8LPfEW+4BZcic6VifMXRwTopc+kw==",
- "license": "MIT",
- "bin": {
- "stencil": "bin/stencil"
- },
- "engines": {
- "node": ">=16.0.0",
- "npm": ">=7.10.0"
- }
- },
- "node_modules/@supabase/auth-helpers-nextjs": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.9.0.tgz",
- "integrity": "sha512-V+UKFngSCkzAucX3Zi5D4TRiJZUUx0RDme7W217nIkwhCTvJY7Ih2L1cgnAMihQost2YYgTzJ7DrUzz4mm8i8A==",
- "license": "MIT",
- "dependencies": {
- "@supabase/auth-helpers-shared": "0.6.3",
- "set-cookie-parser": "^2.6.0"
- },
- "peerDependencies": {
- "@supabase/supabase-js": "^2.19.0"
- }
- },
- "node_modules/@supabase/auth-helpers-react": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-react/-/auth-helpers-react-0.3.1.tgz",
- "integrity": "sha512-g3SFv08Dz9FapNif/ZY1b7qKGlMJDyTLSayHBz3kb3FuYxg7aLWgQtydDhm5AGbc0XtvpIBuhGTIOVevwpdosA==",
- "license": "MIT",
- "peerDependencies": {
- "@supabase/supabase-js": "^2.0.4"
- }
- },
- "node_modules/@supabase/auth-helpers-shared": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.6.3.tgz",
- "integrity": "sha512-xYQRLFeFkL4ZfwC7p9VKcarshj3FB2QJMgJPydvOY7J5czJe6xSG5/wM1z63RmAzGbCkKg+dzpq61oeSyWiGBQ==",
- "license": "MIT",
- "dependencies": {
- "jose": "^4.14.4"
- },
- "peerDependencies": {
- "@supabase/supabase-js": "^2.19.0"
- }
- },
- "node_modules/@supabase/auth-js": {
- "version": "2.64.2",
- "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.64.2.tgz",
- "integrity": "sha512-s+lkHEdGiczDrzXJ1YWt2y3bxRi+qIUnXcgkpLSrId7yjBeaXBFygNjTaoZLG02KNcYwbuZ9qkEIqmj2hF7svw==",
- "license": "MIT",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "node_modules/@supabase/functions-js": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.1.tgz",
- "integrity": "sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA==",
- "license": "MIT",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "node_modules/@supabase/node-fetch": {
- "version": "2.6.15",
- "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz",
- "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==",
- "license": "MIT",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- }
- },
- "node_modules/@supabase/postgrest-js": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.15.6.tgz",
- "integrity": "sha512-zg3URVhoHOijdqMyn3LIFHh+Pqj5BmRqWAaoSExzIHc4m0kGBMPMjDcleamGhbelAAiKbjpQ04mBgooDliGl5A==",
- "license": "MIT",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "node_modules/@supabase/realtime-js": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.10.1.tgz",
- "integrity": "sha512-SrrXxE8xgwWvjREQMkC9LIHIoCQde+OqkFPKP2s/O0ROjhmJ/iXeLvoWhAzXh9gwire4oaK14/ncL/iRiaVWQw==",
- "license": "MIT",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14",
- "@types/phoenix": "^1.5.4",
- "@types/ws": "^8.5.10",
- "ws": "^8.14.2"
- }
- },
- "node_modules/@supabase/ssr": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@supabase/ssr/-/ssr-0.5.1.tgz",
- "integrity": "sha512-+G94H/GZG0nErZ3FQV9yJmsC5Rj7dmcfCAwOt37hxeR1La+QTl8cE9whzYwPUrTJjMLGNXoO+1BMvVxwBAbz4g==",
- "license": "MIT",
- "dependencies": {
- "cookie": "^0.6.0"
- },
- "peerDependencies": {
- "@supabase/supabase-js": "^2.43.4"
- }
- },
- "node_modules/@supabase/storage-js": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.6.0.tgz",
- "integrity": "sha512-REAxr7myf+3utMkI2oOmZ6sdplMZZ71/2NEIEMBZHL9Fkmm3/JnaOZVSRqvG4LStYj2v5WhCruCzuMn6oD/Drw==",
- "license": "MIT",
- "dependencies": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "node_modules/@supabase/supabase-js": {
- "version": "2.44.0",
- "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.44.0.tgz",
- "integrity": "sha512-SzMvAgSVuPzx7itiYiascXAVBqTcZ9zX3ONIdhZEWKUEgWaJftfPyVvz+PMYznK77miSMuy1f4geAvPElyiS2g==",
- "license": "MIT",
- "dependencies": {
- "@supabase/auth-js": "2.64.2",
- "@supabase/functions-js": "2.4.1",
- "@supabase/node-fetch": "2.6.15",
- "@supabase/postgrest-js": "1.15.6",
- "@supabase/realtime-js": "2.10.1",
- "@supabase/storage-js": "2.6.0"
- }
- },
- "node_modules/@testing-library/dom": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-6.10.0.tgz",
- "integrity": "sha512-8Tq4aRDeukB+6WE0rVXO1TlS38uu05CpbHgEa9SLR3JWuBajOVEPk9HgOfOFOqWqoo5nEIthXBgLobbofEhuUg==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.6.2",
- "@sheerun/mutationobserver-shim": "^0.3.2",
- "@types/testing-library__dom": "^6.0.0",
- "aria-query": "3.0.0",
- "pretty-format": "^24.9.0",
- "wait-for-expect": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@testing-library/react": {
- "version": "9.3.1",
- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-9.3.1.tgz",
- "integrity": "sha512-BXlYrbxTkifNVb7rIC8EHqYXgG/rBeULqG3V0wbEAuSaZ7n5ERX9Bcp0i+9EecrNpLNPwR0cIxdKNp6qVTZS9A==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.6.0",
- "@testing-library/dom": "^6.3.0",
- "@types/testing-library__react": "^9.1.0"
- },
- "engines": {
- "node": ">=8"
- },
- "peerDependencies": {
- "react": "*",
- "react-dom": "*"
- }
- },
- "node_modules/@types/babel__core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "node_modules/@types/babel__generator": {
- "version": "7.6.8",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
- "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__template": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__traverse": {
- "version": "7.20.6",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
- "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.20.7"
- }
- },
- "node_modules/@types/debug": {
- "version": "4.1.12",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
- "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
- "license": "MIT",
- "dependencies": {
- "@types/ms": "*"
- }
- },
- "node_modules/@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "license": "MIT"
- },
- "node_modules/@types/estree-jsx": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
- "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
- "license": "MIT",
- "dependencies": {
- "@types/estree": "*"
- }
- },
- "node_modules/@types/fs-extra": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz",
- "integrity": "sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/googlemaps": {
- "version": "3.38.0",
- "resolved": "https://registry.npmjs.org/@types/googlemaps/-/googlemaps-3.38.0.tgz",
- "integrity": "sha512-Rp7FnrwyYGnjoxM+/q/4DRqUzvV9JKK1SBRXx8APxU6NNMtYMsWmOMsQOV2U6z8aMFzlUbRv3EDixLcDep8t9w==",
- "deprecated": "Types for the Google Maps browser API have moved to @types/google.maps. Note: these types are not for the googlemaps npm package, which is a Node API.",
- "dev": true
- },
- "node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/@types/history": {
- "version": "4.7.11",
- "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz",
- "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==",
- "dev": true
- },
- "node_modules/@types/istanbul-lib-coverage": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
- "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==",
- "dev": true
- },
- "node_modules/@types/istanbul-lib-report": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz",
- "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "node_modules/@types/istanbul-reports": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz",
- "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "*",
- "@types/istanbul-lib-report": "*"
- }
- },
- "node_modules/@types/jest": {
- "version": "24.0.18",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.18.tgz",
- "integrity": "sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==",
- "dev": true,
- "dependencies": {
- "@types/jest-diff": "*"
- }
- },
- "node_modules/@types/jest-diff": {
- "version": "20.0.1",
- "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz",
- "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==",
- "dev": true
- },
- "node_modules/@types/js-cookie": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz",
- "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==",
- "license": "MIT"
- },
- "node_modules/@types/mdast": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
- "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/@types/ms": {
- "version": "0.7.34",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
- "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==",
- "license": "MIT"
- },
- "node_modules/@types/node": {
- "version": "20.11.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz",
- "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==",
- "license": "MIT",
- "dependencies": {
- "undici-types": "~5.26.4"
- }
- },
- "node_modules/@types/phoenix": {
- "version": "1.6.5",
- "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.5.tgz",
- "integrity": "sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==",
- "license": "MIT"
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.3",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
- "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
- },
- "node_modules/@types/react": {
- "version": "18.2.48",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz",
- "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==",
- "license": "MIT",
- "dependencies": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@types/react-dom": {
- "version": "18.2.18",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz",
- "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/react": "*"
- }
- },
- "node_modules/@types/react-router": {
- "version": "5.1.20",
- "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz",
- "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==",
- "dev": true,
- "dependencies": {
- "@types/history": "^4.7.11",
- "@types/react": "*"
- }
- },
- "node_modules/@types/react-router-dom": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz",
- "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==",
- "dev": true,
- "dependencies": {
- "@types/history": "^4.7.11",
- "@types/react": "*",
- "@types/react-router": "*"
- }
- },
- "node_modules/@types/scheduler": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
- },
- "node_modules/@types/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-+OpjSaq85gvlZAYINyzKpLeiFkSC4EsC6IIiT6v6TLSU5k5U83fHGj9Lel8oKEXM0HqgrMVCjXPDPVICtxF7EQ==",
- "dev": true
- },
- "node_modules/@types/testing-library__dom": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.10.0.tgz",
- "integrity": "sha512-mL/GMlyQxiZplbUuFNwA0vAI3k3uJNSf6slr5AVve9TXmfLfyefNT0uHHnxwdYuPMxYD5gI/+dgAvc/5opW9JQ==",
- "dev": true,
- "dependencies": {
- "pretty-format": "^24.3.0"
- }
- },
- "node_modules/@types/testing-library__react": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.2.tgz",
- "integrity": "sha512-CYaMqrswQ+cJACy268jsLAw355DZtPZGt3Jwmmotlcu8O/tkoXBI6AeZ84oZBJsIsesozPKzWzmv/0TIU+1E9Q==",
- "dev": true,
- "dependencies": {
- "@types/react-dom": "*",
- "@types/testing-library__dom": "*"
- }
- },
- "node_modules/@types/unist": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
- "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
- "license": "MIT"
- },
- "node_modules/@types/ws": {
- "version": "8.5.12",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz",
- "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/yargs": {
- "version": "13.0.3",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz",
- "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==",
- "dev": true,
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/@types/yargs-parser": {
- "version": "13.1.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz",
- "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==",
- "dev": true
- },
- "node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "license": "ISC"
- },
- "node_modules/@vitejs/plugin-legacy": {
- "version": "5.4.2",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-5.4.2.tgz",
- "integrity": "sha512-hlyyQL+wEIyOWdwsUKX+0g3kBU4AbHmVzHarLvVKiGGGqLIYjttMvvjk6zGY8RD9dab6QuFNhDoxg0YFhQ26xA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.25.2",
- "@babel/preset-env": "^7.25.3",
- "browserslist": "^4.23.3",
- "browserslist-to-esbuild": "^2.1.1",
- "core-js": "^3.38.0",
- "magic-string": "^0.30.11",
- "regenerator-runtime": "^0.14.1",
- "systemjs": "^6.15.1"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "peerDependencies": {
- "terser": "^5.4.0",
- "vite": "^5.0.0"
- }
- },
- "node_modules/@vitejs/plugin-react": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz",
- "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.24.5",
- "@babel/plugin-transform-react-jsx-self": "^7.24.5",
- "@babel/plugin-transform-react-jsx-source": "^7.24.1",
- "@types/babel__core": "^7.20.5",
- "react-refresh": "^0.14.2"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "peerDependencies": {
- "vite": "^4.2.0 || ^5.0.0"
- }
- },
- "node_modules/@xobotyi/scrollbar-width": {
- "version": "1.9.5",
- "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz",
- "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==",
- "license": "MIT"
- },
- "node_modules/acorn": {
- "version": "8.8.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
- "dev": true,
- "peer": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dev": true,
- "dependencies": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/aria-query": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
- "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=",
- "dev": true,
- "dependencies": {
- "ast-types-flow": "0.0.7",
- "commander": "^2.11.0"
- }
- },
- "node_modules/ast-types-flow": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
- "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
- "dev": true
- },
- "node_modules/astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true,
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.11",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
- "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.6.2",
- "semver": "^6.3.1"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.10.6",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
- "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.2",
- "core-js-compat": "^3.38.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
- "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/bail": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
- "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/big-integer": {
- "version": "1.6.51",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
- "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
- "dev": true,
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/bplist-parser": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz",
- "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==",
- "dev": true,
- "dependencies": {
- "big-integer": "1.6.x"
- },
- "engines": {
- "node": ">= 5.10.0"
- }
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browserslist": {
- "version": "4.23.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
- "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "caniuse-lite": "^1.0.30001646",
- "electron-to-chromium": "^1.5.4",
- "node-releases": "^2.0.18",
- "update-browserslist-db": "^1.1.0"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/browserslist-to-esbuild": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/browserslist-to-esbuild/-/browserslist-to-esbuild-2.1.1.tgz",
- "integrity": "sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "meow": "^13.0.0"
- },
- "bin": {
- "browserslist-to-esbuild": "cli/index.js"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "browserslist": "*"
- }
- },
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001655",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz",
- "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "CC-BY-4.0"
- },
- "node_modules/ccount": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
- "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/character-entities": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
- "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-html4": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
- "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-legacy": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
- "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-reference-invalid": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
- "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cli-truncate": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
- "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==",
- "dev": true,
- "dependencies": {
- "slice-ansi": "^5.0.0",
- "string-width": "^5.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cli-truncate/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/cli-truncate/node_modules/string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dev": true,
- "dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cli-truncate/node_modules/strip-ansi": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
- "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "node_modules/colorette": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
- "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
- "dev": true
- },
- "node_modules/comma-separated-tokens": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
- "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/commander": {
- "version": "2.20.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.1.tgz",
- "integrity": "sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/copy-to-clipboard": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
- "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
- "license": "MIT",
- "dependencies": {
- "toggle-selection": "^1.0.6"
- }
- },
- "node_modules/core-js": {
- "version": "3.38.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz",
- "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/core-js-compat": {
- "version": "3.38.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz",
- "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.23.3"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/cross-spawn/node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/css-in-js-utils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz",
- "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==",
- "license": "MIT",
- "dependencies": {
- "hyphenate-style-name": "^1.0.3"
- }
- },
- "node_modules/css-tree": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
- "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
- "license": "MIT",
- "dependencies": {
- "mdn-data": "2.0.14",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
- "license": "MIT"
- },
- "node_modules/date-fns": {
- "version": "2.25.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz",
- "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==",
- "engines": {
- "node": ">=0.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/date-fns"
- }
- },
- "node_modules/dayjs": {
- "version": "1.11.13",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
- "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
- "license": "MIT"
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decode-named-character-reference": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
- "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
- "license": "MIT",
- "dependencies": {
- "character-entities": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/define-lazy-prop": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
- "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dequal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/devlop": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
- "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
- "license": "MIT",
- "dependencies": {
- "dequal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true
- },
- "node_modules/electron-to-chromium": {
- "version": "1.5.13",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz",
- "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/elementtree": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz",
- "integrity": "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg==",
- "dev": true,
- "dependencies": {
- "sax": "1.1.4"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
- },
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/error-stack-parser": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
- "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
- "license": "MIT",
- "dependencies": {
- "stackframe": "^1.3.4"
- }
- },
- "node_modules/esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/estree-util-is-identifier-name": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
- "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/execa": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz",
- "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.1",
- "human-signals": "^4.3.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^3.0.7",
- "strip-final-newline": "^3.0.0"
- },
- "engines": {
- "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/execa/node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/execa/node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "license": "MIT"
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "license": "MIT"
- },
- "node_modules/fast-shallow-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz",
- "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw=="
- },
- "node_modules/fastest-stable-stringify": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz",
- "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==",
- "license": "MIT"
- },
- "node_modules/fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dev": true,
- "dependencies": {
- "pend": "~1.2.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dev": true,
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/fs-minipass/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/fs-minipass/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/hast-util-to-jsx-runtime": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz",
- "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==",
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/unist": "^3.0.0",
- "comma-separated-tokens": "^2.0.0",
- "devlop": "^1.0.0",
- "estree-util-is-identifier-name": "^3.0.0",
- "hast-util-whitespace": "^3.0.0",
- "mdast-util-mdx-expression": "^2.0.0",
- "mdast-util-mdx-jsx": "^3.0.0",
- "mdast-util-mdxjs-esm": "^2.0.0",
- "property-information": "^6.0.0",
- "space-separated-tokens": "^2.0.0",
- "style-to-object": "^1.0.0",
- "unist-util-position": "^5.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-whitespace": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
- "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/history": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
- "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
- "dependencies": {
- "@babel/runtime": "^7.1.2",
- "loose-envify": "^1.2.0",
- "resolve-pathname": "^3.0.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0",
- "value-equal": "^1.0.1"
- }
- },
- "node_modules/hoist-non-react-statics": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
- "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
- "dependencies": {
- "react-is": "^16.7.0"
- }
- },
- "node_modules/html-parse-stringify": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
- "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==",
- "license": "MIT",
- "dependencies": {
- "void-elements": "3.1.0"
- }
- },
- "node_modules/html-url-attributes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.0.tgz",
- "integrity": "sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/human-signals": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
- "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
- "dev": true,
- "engines": {
- "node": ">=14.18.0"
- }
- },
- "node_modules/husky": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz",
- "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==",
- "dev": true,
- "bin": {
- "husky": "lib/bin.js"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/typicode"
- }
- },
- "node_modules/hyphenate-style-name": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz",
- "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==",
- "license": "BSD-3-Clause"
- },
- "node_modules/i18next": {
- "version": "22.5.1",
- "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.1.tgz",
- "integrity": "sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==",
- "funding": [
- {
- "type": "individual",
- "url": "https://locize.com"
- },
- {
- "type": "individual",
- "url": "https://locize.com/i18next.html"
- },
- {
- "type": "individual",
- "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.20.6"
- }
- },
- "node_modules/i18next-browser-languagedetector": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.1.tgz",
- "integrity": "sha512-h/pM34bcH6tbz8WgGXcmWauNpQupCGr25XPp9cZwZInR9XHSjIFDYp1SIok7zSPsTOMxdvuLyu86V+g2Kycnfw==",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.23.2"
- }
- },
- "node_modules/immer": {
- "version": "9.0.21",
- "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
- "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/immer"
- }
- },
- "node_modules/immutable": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
- "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg=="
- },
- "node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/ini": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz",
- "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==",
- "dev": true,
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/inline-style-parser": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz",
- "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==",
- "license": "MIT"
- },
- "node_modules/inline-style-prefixer": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz",
- "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==",
- "license": "MIT",
- "dependencies": {
- "css-in-js-utils": "^3.1.0"
- }
- },
- "node_modules/ionicons": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-7.2.2.tgz",
- "integrity": "sha512-I3iYIfc9Q9FRifWyFSwTAvbEABWlWY32i0sAVDDPGYnaIZVugkLCZFbEcrphW6ixVPg8tt1oLwalo/JJwbEqnA==",
- "dependencies": {
- "@stencil/core": "^4.0.3"
- }
- },
- "node_modules/is-alphabetical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
- "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-alphanumerical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
- "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
- "license": "MIT",
- "dependencies": {
- "is-alphabetical": "^2.0.0",
- "is-decimal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
- "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-decimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
- "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true,
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-hexadecimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
- "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "dependencies": {
- "is-docker": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "node_modules/jose": {
- "version": "4.15.9",
- "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz",
- "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/panva"
- }
- },
- "node_modules/js-cookie": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
- "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==",
- "license": "MIT"
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/kleur": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/lilconfig": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
- "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/lint-staged": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.0.tgz",
- "integrity": "sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==",
- "dev": true,
- "dependencies": {
- "chalk": "5.2.0",
- "cli-truncate": "^3.1.0",
- "commander": "^10.0.0",
- "debug": "^4.3.4",
- "execa": "^7.0.0",
- "lilconfig": "2.1.0",
- "listr2": "^5.0.7",
- "micromatch": "^4.0.5",
- "normalize-path": "^3.0.0",
- "object-inspect": "^1.12.3",
- "pidtree": "^0.6.0",
- "string-argv": "^0.3.1",
- "yaml": "^2.2.1"
- },
- "bin": {
- "lint-staged": "bin/lint-staged.js"
- },
- "engines": {
- "node": "^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/lint-staged"
- }
- },
- "node_modules/lint-staged/node_modules/chalk": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
- "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
- "dev": true,
- "engines": {
- "node": "^12.17.0 || ^14.13 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/lint-staged/node_modules/commander": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz",
- "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==",
- "dev": true,
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/listr2": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz",
- "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==",
- "dev": true,
- "dependencies": {
- "cli-truncate": "^2.1.0",
- "colorette": "^2.0.19",
- "log-update": "^4.0.0",
- "p-map": "^4.0.0",
- "rfdc": "^1.3.0",
- "rxjs": "^7.8.0",
- "through": "^2.3.8",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": "^14.13.1 || >=16.0.0"
- },
- "peerDependencies": {
- "enquirer": ">= 2.3.0 < 3"
- },
- "peerDependenciesMeta": {
- "enquirer": {
- "optional": true
- }
- }
- },
- "node_modules/listr2/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/listr2/node_modules/cli-truncate": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
- "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
- "dev": true,
- "dependencies": {
- "slice-ansi": "^3.0.0",
- "string-width": "^4.2.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/listr2/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/listr2/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/listr2/node_modules/rxjs": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
- "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
- "dev": true,
- "dependencies": {
- "tslib": "^2.1.0"
- }
- },
- "node_modules/listr2/node_modules/slice-ansi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
- "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "license": "MIT"
- },
- "node_modules/lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/log-update": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
- "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
- "dev": true,
- "dependencies": {
- "ansi-escapes": "^4.3.0",
- "cli-cursor": "^3.1.0",
- "slice-ansi": "^4.0.0",
- "wrap-ansi": "^6.2.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/log-update/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/log-update/node_modules/cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "dependencies": {
- "restore-cursor": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/log-update/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/log-update/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/log-update/node_modules/restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/log-update/node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/log-update/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/longest-streak": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
- "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/magic-string": {
- "version": "0.30.11",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
- "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.0"
- }
- },
- "node_modules/mdast-util-from-markdown": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz",
- "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark": "^4.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdx-expression": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz",
- "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdx-jsx": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz",
- "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "ccount": "^2.0.0",
- "devlop": "^1.1.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0",
- "parse-entities": "^4.0.0",
- "stringify-entities": "^4.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdxjs-esm": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
- "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-phrasing": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
- "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-hast": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
- "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@ungap/structured-clone": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "trim-lines": "^3.0.0",
- "unist-util-position": "^5.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-markdown": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz",
- "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "longest-streak": "^3.0.0",
- "mdast-util-phrasing": "^4.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "unist-util-visit": "^5.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
- "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdn-data": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
- "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
- "license": "CC0-1.0"
- },
- "node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "node_modules/micromark": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz",
- "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-combine-extensions": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-core-commonmark": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz",
- "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-factory-destination": "^2.0.0",
- "micromark-factory-label": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-factory-title": "^2.0.0",
- "micromark-factory-whitespace": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-html-tag-name": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-destination": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz",
- "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-label": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz",
- "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-space": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
- "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-title": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz",
- "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-whitespace": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz",
- "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-character": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
- "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-chunked": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz",
- "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-classify-character": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz",
- "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-combine-extensions": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz",
- "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-decode-numeric-character-reference": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz",
- "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-decode-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz",
- "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-encode": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
- "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-html-tag-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz",
- "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-normalize-identifier": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz",
- "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-resolve-all": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz",
- "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-sanitize-uri": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz",
- "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-subtokenize": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz",
- "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-types": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
- "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minipass": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz",
- "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "dev": true,
- "dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minizlib/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minizlib/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true,
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/nano-css": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.6.2.tgz",
- "integrity": "sha512-+6bHaC8dSDGALM1HJjOHVXpuastdu2xFoZlC77Jh4cg+33Zcgm+Gxd+1xsnpZK14eyHObSp82+ll5y3SX75liw==",
- "license": "Unlicense",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.15",
- "css-tree": "^1.1.2",
- "csstype": "^3.1.2",
- "fastest-stable-stringify": "^2.0.2",
- "inline-style-prefixer": "^7.0.1",
- "rtl-css-js": "^1.16.1",
- "stacktrace-js": "^2.0.2",
- "stylis": "^4.3.0"
- },
- "peerDependencies": {
- "react": "*",
- "react-dom": "*"
- }
- },
- "node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/native-run": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/native-run/-/native-run-1.7.2.tgz",
- "integrity": "sha512-2aahC8iXIO8BcvEukVMrYwL5sXurkuIGyQgfSGBto832W6ejV+cB5Ww+2/CRxmyozhbxARJ2OMpEGPV8sTqsrQ==",
- "dev": true,
- "dependencies": {
- "@ionic/utils-fs": "^3.1.6",
- "@ionic/utils-terminal": "^2.3.3",
- "bplist-parser": "^0.3.2",
- "debug": "^4.3.4",
- "elementtree": "^0.1.7",
- "ini": "^3.0.1",
- "plist": "^3.0.6",
- "split2": "^4.1.0",
- "through2": "^4.0.2",
- "tslib": "^2.4.0",
- "yauzl": "^2.10.0"
- },
- "bin": {
- "native-run": "bin/native-run"
- },
- "engines": {
- "node": ">=12.13.0"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
- "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-run-path": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
- "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
- "dev": true,
- "dependencies": {
- "path-key": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/npm-run-path/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/open": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
- "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
- "dev": true,
- "dependencies": {
- "define-lazy-prop": "^2.0.0",
- "is-docker": "^2.1.1",
- "is-wsl": "^2.2.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
- "dependencies": {
- "aggregate-error": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parse-entities": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
- "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "character-entities": "^2.0.0",
- "character-entities-legacy": "^3.0.0",
- "character-reference-invalid": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "is-alphanumerical": "^2.0.0",
- "is-decimal": "^2.0.0",
- "is-hexadecimal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/parse-entities/node_modules/@types/unist": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
- "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
- "license": "MIT"
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "dependencies": {
- "isarray": "0.0.1"
- }
- },
- "node_modules/pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
- },
- "node_modules/picocolors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
- "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pidtree": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
- "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
- "dev": true,
- "bin": {
- "pidtree": "bin/pidtree.js"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/plist": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz",
- "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==",
- "dev": true,
- "dependencies": {
- "base64-js": "^1.5.1",
- "xmlbuilder": "^15.1.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/postcss": {
- "version": "8.4.44",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz",
- "integrity": "sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.1",
- "source-map-js": "^1.2.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/prettier": {
- "version": "2.8.6",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
- "integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "node_modules/prettier-plugin-organize-imports": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.0.0.tgz",
- "integrity": "sha512-vnKSdgv9aOlqKeEFGhf9SCBsTyzDSyScy1k7E0R1Uo4L0cTcOV7c1XQaT7jfXIOc/p08WLBfN2QUQA9zDSZMxA==",
- "peerDependencies": {
- "@vue/language-plugin-pug": "^2.0.24",
- "prettier": ">=2.0",
- "typescript": ">=2.9",
- "vue-tsc": "^2.0.24"
- },
- "peerDependenciesMeta": {
- "@vue/language-plugin-pug": {
- "optional": true
- },
- "vue-tsc": {
- "optional": true
- }
- }
- },
- "node_modules/pretty-format": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
- "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^24.9.0",
- "ansi-regex": "^4.0.0",
- "ansi-styles": "^3.2.0",
- "react-is": "^16.8.4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/pretty-format/node_modules/ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/prompts": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
- "dev": true,
- "dependencies": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/prompts/node_modules/kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/prop-types": {
- "version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dependencies": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.13.1"
- }
- },
- "node_modules/prop-types/node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
- "node_modules/property-information": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
- "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/pullstate": {
- "version": "1.25.0",
- "resolved": "https://registry.npmjs.org/pullstate/-/pullstate-1.25.0.tgz",
- "integrity": "sha512-6SJMhK5EbDhrbyocMQOZKY3QKC5RfLcdtYD1y7wioF5dseVsdi3vmeHG3TwW4SrhQQP/WKyU/Np2X6UOhq1F6g==",
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "immer": "^9.0.16"
- },
- "peerDependencies": {
- "react": "^16.12.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.0"
- },
- "peerDependencies": {
- "react": "^18.2.0"
- }
- },
- "node_modules/react-i18next": {
- "version": "12.3.1",
- "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.3.1.tgz",
- "integrity": "sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.20.6",
- "html-parse-stringify": "^3.0.1"
- },
- "peerDependencies": {
- "i18next": ">= 19.0.0",
- "react": ">= 16.8.0"
- },
- "peerDependenciesMeta": {
- "react-dom": {
- "optional": true
- },
- "react-native": {
- "optional": true
- }
- }
- },
- "node_modules/react-is": {
- "version": "16.10.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.1.tgz",
- "integrity": "sha512-BXUMf9sIOPXXZWqr7+c5SeOKJykyVr2u0UDzEf4LNGc6taGkQe1A9DFD07umCIXz45RLr9oAAwZbAJ0Pkknfaw=="
- },
- "node_modules/react-markdown": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz",
- "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "devlop": "^1.0.0",
- "hast-util-to-jsx-runtime": "^2.0.0",
- "html-url-attributes": "^3.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "remark-parse": "^11.0.0",
- "remark-rehype": "^11.0.0",
- "unified": "^11.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- },
- "peerDependencies": {
- "@types/react": ">=18",
- "react": ">=18"
- }
- },
- "node_modules/react-refresh": {
- "version": "0.14.2",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
- "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-router": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
- "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==",
- "dependencies": {
- "@babel/runtime": "^7.12.13",
- "history": "^4.9.0",
- "hoist-non-react-statics": "^3.1.0",
- "loose-envify": "^1.3.1",
- "path-to-regexp": "^1.7.0",
- "prop-types": "^15.6.2",
- "react-is": "^16.6.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0"
- },
- "peerDependencies": {
- "react": ">=15"
- }
- },
- "node_modules/react-router-dom": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz",
- "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==",
- "dependencies": {
- "@babel/runtime": "^7.12.13",
- "history": "^4.9.0",
- "loose-envify": "^1.3.1",
- "prop-types": "^15.6.2",
- "react-router": "5.3.4",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0"
- },
- "peerDependencies": {
- "react": ">=15"
- }
- },
- "node_modules/react-universal-interface": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz",
- "integrity": "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==",
- "peerDependencies": {
- "react": "*",
- "tslib": "*"
- }
- },
- "node_modules/react-use": {
- "version": "17.5.1",
- "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.5.1.tgz",
- "integrity": "sha512-LG/uPEVRflLWMwi3j/sZqR00nF6JGqTTDblkXK2nzXsIvij06hXl1V/MZIlwj1OKIQUtlh1l9jK8gLsRyCQxMg==",
- "license": "Unlicense",
- "dependencies": {
- "@types/js-cookie": "^2.2.6",
- "@xobotyi/scrollbar-width": "^1.9.5",
- "copy-to-clipboard": "^3.3.1",
- "fast-deep-equal": "^3.1.3",
- "fast-shallow-equal": "^1.0.0",
- "js-cookie": "^2.2.1",
- "nano-css": "^5.6.2",
- "react-universal-interface": "^0.6.2",
- "resize-observer-polyfill": "^1.5.1",
- "screenfull": "^5.1.0",
- "set-harmonic-interval": "^1.0.1",
- "throttle-debounce": "^3.0.1",
- "ts-easing": "^0.2.0",
- "tslib": "^2.1.0"
- },
- "peerDependencies": {
- "react": "*",
- "react-dom": "*"
- }
- },
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/regenerate-unicode-properties": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
- "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "regenerate": "^1.4.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regenerator-runtime": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
- "license": "MIT"
- },
- "node_modules/regenerator-transform": {
- "version": "0.15.2",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
- "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "node_modules/regexpu-core": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
- "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/regjsgen": "^0.8.0",
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regjsparser": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
- "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "jsesc": "~0.5.0"
- },
- "bin": {
- "regjsparser": "bin/parser"
- }
- },
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- }
- },
- "node_modules/remark-parse": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
- "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unified": "^11.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-rehype": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz",
- "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "unified": "^11.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/reselect": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz",
- "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA=="
- },
- "node_modules/resize-observer-polyfill": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
- "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
- "license": "MIT"
- },
- "node_modules/resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-pathname": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
- "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
- },
- "node_modules/rfdc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
- "dev": true
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rollup": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.2.tgz",
- "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/estree": "1.0.5"
- },
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.21.2",
- "@rollup/rollup-android-arm64": "4.21.2",
- "@rollup/rollup-darwin-arm64": "4.21.2",
- "@rollup/rollup-darwin-x64": "4.21.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.21.2",
- "@rollup/rollup-linux-arm-musleabihf": "4.21.2",
- "@rollup/rollup-linux-arm64-gnu": "4.21.2",
- "@rollup/rollup-linux-arm64-musl": "4.21.2",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.21.2",
- "@rollup/rollup-linux-s390x-gnu": "4.21.2",
- "@rollup/rollup-linux-x64-gnu": "4.21.2",
- "@rollup/rollup-linux-x64-musl": "4.21.2",
- "@rollup/rollup-win32-arm64-msvc": "4.21.2",
- "@rollup/rollup-win32-ia32-msvc": "4.21.2",
- "@rollup/rollup-win32-x64-msvc": "4.21.2",
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/rtl-css-js": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz",
- "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.1.2"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/sass": {
- "version": "1.59.3",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.59.3.tgz",
- "integrity": "sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ==",
- "dependencies": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
- "source-map-js": ">=0.6.2 <2.0.0"
- },
- "bin": {
- "sass": "sass.js"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/sax": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz",
- "integrity": "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==",
- "dev": true
- },
- "node_modules/scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/screenfull": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz",
- "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/semver/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/set-cookie-parser": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz",
- "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==",
- "license": "MIT"
- },
- "node_modules/set-harmonic-interval": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz",
- "integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==",
- "license": "Unlicense",
- "engines": {
- "node": ">=6.9"
- }
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
- },
- "node_modules/slice-ansi": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
- "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^6.0.0",
- "is-fullwidth-code-point": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/slice-ansi/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
- "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/space-separated-tokens": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
- "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/split2": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz",
- "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==",
- "dev": true,
- "engines": {
- "node": ">= 10.x"
- }
- },
- "node_modules/ssr-window": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz",
- "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ=="
- },
- "node_modules/stack-generator": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
- "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
- "license": "MIT",
- "dependencies": {
- "stackframe": "^1.3.4"
- }
- },
- "node_modules/stackframe": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
- "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
- "license": "MIT"
- },
- "node_modules/stacktrace-gps": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz",
- "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==",
- "license": "MIT",
- "dependencies": {
- "source-map": "0.5.6",
- "stackframe": "^1.3.4"
- }
- },
- "node_modules/stacktrace-gps/node_modules/source-map": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
- "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stacktrace-js": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz",
- "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==",
- "license": "MIT",
- "dependencies": {
- "error-stack-parser": "^2.0.6",
- "stack-generator": "^2.0.5",
- "stacktrace-gps": "^3.0.4"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string-argv": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
- "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
- "dev": true,
- "engines": {
- "node": ">=0.6.19"
- }
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/stringify-entities": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
- "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
- "license": "MIT",
- "dependencies": {
- "character-entities-html4": "^2.0.0",
- "character-entities-legacy": "^3.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/style-to-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.7.tgz",
- "integrity": "sha512-uSjr59G5u6fbxUfKbb8GcqMGT3Xs9v5IbPkjb0S16GyOeBLAzSRK0CixBv5YrYvzO6TDLzIS6QCn78tkqWngPw==",
- "license": "MIT",
- "dependencies": {
- "inline-style-parser": "0.2.3"
- }
- },
- "node_modules/stylis": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz",
- "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==",
- "license": "MIT"
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/swiper": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/swiper/-/swiper-9.1.1.tgz",
- "integrity": "sha512-D1zArOwI6XCXCYBULPA4jTxpqp5SQtvntjinbXNZwXzj6P3KS51zSWuMarCLXq5oRISay4nX+TuShpxz8qhtbw==",
- "funding": [
- {
- "type": "patreon",
- "url": "https://www.patreon.com/swiperjs"
- },
- {
- "type": "open_collective",
- "url": "http://opencollective.com/swiper"
- }
- ],
- "dependencies": {
- "ssr-window": "^4.0.2"
- },
- "engines": {
- "node": ">= 4.7.0"
- }
- },
- "node_modules/systemjs": {
- "version": "6.15.1",
- "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.15.1.tgz",
- "integrity": "sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/tar": {
- "version": "6.1.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
- "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
- "dev": true,
- "dependencies": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^4.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/tar/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/terser": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.0.tgz",
- "integrity": "sha512-pdL757Ig5a0I+owA42l6tIuEycRuM7FPY4n62h44mRLRfnOxJkkOHd6i89dOpwZlpF6JXBwaAHF6yWzFrt+QyA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.8.2",
- "commander": "^2.20.0",
- "source-map-support": "~0.5.20"
- },
- "bin": {
- "terser": "bin/terser"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/throttle-debounce": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
- "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "node_modules/through2": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
- "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
- "dev": true,
- "dependencies": {
- "readable-stream": "3"
- }
- },
- "node_modules/tiny-invariant": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz",
- "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw=="
- },
- "node_modules/tiny-warning": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
- "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/toggle-selection": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
- "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==",
- "license": "MIT"
- },
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
- "license": "MIT"
- },
- "node_modules/tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true,
- "bin": {
- "tree-kill": "cli.js"
- }
- },
- "node_modules/trim-lines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
- "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/trough": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
- "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/ts-easing": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz",
- "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==",
- "license": "Unlicense"
- },
- "node_modules/tslib": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
- "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
- },
- "node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typescript": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
- "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
- "license": "MIT"
- },
- "node_modules/unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
- "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
- "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unified": {
- "version": "11.0.5",
- "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
- "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "bail": "^2.0.0",
- "devlop": "^1.0.0",
- "extend": "^3.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-is": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
- "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-position": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
- "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-stringify-position": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
- "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0",
- "unist-util-visit-parents": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit-parents": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
- "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/untildify": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
- "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
- "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "escalade": "^3.1.2",
- "picocolors": "^1.0.1"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "node_modules/value-equal": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
- "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
- },
- "node_modules/vfile": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
- "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-message": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
- "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vite": {
- "version": "5.4.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.3.tgz",
- "integrity": "sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.21.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/void-elements": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
- "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wait-for-expect": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.1.tgz",
- "integrity": "sha512-3Ha7lu+zshEG/CeHdcpmQsZnnZpPj/UsG3DuKO8FskjuDbkx3jE3845H+CuwZjA2YWYDfKMU2KhnCaXMLd3wVw==",
- "dev": true
- },
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
- "license": "BSD-2-Clause"
- },
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "license": "MIT",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/wrap-ansi/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "node_modules/ws": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
- "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
- "license": "MIT",
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": ">=5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
- "dev": true,
- "dependencies": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/xml2js/node_modules/xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/xmlbuilder": {
- "version": "15.1.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
- "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
- "dev": true,
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/yaml": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz",
- "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==",
- "dev": true,
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "dev": true,
- "dependencies": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
- }
- },
- "node_modules/zwitch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
- "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- }
- },
- "dependencies": {
- "@ampproject/remapping": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
- "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
- "dev": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "@babel/code-frame": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
- "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.24.7",
- "picocolors": "^1.0.0"
- }
- },
- "@babel/compat-data": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz",
- "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==",
- "dev": true
- },
- "@babel/core": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz",
- "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
- "dev": true,
- "requires": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.0",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-module-transforms": "^7.25.2",
- "@babel/helpers": "^7.25.0",
- "@babel/parser": "^7.25.0",
- "@babel/template": "^7.25.0",
- "@babel/traverse": "^7.25.2",
- "@babel/types": "^7.25.2",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@babel/generator": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz",
- "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.25.6",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^2.5.1"
- }
- },
- "@babel/helper-annotate-as-pure": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
- "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.24.7"
- }
- },
- "@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz",
- "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
- "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.25.2",
- "@babel/helper-validator-option": "^7.24.8",
- "browserslist": "^4.23.1",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@babel/helper-create-class-features-plugin": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz",
- "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-member-expression-to-functions": "^7.24.8",
- "@babel/helper-optimise-call-expression": "^7.24.7",
- "@babel/helper-replace-supers": "^7.25.0",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/traverse": "^7.25.4",
- "semver": "^6.3.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@babel/helper-create-regexp-features-plugin": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz",
- "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "regexpu-core": "^5.3.1",
- "semver": "^6.3.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@babel/helper-define-polyfill-provider": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
- "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
- "dev": true,
- "requires": {
- "@babel/helper-compilation-targets": "^7.22.6",
- "@babel/helper-plugin-utils": "^7.22.5",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2"
- }
- },
- "@babel/helper-member-expression-to-functions": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz",
- "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.24.8",
- "@babel/types": "^7.24.8"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
- "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
- "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
- "dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-simple-access": "^7.24.7",
- "@babel/helper-validator-identifier": "^7.24.7",
- "@babel/traverse": "^7.25.2"
- }
- },
- "@babel/helper-optimise-call-expression": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
- "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.24.7"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
- "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
- "dev": true
- },
- "@babel/helper-remap-async-to-generator": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz",
- "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-wrap-function": "^7.25.0",
- "@babel/traverse": "^7.25.0"
- }
- },
- "@babel/helper-replace-supers": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz",
- "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==",
- "dev": true,
- "requires": {
- "@babel/helper-member-expression-to-functions": "^7.24.8",
- "@babel/helper-optimise-call-expression": "^7.24.7",
- "@babel/traverse": "^7.25.0"
- }
- },
- "@babel/helper-simple-access": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
- "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- }
- },
- "@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz",
- "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==",
- "dev": true,
- "requires": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- }
- },
- "@babel/helper-string-parser": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
- "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
- "dev": true
- },
- "@babel/helper-validator-identifier": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
- "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
- "dev": true
- },
- "@babel/helper-validator-option": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
- "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
- "dev": true
- },
- "@babel/helper-wrap-function": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz",
- "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.25.0",
- "@babel/traverse": "^7.25.0",
- "@babel/types": "^7.25.0"
- }
- },
- "@babel/helpers": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz",
- "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.6"
- }
- },
- "@babel/highlight": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
- "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.24.7",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
- "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.25.6"
- }
- },
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
- "version": "7.25.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz",
- "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.3"
- }
- },
- "@babel/plugin-bugfix-safari-class-field-initializer-scope": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz",
- "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz",
- "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz",
- "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.7"
- }
- },
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz",
- "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.0"
- }
- },
- "@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0-placeholder-for-preset-env.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
- "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
- "dev": true,
- "requires": {}
- },
- "@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
- }
- },
- "@babel/plugin-syntax-class-static-block": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
- "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
- }
- },
- "@babel/plugin-syntax-import-assertions": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz",
- "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-syntax-import-attributes": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz",
- "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-private-property-in-object": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
- "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-unicode-sets-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
- "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-arrow-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz",
- "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-async-generator-functions": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz",
- "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-remap-async-to-generator": "^7.25.0",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/traverse": "^7.25.4"
- }
- },
- "@babel/plugin-transform-async-to-generator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz",
- "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==",
- "dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-remap-async-to-generator": "^7.24.7"
- }
- },
- "@babel/plugin-transform-block-scoped-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz",
- "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-block-scoping": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz",
- "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-class-properties": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz",
- "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.25.4",
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-class-static-block": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz",
- "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- }
- },
- "@babel/plugin-transform-classes": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz",
- "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-replace-supers": "^7.25.0",
- "@babel/traverse": "^7.25.4",
- "globals": "^11.1.0"
- }
- },
- "@babel/plugin-transform-computed-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz",
- "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/template": "^7.24.7"
- }
- },
- "@babel/plugin-transform-destructuring": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz",
- "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-dotall-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz",
- "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-duplicate-keys": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz",
- "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz",
- "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.0",
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-dynamic-import": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz",
- "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- }
- },
- "@babel/plugin-transform-exponentiation-operator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz",
- "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==",
- "dev": true,
- "requires": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-export-namespace-from": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz",
- "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- }
- },
- "@babel/plugin-transform-for-of": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz",
- "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
- }
- },
- "@babel/plugin-transform-function-name": {
- "version": "7.25.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz",
- "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==",
- "dev": true,
- "requires": {
- "@babel/helper-compilation-targets": "^7.24.8",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.1"
- }
- },
- "@babel/plugin-transform-json-strings": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz",
- "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- }
- },
- "@babel/plugin-transform-literals": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz",
- "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz",
- "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- }
- },
- "@babel/plugin-transform-member-expression-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz",
- "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-modules-amd": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz",
- "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-modules-commonjs": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz",
- "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.24.8",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-simple-access": "^7.24.7"
- }
- },
- "@babel/plugin-transform-modules-systemjs": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz",
- "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.25.0",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
- "@babel/traverse": "^7.25.0"
- }
- },
- "@babel/plugin-transform-modules-umd": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz",
- "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz",
- "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-new-target": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz",
- "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz",
- "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- }
- },
- "@babel/plugin-transform-numeric-separator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz",
- "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- }
- },
- "@babel/plugin-transform-object-rest-spread": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz",
- "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==",
- "dev": true,
- "requires": {
- "@babel/helper-compilation-targets": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.24.7"
- }
- },
- "@babel/plugin-transform-object-super": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz",
- "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-replace-supers": "^7.24.7"
- }
- },
- "@babel/plugin-transform-optional-catch-binding": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz",
- "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- }
- },
- "@babel/plugin-transform-optional-chaining": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz",
- "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- }
- },
- "@babel/plugin-transform-parameters": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz",
- "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-private-methods": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz",
- "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.25.4",
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-private-property-in-object": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz",
- "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- }
- },
- "@babel/plugin-transform-property-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz",
- "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-react-jsx-self": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz",
- "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-react-jsx-source": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz",
- "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-regenerator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz",
- "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "regenerator-transform": "^0.15.2"
- }
- },
- "@babel/plugin-transform-reserved-words": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz",
- "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-shorthand-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz",
- "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-spread": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz",
- "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
- }
- },
- "@babel/plugin-transform-sticky-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz",
- "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-template-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz",
- "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-typeof-symbol": {
- "version": "7.24.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz",
- "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/plugin-transform-unicode-escapes": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz",
- "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-unicode-property-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz",
- "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-unicode-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz",
- "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- }
- },
- "@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz",
- "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8"
- }
- },
- "@babel/preset-env": {
- "version": "7.25.4",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz",
- "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.25.4",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-validator-option": "^7.24.8",
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3",
- "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0",
- "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.24.7",
- "@babel/plugin-syntax-import-attributes": "^7.24.7",
- "@babel/plugin-syntax-import-meta": "^7.10.4",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.24.7",
- "@babel/plugin-transform-async-generator-functions": "^7.25.4",
- "@babel/plugin-transform-async-to-generator": "^7.24.7",
- "@babel/plugin-transform-block-scoped-functions": "^7.24.7",
- "@babel/plugin-transform-block-scoping": "^7.25.0",
- "@babel/plugin-transform-class-properties": "^7.25.4",
- "@babel/plugin-transform-class-static-block": "^7.24.7",
- "@babel/plugin-transform-classes": "^7.25.4",
- "@babel/plugin-transform-computed-properties": "^7.24.7",
- "@babel/plugin-transform-destructuring": "^7.24.8",
- "@babel/plugin-transform-dotall-regex": "^7.24.7",
- "@babel/plugin-transform-duplicate-keys": "^7.24.7",
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0",
- "@babel/plugin-transform-dynamic-import": "^7.24.7",
- "@babel/plugin-transform-exponentiation-operator": "^7.24.7",
- "@babel/plugin-transform-export-namespace-from": "^7.24.7",
- "@babel/plugin-transform-for-of": "^7.24.7",
- "@babel/plugin-transform-function-name": "^7.25.1",
- "@babel/plugin-transform-json-strings": "^7.24.7",
- "@babel/plugin-transform-literals": "^7.25.2",
- "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
- "@babel/plugin-transform-member-expression-literals": "^7.24.7",
- "@babel/plugin-transform-modules-amd": "^7.24.7",
- "@babel/plugin-transform-modules-commonjs": "^7.24.8",
- "@babel/plugin-transform-modules-systemjs": "^7.25.0",
- "@babel/plugin-transform-modules-umd": "^7.24.7",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
- "@babel/plugin-transform-new-target": "^7.24.7",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
- "@babel/plugin-transform-numeric-separator": "^7.24.7",
- "@babel/plugin-transform-object-rest-spread": "^7.24.7",
- "@babel/plugin-transform-object-super": "^7.24.7",
- "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.8",
- "@babel/plugin-transform-parameters": "^7.24.7",
- "@babel/plugin-transform-private-methods": "^7.25.4",
- "@babel/plugin-transform-private-property-in-object": "^7.24.7",
- "@babel/plugin-transform-property-literals": "^7.24.7",
- "@babel/plugin-transform-regenerator": "^7.24.7",
- "@babel/plugin-transform-reserved-words": "^7.24.7",
- "@babel/plugin-transform-shorthand-properties": "^7.24.7",
- "@babel/plugin-transform-spread": "^7.24.7",
- "@babel/plugin-transform-sticky-regex": "^7.24.7",
- "@babel/plugin-transform-template-literals": "^7.24.7",
- "@babel/plugin-transform-typeof-symbol": "^7.24.8",
- "@babel/plugin-transform-unicode-escapes": "^7.24.7",
- "@babel/plugin-transform-unicode-property-regex": "^7.24.7",
- "@babel/plugin-transform-unicode-regex": "^7.24.7",
- "@babel/plugin-transform-unicode-sets-regex": "^7.25.4",
- "@babel/preset-modules": "0.1.6-no-external-plugins",
- "babel-plugin-polyfill-corejs2": "^0.4.10",
- "babel-plugin-polyfill-corejs3": "^0.10.6",
- "babel-plugin-polyfill-regenerator": "^0.6.1",
- "core-js-compat": "^3.37.1",
- "semver": "^6.3.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@babel/preset-modules": {
- "version": "0.1.6-no-external-plugins",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
- "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
- }
- },
- "@babel/regjsgen": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
- "dev": true
- },
- "@babel/runtime": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
- "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
- "requires": {
- "regenerator-runtime": "^0.14.0"
- }
- },
- "@babel/template": {
- "version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
- "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.24.7",
- "@babel/parser": "^7.25.0",
- "@babel/types": "^7.25.0"
- }
- },
- "@babel/traverse": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz",
- "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.6",
- "@babel/parser": "^7.25.6",
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.6",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
- }
- },
- "@babel/types": {
- "version": "7.25.6",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
- "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
- "dev": true,
- "requires": {
- "@babel/helper-string-parser": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@capacitor/camera": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@capacitor/camera/-/camera-4.1.5.tgz",
- "integrity": "sha512-E00IRsJiIr1kP3EkJa0OWp//TDFXOx3ifDfmLOmIkPxKt1FfuNheE0ipWBo5b44pKsx9pO64Rm9MkfUhgH5Rfg==",
- "requires": {}
- },
- "@capacitor/cli": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-4.7.1.tgz",
- "integrity": "sha512-cUEMci4KBb8gwIDXaO9F2Woz1wnugB/vVq2sRVy8+fzOfhmHlxweuH+h9RktDkpceVi+COfxYw/VPjg1wjC1tA==",
- "dev": true,
- "requires": {
- "@ionic/cli-framework-output": "^2.2.5",
- "@ionic/utils-fs": "^3.1.6",
- "@ionic/utils-subprocess": "^2.1.11",
- "@ionic/utils-terminal": "^2.3.3",
- "commander": "^9.3.0",
- "debug": "^4.3.4",
- "env-paths": "^2.2.0",
- "kleur": "^4.1.4",
- "native-run": "^1.6.0",
- "open": "^8.4.0",
- "plist": "^3.0.5",
- "prompts": "^2.4.2",
- "rimraf": "^3.0.2",
- "semver": "^7.3.7",
- "tar": "^6.1.11",
- "tslib": "^2.4.0",
- "xml2js": "^0.4.23"
- },
- "dependencies": {
- "commander": {
- "version": "9.5.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
- "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
- "dev": true
- }
- }
- },
- "@capacitor/core": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-4.7.1.tgz",
- "integrity": "sha512-NZcsyPNt1avNELnKuD5OsL/O/ejQxlw9UkLUEuiptPPAEwS8WJ1gGabaEBbCb2wNA/nPfrGH+ZC2LGhlpMlLeg==",
- "requires": {
- "tslib": "^2.1.0"
- }
- },
- "@capacitor/preferences": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@capacitor/preferences/-/preferences-4.0.2.tgz",
- "integrity": "sha512-HgcRkMdVHSIV3TeQLZFmCaCeMWQ25wLyZZ7dA2f8Rw81Q1Nroxsi7HxTEGNqrWKSN9PNKBJD8vChr6eB2GNtZg==",
- "requires": {}
- },
- "@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
- "dev": true,
- "optional": true
- },
- "@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
- "dev": true,
- "optional": true
- },
- "@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
- "dev": true,
- "optional": true
- },
- "@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
- "dev": true,
- "optional": true
- },
- "@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
- "dev": true,
- "optional": true
- },
- "@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
- "dev": true,
- "optional": true
- },
- "@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
- "dev": true,
- "optional": true
- },
- "@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
- "dev": true,
- "optional": true
- },
- "@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
- "dev": true,
- "optional": true
- },
- "@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
- "dev": true,
- "optional": true
- },
- "@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
- "dev": true,
- "optional": true
- },
- "@ionic/cli-framework-output": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/@ionic/cli-framework-output/-/cli-framework-output-2.2.5.tgz",
- "integrity": "sha512-YeDLTnTaE6V4IDUxT8GDIep0GuRIFaR7YZDLANMuuWJZDmnTku6DP+MmQoltBeLmVvz1BAAZgk41xzxdq6H2FQ==",
- "dev": true,
- "requires": {
- "@ionic/utils-terminal": "2.3.3",
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/core": {
- "version": "8.2.6",
- "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.2.6.tgz",
- "integrity": "sha512-9vLxIR+QFzeim/C6LV62vOm5e6EIoVZsLb5RjlnQICDbDf14iqcBjA+MZpW628HbADX7p9/ulaq8WFgx5085ZA==",
- "requires": {
- "@stencil/core": "^4.19.2",
- "ionicons": "^7.2.2",
- "tslib": "^2.1.0"
- }
- },
- "@ionic/pwa-elements": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@ionic/pwa-elements/-/pwa-elements-3.3.0.tgz",
- "integrity": "sha512-vbykpxd2nGRlA67AnqDwsiVf8PUmInLyi6lQdnPDjeiML1WZa0CPe6r632nGDV9PTi+sWNde9Xexg9SD6Pwyqw=="
- },
- "@ionic/react": {
- "version": "8.2.6",
- "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.2.6.tgz",
- "integrity": "sha512-qcdd04P3vZzeyQvjF/7RIK9JJPxQgpBm3VxUh6a/NUPuLsq4d66UcD2pr4vGaejD3Vf15wyZeHDAVQGjqq+X2A==",
- "requires": {
- "@ionic/core": "8.2.6",
- "ionicons": "^7.0.0",
- "tslib": "*"
- }
- },
- "@ionic/react-router": {
- "version": "8.2.6",
- "resolved": "https://registry.npmjs.org/@ionic/react-router/-/react-router-8.2.6.tgz",
- "integrity": "sha512-Fs8IafBxD8tMmsN9PvAEgW0GHJGl1gtVeAW1NkW22wOeS+mLoZxd6iV0lqr5tnV1uhQZBQeCoaH4MtM497ltdw==",
- "requires": {
- "@ionic/react": "8.2.6",
- "tslib": "*"
- }
- },
- "@ionic/utils-array": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.5.tgz",
- "integrity": "sha512-HD72a71IQVBmQckDwmA8RxNVMTbxnaLbgFOl+dO5tbvW9CkkSFCv41h6fUuNsSEVgngfkn0i98HDuZC8mk+lTA==",
- "dev": true,
- "requires": {
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/utils-fs": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.6.tgz",
- "integrity": "sha512-eikrNkK89CfGPmexjTfSWl4EYqsPSBh0Ka7by4F0PLc1hJZYtJxUZV3X4r5ecA8ikjicUmcbU7zJmAjmqutG/w==",
- "dev": true,
- "requires": {
- "@types/fs-extra": "^8.0.0",
- "debug": "^4.0.0",
- "fs-extra": "^9.0.0",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/utils-object": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.5.tgz",
- "integrity": "sha512-XnYNSwfewUqxq+yjER1hxTKggftpNjFLJH0s37jcrNDwbzmbpFTQTVAp4ikNK4rd9DOebX/jbeZb8jfD86IYxw==",
- "dev": true,
- "requires": {
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/utils-process": {
- "version": "2.1.10",
- "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.10.tgz",
- "integrity": "sha512-mZ7JEowcuGQK+SKsJXi0liYTcXd2bNMR3nE0CyTROpMECUpJeAvvaBaPGZf5ERQUPeWBVuwqAqjUmIdxhz5bxw==",
- "dev": true,
- "requires": {
- "@ionic/utils-object": "2.1.5",
- "@ionic/utils-terminal": "2.3.3",
- "debug": "^4.0.0",
- "signal-exit": "^3.0.3",
- "tree-kill": "^1.2.2",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/utils-stream": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.5.tgz",
- "integrity": "sha512-hkm46uHvEC05X/8PHgdJi4l4zv9VQDELZTM+Kz69odtO9zZYfnt8DkfXHJqJ+PxmtiE5mk/ehJWLnn/XAczTUw==",
- "dev": true,
- "requires": {
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/utils-subprocess": {
- "version": "2.1.11",
- "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.11.tgz",
- "integrity": "sha512-6zCDixNmZCbMCy5np8klSxOZF85kuDyzZSTTQKQP90ZtYNCcPYmuFSzaqDwApJT4r5L3MY3JrqK1gLkc6xiUPw==",
- "dev": true,
- "requires": {
- "@ionic/utils-array": "2.1.5",
- "@ionic/utils-fs": "3.1.6",
- "@ionic/utils-process": "2.1.10",
- "@ionic/utils-stream": "3.1.5",
- "@ionic/utils-terminal": "2.3.3",
- "cross-spawn": "^7.0.3",
- "debug": "^4.0.0",
- "tslib": "^2.0.1"
- }
- },
- "@ionic/utils-terminal": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.3.tgz",
- "integrity": "sha512-RnuSfNZ5fLEyX3R5mtcMY97cGD1A0NVBbarsSQ6yMMfRJ5YHU7hHVyUfvZeClbqkBC/pAqI/rYJuXKCT9YeMCQ==",
- "dev": true,
- "requires": {
- "@types/slice-ansi": "^4.0.0",
- "debug": "^4.0.0",
- "signal-exit": "^3.0.3",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "tslib": "^2.0.1",
- "untildify": "^4.0.0",
- "wrap-ansi": "^7.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- }
- }
- }
- },
- "@jest/types": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
- "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^13.0.0"
- }
- },
- "@jridgewell/gen-mapping": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true
- },
- "@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true
- },
- "@jridgewell/source-map": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz",
- "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
- "dev": true,
- "peer": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "@rollup/rollup-android-arm-eabi": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz",
- "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-android-arm64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz",
- "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-darwin-arm64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz",
- "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-darwin-x64": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz",
- "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz",
- "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz",
- "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-arm64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz",
- "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-arm64-musl": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz",
- "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz",
- "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz",
- "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-s390x-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz",
- "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-x64-gnu": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz",
- "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-linux-x64-musl": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz",
- "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-win32-arm64-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz",
- "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-win32-ia32-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz",
- "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==",
- "dev": true,
- "optional": true
- },
- "@rollup/rollup-win32-x64-msvc": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz",
- "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==",
- "dev": true,
- "optional": true
- },
- "@sheerun/mutationobserver-shim": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz",
- "integrity": "sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q==",
- "dev": true
- },
- "@stencil/core": {
- "version": "4.21.0",
- "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.21.0.tgz",
- "integrity": "sha512-v50lnVbzS8mpMSnEVxR+G75XpvxHKtkJaQrNPE8+/fF6Ppr5z4bcdcBhcP8LPfEW+4BZcic6VifMXRwTopc+kw=="
- },
- "@supabase/auth-helpers-nextjs": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.9.0.tgz",
- "integrity": "sha512-V+UKFngSCkzAucX3Zi5D4TRiJZUUx0RDme7W217nIkwhCTvJY7Ih2L1cgnAMihQost2YYgTzJ7DrUzz4mm8i8A==",
- "requires": {
- "@supabase/auth-helpers-shared": "0.6.3",
- "set-cookie-parser": "^2.6.0"
- }
- },
- "@supabase/auth-helpers-react": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-react/-/auth-helpers-react-0.3.1.tgz",
- "integrity": "sha512-g3SFv08Dz9FapNif/ZY1b7qKGlMJDyTLSayHBz3kb3FuYxg7aLWgQtydDhm5AGbc0XtvpIBuhGTIOVevwpdosA==",
- "requires": {}
- },
- "@supabase/auth-helpers-shared": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.6.3.tgz",
- "integrity": "sha512-xYQRLFeFkL4ZfwC7p9VKcarshj3FB2QJMgJPydvOY7J5czJe6xSG5/wM1z63RmAzGbCkKg+dzpq61oeSyWiGBQ==",
- "requires": {
- "jose": "^4.14.4"
- }
- },
- "@supabase/auth-js": {
- "version": "2.64.2",
- "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.64.2.tgz",
- "integrity": "sha512-s+lkHEdGiczDrzXJ1YWt2y3bxRi+qIUnXcgkpLSrId7yjBeaXBFygNjTaoZLG02KNcYwbuZ9qkEIqmj2hF7svw==",
- "requires": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "@supabase/functions-js": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.1.tgz",
- "integrity": "sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA==",
- "requires": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "@supabase/node-fetch": {
- "version": "2.6.15",
- "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz",
- "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==",
- "requires": {
- "whatwg-url": "^5.0.0"
- }
- },
- "@supabase/postgrest-js": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.15.6.tgz",
- "integrity": "sha512-zg3URVhoHOijdqMyn3LIFHh+Pqj5BmRqWAaoSExzIHc4m0kGBMPMjDcleamGhbelAAiKbjpQ04mBgooDliGl5A==",
- "requires": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "@supabase/realtime-js": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.10.1.tgz",
- "integrity": "sha512-SrrXxE8xgwWvjREQMkC9LIHIoCQde+OqkFPKP2s/O0ROjhmJ/iXeLvoWhAzXh9gwire4oaK14/ncL/iRiaVWQw==",
- "requires": {
- "@supabase/node-fetch": "^2.6.14",
- "@types/phoenix": "^1.5.4",
- "@types/ws": "^8.5.10",
- "ws": "^8.14.2"
- }
- },
- "@supabase/ssr": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@supabase/ssr/-/ssr-0.5.1.tgz",
- "integrity": "sha512-+G94H/GZG0nErZ3FQV9yJmsC5Rj7dmcfCAwOt37hxeR1La+QTl8cE9whzYwPUrTJjMLGNXoO+1BMvVxwBAbz4g==",
- "requires": {
- "cookie": "^0.6.0"
- }
- },
- "@supabase/storage-js": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.6.0.tgz",
- "integrity": "sha512-REAxr7myf+3utMkI2oOmZ6sdplMZZ71/2NEIEMBZHL9Fkmm3/JnaOZVSRqvG4LStYj2v5WhCruCzuMn6oD/Drw==",
- "requires": {
- "@supabase/node-fetch": "^2.6.14"
- }
- },
- "@supabase/supabase-js": {
- "version": "2.44.0",
- "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.44.0.tgz",
- "integrity": "sha512-SzMvAgSVuPzx7itiYiascXAVBqTcZ9zX3ONIdhZEWKUEgWaJftfPyVvz+PMYznK77miSMuy1f4geAvPElyiS2g==",
- "requires": {
- "@supabase/auth-js": "2.64.2",
- "@supabase/functions-js": "2.4.1",
- "@supabase/node-fetch": "2.6.15",
- "@supabase/postgrest-js": "1.15.6",
- "@supabase/realtime-js": "2.10.1",
- "@supabase/storage-js": "2.6.0"
- }
- },
- "@testing-library/dom": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-6.10.0.tgz",
- "integrity": "sha512-8Tq4aRDeukB+6WE0rVXO1TlS38uu05CpbHgEa9SLR3JWuBajOVEPk9HgOfOFOqWqoo5nEIthXBgLobbofEhuUg==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.6.2",
- "@sheerun/mutationobserver-shim": "^0.3.2",
- "@types/testing-library__dom": "^6.0.0",
- "aria-query": "3.0.0",
- "pretty-format": "^24.9.0",
- "wait-for-expect": "^3.0.0"
- }
- },
- "@testing-library/react": {
- "version": "9.3.1",
- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-9.3.1.tgz",
- "integrity": "sha512-BXlYrbxTkifNVb7rIC8EHqYXgG/rBeULqG3V0wbEAuSaZ7n5ERX9Bcp0i+9EecrNpLNPwR0cIxdKNp6qVTZS9A==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.6.0",
- "@testing-library/dom": "^6.3.0",
- "@types/testing-library__react": "^9.1.0"
- }
- },
- "@types/babel__core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "@types/babel__generator": {
- "version": "7.6.8",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
- "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__template": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__traverse": {
- "version": "7.20.6",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
- "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.20.7"
- }
- },
- "@types/debug": {
- "version": "4.1.12",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
- "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
- "requires": {
- "@types/ms": "*"
- }
- },
- "@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
- },
- "@types/estree-jsx": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
- "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
- "requires": {
- "@types/estree": "*"
- }
- },
- "@types/fs-extra": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz",
- "integrity": "sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/googlemaps": {
- "version": "3.38.0",
- "resolved": "https://registry.npmjs.org/@types/googlemaps/-/googlemaps-3.38.0.tgz",
- "integrity": "sha512-Rp7FnrwyYGnjoxM+/q/4DRqUzvV9JKK1SBRXx8APxU6NNMtYMsWmOMsQOV2U6z8aMFzlUbRv3EDixLcDep8t9w==",
- "dev": true
- },
- "@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "requires": {
- "@types/unist": "*"
- }
- },
- "@types/history": {
- "version": "4.7.11",
- "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz",
- "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==",
- "dev": true
- },
- "@types/istanbul-lib-coverage": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
- "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==",
- "dev": true
- },
- "@types/istanbul-lib-report": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz",
- "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "@types/istanbul-reports": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz",
- "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "*",
- "@types/istanbul-lib-report": "*"
- }
- },
- "@types/jest": {
- "version": "24.0.18",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.18.tgz",
- "integrity": "sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==",
- "dev": true,
- "requires": {
- "@types/jest-diff": "*"
- }
- },
- "@types/jest-diff": {
- "version": "20.0.1",
- "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz",
- "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==",
- "dev": true
- },
- "@types/js-cookie": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz",
- "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA=="
- },
- "@types/mdast": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
- "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
- "requires": {
- "@types/unist": "*"
- }
- },
- "@types/ms": {
- "version": "0.7.34",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
- "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
- },
- "@types/node": {
- "version": "20.11.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz",
- "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==",
- "requires": {
- "undici-types": "~5.26.4"
- }
- },
- "@types/phoenix": {
- "version": "1.6.5",
- "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.5.tgz",
- "integrity": "sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w=="
- },
- "@types/prop-types": {
- "version": "15.7.3",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
- "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
- },
- "@types/react": {
- "version": "18.2.48",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz",
- "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==",
- "requires": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "@types/react-dom": {
- "version": "18.2.18",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz",
- "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==",
- "dev": true,
- "requires": {
- "@types/react": "*"
- }
- },
- "@types/react-router": {
- "version": "5.1.20",
- "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz",
- "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==",
- "dev": true,
- "requires": {
- "@types/history": "^4.7.11",
- "@types/react": "*"
- }
- },
- "@types/react-router-dom": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz",
- "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==",
- "dev": true,
- "requires": {
- "@types/history": "^4.7.11",
- "@types/react": "*",
- "@types/react-router": "*"
- }
- },
- "@types/scheduler": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
- },
- "@types/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-+OpjSaq85gvlZAYINyzKpLeiFkSC4EsC6IIiT6v6TLSU5k5U83fHGj9Lel8oKEXM0HqgrMVCjXPDPVICtxF7EQ==",
- "dev": true
- },
- "@types/testing-library__dom": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.10.0.tgz",
- "integrity": "sha512-mL/GMlyQxiZplbUuFNwA0vAI3k3uJNSf6slr5AVve9TXmfLfyefNT0uHHnxwdYuPMxYD5gI/+dgAvc/5opW9JQ==",
- "dev": true,
- "requires": {
- "pretty-format": "^24.3.0"
- }
- },
- "@types/testing-library__react": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.2.tgz",
- "integrity": "sha512-CYaMqrswQ+cJACy268jsLAw355DZtPZGt3Jwmmotlcu8O/tkoXBI6AeZ84oZBJsIsesozPKzWzmv/0TIU+1E9Q==",
- "dev": true,
- "requires": {
- "@types/react-dom": "*",
- "@types/testing-library__dom": "*"
- }
- },
- "@types/unist": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
- "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="
- },
- "@types/ws": {
- "version": "8.5.12",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz",
- "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/yargs": {
- "version": "13.0.3",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz",
- "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==",
- "dev": true,
- "requires": {
- "@types/yargs-parser": "*"
- }
- },
- "@types/yargs-parser": {
- "version": "13.1.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz",
- "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==",
- "dev": true
- },
- "@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
- },
- "@vitejs/plugin-legacy": {
- "version": "5.4.2",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-5.4.2.tgz",
- "integrity": "sha512-hlyyQL+wEIyOWdwsUKX+0g3kBU4AbHmVzHarLvVKiGGGqLIYjttMvvjk6zGY8RD9dab6QuFNhDoxg0YFhQ26xA==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.25.2",
- "@babel/preset-env": "^7.25.3",
- "browserslist": "^4.23.3",
- "browserslist-to-esbuild": "^2.1.1",
- "core-js": "^3.38.0",
- "magic-string": "^0.30.11",
- "regenerator-runtime": "^0.14.1",
- "systemjs": "^6.15.1"
- }
- },
- "@vitejs/plugin-react": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz",
- "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.24.5",
- "@babel/plugin-transform-react-jsx-self": "^7.24.5",
- "@babel/plugin-transform-react-jsx-source": "^7.24.1",
- "@types/babel__core": "^7.20.5",
- "react-refresh": "^0.14.2"
- }
- },
- "@xobotyi/scrollbar-width": {
- "version": "1.9.5",
- "resolved": "https://registry.npmjs.org/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz",
- "integrity": "sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ=="
- },
- "acorn": {
- "version": "8.8.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
- "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
- "dev": true,
- "peer": true
- },
- "aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dev": true,
- "requires": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- }
- },
- "ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.21.3"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "aria-query": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
- "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=",
- "dev": true,
- "requires": {
- "ast-types-flow": "0.0.7",
- "commander": "^2.11.0"
- }
- },
- "ast-types-flow": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
- "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
- "dev": true
- },
- "astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true
- },
- "at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true
- },
- "babel-plugin-polyfill-corejs2": {
- "version": "0.4.11",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
- "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.6.2",
- "semver": "^6.3.1"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "babel-plugin-polyfill-corejs3": {
- "version": "0.10.6",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
- "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
- "dev": true,
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.6.2",
- "core-js-compat": "^3.38.0"
- }
- },
- "babel-plugin-polyfill-regenerator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
- "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
- "dev": true,
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.6.2"
- }
- },
- "bail": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
- "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true
- },
- "big-integer": {
- "version": "1.6.51",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
- "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
- "dev": true
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
- },
- "bplist-parser": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz",
- "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==",
- "dev": true,
- "requires": {
- "big-integer": "1.6.x"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browserslist": {
- "version": "4.23.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
- "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001646",
- "electron-to-chromium": "^1.5.4",
- "node-releases": "^2.0.18",
- "update-browserslist-db": "^1.1.0"
- }
- },
- "browserslist-to-esbuild": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/browserslist-to-esbuild/-/browserslist-to-esbuild-2.1.1.tgz",
- "integrity": "sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==",
- "dev": true,
- "requires": {
- "meow": "^13.0.0"
- }
- },
- "buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true,
- "peer": true
- },
- "caniuse-lite": {
- "version": "1.0.30001655",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz",
- "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==",
- "dev": true
- },
- "ccount": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
- "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "character-entities": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
- "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="
- },
- "character-entities-html4": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
- "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="
- },
- "character-entities-legacy": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
- "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="
- },
- "character-reference-invalid": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
- "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="
- },
- "chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "dev": true
- },
- "clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "dev": true
- },
- "cli-truncate": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
- "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==",
- "dev": true,
- "requires": {
- "slice-ansi": "^5.0.0",
- "string-width": "^5.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true
- },
- "string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dev": true,
- "requires": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
- }
- },
- "strip-ansi": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
- "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
- "dev": true,
- "requires": {
- "ansi-regex": "^6.0.1"
- }
- }
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "colorette": {
- "version": "2.0.19",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
- "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
- "dev": true
- },
- "comma-separated-tokens": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
- "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="
- },
- "commander": {
- "version": "2.20.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.1.tgz",
- "integrity": "sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
- },
- "cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw=="
- },
- "copy-to-clipboard": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
- "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
- "requires": {
- "toggle-selection": "^1.0.6"
- }
- },
- "core-js": {
- "version": "3.38.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz",
- "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==",
- "dev": true
- },
- "core-js-compat": {
- "version": "3.38.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz",
- "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==",
- "dev": true,
- "requires": {
- "browserslist": "^4.23.3"
- }
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "dependencies": {
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "css-in-js-utils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz",
- "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==",
- "requires": {
- "hyphenate-style-name": "^1.0.3"
- }
- },
- "css-tree": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
- "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
- "requires": {
- "mdn-data": "2.0.14",
- "source-map": "^0.6.1"
- }
- },
- "csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
- },
- "date-fns": {
- "version": "2.25.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz",
- "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w=="
- },
- "dayjs": {
- "version": "1.11.13",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
- "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "decode-named-character-reference": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
- "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
- "requires": {
- "character-entities": "^2.0.0"
- }
- },
- "define-lazy-prop": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
- "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
- "dev": true
- },
- "dequal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="
- },
- "devlop": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
- "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
- "requires": {
- "dequal": "^2.0.0"
- }
- },
- "eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true
- },
- "electron-to-chromium": {
- "version": "1.5.13",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz",
- "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==",
- "dev": true
- },
- "elementtree": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz",
- "integrity": "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg==",
- "dev": true,
- "requires": {
- "sax": "1.1.4"
- }
- },
- "emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
- },
- "env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true
- },
- "error-stack-parser": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
- "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
- "requires": {
- "stackframe": "^1.3.4"
- }
- },
- "esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
- "dev": true,
- "requires": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
- }
- },
- "escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "estree-util-is-identifier-name": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
- "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "execa": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz",
- "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.1",
- "human-signals": "^4.3.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^3.0.7",
- "strip-final-newline": "^3.0.0"
- },
- "dependencies": {
- "mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true
- },
- "onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
- "requires": {
- "mimic-fn": "^4.0.0"
- }
- }
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "fast-shallow-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz",
- "integrity": "sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw=="
- },
- "fastest-stable-stringify": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz",
- "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q=="
- },
- "fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dev": true,
- "requires": {
- "pend": "~1.2.0"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dev": true,
- "requires": {
- "minipass": "^3.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "optional": true
- },
- "function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true
- },
- "get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- },
- "graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.2"
- }
- },
- "hast-util-to-jsx-runtime": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz",
- "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==",
- "requires": {
- "@types/estree": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/unist": "^3.0.0",
- "comma-separated-tokens": "^2.0.0",
- "devlop": "^1.0.0",
- "estree-util-is-identifier-name": "^3.0.0",
- "hast-util-whitespace": "^3.0.0",
- "mdast-util-mdx-expression": "^2.0.0",
- "mdast-util-mdx-jsx": "^3.0.0",
- "mdast-util-mdxjs-esm": "^2.0.0",
- "property-information": "^6.0.0",
- "space-separated-tokens": "^2.0.0",
- "style-to-object": "^1.0.0",
- "unist-util-position": "^5.0.0",
- "vfile-message": "^4.0.0"
- }
- },
- "hast-util-whitespace": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
- "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
- "requires": {
- "@types/hast": "^3.0.0"
- }
- },
- "history": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
- "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
- "requires": {
- "@babel/runtime": "^7.1.2",
- "loose-envify": "^1.2.0",
- "resolve-pathname": "^3.0.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0",
- "value-equal": "^1.0.1"
- }
- },
- "hoist-non-react-statics": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
- "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
- "requires": {
- "react-is": "^16.7.0"
- }
- },
- "html-parse-stringify": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
- "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==",
- "requires": {
- "void-elements": "3.1.0"
- }
- },
- "html-url-attributes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.0.tgz",
- "integrity": "sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow=="
- },
- "human-signals": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
- "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
- "dev": true
- },
- "husky": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz",
- "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==",
- "dev": true
- },
- "hyphenate-style-name": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz",
- "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw=="
- },
- "i18next": {
- "version": "22.5.1",
- "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.1.tgz",
- "integrity": "sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==",
- "requires": {
- "@babel/runtime": "^7.20.6"
- }
- },
- "i18next-browser-languagedetector": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.1.tgz",
- "integrity": "sha512-h/pM34bcH6tbz8WgGXcmWauNpQupCGr25XPp9cZwZInR9XHSjIFDYp1SIok7zSPsTOMxdvuLyu86V+g2Kycnfw==",
- "requires": {
- "@babel/runtime": "^7.23.2"
- }
- },
- "immer": {
- "version": "9.0.21",
- "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
- "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA=="
- },
- "immutable": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz",
- "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg=="
- },
- "indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "ini": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz",
- "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==",
- "dev": true
- },
- "inline-style-parser": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz",
- "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g=="
- },
- "inline-style-prefixer": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-7.0.1.tgz",
- "integrity": "sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==",
- "requires": {
- "css-in-js-utils": "^3.1.0"
- }
- },
- "ionicons": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-7.2.2.tgz",
- "integrity": "sha512-I3iYIfc9Q9FRifWyFSwTAvbEABWlWY32i0sAVDDPGYnaIZVugkLCZFbEcrphW6ixVPg8tt1oLwalo/JJwbEqnA==",
- "requires": {
- "@stencil/core": "^4.0.3"
- }
- },
- "is-alphabetical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
- "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="
- },
- "is-alphanumerical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
- "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
- "requires": {
- "is-alphabetical": "^2.0.0",
- "is-decimal": "^2.0.0"
- }
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-core-module": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
- "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
- "dev": true,
- "requires": {
- "hasown": "^2.0.2"
- }
- },
- "is-decimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
- "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="
- },
- "is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-hexadecimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
- "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
- },
- "is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="
- },
- "is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true
- },
- "is-wsl": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
- "dev": true,
- "requires": {
- "is-docker": "^2.0.0"
- }
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "jose": {
- "version": "4.15.9",
- "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz",
- "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA=="
- },
- "js-cookie": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
- "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ=="
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
- "json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "kleur": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
- "dev": true
- },
- "lilconfig": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
- "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
- "dev": true
- },
- "lint-staged": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.0.tgz",
- "integrity": "sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==",
- "dev": true,
- "requires": {
- "chalk": "5.2.0",
- "cli-truncate": "^3.1.0",
- "commander": "^10.0.0",
- "debug": "^4.3.4",
- "execa": "^7.0.0",
- "lilconfig": "2.1.0",
- "listr2": "^5.0.7",
- "micromatch": "^4.0.5",
- "normalize-path": "^3.0.0",
- "object-inspect": "^1.12.3",
- "pidtree": "^0.6.0",
- "string-argv": "^0.3.1",
- "yaml": "^2.2.1"
- },
- "dependencies": {
- "chalk": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
- "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
- "dev": true
- },
- "commander": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz",
- "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==",
- "dev": true
- }
- }
- },
- "listr2": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz",
- "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==",
- "dev": true,
- "requires": {
- "cli-truncate": "^2.1.0",
- "colorette": "^2.0.19",
- "log-update": "^4.0.0",
- "p-map": "^4.0.0",
- "rfdc": "^1.3.0",
- "rxjs": "^7.8.0",
- "through": "^2.3.8",
- "wrap-ansi": "^7.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "cli-truncate": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
- "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
- "dev": true,
- "requires": {
- "slice-ansi": "^3.0.0",
- "string-width": "^4.2.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "rxjs": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
- "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
- "dev": true,
- "requires": {
- "tslib": "^2.1.0"
- }
- },
- "slice-ansi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
- "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- }
- }
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
- "dev": true
- },
- "log-update": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
- "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^4.3.0",
- "cli-cursor": "^3.1.0",
- "slice-ansi": "^4.0.0",
- "wrap-ansi": "^6.2.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "requires": {
- "restore-cursor": "^3.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "requires": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- }
- },
- "slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- }
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- }
- }
- },
- "longest-streak": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
- "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="
- },
- "loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "requires": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- }
- },
- "lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "requires": {
- "yallist": "^3.0.2"
- }
- },
- "magic-string": {
- "version": "0.30.11",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
- "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
- "dev": true,
- "requires": {
- "@jridgewell/sourcemap-codec": "^1.5.0"
- }
- },
- "mdast-util-from-markdown": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz",
- "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==",
- "requires": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark": "^4.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unist-util-stringify-position": "^4.0.0"
- }
- },
- "mdast-util-mdx-expression": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz",
- "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- }
- },
- "mdast-util-mdx-jsx": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz",
- "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "ccount": "^2.0.0",
- "devlop": "^1.1.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0",
- "parse-entities": "^4.0.0",
- "stringify-entities": "^4.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "vfile-message": "^4.0.0"
- }
- },
- "mdast-util-mdxjs-esm": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
- "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- }
- },
- "mdast-util-phrasing": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
- "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
- "requires": {
- "@types/mdast": "^4.0.0",
- "unist-util-is": "^6.0.0"
- }
- },
- "mdast-util-to-hast": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
- "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
- "requires": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@ungap/structured-clone": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "trim-lines": "^3.0.0",
- "unist-util-position": "^5.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
- }
- },
- "mdast-util-to-markdown": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz",
- "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==",
- "requires": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "longest-streak": "^3.0.0",
- "mdast-util-phrasing": "^4.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "unist-util-visit": "^5.0.0",
- "zwitch": "^2.0.0"
- }
- },
- "mdast-util-to-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
- "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
- "requires": {
- "@types/mdast": "^4.0.0"
- }
- },
- "mdn-data": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
- "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="
- },
- "meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true
- },
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "micromark": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz",
- "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==",
- "requires": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-combine-extensions": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-core-commonmark": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz",
- "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==",
- "requires": {
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-factory-destination": "^2.0.0",
- "micromark-factory-label": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-factory-title": "^2.0.0",
- "micromark-factory-whitespace": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-html-tag-name": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-factory-destination": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz",
- "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==",
- "requires": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-factory-label": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz",
- "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==",
- "requires": {
- "devlop": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-factory-space": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
- "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
- "requires": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-factory-title": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz",
- "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==",
- "requires": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-factory-whitespace": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz",
- "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==",
- "requires": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-util-character": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
- "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
- "requires": {
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-util-chunked": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz",
- "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==",
- "requires": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "micromark-util-classify-character": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz",
- "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==",
- "requires": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-util-combine-extensions": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz",
- "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==",
- "requires": {
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-util-decode-numeric-character-reference": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz",
- "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==",
- "requires": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "micromark-util-decode-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz",
- "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==",
- "requires": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "micromark-util-encode": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
- "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA=="
- },
- "micromark-util-html-tag-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz",
- "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw=="
- },
- "micromark-util-normalize-identifier": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz",
- "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==",
- "requires": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "micromark-util-resolve-all": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz",
- "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==",
- "requires": {
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-util-sanitize-uri": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz",
- "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==",
- "requires": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "micromark-util-subtokenize": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz",
- "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==",
- "requires": {
- "devlop": "^1.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "micromark-util-symbol": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
- "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw=="
- },
- "micromark-util-types": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
- "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w=="
- },
- "micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minipass": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz",
- "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==",
- "dev": true
- },
- "minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "dev": true,
- "requires": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "nano-css": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.6.2.tgz",
- "integrity": "sha512-+6bHaC8dSDGALM1HJjOHVXpuastdu2xFoZlC77Jh4cg+33Zcgm+Gxd+1xsnpZK14eyHObSp82+ll5y3SX75liw==",
- "requires": {
- "@jridgewell/sourcemap-codec": "^1.4.15",
- "css-tree": "^1.1.2",
- "csstype": "^3.1.2",
- "fastest-stable-stringify": "^2.0.2",
- "inline-style-prefixer": "^7.0.1",
- "rtl-css-js": "^1.16.1",
- "stacktrace-js": "^2.0.2",
- "stylis": "^4.3.0"
- }
- },
- "nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
- "dev": true
- },
- "native-run": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/native-run/-/native-run-1.7.2.tgz",
- "integrity": "sha512-2aahC8iXIO8BcvEukVMrYwL5sXurkuIGyQgfSGBto832W6ejV+cB5Ww+2/CRxmyozhbxARJ2OMpEGPV8sTqsrQ==",
- "dev": true,
- "requires": {
- "@ionic/utils-fs": "^3.1.6",
- "@ionic/utils-terminal": "^2.3.3",
- "bplist-parser": "^0.3.2",
- "debug": "^4.3.4",
- "elementtree": "^0.1.7",
- "ini": "^3.0.1",
- "plist": "^3.0.6",
- "split2": "^4.1.0",
- "through2": "^4.0.2",
- "tslib": "^2.4.0",
- "yauzl": "^2.10.0"
- }
- },
- "node-releases": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
- "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
- "dev": true
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
- },
- "npm-run-path": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
- "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
- "dev": true,
- "requires": {
- "path-key": "^4.0.0"
- },
- "dependencies": {
- "path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true
- }
- }
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
- "object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "open": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
- "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
- "dev": true,
- "requires": {
- "define-lazy-prop": "^2.0.0",
- "is-docker": "^2.1.1",
- "is-wsl": "^2.2.0"
- }
- },
- "p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
- "requires": {
- "aggregate-error": "^3.0.0"
- }
- },
- "parse-entities": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
- "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
- "requires": {
- "@types/unist": "^2.0.0",
- "character-entities": "^2.0.0",
- "character-entities-legacy": "^3.0.0",
- "character-reference-invalid": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "is-alphanumerical": "^2.0.0",
- "is-decimal": "^2.0.0",
- "is-hexadecimal": "^2.0.0"
- },
- "dependencies": {
- "@types/unist": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
- "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
- }
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "path-to-regexp": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
- "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
- "requires": {
- "isarray": "0.0.1"
- }
- },
- "pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
- },
- "picocolors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
- "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
- },
- "pidtree": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
- "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
- "dev": true
- },
- "plist": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz",
- "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==",
- "dev": true,
- "requires": {
- "base64-js": "^1.5.1",
- "xmlbuilder": "^15.1.1"
- }
- },
- "postcss": {
- "version": "8.4.44",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz",
- "integrity": "sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==",
- "dev": true,
- "requires": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.1",
- "source-map-js": "^1.2.0"
- }
- },
- "prettier": {
- "version": "2.8.6",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
- "integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ=="
- },
- "prettier-plugin-organize-imports": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.0.0.tgz",
- "integrity": "sha512-vnKSdgv9aOlqKeEFGhf9SCBsTyzDSyScy1k7E0R1Uo4L0cTcOV7c1XQaT7jfXIOc/p08WLBfN2QUQA9zDSZMxA==",
- "requires": {}
- },
- "pretty-format": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
- "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
- "dev": true,
- "requires": {
- "@jest/types": "^24.9.0",
- "ansi-regex": "^4.0.0",
- "ansi-styles": "^3.2.0",
- "react-is": "^16.8.4"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true
- }
- }
- },
- "prompts": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
- "dev": true,
- "requires": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
- "dependencies": {
- "kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true
- }
- }
- },
- "prop-types": {
- "version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "requires": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.13.1"
- },
- "dependencies": {
- "react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- }
- }
- },
- "property-information": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
- "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="
- },
- "pullstate": {
- "version": "1.25.0",
- "resolved": "https://registry.npmjs.org/pullstate/-/pullstate-1.25.0.tgz",
- "integrity": "sha512-6SJMhK5EbDhrbyocMQOZKY3QKC5RfLcdtYD1y7wioF5dseVsdi3vmeHG3TwW4SrhQQP/WKyU/Np2X6UOhq1F6g==",
- "requires": {
- "fast-deep-equal": "^3.1.3",
- "immer": "^9.0.16"
- }
- },
- "react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
- "requires": {
- "loose-envify": "^1.1.0"
- }
- },
- "react-dom": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
- "requires": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.0"
- }
- },
- "react-i18next": {
- "version": "12.3.1",
- "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.3.1.tgz",
- "integrity": "sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==",
- "requires": {
- "@babel/runtime": "^7.20.6",
- "html-parse-stringify": "^3.0.1"
- }
- },
- "react-is": {
- "version": "16.10.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.1.tgz",
- "integrity": "sha512-BXUMf9sIOPXXZWqr7+c5SeOKJykyVr2u0UDzEf4LNGc6taGkQe1A9DFD07umCIXz45RLr9oAAwZbAJ0Pkknfaw=="
- },
- "react-markdown": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz",
- "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==",
- "requires": {
- "@types/hast": "^3.0.0",
- "devlop": "^1.0.0",
- "hast-util-to-jsx-runtime": "^2.0.0",
- "html-url-attributes": "^3.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "remark-parse": "^11.0.0",
- "remark-rehype": "^11.0.0",
- "unified": "^11.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
- }
- },
- "react-refresh": {
- "version": "0.14.2",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
- "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
- "dev": true
- },
- "react-router": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
- "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==",
- "requires": {
- "@babel/runtime": "^7.12.13",
- "history": "^4.9.0",
- "hoist-non-react-statics": "^3.1.0",
- "loose-envify": "^1.3.1",
- "path-to-regexp": "^1.7.0",
- "prop-types": "^15.6.2",
- "react-is": "^16.6.0",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0"
- }
- },
- "react-router-dom": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz",
- "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==",
- "requires": {
- "@babel/runtime": "^7.12.13",
- "history": "^4.9.0",
- "loose-envify": "^1.3.1",
- "prop-types": "^15.6.2",
- "react-router": "5.3.4",
- "tiny-invariant": "^1.0.2",
- "tiny-warning": "^1.0.0"
- }
- },
- "react-universal-interface": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz",
- "integrity": "sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==",
- "requires": {}
- },
- "react-use": {
- "version": "17.5.1",
- "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.5.1.tgz",
- "integrity": "sha512-LG/uPEVRflLWMwi3j/sZqR00nF6JGqTTDblkXK2nzXsIvij06hXl1V/MZIlwj1OKIQUtlh1l9jK8gLsRyCQxMg==",
- "requires": {
- "@types/js-cookie": "^2.2.6",
- "@xobotyi/scrollbar-width": "^1.9.5",
- "copy-to-clipboard": "^3.3.1",
- "fast-deep-equal": "^3.1.3",
- "fast-shallow-equal": "^1.0.0",
- "js-cookie": "^2.2.1",
- "nano-css": "^5.6.2",
- "react-universal-interface": "^0.6.2",
- "resize-observer-polyfill": "^1.5.1",
- "screenfull": "^5.1.0",
- "set-harmonic-interval": "^1.0.1",
- "throttle-debounce": "^3.0.1",
- "ts-easing": "^0.2.0",
- "tslib": "^2.1.0"
- }
- },
- "readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
- "dev": true
- },
- "regenerate-unicode-properties": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
- "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
- "dev": true,
- "requires": {
- "regenerate": "^1.4.2"
- }
- },
- "regenerator-runtime": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
- },
- "regenerator-transform": {
- "version": "0.15.2",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
- "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "regexpu-core": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
- "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
- "dev": true,
- "requires": {
- "@babel/regjsgen": "^0.8.0",
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- }
- },
- "regjsparser": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
- "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
- "dev": true,
- "requires": {
- "jsesc": "~0.5.0"
- },
- "dependencies": {
- "jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "dev": true
- }
- }
- },
- "remark-parse": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
- "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
- "requires": {
- "@types/mdast": "^4.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unified": "^11.0.0"
- }
- },
- "remark-rehype": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz",
- "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==",
- "requires": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "unified": "^11.0.0",
- "vfile": "^6.0.0"
- }
- },
- "reselect": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz",
- "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA=="
- },
- "resize-observer-polyfill": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
- "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
- },
- "resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "resolve-pathname": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
- "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
- },
- "rfdc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "rollup": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.2.tgz",
- "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==",
- "dev": true,
- "requires": {
- "@rollup/rollup-android-arm-eabi": "4.21.2",
- "@rollup/rollup-android-arm64": "4.21.2",
- "@rollup/rollup-darwin-arm64": "4.21.2",
- "@rollup/rollup-darwin-x64": "4.21.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.21.2",
- "@rollup/rollup-linux-arm-musleabihf": "4.21.2",
- "@rollup/rollup-linux-arm64-gnu": "4.21.2",
- "@rollup/rollup-linux-arm64-musl": "4.21.2",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.21.2",
- "@rollup/rollup-linux-s390x-gnu": "4.21.2",
- "@rollup/rollup-linux-x64-gnu": "4.21.2",
- "@rollup/rollup-linux-x64-musl": "4.21.2",
- "@rollup/rollup-win32-arm64-msvc": "4.21.2",
- "@rollup/rollup-win32-ia32-msvc": "4.21.2",
- "@rollup/rollup-win32-x64-msvc": "4.21.2",
- "@types/estree": "1.0.5",
- "fsevents": "~2.3.2"
- }
- },
- "rtl-css-js": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz",
- "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==",
- "requires": {
- "@babel/runtime": "^7.1.2"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- },
- "sass": {
- "version": "1.59.3",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.59.3.tgz",
- "integrity": "sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ==",
- "requires": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
- "source-map-js": ">=0.6.2 <2.0.0"
- }
- },
- "sax": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz",
- "integrity": "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==",
- "dev": true
- },
- "scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
- "requires": {
- "loose-envify": "^1.1.0"
- }
- },
- "screenfull": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz",
- "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA=="
- },
- "semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "set-cookie-parser": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz",
- "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ=="
- },
- "set-harmonic-interval": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz",
- "integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g=="
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
- },
- "slice-ansi": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
- "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^6.0.0",
- "is-fullwidth-code-point": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
- "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
- "dev": true
- }
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "source-map-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg=="
- },
- "source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "peer": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "space-separated-tokens": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
- "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="
- },
- "split2": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz",
- "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==",
- "dev": true
- },
- "ssr-window": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz",
- "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ=="
- },
- "stack-generator": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
- "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
- "requires": {
- "stackframe": "^1.3.4"
- }
- },
- "stackframe": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
- "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
- },
- "stacktrace-gps": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz",
- "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==",
- "requires": {
- "source-map": "0.5.6",
- "stackframe": "^1.3.4"
- },
- "dependencies": {
- "source-map": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
- "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA=="
- }
- }
- },
- "stacktrace-js": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz",
- "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==",
- "requires": {
- "error-stack-parser": "^2.0.6",
- "stack-generator": "^2.0.5",
- "stacktrace-gps": "^3.0.4"
- }
- },
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.2.0"
- }
- },
- "string-argv": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
- "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "dependencies": {
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- }
- }
- },
- "stringify-entities": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
- "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
- "requires": {
- "character-entities-html4": "^2.0.0",
- "character-entities-legacy": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true
- },
- "style-to-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.7.tgz",
- "integrity": "sha512-uSjr59G5u6fbxUfKbb8GcqMGT3Xs9v5IbPkjb0S16GyOeBLAzSRK0CixBv5YrYvzO6TDLzIS6QCn78tkqWngPw==",
- "requires": {
- "inline-style-parser": "0.2.3"
- }
- },
- "stylis": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz",
- "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now=="
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true
- },
- "swiper": {
- "version": "9.1.1",
- "resolved": "https://registry.npmjs.org/swiper/-/swiper-9.1.1.tgz",
- "integrity": "sha512-D1zArOwI6XCXCYBULPA4jTxpqp5SQtvntjinbXNZwXzj6P3KS51zSWuMarCLXq5oRISay4nX+TuShpxz8qhtbw==",
- "requires": {
- "ssr-window": "^4.0.2"
- }
- },
- "systemjs": {
- "version": "6.15.1",
- "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.15.1.tgz",
- "integrity": "sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==",
- "dev": true
- },
- "tar": {
- "version": "6.1.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
- "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
- "dev": true,
- "requires": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^4.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "dependencies": {
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
- },
- "terser": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.0.tgz",
- "integrity": "sha512-pdL757Ig5a0I+owA42l6tIuEycRuM7FPY4n62h44mRLRfnOxJkkOHd6i89dOpwZlpF6JXBwaAHF6yWzFrt+QyA==",
- "dev": true,
- "peer": true,
- "requires": {
- "@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.8.2",
- "commander": "^2.20.0",
- "source-map-support": "~0.5.20"
- }
- },
- "throttle-debounce": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
- "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg=="
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "through2": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
- "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
- "dev": true,
- "requires": {
- "readable-stream": "3"
- }
- },
- "tiny-invariant": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz",
- "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw=="
- },
- "tiny-warning": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
- "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "toggle-selection": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
- "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
- },
- "tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
- "tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true
- },
- "trim-lines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
- "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="
- },
- "trough": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
- "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="
- },
- "ts-easing": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz",
- "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ=="
- },
- "tslib": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
- "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
- },
- "type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true
- },
- "typescript": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
- "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw=="
- },
- "undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
- },
- "unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
- "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
- "dev": true
- },
- "unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
- "dev": true,
- "requires": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- }
- },
- "unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
- "dev": true
- },
- "unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
- "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
- "dev": true
- },
- "unified": {
- "version": "11.0.5",
- "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
- "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
- "requires": {
- "@types/unist": "^3.0.0",
- "bail": "^2.0.0",
- "devlop": "^1.0.0",
- "extend": "^3.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^6.0.0"
- }
- },
- "unist-util-is": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
- "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
- "requires": {
- "@types/unist": "^3.0.0"
- }
- },
- "unist-util-position": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
- "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
- "requires": {
- "@types/unist": "^3.0.0"
- }
- },
- "unist-util-stringify-position": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
- "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
- "requires": {
- "@types/unist": "^3.0.0"
- }
- },
- "unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
- "requires": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0",
- "unist-util-visit-parents": "^6.0.0"
- }
- },
- "unist-util-visit-parents": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
- "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
- "requires": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true
- },
- "untildify": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
- "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
- "dev": true
- },
- "update-browserslist-db": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
- "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
- "dev": true,
- "requires": {
- "escalade": "^3.1.2",
- "picocolors": "^1.0.1"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "value-equal": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
- "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
- },
- "vfile": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
- "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
- "requires": {
- "@types/unist": "^3.0.0",
- "vfile-message": "^4.0.0"
- }
- },
- "vfile-message": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
- "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
- "requires": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
- }
- },
- "vite": {
- "version": "5.4.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.3.tgz",
- "integrity": "sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==",
- "dev": true,
- "requires": {
- "esbuild": "^0.21.3",
- "fsevents": "~2.3.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- }
- },
- "void-elements": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
- "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w=="
- },
- "wait-for-expect": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.1.tgz",
- "integrity": "sha512-3Ha7lu+zshEG/CeHdcpmQsZnnZpPj/UsG3DuKO8FskjuDbkx3jE3845H+CuwZjA2YWYDfKMU2KhnCaXMLd3wVw==",
- "dev": true
- },
- "webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
- "whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "requires": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "ws": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
- "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
- "requires": {}
- },
- "xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
- "dev": true,
- "requires": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- },
- "dependencies": {
- "xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
- "dev": true
- }
- }
- },
- "xmlbuilder": {
- "version": "15.1.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
- "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
- "dev": true
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- },
- "yaml": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz",
- "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==",
- "dev": true
- },
- "yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "dev": true,
- "requires": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
- }
- },
- "zwitch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
- "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="
- }
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/package.json b/03_source/mobile_old.del/mobile_main/package.json
deleted file mode 100644
index 4933648..0000000
--- a/03_source/mobile_old.del/mobile_main/package.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- "name": "ionic-react-conference-app",
- "version": "0.0.1",
- "private": true,
- "scripts": {
- "start": "npm run dev",
- "dev": "vite --host 0.0.0.0 --cors --force --strictPort",
- "build": "tsc && vite build",
- "preview": "vite preview",
- "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,json,md}\"",
- "precommit": "npm run format && lint-staged",
- "prepare": "husky install"
- },
- "eslintConfig": {
- "extends": "react-app"
- },
- "browserslist": [
- ">0.2%",
- "not dead",
- "not ie <= 11",
- "not op_mini all"
- ],
- "lint-staged": {
- "src/**/*.{js,jsx,ts,tsx,json,md}": [
- "prettier --write",
- "git add"
- ]
- },
- "description": "An Ionic project",
- "dependencies": {
- "@capacitor/camera": "^4.1.5",
- "@capacitor/core": "^4.6.1",
- "@capacitor/preferences": "^4.0.2",
- "@ionic/pwa-elements": "^3.3.0",
- "@ionic/react": "8.2.6",
- "@ionic/react-router": "8.2.6",
- "@supabase/auth-helpers-nextjs": "^0.9.0",
- "@supabase/auth-helpers-react": "^0.3.1",
- "@supabase/ssr": "latest",
- "@supabase/supabase-js": "2.44.0",
- "date-fns": "^2.25.0",
- "dayjs": "^1.11.13",
- "i18next": "^22.4.14",
- "i18next-browser-languagedetector": "^7.0.1",
- "ionicons": "^7.1.2",
- "lodash": "^4.17.21",
- "prettier-plugin-organize-imports": "^4.0.0",
- "pullstate": "^1.22.1",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-i18next": "^12.2.0",
- "react-markdown": "^9.0.1",
- "react-router": "^5.3.4",
- "react-router-dom": "^5.3.4",
- "react-use": "^17.2.4",
- "reselect": "^4.0.0",
- "sass": "^1.59.3",
- "swiper": "^9.1.1",
- "typescript": "5.3.3"
- },
- "devDependencies": {
- "@capacitor/cli": "^4.6.1",
- "@testing-library/react": "^9.3.1",
- "@types/googlemaps": "^3.38.0",
- "@types/jest": "24.0.18",
- "@types/node": "20.11.5",
- "@types/react": "18.2.48",
- "@types/react-dom": "18.2.18",
- "@types/react-router": "^5.1.20",
- "@types/react-router-dom": "^5.3.3",
- "@vitejs/plugin-legacy": "^5.4.1",
- "@vitejs/plugin-react": "^4.3.1",
- "husky": "^8.0.3",
- "lint-staged": "^13.2.0",
- "prettier": "^2.8.6",
- "vite": "^5.4.0"
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/data/S_A.en.md b/03_source/mobile_old.del/mobile_main/public/assets/data/S_A.en.md
deleted file mode 100644
index 2719d0d..0000000
--- a/03_source/mobile_old.del/mobile_main/public/assets/data/S_A.en.md
+++ /dev/null
@@ -1,55 +0,0 @@
-歡迎使用香港單身派對!本服務協議及社區規範(以下簡稱“協議”)旨在規範您使用香港單身派對(以下簡稱“平台”)的行為,確保平台的健康運營和用戶的良好體驗。請在使用平台前仔細閱讀並遵守本協議。
-
-1. 服務內容
- 香港單身派對提供以下服務:
-
- (a) 附近的人交友:使用地理定位功能幫助您認識附近的用戶。
-
- (b) 線上活動參與:平台不定期舉辦各類線上活動,包括但不限於遊戲配對、主題討論和社交聚會。
-
-2. 用戶權利與義務
-
- (a) 用戶有權使用平台提供的服務,並參與平台組織的活動。
-
- (b) 用戶應確保其在平台上發布的個人照片及資料真實且屬於本人,不得使用他人的照片或虛假信息。
-
- (c) 用戶應遵守相關法律法規,不得利用平台進行任何非法活動。
-
- (d) 用戶應尊重其他用戶的隱私權和個人信息安全,不得收集、使用或披露其他用戶的信息。
-
- (e) 用戶應維護良好的社區環境,不得發布任何違背公序良俗、含有歧視、騷擾、暴力或色情等內容的信息。
-
- (f) 用戶不得抄襲、模仿或以其他方式侵犯平台的知識產權,包括但不限於應用程序的界面設計、功能實現和內容創作。
-
- (g) 本平台僅限於 18 歲以上的用戶使用。未滿 18 歲的用戶不得使用平台,一旦發現,其帳號將被終止。
-
-3. 社區規範
- (a) 禁止發布任何形式的廣告、垃圾信息或欺詐信息。
- (b) 用戶應保持友好互動,避免使用侮辱性、攻擊性的語言。
- (c) 用戶不得發布、傳播任何侵犯他人知識產權或其他合法權益的信息。
- (d) 用戶應遵守平台的操作規範,不得進行任何破壞平台正常運行的行為。
-
-4. 隱私保護
- 平台將採取合理措施保護用戶的個人信息,並遵守相關隱私保護法律法規。用戶同意平台在提供服務過程中收集和使用其個人信息。
-
-5. 違規處理
- 用戶違反本協議時,平台將視情節輕重給予警告或終止其帳號的使用權。嚴重違反者將被永久禁止使用平台服務。
-
-6. 協議的變更與終止
-
- (a) 平台有權根據需要對本協議進行修改,並在平台上公佈最新版本。
-
- (b) 如用戶違反本協議,平台有權限制或終止其使用平台的權利。
-
-7. 爭議解決
- 因本協議引起的任何爭議,雙方應首先嘗試友好協商解決;協商不成時,任何一方可直接提出訴訟。
-
-8. 其他
-
- (a) 本平台保留對所有情況的最終決定權和解釋權。
-
- (b) 本協議的附件是協議不可分割的一部分,與協議具有同等法律效力。
-
-用戶在使用平台服務時,即表示已閱讀、理解並同意遵守本協議。
-
-~ 完 ~
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/data/S_A.zh..md b/03_source/mobile_old.del/mobile_main/public/assets/data/S_A.zh..md
deleted file mode 100644
index aec9cec..0000000
--- a/03_source/mobile_old.del/mobile_main/public/assets/data/S_A.zh..md
+++ /dev/null
@@ -1,53 +0,0 @@
-歡迎使用香港單身派對!本服務協議及社區規範(以下簡稱“協議”)旨在規範您使用香港單身派對(以下簡稱“平台”)的行為,確保平台的健康運營和用戶的良好體驗。請在使用平台前仔細閱讀並遵守本協議。
-
-1. 服務內容
- 香港單身派對提供以下服務:
-
- (a) 附近的人交友:使用地理定位功能幫助您認識附近的用戶。
-
- (b) 線上活動參與:平台不定期舉辦各類線上活動,包括但不限於遊戲配對、主題討論和社交聚會。
-
-2. 用戶權利與義務
-
- (a) 用戶有權使用平台提供的服務,並參與平台組織的活動。
-
- (b) 用戶應確保其在平台上發布的個人照片及資料真實且屬於本人,不得使用他人的照片或虛假信息。
-
- (c) 用戶應遵守相關法律法規,不得利用平台進行任何非法活動。
-
- (d) 用戶應尊重其他用戶的隱私權和個人信息安全,不得收集、使用或披露其他用戶的信息。
-
- (e) 用戶應維護良好的社區環境,不得發布任何違背公序良俗、含有歧視、騷擾、暴力或色情等內容的信息。
-
- (f) 用戶不得抄襲、模仿或以其他方式侵犯平台的知識產權,包括但不限於應用程序的界面設計、功能實現和內容創作。
-
- (g) 本平台僅限於 18 歲以上的用戶使用。未滿 18 歲的用戶不得使用平台,一旦發現,其帳號將被終止。
-
-3. 社區規範
- (a) 禁止發布任何形式的廣告、垃圾信息或欺詐信息。
- (b) 用戶應保持友好互動,避免使用侮辱性、攻擊性的語言。
- (c) 用戶不得發布、傳播任何侵犯他人知識產權或其他合法權益的信息。
- (d) 用戶應遵守平台的操作規範,不得進行任何破壞平台正常運行的行為。
-
-4. 隱私保護
- 平台將採取合理措施保護用戶的個人信息,並遵守相關隱私保護法律法規。用戶同意平台在提供服務過程中收集和使用其個人信息。
-
-5. 違規處理
- 用戶違反本協議時,平台將視情節輕重給予警告或終止其帳號的使用權。嚴重違反者將被永久禁止使用平台服務。
-
-6. 協議的變更與終止
-
- (a) 平台有權根據需要對本協議進行修改,並在平台上公佈最新版本。
-
- (b) 如用戶違反本協議,平台有權限制或終止其使用平台的權利。
-
-7. 爭議解決
- 因本協議引起的任何爭議,雙方應首先嘗試友好協商解決;協商不成時,任何一方可直接提出訴訟。
-
-8. 其他
-
- (a) 本平台保留對所有情況的最終決定權和解釋權。
-
- (b) 本協議的附件是協議不可分割的一部分,與協議具有同等法律效力。
-
-用戶在使用平台服務時,即表示已閱讀、理解並同意遵守本協議。
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/data/Terms.en.md b/03_source/mobile_old.del/mobile_main/public/assets/data/Terms.en.md
deleted file mode 100644
index 94d5c47..0000000
--- a/03_source/mobile_old.del/mobile_main/public/assets/data/Terms.en.md
+++ /dev/null
@@ -1,45 +0,0 @@
-## Privacy Policy
-
-Welcome to Hong Kong Single Party. We understand the importance of privacy to you and are committed to taking all reasonable measures to protect your personal information. This Privacy Policy aims to explain how we collect, use, store, and protect your personal information, as well as the rights you have regarding your information.
-
-1. Collection of Personal Information
- To provide the best social experience, we may collect the following types of personal information when you use [Friend Circle]:
-
- - Basic Information: Such as your name, gender, date of birth, phone number, and email address.
- - Location Information: When you enable location services, we may collect information about the location of your device to recommend nearby activities and friends.
- - Usage Information: Including the time, frequency, preference settings, and interaction data of your use of [Friend Circle].
- - Activity Participation Information: When you participate in our offline activities, we may collect information about your participation and feedback.
-
-2. Use of Personal Information
- We use your personal information mainly for the following purposes:
-
- - Service Provision and Improvement: To ensure that [Friend Circle] functions properly and to continuously optimize and improve it.
- - Personalized Experience: To provide you with a more personalized service and recommendations based on your preferences and usage habits.
- - Activity Organization: To organize and arrange offline activities that interest you, including game matching and social gatherings.
- - Communication: To send you important notifications, such as activity updates, new features, or customer service-related information.
- - Security: To protect the security of your account and to prevent and investigate potential security issues.
-
-3. Storage and Protection of Personal Information
- We will take appropriate technical and organizational measures to protect your personal information against unauthorized access, disclosure, alteration, or destruction. We will store your personal information on secure servers and restrict employee access to this information.
-
-4. Sharing and Transfer of Personal Information
- We will not sell or provide your personal information to third parties unless:
-
- - We have your explicit consent.
- - It is necessary to share information with trusted third-party partners to provide a service or feature you have requested.
- - Required by law or to comply with legal processes.
-
-5. Your Rights
- You have the following rights regarding your personal information:
-
- - Right to Access: You have the right to access the personal information we hold about you.
- - Right to Rectification: You have the right to request corrections if you find any inaccuracies in the information we hold.
- - Right to Erasure: Under certain circumstances, you have the right to request the deletion of your personal information.
-
-6. Policy Updates
- We may update this Privacy Policy from time to time. All updates will be published within the [Friend Circle] application and will be reflected in the new effective date of the updated Privacy Policy.
-
-7. Contact Us
- If you have any questions or concerns about this Privacy Policy, or if you wish to exercise any of the above rights, please contact us using “Contact us”of Hong Kong Single party. Our team will respond as soon as possible. Please wait.
-
-Hong Kong Single Party. We will continue to strive to provide you with a safer and more reliable social experience.
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/data/Terms.zh.md b/03_source/mobile_old.del/mobile_main/public/assets/data/Terms.zh.md
deleted file mode 100644
index 94d5c47..0000000
--- a/03_source/mobile_old.del/mobile_main/public/assets/data/Terms.zh.md
+++ /dev/null
@@ -1,45 +0,0 @@
-## Privacy Policy
-
-Welcome to Hong Kong Single Party. We understand the importance of privacy to you and are committed to taking all reasonable measures to protect your personal information. This Privacy Policy aims to explain how we collect, use, store, and protect your personal information, as well as the rights you have regarding your information.
-
-1. Collection of Personal Information
- To provide the best social experience, we may collect the following types of personal information when you use [Friend Circle]:
-
- - Basic Information: Such as your name, gender, date of birth, phone number, and email address.
- - Location Information: When you enable location services, we may collect information about the location of your device to recommend nearby activities and friends.
- - Usage Information: Including the time, frequency, preference settings, and interaction data of your use of [Friend Circle].
- - Activity Participation Information: When you participate in our offline activities, we may collect information about your participation and feedback.
-
-2. Use of Personal Information
- We use your personal information mainly for the following purposes:
-
- - Service Provision and Improvement: To ensure that [Friend Circle] functions properly and to continuously optimize and improve it.
- - Personalized Experience: To provide you with a more personalized service and recommendations based on your preferences and usage habits.
- - Activity Organization: To organize and arrange offline activities that interest you, including game matching and social gatherings.
- - Communication: To send you important notifications, such as activity updates, new features, or customer service-related information.
- - Security: To protect the security of your account and to prevent and investigate potential security issues.
-
-3. Storage and Protection of Personal Information
- We will take appropriate technical and organizational measures to protect your personal information against unauthorized access, disclosure, alteration, or destruction. We will store your personal information on secure servers and restrict employee access to this information.
-
-4. Sharing and Transfer of Personal Information
- We will not sell or provide your personal information to third parties unless:
-
- - We have your explicit consent.
- - It is necessary to share information with trusted third-party partners to provide a service or feature you have requested.
- - Required by law or to comply with legal processes.
-
-5. Your Rights
- You have the following rights regarding your personal information:
-
- - Right to Access: You have the right to access the personal information we hold about you.
- - Right to Rectification: You have the right to request corrections if you find any inaccuracies in the information we hold.
- - Right to Erasure: Under certain circumstances, you have the right to request the deletion of your personal information.
-
-6. Policy Updates
- We may update this Privacy Policy from time to time. All updates will be published within the [Friend Circle] application and will be reflected in the new effective date of the updated Privacy Policy.
-
-7. Contact Us
- If you have any questions or concerns about this Privacy Policy, or if you wish to exercise any of the above rights, please contact us using “Contact us”of Hong Kong Single party. Our team will respond as soon as possible. Please wait.
-
-Hong Kong Single Party. We will continue to strive to provide you with a safer and more reliable social experience.
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/data/data.json b/03_source/mobile_old.del/mobile_main/public/assets/data/data.json
deleted file mode 100644
index 5675cdc..0000000
--- a/03_source/mobile_old.del/mobile_main/public/assets/data/data.json
+++ /dev/null
@@ -1,467 +0,0 @@
-{
- "schedule": [
- {
- "date": "2047-05-17",
- "groups": [
- {
- "time": "8:00 am",
- "sessions": [
- {
- "name": "Breakfast",
- "timeStart": "8:00 am",
- "timeEnd": "9:00 am",
- "location": "Dining Hall",
- "tracks": ["Food"],
- "id": "1"
- }
- ]
- },
- {
- "time": "9:15 am",
- "sessions": [
- {
- "name": "Getting Started with Ionic",
- "location": "Hall 2",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Ted Turtle"],
- "timeStart": "9:30 am",
- "timeEnd": "9:45 am",
- "tracks": ["Ionic"],
- "id": "2"
- },
- {
- "name": "Ionic Tooling",
- "location": "Executive Ballroom",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Rachel Rabbit"],
- "timeStart": "9:45 am",
- "timeEnd": "10:00 am",
- "tracks": ["Tooling"],
- "id": "3"
- },
- {
- "name": "University of Ionic",
- "location": "Hall 3",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Ellie Elephant"],
- "timeStart": "9:15 am",
- "timeEnd": "9:30 am",
- "tracks": ["Ionic"],
- "id": "4"
- }
- ]
- },
- {
- "time": "10:00 am",
- "sessions": [
- {
- "name": "Migrating to Ionic",
- "location": "Hall 1",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Eva Eagle", "Lionel Lion"],
- "timeStart": "10:00 am",
- "timeEnd": "10:15 am",
- "tracks": ["Ionic"],
- "id": "5"
- },
- {
- "name": "What's New in Angular",
- "location": "Hall 3",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Rachel Rabbit"],
- "timeStart": "10:15 am",
- "timeEnd": "10:30 am",
- "tracks": ["Angular"],
- "id": "6"
- },
- {
- "name": "The Evolution of Ionicons",
- "location": "Hall 2",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Isabella Iguana", "Eva Eagle"],
- "timeStart": "10:15 am",
- "timeEnd": "10:30 am",
- "tracks": ["Design"],
- "id": "7"
- },
- {
- "name": "Ionic Pro",
- "location": "Grand Ballroom A",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Charlie Cheetah"],
- "timeStart": "10:45 am",
- "timeEnd": "11:00 am",
- "tracks": ["Services"],
- "id": "8"
- }
- ]
- },
- {
- "time": "11:00 am",
- "sessions": [
- {
- "name": "Ionic Workshop",
- "location": "Hall 1",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Karl Kitten", "Lionel Lion"],
- "timeStart": "11:00 am",
- "timeEnd": "11:45 am",
- "tracks": ["Workshop"],
- "id": "9"
- },
- {
- "name": "Community Interaction",
- "location": "Hall 3",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Lionel Lion", "Gino Giraffe"],
- "timeStart": "11:30 am",
- "timeEnd": "11:50 am",
- "tracks": ["Communication"],
- "id": "10"
- },
- {
- "name": "Navigation in Ionic",
- "location": "Grand Ballroom A",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Rachel Rabbit", "Eva Eagle"],
- "timeStart": "11:30 am",
- "timeEnd": "12:00 pm",
- "tracks": ["Navigation"],
- "id": "11"
- }
- ]
- },
- {
- "time": "12:00 pm",
- "sessions": [
- {
- "name": "Lunch",
- "location": "Dining Hall",
- "description": "Come grab lunch with all the Ionic fanatics and talk all things Ionic",
- "timeStart": "12:00 pm",
- "timeEnd": "1:00 pm",
- "tracks": ["Food"],
- "id": "12"
- }
- ]
- },
- {
- "time": "1:00 pm",
- "sessions": [
- {
- "name": "Ionic in the Enterprise",
- "location": "Hall 1",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Paul Puppy"],
- "timeStart": "1:00 pm",
- "timeEnd": "1:15 pm",
- "tracks": ["Communication"],
- "id": "13"
- },
- {
- "name": "Ionic Worldwide",
- "location": "Hall 1",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Gino Giraffe"],
- "timeStart": "1:15 pm",
- "timeEnd": "1:30 pm",
- "tracks": ["Communication"],
- "id": "14"
- },
- {
- "name": "The Ionic Package",
- "location": "Grand Ballroom B",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Molly Mouse", "Burt Bear"],
- "timeStart": "1:30 pm",
- "timeEnd": "2:00 pm",
- "tracks": ["Services"],
- "id": "15"
- }
- ]
- },
- {
- "time": "2:00 pm",
- "sessions": [
- {
- "name": "Push Notifications in Ionic",
- "location": "Hall 2",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Burt Bear", "Charlie Cheetah"],
- "timeStart": "2:00 pm",
- "timeEnd": "2:30 pm",
- "tracks": ["Services"],
- "id": "16"
- },
- {
- "name": "Ionic Documentation",
- "location": "Grand Ballroom B",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Donald Duck"],
- "timeStart": "2:30 pm",
- "timeEnd": "2:45 pm",
- "tracks": ["Documentation"],
- "id": "17"
- },
- {
- "name": "UX in Ionic",
- "location": "Hall 3",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Isabella Iguana", "Ellie Elephant"],
- "timeStart": "2:45 pm",
- "timeEnd": "3:00 pm",
- "tracks": ["Design"],
- "id": "18"
- }
- ]
- },
- {
- "time": "3:00",
- "sessions": [
- {
- "name": "Angular Directives in Ionic",
- "location": "Hall 1",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Ted Turtle"],
- "timeStart": "3:00 pm",
- "timeEnd": "3:30 pm",
- "tracks": ["Angular"],
- "id": "19"
- },
- {
- "name": "Mobile States",
- "location": "Hall 2",
- "description": "Mobile devices and browsers are now advanced enough that developers can build native-quality mobile apps using open web technologies like HTML5, Javascript, and CSS. In this talk, we’ll provide background on why and how we created Ionic, the design decisions made as we integrated Ionic with Angular, and the performance considerations for mobile platforms that our team had to overcome. We’ll also review new and upcoming Ionic features, and talk about the hidden powers and benefits of combining mobile app development and Angular.",
- "speakerNames": ["Rachel Rabbit"],
- "timeStart": "3:30 pm",
- "timeEnd": "3:45 pm",
- "tracks": ["Navigation"],
- "id": "20"
- }
- ]
- }
- ]
- }
- ],
-
- "speakers": [
- {
- "name": "Burt Bear",
- "profilePic": "/assets/img/speakers/bear.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Burt is a Bear. Burt's interests include poetry, dashing space heroes, and lions.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "burt@example.com",
- "phone": "+1-541-754-3010",
- "id": "1"
- },
- {
- "name": "Charlie Cheetah",
- "profilePic": "/assets/img/speakers/cheetah.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Charlie is a Cheetah. Charlie's interests include country music, plush animals, pyrotechnics, and skeletons.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "charlie@example.com",
- "phone": "+1-541-754-3010",
- "id": "2"
- },
- {
- "name": "Donald Duck",
- "profilePic": "/assets/img/speakers/duck.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Donald is a Duck. Donald's interests include carpentry, superheroes, merpeople, and glam rock.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "donald@example.com",
- "phone": "+1-541-754-3010",
- "id": "3"
- },
- {
- "name": "Eva Eagle",
- "profilePic": "/assets/img/speakers/eagle.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Eva is an Eagle. Eva's interests include ants, seashells, and cupcakes.",
- "title": "Developer Advocate",
- "location": "Everywhere",
- "email": "eva@example.com",
- "phone": "+1-541-754-3010",
- "id": "4"
- },
- {
- "name": "Ellie Elephant",
- "profilePic": "/assets/img/speakers/elephant.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Ellie is an Elephant. Ellie's interests include pocket watches, pool, hand fans, and ninjas.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "ellie@example.com",
- "phone": "+1-541-754-3010",
- "id": "5"
- },
- {
- "name": "Gino Giraffe",
- "profilePic": "/assets/img/speakers/giraffe.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Gino is a Giraffe. Gino's interests include candy-making, unicorns, and birdhouses.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "gino@example.com",
- "phone": "+1-541-754-3010",
- "id": "6"
- },
- {
- "name": "Isabella Iguana",
- "profilePic": "/assets/img/speakers/iguana.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Isabella is an Iguana. Isabella's interests include crystals, architecture, and candle-making.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "isabella@example.com",
- "phone": "+1-541-754-3010",
- "id": "7"
- },
- {
- "name": "Karl Kitten",
- "profilePic": "/assets/img/speakers/kitten.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Karl is a Kitten. Karl's interests include skiing, jewelry, and needlepoint.",
- "title": "Developer Advocate",
- "location": "Everywhere",
- "email": "karl@example.com",
- "phone": "+1-541-754-3010",
- "id": "8"
- },
- {
- "name": "Lionel Lion",
- "profilePic": "/assets/img/speakers/lion.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Lionel is a Lion. Lionel's interests include lizards and mathematics.",
- "title": "Developer Advocate",
- "location": "Everywhere",
- "email": "lionel@example.com",
- "phone": "+1-541-754-3010",
- "id": "9"
- },
- {
- "name": "Molly Mouse",
- "profilePic": "/assets/img/speakers/mouse.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Molly is a Mouse. Molly's interests include werewolves and magic.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "molly@example.com",
- "phone": "+1-541-754-3010",
- "id": "10"
- },
- {
- "name": "Paul Puppy",
- "profilePic": "/assets/img/speakers/puppy.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Paul is a Puppy. Paul's interests include maps, whales, and dragons.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "paul@example.com",
- "phone": "+1-541-754-3010",
- "id": "11"
- },
- {
- "name": "Rachel Rabbit",
- "profilePic": "/assets/img/speakers/rabbit.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Rachel is a Rabbit. Rachel's interests include clowns, skeletons, and yo-yos.",
- "title": "Senior Software Engineer",
- "location": "Everywhere",
- "email": "rachel@example.com",
- "phone": "+1-541-754-3010",
- "id": "12"
- },
- {
- "name": "Ted Turtle",
- "profilePic": "/assets/img/speakers/turtle.jpg",
- "instagram": "ionicframework",
- "twitter": "ionicframework",
- "about": "Ted is a Turtle. Ted's interests include butterflies, skiing, and cupcakes.",
- "title": "Software Engineer",
- "location": "Everywhere",
- "email": "ted@example.com",
- "phone": "+1-541-754-3010",
- "id": "13"
- }
- ],
-
- "map": [
- {
- "name": "Monona Terrace Convention Center",
- "lat": 43.071584,
- "lng": -89.38012,
- "center": true
- },
- {
- "name": "Ionic HQ",
- "lat": 43.074395,
- "lng": -89.381056
- },
- {
- "name": "Afterparty - Brocach Irish Pub",
- "lat": 43.07336,
- "lng": -89.38335
- }
- ],
-
- "tracks": [
- {
- "name": "Angular",
- "icon": "logo-angular"
- },
- {
- "name": "Documentation",
- "icon": "document"
- },
- {
- "name": "Food",
- "icon": "restaurant"
- },
- {
- "name": "Ionic",
- "icon": "logo-ionic"
- },
- {
- "name": "Tooling",
- "icon": "hammer"
- },
- {
- "name": "Design",
- "icon": "color-palette"
- },
- {
- "name": "Services",
- "icon": "cog"
- },
- {
- "name": "Workshop",
- "icon": "construct"
- },
- {
- "name": "Communication",
- "icon": "call"
- },
- {
- "name": "Navigation",
- "icon": "compass"
- }
- ]
-}
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/data/locations.json b/03_source/mobile_old.del/mobile_main/public/assets/data/locations.json
deleted file mode 100644
index a6967ea..0000000
--- a/03_source/mobile_old.del/mobile_main/public/assets/data/locations.json
+++ /dev/null
@@ -1,26 +0,0 @@
-[
- {
- "id": 1,
- "name": "Map Center",
- "lat": 43.071584,
- "lng": -89.38012
- },
- {
- "id": 2,
- "name": "Monona Terrace Convention Center",
- "lat": 43.071584,
- "lng": -89.38012
- },
- {
- "id": 3,
- "name": "Ionic HQ",
- "lat": 43.074395,
- "lng": -89.381056
- },
- {
- "id": 4,
- "name": "Afterparty - Brocach Irish Pub",
- "lat": 43.07336,
- "lng": -89.38335
- }
-]
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/icon/favicon.png b/03_source/mobile_old.del/mobile_main/public/assets/icon/favicon.png
deleted file mode 100644
index 51888a7..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/icon/favicon.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/about/austin.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/about/austin.jpg
deleted file mode 100644
index b4eb329..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/about/austin.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/about/chicago.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/about/chicago.jpg
deleted file mode 100644
index b982b65..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/about/chicago.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/about/madison.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/about/madison.jpg
deleted file mode 100644
index c46fbf0..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/about/madison.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/about/seattle.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/about/seattle.jpg
deleted file mode 100644
index 4c5946a..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/about/seattle.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/appicon.png b/03_source/mobile_old.del/mobile_main/public/assets/img/appicon.png
deleted file mode 100644
index 3aa6ee2..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/appicon.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/appicon.svg b/03_source/mobile_old.del/mobile_main/public/assets/img/appicon.svg
deleted file mode 100644
index 3d2a03b..0000000
--- a/03_source/mobile_old.del/mobile_main/public/assets/img/appicon.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/ica-slidebox-img-1.png b/03_source/mobile_old.del/mobile_main/public/assets/img/ica-slidebox-img-1.png
deleted file mode 100644
index 9233602..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/ica-slidebox-img-1.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/ica-slidebox-img-2.png b/03_source/mobile_old.del/mobile_main/public/assets/img/ica-slidebox-img-2.png
deleted file mode 100644
index 2fdce7d..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/ica-slidebox-img-2.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/ica-slidebox-img-3.png b/03_source/mobile_old.del/mobile_main/public/assets/img/ica-slidebox-img-3.png
deleted file mode 100644
index a304e88..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/ica-slidebox-img-3.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/ica-slidebox-img-4.png b/03_source/mobile_old.del/mobile_main/public/assets/img/ica-slidebox-img-4.png
deleted file mode 100644
index 2f263d6..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/ica-slidebox-img-4.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/ionic-logo-white.svg b/03_source/mobile_old.del/mobile_main/public/assets/img/ionic-logo-white.svg
deleted file mode 100644
index 7ebf0cd..0000000
--- a/03_source/mobile_old.del/mobile_main/public/assets/img/ionic-logo-white.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/samples/party_image.avif b/03_source/mobile_old.del/mobile_main/public/assets/img/samples/party_image.avif
deleted file mode 100644
index 661c2c1..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/samples/party_image.avif and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/samples/party_image.png b/03_source/mobile_old.del/mobile_main/public/assets/img/samples/party_image.png
deleted file mode 100644
index 40eba63..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/samples/party_image.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speaker-background.png b/03_source/mobile_old.del/mobile_main/public/assets/img/speaker-background.png
deleted file mode 100644
index 220634e..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speaker-background.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/bear.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/bear.jpg
deleted file mode 100644
index a968db7..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/bear.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/cheetah.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/cheetah.jpg
deleted file mode 100644
index f188a81..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/cheetah.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/duck.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/duck.jpg
deleted file mode 100644
index b8b7c52..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/duck.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/eagle.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/eagle.jpg
deleted file mode 100644
index ac839a5..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/eagle.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/elephant.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/elephant.jpg
deleted file mode 100644
index 0727847..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/elephant.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/giraffe.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/giraffe.jpg
deleted file mode 100644
index 30a854c..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/giraffe.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/iguana.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/iguana.jpg
deleted file mode 100644
index 75d528f..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/iguana.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/kitten.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/kitten.jpg
deleted file mode 100644
index 3cc1359..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/kitten.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/lion.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/lion.jpg
deleted file mode 100644
index f5eb632..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/lion.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/mouse.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/mouse.jpg
deleted file mode 100644
index ca30177..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/mouse.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/puppy.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/puppy.jpg
deleted file mode 100644
index d635a8a..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/puppy.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/rabbit.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/rabbit.jpg
deleted file mode 100644
index 475d62c..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/rabbit.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/turtle.jpg b/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/turtle.jpg
deleted file mode 100644
index 60c3496..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/assets/img/speakers/turtle.jpg and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/assets/shapes.svg b/03_source/mobile_old.del/mobile_main/public/assets/shapes.svg
deleted file mode 100644
index d370b4d..0000000
--- a/03_source/mobile_old.del/mobile_main/public/assets/shapes.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/03_source/mobile_old.del/mobile_main/public/favicon.ico b/03_source/mobile_old.del/mobile_main/public/favicon.ico
deleted file mode 100644
index a11777c..0000000
Binary files a/03_source/mobile_old.del/mobile_main/public/favicon.ico and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/public/manifest.json b/03_source/mobile_old.del/mobile_main/public/manifest.json
deleted file mode 100644
index ee4307c..0000000
--- a/03_source/mobile_old.del/mobile_main/public/manifest.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "short_name": "Ionic React Conf",
- "name": "Ionic React Conf",
- "icons": [
- {
- "src": "assets/icon/favicon.png",
- "sizes": "64x64 32x32 24x24 16x16",
- "type": "image/x-icon"
- },
- {
- "src": "assets/icon/icon.png",
- "type": "image/png",
- "sizes": "512x512",
- "purpose": "maskable"
- }
- ],
- "start_url": ".",
- "display": "standalone",
- "theme_color": "#ffffff",
- "background_color": "#ffffff"
-}
diff --git a/03_source/mobile_old.del/mobile_main/resources/screenshots/android-about.png b/03_source/mobile_old.del/mobile_main/resources/screenshots/android-about.png
deleted file mode 100644
index 4a742f2..0000000
Binary files a/03_source/mobile_old.del/mobile_main/resources/screenshots/android-about.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/resources/screenshots/android-menu.png b/03_source/mobile_old.del/mobile_main/resources/screenshots/android-menu.png
deleted file mode 100644
index 2227764..0000000
Binary files a/03_source/mobile_old.del/mobile_main/resources/screenshots/android-menu.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/resources/screenshots/android-schedule.png b/03_source/mobile_old.del/mobile_main/resources/screenshots/android-schedule.png
deleted file mode 100644
index 7c7629a..0000000
Binary files a/03_source/mobile_old.del/mobile_main/resources/screenshots/android-schedule.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/resources/screenshots/android-speaker-detail.png b/03_source/mobile_old.del/mobile_main/resources/screenshots/android-speaker-detail.png
deleted file mode 100644
index 9aca16f..0000000
Binary files a/03_source/mobile_old.del/mobile_main/resources/screenshots/android-speaker-detail.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/resources/screenshots/android-speakers.png b/03_source/mobile_old.del/mobile_main/resources/screenshots/android-speakers.png
deleted file mode 100644
index b59ab00..0000000
Binary files a/03_source/mobile_old.del/mobile_main/resources/screenshots/android-speakers.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-about.png b/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-about.png
deleted file mode 100644
index 86a8e81..0000000
Binary files a/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-about.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-menu.png b/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-menu.png
deleted file mode 100644
index 4803f31..0000000
Binary files a/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-menu.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-schedule.png b/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-schedule.png
deleted file mode 100644
index c581de1..0000000
Binary files a/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-schedule.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-speaker-detail.png b/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-speaker-detail.png
deleted file mode 100644
index 761a9ec..0000000
Binary files a/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-speaker-detail.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-speakers.png b/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-speakers.png
deleted file mode 100644
index b938fd1..0000000
Binary files a/03_source/mobile_old.del/mobile_main/resources/screenshots/ios-speakers.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/App.scss b/03_source/mobile_old.del/mobile_main/src/App.scss
deleted file mode 100644
index 13076f3..0000000
--- a/03_source/mobile_old.del/mobile_main/src/App.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-/*
- * App Global CSS
- * ----------------------------------------------------------------------------
- * Put style rules here that you want to apply globally. These styles are for
- * the entire app and not just one component.
- */
diff --git a/03_source/mobile_old.del/mobile_main/src/App.test.tsx b/03_source/mobile_old.del/mobile_main/src/App.test.tsx
deleted file mode 100644
index 2ae5593..0000000
--- a/03_source/mobile_old.del/mobile_main/src/App.test.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import App from './App';
-import { render } from '@testing-library/react';
-
-it('renders without crashing', () => {
- const { asFragment, container } = render( );
- expect(asFragment()).toMatchSnapshot();
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/App.tsx b/03_source/mobile_old.del/mobile_main/src/App.tsx
deleted file mode 100644
index 55927f3..0000000
--- a/03_source/mobile_old.del/mobile_main/src/App.tsx
+++ /dev/null
@@ -1,273 +0,0 @@
-import { IonApp, IonNav, IonRouterOutlet, IonSplitPane, setupIonicReact } from '@ionic/react';
-import { IonReactRouter } from '@ionic/react-router';
-import React, { useContext, useEffect } from 'react';
-import { Route } from 'react-router-dom';
-
-import Menu from './components/Menu';
-
-/* Core CSS required for Ionic components to work properly */
-import '@ionic/react/css/core.css';
-
-/* Basic CSS for apps built with Ionic */
-import '@ionic/react/css/normalize.css';
-import '@ionic/react/css/structure.css';
-import '@ionic/react/css/typography.css';
-
-/* Optional CSS utils that can be commented out */
-import '@ionic/react/css/display.css';
-import '@ionic/react/css/flex-utils.css';
-import '@ionic/react/css/float-elements.css';
-import '@ionic/react/css/padding.css';
-import '@ionic/react/css/text-alignment.css';
-import '@ionic/react/css/text-transformation.css';
-
-/**
- * Ionic Dark Mode
- * -----------------------------------------------------
- * For more info, please see:
- * https://ionicframework.com/docs/theming/dark-mode
- */
-
-// import "@ionic/react/css/palettes/dark.always.css";
-// import "@ionic/react/css/palettes/dark.system.css";
-import '@ionic/react/css/palettes/dark.class.css';
-
-/* Theme variables */
-import './theme/variables.css';
-
-/* Global styles */
-import './App.scss';
-import RedirectToLogin from './components/RedirectToLogin';
-import { AppContext, AppContextProvider } from './data/AppContext';
-import { connect } from './data/connect';
-import { loadConfData } from './data/sessions/sessions.actions';
-import { loadUserData, setIsLoggedIn, setUsername } from './data/user/user.actions';
-import { Schedule } from './models/Schedule';
-import Account from './pages/Account';
-import Login from './pages/Login';
-import MainTabs from './pages/MainTabs';
-import Signup from './pages/Signup';
-import Support from './pages/Support';
-import Tutorial from './pages/Tutorial';
-
-//
-import { Redirect } from 'react-router';
-import { AccountPage } from './pages/SBAccount';
-import LoginPage from './pages/SBLogin';
-
-//
-import SBLogout from './pages/SBLogout';
-import StartupLoading from './pages/debug/StartupLoading';
-import WelcomePage from './pages/debug/WelcomePage';
-import Helloworld from './pages/debug/helloworld';
-
-//
-import SBLoginError from './SBLoginError';
-import './i18n';
-import UnlockMemberShip from './pages/UnlockMembership';
-import EventDetail from './pages/event_detail';
-//
-
-// A wrapper for that redirects to the login
-// screen if you're not yet authenticated.
-function PrivateRoute({ children, ...rest }) {
- const { session } = useContext(AppContext);
-
- return (session ? children : )} />;
-}
-
-setupIonicReact();
-
-const App: React.FC = () => {
- return (
-
-
-
- );
-};
-
-interface StateProps {
- darkMode: boolean;
- schedule: Schedule;
-}
-
-interface DispatchProps {
- loadConfData: typeof loadConfData;
- loadUserData: typeof loadUserData;
- setIsLoggedIn: typeof setIsLoggedIn;
- setUsername: typeof setUsername;
-}
-
-interface IonicAppProps extends StateProps, DispatchProps {}
-
-function AppOutlet() {
- return (
-
- {/*
- We use IonRoute here to keep the tabs state intact,
- which makes transitions between tabs and non tab pages smooth
- */}
- {/* } /> */}
-
-
-
-
-
-
- {
- return ;
- }}
- />
-
-
-
-
-
-
-
-
-
- } exact={true} />
-
- {/* */}
- } exact={true} />
-
- {/* nested route / cascade route example */}
-
-
-
-
- } />
- } />
- } />
-
-
-
-
-
- {/* */}
- }
- />
-
- );
-}
-
-const IonicApp: React.FC = ({
- darkMode,
- schedule,
- setIsLoggedIn,
- setUsername,
- loadConfData,
- loadUserData,
-}) => {
- useEffect(() => {
- loadUserData();
- loadConfData();
- // eslint-disable-next-line
- }, []);
-
- return schedule.groups.length === 0 ? (
-
- ) : (
-
-
-
- {/* */}
-
- {/* */}
- }> ;
-
-
-
- );
-
- // TODO: obsoleted, delete this
- // return schedule.groups.length === 0 ? (
- //
- // ) : (
- //
- //
- //
- // {/* */}
- //
-
- //
- // {/*
- // We use IonRoute here to keep the tabs state intact,
- // which makes transitions between tabs and non tab pages smooth
- // */}
- // {/* } /> */}
- //
- //
- //
- //
- //
- // {
- // return ;
- // }}
- // />
-
- //
- //
- //
- //
- //
-
- //
-
- // } exact={true} />
-
- // {/* nested route / cascade route example */}
- //
- //
- //
-
- //
- //
- //
-
- // {
- // return ;
- // }}
- // />
-
- // {
- // return ;
- // }}
- // />
-
- //
- //
- //
- //
- //
- // );
-};
-
-export default App;
-
-const IonicAppConnected = connect<{}, StateProps, DispatchProps>({
- mapStateToProps: state => ({
- darkMode: state.user.darkMode,
- schedule: state.data.schedule,
- }),
- mapDispatchToProps: {
- loadConfData,
- loadUserData,
- setIsLoggedIn,
- setUsername,
- },
- component: IonicApp,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/SBLoginError/index.tsx b/03_source/mobile_old.del/mobile_main/src/SBLoginError/index.tsx
deleted file mode 100644
index f1a8615..0000000
--- a/03_source/mobile_old.del/mobile_main/src/SBLoginError/index.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-const SBLoginError = () => {
- return <>Login Error>;
-};
-
-export default SBLoginError;
diff --git a/03_source/mobile_old.del/mobile_main/src/__snapshots__/App.test.tsx.snap b/03_source/mobile_old.del/mobile_main/src/__snapshots__/App.test.tsx.snap
deleted file mode 100644
index 444f038..0000000
--- a/03_source/mobile_old.del/mobile_main/src/__snapshots__/App.test.tsx.snap
+++ /dev/null
@@ -1,280 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`renders without crashing 1`] = `
-
-
-
-
-
-
-
- Menu
-
-
-
-
-
-
- Navigate
-
-
-
-
-
- Schedule
-
-
-
-
-
-
-
- Speakers
-
-
-
-
-
-
-
- Map
-
-
-
-
-
-
-
- About
-
-
-
-
-
-
- Account
-
-
-
-
-
- Account
-
-
-
-
-
-
-
- Support
-
-
-
-
-
-
-
- Logout
-
-
-
-
-
-
- Tutorial
-
-
-
- Show Tutorial
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- All
-
-
- Favorites
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- No Sessions Found
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Schedule
-
-
-
-
-
- Speakers
-
-
-
-
-
- Map
-
-
-
-
-
- About
-
-
-
-
-
-
-
-
-`;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/AboutPopover.tsx b/03_source/mobile_old.del/mobile_main/src/components/AboutPopover.tsx
deleted file mode 100644
index 030106e..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/AboutPopover.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import React from 'react';
-import { IonList, IonItem, IonLabel } from '@ionic/react';
-
-interface AboutPopoverProps {
- dismiss: () => void;
-}
-
-const AboutPopover: React.FC = ({ dismiss }) => {
- const close = (url: string) => {
- window.open(url, '_blank');
- dismiss();
- };
-
- return (
-
- close('https://ionicframework.com/docs')}>
- Learn Ionic
-
- close('https://ionicframework.com/docs/react')}>
- Documentation
-
- close('https://showcase.ionicframework.com')}>
- Showcase
-
- close('https://github.com/ionic-team/ionic-framework')}>
- GitHub Repo
-
-
- Support
-
-
- );
-};
-
-export default AboutPopover;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/Avatar.css b/03_source/mobile_old.del/mobile_main/src/components/Avatar.css
deleted file mode 100644
index 73a4798..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/Avatar.css
+++ /dev/null
@@ -1,27 +0,0 @@
-.avatar {
- display: block;
- margin: auto;
- min-height: 150px;
-}
-.avatar .avatar_wrapper {
- margin: 16px auto 16px;
- border-radius: 50%;
- overflow: hidden;
- height: 150px;
- aspect-ratio: 1;
- background: var(--ion-color-step-50);
- border: thick solid var(--ion-color-step-200);
-}
-.avatar .avatar_wrapper:hover {
- cursor: pointer;
-}
-.avatar .avatar_wrapper ion-icon.no-avatar {
- width: 100%;
- height: 115%;
-}
-.avatar img {
- display: block;
- object-fit: cover;
- width: 100%;
- height: 100%;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/components/Avatar.tsx b/03_source/mobile_old.del/mobile_main/src/components/Avatar.tsx
deleted file mode 100644
index 56d703b..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/Avatar.tsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import { IonIcon } from '@ionic/react';
-import { person } from 'ionicons/icons';
-import { Camera, CameraResultType } from '@capacitor/camera';
-import { useEffect, useState } from 'react';
-import { supabase } from '../supabaseClient';
-import './Avatar.css';
-export function Avatar({ url, onUpload }: { url: string; onUpload: (e: any, file: string) => Promise }) {
- const [avatarUrl, setAvatarUrl] = useState();
-
- useEffect(() => {
- if (url) {
- downloadImage(url);
- }
- }, [url]);
- const uploadAvatar = async () => {
- try {
- const photo = await Camera.getPhoto({
- resultType: CameraResultType.DataUrl,
- });
-
- const file = await fetch(photo.dataUrl!)
- .then(res => res.blob())
- .then(blob => new File([blob], 'my-file', { type: `image/${photo.format}` }));
-
- const fileName = `${Math.random()}-${new Date().getTime()}.${photo.format}`;
- let { error: uploadError } = await supabase.storage.from('avatars').upload(fileName, file);
- if (uploadError) {
- throw uploadError;
- }
- onUpload(null, fileName);
- } catch (error) {
- console.log(error);
- }
- };
-
- const downloadImage = async (path: string) => {
- try {
- const { data, error } = await supabase.storage.from('avatars').download(path);
- if (error) {
- throw error;
- }
- const url = URL.createObjectURL(data!);
- setAvatarUrl(url);
- } catch (error: any) {
- console.log('Error downloading image: ', error.message);
- }
- };
-
- return (
-
-
- {avatarUrl ?
:
}
-
-
- );
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/components/ChatBottomDetails.jsx b/03_source/mobile_old.del/mobile_main/src/components/ChatBottomDetails.jsx
deleted file mode 100644
index deab9ca..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/ChatBottomDetails.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { IonIcon } from '@ionic/react';
-import { checkmarkDone, star } from 'ionicons/icons';
-
-export const ChatBottomDetails = ({ message }) => (
-
- {message.date}
- {message.sent && }
- {message.starred && }
-
-);
diff --git a/03_source/mobile_old.del/mobile_main/src/components/ChatItem/index.jsx b/03_source/mobile_old.del/mobile_main/src/components/ChatItem/index.jsx
deleted file mode 100644
index c3b0581..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/ChatItem/index.jsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import {
- IonIcon,
- IonItem,
- IonItemOption,
- IonItemOptions,
- IonItemSliding,
- IonLabel,
- IonNavLink,
- IonText,
- IonThumbnail,
-} from '@ionic/react';
-import { checkmarkDone } from 'ionicons/icons';
-import { ContactStore } from '../../store';
-import { getContacts } from '../../store/Selectors';
-import ChatHelloworld from '../../pages/chat';
-
-import './style.scss';
-import HKPartyIonDeleteIcon from '../HKPartyIonDeleteIcon';
-
-const ChatItem = ({ chat }) => {
- const contacts = ContactStore.useState(getContacts);
- const { chats, contact_id } = chat;
- const { read, date, preview, received } = chats[chats.length - 1];
- const contact = contacts.filter(c => c.id === contact_id)[0];
- const notificationCount = chats.filter(chat => chat.read === false).length;
-
- return (
- <>
-
- {/*
-
- Archive
-
- */}
-
- {/* */}
- }>
-
-
-
-
-
- {contact.name}
- {read && received && }
- {preview}
-
-
-
- {date}
-
- {notificationCount > 0 && {notificationCount} }
-
-
-
-
-
- {/* */}
-
-
-
-
-
-
- >
- );
-};
-
-export default ChatItem;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/ChatItem/style.scss b/03_source/mobile_old.del/mobile_main/src/components/ChatItem/style.scss
deleted file mode 100644
index 8e962a8..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/ChatItem/style.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-.chat-row {
- .chat-row-content {
- padding: 1rem;
- }
- .chat-content {
- background-color: pink;
- }
- // img {
- // border-radius: 500px;
- // height: 2.5rem;
- // width: 2.5rem;
- // margin-right: 1.5rem;
- // }
-
- // ion-label {
- // h1 {
- // font-size: 1rem;
- // }
- // }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/components/ChatRepliedQuote.jsx b/03_source/mobile_old.del/mobile_main/src/components/ChatRepliedQuote.jsx
deleted file mode 100644
index 6365556..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/ChatRepliedQuote.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-const Quote = ({ message, contact, repliedMessage }) => (
-
-
{contact.name}
-
{repliedMessage.preview}
-
-);
-
-export const ChatRepliedQuote = ({ message, contact, repliedMessage }) => {
- if (message.reply && repliedMessage) {
- return
;
- } else {
- return '';
- }
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/components/ContactModal.jsx b/03_source/mobile_old.del/mobile_main/src/components/ContactModal.jsx
deleted file mode 100644
index 53e68c7..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/ContactModal.jsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import {
- IonButton,
- IonButtons,
- IonContent,
- IonHeader,
- IonItem,
- IonLabel,
- IonList,
- IonTitle,
- IonToolbar,
-} from '@ionic/react';
-import { ContactStore } from '../store';
-import { getContacts } from '../store/Selectors';
-
-import './ContactModal.scss';
-
-const ContactModal = ({ close }) => {
- const contacts = ContactStore.useState(getContacts);
-
- return (
-
-
-
- New Chat
-
-
- Cancel
-
-
-
-
-
-
-
- {contacts.map(contact => {
- return (
-
-
-
- {contact.name}
- Available
-
-
- );
- })}
-
-
-
- );
-};
-
-export default ContactModal;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/ContactModal.scss b/03_source/mobile_old.del/mobile_main/src/components/ContactModal.scss
deleted file mode 100644
index 0ed4a84..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/ContactModal.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-.contact-item {
- img {
- border-radius: 500px;
- height: 2.5rem;
- width: 2.5rem;
- margin-right: 1.5rem;
- }
-
- ion-label {
- h1 {
- font-size: 1rem;
- }
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonArchiveIcon/index.tsx b/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonArchiveIcon/index.tsx
deleted file mode 100644
index 2c53cff..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonArchiveIcon/index.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import { IonHeader, IonIcon } from '@ionic/react';
-import { trashOutline } from 'ionicons/icons';
-
-const HKPartyIonDeleteIcon = ({ ...props }) => {
- return ;
-};
-
-export default HKPartyIonDeleteIcon;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonDeleteIcon/index.tsx b/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonDeleteIcon/index.tsx
deleted file mode 100644
index 2c53cff..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonDeleteIcon/index.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import { IonHeader, IonIcon } from '@ionic/react';
-import { trashOutline } from 'ionicons/icons';
-
-const HKPartyIonDeleteIcon = ({ ...props }) => {
- return ;
-};
-
-export default HKPartyIonDeleteIcon;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonHeader/index.tsx b/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonHeader/index.tsx
deleted file mode 100644
index eb2d591..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonHeader/index.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { IonHeader } from '@ionic/react';
-
-const HKPartyIonHeader = ({ children, ...props }) => {
- return (
-
- {/* */}
- {children}
- {/* */}
-
- );
-};
-
-export default HKPartyIonHeader;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonPage/index.tsx b/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonPage/index.tsx
deleted file mode 100644
index 03d108c..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonPage/index.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import { IonHeader, IonPage } from '@ionic/react';
-
-const HKPartyIonPage = ({ children, ...props }) => {
- return (
-
- {/* */}
- {children}
- {/* */}
-
- );
-};
-
-export default HKPartyIonPage;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonToolbar/index.tsx b/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonToolbar/index.tsx
deleted file mode 100644
index 77e6fc5..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/HKPartyIonToolbar/index.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import { IonToolbar } from '@ionic/react';
-
-const HKPartyIonToolbar = ({ children, ...props }) => {
- return (
-
- {/* */}
-
- {children}
-
- {/* */}
-
- );
-};
-
-export default HKPartyIonToolbar;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/HomeOrTutorial.tsx b/03_source/mobile_old.del/mobile_main/src/components/HomeOrTutorial.tsx
deleted file mode 100644
index 1a8ab90..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/HomeOrTutorial.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React from 'react';
-import { connect } from '../data/connect';
-import { Redirect } from 'react-router';
-
-interface StateProps {
- hasSeenTutorial: boolean;
-}
-
-const HomeOrTutorial: React.FC = ({ hasSeenTutorial }) => {
- return hasSeenTutorial ? : ;
-};
-
-export default connect<{}, StateProps, {}>({
- mapStateToProps: state => ({
- hasSeenTutorial: state.user.hasSeenTutorial,
- }),
- component: HomeOrTutorial,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/components/Loading/index.tsx b/03_source/mobile_old.del/mobile_main/src/components/Loading/index.tsx
deleted file mode 100644
index ada69b0..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/Loading/index.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { IonContent, IonPage, IonSpinner, IonText } from '@ionic/react';
-
-function Loading() {
- return (
-
-
-
-
- {'Loading'}
-
-
-
- );
-}
-
-export default Loading;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/Map.tsx b/03_source/mobile_old.del/mobile_main/src/components/Map.tsx
deleted file mode 100644
index cd986da..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/Map.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import React, { useRef, useEffect } from 'react';
-import { Location } from '../models/Location';
-
-interface MapProps {
- locations: Location[];
- mapCenter: Location;
-}
-
-const Map: React.FC = ({ mapCenter, locations }) => {
- const mapEle = useRef(null);
- const map = useRef();
-
- useEffect(() => {
- map.current = new google.maps.Map(mapEle.current, {
- center: {
- lat: mapCenter.lat,
- lng: mapCenter.lng,
- },
- zoom: 16,
- });
-
- addMarkers();
-
- google.maps.event.addListenerOnce(map.current, 'idle', () => {
- if (mapEle.current) {
- mapEle.current.classList.add('show-map');
- }
- });
-
- function addMarkers() {
- locations.forEach(markerData => {
- let infoWindow = new google.maps.InfoWindow({
- content: `${markerData.name} `,
- });
-
- let marker = new google.maps.Marker({
- position: new google.maps.LatLng(markerData.lat, markerData.lng),
- map: map.current!,
- title: markerData.name,
- });
-
- marker.addListener('click', () => {
- infoWindow.open(map.current!, marker);
- });
- });
- }
- }, [mapCenter, locations]);
-
- return
;
-};
-
-export default Map;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/Menu.css b/03_source/mobile_old.del/mobile_main/src/components/Menu.css
deleted file mode 100644
index 1740a2f..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/Menu.css
+++ /dev/null
@@ -1,88 +0,0 @@
-ion-menu ion-content {
- --padding-top: 20px;
- --padding-bottom: 20px;
-
- --background: var(--ion-item-background, var(--ion-background-color, #fff));
-}
-
-/* Remove background transitions for switching themes */
-ion-menu ion-item {
- --transition: none;
-}
-
-ion-item.selected {
- --color: var(--ion-color-primary);
-}
-
-/*
- * Material Design Menu
-*/
-ion-menu.md ion-list {
- padding: 20px 0;
-}
-
-ion-menu.md ion-list-header {
- padding-left: 18px;
- padding-right: 18px;
-
- text-transform: uppercase;
- letter-spacing: 0.1em;
- font-size: min(0.875rem, 32px);
- font-weight: 450;
-}
-
-ion-menu.md ion-item {
- --padding-start: 18px;
-
- margin-right: 10px;
-
- border-radius: 0 50px 50px 0;
-
- font-weight: 500;
-}
-
-ion-menu.md ion-item.selected {
- --background: rgba(var(--ion-color-primary-rgb), 0.14);
-}
-
-ion-menu.md ion-item.selected ion-icon {
- color: var(--ion-color-primary);
-}
-
-ion-menu.md ion-list-header,
-ion-menu.md ion-item ion-icon {
- color: var(--ion-color-step-650, #5f6368);
-}
-
-ion-menu.md ion-list:not(:last-of-type) {
- border-bottom: 1px solid var(--ion-color-step-150, #d7d8da);
-}
-
-/*
- * iOS Menu
-*/
-ion-menu.ios ion-list-header {
- padding-left: 16px;
- padding-right: 16px;
-
- margin-bottom: 8px;
- font-size: clamp(22px, 1.375rem, 40px);
-}
-
-ion-menu.ios ion-list {
- padding: 20px 0 0;
-}
-
-ion-menu.ios ion-item {
- --padding-start: 16px;
- --min-height: 50px;
-}
-
-ion-menu.ios ion-item ion-icon {
- font-size: 24px;
- color: #73849a;
-}
-
-ion-menu.ios ion-item.selected ion-icon {
- color: var(--ion-color-primary);
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/components/Menu.tsx b/03_source/mobile_old.del/mobile_main/src/components/Menu.tsx
deleted file mode 100644
index d8ce977..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/Menu.tsx
+++ /dev/null
@@ -1,138 +0,0 @@
-import React from 'react';
-import { RouteComponentProps, withRouter, useLocation } from 'react-router';
-
-import {
- IonContent,
- IonIcon,
- IonItem,
- IonLabel,
- IonList,
- IonListHeader,
- IonMenu,
- IonMenuToggle,
- IonToggle,
-} from '@ionic/react';
-import {
- calendarOutline,
- hammer,
- moonOutline,
- help,
- informationCircleOutline,
- logIn,
- logOut,
- mapOutline,
- peopleOutline,
- person,
- personAdd,
-} from 'ionicons/icons';
-
-import { connect } from '../data/connect';
-import { setDarkMode } from '../data/user/user.actions';
-
-import './Menu.css';
-
-const routes = {
- appPages: [
- { title: 'Schedule', path: '/tabs/schedule', icon: calendarOutline },
- { title: 'Speakers', path: '/tabs/speakers', icon: peopleOutline },
- { title: 'Map', path: '/tabs/map', icon: mapOutline },
- { title: 'About', path: '/tabs/about', icon: informationCircleOutline },
- { title: 'Message', path: '/tabs/message', icon: informationCircleOutline },
- { title: 'Profile', path: '/tabs/profile', icon: informationCircleOutline },
- ],
- loggedInPages: [
- { title: 'Account', path: '/account', icon: person },
- { title: 'Support', path: '/support', icon: help },
- { title: 'Logout', path: '/logout', icon: logOut },
- ],
- loggedOutPages: [
- { title: 'Login', path: '/login', icon: logIn },
- { title: 'Support', path: '/support', icon: help },
- { title: 'Signup', path: '/signup', icon: personAdd },
- ],
-};
-
-interface Pages {
- title: string;
- path: string;
- icon: string;
- routerDirection?: string;
-}
-interface StateProps {
- darkMode: boolean;
- isAuthenticated: boolean;
- menuEnabled: boolean;
-}
-
-interface DispatchProps {
- setDarkMode: typeof setDarkMode;
-}
-
-interface MenuProps extends RouteComponentProps, StateProps, DispatchProps {}
-
-const Menu: React.FC = ({ darkMode, history, isAuthenticated, setDarkMode, menuEnabled }) => {
- const location = useLocation();
-
- function renderlistItems(list: Pages[]) {
- return list
- .filter(route => !!route.path)
- .map(p => (
-
-
-
- {p.title}
-
-
- ));
- }
-
- return (
-
-
-
- Conference
- {renderlistItems(routes.appPages)}
-
-
- Account
- {isAuthenticated ? renderlistItems(routes.loggedInPages) : renderlistItems(routes.loggedOutPages)}
-
-
- setDarkMode(!darkMode)}>
- Dark Mode
-
-
-
-
- Tutorial
- {
- history.push('/tutorial');
- }}
- >
-
- Show Tutorial
-
-
-
-
- );
-};
-
-export default connect<{}, StateProps, {}>({
- mapStateToProps: state => ({
- darkMode: state.user.darkMode,
- isAuthenticated: state.user.isLoggedin,
- menuEnabled: state.data.menuEnabled,
- }),
- mapDispatchToProps: {
- setDarkMode,
- },
- component: withRouter(Menu),
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/components/RedirectToLogin.tsx b/03_source/mobile_old.del/mobile_main/src/components/RedirectToLogin.tsx
deleted file mode 100644
index bdfe35f..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/RedirectToLogin.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import React, { useEffect, useContext } from 'react';
-import { IonRouterContext } from '@ionic/react';
-
-interface RedirectToLoginProps {
- setIsLoggedIn: Function;
- setUsername: Function;
-}
-
-const RedirectToLogin: React.FC = ({ setIsLoggedIn, setUsername }) => {
- const ionRouterContext = useContext(IonRouterContext);
-
- useEffect(() => {
- setIsLoggedIn(false);
- setUsername(undefined);
- ionRouterContext.push('/tabs/schedule');
-
- console.error('who call this ?');
- }, [setIsLoggedIn, setUsername]);
-
- return null;
-};
-
-export default RedirectToLogin;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/ReplyTo/index.jsx b/03_source/mobile_old.del/mobile_main/src/components/ReplyTo/index.jsx
deleted file mode 100644
index e47700b..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/ReplyTo/index.jsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import { CreateAnimation, IonButton, IonCol, IonIcon, IonLabel, IonRow } from '@ionic/react';
-import { closeCircleOutline } from 'ionicons/icons';
-import { useEffect } from 'react';
-import { useState } from 'react';
-
-// import './style.css';
-const ReplyTo = ({ contact, replyToMessage = false, replyToAnimationRef, setReplyToMessage, messageSent }) => {
- const [cancellingReplyTo, setCancellingReplyTo] = useState(false);
-
- useEffect(() => {
- messageSent && cancelReplyTo();
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [messageSent]);
-
- const slideAnimation = {
- property: 'transform',
- fromValue: 'translateY(100px)',
- toValue: 'translateY(0px)',
- };
-
- const replyToAnimation = {
- duration: 300,
- direction: !cancellingReplyTo ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [slideAnimation],
- easing: 'ease-in-out',
- };
-
- // Cancel the reply-to
- const cancelReplyTo = async () => {
- setCancellingReplyTo(true);
- await replyToAnimationRef.current.animation.play();
- setCancellingReplyTo(false);
- setReplyToMessage(false);
- };
-
- return (
-
-
-
- {contact}
- {replyToMessage.preview}
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default ReplyTo;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/ReplyTo/style.css b/03_source/mobile_old.del/mobile_main/src/components/ReplyTo/style.css
deleted file mode 100644
index 928443f..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/ReplyTo/style.css
+++ /dev/null
@@ -1,290 +0,0 @@
-.chat-page ion-header,
-.chat-page ion-toolbar {
-
- --min-height: 3.5rem;
-}
-
-.chat-page ion-title {
-
- margin-left: -3.5rem;
-}
-
-.chat-page ion-title p {
-
- padding: 0;
- margin: 0;
-}
-
-.chat-contact {
-
- display: flex;
- flex-direction: row;
- align-content: center;
- justify-content: center;
- align-items: center;
-}
-
-.chat-contact img {
-
- height: 2rem;
- width: 2rem;
- border-radius: 500px;
-}
-
-.chat-contact-details {
-
- display: flex;
- flex-direction: column;
- margin-left: 0.5rem;
- text-align: left;
-}
-
-.chat-contact-details p {
-
- font-size: 0.9rem;
-}
-
-.chat-contact-details ion-text {
-
- font-size: 0.7rem;
- font-weight: 400;
-}
-
-.chat-bubble {
-
- border-radius: 5px;
- margin-left: 1rem;
- margin-right: 1rem;
- margin-top: 0.8rem;
-
- padding: 0.5rem;
- max-width: 80%;
- clear: both;
-
- display: flex;
- flex-direction: row;
- transition: 0.2s all linear;
-}
-
-.chat-bubble:last-child {
-
- margin-bottom: 0.8rem;
-}
-
-.bubble-sent {
-
- background-color: var(--chat-bubble-sent-color);
- float: right;
-}
-
-.bubble-received {
-
- background-color: var(--chat-bubble-received-color);
- float: left;
-}
-
-.chat-bubble p {
-
- padding: 0;
- margin: 0;
-}
-
-.chat-footer {
-
- /* background-color: rgb(22, 22, 22); */
- border-top: 1px solid rgb(47, 47, 47);
- padding-top: 0.2rem;
- padding-bottom: 1rem;
-}
-
-.chat-footer ion-textarea {
-
- /* background-color: rgb(31, 31, 31); */
- background-color: rgba(32, 32, 32, 0.1);
- /* border: 1px solid rgb(36, 36, 36); */
- color: white;
- border-radius: 25px;
- padding-left: 0.5rem;
- caret-color: var(--ion-color-primary);
-}
-
-.chat-footer ion-icon {
-
- font-size: 1.5rem;
- margin-top: 0.2rem;
-}
-
-.chat-input-container {
-
- width: 70%;
- margin-right: 0.75rem;
-}
-
-.chat-send-button {
-
- margin: 0 !important;
- padding: 0 !important;
- position: absolute;
- right: 17px;
- margin-top: -0.2rem !important;
-
- display: flex;
- flex-direction: row;
- align-content: center;
- align-items: center;
- justify-content: center;
-}
-
-.chat-send-button ion-icon {
-
- color: white;
- background-color: var(--ion-color-primary);
- font-size: 1.1rem;
- border-radius: 500px;
- padding: 0.5rem;
-}
-
-.chat-time {
-
- color: rgb(165, 165, 165);
- font-size: 0.75rem;
- right: 0;
- bottom: 0 !important;
- margin: 0;
- padding: 0;
- margin-top: 5px;
-}
-
-.bubble-arrow {
-
- position: absolute;
- float: left;
- left: 6px;
- margin-top: -8px;
- /* top: 0px; */
-}
-
-.bubble-arrow.alt {
-
- position: relative;
- bottom: 0px;
- left: auto;
- right: -3px;
- float: right;
-}
-
-.bubble-arrow:after {
-
- content: "";
- position: absolute;
- border-top: 15px solid var(--chat-bubble-received-color);
- border-left: 15px solid transparent;
- border-radius: 4px 0 0 0px;
- width: 0;
- height: 0;
-}
-
-.bubble-arrow.alt:after {
-
- border-top: 15px solid var(--chat-bubble-sent-color);
- transform: scaleX(-1);
-}
-
-.chat-reply-to-row {
-
- bottom: 70px !important;
- position: absolute;
-
- border-left: 4px solid rgb(224, 176, 18);
- width: 100%;
- background-color: rgb(22, 22, 22);
- border-top: 1px solid rgb(47, 47, 47);
- padding: 0.5rem;
- padding-bottom: 0.8rem;
-}
-
-.chat-reply-to-container {
-
- display: flex;
- flex-direction: column;
-}
-
-.chat-reply-to-name {
-
- color: rgb(224, 176, 18);
- font-weight: 500;
- margin-bottom: 0.5rem;
-}
-
-.chat-reply-to-message {
-
- font-size: 0.8rem;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.all-chats {
-
-
-}
-
-.chat-bottom-details {
-
- display: flex;
- flex-direction: row;
- width: 100%;
- align-content: center;
- align-items: center;
- justify-content: flex-end;
- margin-top: 0.4rem;
-}
-
-.chat-bottom-details ion-icon {
-
- font-size: 0.6rem;
- color: grey;
- margin-left: 0.5rem;
- margin-top: 0.05rem;
-}
-
-.chat-bottom-details span {
-
- margin: 0;
- padding: 0;
- font-size: 0.75rem;
- color: rgb(190, 190, 190);
-}
-
-.in-chat-reply-to-container {
-
- /* background-color: rgba(0, 0, 0, 0.2); */
- border-left: 3px solid rgb(224, 176, 18);
- height: fit-content;
- padding: 0.5rem;
- border-radius: 5px;
- margin-bottom: 0.5rem;
-}
-
-.in-chat-reply-to-container h1 {
-
- margin: 0;
- padding: 0;
- color: rgb(224, 176, 18);
- font-size: 0.8rem;
-}
-
-.in-chat-reply-to-container p {
-
- color: rgb(167, 167, 167);
- font-size: 0.8rem;
-}
-
-.bottom-container {
-
- position: absolute;
- bottom: 4.5rem;
- height: 5rem;
- background-color: red;
- width: 100%;
-}
\ No newline at end of file
diff --git a/03_source/mobile_old.del/mobile_main/src/components/SessionList.tsx b/03_source/mobile_old.del/mobile_main/src/components/SessionList.tsx
deleted file mode 100644
index b610dfb..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/SessionList.tsx
+++ /dev/null
@@ -1,102 +0,0 @@
-import { IonItemDivider, IonItemGroup, IonLabel, IonList, IonListHeader, IonAlert, AlertButton } from '@ionic/react';
-import React, { useState, useCallback, useRef, useEffect } from 'react';
-import { Schedule, Session } from '../models/Schedule';
-import SessionListItem from './SessionListItem';
-import { connect } from '../data/connect';
-import { addFavorite, removeFavorite } from '../data/sessions/sessions.actions';
-
-interface OwnProps {
- schedule: Schedule;
- listType: 'all' | 'favorites';
- hide: boolean;
-}
-
-interface StateProps {
- favoriteSessions: number[];
-}
-
-interface DispatchProps {
- addFavorite: typeof addFavorite;
- removeFavorite: typeof removeFavorite;
-}
-
-interface SessionListProps extends OwnProps, StateProps, DispatchProps {}
-
-const SessionList: React.FC = ({
- addFavorite,
- removeFavorite,
- favoriteSessions,
- hide,
- schedule,
- listType,
-}) => {
- const scheduleListRef = useRef(null);
- const [showAlert, setShowAlert] = useState(false);
- const [alertHeader, setAlertHeader] = useState('');
- const [alertMessage, setAlertMessage] = useState('');
- const [alertButtons, setAlertButtons] = useState<(AlertButton | string)[]>([]);
-
- const handleShowAlert = useCallback((header: string, message: string, buttons: AlertButton[]) => {
- setAlertHeader(header);
- setAlertMessage(message);
- setAlertButtons(buttons);
- setShowAlert(true);
- }, []);
-
- useEffect(() => {
- if (scheduleListRef.current) {
- scheduleListRef.current.closeSlidingItems();
- }
- }, [hide]);
-
- if (schedule.groups.length === 0 && !hide) {
- return (
-
- No Sessions Found
-
- );
- }
-
- return (
- <>
-
- {schedule.groups.map((group, index: number) => (
-
-
- {group.time}
-
- {group.sessions.map((session: Session, sessionIndex: number) => (
- -1}
- onAddFavorite={addFavorite}
- onRemoveFavorite={removeFavorite}
- key={`group-${index}-${sessionIndex}`}
- session={session}
- listType={listType}
- />
- ))}
-
- ))}
-
- setShowAlert(false)}
- >
- >
- );
-};
-
-export default connect({
- mapStateToProps: state => ({
- favoriteSessions: state.data.favorites,
- }),
- mapDispatchToProps: {
- addFavorite,
- removeFavorite,
- },
- component: SessionList,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/components/SessionListFilter.css b/03_source/mobile_old.del/mobile_main/src/components/SessionListFilter.css
deleted file mode 100644
index 4516c7a..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/SessionListFilter.css
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Material Design
- */
-
-.md .session-list-filter ion-toolbar ion-button {
- text-transform: capitalize;
- letter-spacing: 0;
-}
-
-.md .session-list-filter ion-checkbox {
- --checkbox-background-checked: transparent;
- --border-color: transparent;
- --border-color-checked: transparent;
- --checkmark-color: var(--ion-color-primary);
-}
-
-.md .session-list-filter ion-list {
- background: inherit;
-}
-
-/*
- * iOS
- */
-
-.ios .session-list-filter ion-list-header {
- margin-top: 10px;
-}
-
-.ios .session-list-filter ion-checkbox {
- color: var(--ion-color-primary);
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/components/SessionListFilter.tsx b/03_source/mobile_old.del/mobile_main/src/components/SessionListFilter.tsx
deleted file mode 100644
index f247da8..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/SessionListFilter.tsx
+++ /dev/null
@@ -1,153 +0,0 @@
-import React from 'react';
-
-import { getMode } from '@ionic/core';
-import {
- IonHeader,
- IonToolbar,
- IonButtons,
- IonButton,
- IonTitle,
- IonContent,
- IonList,
- IonListHeader,
- IonItem,
- IonLabel,
- IonCheckbox,
- IonFooter,
- IonIcon,
-} from '@ionic/react';
-import {
- logoAngular,
- call,
- document,
- logoIonic,
- hammer,
- restaurant,
- cog,
- colorPalette,
- construct,
- compass,
-} from 'ionicons/icons';
-
-import './SessionListFilter.css';
-
-import { connect } from '../data/connect';
-import { updateFilteredTracks } from '../data/sessions/sessions.actions';
-
-interface OwnProps {
- onDismissModal: () => void;
-}
-
-interface StateProps {
- allTracks: string[];
- filteredTracks: string[];
-}
-
-interface DispatchProps {
- updateFilteredTracks: typeof updateFilteredTracks;
-}
-
-type SessionListFilterProps = OwnProps & StateProps & DispatchProps;
-
-const SessionListFilter: React.FC = ({
- allTracks,
- filteredTracks,
- onDismissModal,
- updateFilteredTracks,
-}) => {
- const ios = getMode() === 'ios';
-
- const toggleTrackFilter = (track: string) => {
- if (filteredTracks.indexOf(track) > -1) {
- updateFilteredTracks(filteredTracks.filter(x => x !== track));
- } else {
- updateFilteredTracks([...filteredTracks, track]);
- }
- };
-
- const handleDeselectAll = () => {
- updateFilteredTracks([]);
- };
-
- const handleSelectAll = () => {
- updateFilteredTracks([...allTracks]);
- };
-
- const iconMap: { [key: string]: any } = {
- Angular: logoAngular,
- Documentation: document,
- Food: restaurant,
- Ionic: logoIonic,
- Tooling: hammer,
- Design: colorPalette,
- Services: cog,
- Workshop: construct,
- Navigation: compass,
- Communication: call,
- };
-
- return (
- <>
-
-
-
- {ios && Cancel }
- {!ios && Reset }
-
-
- Filter Sessions
-
-
-
- Done
-
-
-
-
-
-
-
- Tracks
-
- {allTracks.map(track => (
-
- {ios && }
- toggleTrackFilter(track)}
- checked={filteredTracks.indexOf(track) !== -1}
- color="primary"
- value={track}
- >
- {track}
-
-
- ))}
-
-
-
- {ios && (
-
-
-
- Deselect All
-
-
- Select All
-
-
-
- )}
- >
- );
-};
-
-export default connect({
- mapStateToProps: state => ({
- allTracks: state.data.allTracks,
- filteredTracks: state.data.filteredTracks,
- }),
- mapDispatchToProps: {
- updateFilteredTracks,
- },
- component: SessionListFilter,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/components/SessionListItem.tsx b/03_source/mobile_old.del/mobile_main/src/components/SessionListItem.tsx
deleted file mode 100644
index 00a1c68..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/SessionListItem.tsx
+++ /dev/null
@@ -1,106 +0,0 @@
-import React, { useRef } from 'react';
-import {
- IonItemSliding,
- IonItem,
- IonLabel,
- IonItemOptions,
- IonItemOption,
- AlertButton,
- useIonToast,
-} from '@ionic/react';
-import { Session } from '../models/Schedule';
-
-interface SessionListItemProps {
- session: Session;
- listType: 'all' | 'favorites';
- onAddFavorite: (id: number) => void;
- onRemoveFavorite: (id: number) => void;
- onShowAlert: (header: string, message: string, buttons: AlertButton[]) => void;
- isFavorite: boolean;
-}
-
-const SessionListItem: React.FC = ({
- isFavorite,
- onAddFavorite,
- onRemoveFavorite,
- onShowAlert,
- session,
- listType,
-}) => {
- const [presentToast] = useIonToast();
- const ionItemSlidingRef = useRef(null);
-
- const dismissAlert = () => {
- ionItemSlidingRef.current && ionItemSlidingRef.current.close();
- };
-
- const removeFavoriteSession = (title: string) => {
- onAddFavorite(session.id);
- onShowAlert(title, 'Would you like to remove this session from your favorites?', [
- {
- text: 'Cancel',
- handler: dismissAlert,
- },
- {
- text: 'Remove',
- handler: () => {
- onRemoveFavorite(session.id);
- dismissAlert();
- },
- },
- ]);
- };
-
- const addFavoriteSession = async () => {
- if (isFavorite) {
- // Prompt to remove favorite
- removeFavoriteSession('Favorite already added');
- } else {
- // Add as a favorite
- onAddFavorite(session.id);
-
- // Close the open item
- ionItemSlidingRef.current && ionItemSlidingRef.current.close();
-
- // Create a toast
- presentToast({
- message: `${session.name} was successfully added as a favorite.`,
- duration: 3000,
- buttons: [
- {
- text: 'Close',
- role: 'cancel',
- },
- ],
- });
- }
- };
-
- return (
-
-
-
- {session.name}
-
- {session.timeStart}—
- {session.timeStart}—
- {session.location}
-
-
-
-
- {listType === 'favorites' ? (
- removeFavoriteSession('Remove Favorite')}>
- Remove
-
- ) : (
-
- Favorite
-
- )}
-
-
- );
-};
-
-export default React.memo(SessionListItem);
diff --git a/03_source/mobile_old.del/mobile_main/src/components/ShareSocialFab.tsx b/03_source/mobile_old.del/mobile_main/src/components/ShareSocialFab.tsx
deleted file mode 100644
index 210c66e..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/ShareSocialFab.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import { IonLoading, IonFab, IonFabButton, IonIcon, IonFabList } from '@ionic/react';
-import { shareSocial, logoVimeo, logoInstagram, logoTwitter, logoFacebook } from 'ionicons/icons';
-import React, { useState } from 'react';
-
-const ShareSocialFab: React.FC = () => {
- const [loadingMessage, setLoadingMessage] = useState('');
- const [showLoading, setShowLoading] = useState(false);
-
- const openSocial = (network: string) => {
- setLoadingMessage(`Posting to ${network}`);
- setShowLoading(true);
- };
-
- return (
- <>
- setShowLoading(false)}
- />
-
-
-
-
-
- openSocial('Vimeo')}>
-
-
- openSocial('Instagram')}>
-
-
- openSocial('Twitter')}>
-
-
- openSocial('Facebook')}>
-
-
-
-
- >
- );
-};
-
-export default ShareSocialFab;
diff --git a/03_source/mobile_old.del/mobile_main/src/components/SpeakerItem.tsx b/03_source/mobile_old.del/mobile_main/src/components/SpeakerItem.tsx
deleted file mode 100644
index 2c9e277..0000000
--- a/03_source/mobile_old.del/mobile_main/src/components/SpeakerItem.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import React from 'react';
-import { Session } from '../models/Schedule';
-import { Speaker } from '../models/Speaker';
-import { IonCard, IonCardHeader, IonItem, IonLabel, IonAvatar, IonCardContent, IonList } from '@ionic/react';
-
-interface SpeakerItemProps {
- speaker: Speaker;
- sessions: Session[];
-}
-
-const SpeakerItem: React.FC = ({ speaker, sessions }) => {
- return (
- <>
-
-
-
-
-
-
-
- {speaker.name}
- {speaker.title}
-
-
-
-
-
-
- {sessions.map(session => (
-
-
- {session.name}
-
-
- ))}
-
-
- About {speaker.name}
-
-
-
-
-
- >
- );
-};
-
-export default SpeakerItem;
diff --git a/03_source/mobile_old.del/mobile_main/src/constants.ts b/03_source/mobile_old.del/mobile_main/src/constants.ts
deleted file mode 100644
index 015284e..0000000
--- a/03_source/mobile_old.del/mobile_main/src/constants.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-const IONIC_DEFAULT_AVATAR = 'https://ionicframework.com/docs/img/demos/avatar.svg';
-
-export default { IONIC_DEFAULT_AVATAR };
diff --git a/03_source/mobile_old.del/mobile_main/src/contexts/SessionProvider.tsx b/03_source/mobile_old.del/mobile_main/src/contexts/SessionProvider.tsx
deleted file mode 100644
index 2bef059..0000000
--- a/03_source/mobile_old.del/mobile_main/src/contexts/SessionProvider.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import React, { createContext, useContext, useEffect, useMemo, useState } from 'react';
-import { Session } from '@supabase/supabase-js';
-import { supabase } from '../supabaseClient';
-
-export const SessionContext = createContext<{
- session: Session | null;
-} | null>(null);
-
-export const SessionProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
- const [session] = useState(() => supabase.auth.session());
-
- // const value = useMemo(() => ({ session, setSession }), [session, setSession]);
- const value = { session };
-
- return {children} ;
-};
-
-export const useSession = () => {
- const context = useContext(SessionContext);
-
- if (!context) {
- throw new Error('useSession must be used within a SessionProvider');
- }
-
- return context;
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/data/AppContext.tsx b/03_source/mobile_old.del/mobile_main/src/data/AppContext.tsx
deleted file mode 100644
index ca5b05f..0000000
--- a/03_source/mobile_old.del/mobile_main/src/data/AppContext.tsx
+++ /dev/null
@@ -1,79 +0,0 @@
-import { Session } from '@supabase/supabase-js';
-import React, { createContext, PropsWithChildren, useEffect, useReducer, useState } from 'react';
-import { useListPartyEventSummaries } from '../hooks/useListPartyEventSummaries';
-import { supabase } from '../supabaseClient';
-import { AppState, initialState, reducers } from './state';
-
-export interface AppContextState {
- state: AppState;
- dispatch: React.Dispatch;
- session: Session | null;
-}
-
-export const AppContext = createContext({
- state: initialState,
- dispatch: () => undefined,
- session: null,
-});
-
-export const AppContextProvider: React.FC = ({ children }) => {
- const [store, dispatch] = useReducer(reducers, initialState);
- const [party_event_summaries] = useListPartyEventSummaries();
-
- const [session, setSession] = useState(null);
- const [profile, setProfile] = useState<{} | null>(null);
-
- const [showBottomTabBar, setShowBottomTabBar] = useState(true);
-
- const [helloworld, setHelloworld] = useState('');
-
- function getProfileById(id) {
- return supabase.from('profiles').select('*').filter('id', 'in', `("${id}")`);
- }
-
- useEffect(() => {
- console.log({ profile });
- }, [profile]);
-
- useEffect(() => {
- const run = async () => {
- const { data } = await supabase.auth.getSession();
- setSession(data.session);
- };
-
- run();
-
- supabase.auth.onAuthStateChange((_event, session) => {
- setSession(session);
- if (session && session.user) {
- const { id } = session.user;
- getProfileById(id).then(({ data }) => {
- setProfile(data[0]);
- });
- }
- });
- }, []);
-
- useEffect(() => {
- console.log('helloworld from appcontext');
- }, [helloworld]);
-
- return (
-
- {children}
-
- );
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/data/combineReducers.ts b/03_source/mobile_old.del/mobile_main/src/data/combineReducers.ts
deleted file mode 100644
index 3404a0c..0000000
--- a/03_source/mobile_old.del/mobile_main/src/data/combineReducers.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-interface R {
- [key: string]: (...args: any) => any;
-}
-
-export function combineReducers(reducers: R) {
- type keys = keyof typeof reducers;
- type returnType = { [K in keys]: ReturnType<(typeof reducers)[K]> };
- const combinedReducer = (state: any, action: any) => {
- const newState: returnType = {} as any;
- const keys = Object.keys(reducers);
- keys.forEach(key => {
- const result = reducers[key](state[key], action);
- newState[key as keys] = result || state[key];
- });
- return newState;
- };
- return combinedReducer;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/data/connect.tsx b/03_source/mobile_old.del/mobile_main/src/data/connect.tsx
deleted file mode 100644
index 507d9e6..0000000
--- a/03_source/mobile_old.del/mobile_main/src/data/connect.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import React, { useContext, useMemo } from 'react';
-import { AppContext } from './AppContext';
-import { DispatchObject } from '../util/types';
-import { AppState } from './state';
-
-interface ConnectParams {
- mapStateToProps?: (state: AppState, props: TOwnProps) => TStateProps;
- mapDispatchToProps?: TDispatchProps;
- component: React.ComponentType;
-}
-
-export function connect({
- mapStateToProps = () => ({} as TStateProps),
- mapDispatchToProps = {} as TDispatchProps,
- component,
-}: ConnectParams): React.FunctionComponent {
- const Connect = (ownProps: TOwnProps) => {
- const context = useContext(AppContext);
-
- const dispatchFuncs = useMemo(() => {
- const dispatchFuncs: { [key: string]: any } = {};
- if (mapDispatchToProps) {
- Object.keys(mapDispatchToProps).forEach(key => {
- const oldFunc = (mapDispatchToProps as any)[key];
- const newFunc = (...args: any) => {
- const dispatchFunc = oldFunc(...args);
- if (typeof dispatchFunc === 'object') {
- context.dispatch(dispatchFunc);
- } else {
- const result = dispatchFunc(context.dispatch);
- if (typeof result === 'object' && result.then) {
- result.then((dispatchObject?: DispatchObject) => {
- if (dispatchObject && dispatchObject.type) {
- context.dispatch(dispatchObject);
- }
- });
- }
- }
- };
- dispatchFuncs[key] = newFunc;
- });
- }
- return dispatchFuncs;
- // eslint-disable-next-line
- }, [mapDispatchToProps]);
-
- const props = useMemo(() => {
- return Object.assign({}, ownProps, mapStateToProps(context.state, ownProps), dispatchFuncs);
- // eslint-disable-next-line
- }, [ownProps, context.state]);
-
- return React.createElement(component, props);
- };
- return React.memo(Connect as any);
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/data/dataApi.ts b/03_source/mobile_old.del/mobile_main/src/data/dataApi.ts
deleted file mode 100644
index 6e371a7..0000000
--- a/03_source/mobile_old.del/mobile_main/src/data/dataApi.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import { Preferences as Storage } from '@capacitor/preferences';
-import { Schedule, Session } from '../models/Schedule';
-import { Speaker } from '../models/Speaker';
-import { Location } from '../models/Location';
-
-const dataUrl = '/assets/data/data.json';
-const locationsUrl = '/assets/data/locations.json';
-
-const HAS_LOGGED_IN = 'hasLoggedIn';
-const HAS_SEEN_TUTORIAL = 'hasSeenTutorial';
-const USERNAME = 'username';
-
-export const getConfData = async () => {
- const response = await Promise.all([fetch(dataUrl), fetch(locationsUrl)]);
- const responseData = await response[0].json();
- const schedule = responseData.schedule[0] as Schedule;
- const sessions = parseSessions(schedule);
- const speakers = responseData.speakers as Speaker[];
- const locations = (await response[1].json()) as Location[];
- const allTracks = sessions
- .reduce((all, session) => all.concat(session.tracks), [] as string[])
- .filter((trackName, index, array) => array.indexOf(trackName) === index)
- .sort();
-
- const data = {
- schedule,
- sessions,
- locations,
- speakers,
- allTracks,
- filteredTracks: [...allTracks],
- };
- return data;
-};
-
-export const getUserData = async () => {
- const response = await Promise.all([
- Storage.get({ key: HAS_LOGGED_IN }),
- Storage.get({ key: HAS_SEEN_TUTORIAL }),
- Storage.get({ key: USERNAME }),
- ]);
- const isLoggedin = (await response[0].value) === 'true';
- const hasSeenTutorial = (await response[1].value) === 'true';
- const username = (await response[2].value) || undefined;
- const data = {
- isLoggedin,
- hasSeenTutorial,
- username,
- };
- return data;
-};
-
-export const setIsLoggedInData = async (isLoggedIn: boolean) => {
- await Storage.set({ key: HAS_LOGGED_IN, value: JSON.stringify(isLoggedIn) });
-};
-
-export const setHasSeenTutorialData = async (hasSeenTutorial: boolean) => {
- await Storage.set({
- key: HAS_SEEN_TUTORIAL,
- value: JSON.stringify(hasSeenTutorial),
- });
-};
-
-export const setUsernameData = async (username?: string) => {
- if (!username) {
- await Storage.remove({ key: USERNAME });
- } else {
- await Storage.set({ key: USERNAME, value: username });
- }
-};
-
-function parseSessions(schedule: Schedule) {
- const sessions: Session[] = [];
- schedule.groups.forEach(g => {
- g.sessions.forEach(s => sessions.push(s));
- });
- return sessions;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/data/selectors.ts b/03_source/mobile_old.del/mobile_main/src/data/selectors.ts
deleted file mode 100644
index 8baa185..0000000
--- a/03_source/mobile_old.del/mobile_main/src/data/selectors.ts
+++ /dev/null
@@ -1,122 +0,0 @@
-import { createSelector } from 'reselect';
-import { Schedule, Session, ScheduleGroup } from '../models/Schedule';
-import { Speaker } from '../models/Speaker';
-import { Location } from '../models/Location';
-import { AppState } from './state';
-
-const getSchedule = (state: AppState) => {
- return state.data.schedule;
-};
-export const getSpeakers = (state: AppState) => state.data.speakers;
-const getSessions = (state: AppState) => state.data.sessions;
-const getFilteredTracks = (state: AppState) => state.data.filteredTracks;
-const getFavoriteIds = (state: AppState) => state.data.favorites;
-const getSearchText = (state: AppState) => state.data.searchText;
-
-export const getFilteredSchedule = createSelector(getSchedule, getFilteredTracks, (schedule, filteredTracks) => {
- const groups: ScheduleGroup[] = [];
- schedule.groups.forEach((group: ScheduleGroup) => {
- const sessions: Session[] = [];
- group.sessions.forEach(session => {
- session.tracks.forEach(track => {
- if (filteredTracks.indexOf(track) > -1) {
- sessions.push(session);
- }
- });
- });
- if (sessions.length) {
- const groupToAdd: ScheduleGroup = {
- time: group.time,
- sessions,
- };
- groups.push(groupToAdd);
- }
- });
-
- return {
- date: schedule.date,
- groups,
- } as Schedule;
-});
-
-export const getSearchedSchedule = createSelector(getFilteredSchedule, getSearchText, (schedule, searchText) => {
- if (!searchText) {
- return schedule;
- }
- const groups: ScheduleGroup[] = [];
- schedule.groups.forEach(group => {
- const sessions = group.sessions.filter(s => s.name.toLowerCase().indexOf(searchText.toLowerCase()) > -1);
- if (sessions.length) {
- const groupToAdd: ScheduleGroup = {
- time: group.time,
- sessions,
- };
- groups.push(groupToAdd);
- }
- });
- return {
- date: schedule.date,
- groups,
- } as Schedule;
-});
-
-export const getScheduleList = createSelector(getSearchedSchedule, schedule => schedule);
-
-export const getGroupedFavorites = createSelector(getScheduleList, getFavoriteIds, (schedule, favoriteIds) => {
- const groups: ScheduleGroup[] = [];
- schedule.groups.forEach(group => {
- const sessions = group.sessions.filter(s => favoriteIds.indexOf(s.id) > -1);
- if (sessions.length) {
- const groupToAdd: ScheduleGroup = {
- time: group.time,
- sessions,
- };
- groups.push(groupToAdd);
- }
- });
- return {
- date: schedule.date,
- groups,
- } as Schedule;
-});
-
-const getIdParam = (_state: AppState, props: any) => {
- return props.match.params['id'];
-};
-
-export const getSession = createSelector(getSessions, getIdParam, (sessions, id) => {
- return sessions.find((s: Session) => s.id === id);
-});
-
-export const getSpeaker = createSelector(getSpeakers, getIdParam, (speakers, id) =>
- speakers.find((x: Speaker) => x.id === id),
-);
-
-export const getSpeakerSessions = createSelector(getSessions, sessions => {
- const speakerSessions: { [key: string]: Session[] } = {};
-
- sessions.forEach((session: Session) => {
- session.speakerNames &&
- session.speakerNames.forEach(name => {
- if (speakerSessions[name]) {
- speakerSessions[name].push(session);
- } else {
- speakerSessions[name] = [session];
- }
- });
- });
- return speakerSessions;
-});
-
-export const mapCenter = (state: AppState) => {
- const item = state.data.locations.find((l: Location) => l.id === state.data.mapCenterId);
- if (item == null) {
- return {
- id: 1,
- name: 'Map Center',
- lat: 43.071584,
- lng: -89.38012,
- };
- }
- return item;
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/data/sessions/conf.state.ts b/03_source/mobile_old.del/mobile_main/src/data/sessions/conf.state.ts
deleted file mode 100644
index 1217baf..0000000
--- a/03_source/mobile_old.del/mobile_main/src/data/sessions/conf.state.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { Location } from '../../models/Location';
-import { Speaker } from '../../models/Speaker';
-import { Schedule, Session } from '../../models/Schedule';
-export interface ConfState {
- schedule: Schedule;
- sessions: Session[];
- speakers: Speaker[];
- favorites: number[];
- locations: Location[];
- filteredTracks: string[];
- searchText?: string;
- mapCenterId?: number;
- loading?: boolean;
- allTracks: string[];
- menuEnabled: boolean;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/data/sessions/sessions.actions.ts b/03_source/mobile_old.del/mobile_main/src/data/sessions/sessions.actions.ts
deleted file mode 100644
index daea818..0000000
--- a/03_source/mobile_old.del/mobile_main/src/data/sessions/sessions.actions.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { getConfData } from '../dataApi';
-import { ActionType } from '../../util/types';
-import { ConfState } from './conf.state';
-
-export const loadConfData = () => async (dispatch: React.Dispatch) => {
- dispatch(setLoading(true));
- const data = await getConfData();
- dispatch(setData(data));
- dispatch(setLoading(false));
-};
-
-export const setLoading = (isLoading: boolean) =>
- ({
- type: 'set-conf-loading',
- isLoading,
- } as const);
-
-export const setData = (data: Partial) =>
- ({
- type: 'set-conf-data',
- data,
- } as const);
-
-export const addFavorite = (sessionId: number) =>
- ({
- type: 'add-favorite',
- sessionId,
- } as const);
-
-export const removeFavorite = (sessionId: number) =>
- ({
- type: 'remove-favorite',
- sessionId,
- } as const);
-
-export const updateFilteredTracks = (filteredTracks: string[]) =>
- ({
- type: 'update-filtered-tracks',
- filteredTracks,
- } as const);
-
-export const setSearchText = (searchText?: string) =>
- ({
- type: 'set-search-text',
- searchText,
- } as const);
-
-export const setMenuEnabled = (menuEnabled: boolean) =>
- ({
- type: 'set-menu-enabled',
- menuEnabled,
- } as const);
-
-export type SessionsActions =
- | ActionType
- | ActionType
- | ActionType
- | ActionType
- | ActionType
- | ActionType
- | ActionType;
diff --git a/03_source/mobile_old.del/mobile_main/src/data/sessions/sessions.reducer.ts b/03_source/mobile_old.del/mobile_main/src/data/sessions/sessions.reducer.ts
deleted file mode 100644
index 540ab64..0000000
--- a/03_source/mobile_old.del/mobile_main/src/data/sessions/sessions.reducer.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { SessionsActions } from './sessions.actions';
-import { ConfState } from './conf.state';
-
-export const sessionsReducer = (state: ConfState, action: SessionsActions): ConfState => {
- switch (action.type) {
- case 'set-conf-loading': {
- return { ...state, loading: action.isLoading };
- }
- case 'set-conf-data': {
- return { ...state, ...action.data };
- }
- case 'add-favorite': {
- return { ...state, favorites: [...state.favorites, action.sessionId] };
- }
- case 'remove-favorite': {
- return {
- ...state,
- favorites: [...state.favorites.filter(x => x !== action.sessionId)],
- };
- }
- case 'update-filtered-tracks': {
- return { ...state, filteredTracks: action.filteredTracks };
- }
- case 'set-search-text': {
- return { ...state, searchText: action.searchText };
- }
- case 'set-menu-enabled': {
- return { ...state, menuEnabled: action.menuEnabled };
- }
- }
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/data/state.ts b/03_source/mobile_old.del/mobile_main/src/data/state.ts
deleted file mode 100644
index 2d35fbc..0000000
--- a/03_source/mobile_old.del/mobile_main/src/data/state.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { combineReducers } from './combineReducers';
-import { sessionsReducer } from './sessions/sessions.reducer';
-import { userReducer } from './user/user.reducer';
-
-export const initialState: AppState = {
- data: {
- schedule: { groups: [] } as any,
- sessions: [],
- speakers: [],
- favorites: [],
- locations: [],
- allTracks: [],
- filteredTracks: [],
- mapCenterId: 0,
- loading: false,
- menuEnabled: true,
- },
- user: {
- hasSeenTutorial: false,
- darkMode: false,
- isLoggedin: false,
- loading: false,
- },
-};
-
-export const reducers = combineReducers({
- data: sessionsReducer,
- user: userReducer,
-});
-
-export type AppState = ReturnType;
diff --git a/03_source/mobile_old.del/mobile_main/src/data/user/user.actions.ts b/03_source/mobile_old.del/mobile_main/src/data/user/user.actions.ts
deleted file mode 100644
index ea475ac..0000000
--- a/03_source/mobile_old.del/mobile_main/src/data/user/user.actions.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import { getUserData, setIsLoggedInData, setUsernameData, setHasSeenTutorialData } from '../dataApi';
-import { ActionType } from '../../util/types';
-import { UserState } from './user.state';
-
-export const loadUserData = () => async (dispatch: React.Dispatch) => {
- dispatch(setLoading(true));
- const data = await getUserData();
- dispatch(setData(data));
- dispatch(setLoading(false));
-};
-
-export const setLoading = (isLoading: boolean) =>
- ({
- type: 'set-user-loading',
- isLoading,
- } as const);
-
-export const setData = (data: Partial) =>
- ({
- type: 'set-user-data',
- data,
- } as const);
-
-export const logoutUser = () => async (dispatch: React.Dispatch) => {
- await setIsLoggedInData(false);
- dispatch(setUsername());
-};
-
-export const setIsLoggedIn = (loggedIn: boolean) => async (dispatch: React.Dispatch) => {
- await setIsLoggedInData(loggedIn);
- return {
- type: 'set-is-loggedin',
- loggedIn,
- } as const;
-};
-
-export const setUsername = (username?: string) => async (dispatch: React.Dispatch) => {
- await setUsernameData(username);
- return {
- type: 'set-username',
- username,
- } as const;
-};
-
-export const setHasSeenTutorial = (hasSeenTutorial: boolean) => async (dispatch: React.Dispatch) => {
- await setHasSeenTutorialData(hasSeenTutorial);
- return {
- type: 'set-has-seen-tutorial',
- hasSeenTutorial,
- } as const;
-};
-
-export const setDarkMode = (darkMode: boolean) =>
- ({
- type: 'set-dark-mode',
- darkMode,
- } as const);
-
-export type UserActions =
- | ActionType
- | ActionType
- | ActionType
- | ActionType
- | ActionType
- | ActionType;
diff --git a/03_source/mobile_old.del/mobile_main/src/data/user/user.reducer.ts b/03_source/mobile_old.del/mobile_main/src/data/user/user.reducer.ts
deleted file mode 100644
index 9f0247d..0000000
--- a/03_source/mobile_old.del/mobile_main/src/data/user/user.reducer.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { UserActions } from './user.actions';
-import { UserState } from './user.state';
-
-export function userReducer(state: UserState, action: UserActions): UserState {
- switch (action.type) {
- case 'set-user-loading':
- return { ...state, loading: action.isLoading };
- case 'set-user-data':
- return { ...state, ...action.data };
- case 'set-username':
- return { ...state, username: action.username };
- case 'set-has-seen-tutorial':
- return { ...state, hasSeenTutorial: action.hasSeenTutorial };
- case 'set-dark-mode':
- return { ...state, darkMode: action.darkMode };
- case 'set-is-loggedin':
- return { ...state, isLoggedin: action.loggedIn };
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/data/user/user.state.ts b/03_source/mobile_old.del/mobile_main/src/data/user/user.state.ts
deleted file mode 100644
index e8a1f8e..0000000
--- a/03_source/mobile_old.del/mobile_main/src/data/user/user.state.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export interface UserState {
- isLoggedin: boolean;
- username?: string;
- darkMode: boolean;
- hasSeenTutorial: boolean;
- loading: boolean;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/declarations.ts b/03_source/mobile_old.del/mobile_main/src/declarations.ts
deleted file mode 100644
index dbe667a..0000000
--- a/03_source/mobile_old.del/mobile_main/src/declarations.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export interface AppPage {
- url: string;
- icon: object;
- title: string;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useCamera.js b/03_source/mobile_old.del/mobile_main/src/hooks/useCamera.js
deleted file mode 100644
index de50d9a..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useCamera.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Camera, CameraResultType, CameraSource } from '@capacitor/camera';
-import { Capacitor } from '@capacitor/core';
-
-export const useCamera = () => {
- const takePhoto = async () => {
- const options = {
- resultType: CameraResultType.Uri,
- source: CameraSource.Camera,
- quality: 100,
- };
- const cameraPhoto = await Camera.getPhoto(options);
- return Capacitor.convertFileSrc(cameraPhoto.webPath);
- };
-
- return {
- takePhoto,
- };
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useFriendStatus.template b/03_source/mobile_old.del/mobile_main/src/hooks/useFriendStatus.template
deleted file mode 100644
index c1f9e30..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useFriendStatus.template
+++ /dev/null
@@ -1,20 +0,0 @@
-import { useState, useEffect } from 'react';
-
-function useFriendStatus(friendID) {
- const [isOnline, setIsOnline] = useState(null);
-
- useEffect(() => {
- function handleStatusChange(status) {
- setIsOnline(status.isOnline);
- }
-
- ChatAPI.subscribeToFriendStatus(friendID, handleStatusChange);
- return () => {
- ChatAPI.unsubscribeFromFriendStatus(friendID, handleStatusChange);
- };
- });
-
- return isOnline;
-}
-
-export default useFriendStatus;
\ No newline at end of file
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useGallery.js b/03_source/mobile_old.del/mobile_main/src/hooks/useGallery.js
deleted file mode 100644
index 7ff93ef..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useGallery.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Camera, CameraResultType, CameraSource } from '@capacitor/camera';
-import { Capacitor } from '@capacitor/core';
-
-export const useGallery = () => {
- const prompt = async () => {
- const options = {
- resultType: CameraResultType.Uri,
- source: CameraSource.Prompt,
- quality: 100,
- };
- const cameraPhoto = await Camera.getPhoto(options);
- return Capacitor.convertFileSrc(cameraPhoto.webPath);
- };
-
- return {
- prompt,
- };
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useGetPartyEventDetail.ts b/03_source/mobile_old.del/mobile_main/src/hooks/useGetPartyEventDetail.ts
deleted file mode 100644
index 63bf6db..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useGetPartyEventDetail.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { useState, useEffect } from 'react';
-
-import { supabase } from '../supabaseClient';
-
-export const useGetPartyEventDetail = ({ party_event_id }) => {
- const [party_event_detail, setPartyEventDetail] = useState(null);
-
- async function getPartyEvents() {
- let { data } = await supabase.from('view_party_event_summaries').select('*').filter('id', '=', party_event_id);
- setPartyEventDetail(data);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, [party_event_id]);
-
- return [party_event_detail];
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useGetPartyEventOrder.ts b/03_source/mobile_old.del/mobile_main/src/hooks/useGetPartyEventOrder.ts
deleted file mode 100644
index d1c7953..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useGetPartyEventOrder.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { useState, useEffect } from 'react';
-
-import {supabase} from '../supabaseClient'
-
-export const useGetPartyEventOrder = ({event_id}) => {
- const [party_event_order, setPartyEventOrder] = useState(null);
-
- async function getPartyEventOrder(){
- let {data} = await supabase.from('party_event_orders').select(`
- id, profiles(id, full_name, gender, remarks)
- `);
- // status == 2 , paid
-
- // tidy up
-
-
- // .filter('party_event_id', 'in', `("${event_id}")`);
- // setPartyEventOrder(data);
- // console.log({data})
- }
-
- useEffect(() => {
- getPartyEventOrder();
- },[]);
-
-
- return [party_event_order];
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useGetProfileById.ts b/03_source/mobile_old.del/mobile_main/src/hooks/useGetProfileById.ts
deleted file mode 100644
index 26de031..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useGetProfileById.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { useState, useEffect } from 'react';
-
-import { supabase } from '../supabaseClient';
-
-export const useGetProfileById = ({ id }) => {
- const [party_event_order, setPartyEventOrder] = useState(null);
-
- async function getPartyEventOrder() {
- let { data } = await supabase
- .from('profiles')
- .select('*')
- .filter('id', 'in', `("33a1f462-7085-4655-b42e-a0f1e8395f6c")`);
- }
-
- useEffect(() => {
- getPartyEventOrder();
- }, []);
-
- return [party_event_order];
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useGetUserProfileById.ts b/03_source/mobile_old.del/mobile_main/src/hooks/useGetUserProfileById.ts
deleted file mode 100644
index 158240f..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useGetUserProfileById.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-// REQ0044/near_by_page
-// what to do:
-// list users near by except current user
-
-import { useContext, useEffect, useState } from 'react';
-
-import { AppContext } from '../data/AppContext';
-import { supabase } from '../supabaseClient';
-
-export const useGetUserProfileById = ({ user_id }) => {
- const { profile } = useContext(AppContext);
- const [other_user_profiles, setOtherUserProfiles] = useState([]);
-
- async function getPartyEvents() {
- let { data } = await supabase.from('profiles').select('*').filter('user_id', 'in', `(${user_id})`).limit(1);
-
- setOtherUserProfiles(data[0]);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [other_user_profiles];
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useJoinTest.ts b/03_source/mobile_old.del/mobile_main/src/hooks/useJoinTest.ts
deleted file mode 100644
index 112cc73..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useJoinTest.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { useState, useEffect } from 'react';
-
-import {supabase} from '../supabaseClient'
-
-export const useJoinTest = () => {
- const [test_data, setTestData] = useState(null);
-
- async function getPartyEvents(){
- const { data, error } = await supabase.from('countries').select(`
- id,
- name,
- cities ( id, name )
- `)
-
- console.log({data})
-
- setTestData(data);
- }
-
- useEffect(() => {
- getPartyEvents();
-
- },[]);
-
-
- return [test_data];
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useListOtherUserProfiles.ts b/03_source/mobile_old.del/mobile_main/src/hooks/useListOtherUserProfiles.ts
deleted file mode 100644
index 35b3611..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useListOtherUserProfiles.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-// REQ0044/near_by_page
-// what to do:
-// list users near by except current user
-
-import { useContext, useEffect, useState } from 'react';
-
-import { AppContext } from '../data/AppContext';
-import { supabase } from '../supabaseClient';
-
-export const useListOtherUserProfiles = () => {
- const { profile } = useContext(AppContext);
- const [other_user_profiles, setOtherUserProfiles] = useState([]);
- const user_id = '1';
-
- async function getPartyEvents() {
- console.log({ profile });
- let { data } = await supabase.from('profiles').select('*').not('user_id', 'in', `(${user_id})`).limit(10);
- setOtherUserProfiles(data);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [other_user_profiles];
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useListPartyEventOrderSummary.ts b/03_source/mobile_old.del/mobile_main/src/hooks/useListPartyEventOrderSummary.ts
deleted file mode 100644
index 2a61863..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useListPartyEventOrderSummary.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { useState, useEffect } from 'react';
-import { supabase } from '../supabaseClient';
-
-export const useListPartyEventOrderSummary = ({ user_id }) => {
- const [party_event_summaries, setPartyEventSummaries] = useState(null);
-
- async function getPartyEvents() {
- let { data } = await supabase.from('view_party_event_orders_summary').select('*').filter('user_id', 'eq', '1');
- setPartyEventSummaries(data);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [party_event_summaries];
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useListPartyEventOrders.ts b/03_source/mobile_old.del/mobile_main/src/hooks/useListPartyEventOrders.ts
deleted file mode 100644
index 508bce8..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useListPartyEventOrders.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { useState, useEffect } from 'react';
-import { supabase } from '../supabaseClient';
-
-export const useListPartyEventOrders = ({ user_id }) => {
- const [party_event_summaries, setPartyEventSummaries] = useState(null);
-
- async function getPartyEvents() {
- let { data } = await supabase.from('view_party_event_orders').select('*').filter('user_id', 'eq', '1');
- setPartyEventSummaries(data);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [party_event_summaries];
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useListPartyEventSummaries.ts b/03_source/mobile_old.del/mobile_main/src/hooks/useListPartyEventSummaries.ts
deleted file mode 100644
index 71efa24..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useListPartyEventSummaries.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { useState, useEffect } from 'react';
-
-import { supabase } from '../supabaseClient';
-
-export const useListPartyEventSummaries = () => {
- const [party_event_summaries, setPartyEventSummaries] = useState(null);
-
- async function getPartyEvents() {
- let { data } = await supabase.from('view_party_event_summaries').select('*');
- setPartyEventSummaries(data);
- console.log({ party_event_summaries });
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [party_event_summaries];
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useListPartyEvents.ts b/03_source/mobile_old.del/mobile_main/src/hooks/useListPartyEvents.ts
deleted file mode 100644
index 57a7eef..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useListPartyEvents.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { useState, useEffect } from 'react';
-
-import { supabase } from '../supabaseClient';
-
-export const useListPartyEvents = () => {
- const [party_event_summaries, setPartyEventSummaries] = useState(null);
-
- async function getPartyEvents() {
- let { data } = await supabase.from('view_party_event_summaries').select('*');
- setPartyEventSummaries(data);
- console.log({ data });
- }
-
- useEffect(() => {
- getPartyEvents();
- }, []);
-
- return [party_event_summaries];
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/hooks/useViewPartyEventParticipants.ts b/03_source/mobile_old.del/mobile_main/src/hooks/useViewPartyEventParticipants.ts
deleted file mode 100644
index 15d96a0..0000000
--- a/03_source/mobile_old.del/mobile_main/src/hooks/useViewPartyEventParticipants.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-// REQ0041/home_discover_event_tab
-import { useState, useEffect } from 'react';
-
-import { supabase } from '../supabaseClient';
-
-export const useViewPartyEventParticipants = ({ party_event_id, limit }) => {
- const [participants, setParticipants] = useState(null);
-
- async function getPartyEvents() {
- let { data } = await supabase
- .from('view_party_event_participants')
- .select('*')
- .filter('id', '=', party_event_id)
- .limit(limit);
-
- setParticipants(data);
- }
-
- useEffect(() => {
- getPartyEvents();
- }, [party_event_id]);
-
- return [participants];
-};
diff --git a/03_source/mobile_old.del/mobile_main/src/i18n.ts b/03_source/mobile_old.del/mobile_main/src/i18n.ts
deleted file mode 100644
index ff5cafc..0000000
--- a/03_source/mobile_old.del/mobile_main/src/i18n.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import i18n from 'i18next';
-import { initReactI18next } from 'react-i18next';
-import Languagedetector from 'i18next-browser-languagedetector';
-import en from './locales/en/en.json';
-import hk from './locales/hk/hk.json';
-
-i18n
- .use(initReactI18next)
- .use(Languagedetector)
- .init({
- resources: {
- en: { translation: en },
- zhHk: { translation: hk },
- },
- fallbackLng: 'en',
- interpolation: {
- escapeValue: false,
- },
- });
-
-export { i18n };
diff --git a/03_source/mobile_old.del/mobile_main/src/locales/en/en.json b/03_source/mobile_old.del/mobile_main/src/locales/en/en.json
deleted file mode 100644
index d5fc061..0000000
--- a/03_source/mobile_old.del/mobile_main/src/locales/en/en.json
+++ /dev/null
@@ -1,1634 +0,0 @@
-{
- "helloworld": "this is helloworld",
- "onboarding": {
- "slides": [
- {
- "title": "Welcome to your Cardano Foundation Identity Wallet",
- "description": "An opensource mobile digital wallet that enables you to securely manage your own identity in a privacy-preserving and self-sovereign manner."
- },
- {
- "title": "Empowerment with Self-Sovereign Identity (SSI)",
- "description": "Embrace SSI principles, store private keys locally in your mobile device's Hardware Security Module, and control your identity."
- },
- {
- "title": "Privacy & Security: Your Top Priorities",
- "description": "Prioritize privacy and security with Decentralized Identifiers and Verifiable Credentials. Control your data, what you share, with whom, and for how long."
- },
- {
- "title": "Embrace Interoperability for a Wider Reach",
- "description": "Supporting new and existing standards, ecosystems, and frameworks is crucial to achieving widespread adoption and seamless interoperability."
- },
- {
- "title": "Decentralize Your Digital Identity",
- "description": "Traditional identity systems offer minimal control over your digital identifiers. Decentralized technology transfers ownership and control to you."
- }
- ],
- "getstarted": {
- "button": {
- "label": "Get Started"
- }
- },
- "alreadywallet": {
- "button": {
- "label": "I already have a wallet"
- }
- }
- },
- "createpasscodemodule": {
- "errornomatch": "Passcode didn’t match",
- "errormatch": "Passcode already in use",
- "cantremember": "Can't remember?"
- },
- "setpasscode": {
- "enterpasscode": "Create your Passcode",
- "description": "Create a passcode to secure your wallet and to continue the onboarding process",
- "recoverydescription": "Create a passcode to secure your wallet and to continue the recovery process",
- "reenterpasscode": "Re-enter your Passcode",
- "cancelbtn": "Cancel",
- "backbtn": "Back"
- },
- "generateseedphrase": {
- "onboarding": {
- "title": "Generate recovery phrase",
- "paragraph": {
- "top": "Think of your secret recovery phrase as a safety net for your identity. If you ever lose your phone or switch to a new wallet, this phrase will help you recover your identity.",
- "bottom": "It's important to keep these words safe and sound! Store them in a secure location, like a password manager, and remember to never share them with anyone."
- },
- "button": {
- "continue": "Generate",
- "switch": "Switch to recover a wallet"
- }
- },
- "segment": "{{length}} words",
- "privacy": {
- "overlay": {
- "text": "Press the ‘view’ button when you’re ready to see your seed phrase. Remember to make sure nobody is looking!",
- "button": "View Seed Phrase"
- }
- },
- "alert": {
- "confirm": {
- "text": "Have you double-checked you’ve copied your 18 word phrase correctly?",
- "button": {
- "confirm": "Yes, copied",
- "cancel": "Cancel"
- }
- },
- "exit": {
- "text": "If you go back you will lose your current progress. Are you sure you want to do this?",
- "button": {
- "confirm": "Confirm",
- "cancel": "Cancel"
- }
- },
- "toggle": {
- "text": "Switching tabs will remove the words you have already entered, are you sire you want to switch?",
- "button": {
- "confirm": "Yes, switch tabs",
- "cancel": "Cancel"
- }
- },
- "verify": {
- "text": "Your seed phrase couldn’t be verified. Please, try again or choose an alternative method",
- "button": {
- "confirm": "Try again",
- "cancel": "Cancel"
- }
- }
- },
- "termsandconditions": {
- "text": "I have read and agree to the <0>{{clickableTerms}}0> and <1>{{clickablePrivacy}}1>.",
- "terms": "Terms of Use",
- "privacy": "Privacy Policy"
- }
- },
- "termsofuse": {
- "done": "Done",
- "intro": {
- "title": "Terms & conditions",
- "text": "Please read these terms of use (\"Terms & conditions\" or \"Terms\") carefully before using the services offered by Cardano Foundation (together with our subsidiaries and affiliates, referred to as \"Foundation,\" \"We,\" \"Us\" or \"Our\" in these Terms of Use). These Terms of Use set forth the legally binding terms and conditions for your use of this website and all of the related websites, mobile apps, products and services offered by the Foundation and its affiliated entities including our APK's, API's, plug-ins and browser extensions (collectively, the \"Products\"). By using the Products in any manner, you agree to be bound by these Terms of Use."
- },
- "sections": [
- {
- "title": "1. USE OF PRODUCTS",
- "content": [
- {
- "subtitle": "a. Eligibility:",
- "text": "You represent and warrant that you: (a) are of legal age to form a binding contract in your jurisdiction; (b) have not previously been suspended or removed from using the Products; and (c) have full power and authority to enter into these Terms of Use and in doing so will not violate any other agreement to which you are a party. If you are registering to use the Products on behalf of a legal entity, you further represent and warrant that (i) such legal entity is duly organized and validly existing under the applicable laws of the jurisdiction of its organization, and (ii) you are duly authorized by such legal entity to act on its behalf."
- },
- {
- "subtitle": "b. Product Changes:",
- "text": "We reserve the right to make changes or updates to the Products at any time without notice, for any reason at Our sole discretion. We retain the authority to modify, update, limit, or revoke your access to Our Products, including any related accounts, at any time and without prior notice, for any reason at Our sole discretion."
- },
- {
- "subtitle": "c. Additional Terms:",
- "text": "In addition, some Products may be subject to additional terms and conditions promulgated by the Foundation from time to time; your use of such Products is subject to those additional terms and conditions, which are incorporated into these Terms of Use by this reference. If there are any inconsistencies between these Terms of Use and the additional terms, the additional terms will take precedence."
- },
- {
- "subtitle": "d. Download and use of Android Package Kit (“APK”) Products:",
- "text": "The use of APK Products is subject to these Terms of Use, and by downloading and using APK Products, you agree to comply with these terms and any additional terms we may provide you concerning the use of APK Products. You acknowledge that downloading and installing APK Products requires manual installation on your device and that you are solely responsible for the process and any issues that may arise from installation and use. We ensure that the APK Products we provide are secure, but you must take necessary precautions to protect your device. We may offer limited support for APK Products, and you agree to seek support through the channels we designate. APK Products might not receive automatic updates and It is your responsibility to monitor and install any updates we provide."
- },
- {
- "subtitle": "e. Privacy Policy:",
- "text": "By using the Products in any way, you understand and acknowledge that the terms of the Privacy Policy apply to you."
- },
- {
- "subtitle": "f. Feedback:",
- "text": "We appreciate any feedback or suggestions you might have regarding Our Products. You can share your thoughts at https://cardanofoundation.org/en/contact-us/. When you provide feedback in any form, you give Us permission to use, share, and build upon your input as We see fit, without owing you anything in return."
- },
- {
- "subtitle": "g. Dispute Resolution:",
- "text": "If you have a dispute with the Foundation or a claim to raise in relation to the Products, you agree to contact Us using the form at https://cardanofoundation.org/en/contact-us/ to attempt to resolve the issue informally first."
- }
- ]
- },
- {
- "title": "2. YOUR CONTENT",
- "content": [
- {
- "subtitle": "a. Definition of 'Your Content':",
- "text": "For the purposes of these Terms of Use, 'Your Content' refers to all materials you submit or transmit to, through, or in connection with Our Products, including but not limited to photographs, profile pictures, messages, comments, testimonials, and any other text, graphics, videos, or audio content."
- },
- {
- "subtitle": "b. License Grant:",
- "text": "By submitting, posting, or displaying Your Content on or through Our Products, you grant Us a non-exclusive, worldwide, royalty-free, fully paid-up, sublicensable, and transferable license to use, reproduce, process, distribute, create derivative works of, display, and perform Your Content in connection with Our Products and Our business, including for promoting and redistributing part or all of the Products (and derivative works thereof) in any media formats and through any media channels. This license will exist for the period during which Your Content is posted on Our Products or until We choose to remove it, whichever is shorter."
- },
- {
- "subtitle": "c. Ownership of Your Content:",
- "text": "You retain ownership rights in Your Content. However, by submitting Your Content to Our Products, you hereby grant Us the non-exclusive rights and license as set out above. Other than the rights and license you grant in these Terms of Use, We acknowledge and agree that We obtain no right, title, or interest from you under these Terms of Use in any of Your Content."
- },
- {
- "subtitle": "d. Representations and Warranties:",
- "text": "You represent and warrant that:\n\n- You either own Your Content or have the necessary licenses, rights, consents, and permissions to grant the rights and licenses as provided herein;\n- Your Content does not and will not infringe or violate any third party's intellectual property rights, proprietary rights, privacy rights, confidentiality, rights of publicity or otherwise violate these Terms of Use or applicable law; and\n- You have obtained all required permissions from any individual whose personal data is part of Your Content, allowing Us to use and disclose the data as set out in these Terms of Use."
- },
- {
- "subtitle": "e. Your Responsibility:",
- "text": "You are solely responsible for Your Content and the consequences of posting, publishing, or sharing it. We do not endorse any of Your Content or any opinion, recommendation, or advice expressed therein, and We expressly disclaim any and all liability in connection with Your Content."
- }
- ]
- },
- {
- "title": "3. INTELLECTUAL PROPERTY",
- "content": [
- {
- "subtitle": "a. Ownership:",
- "text": "All intellectual property in or related to the Products, including but not limited to the software, 'Cardano' and 'ADA' marks, logos and the names and logos of the Products ('Our Intellectual Property'), is the property of the Foundation."
- },
- {
- "subtitle": "b. Grant of Licence:",
- "text": "We provide you a limited, non-exclusive licence to access and utilise Our Intellectual Property as part of your use of the Products, all in accordance with these Terms of Use. We retain the right to revoke this license at any time for any reason. Outside of the permissions explicitly granted in these Terms of Use, all other rights remain with Us."
- },
- {
- "subtitle": "c. Restrictions:",
- "text": "Except as provided in these Terms of Use, you agree not to copy, rent, lease, sell or distribute, or create derivative works of Our Intellectual Property Rights. Some Products might be governed by open-source licenses; in such instances, the terms of those specific licenses will apply. You should refer to the specific license terms accompanying each Product or component thereof to understand your rights and obligations. Any other use of the Foundation's intellectual property requires Our express written permission."
- },
- {
- "subtitle": "d. Trademarks:",
- "text": "You are granted no rights or license to use Foundation trademarks unless in strict accordance with the Foundation's trademark policy."
- }
- ]
- },
- {
- "title": "4. DISCLAIMERS; LIMITATION OF LIABILITY",
- "content": [
- {
- "subtitle": "a. Disclaimer of Warranties:",
- "text": "YOU UNDERSTAND AND ACKNOWLEDGE THAT WE ARE PROVIDING THE PRODUCTS, SERVICES, INCLUDING RELATED INFORMATION AND CONTENT, ON AN 'AS IS' AND 'AS AVAILABLE' BASIS, WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED. THIS MAY INCLUDE PRODUCTS OFFERED IN 'BETA' VERSIONS, INTENDED TO PROVIDE THE FOUNDATION WITH FEEDBACK ON THE QUALITY AND USABILITY OF THE PRODUCTS AND APPLICATION PROGRAMMING INTERFACES (APIs). THE FOUNDATION ENTITIES MAKE NO REPRESENTATIONS AND EXPRESSLY DISCLAIM ALL WARRANTIES ABOUT THE SUITABILITY, MERCHANTABILITY, FITNESS FOR PURPOSE, RELIABILITY, AVAILABILITY, TIMELINESS, SECURITY, TITLE AND NON-INFRINGEMENT, ACCURACY OR COMPLETENESS, DATA SYNCHED TO OR MADE AVAILABLE FROM THE PRODUCTS, PRODUCT CONTENT, OR ANY CONSULTING SERVICES WE PROVIDE FOR ANY ASSOCIATED PURPOSE."
- },
- {
- "subtitle": "No Indirect Damages:",
- "text": "TO THE EXTENT PERMITTED BY LAW, IN NO EVENT WILL FOUNDATION ENTITIES BE LIABLE FOR ANY INDIRECT, INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES, OR LOSS OF PROFITS, REVENUE, DATA OR BUSINESS OPPORTUNITIES ARISING OUT OF OR RELATED TO THESE TERMS OF USE, WHETHER AN ACTION IS IN CONTRACT OR TORT AND REGARDLESS OF THE THEORY OF LIABILITY."
- },
- {
- "subtitle": "b. Third Party Products:",
- "text": "THE FOUNDATION ENTITIES MAKE NO PROMISES WITH RESPECT TO, AND EXPRESSLY DISCLAIM ALL LIABILITY, TO THE MAXIMUM EXTENT PERMITTED BY LAW, FOR: (i) CONTENT POSTED BY ANY THIRD-PARTY ON THE PRODUCTS, (ii) THE PRODUCT DESCRIPTIONS OR PRODUCTS, (iii) THIRD-PARTY SITES AND ANY THIRD-PARTY PRODUCT OR SERVICE LISTED ON OR ACCESSIBLE TO YOU THROUGH THE PRODUCTS, AND (iv) THE QUALITY OR CONDUCT OF ANY THIRD PARTY YOU ENCOUNTER IN CONNECTION WITH YOUR USE OF ANY PRODUCT OR WEBSITE ('Third Party Products)."
- },
- {
- "subtitle": "c. Limitation of Liability:",
- "text": "ANY LIABILITY OF THE FOUNDATION ENTITIES IS HEREBY LIMITED TO THE MAXIMUM EXTENT ALLOWED BY APPLICABLE LAW. THE AGGREGATE LIABILITY OF FOUNDATION ENTITIES WILL IN ANY EVENT BE LIMITED TO A SUM EQUAL TO THE TOTAL AMOUNTS PAID OR PAYABLE FOR THE PRODUCTS IN THE TWELVE MONTH PERIOD PRECEDING THE EVENT GIVING RISE TO A CLAIM; PROVIDED HOWEVER, THIS LIMITATION WILL NOT APPLY TO YOU IF NO SUCH FEES ARE PAYABLE, AND IN THIS CASE, IF WE ARE DETERMINED TO HAVE ANY LIABILITY TO YOU OR ANY THIRD PARTY ARISING FROM YOUR USE OF THE PRODUCTS, THEN OUR AGGREGATE LIABILITY WILL BE LIMITED TO ONE HUNDRED U.S. DOLLARS."
- },
- {
- "subtitle": "d. Agreement to Liability Limit:",
- "text": "YOU UNDERSTAND AND AGREE THAT ABSENT YOUR AGREEMENT TO THIS LIMITATION OF LIABILITY, WE WOULD NOT PROVIDE THE PRODUCTS TO YOU."
- }
- ]
- },
- {
- "title": "5. INDEMNIFICATION",
- "content": [
- {
- "subtitle": "",
- "text": "You agree to fully indemnify, defend and hold the Foundation Entities, including their directors, officers, employees, consultants, and other representatives, harmless from and against any claims, damages, losses, costs (including reasonable legal fees), and other expenses resulting directly or indirectly from: (a) any breach or noncompliance of these Terms of Use by you or your affiliates, inclusive of policies mentioned herein; (b) allegations that materials you provide or convey to the Products violate the intellectual property rights of a third party; (c) your or your affiliates' use of Third-Party Products; and/or (d) any negligent or intentional misconduct by you. You shall not agree to any settlement that (i) obligates Us in any manner; (ii) demands an admission from Us; or (iii) assigns liability beyond these indemnifications or restricts Us, without obtaining Our prior written approval."
- }
- ]
- },
- {
- "title": "6. MISCELLANEOUS",
- "content": [
- {
- "subtitle": "a. Amendment:",
- "text": "We may modify any part or all of these Terms of Use. The revised version will become effective and binding the next business day after it is posted. We will provide you notice of this revision by email, website banner, in-product notification or publishing revised Terms of Use at this page, if applicable. YOU AGREE THAT YOUR CONTINUED USE OF THE PRODUCTS AFTER SUCH CHANGES BECOME EFFECTIVE CONSTITUTES YOUR ACCEPTANCE OF THE CHANGES. If you do not agree with a modification to the Terms of Use, you must notify Us in writing within thirty (30) days after We send notice of the revision. If We can no longer reasonably provide the Product to you under the terms prior to modification, then the Terms of Use and/or your access to the Products will terminate upon Our notice to you and We will promptly refund any prepaid but unused fees, if any, covering use of the Product."
- },
- {
- "subtitle": "b. Application Provider Terms:",
- "text": "These Terms of Use are between you and the Foundation only, and not with an application service or application platform provider (such as Apple, Inc., or Google Inc.), which may provide you the application subject to its own terms of use."
- },
- {
- "subtitle": "c. Governing Law and Jurisdiction:",
- "text": "These Terms of Use will be interpreted in accordance with the laws of Switzerland. You agree that any disputes arising out of or in connection with these Terms of Use, not otherwise resolved in accordance with dispute resolution provision set forth in section 1(f) shall be subject to the exclusive jurisdiction of the courts located in Zug, Switzerland."
- },
- {
- "subtitle": "d. Languages:",
- "text": "The English version of these Terms of Use is the definitive and binding version. All notices, alerts, and procedures communications concerning these Terms of Use will be executed in English, even if translations into other languages are made available. Should there be any discrepancies between the English version and other translations, the English version will take precedence, as permitted by law."
- },
- {
- "subtitle": "e. Assignment:",
- "text": "You may not assign, transfer, delegate, or sublicense any rights, obligations, or remedies under these Terms of Use without the prior written consent of the Foundation. Any such attempts without this consent will be considered void. We retain the discretion to assign, transfer, or delegate Our rights, obligations, or remedies under these Terms of Use as We see fit."
- },
- {
- "subtitle": "f. Waiver:",
- "text": "Our failure to assert a right or provision under these Terms of Use will not constitute a waiver of such right or provision."
- },
- {
- "subtitle": "g. Entire Agreement and Severability:",
- "text": "These Terms of Use supersede all prior terms, agreements, discussions and writings regarding the Products and constitutes the entire agreement between you and Us regarding the Products. If any part of these Terms of Use is determined to be invalid or unenforceable by applicable law, then the invalid or unenforceable provision will be deemed superseded by a valid, enforceable provision that most closely matches the intent of the original provision and the remainder of these Terms of Use will continue in effect."
- },
- {
- "subtitle": "h. Survival:",
- "text": "The following provisions will survive expiration or termination of these Terms of Use: Section 2 (Your Content), Section 3(a)(Ownership) and (c)(Restrictions), Section 4 (Disclaimers and Limitations of Liability), Section 5 (indemnification), Section 1(f) (Dispute Resolution) and Section 6 (Miscellaneous)."
- },
- {
- "subtitle": "i. Contact:",
- "text": "Feel free to contact Us with any questions about these Terms of Use. You can also write to Us at:\n\nCardano Foundation,\nDammstrasse 16,\n6300, Zug,\nSwitzerland\nAttn: Legal"
- }
- ]
- }
- ]
- },
- "privacypolicy": {
- "done": "Done",
- "intro": {
- "title": "Privacy Policy",
- "text": "Cardano Foundation (referred to as \"Foundation\", \"We\", \"Our\", or \"Us\") is committed to innovating in digital identity management while prioritising user privacy and data protection. This Privacy Policy specifically applies to the Identity Wallet developed by the Cardano Foundation (the \"Identity Wallet\") and the website http://identity.cardanofoundation.org (the \"Products\"). The Identity Wallet is a product designed to facilitate the creation and management of digital identities using Key Event Receipt Infrastructure (KERI) and Decentralized Identifiers (DIDs), operating without linking to any real-world names or personal identifiable information (PII). The Identity Wallet does not require users to submit emails, names, phone numbers, or any documents. Instead, it provides a framework for users to manage their own digital identities autonomously. This is achieved by securely storing private key material on the user's device for identification purposes, enabling users to control their own identity information and securely communicate with other users and entities. This policy outlines our practices regarding the collection, use, disclosure, and protection of any data associated with the Identity Wallet. Note that this policy may differ from other privacy policies pertaining to different CF products or services. Please read this Privacy Policy carefully."
- },
- "sections": [
- {
- "title": "1. Data controller and contact details",
- "content": [
- {
- "subtitle": "",
- "text": "The controller of the data processing described in this Privacy Policy is Cardano Foundation, unless we inform you otherwise in certain cases. You can notify Us of any data protection-related concerns using the following contact details:\n\nCardano Foundation\nDammstrasse 16\n6300 Zug\n\ngdpr@cardanofoundation.org"
- }
- ]
- },
- {
- "title": "2. Types of Data Collected",
- "content": [
- {
- "subtitle": "",
- "text": "For the Identity Wallet, We collect and manage data differently, aligning with our commitment to user privacy and secure identity management. We do not collect typical personal data like names, addresses, or contact information. When using the Products, the Foundation may ask you to provide certain information that can be used to identify or contact you 'Personal Data'. The types of Personal Data that We collect from you depend on the circumstances of collection, the nature of the Product used or the transaction undertaken. Data We collect may include, but is not limited to:"
- },
- {
- "subtitle": "a. Device/ Network Data:",
- "text": "Information regarding your interaction with a Product. This includes technical information (e.g., IP Address, MAC Address, SSIDs, etc.), online user ID, device characteristics (such as browser/OS version), web server logs, browser plug-ins, your time zone application logs and language settings, cookie data, usage data. It also includes practical information like any login information, information about how you use Our Products and interact with Us and limited technical information necessary for the operation and security of the wallet, such as device type and operating system version. This is to ensure the proper functioning of the wallet and to provide security features."
- },
- {
- "subtitle": "",
- "text": "To clarify, We do not collect the following data, which remains stored on the user's device:"
- },
- {
- "subtitle": "- Identity Data:",
- "text": "This includes any personal details users choose to employ for setting up or supporting their digital identities, like their names, physical addresses, identification documents, or proofs of residency and credentials."
- },
- {
- "subtitle": "- Digital Identity Data:",
- "text": "Information related to the digital identities created using the wallet, including KERI and DIDs. This does not include real-world names or personal details, unless the user opts to incorporate these details."
- },
- {
- "subtitle": "- Private Key Material:",
- "text": "This comprises private keys, which are essential for identity management and verification purposes."
- }
- ]
- },
- {
- "title": "3. How we collect your Personal Data",
- "content": [
- {
- "subtitle": "",
- "text": "You may give Us personal information when you use, apply or register for a Foundation product or otherwise submit information to use through the Products or other communications with Us. For example:"
- },
- {
- "subtitle": "a.",
- "text": "We may collect information when you create a profile on Our Products;"
- },
- {
- "subtitle": "b.",
- "text": "We may collect Device/Network Data when you access and use Our websites. Some of this data is necessary for Us to run Our website or to respond to your requests, like ticket bookings. Other data is huge help to Us in providing you with better services and maintaining a well-run organisation;"
- },
- {
- "subtitle": "c.",
- "text": "We may collect information about you from third parties; and other channels including Our support."
- },
- {
- "subtitle": "d.",
- "text": "We may collect data under any other contractual agreement or arrangement;"
- }
- ]
- },
- {
- "title": "4. Use of Personal Data",
- "content": [
- {
- "subtitle": "",
- "text": "We may use your Personal Data for the following purposes:"
- },
- {
- "subtitle": "a.",
- "text": "For legitimate business purposes and to provide the Products you request. This includes but is not limited to: fulfilling Our obligations to you and to financial or other institutions, compliance with laws, audits, protect rights, prevent fraud, and for business improvement, including sending relevant information, responding to law enforcement, gathering feedback, and addressing complaints or disputes;"
- },
- {
- "subtitle": "b.",
- "text": "to protect the safety and the well being of yourself and/or other users;"
- },
- {
- "subtitle": "c.",
- "text": "for business development purposes such as statistical and marketing analysis, systems testing, maintenance and development, customer surveys or to help Us in any future dealings with you, for example by identifying your requirements and preference; for all other purposes ancillary to any of the purposes stated above (\"Ancillary Purposes\");"
- },
- {
- "subtitle": "d.",
- "text": "based on your consent: If you have given us consent to process your personal data for certain purposes, we process your personal data within the scope of and based on this consent, unless we have another legal basis and we require such a basis. Consent given can be revoked at any time, but this has no effect on data processing that has already taken place."
- },
- {
- "subtitle": "",
- "text": "(collectively, \"Purposes\")"
- }
- ]
- },
- {
- "title": "5. Data Security and Transfer",
- "content": [
- {
- "subtitle": "",
- "text": "While no system is absolutely secure, We use reasonable technical and organisational precautions to protect your data and to respect your privacy."
- },
- {
- "subtitle": "",
- "text": "We employ measures like encryption, secure physical storage, limited access zones, confidentiality agreements, and routine assessments for timely data deletion to safeguard your information."
- },
- {
- "subtitle": "",
- "text": "The Identity Wallet is designed to store Digital Identity Data and Private Key Material directly on the user's device. As such, no transfer of this data occurs to Cardano Foundation servers or external entities, providing an additional layer of privacy and security."
- },
- {
- "subtitle": "",
- "text": "Personal Data may be transferred to, and stored at a destination outside the European Economic Area (\"EEA\") where there are appropriate safeguards in place pursuant to Article 46 of the GDPR. This data might be handled by Our staff or Our suppliers outside the EEA for various tasks, including service provision. By providing your personal data, you consent to such transfers, storage, or processing."
- }
- ]
- },
- {
- "title": "6. Retention",
- "content": [
- {
- "subtitle": "",
- "text": "The Foundation will hold onto your Personal Data only as long as needed based on the reasons outlined in this Privacy Policy."
- },
- {
- "subtitle": "",
- "text": "Digital Identity Data and Private Key Material will be retained on the user's device and will not be stored on Cardano Foundation servers. Users have full control over this data, including its deletion."
- },
- {
- "subtitle": "",
- "text": "Device/Network Data will be retained only as long as necessary for operational and security purposes. This data will be subject to regular review and deletion as per our data minimization principles."
- },
- {
- "subtitle": "",
- "text": "We will store and utilize your Personal Data as long as it's required to meet legal obligations, address disagreements, and uphold Our legal agreements and policies. Additionally, We will keep usage data for Our internal analysis purposes. Typically, usage data is kept for a shorter duration unless it aids in enhancing product security or functionality, or when legal requirements necessitate longer retention."
- }
- ]
- },
- {
- "title": "7. Data Disclosure",
- "content": [
- {
- "subtitle": "",
- "text": "We will not trade or sell your Personal Data to third parties."
- },
- {
- "subtitle": "",
- "text": "We will not disclose any Digital Identity Data or Private Key Information to third parties, as this data is stored solely on the user's device."
- },
- {
- "subtitle": "",
- "text": "Your other Personal Data, if any, shall only be disclosed or transferred to the following third parties appointed or authorised by the Foundation for the fulfilment of the Purposes described herein, in accordance with GDPR principles such as consent, contractual necessity, legal obligation, vital interests, public task, and legitimate interests. This may include third party processors, such as:"
- },
- {
- "subtitle": "a.",
- "text": "Data warehouses;"
- },
- {
- "subtitle": "b.",
- "text": "IT service providers;"
- },
- {
- "subtitle": "c.",
- "text": "Data analytics and/or marketing agencies;"
- },
- {
- "subtitle": "d.",
- "text": "Third party service providers, tools or plugins that enable a better user experience for Products, such as social media plugins or online marketing tools, newsletter providers"
- },
- {
- "subtitle": "e.",
- "text": "Auditors"
- },
- {
- "subtitle": "",
- "text": "We shall take practical steps to ensure that their employees, officers, agents, consultants, contractors and such other third parties mentioned above who are involved in the collection or processing of your Personal Data will observe and adhere to the terms of this Privacy Policy and GDPR requirements."
- },
- {
- "subtitle": "",
- "text": "The Foundation may disclose your Personal Data in good faith belief that such disclosure is necessary for one of the following reasons: complying with a legal obligation; protecting and defending the rights or property of the Foundation; preventing or investigating possible wrongdoing in connection with the Products; protecting the personal safety of users of Products or the public; protecting against legal liability; or responding to legal bodies as permitted or required by law such as in compliance with a warrant or subpoena issued by a court of competent jurisdiction; and/or responding to regulatory authorities."
- },
- {
- "subtitle": "",
- "text": "In addition to the above, your Personal Data may also be disclosed or transferred to Our affiliates and subsidiaries."
- }
- ]
- },
- {
- "title": "8. Your Rights",
- "content": [
- {
- "subtitle": "",
- "text": "Users can access, manage, and delete their Digital Identity Data within the wallet at any time. Any Private Key Material or other data securely stored within your device (as described in section 2) must be removed manually by the user."
- },
- {
- "subtitle": "",
- "text": "If you want to know what Personal Data the Foundation holds about you or wish for it to be deleted, please reach out to Us at gdpr@cardanofoundation.org."
- },
- {
- "subtitle": "",
- "text": "In certain circumstances, you possess these data protection rights:"
- },
- {
- "subtitle": "a.",
- "text": "Access: You can ask for details about your personal data We have."
- },
- {
- "subtitle": "b.",
- "text": "Rectification: If the data is inaccurate or incomplete, you can request corrections."
- },
- {
- "subtitle": "c.",
- "text": "Objection: You can contest the use of your data for specific reasons; for instance, using the unsubscribe option in our emails."
- },
- {
- "subtitle": "d.",
- "text": "Restriction: You can ask Us to limit the processing of your data."
- },
- {
- "subtitle": "e.",
- "text": "Data Portability: Request a copy of your data from Us in a standard, machine-readable format."
- },
- {
- "subtitle": "f.",
- "text": "Withdraw Consent: Should We process data based on your consent, you can retract it anytime."
- },
- {
- "subtitle": "",
- "text": "Please understand We might ask you to confirm your identity before acting on these requests. If unsatisfied with how We handle your data, you can report to your local Data Protection Authority in the EU or EEA."
- }
- ]
- },
- {
- "title": "9. Third Party Links",
- "content": [
- {
- "subtitle": "",
- "text": "Products may contain links to other companies, organizations or websites (collectively, 'Third Party Links'). This Privacy Notice does not apply to such Third Party Links. If you access Third Party Links using the links provided, the operators may collect your personal information."
- },
- {
- "subtitle": "",
- "text": "The Foundation has no control over and assumes no responsibility for the content, privacy policies or practices of any third-party product or service."
- }
- ]
- },
- {
- "title": "10. Changes",
- "content": [
- {
- "subtitle": "",
- "text": "We may revise or update this Privacy Policy from time to time."
- },
- {
- "subtitle": "",
- "text": "Any modifications will be reflected on this page. We'll notify you of updates either through email or a notable alert on the Product, while also adjusting the 'effective date' at this Policy's beginning. Regularly reviewing this Policy ensures you stay informed of any alterations, which take effect once displayed on this page."
- }
- ]
- },
- {
- "title": "11. Data Privacy Contact",
- "content": [
- {
- "subtitle": "",
- "text": "For further inquiries or requests in relation to Our handling of your Personal Data or this Privacy Policy please contact Us at gdpr@cardanofoundation.org"
- }
- ]
- }
- ]
- },
- "aboutssiagent": {
- "done": "Done",
- "intro": {
- "title": "About SSI agent",
- "text": ""
- },
- "sections": []
- },
- "lockpage": {
- "title": "Welcome back",
- "description": "Please enter your passcode to login",
- "error": "Incorrect passcode",
- "forgotten": {
- "button": "I've forgotten my passcode"
- },
- "attempterror": "{{attempt}} attempt remaining",
- "attemptalert": {
- "title": "Login unavailable",
- "content": "Try again in {{time}}",
- "hour": "{{value}} hour",
- "hours": "{{value}} hours",
- "minute": "{{value}} minute",
- "minutes": "{{value}} minutes"
- },
- "alert": {
- "text": {
- "verify": "If you've forgotten your passcode, please verify your seed phrase to gain access to your wallet",
- "restart": "You currently haven't generated a seed phrase, would you like to start your onboarding again?"
- },
- "button": {
- "verify": "Verify your Seed Phrase",
- "restart": "Start again",
- "cancel": "Cancel"
- }
- }
- },
- "verifyseedphrase": {
- "onboarding": {
- "title": "Verify your recovery phrase",
- "button": {
- "continue": "Verify",
- "back": "Back",
- "clear": "Clear all"
- }
- },
- "paragraph": {
- "top": "Please select each word in the order it was presented to you."
- },
- "alert": {
- "fail": {
- "text": "Sorry, the seed phrase you have entered is incorrect!",
- "button": {
- "confirm": "Try again"
- }
- },
- "exit": {
- "text": "If you go back you will lose your current progress. Are you sure you want to do this?",
- "button": {
- "confirm": "Confirm",
- "cancel": "Cancel"
- }
- },
- "clear": {
- "text": "Are you sure you want to clear all the words you have entered so far?",
- "button": {
- "confirm": "Clear all",
- "cancel": "Cancel"
- }
- }
- }
- },
- "verifyrecoveryseedphrase": {
- "title": "Recover wallet",
- "button": {
- "continue": "Confirm",
- "lock": "Try again in 1 minute",
- "clear": "Clear all",
- "switch": "Switch to create new wallet"
- },
- "paragraph": {
- "top": "Please verify your recovery phrase to recover your wallet. To start typing click on the first option."
- },
- "suggestions": {
- "title": "Suggestions",
- "error": "All words must be compatible with the suggestions"
- },
- "alert": {
- "fail": {
- "text": "Sorry, the recovery phrase you have entered is incorrect!",
- "button": {
- "confirm": "Try again"
- }
- },
- "clear": {
- "text": "Are you sure you want to clear all the words you have entered so far?",
- "button": {
- "confirm": "Clear all",
- "cancel": "Cancel"
- }
- },
- "toomanyattempts": {
- "text": "Too many failed attempts. Please try again later.",
- "button": {
- "confirm": "Ok"
- }
- }
- }
- },
- "tabsmenu": {
- "label": {
- "identifiers": "Identity",
- "creds": "Credentials",
- "scan": "Scan",
- "notifications": "Notifications",
- "menu": "Menu"
- }
- },
- "custominput": {
- "optional": "(optional)"
- },
- "switchmodemodal": {
- "title": "Before you switch",
- "button": {
- "back": "Back",
- "continue": "Continue"
- },
- "recovery": {
- "title": "Switch to recover an existing wallet",
- "paragraphtop": "You're about to switch to the wallet recovery process. Here's what will happen:",
- "warning": {
- "one": "Passcode & Operations Password: You'll keep your existing passcode and operations password. If you chose to skip setting an operations password, that preference will remain.",
- "two": "Recovery Phrase: If you've gone beyond the generation of a new recovery phrase, this will be wiped. You'll need to verify the recovery phrase associated with your previous wallet.",
- "three": "Connect URL: You will only need the Connect URL for the SSI agent screen."
- },
- "paragraphbot": "When you switch, you'll be able to enter your recovery details to access your existing wallet."
- },
- "create": {
- "title": "Switch to create a new wallet",
- "paragraphtop": "You're about to switch to the new wallet creation process. Here's what will happen:",
- "warning": {
- "one": "Passcode & Operations Password: You'll keep your existing passcode and operations password. If you chose to skip setting an operations password, that preference will remain.",
- "two": "Recovery Phrase: You'll need to generate a recovery phrase and copy these words down somewhere safe",
- "three": "Boot URL and Connect URL: You will need both your Boot URL and Connect URL for the SSI agent screen."
- },
- "paragraphbot": "When you switch, you'll start the process to create a brand new wallet."
- },
- "checkbox": "I have read and understand."
- },
- "removependingalert": {
- "button": {
- "done": "Done",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- }
- },
- "createpassword": {
- "title": "Create password",
- "change": "New password",
- "cancel": "Cancel",
- "description": "Set your operations password so you can access additional wallet features.",
- "input": {
- "first": {
- "title": "Create password",
- "placeholder": "Type password"
- },
- "second": {
- "title": "Confirm password",
- "placeholder": "Retype your password"
- },
- "third": {
- "title": "Create a hint",
- "placeholder": "Create a password hint"
- }
- },
- "button": {
- "continue": "Create Password",
- "skip": "Skip"
- },
- "alert": {
- "text": "Are you sure you want to skip? By doing this, you will be required to use your passcode for any protected operations. You can, of course, set this up later if you prefer.",
- "button": {
- "confirm": "Yes, skip",
- "cancel": "Cancel"
- }
- },
- "error": {
- "hasSpecialChar": "Please enter a valid character",
- "isTooShort": "Must be more than 8 characters long",
- "isTooLong": "Must be less than 64 characters long",
- "hasNoUppercase": "Must contain an uppercase letter",
- "hasNoLowercase": "Must contain a lowercase letter",
- "hasNoNumber": "Must contain a number",
- "hasNoSymbol": "Must contain a valid symbol",
- "hasNoMatch": "Passwords do not match",
- "hintSameAsPassword": "Your hint cannot be your password"
- }
- },
- "ssiagent": {
- "title": "Enter your SSI agent details",
- "description": "To continue, please enter the SSI agent boot and connect URLs (in your email or from your command line).",
- "verifydescription": "To continue, please enter the SSI agent connect URL (in your email or from your command line).",
- "button": {
- "info": "Get more information",
- "validate": "Validate"
- },
- "input": {
- "boot": {
- "label": "Boot URL",
- "placeholder": "Paste or scan your boot URL"
- },
- "connect": {
- "label": "Connect URL",
- "placeholder": "Paste or scan your connect URL"
- }
- },
- "error": {
- "invalidurl": "Enter a valid URL",
- "invalidbooturl": "Enter a valid boot URL",
- "invalidconnecturl": "Enter a valid connect URL",
- "mismatchconnecturl": "This connect URL doesn’t match the boot URL"
- }
- },
- "operationspasswordregex": {
- "label": {
- "length": "8 - 64 characters long",
- "uppercase": "Contains an uppercase letter",
- "lowercase": "Contains a lowercase letter",
- "number": "Contains a number",
- "symbol": "Contains a symbol"
- }
- },
- "identifiers": {
- "tab": {
- "title": "Identity",
- "create": "Add an identifier",
- "favourites": "Favourites",
- "allidentifiers": "All identifiers",
- "pendingidentifiers": "Pending identifiers",
- "multisigidentifiers": "For groups"
- },
- "detelepending": {
- "title": "Identifier options",
- "description": "Your identifier is pending and may still complete. If you no longer require this identifier, tap “Delete identifier” to remove it.",
- "mutilsigdescription": "This multi-sig is pending. It will complete once it meets the required member threshold. To remove it from your pending list, tap “Delete identifier”.",
- "button": "Delete identifier",
- "secondchecktitle": "Are you sure you want to delete this identifier?"
- },
- "layout": {
- "created": "CREATED"
- },
- "details": {
- "done": "Done",
- "information": "Information",
- "type": "Type",
- "publickeybase": "Public Key Base 58",
- "delegator": {
- "title": "Delegator Identifier Prefix",
- "icon": "DI"
- },
- "signingkeyslist": {
- "title": "List of Signing Keys",
- "icon": "K"
- },
- "signingkeysthreshold": {
- "title": "Keys Signing Threshold",
- "icon": "KT"
- },
- "nextkeyslist": {
- "title": "List of Next Key Digests",
- "icon": "N"
- },
- "nextkeysthreshold": {
- "title": "Next Keys Signing Threshold",
- "icon": "NT"
- },
- "creationtimestamp": {
- "title": "Creation Timestamp"
- },
- "rotationtimestamp": {
- "title": "Last Key Rotation Timestamp",
- "icon": "DT"
- },
- "sequencenumber": {
- "title": "Sequence Number",
- "icon": "S"
- },
- "backerslist": {
- "title": "List of Backers",
- "icon": "B"
- },
- "backeraddress": {
- "title": "Backer Address"
- },
- "delete": {
- "button": "Delete identifier",
- "alert": {
- "title": "Are you sure you want to delete this identifier?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- }
- },
- "options": {
- "title": "Identifier options",
- "cancel": "Cancel",
- "view": "View JSON",
- "edit": "Edit identifier",
- "share": "Share identifier",
- "delete": "Delete identifier",
- "rotatekeys": "Rotate keys",
- "inner": {
- "label": "Display name",
- "theme": "Edit theme",
- "confirm": "Confirm changes",
- "error": "Must be less than 32 characters long",
- "color": "Choose card colour"
- }
- },
- "rotatekeys": {
- "done": "Done",
- "description": "Rotating your signing keys boosts security by reducing the risk of key compromise."
- },
- "clouderror": "We couldn’t locate this identifier in the cloud. It might become available again soon, but some information could be lost.\n\nIf you no longer require this identifier, tap “Delete identifier” to remove."
- }
- },
- "credentials": {
- "tab": {
- "title": "Credentials",
- "create": "Add a credential",
- "viewarchived": "Archived & Revoked",
- "favourites": "Favourites",
- "allcreds": "All credentials",
- "pendingcred": "Pending credentials",
- "detelepending": {
- "title": "Credential options",
- "description": "Your credential is pending and may still complete. If you no longer require this credential, tap “Delete credential” to remove it.",
- "button": "Delete credential",
- "secondchecktitle": "Are you sure you want to delete this credential?"
- }
- },
- "layout": {
- "issued": "Issued"
- },
- "details": {
- "done": "Done",
- "restore": "Restore",
- "delete": "Delete",
- "type": "Type",
- "title": "Title",
- "description": "Description",
- "revoked": "Revoked",
- "attributes": {
- "label": "Attributes",
- "issuee": "Issuee",
- "issuancedate": "Issuance Date",
- "lei": "LEI"
- },
- "schemaversion": "Schema Version",
- "issuer": "Issuer",
- "status": {
- "label": "Status",
- "issued": "Issued",
- "revoked": "Revoked",
- "timestamp": "Timestamp"
- },
- "options": {
- "title": "Credential options",
- "view": "View JSON",
- "archive": "Archive credential"
- },
- "button": {
- "delete": "Delete credential",
- "archive": "Archive credential"
- },
- "alert": {
- "archive": {
- "title": "Are you sure you want to archive this credential?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- },
- "delete": {
- "title": "Are you sure you want to delete this credential?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- },
- "restore": {
- "title": "Are you sure you want to view this with your other credentials?",
- "confirm": "Yes, restore credential",
- "cancel": "Cancel"
- }
- },
- "toast": {
- "clipboard": "Copied to clipboard"
- },
- "clouderror": "We couldn’t locate this credential in the cloud. It might become available again soon, but some information could be lost.\n\nIf you no longer require this credential, tap “Delete credential” to remove."
- },
- "create": {
- "alert": {
- "title": "Once this credential is visible you'll receive a notification. Until then you won't be able to access more details.",
- "confirm": "Ok"
- }
- },
- "archived": {
- "title": "History",
- "done": "Done",
- "select": "Select",
- "selectall": "Select All",
- "deselectall": "Deselect all",
- "cancel": "Cancel",
- "delete": "Delete",
- "restore": "Restore",
- "oneselected": "1 Credential Selected",
- "manyselected": "{{amount}} Credentials Selected",
- "archivedtitle": "Archived credentials",
- "revokedtitle": "Revoked credentials",
- "revokedlabel": "Revoked",
- "alert": {
- "restoresingle": {
- "title": "Are you sure you want to view this with your other credentials?",
- "confirm": "Yes, restore credential",
- "cancel": "Cancel"
- },
- "restoremultiple": {
- "title": "Are you sure you want to view these with your other credentials?",
- "confirm": "Yes, restore credentials",
- "cancel": "Cancel"
- },
- "deletesingle": {
- "title": "This will delete the selected credential from your wallet permanently",
- "confirm": "Delete from wallet",
- "cancel": "Cancel"
- },
- "deletemultiple": {
- "title": "This will delete the selected credentials from your wallet permanently",
- "confirm": "Delete from wallet",
- "cancel": "Cancel"
- },
- "restorerevoked": {
- "title": "You cannot restore revoked credentials.",
- "confirm": "Ok"
- }
- }
- }
- },
- "scan": {
- "tab": {
- "title": "Align the QR code within the frame to scan"
- },
- "alert": {
- "title": "Would you like to grant permission for using your camera?"
- },
- "pastemeerkatid": "Paste Meerkat ID"
- },
- "notifications": {
- "tab": {
- "header": "Notifications",
- "empty": "No notifications",
- "chips": {
- "all": "All",
- "identifiers": "Identifiers",
- "credentials": "Credentials"
- },
- "sections": {
- "new": "New",
- "earlier": {
- "title": "Earlier",
- "end": "End of notifications",
- "buttons": {
- "showealier": "View previous notifications"
- }
- }
- },
- "optionmodal": {
- "title": "Notification options",
- "done": "Done",
- "showdetail": "Show details",
- "markasread": "Mark as read",
- "markasunread": "Mark as unread",
- "delete": "Delete notification",
- "deletealert": {
- "text": "Deleting this notification cannot be undone. Once deleted you will no longer be able to require any actions required from this notification.",
- "accept": "Delete",
- "cancel": "Cancel"
- }
- },
- "labels": {
- "exnipexgrant": "{{connection}} wants to issue you a credential",
- "multisigicp": "{{connection}} is requesting to create a group identifier with you",
- "exnipexapply": "{{connection}} has requested a credential from you",
- "exnipexgrantrevoke": "Your {{credential}} credential has been revoked"
- }
- },
- "details": {
- "buttons": {
- "close": "Close",
- "accept": "Accept",
- "decline": "Decline",
- "cancel": "Cancel",
- "back": "Back",
- "choosecredential": "Choose credential",
- "providecredential": "Provide credential"
- },
- "credential": {
- "request": {
- "alert": {
- "text": "You don’t have any credentials available that match this request. In order to offer this credential you will need to acquire one first.",
- "confirm": "OK"
- },
- "information": {
- "title": "Credential request",
- "requestfrom": "Request from",
- "requestedcredential": "Requested credential",
- "informationrequired": "Information required",
- "alert": {
- "textdecline": "Are you sure you want to decline this credential request? You won't be able to change your decision later."
- }
- },
- "choosecredential": {
- "description": "Select the most appropriate {{requestCred}} to provide the required information",
- "title": "Choose credential"
- }
- },
- "receive": {
- "title": "Receive credential",
- "receivefrom": "Receive a credential from",
- "credentialpending": "Credential pending",
- "alert": {
- "textdecline": "Are you sure you want to decline this credential issuance? You won't be able to change your decision later."
- }
- }
- },
- "identifier": {
- "title": "Identifier request",
- "subtitle": "Review this group identifier request",
- "requestfrom": "Request from",
- "othermembers": "Other members",
- "pending": "Pending",
- "accepted": "Accepted",
- "threshold": "Threshold",
- "alert": {
- "textdecline": "Are you sure you want to decline this request? You won't be able to change your decision later."
- },
- "errorpage": {
- "title": "Please review",
- "alerttext": "You are missing one or more connections required for this group request. Please scan all necessary QR codes to proceed.",
- "instructions": {
- "title": "Instructions",
- "detailtext": "In order to continue and complete the group setup, please follow the instructions below.",
- "stepone": "Ensure you have scanned all participant's QR codes.",
- "steptwo": "After scanning, try to open this notification again."
- },
- "help": {
- "title": "Need help?",
- "detailtext": "If you need assistance, please message us on our <0>{{discordSupportChannel}}0>.",
- "supportchannel": "Discord support channel"
- },
- "continuesetup": "Continue setup"
- }
- }
- }
- },
- "menu": {
- "tab": {
- "header": "Menu",
- "items": {
- "profile": {
- "title": "Profile"
- },
- "crypto": {
- "title": "Crypto"
- },
- "connections": {
- "title": "Connections"
- },
- "connectwallet": {
- "title": "Cardano connect",
- "cip": "CIP-45",
- "tabheader": "Cardano Connect",
- "connectbtn": "Connect with Cardano",
- "disconnectbeforecreatealert": {
- "message": "You are currently connected. To connect with a new wallet, you will be disconnected from your current selection. Would you like to disconnect and continue?",
- "confirm": "Continue",
- "cancel": "Cancel"
- },
- "connectionbrokenalert": {
- "message": "Your connection has been disconnected as you have deleted the chosen identifier paired with this connection. Please choose a new identifier to re-establish this connection.",
- "confirm": "Ok"
- },
- "inputpidmodal": {
- "header": "Paste Meerkat ID",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "scanQR": "Scan QR code"
- },
- "connectionhistory": {
- "title": "Connection History",
- "action": {
- "delete": "Delete"
- },
- "deletealert": {
- "message": "Are you sure you want to delete this connection?",
- "confirm": "Yes, I’m sure",
- "cancel": "Cancel"
- },
- "missingidentifieralert": {
- "message": "To connect with Cardano, you need to create a KERI AID identifier. Would you like to create one now?",
- "confirm": "Create identifier",
- "cancel": "Cancel"
- },
- "confirmconnect": {
- "done": "Done",
- "connectbtn": "Connect",
- "disconnectbtn": "Disconnect",
- "connectingbtn": "Connecting...",
- "pending": "Pending"
- }
- },
- "request": {
- "stageone": {
- "title": "Connect Cardano",
- "message": "Would you like to establish a CIP-45 Connection?",
- "alert": {
- "titleconfirm": "Are you sure you want to decline this connection?",
- "confirm": "Decline",
- "cancel": "Cancel"
- }
- },
- "stagetwo": {
- "title": "Choose identifier",
- "message": "Which KERI AID identifier would you like to make the connection with?",
- "confirm": "Confirm"
- },
- "button": {
- "back": "Back",
- "accept": "Accept",
- "decline": "Decline"
- }
- }
- }
- }
- }
- },
- "settings": {
- "sections": {
- "header": "Settings",
- "security": {
- "title": "Security",
- "biometry": "Biometric authentication",
- "changepin": {
- "title": "Change passcode",
- "createpasscode": "Create new passcode",
- "reenterpasscode": "Re-enter new passcode",
- "cancel": "Cancel",
- "back": "Back",
- "description": "Create a new passcode to secure your wallet",
- "cantremember": {
- "label": "Can't remember?"
- }
- },
- "managepassword": {
- "title": "Manage operations password",
- "page": {
- "title": "Manage password",
- "enable": "Enable operations password",
- "change": "Change operations password",
- "alert": {
- "enablemessage": "By turning on an operations password you will be required to use this to verify any future operations instead of your passcode.",
- "disablemessage": "By turning off your operations password you will be required to use your passcode to verify any future operations.",
- "existingpassword": "Your new operations password must be different to your existing one.",
- "confirm": "Continue",
- "cancel": "Cancel",
- "ok": "Ok"
- }
- }
- },
- "seedphrase": {
- "title": "Recovery phrase",
- "page": {
- "title": "Recovery phrase",
- "tips": {
- "label": "Useful tips:",
- "one": "Write down or make a copy of your recovery phrase and store it in a safe location.",
- "two": "Double-check that your words are copied in the correct order (1 to 18).",
- "three": "Ensure there are no spelling errors."
- },
- "hiddentext": "Press the ‘view recovery phrase’ button when you’re ready to see your recovery phrase. Remember to make sure nobody is looking!",
- "button": {
- "view": "View recovery phrase",
- "hide": "Hide recovery phrase"
- },
- "confirmmodal": {
- "title": "Stay safe",
- "subtitle": "Confirm and acknowledge the following:",
- "firstcondition": "Nobody else can see my screen",
- "secondcondition": "Sharing my recovery phrase with others puts my identity at risk",
- "thirdcondition": "Losing my recovery phrase means I will lose access to my wallet",
- "button": {
- "confirm": "View recovery phrase",
- "cancel": "Cancel"
- }
- }
- }
- }
- },
- "support": {
- "title": "Support & Legal",
- "contact": "Connect via Discord",
- "learnmore": "Learn More About Cardano IDW",
- "terms": {
- "title": "Terms and Privacy Policy",
- "submenu": {
- "title": "Terms & privacy",
- "termandcondition": "Terms & conditions",
- "privacy": "Privacy policy"
- }
- },
- "version": "App Version"
- }
- }
- },
- "connections": {
- "tab": {
- "title": "Connections",
- "create": "Add a connection",
- "indentifierselector": {
- "title": "Choose identifier",
- "message": "Which KERI AID identifier would you like to make the connection with?",
- "button": {
- "cancel": "Cancel",
- "confirm": "Confirm"
- }
- },
- "alert": {
- "message": "To create a connection, you need to create an individual KERI AID identifier. Would you like to create one now?",
- "confirm": "Create identifier",
- "cancel": "Cancel"
- },
- "detelepending": {
- "title": "Connection options",
- "description": "This connection is pending you’ll be notified once they accept. If you no longer require this connection, tap “Delete connection” to remove.",
- "button": "Delete connection",
- "secondchecktitle": "Are you sure you want to delete this connection?"
- }
- },
- "details": {
- "done": "Done",
- "label": "Label",
- "date": "Date Created",
- "endpoints": "Service Endpoints",
- "history": "Connection History",
- "connectedwith": "Connected with \"{{ issuer }}\"",
- "issuance": "Received a \"{{ credential }}\"",
- "present": "\"{{ issuer }}\" has requested a credential presentation",
- "agree": "Presentation offer agreed",
- "update": "\"{{ credential }}\" has been revoked",
- "notavailable": "N/A",
- "details": "Details",
- "notes": "Notes",
- "nocurrentnotes": "No current notes",
- "nocurrentnotesext": "There are currently no notes associated with this connection.",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "title": "Title",
- "message": "Message",
- "delete": "Delete connection",
- "options": {
- "title": "Connection options",
- "labels": {
- "add": "Add a note",
- "manage": "Manage notes",
- "delete": "Delete connection"
- },
- "alert": {
- "deleteconnection": {
- "title": "Are you sure you want to delete this connection?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- },
- "deletenote": {
- "title": "Are you sure you want to delete this note?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- }
- }
- },
- "clouderror": "We couldn’t locate this connection in the cloud. It might become available again soon, but some information could be lost.\n\nIf you no longer require this connection, tap “Delete connection” to remove."
- }
- },
- "connectmodal": {
- "title": "Add a",
- "scan": "Scan QR Code",
- "connect": "Scan to connect",
- "provide": "Provide QR Code",
- "close": "Done"
- },
- "verifypassword": {
- "title": "Enter password",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "button": {
- "forgot": "I've forgotten my password"
- },
- "error": {
- "hasNoMatch": "Password didn't match"
- },
- "alert": {
- "choice": {
- "title": "Would you like to see your password hint or reset your password?"
- },
- "button": {
- "seepasswordhint": "See my password hint",
- "resetmypassword": "Reset my password",
- "tryagain": "Great, I'll try again!"
- },
- "hint": {
- "title": "Your password hint is"
- }
- }
- },
- "verifypasscode": {
- "cancel": "Cancel",
- "title": "Enter passcode",
- "description": "Please enter your passcode to verify",
- "error": "Incorrect passcode",
- "forgotten": {
- "button": "I've forgotten my passcode"
- },
- "alert": {
- "text": {
- "verify": "If you've forgotten your passcode, please verify your seed phrase to gain access to your wallet",
- "restart": "You currently haven't generated a seed phrase, would you like to start your onboarding again?"
- },
- "button": {
- "verify": "Verify your Seed Phrase",
- "restart": "Start again",
- "cancel": "Cancel"
- }
- }
- },
- "forgotauth": {
- "cancel": "Cancel",
- "passcode": {
- "title": "Forgot passcode",
- "description": "Please verify your seed phrase to reset your passcode. To start typing click on the first option."
- },
- "password": {
- "title": "Forgot password",
- "description": "Please verify your seed phrase to reset your password. To start typing click on the first option."
- },
- "newpasscode": {
- "title": "New passcode",
- "description": "Create a new passcode to re-secure your wallet and perform operations",
- "reenterpasscode": "Re-enter passcode"
- },
- "newpassword": {
- "title": "New password",
- "description": "Create a new operations password so you can access additional wallet features."
- }
- },
- "shareidentifier": {
- "title": "Share connection",
- "subtitle": {
- "identifier": "To share, either scan the QR code or select from the provided options below",
- "connection": "Show this QR code to the person you want to connect with, or click the 'More share options' link"
- },
- "done": "Done",
- "divider": "or",
- "copykey": "Copy connection URL",
- "more": "More share options"
- },
- "createidentifier": {
- "cancel": "Cancel",
- "back": "Back",
- "done": "Done",
- "add": {
- "title": "Add an identifier",
- "confirmbutton": "Create identifier"
- },
- "share": {
- "title": "Share identifier",
- "subtitle": "You've scanned",
- "copybutton": "Copy OOBI connection",
- "notes": {
- "top": "Before proceeding, please make sure that everyone you want to include as a signer scans this QR code.",
- "middle": "After everyone has scanned your QR code, please be sure to scan everyone else's QR code as well.",
- "bottom": "To continue with the initiation of the mult-sig you must have scanned at least one other QR code."
- },
- "scanbutton": "Scan QR codes",
- "initiatebutton": "Initiate group",
- "scanalert": {
- "text": "Have all the individuals you want to include as members scanned your QR code?",
- "confirm": "Confirm and scan",
- "cancel": "Cancel"
- }
- },
- "receive": {
- "title": "Setup identifier",
- "confirmbutton": "Add identifier",
- "notes": {
- "top": "Before proceeding, please make sure everyone included as a member scans this QR code.",
- "middle": "Remember to scan everyone else’s QR code too!"
- }
- },
- "scan": {
- "cancel": "Cancel",
- "confirm": "Confirm",
- "pasteoobi": "Paste OOBI",
- "initiate": "Initiate group",
- "scanqrcode": "Scan QR code",
- "pastecontents": "Paste contents"
- },
- "connections": {
- "title": "Connections",
- "subtitle": "These are the members you scanned. Please review before proceeding.",
- "continue": "Confirm connections"
- },
- "threshold": {
- "title": "Set a Threshold",
- "subtitle": "Set the threshold to determine the level of consensus required",
- "label": "Threshold",
- "continue": "Confirm threshold"
- },
- "confirm": {
- "title": "Confirm",
- "subtitle": "Confirm all details for your Keri AID group identifier are accurate",
- "displayname": "Display Name",
- "selectedmembers": "Selected Members",
- "treshold": "Threshold",
- "continue": "Confirm identifier",
- "cancel": "Cancel",
- "alert": {
- "text": "Cancelling now means you'll need to restart the group initiation process.",
- "cancel": "Yes, cancel",
- "back": "Back"
- }
- },
- "displayname": {
- "title": "Display name",
- "placeholder": "Create a name for this identifier"
- },
- "identifiertype": {
- "title": "Identifier type",
- "didkey": "did:key",
- "keri": "KERI AID"
- },
- "color": {
- "title": "Choose card colour"
- },
- "aidtype": {
- "title": "AID type",
- "default": {
- "label": "Individual",
- "tooltip": "Lorem ipsum dolor sit amet"
- },
- "multisig": {
- "label": "Group",
- "tooltip": "Lorem ipsum dolor sit amet"
- },
- "delegated": {
- "label": "Delegated",
- "tooltip": "Lorem ipsum dolor sit amet"
- }
- },
- "aidinfo": {
- "title": "AID types",
- "text": "A description of each KERI AID type you can create identifiers for.",
- "individual": {
- "label": "Individual",
- "text": "Use these identifiers to represent all your individual personas. Currently, a single key pair is used to sign statements with these identifiers, and it can be updated. In the future, these identifiers might become more robust with multi-device support and social recovery options."
- },
- "group": {
- "label": "Group",
- "text": "Use a group identifier to represent an entity controlled by multiple people, like a committee. You can set a threshold to decide how many members are needed to create a valid signature or recover the identifier."
- },
- "delegated": {
- "label": "Delegated",
- "text": "The delegated option is currently being developed. Identifiers might be delegated for advanced recovery in case of a security breach, which is ideal for an organisational structure in enterprises."
- },
- "button": {
- "done": "Done"
- }
- },
- "theme": {
- "title": "Choose a theme"
- },
- "error": {
- "maxlength": "Must be less than 32 characters long"
- }
- },
- "offline": {
- "title": "You’re offline",
- "description": "You’ve lost connection to the cloud agent. Once the connection has been re-established your wallet will return to normal usage."
- },
- "shareqr": {
- "divider": "or",
- "more": "More share options"
- },
- "toast": {
- "copiedtoclipboard": "Copied to clipboard",
- "identifierrequested": "Identifier request pending",
- "identifiercreated": "New identifier created successfully",
- "identifierupdated": "Identifier successfully updated",
- "identifierdeleted": "Identifier successfully deleted",
- "credentialdeleted": "Credential deleted successfully",
- "credentialsdeleted": "Credentials deleted successfully",
- "credentialarchived": "Credential archived successfully",
- "credentialrestored": "Credential restored successfully",
- "credentialsrestored": "Credentials restored successfully",
- "connectiondeleted": "Connection deleted successfully",
- "qrsuccess": "QR code scanned successfully",
- "qrerror": "QR code not recognised",
- "connectionrequestincoming": "New Connection Request",
- "connectionrequestpending": "Connection request pending",
- "newconnectionadded": "New connection added",
- "credentialrequestpending": "Credential request pending",
- "newcredentialadded": "New credential added",
- "notesupdated": "Notes updated successfully",
- "noteremoved": "Note removed successfully",
- "maxfavouritesreached": "Maximum of 5 favourites reached",
- "usernamecreationsuccess": "Welcome, {{username}}!",
- "usernamecreationerror": "Unable to set name. Please try again.",
- "walletconnectiondeleted": "Delete successfully",
- "connectwalletsuccess": "Connected successfully",
- "disconnectwallet": "Disconnected successfully",
- "unableconnectwallet": "Unable to connect",
- "peeridsuccess": "Peer ID successful",
- "peeriderror": "Peer ID not recognised",
- "peeridnotrecognised": "Peer ID not recognised",
- "setupbiometricsuccess": "Biometrics setup successfully",
- "rotatekeysuccess": "Keys rotated successfully",
- "rotatekeyerror": "Unable to rotate keys",
- "newmultisignmember": "New member added to group",
- "multisignidentifiercreated": "Identifier added to \"For groups\"",
- "delegatedidentifiercreated": "Identifier added to \"For delegates\"",
- "passcodeupdated": "Passcode updated successfully",
- "passwordupdated": "Password updated successfully",
- "passworddisabled": "Password turned off",
- "passwordcreated": "Password created successfully",
- "sharecredsuccess": "Credential shared successfully",
- "sharecrederror": "Unable to share credential",
- "deleteconnectionerror": "Unable to delete connection",
- "deletecrederror": "Unable to delete credential",
- "deleteidentifiererror": "Unable to delete identifier",
- "archivedcrederror": "Unable to archive credential",
- "signsuccessful": "Sign successful",
- "savepasswordhinterror": "Unable to delete password hint",
- "editidentifiererror": "Unable to update identifier"
- },
- "request": {
- "sign": {
- "title": "Sign",
- "identifier": "Identifier",
- "transaction": {
- "data": "Data"
- }
- },
- "button": {
- "acceptoffer": "Accept credential",
- "cancel": "Cancel",
- "back": "Back",
- "accept": "Accept",
- "decline": "Decline",
- "sign": "Sign",
- "dontallow": "Don't allow"
- },
- "alert": {
- "cancel": "Cancel"
- },
- "pending": "{{action}} pending",
- "success": "{{action}} successful"
- },
- "setusername": {
- "title": "Welcome! What should we call you?",
- "input": {
- "title": "Name"
- },
- "button": {
- "confirm": "Confirm"
- },
- "toast": {
- "usernameCreated": "Welcome, {{username}}!",
- "usernameError": "Unable to set name. Please try again."
- }
- },
- "biometry": {
- "reason": "Please authenticate",
- "canceltitle": "Cancel",
- "iosfallbacktitle": "Use passcode",
- "androidtitle": "Authentication",
- "androidsubtitle": "Authentication using biometrics",
- "setupandroidbiometryheader": "Do you want to allow “IDW” to use biometrics?",
- "setupandroidbiometryconfirm": "Ok",
- "setupandroidbiometrycancel": "Don't allow",
- "cancelbiometryheader": "You canceled Biometrics. You can set this up later via the settings page."
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/locales/hk/hk.json b/03_source/mobile_old.del/mobile_main/src/locales/hk/hk.json
deleted file mode 100644
index 3eae7d8..0000000
--- a/03_source/mobile_old.del/mobile_main/src/locales/hk/hk.json
+++ /dev/null
@@ -1,1634 +0,0 @@
-{
- "helloworld": "這是蘋果",
- "onboarding": {
- "slides": [
- {
- "title": "Welcome to your Cardano Foundation Identity Wallet",
- "description": "An opensource mobile digital wallet that enables you to securely manage your own identity in a privacy-preserving and self-sovereign manner."
- },
- {
- "title": "Empowerment with Self-Sovereign Identity (SSI)",
- "description": "Embrace SSI principles, store private keys locally in your mobile device's Hardware Security Module, and control your identity."
- },
- {
- "title": "Privacy & Security: Your Top Priorities",
- "description": "Prioritize privacy and security with Decentralized Identifiers and Verifiable Credentials. Control your data, what you share, with whom, and for how long."
- },
- {
- "title": "Embrace Interoperability for a Wider Reach",
- "description": "Supporting new and existing standards, ecosystems, and frameworks is crucial to achieving widespread adoption and seamless interoperability."
- },
- {
- "title": "Decentralize Your Digital Identity",
- "description": "Traditional identity systems offer minimal control over your digital identifiers. Decentralized technology transfers ownership and control to you."
- }
- ],
- "getstarted": {
- "button": {
- "label": "Get Started"
- }
- },
- "alreadywallet": {
- "button": {
- "label": "I already have a wallet"
- }
- }
- },
- "createpasscodemodule": {
- "errornomatch": "Passcode didn’t match",
- "errormatch": "Passcode already in use",
- "cantremember": "Can't remember?"
- },
- "setpasscode": {
- "enterpasscode": "Create your Passcode",
- "description": "Create a passcode to secure your wallet and to continue the onboarding process",
- "recoverydescription": "Create a passcode to secure your wallet and to continue the recovery process",
- "reenterpasscode": "Re-enter your Passcode",
- "cancelbtn": "Cancel",
- "backbtn": "Back"
- },
- "generateseedphrase": {
- "onboarding": {
- "title": "Generate recovery phrase",
- "paragraph": {
- "top": "Think of your secret recovery phrase as a safety net for your identity. If you ever lose your phone or switch to a new wallet, this phrase will help you recover your identity.",
- "bottom": "It's important to keep these words safe and sound! Store them in a secure location, like a password manager, and remember to never share them with anyone."
- },
- "button": {
- "continue": "Generate",
- "switch": "Switch to recover a wallet"
- }
- },
- "segment": "{{length}} words",
- "privacy": {
- "overlay": {
- "text": "Press the ‘view’ button when you’re ready to see your seed phrase. Remember to make sure nobody is looking!",
- "button": "View Seed Phrase"
- }
- },
- "alert": {
- "confirm": {
- "text": "Have you double-checked you’ve copied your 18 word phrase correctly?",
- "button": {
- "confirm": "Yes, copied",
- "cancel": "Cancel"
- }
- },
- "exit": {
- "text": "If you go back you will lose your current progress. Are you sure you want to do this?",
- "button": {
- "confirm": "Confirm",
- "cancel": "Cancel"
- }
- },
- "toggle": {
- "text": "Switching tabs will remove the words you have already entered, are you sire you want to switch?",
- "button": {
- "confirm": "Yes, switch tabs",
- "cancel": "Cancel"
- }
- },
- "verify": {
- "text": "Your seed phrase couldn’t be verified. Please, try again or choose an alternative method",
- "button": {
- "confirm": "Try again",
- "cancel": "Cancel"
- }
- }
- },
- "termsandconditions": {
- "text": "I have read and agree to the <0>{{clickableTerms}}0> and <1>{{clickablePrivacy}}1>.",
- "terms": "Terms of Use",
- "privacy": "Privacy Policy"
- }
- },
- "termsofuse": {
- "done": "Done",
- "intro": {
- "title": "Terms & conditions",
- "text": "Please read these terms of use (\"Terms & conditions\" or \"Terms\") carefully before using the services offered by Cardano Foundation (together with our subsidiaries and affiliates, referred to as \"Foundation,\" \"We,\" \"Us\" or \"Our\" in these Terms of Use). These Terms of Use set forth the legally binding terms and conditions for your use of this website and all of the related websites, mobile apps, products and services offered by the Foundation and its affiliated entities including our APK's, API's, plug-ins and browser extensions (collectively, the \"Products\"). By using the Products in any manner, you agree to be bound by these Terms of Use."
- },
- "sections": [
- {
- "title": "1. USE OF PRODUCTS",
- "content": [
- {
- "subtitle": "a. Eligibility:",
- "text": "You represent and warrant that you: (a) are of legal age to form a binding contract in your jurisdiction; (b) have not previously been suspended or removed from using the Products; and (c) have full power and authority to enter into these Terms of Use and in doing so will not violate any other agreement to which you are a party. If you are registering to use the Products on behalf of a legal entity, you further represent and warrant that (i) such legal entity is duly organized and validly existing under the applicable laws of the jurisdiction of its organization, and (ii) you are duly authorized by such legal entity to act on its behalf."
- },
- {
- "subtitle": "b. Product Changes:",
- "text": "We reserve the right to make changes or updates to the Products at any time without notice, for any reason at Our sole discretion. We retain the authority to modify, update, limit, or revoke your access to Our Products, including any related accounts, at any time and without prior notice, for any reason at Our sole discretion."
- },
- {
- "subtitle": "c. Additional Terms:",
- "text": "In addition, some Products may be subject to additional terms and conditions promulgated by the Foundation from time to time; your use of such Products is subject to those additional terms and conditions, which are incorporated into these Terms of Use by this reference. If there are any inconsistencies between these Terms of Use and the additional terms, the additional terms will take precedence."
- },
- {
- "subtitle": "d. Download and use of Android Package Kit (“APK”) Products:",
- "text": "The use of APK Products is subject to these Terms of Use, and by downloading and using APK Products, you agree to comply with these terms and any additional terms we may provide you concerning the use of APK Products. You acknowledge that downloading and installing APK Products requires manual installation on your device and that you are solely responsible for the process and any issues that may arise from installation and use. We ensure that the APK Products we provide are secure, but you must take necessary precautions to protect your device. We may offer limited support for APK Products, and you agree to seek support through the channels we designate. APK Products might not receive automatic updates and It is your responsibility to monitor and install any updates we provide."
- },
- {
- "subtitle": "e. Privacy Policy:",
- "text": "By using the Products in any way, you understand and acknowledge that the terms of the Privacy Policy apply to you."
- },
- {
- "subtitle": "f. Feedback:",
- "text": "We appreciate any feedback or suggestions you might have regarding Our Products. You can share your thoughts at https://cardanofoundation.org/en/contact-us/. When you provide feedback in any form, you give Us permission to use, share, and build upon your input as We see fit, without owing you anything in return."
- },
- {
- "subtitle": "g. Dispute Resolution:",
- "text": "If you have a dispute with the Foundation or a claim to raise in relation to the Products, you agree to contact Us using the form at https://cardanofoundation.org/en/contact-us/ to attempt to resolve the issue informally first."
- }
- ]
- },
- {
- "title": "2. YOUR CONTENT",
- "content": [
- {
- "subtitle": "a. Definition of 'Your Content':",
- "text": "For the purposes of these Terms of Use, 'Your Content' refers to all materials you submit or transmit to, through, or in connection with Our Products, including but not limited to photographs, profile pictures, messages, comments, testimonials, and any other text, graphics, videos, or audio content."
- },
- {
- "subtitle": "b. License Grant:",
- "text": "By submitting, posting, or displaying Your Content on or through Our Products, you grant Us a non-exclusive, worldwide, royalty-free, fully paid-up, sublicensable, and transferable license to use, reproduce, process, distribute, create derivative works of, display, and perform Your Content in connection with Our Products and Our business, including for promoting and redistributing part or all of the Products (and derivative works thereof) in any media formats and through any media channels. This license will exist for the period during which Your Content is posted on Our Products or until We choose to remove it, whichever is shorter."
- },
- {
- "subtitle": "c. Ownership of Your Content:",
- "text": "You retain ownership rights in Your Content. However, by submitting Your Content to Our Products, you hereby grant Us the non-exclusive rights and license as set out above. Other than the rights and license you grant in these Terms of Use, We acknowledge and agree that We obtain no right, title, or interest from you under these Terms of Use in any of Your Content."
- },
- {
- "subtitle": "d. Representations and Warranties:",
- "text": "You represent and warrant that:\n\n- You either own Your Content or have the necessary licenses, rights, consents, and permissions to grant the rights and licenses as provided herein;\n- Your Content does not and will not infringe or violate any third party's intellectual property rights, proprietary rights, privacy rights, confidentiality, rights of publicity or otherwise violate these Terms of Use or applicable law; and\n- You have obtained all required permissions from any individual whose personal data is part of Your Content, allowing Us to use and disclose the data as set out in these Terms of Use."
- },
- {
- "subtitle": "e. Your Responsibility:",
- "text": "You are solely responsible for Your Content and the consequences of posting, publishing, or sharing it. We do not endorse any of Your Content or any opinion, recommendation, or advice expressed therein, and We expressly disclaim any and all liability in connection with Your Content."
- }
- ]
- },
- {
- "title": "3. INTELLECTUAL PROPERTY",
- "content": [
- {
- "subtitle": "a. Ownership:",
- "text": "All intellectual property in or related to the Products, including but not limited to the software, 'Cardano' and 'ADA' marks, logos and the names and logos of the Products ('Our Intellectual Property'), is the property of the Foundation."
- },
- {
- "subtitle": "b. Grant of Licence:",
- "text": "We provide you a limited, non-exclusive licence to access and utilise Our Intellectual Property as part of your use of the Products, all in accordance with these Terms of Use. We retain the right to revoke this license at any time for any reason. Outside of the permissions explicitly granted in these Terms of Use, all other rights remain with Us."
- },
- {
- "subtitle": "c. Restrictions:",
- "text": "Except as provided in these Terms of Use, you agree not to copy, rent, lease, sell or distribute, or create derivative works of Our Intellectual Property Rights. Some Products might be governed by open-source licenses; in such instances, the terms of those specific licenses will apply. You should refer to the specific license terms accompanying each Product or component thereof to understand your rights and obligations. Any other use of the Foundation's intellectual property requires Our express written permission."
- },
- {
- "subtitle": "d. Trademarks:",
- "text": "You are granted no rights or license to use Foundation trademarks unless in strict accordance with the Foundation's trademark policy."
- }
- ]
- },
- {
- "title": "4. DISCLAIMERS; LIMITATION OF LIABILITY",
- "content": [
- {
- "subtitle": "a. Disclaimer of Warranties:",
- "text": "YOU UNDERSTAND AND ACKNOWLEDGE THAT WE ARE PROVIDING THE PRODUCTS, SERVICES, INCLUDING RELATED INFORMATION AND CONTENT, ON AN 'AS IS' AND 'AS AVAILABLE' BASIS, WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED. THIS MAY INCLUDE PRODUCTS OFFERED IN 'BETA' VERSIONS, INTENDED TO PROVIDE THE FOUNDATION WITH FEEDBACK ON THE QUALITY AND USABILITY OF THE PRODUCTS AND APPLICATION PROGRAMMING INTERFACES (APIs). THE FOUNDATION ENTITIES MAKE NO REPRESENTATIONS AND EXPRESSLY DISCLAIM ALL WARRANTIES ABOUT THE SUITABILITY, MERCHANTABILITY, FITNESS FOR PURPOSE, RELIABILITY, AVAILABILITY, TIMELINESS, SECURITY, TITLE AND NON-INFRINGEMENT, ACCURACY OR COMPLETENESS, DATA SYNCHED TO OR MADE AVAILABLE FROM THE PRODUCTS, PRODUCT CONTENT, OR ANY CONSULTING SERVICES WE PROVIDE FOR ANY ASSOCIATED PURPOSE."
- },
- {
- "subtitle": "No Indirect Damages:",
- "text": "TO THE EXTENT PERMITTED BY LAW, IN NO EVENT WILL FOUNDATION ENTITIES BE LIABLE FOR ANY INDIRECT, INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES, OR LOSS OF PROFITS, REVENUE, DATA OR BUSINESS OPPORTUNITIES ARISING OUT OF OR RELATED TO THESE TERMS OF USE, WHETHER AN ACTION IS IN CONTRACT OR TORT AND REGARDLESS OF THE THEORY OF LIABILITY."
- },
- {
- "subtitle": "b. Third Party Products:",
- "text": "THE FOUNDATION ENTITIES MAKE NO PROMISES WITH RESPECT TO, AND EXPRESSLY DISCLAIM ALL LIABILITY, TO THE MAXIMUM EXTENT PERMITTED BY LAW, FOR: (i) CONTENT POSTED BY ANY THIRD-PARTY ON THE PRODUCTS, (ii) THE PRODUCT DESCRIPTIONS OR PRODUCTS, (iii) THIRD-PARTY SITES AND ANY THIRD-PARTY PRODUCT OR SERVICE LISTED ON OR ACCESSIBLE TO YOU THROUGH THE PRODUCTS, AND (iv) THE QUALITY OR CONDUCT OF ANY THIRD PARTY YOU ENCOUNTER IN CONNECTION WITH YOUR USE OF ANY PRODUCT OR WEBSITE ('Third Party Products)."
- },
- {
- "subtitle": "c. Limitation of Liability:",
- "text": "ANY LIABILITY OF THE FOUNDATION ENTITIES IS HEREBY LIMITED TO THE MAXIMUM EXTENT ALLOWED BY APPLICABLE LAW. THE AGGREGATE LIABILITY OF FOUNDATION ENTITIES WILL IN ANY EVENT BE LIMITED TO A SUM EQUAL TO THE TOTAL AMOUNTS PAID OR PAYABLE FOR THE PRODUCTS IN THE TWELVE MONTH PERIOD PRECEDING THE EVENT GIVING RISE TO A CLAIM; PROVIDED HOWEVER, THIS LIMITATION WILL NOT APPLY TO YOU IF NO SUCH FEES ARE PAYABLE, AND IN THIS CASE, IF WE ARE DETERMINED TO HAVE ANY LIABILITY TO YOU OR ANY THIRD PARTY ARISING FROM YOUR USE OF THE PRODUCTS, THEN OUR AGGREGATE LIABILITY WILL BE LIMITED TO ONE HUNDRED U.S. DOLLARS."
- },
- {
- "subtitle": "d. Agreement to Liability Limit:",
- "text": "YOU UNDERSTAND AND AGREE THAT ABSENT YOUR AGREEMENT TO THIS LIMITATION OF LIABILITY, WE WOULD NOT PROVIDE THE PRODUCTS TO YOU."
- }
- ]
- },
- {
- "title": "5. INDEMNIFICATION",
- "content": [
- {
- "subtitle": "",
- "text": "You agree to fully indemnify, defend and hold the Foundation Entities, including their directors, officers, employees, consultants, and other representatives, harmless from and against any claims, damages, losses, costs (including reasonable legal fees), and other expenses resulting directly or indirectly from: (a) any breach or noncompliance of these Terms of Use by you or your affiliates, inclusive of policies mentioned herein; (b) allegations that materials you provide or convey to the Products violate the intellectual property rights of a third party; (c) your or your affiliates' use of Third-Party Products; and/or (d) any negligent or intentional misconduct by you. You shall not agree to any settlement that (i) obligates Us in any manner; (ii) demands an admission from Us; or (iii) assigns liability beyond these indemnifications or restricts Us, without obtaining Our prior written approval."
- }
- ]
- },
- {
- "title": "6. MISCELLANEOUS",
- "content": [
- {
- "subtitle": "a. Amendment:",
- "text": "We may modify any part or all of these Terms of Use. The revised version will become effective and binding the next business day after it is posted. We will provide you notice of this revision by email, website banner, in-product notification or publishing revised Terms of Use at this page, if applicable. YOU AGREE THAT YOUR CONTINUED USE OF THE PRODUCTS AFTER SUCH CHANGES BECOME EFFECTIVE CONSTITUTES YOUR ACCEPTANCE OF THE CHANGES. If you do not agree with a modification to the Terms of Use, you must notify Us in writing within thirty (30) days after We send notice of the revision. If We can no longer reasonably provide the Product to you under the terms prior to modification, then the Terms of Use and/or your access to the Products will terminate upon Our notice to you and We will promptly refund any prepaid but unused fees, if any, covering use of the Product."
- },
- {
- "subtitle": "b. Application Provider Terms:",
- "text": "These Terms of Use are between you and the Foundation only, and not with an application service or application platform provider (such as Apple, Inc., or Google Inc.), which may provide you the application subject to its own terms of use."
- },
- {
- "subtitle": "c. Governing Law and Jurisdiction:",
- "text": "These Terms of Use will be interpreted in accordance with the laws of Switzerland. You agree that any disputes arising out of or in connection with these Terms of Use, not otherwise resolved in accordance with dispute resolution provision set forth in section 1(f) shall be subject to the exclusive jurisdiction of the courts located in Zug, Switzerland."
- },
- {
- "subtitle": "d. Languages:",
- "text": "The English version of these Terms of Use is the definitive and binding version. All notices, alerts, and procedures communications concerning these Terms of Use will be executed in English, even if translations into other languages are made available. Should there be any discrepancies between the English version and other translations, the English version will take precedence, as permitted by law."
- },
- {
- "subtitle": "e. Assignment:",
- "text": "You may not assign, transfer, delegate, or sublicense any rights, obligations, or remedies under these Terms of Use without the prior written consent of the Foundation. Any such attempts without this consent will be considered void. We retain the discretion to assign, transfer, or delegate Our rights, obligations, or remedies under these Terms of Use as We see fit."
- },
- {
- "subtitle": "f. Waiver:",
- "text": "Our failure to assert a right or provision under these Terms of Use will not constitute a waiver of such right or provision."
- },
- {
- "subtitle": "g. Entire Agreement and Severability:",
- "text": "These Terms of Use supersede all prior terms, agreements, discussions and writings regarding the Products and constitutes the entire agreement between you and Us regarding the Products. If any part of these Terms of Use is determined to be invalid or unenforceable by applicable law, then the invalid or unenforceable provision will be deemed superseded by a valid, enforceable provision that most closely matches the intent of the original provision and the remainder of these Terms of Use will continue in effect."
- },
- {
- "subtitle": "h. Survival:",
- "text": "The following provisions will survive expiration or termination of these Terms of Use: Section 2 (Your Content), Section 3(a)(Ownership) and (c)(Restrictions), Section 4 (Disclaimers and Limitations of Liability), Section 5 (indemnification), Section 1(f) (Dispute Resolution) and Section 6 (Miscellaneous)."
- },
- {
- "subtitle": "i. Contact:",
- "text": "Feel free to contact Us with any questions about these Terms of Use. You can also write to Us at:\n\nCardano Foundation,\nDammstrasse 16,\n6300, Zug,\nSwitzerland\nAttn: Legal"
- }
- ]
- }
- ]
- },
- "privacypolicy": {
- "done": "Done",
- "intro": {
- "title": "Privacy Policy",
- "text": "Cardano Foundation (referred to as \"Foundation\", \"We\", \"Our\", or \"Us\") is committed to innovating in digital identity management while prioritising user privacy and data protection. This Privacy Policy specifically applies to the Identity Wallet developed by the Cardano Foundation (the \"Identity Wallet\") and the website http://identity.cardanofoundation.org (the \"Products\"). The Identity Wallet is a product designed to facilitate the creation and management of digital identities using Key Event Receipt Infrastructure (KERI) and Decentralized Identifiers (DIDs), operating without linking to any real-world names or personal identifiable information (PII). The Identity Wallet does not require users to submit emails, names, phone numbers, or any documents. Instead, it provides a framework for users to manage their own digital identities autonomously. This is achieved by securely storing private key material on the user's device for identification purposes, enabling users to control their own identity information and securely communicate with other users and entities. This policy outlines our practices regarding the collection, use, disclosure, and protection of any data associated with the Identity Wallet. Note that this policy may differ from other privacy policies pertaining to different CF products or services. Please read this Privacy Policy carefully."
- },
- "sections": [
- {
- "title": "1. Data controller and contact details",
- "content": [
- {
- "subtitle": "",
- "text": "The controller of the data processing described in this Privacy Policy is Cardano Foundation, unless we inform you otherwise in certain cases. You can notify Us of any data protection-related concerns using the following contact details:\n\nCardano Foundation\nDammstrasse 16\n6300 Zug\n\ngdpr@cardanofoundation.org"
- }
- ]
- },
- {
- "title": "2. Types of Data Collected",
- "content": [
- {
- "subtitle": "",
- "text": "For the Identity Wallet, We collect and manage data differently, aligning with our commitment to user privacy and secure identity management. We do not collect typical personal data like names, addresses, or contact information. When using the Products, the Foundation may ask you to provide certain information that can be used to identify or contact you 'Personal Data'. The types of Personal Data that We collect from you depend on the circumstances of collection, the nature of the Product used or the transaction undertaken. Data We collect may include, but is not limited to:"
- },
- {
- "subtitle": "a. Device/ Network Data:",
- "text": "Information regarding your interaction with a Product. This includes technical information (e.g., IP Address, MAC Address, SSIDs, etc.), online user ID, device characteristics (such as browser/OS version), web server logs, browser plug-ins, your time zone application logs and language settings, cookie data, usage data. It also includes practical information like any login information, information about how you use Our Products and interact with Us and limited technical information necessary for the operation and security of the wallet, such as device type and operating system version. This is to ensure the proper functioning of the wallet and to provide security features."
- },
- {
- "subtitle": "",
- "text": "To clarify, We do not collect the following data, which remains stored on the user's device:"
- },
- {
- "subtitle": "- Identity Data:",
- "text": "This includes any personal details users choose to employ for setting up or supporting their digital identities, like their names, physical addresses, identification documents, or proofs of residency and credentials."
- },
- {
- "subtitle": "- Digital Identity Data:",
- "text": "Information related to the digital identities created using the wallet, including KERI and DIDs. This does not include real-world names or personal details, unless the user opts to incorporate these details."
- },
- {
- "subtitle": "- Private Key Material:",
- "text": "This comprises private keys, which are essential for identity management and verification purposes."
- }
- ]
- },
- {
- "title": "3. How we collect your Personal Data",
- "content": [
- {
- "subtitle": "",
- "text": "You may give Us personal information when you use, apply or register for a Foundation product or otherwise submit information to use through the Products or other communications with Us. For example:"
- },
- {
- "subtitle": "a.",
- "text": "We may collect information when you create a profile on Our Products;"
- },
- {
- "subtitle": "b.",
- "text": "We may collect Device/Network Data when you access and use Our websites. Some of this data is necessary for Us to run Our website or to respond to your requests, like ticket bookings. Other data is huge help to Us in providing you with better services and maintaining a well-run organisation;"
- },
- {
- "subtitle": "c.",
- "text": "We may collect information about you from third parties; and other channels including Our support."
- },
- {
- "subtitle": "d.",
- "text": "We may collect data under any other contractual agreement or arrangement;"
- }
- ]
- },
- {
- "title": "4. Use of Personal Data",
- "content": [
- {
- "subtitle": "",
- "text": "We may use your Personal Data for the following purposes:"
- },
- {
- "subtitle": "a.",
- "text": "For legitimate business purposes and to provide the Products you request. This includes but is not limited to: fulfilling Our obligations to you and to financial or other institutions, compliance with laws, audits, protect rights, prevent fraud, and for business improvement, including sending relevant information, responding to law enforcement, gathering feedback, and addressing complaints or disputes;"
- },
- {
- "subtitle": "b.",
- "text": "to protect the safety and the well being of yourself and/or other users;"
- },
- {
- "subtitle": "c.",
- "text": "for business development purposes such as statistical and marketing analysis, systems testing, maintenance and development, customer surveys or to help Us in any future dealings with you, for example by identifying your requirements and preference; for all other purposes ancillary to any of the purposes stated above (\"Ancillary Purposes\");"
- },
- {
- "subtitle": "d.",
- "text": "based on your consent: If you have given us consent to process your personal data for certain purposes, we process your personal data within the scope of and based on this consent, unless we have another legal basis and we require such a basis. Consent given can be revoked at any time, but this has no effect on data processing that has already taken place."
- },
- {
- "subtitle": "",
- "text": "(collectively, \"Purposes\")"
- }
- ]
- },
- {
- "title": "5. Data Security and Transfer",
- "content": [
- {
- "subtitle": "",
- "text": "While no system is absolutely secure, We use reasonable technical and organisational precautions to protect your data and to respect your privacy."
- },
- {
- "subtitle": "",
- "text": "We employ measures like encryption, secure physical storage, limited access zones, confidentiality agreements, and routine assessments for timely data deletion to safeguard your information."
- },
- {
- "subtitle": "",
- "text": "The Identity Wallet is designed to store Digital Identity Data and Private Key Material directly on the user's device. As such, no transfer of this data occurs to Cardano Foundation servers or external entities, providing an additional layer of privacy and security."
- },
- {
- "subtitle": "",
- "text": "Personal Data may be transferred to, and stored at a destination outside the European Economic Area (\"EEA\") where there are appropriate safeguards in place pursuant to Article 46 of the GDPR. This data might be handled by Our staff or Our suppliers outside the EEA for various tasks, including service provision. By providing your personal data, you consent to such transfers, storage, or processing."
- }
- ]
- },
- {
- "title": "6. Retention",
- "content": [
- {
- "subtitle": "",
- "text": "The Foundation will hold onto your Personal Data only as long as needed based on the reasons outlined in this Privacy Policy."
- },
- {
- "subtitle": "",
- "text": "Digital Identity Data and Private Key Material will be retained on the user's device and will not be stored on Cardano Foundation servers. Users have full control over this data, including its deletion."
- },
- {
- "subtitle": "",
- "text": "Device/Network Data will be retained only as long as necessary for operational and security purposes. This data will be subject to regular review and deletion as per our data minimization principles."
- },
- {
- "subtitle": "",
- "text": "We will store and utilize your Personal Data as long as it's required to meet legal obligations, address disagreements, and uphold Our legal agreements and policies. Additionally, We will keep usage data for Our internal analysis purposes. Typically, usage data is kept for a shorter duration unless it aids in enhancing product security or functionality, or when legal requirements necessitate longer retention."
- }
- ]
- },
- {
- "title": "7. Data Disclosure",
- "content": [
- {
- "subtitle": "",
- "text": "We will not trade or sell your Personal Data to third parties."
- },
- {
- "subtitle": "",
- "text": "We will not disclose any Digital Identity Data or Private Key Information to third parties, as this data is stored solely on the user's device."
- },
- {
- "subtitle": "",
- "text": "Your other Personal Data, if any, shall only be disclosed or transferred to the following third parties appointed or authorised by the Foundation for the fulfilment of the Purposes described herein, in accordance with GDPR principles such as consent, contractual necessity, legal obligation, vital interests, public task, and legitimate interests. This may include third party processors, such as:"
- },
- {
- "subtitle": "a.",
- "text": "Data warehouses;"
- },
- {
- "subtitle": "b.",
- "text": "IT service providers;"
- },
- {
- "subtitle": "c.",
- "text": "Data analytics and/or marketing agencies;"
- },
- {
- "subtitle": "d.",
- "text": "Third party service providers, tools or plugins that enable a better user experience for Products, such as social media plugins or online marketing tools, newsletter providers"
- },
- {
- "subtitle": "e.",
- "text": "Auditors"
- },
- {
- "subtitle": "",
- "text": "We shall take practical steps to ensure that their employees, officers, agents, consultants, contractors and such other third parties mentioned above who are involved in the collection or processing of your Personal Data will observe and adhere to the terms of this Privacy Policy and GDPR requirements."
- },
- {
- "subtitle": "",
- "text": "The Foundation may disclose your Personal Data in good faith belief that such disclosure is necessary for one of the following reasons: complying with a legal obligation; protecting and defending the rights or property of the Foundation; preventing or investigating possible wrongdoing in connection with the Products; protecting the personal safety of users of Products or the public; protecting against legal liability; or responding to legal bodies as permitted or required by law such as in compliance with a warrant or subpoena issued by a court of competent jurisdiction; and/or responding to regulatory authorities."
- },
- {
- "subtitle": "",
- "text": "In addition to the above, your Personal Data may also be disclosed or transferred to Our affiliates and subsidiaries."
- }
- ]
- },
- {
- "title": "8. Your Rights",
- "content": [
- {
- "subtitle": "",
- "text": "Users can access, manage, and delete their Digital Identity Data within the wallet at any time. Any Private Key Material or other data securely stored within your device (as described in section 2) must be removed manually by the user."
- },
- {
- "subtitle": "",
- "text": "If you want to know what Personal Data the Foundation holds about you or wish for it to be deleted, please reach out to Us at gdpr@cardanofoundation.org."
- },
- {
- "subtitle": "",
- "text": "In certain circumstances, you possess these data protection rights:"
- },
- {
- "subtitle": "a.",
- "text": "Access: You can ask for details about your personal data We have."
- },
- {
- "subtitle": "b.",
- "text": "Rectification: If the data is inaccurate or incomplete, you can request corrections."
- },
- {
- "subtitle": "c.",
- "text": "Objection: You can contest the use of your data for specific reasons; for instance, using the unsubscribe option in our emails."
- },
- {
- "subtitle": "d.",
- "text": "Restriction: You can ask Us to limit the processing of your data."
- },
- {
- "subtitle": "e.",
- "text": "Data Portability: Request a copy of your data from Us in a standard, machine-readable format."
- },
- {
- "subtitle": "f.",
- "text": "Withdraw Consent: Should We process data based on your consent, you can retract it anytime."
- },
- {
- "subtitle": "",
- "text": "Please understand We might ask you to confirm your identity before acting on these requests. If unsatisfied with how We handle your data, you can report to your local Data Protection Authority in the EU or EEA."
- }
- ]
- },
- {
- "title": "9. Third Party Links",
- "content": [
- {
- "subtitle": "",
- "text": "Products may contain links to other companies, organizations or websites (collectively, 'Third Party Links'). This Privacy Notice does not apply to such Third Party Links. If you access Third Party Links using the links provided, the operators may collect your personal information."
- },
- {
- "subtitle": "",
- "text": "The Foundation has no control over and assumes no responsibility for the content, privacy policies or practices of any third-party product or service."
- }
- ]
- },
- {
- "title": "10. Changes",
- "content": [
- {
- "subtitle": "",
- "text": "We may revise or update this Privacy Policy from time to time."
- },
- {
- "subtitle": "",
- "text": "Any modifications will be reflected on this page. We'll notify you of updates either through email or a notable alert on the Product, while also adjusting the 'effective date' at this Policy's beginning. Regularly reviewing this Policy ensures you stay informed of any alterations, which take effect once displayed on this page."
- }
- ]
- },
- {
- "title": "11. Data Privacy Contact",
- "content": [
- {
- "subtitle": "",
- "text": "For further inquiries or requests in relation to Our handling of your Personal Data or this Privacy Policy please contact Us at gdpr@cardanofoundation.org"
- }
- ]
- }
- ]
- },
- "aboutssiagent": {
- "done": "Done",
- "intro": {
- "title": "About SSI agent",
- "text": ""
- },
- "sections": []
- },
- "lockpage": {
- "title": "Welcome back",
- "description": "Please enter your passcode to login",
- "error": "Incorrect passcode",
- "forgotten": {
- "button": "I've forgotten my passcode"
- },
- "attempterror": "{{attempt}} attempt remaining",
- "attemptalert": {
- "title": "Login unavailable",
- "content": "Try again in {{time}}",
- "hour": "{{value}} hour",
- "hours": "{{value}} hours",
- "minute": "{{value}} minute",
- "minutes": "{{value}} minutes"
- },
- "alert": {
- "text": {
- "verify": "If you've forgotten your passcode, please verify your seed phrase to gain access to your wallet",
- "restart": "You currently haven't generated a seed phrase, would you like to start your onboarding again?"
- },
- "button": {
- "verify": "Verify your Seed Phrase",
- "restart": "Start again",
- "cancel": "Cancel"
- }
- }
- },
- "verifyseedphrase": {
- "onboarding": {
- "title": "Verify your recovery phrase",
- "button": {
- "continue": "Verify",
- "back": "Back",
- "clear": "Clear all"
- }
- },
- "paragraph": {
- "top": "Please select each word in the order it was presented to you."
- },
- "alert": {
- "fail": {
- "text": "Sorry, the seed phrase you have entered is incorrect!",
- "button": {
- "confirm": "Try again"
- }
- },
- "exit": {
- "text": "If you go back you will lose your current progress. Are you sure you want to do this?",
- "button": {
- "confirm": "Confirm",
- "cancel": "Cancel"
- }
- },
- "clear": {
- "text": "Are you sure you want to clear all the words you have entered so far?",
- "button": {
- "confirm": "Clear all",
- "cancel": "Cancel"
- }
- }
- }
- },
- "verifyrecoveryseedphrase": {
- "title": "Recover wallet",
- "button": {
- "continue": "Confirm",
- "lock": "Try again in 1 minute",
- "clear": "Clear all",
- "switch": "Switch to create new wallet"
- },
- "paragraph": {
- "top": "Please verify your recovery phrase to recover your wallet. To start typing click on the first option."
- },
- "suggestions": {
- "title": "Suggestions",
- "error": "All words must be compatible with the suggestions"
- },
- "alert": {
- "fail": {
- "text": "Sorry, the recovery phrase you have entered is incorrect!",
- "button": {
- "confirm": "Try again"
- }
- },
- "clear": {
- "text": "Are you sure you want to clear all the words you have entered so far?",
- "button": {
- "confirm": "Clear all",
- "cancel": "Cancel"
- }
- },
- "toomanyattempts": {
- "text": "Too many failed attempts. Please try again later.",
- "button": {
- "confirm": "Ok"
- }
- }
- }
- },
- "tabsmenu": {
- "label": {
- "identifiers": "Identity",
- "creds": "Credentials",
- "scan": "Scan",
- "notifications": "Notifications",
- "menu": "Menu"
- }
- },
- "custominput": {
- "optional": "(optional)"
- },
- "switchmodemodal": {
- "title": "Before you switch",
- "button": {
- "back": "Back",
- "continue": "Continue"
- },
- "recovery": {
- "title": "Switch to recover an existing wallet",
- "paragraphtop": "You're about to switch to the wallet recovery process. Here's what will happen:",
- "warning": {
- "one": "Passcode & Operations Password: You'll keep your existing passcode and operations password. If you chose to skip setting an operations password, that preference will remain.",
- "two": "Recovery Phrase: If you've gone beyond the generation of a new recovery phrase, this will be wiped. You'll need to verify the recovery phrase associated with your previous wallet.",
- "three": "Connect URL: You will only need the Connect URL for the SSI agent screen."
- },
- "paragraphbot": "When you switch, you'll be able to enter your recovery details to access your existing wallet."
- },
- "create": {
- "title": "Switch to create a new wallet",
- "paragraphtop": "You're about to switch to the new wallet creation process. Here's what will happen:",
- "warning": {
- "one": "Passcode & Operations Password: You'll keep your existing passcode and operations password. If you chose to skip setting an operations password, that preference will remain.",
- "two": "Recovery Phrase: You'll need to generate a recovery phrase and copy these words down somewhere safe",
- "three": "Boot URL and Connect URL: You will need both your Boot URL and Connect URL for the SSI agent screen."
- },
- "paragraphbot": "When you switch, you'll start the process to create a brand new wallet."
- },
- "checkbox": "I have read and understand."
- },
- "removependingalert": {
- "button": {
- "done": "Done",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- }
- },
- "createpassword": {
- "title": "Create password",
- "change": "New password",
- "cancel": "Cancel",
- "description": "Set your operations password so you can access additional wallet features.",
- "input": {
- "first": {
- "title": "Create password",
- "placeholder": "Type password"
- },
- "second": {
- "title": "Confirm password",
- "placeholder": "Retype your password"
- },
- "third": {
- "title": "Create a hint",
- "placeholder": "Create a password hint"
- }
- },
- "button": {
- "continue": "Create Password",
- "skip": "Skip"
- },
- "alert": {
- "text": "Are you sure you want to skip? By doing this, you will be required to use your passcode for any protected operations. You can, of course, set this up later if you prefer.",
- "button": {
- "confirm": "Yes, skip",
- "cancel": "Cancel"
- }
- },
- "error": {
- "hasSpecialChar": "Please enter a valid character",
- "isTooShort": "Must be more than 8 characters long",
- "isTooLong": "Must be less than 64 characters long",
- "hasNoUppercase": "Must contain an uppercase letter",
- "hasNoLowercase": "Must contain a lowercase letter",
- "hasNoNumber": "Must contain a number",
- "hasNoSymbol": "Must contain a valid symbol",
- "hasNoMatch": "Passwords do not match",
- "hintSameAsPassword": "Your hint cannot be your password"
- }
- },
- "ssiagent": {
- "title": "Enter your SSI agent details",
- "description": "To continue, please enter the SSI agent boot and connect URLs (in your email or from your command line).",
- "verifydescription": "To continue, please enter the SSI agent connect URL (in your email or from your command line).",
- "button": {
- "info": "Get more information",
- "validate": "Validate"
- },
- "input": {
- "boot": {
- "label": "Boot URL",
- "placeholder": "Paste or scan your boot URL"
- },
- "connect": {
- "label": "Connect URL",
- "placeholder": "Paste or scan your connect URL"
- }
- },
- "error": {
- "invalidurl": "Enter a valid URL",
- "invalidbooturl": "Enter a valid boot URL",
- "invalidconnecturl": "Enter a valid connect URL",
- "mismatchconnecturl": "This connect URL doesn’t match the boot URL"
- }
- },
- "operationspasswordregex": {
- "label": {
- "length": "8 - 64 characters long",
- "uppercase": "Contains an uppercase letter",
- "lowercase": "Contains a lowercase letter",
- "number": "Contains a number",
- "symbol": "Contains a symbol"
- }
- },
- "identifiers": {
- "tab": {
- "title": "Identity",
- "create": "Add an identifier",
- "favourites": "Favourites",
- "allidentifiers": "All identifiers",
- "pendingidentifiers": "Pending identifiers",
- "multisigidentifiers": "For groups"
- },
- "detelepending": {
- "title": "Identifier options",
- "description": "Your identifier is pending and may still complete. If you no longer require this identifier, tap “Delete identifier” to remove it.",
- "mutilsigdescription": "This multi-sig is pending. It will complete once it meets the required member threshold. To remove it from your pending list, tap “Delete identifier”.",
- "button": "Delete identifier",
- "secondchecktitle": "Are you sure you want to delete this identifier?"
- },
- "layout": {
- "created": "CREATED"
- },
- "details": {
- "done": "Done",
- "information": "Information",
- "type": "Type",
- "publickeybase": "Public Key Base 58",
- "delegator": {
- "title": "Delegator Identifier Prefix",
- "icon": "DI"
- },
- "signingkeyslist": {
- "title": "List of Signing Keys",
- "icon": "K"
- },
- "signingkeysthreshold": {
- "title": "Keys Signing Threshold",
- "icon": "KT"
- },
- "nextkeyslist": {
- "title": "List of Next Key Digests",
- "icon": "N"
- },
- "nextkeysthreshold": {
- "title": "Next Keys Signing Threshold",
- "icon": "NT"
- },
- "creationtimestamp": {
- "title": "Creation Timestamp"
- },
- "rotationtimestamp": {
- "title": "Last Key Rotation Timestamp",
- "icon": "DT"
- },
- "sequencenumber": {
- "title": "Sequence Number",
- "icon": "S"
- },
- "backerslist": {
- "title": "List of Backers",
- "icon": "B"
- },
- "backeraddress": {
- "title": "Backer Address"
- },
- "delete": {
- "button": "Delete identifier",
- "alert": {
- "title": "Are you sure you want to delete this identifier?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- }
- },
- "options": {
- "title": "Identifier options",
- "cancel": "Cancel",
- "view": "View JSON",
- "edit": "Edit identifier",
- "share": "Share identifier",
- "delete": "Delete identifier",
- "rotatekeys": "Rotate keys",
- "inner": {
- "label": "Display name",
- "theme": "Edit theme",
- "confirm": "Confirm changes",
- "error": "Must be less than 32 characters long",
- "color": "Choose card colour"
- }
- },
- "rotatekeys": {
- "done": "Done",
- "description": "Rotating your signing keys boosts security by reducing the risk of key compromise."
- },
- "clouderror": "We couldn’t locate this identifier in the cloud. It might become available again soon, but some information could be lost.\n\nIf you no longer require this identifier, tap “Delete identifier” to remove."
- }
- },
- "credentials": {
- "tab": {
- "title": "Credentials",
- "create": "Add a credential",
- "viewarchived": "Archived & Revoked",
- "favourites": "Favourites",
- "allcreds": "All credentials",
- "pendingcred": "Pending credentials",
- "detelepending": {
- "title": "Credential options",
- "description": "Your credential is pending and may still complete. If you no longer require this credential, tap “Delete credential” to remove it.",
- "button": "Delete credential",
- "secondchecktitle": "Are you sure you want to delete this credential?"
- }
- },
- "layout": {
- "issued": "Issued"
- },
- "details": {
- "done": "Done",
- "restore": "Restore",
- "delete": "Delete",
- "type": "Type",
- "title": "Title",
- "description": "Description",
- "revoked": "Revoked",
- "attributes": {
- "label": "Attributes",
- "issuee": "Issuee",
- "issuancedate": "Issuance Date",
- "lei": "LEI"
- },
- "schemaversion": "Schema Version",
- "issuer": "Issuer",
- "status": {
- "label": "Status",
- "issued": "Issued",
- "revoked": "Revoked",
- "timestamp": "Timestamp"
- },
- "options": {
- "title": "Credential options",
- "view": "View JSON",
- "archive": "Archive credential"
- },
- "button": {
- "delete": "Delete credential",
- "archive": "Archive credential"
- },
- "alert": {
- "archive": {
- "title": "Are you sure you want to archive this credential?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- },
- "delete": {
- "title": "Are you sure you want to delete this credential?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- },
- "restore": {
- "title": "Are you sure you want to view this with your other credentials?",
- "confirm": "Yes, restore credential",
- "cancel": "Cancel"
- }
- },
- "toast": {
- "clipboard": "Copied to clipboard"
- },
- "clouderror": "We couldn’t locate this credential in the cloud. It might become available again soon, but some information could be lost.\n\nIf you no longer require this credential, tap “Delete credential” to remove."
- },
- "create": {
- "alert": {
- "title": "Once this credential is visible you'll receive a notification. Until then you won't be able to access more details.",
- "confirm": "Ok"
- }
- },
- "archived": {
- "title": "History",
- "done": "Done",
- "select": "Select",
- "selectall": "Select All",
- "deselectall": "Deselect all",
- "cancel": "Cancel",
- "delete": "Delete",
- "restore": "Restore",
- "oneselected": "1 Credential Selected",
- "manyselected": "{{amount}} Credentials Selected",
- "archivedtitle": "Archived credentials",
- "revokedtitle": "Revoked credentials",
- "revokedlabel": "Revoked",
- "alert": {
- "restoresingle": {
- "title": "Are you sure you want to view this with your other credentials?",
- "confirm": "Yes, restore credential",
- "cancel": "Cancel"
- },
- "restoremultiple": {
- "title": "Are you sure you want to view these with your other credentials?",
- "confirm": "Yes, restore credentials",
- "cancel": "Cancel"
- },
- "deletesingle": {
- "title": "This will delete the selected credential from your wallet permanently",
- "confirm": "Delete from wallet",
- "cancel": "Cancel"
- },
- "deletemultiple": {
- "title": "This will delete the selected credentials from your wallet permanently",
- "confirm": "Delete from wallet",
- "cancel": "Cancel"
- },
- "restorerevoked": {
- "title": "You cannot restore revoked credentials.",
- "confirm": "Ok"
- }
- }
- }
- },
- "scan": {
- "tab": {
- "title": "Align the QR code within the frame to scan"
- },
- "alert": {
- "title": "Would you like to grant permission for using your camera?"
- },
- "pastemeerkatid": "Paste Meerkat ID"
- },
- "notifications": {
- "tab": {
- "header": "Notifications",
- "empty": "No notifications",
- "chips": {
- "all": "All",
- "identifiers": "Identifiers",
- "credentials": "Credentials"
- },
- "sections": {
- "new": "New",
- "earlier": {
- "title": "Earlier",
- "end": "End of notifications",
- "buttons": {
- "showealier": "View previous notifications"
- }
- }
- },
- "optionmodal": {
- "title": "Notification options",
- "done": "Done",
- "showdetail": "Show details",
- "markasread": "Mark as read",
- "markasunread": "Mark as unread",
- "delete": "Delete notification",
- "deletealert": {
- "text": "Deleting this notification cannot be undone. Once deleted you will no longer be able to require any actions required from this notification.",
- "accept": "Delete",
- "cancel": "Cancel"
- }
- },
- "labels": {
- "exnipexgrant": "{{connection}} wants to issue you a credential",
- "multisigicp": "{{connection}} is requesting to create a group identifier with you",
- "exnipexapply": "{{connection}} has requested a credential from you",
- "exnipexgrantrevoke": "Your {{credential}} credential has been revoked"
- }
- },
- "details": {
- "buttons": {
- "close": "Close",
- "accept": "Accept",
- "decline": "Decline",
- "cancel": "Cancel",
- "back": "Back",
- "choosecredential": "Choose credential",
- "providecredential": "Provide credential"
- },
- "credential": {
- "request": {
- "alert": {
- "text": "You don’t have any credentials available that match this request. In order to offer this credential you will need to acquire one first.",
- "confirm": "OK"
- },
- "information": {
- "title": "Credential request",
- "requestfrom": "Request from",
- "requestedcredential": "Requested credential",
- "informationrequired": "Information required",
- "alert": {
- "textdecline": "Are you sure you want to decline this credential request? You won't be able to change your decision later."
- }
- },
- "choosecredential": {
- "description": "Select the most appropriate {{requestCred}} to provide the required information",
- "title": "Choose credential"
- }
- },
- "receive": {
- "title": "Receive credential",
- "receivefrom": "Receive a credential from",
- "credentialpending": "Credential pending",
- "alert": {
- "textdecline": "Are you sure you want to decline this credential issuance? You won't be able to change your decision later."
- }
- }
- },
- "identifier": {
- "title": "Identifier request",
- "subtitle": "Review this group identifier request",
- "requestfrom": "Request from",
- "othermembers": "Other members",
- "pending": "Pending",
- "accepted": "Accepted",
- "threshold": "Threshold",
- "alert": {
- "textdecline": "Are you sure you want to decline this request? You won't be able to change your decision later."
- },
- "errorpage": {
- "title": "Please review",
- "alerttext": "You are missing one or more connections required for this group request. Please scan all necessary QR codes to proceed.",
- "instructions": {
- "title": "Instructions",
- "detailtext": "In order to continue and complete the group setup, please follow the instructions below.",
- "stepone": "Ensure you have scanned all participant's QR codes.",
- "steptwo": "After scanning, try to open this notification again."
- },
- "help": {
- "title": "Need help?",
- "detailtext": "If you need assistance, please message us on our <0>{{discordSupportChannel}}0>.",
- "supportchannel": "Discord support channel"
- },
- "continuesetup": "Continue setup"
- }
- }
- }
- },
- "menu": {
- "tab": {
- "header": "Menu",
- "items": {
- "profile": {
- "title": "Profile"
- },
- "crypto": {
- "title": "Crypto"
- },
- "connections": {
- "title": "Connections"
- },
- "connectwallet": {
- "title": "Cardano connect",
- "cip": "CIP-45",
- "tabheader": "Cardano Connect",
- "connectbtn": "Connect with Cardano",
- "disconnectbeforecreatealert": {
- "message": "You are currently connected. To connect with a new wallet, you will be disconnected from your current selection. Would you like to disconnect and continue?",
- "confirm": "Continue",
- "cancel": "Cancel"
- },
- "connectionbrokenalert": {
- "message": "Your connection has been disconnected as you have deleted the chosen identifier paired with this connection. Please choose a new identifier to re-establish this connection.",
- "confirm": "Ok"
- },
- "inputpidmodal": {
- "header": "Paste Meerkat ID",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "scanQR": "Scan QR code"
- },
- "connectionhistory": {
- "title": "Connection History",
- "action": {
- "delete": "Delete"
- },
- "deletealert": {
- "message": "Are you sure you want to delete this connection?",
- "confirm": "Yes, I’m sure",
- "cancel": "Cancel"
- },
- "missingidentifieralert": {
- "message": "To connect with Cardano, you need to create a KERI AID identifier. Would you like to create one now?",
- "confirm": "Create identifier",
- "cancel": "Cancel"
- },
- "confirmconnect": {
- "done": "Done",
- "connectbtn": "Connect",
- "disconnectbtn": "Disconnect",
- "connectingbtn": "Connecting...",
- "pending": "Pending"
- }
- },
- "request": {
- "stageone": {
- "title": "Connect Cardano",
- "message": "Would you like to establish a CIP-45 Connection?",
- "alert": {
- "titleconfirm": "Are you sure you want to decline this connection?",
- "confirm": "Decline",
- "cancel": "Cancel"
- }
- },
- "stagetwo": {
- "title": "Choose identifier",
- "message": "Which KERI AID identifier would you like to make the connection with?",
- "confirm": "Confirm"
- },
- "button": {
- "back": "Back",
- "accept": "Accept",
- "decline": "Decline"
- }
- }
- }
- }
- }
- },
- "settings": {
- "sections": {
- "header": "Settings",
- "security": {
- "title": "Security",
- "biometry": "Biometric authentication",
- "changepin": {
- "title": "Change passcode",
- "createpasscode": "Create new passcode",
- "reenterpasscode": "Re-enter new passcode",
- "cancel": "Cancel",
- "back": "Back",
- "description": "Create a new passcode to secure your wallet",
- "cantremember": {
- "label": "Can't remember?"
- }
- },
- "managepassword": {
- "title": "Manage operations password",
- "page": {
- "title": "Manage password",
- "enable": "Enable operations password",
- "change": "Change operations password",
- "alert": {
- "enablemessage": "By turning on an operations password you will be required to use this to verify any future operations instead of your passcode.",
- "disablemessage": "By turning off your operations password you will be required to use your passcode to verify any future operations.",
- "existingpassword": "Your new operations password must be different to your existing one.",
- "confirm": "Continue",
- "cancel": "Cancel",
- "ok": "Ok"
- }
- }
- },
- "seedphrase": {
- "title": "Recovery phrase",
- "page": {
- "title": "Recovery phrase",
- "tips": {
- "label": "Useful tips:",
- "one": "Write down or make a copy of your recovery phrase and store it in a safe location.",
- "two": "Double-check that your words are copied in the correct order (1 to 18).",
- "three": "Ensure there are no spelling errors."
- },
- "hiddentext": "Press the ‘view recovery phrase’ button when you’re ready to see your recovery phrase. Remember to make sure nobody is looking!",
- "button": {
- "view": "View recovery phrase",
- "hide": "Hide recovery phrase"
- },
- "confirmmodal": {
- "title": "Stay safe",
- "subtitle": "Confirm and acknowledge the following:",
- "firstcondition": "Nobody else can see my screen",
- "secondcondition": "Sharing my recovery phrase with others puts my identity at risk",
- "thirdcondition": "Losing my recovery phrase means I will lose access to my wallet",
- "button": {
- "confirm": "View recovery phrase",
- "cancel": "Cancel"
- }
- }
- }
- }
- },
- "support": {
- "title": "Support & Legal",
- "contact": "Connect via Discord",
- "learnmore": "Learn More About Cardano IDW",
- "terms": {
- "title": "Terms and Privacy Policy",
- "submenu": {
- "title": "Terms & privacy",
- "termandcondition": "Terms & conditions",
- "privacy": "Privacy policy"
- }
- },
- "version": "App Version"
- }
- }
- },
- "connections": {
- "tab": {
- "title": "Connections",
- "create": "Add a connection",
- "indentifierselector": {
- "title": "Choose identifier",
- "message": "Which KERI AID identifier would you like to make the connection with?",
- "button": {
- "cancel": "Cancel",
- "confirm": "Confirm"
- }
- },
- "alert": {
- "message": "To create a connection, you need to create an individual KERI AID identifier. Would you like to create one now?",
- "confirm": "Create identifier",
- "cancel": "Cancel"
- },
- "detelepending": {
- "title": "Connection options",
- "description": "This connection is pending you’ll be notified once they accept. If you no longer require this connection, tap “Delete connection” to remove.",
- "button": "Delete connection",
- "secondchecktitle": "Are you sure you want to delete this connection?"
- }
- },
- "details": {
- "done": "Done",
- "label": "Label",
- "date": "Date Created",
- "endpoints": "Service Endpoints",
- "history": "Connection History",
- "connectedwith": "Connected with \"{{ issuer }}\"",
- "issuance": "Received a \"{{ credential }}\"",
- "present": "\"{{ issuer }}\" has requested a credential presentation",
- "agree": "Presentation offer agreed",
- "update": "\"{{ credential }}\" has been revoked",
- "notavailable": "N/A",
- "details": "Details",
- "notes": "Notes",
- "nocurrentnotes": "No current notes",
- "nocurrentnotesext": "There are currently no notes associated with this connection.",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "title": "Title",
- "message": "Message",
- "delete": "Delete connection",
- "options": {
- "title": "Connection options",
- "labels": {
- "add": "Add a note",
- "manage": "Manage notes",
- "delete": "Delete connection"
- },
- "alert": {
- "deleteconnection": {
- "title": "Are you sure you want to delete this connection?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- },
- "deletenote": {
- "title": "Are you sure you want to delete this note?",
- "confirm": "Yes, I'm sure",
- "cancel": "Cancel"
- }
- }
- },
- "clouderror": "We couldn’t locate this connection in the cloud. It might become available again soon, but some information could be lost.\n\nIf you no longer require this connection, tap “Delete connection” to remove."
- }
- },
- "connectmodal": {
- "title": "Add a",
- "scan": "Scan QR Code",
- "connect": "Scan to connect",
- "provide": "Provide QR Code",
- "close": "Done"
- },
- "verifypassword": {
- "title": "Enter password",
- "cancel": "Cancel",
- "confirm": "Confirm",
- "button": {
- "forgot": "I've forgotten my password"
- },
- "error": {
- "hasNoMatch": "Password didn't match"
- },
- "alert": {
- "choice": {
- "title": "Would you like to see your password hint or reset your password?"
- },
- "button": {
- "seepasswordhint": "See my password hint",
- "resetmypassword": "Reset my password",
- "tryagain": "Great, I'll try again!"
- },
- "hint": {
- "title": "Your password hint is"
- }
- }
- },
- "verifypasscode": {
- "cancel": "Cancel",
- "title": "Enter passcode",
- "description": "Please enter your passcode to verify",
- "error": "Incorrect passcode",
- "forgotten": {
- "button": "I've forgotten my passcode"
- },
- "alert": {
- "text": {
- "verify": "If you've forgotten your passcode, please verify your seed phrase to gain access to your wallet",
- "restart": "You currently haven't generated a seed phrase, would you like to start your onboarding again?"
- },
- "button": {
- "verify": "Verify your Seed Phrase",
- "restart": "Start again",
- "cancel": "Cancel"
- }
- }
- },
- "forgotauth": {
- "cancel": "Cancel",
- "passcode": {
- "title": "Forgot passcode",
- "description": "Please verify your seed phrase to reset your passcode. To start typing click on the first option."
- },
- "password": {
- "title": "Forgot password",
- "description": "Please verify your seed phrase to reset your password. To start typing click on the first option."
- },
- "newpasscode": {
- "title": "New passcode",
- "description": "Create a new passcode to re-secure your wallet and perform operations",
- "reenterpasscode": "Re-enter passcode"
- },
- "newpassword": {
- "title": "New password",
- "description": "Create a new operations password so you can access additional wallet features."
- }
- },
- "shareidentifier": {
- "title": "Share connection",
- "subtitle": {
- "identifier": "To share, either scan the QR code or select from the provided options below",
- "connection": "Show this QR code to the person you want to connect with, or click the 'More share options' link"
- },
- "done": "Done",
- "divider": "or",
- "copykey": "Copy connection URL",
- "more": "More share options"
- },
- "createidentifier": {
- "cancel": "Cancel",
- "back": "Back",
- "done": "Done",
- "add": {
- "title": "Add an identifier",
- "confirmbutton": "Create identifier"
- },
- "share": {
- "title": "Share identifier",
- "subtitle": "You've scanned",
- "copybutton": "Copy OOBI connection",
- "notes": {
- "top": "Before proceeding, please make sure that everyone you want to include as a signer scans this QR code.",
- "middle": "After everyone has scanned your QR code, please be sure to scan everyone else's QR code as well.",
- "bottom": "To continue with the initiation of the mult-sig you must have scanned at least one other QR code."
- },
- "scanbutton": "Scan QR codes",
- "initiatebutton": "Initiate group",
- "scanalert": {
- "text": "Have all the individuals you want to include as members scanned your QR code?",
- "confirm": "Confirm and scan",
- "cancel": "Cancel"
- }
- },
- "receive": {
- "title": "Setup identifier",
- "confirmbutton": "Add identifier",
- "notes": {
- "top": "Before proceeding, please make sure everyone included as a member scans this QR code.",
- "middle": "Remember to scan everyone else’s QR code too!"
- }
- },
- "scan": {
- "cancel": "Cancel",
- "confirm": "Confirm",
- "pasteoobi": "Paste OOBI",
- "initiate": "Initiate group",
- "scanqrcode": "Scan QR code",
- "pastecontents": "Paste contents"
- },
- "connections": {
- "title": "Connections",
- "subtitle": "These are the members you scanned. Please review before proceeding.",
- "continue": "Confirm connections"
- },
- "threshold": {
- "title": "Set a Threshold",
- "subtitle": "Set the threshold to determine the level of consensus required",
- "label": "Threshold",
- "continue": "Confirm threshold"
- },
- "confirm": {
- "title": "Confirm",
- "subtitle": "Confirm all details for your Keri AID group identifier are accurate",
- "displayname": "Display Name",
- "selectedmembers": "Selected Members",
- "treshold": "Threshold",
- "continue": "Confirm identifier",
- "cancel": "Cancel",
- "alert": {
- "text": "Cancelling now means you'll need to restart the group initiation process.",
- "cancel": "Yes, cancel",
- "back": "Back"
- }
- },
- "displayname": {
- "title": "Display name",
- "placeholder": "Create a name for this identifier"
- },
- "identifiertype": {
- "title": "Identifier type",
- "didkey": "did:key",
- "keri": "KERI AID"
- },
- "color": {
- "title": "Choose card colour"
- },
- "aidtype": {
- "title": "AID type",
- "default": {
- "label": "Individual",
- "tooltip": "Lorem ipsum dolor sit amet"
- },
- "multisig": {
- "label": "Group",
- "tooltip": "Lorem ipsum dolor sit amet"
- },
- "delegated": {
- "label": "Delegated",
- "tooltip": "Lorem ipsum dolor sit amet"
- }
- },
- "aidinfo": {
- "title": "AID types",
- "text": "A description of each KERI AID type you can create identifiers for.",
- "individual": {
- "label": "Individual",
- "text": "Use these identifiers to represent all your individual personas. Currently, a single key pair is used to sign statements with these identifiers, and it can be updated. In the future, these identifiers might become more robust with multi-device support and social recovery options."
- },
- "group": {
- "label": "Group",
- "text": "Use a group identifier to represent an entity controlled by multiple people, like a committee. You can set a threshold to decide how many members are needed to create a valid signature or recover the identifier."
- },
- "delegated": {
- "label": "Delegated",
- "text": "The delegated option is currently being developed. Identifiers might be delegated for advanced recovery in case of a security breach, which is ideal for an organisational structure in enterprises."
- },
- "button": {
- "done": "Done"
- }
- },
- "theme": {
- "title": "Choose a theme"
- },
- "error": {
- "maxlength": "Must be less than 32 characters long"
- }
- },
- "offline": {
- "title": "You’re offline",
- "description": "You’ve lost connection to the cloud agent. Once the connection has been re-established your wallet will return to normal usage."
- },
- "shareqr": {
- "divider": "or",
- "more": "More share options"
- },
- "toast": {
- "copiedtoclipboard": "Copied to clipboard",
- "identifierrequested": "Identifier request pending",
- "identifiercreated": "New identifier created successfully",
- "identifierupdated": "Identifier successfully updated",
- "identifierdeleted": "Identifier successfully deleted",
- "credentialdeleted": "Credential deleted successfully",
- "credentialsdeleted": "Credentials deleted successfully",
- "credentialarchived": "Credential archived successfully",
- "credentialrestored": "Credential restored successfully",
- "credentialsrestored": "Credentials restored successfully",
- "connectiondeleted": "Connection deleted successfully",
- "qrsuccess": "QR code scanned successfully",
- "qrerror": "QR code not recognised",
- "connectionrequestincoming": "New Connection Request",
- "connectionrequestpending": "Connection request pending",
- "newconnectionadded": "New connection added",
- "credentialrequestpending": "Credential request pending",
- "newcredentialadded": "New credential added",
- "notesupdated": "Notes updated successfully",
- "noteremoved": "Note removed successfully",
- "maxfavouritesreached": "Maximum of 5 favourites reached",
- "usernamecreationsuccess": "Welcome, {{username}}!",
- "usernamecreationerror": "Unable to set name. Please try again.",
- "walletconnectiondeleted": "Delete successfully",
- "connectwalletsuccess": "Connected successfully",
- "disconnectwallet": "Disconnected successfully",
- "unableconnectwallet": "Unable to connect",
- "peeridsuccess": "Peer ID successful",
- "peeriderror": "Peer ID not recognised",
- "peeridnotrecognised": "Peer ID not recognised",
- "setupbiometricsuccess": "Biometrics setup successfully",
- "rotatekeysuccess": "Keys rotated successfully",
- "rotatekeyerror": "Unable to rotate keys",
- "newmultisignmember": "New member added to group",
- "multisignidentifiercreated": "Identifier added to \"For groups\"",
- "delegatedidentifiercreated": "Identifier added to \"For delegates\"",
- "passcodeupdated": "Passcode updated successfully",
- "passwordupdated": "Password updated successfully",
- "passworddisabled": "Password turned off",
- "passwordcreated": "Password created successfully",
- "sharecredsuccess": "Credential shared successfully",
- "sharecrederror": "Unable to share credential",
- "deleteconnectionerror": "Unable to delete connection",
- "deletecrederror": "Unable to delete credential",
- "deleteidentifiererror": "Unable to delete identifier",
- "archivedcrederror": "Unable to archive credential",
- "signsuccessful": "Sign successful",
- "savepasswordhinterror": "Unable to delete password hint",
- "editidentifiererror": "Unable to update identifier"
- },
- "request": {
- "sign": {
- "title": "Sign",
- "identifier": "Identifier",
- "transaction": {
- "data": "Data"
- }
- },
- "button": {
- "acceptoffer": "Accept credential",
- "cancel": "Cancel",
- "back": "Back",
- "accept": "Accept",
- "decline": "Decline",
- "sign": "Sign",
- "dontallow": "Don't allow"
- },
- "alert": {
- "cancel": "Cancel"
- },
- "pending": "{{action}} pending",
- "success": "{{action}} successful"
- },
- "setusername": {
- "title": "Welcome! What should we call you?",
- "input": {
- "title": "Name"
- },
- "button": {
- "confirm": "Confirm"
- },
- "toast": {
- "usernameCreated": "Welcome, {{username}}!",
- "usernameError": "Unable to set name. Please try again."
- }
- },
- "biometry": {
- "reason": "Please authenticate",
- "canceltitle": "Cancel",
- "iosfallbacktitle": "Use passcode",
- "androidtitle": "Authentication",
- "androidsubtitle": "Authentication using biometrics",
- "setupandroidbiometryheader": "Do you want to allow “IDW” to use biometrics?",
- "setupandroidbiometryconfirm": "Ok",
- "setupandroidbiometrycancel": "Don't allow",
- "cancelbiometryheader": "You canceled Biometrics. You can set this up later via the settings page."
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/main.tsx b/03_source/mobile_old.del/mobile_main/src/main.tsx
deleted file mode 100644
index 0b394f5..0000000
--- a/03_source/mobile_old.del/mobile_main/src/main.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from 'react';
-import ReactDOM from 'react-dom/client';
-import App from './App';
-import * as serviceWorker from './serviceWorker';
-
-ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
-
-
- ,
-);
-// If you want your app to work offline and load faster, you can change
-// unregister() to register() below. Note this comes with some pitfalls.
-// Learn more about service workers: https://bit.ly/CRA-PWA
-serviceWorker.register();
diff --git a/03_source/mobile_old.del/mobile_main/src/models/Location.ts b/03_source/mobile_old.del/mobile_main/src/models/Location.ts
deleted file mode 100644
index 6ab6509..0000000
--- a/03_source/mobile_old.del/mobile_main/src/models/Location.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export interface Location {
- id: number;
- name?: string;
- lat: number;
- lng: number;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/models/Schedule.ts b/03_source/mobile_old.del/mobile_main/src/models/Schedule.ts
deleted file mode 100644
index f210ff8..0000000
--- a/03_source/mobile_old.del/mobile_main/src/models/Schedule.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-export interface Schedule {
- date: string;
- groups: ScheduleGroup[];
-}
-
-export interface ScheduleGroup {
- time: string;
- sessions: Session[];
-}
-
-export interface Session {
- id: number;
- timeStart: string;
- timeEnd: string;
- name: string;
- location: string;
- description: string;
- speakerNames: string[];
- tracks: string[];
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/models/SessionGroup.ts b/03_source/mobile_old.del/mobile_main/src/models/SessionGroup.ts
deleted file mode 100644
index 93d46ad..0000000
--- a/03_source/mobile_old.del/mobile_main/src/models/SessionGroup.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { Session } from './Schedule';
-export interface SessionGroup {
- startTime: string;
- sessions: Session[];
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/models/Speaker.ts b/03_source/mobile_old.del/mobile_main/src/models/Speaker.ts
deleted file mode 100644
index 35d8c78..0000000
--- a/03_source/mobile_old.del/mobile_main/src/models/Speaker.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export interface Speaker {
- id: number;
- name: string;
- profilePic: string;
- twitter: string;
- instagram: string;
- about: string;
- title: string;
- location: string;
- email: string;
- phone: string;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/About/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/About/index.tsx
deleted file mode 100644
index 985a97d..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/About/index.tsx
+++ /dev/null
@@ -1,138 +0,0 @@
-import React, { useState } from 'react';
-import {
- IonHeader,
- IonToolbar,
- IonContent,
- IonPage,
- IonButtons,
- IonMenuButton,
- IonButton,
- IonIcon,
- IonDatetime,
- IonSelectOption,
- IonList,
- IonItem,
- IonLabel,
- IonSelect,
- IonPopover,
- IonText,
-} from '@ionic/react';
-import './style.scss';
-import { ellipsisHorizontal, ellipsisVertical } from 'ionicons/icons';
-import AboutPopover from '../../components/AboutPopover';
-import { format, parseISO } from 'date-fns';
-
-interface AboutProps {}
-
-const About: React.FC = () => {
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
- const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison');
- const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00');
-
- const selectOptions = {
- header: 'Select a Location',
- };
-
- const presentPopover = (e: React.MouseEvent) => {
- setPopoverEvent(e.nativeEvent);
- setShowPopover(true);
- };
-
- function displayDate(date: string, dateFormat: string) {
- return format(parseISO(date), dateFormat);
- }
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* Instead of loading an image each time the select changes, use opacity to transition them */}
-
-
-
-
-
-
-
About
-
-
- The Ionic Conference is a one-day conference on {displayDate(conferenceDate, 'MMM dd, yyyy')} featuring
- talks from the Ionic team. It is focused on Ionic applications being built with Ionic Framework. This
- includes migrating apps to the latest version of the framework, Angular concepts, Webpack, Sass, and many
- other technologies used in Ionic 2. Tickets are completely sold out, and we’re expecting more than 1000
- developers – making this the largest Ionic conference ever!
-
-
-
Details
-
-
-
- setLocation(e.detail.value as any)}
- >
- Madison, WI
- Austin, TX
- Chicago, IL
- Seattle, WA
-
-
-
- Date
- {displayDate(conferenceDate, 'MMM dd, yyyy')}
-
- setConferenceDate(e.detail.value! as string)}
- presentation="date"
- >
-
-
-
-
-
Internet
-
-
-
- Wifi network
- ica{displayDate(conferenceDate, 'y')}
-
-
- Password
- makegoodthings
-
-
-
-
-
- setShowPopover(false)}>
- setShowPopover(false)} />
-
-
- );
-};
-
-export default React.memo(About);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/About/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/About/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/About/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/Account.scss b/03_source/mobile_old.del/mobile_main/src/pages/Account.scss
deleted file mode 100644
index 7c588ef..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/Account.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-#account-page {
- img {
- max-width: 140px;
- border-radius: 50%;
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/Account.tsx b/03_source/mobile_old.del/mobile_main/src/pages/Account.tsx
deleted file mode 100644
index 112f9b2..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/Account.tsx
+++ /dev/null
@@ -1,101 +0,0 @@
-import React, { useState } from 'react';
-import {
- IonHeader,
- IonToolbar,
- IonTitle,
- IonContent,
- IonPage,
- IonButtons,
- IonMenuButton,
- IonList,
- IonItem,
- IonAlert,
-} from '@ionic/react';
-import './Account.scss';
-import { setUsername } from '../data/user/user.actions';
-import { connect } from '../data/connect';
-import { RouteComponentProps } from 'react-router';
-
-interface OwnProps extends RouteComponentProps {}
-
-interface StateProps {
- username?: string;
-}
-
-interface DispatchProps {
- setUsername: typeof setUsername;
-}
-
-interface AccountProps extends OwnProps, StateProps, DispatchProps {}
-
-const Account: React.FC = ({ setUsername, username }) => {
- const [showAlert, setShowAlert] = useState(false);
-
- const clicked = (text: string) => {
- console.log(`Clicked ${text}`);
- };
-
- return (
-
-
-
-
-
-
- Account
-
-
-
- {username && (
-
-
-
{username}
-
- clicked('Update Picture')}>Update Picture
- setShowAlert(true)}>Change Username
- clicked('Change Password')}>Change Password
-
- Support
-
-
- Logout
-
-
-
- )}
-
- {
- setUsername(data.username);
- },
- },
- ]}
- inputs={[
- {
- type: 'text',
- name: 'username',
- value: username,
- placeholder: 'username',
- },
- ]}
- onDidDismiss={() => setShowAlert(false)}
- />
-
- );
-};
-
-export default connect({
- mapStateToProps: state => ({
- username: state.user.username,
- }),
- mapDispatchToProps: {
- setUsername,
- },
- component: Account,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/Login.scss b/03_source/mobile_old.del/mobile_main/src/pages/Login.scss
deleted file mode 100644
index f512514..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/Login.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-#login-page,
-#signup-page,
-#support-page {
- .login-logo {
- padding: 20px 0;
- min-height: 200px;
- text-align: center;
- }
-
- .login-logo img {
- max-width: 150px;
- }
-
- .list {
- margin-bottom: 0;
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/Login.tsx b/03_source/mobile_old.del/mobile_main/src/pages/Login.tsx
deleted file mode 100644
index 741df21..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/Login.tsx
+++ /dev/null
@@ -1,137 +0,0 @@
-import React, { useState } from 'react';
-import {
- IonHeader,
- IonToolbar,
- IonTitle,
- IonContent,
- IonPage,
- IonButtons,
- IonMenuButton,
- IonRow,
- IonCol,
- IonButton,
- IonList,
- IonItem,
- IonInput,
- IonText,
-} from '@ionic/react';
-import './Login.scss';
-import { setIsLoggedIn, setUsername } from '../data/user/user.actions';
-import { connect } from '../data/connect';
-import { RouteComponentProps } from 'react-router';
-
-interface OwnProps extends RouteComponentProps {}
-
-interface DispatchProps {
- setIsLoggedIn: typeof setIsLoggedIn;
- setUsername: typeof setUsername;
-}
-
-interface LoginProps extends OwnProps, DispatchProps {}
-
-const Login: React.FC = ({ setIsLoggedIn, history, setUsername: setUsernameAction }) => {
- const [username, setUsername] = useState('');
- const [password, setPassword] = useState('');
- const [formSubmitted, setFormSubmitted] = useState(false);
- const [usernameError, setUsernameError] = useState(false);
- const [passwordError, setPasswordError] = useState(false);
-
- const login = async (e: React.FormEvent) => {
- e.preventDefault();
- setFormSubmitted(true);
- if (!username) {
- setUsernameError(true);
- }
- if (!password) {
- setPasswordError(true);
- }
-
- if (username && password) {
- await setIsLoggedIn(true);
- await setUsernameAction(username);
- history.push('/tabs/schedule', { direction: 'none' });
- }
- };
-
- return (
-
-
-
-
-
-
- Login
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default connect({
- mapDispatchToProps: {
- setIsLoggedIn,
- setUsername,
- },
- component: Login,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/MainTabs/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/MainTabs/index.tsx
deleted file mode 100644
index 4d46500..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/MainTabs/index.tsx
+++ /dev/null
@@ -1,93 +0,0 @@
-// REQ102-navigation-bar
-
-import { IonIcon, IonLabel, IonRouterOutlet, IonTabBar, IonTabButton, IonTabs } from '@ionic/react';
-import { calendar, informationCircle, location, people } from 'ionicons/icons';
-import React, { useContext } from 'react';
-import { Redirect, Route } from 'react-router';
-import About from '../About';
-import MapView from '../MapView';
-import SchedulePage from '../SchedulePage';
-import SessionDetail from '../SessionDetail';
-import SpeakerDetail from '../SpeakerDetail';
-import SpeakerList from '../SpeakerList';
-
-//
-import { AppContext } from '../../data/AppContext';
-import Chat from '../chat.del.3';
-import Events from '../events';
-import FavouriteEvents from '../favourite_events';
-import Messages from '../messages';
-import NearBy from '../near_by';
-import Orders from '../orders';
-import Profile from '../profile';
-import UserProfile from '../user_profile';
-
-interface MainTabsProps {}
-
-const MainTabs: React.FC = () => {
- const { showBottomTabBar } = useContext(AppContext);
-
- return (
-
-
-
- {/*
- Using the render method prop cuts down the number of renders your components will have due to route changes.
- Use the component prop when your component depends on the RouterComponentProps passed in automatically.
- */}
-
- } exact={true} />
- } exact={true} />
- } exact={true} />
- } exact={true} />
- } exact={true} />
-
- } exact={true} />
-
-
-
- } exact={true} />
-
- } exact={true} />
-
- } exact={true} />
-
-
- } exact={true} />
-
-
-
-
-
-
-
-
-
- {'Events'}
-
-
-
-
- {'NearBy'}
-
-
-
-
- {'Orders'}
-
-
-
-
- {'Message'}
-
-
-
-
- {'Profile'}
-
-
-
- );
-};
-
-export default MainTabs;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/MapView.scss b/03_source/mobile_old.del/mobile_main/src/pages/MapView.scss
deleted file mode 100644
index d9ac521..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/MapView.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-#map-view {
- .map-canvas {
- position: absolute;
-
- height: 100%;
- width: 100%;
-
- background-color: transparent;
-
- opacity: 0;
- transition: opacity 250ms ease-in;
- }
-
- .show-map {
- opacity: 1;
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/MapView.tsx b/03_source/mobile_old.del/mobile_main/src/pages/MapView.tsx
deleted file mode 100644
index 0f15ce5..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/MapView.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import React from 'react';
-import Map from '../components/Map';
-import { IonHeader, IonToolbar, IonButtons, IonMenuButton, IonTitle, IonContent, IonPage } from '@ionic/react';
-import { Location } from '../models/Location';
-import { connect } from '../data/connect';
-import * as selectors from '../data/selectors';
-import './MapView.scss';
-
-interface OwnProps {}
-
-interface StateProps {
- locations: Location[];
- mapCenter: Location;
-}
-
-interface DispatchProps {}
-
-interface MapViewProps extends OwnProps, StateProps, DispatchProps {}
-
-const MapView: React.FC = ({ locations, mapCenter }) => {
- return (
-
-
-
-
-
-
- Map
-
-
-
-
-
-
-
- );
-};
-
-export default connect({
- mapStateToProps: state => ({
- locations: state.data.locations,
- mapCenter: selectors.mapCenter(state),
- }),
- component: MapView,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/SBAccount/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/SBAccount/index.tsx
deleted file mode 100644
index d29df16..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/SBAccount/index.tsx
+++ /dev/null
@@ -1,161 +0,0 @@
-import {
- IonButton,
- IonContent,
- IonHeader,
- IonInput,
- IonItem,
- IonLabel,
- IonPage,
- IonTitle,
- IonToolbar,
- useIonLoading,
- useIonToast,
- useIonRouter,
-} from '@ionic/react';
-import { useEffect, useState } from 'react';
-import { Avatar } from '../../components/Avatar';
-import { supabase } from '../../supabaseClient';
-
-import './style.scss';
-
-export function AccountPage() {
- const [showLoading, hideLoading] = useIonLoading();
- const [showToast] = useIonToast();
-
- const [session] = useState(() => supabase.auth.session());
- const router = useIonRouter();
-
- const [profile, setProfile] = useState({
- username: '',
- website: '',
- avatar_url: '',
- });
-
- useEffect(() => {
- getProfile();
- }, [session]);
-
- const getProfile = async () => {
- console.log('get');
- // await showLoading();
- try {
- const user = supabase.auth.user();
- let { data, error, status } = await supabase
- .from('profiles')
- .select(`username, website, avatar_url`)
- .eq('id', user!.id)
- .single();
-
- if (error && status !== 406) {
- throw error;
- }
-
- if (data) {
- setProfile({
- username: data.username,
- website: data.website,
- avatar_url: data.avatar_url,
- });
- }
- } catch (error: any) {
- showToast({ message: error.message, duration: 5000 });
- } finally {
- // await hideLoading();
- }
- };
-
- // const signOut = async () => {
- // await supabase.auth.signOut();
- // router.push('/', 'forward', 'replace');
- // };
-
- const updateProfile = async (e?: any, avatar_url: string = '') => {
- e?.preventDefault();
-
- console.log('update ');
- console.log('show loading here');
- // await showLoading();
-
- try {
- const user = supabase.auth.user();
-
- const updates = {
- id: user!.id,
- ...profile,
- avatar_url: avatar_url,
- updated_at: new Date(),
- };
-
- let { error } = await supabase.from('profiles').upsert(updates, {
- returning: 'minimal', // Don't return the value after inserting
- });
-
- if (error) {
- throw error;
- }
- } catch (error: any) {
- showToast({ message: error.message, duration: 5000 });
- } finally {
- console.log('hide loading here');
- // await hideLoading();
- }
- };
-
- return (
-
-
-
- Account
-
-
-
-
-
-
-
-
- {
- router.push('/sblogout', 'forward', 'replace');
- }}
- >
- Log Out
-
-
-
-
- );
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/SBAccount/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/SBAccount/style.scss
deleted file mode 100644
index e69de29..0000000
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/SBLogin/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/SBLogin/index.tsx
deleted file mode 100644
index fa7db24..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/SBLogin/index.tsx
+++ /dev/null
@@ -1,98 +0,0 @@
-import React, { useEffect, useState } from 'react';
-
-import {
- IonButton,
- IonContent,
- IonHeader,
- IonInput,
- IonItem,
- IonLabel,
- IonList,
- IonPage,
- IonTitle,
- IonToolbar,
- useIonToast,
- useIonLoading,
- IonRoute,
- useIonRouter,
-} from '@ionic/react';
-
-import { supabase } from '../../supabaseClient';
-import { Session } from '@supabase/supabase-js';
-
-function LoginPage() {
- const [email, setEmail] = useState('user1@example.com');
- const [password, setPassword] = useState('Aa1234567');
-
- const [showLoading, hideLoading] = useIonLoading();
- const [showToast] = useIonToast();
-
- const router = useIonRouter();
-
- const handleLogin = async (e: React.FormEvent) => {
- e.preventDefault();
-
- await showLoading();
-
- try {
- // // OPT
- // // await supabase.auth.signIn({ email });
- console.log({ email, password });
- const { error } = await supabase.auth.signInWithPassword({
- email,
- password,
- });
-
- if (error) {
- console.error(error);
- router.push('/login_error', 'forward', 'replace');
- // return redirect('/login?message=Could not authenticate user');
- }
- router.push('/tabs/events', 'forward', 'replace');
- // return redirect('/protected');
- } catch (e: any) {
- await showToast({
- message: e.error_description || e.message,
- duration: 5000,
- });
- } finally {
- await hideLoading();
- }
- };
-
- return (
-
-
-
-
-
-
-
- );
-}
-export default React.memo(LoginPage);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/SBLogout/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/SBLogout/index.tsx
deleted file mode 100644
index 1200bae..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/SBLogout/index.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import { supabase } from '../../supabaseClient';
-import { useContext, useEffect, useState } from 'react';
-import { AppContext } from '../../data/AppContext';
-import { useIonRouter } from '@ionic/react';
-
-function SBLogout() {
- const router = useIonRouter();
- const { session } = useContext(AppContext);
-
- useEffect(() => {
- supabase.auth.signOut();
- router.push('/sblogin');
- }, []);
-
- return <>SBLogout>;
-}
-
-export default SBLogout;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/SchedulePage.scss b/03_source/mobile_old.del/mobile_main/src/pages/SchedulePage.scss
deleted file mode 100644
index 8ad2909..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/SchedulePage.scss
+++ /dev/null
@@ -1,58 +0,0 @@
-#schedule-page {
- ion-fab-button {
- --background: var(--ion-color-step-150, #fff);
- --background-hover: var(--ion-color-step-200, #f2f2f2);
- --background-focused: var(--ion-color-step-250, #d9d9d9);
-
- --color: var(--ion-color-primary, #3880ff);
- }
-
- /*
- * Material Design uses the ripple for activated
- * so only style the iOS activated background
- */
- .ios ion-fab-button {
- --background-activated: var(--ion-color-step-250, #d9d9d9);
- }
-
- ion-item-sliding.track-ionic ion-label {
- border-left: 2px solid var(--ion-color-primary);
- padding-left: 10px;
- }
- ion-item-sliding.track-angular ion-label {
- border-left: 2px solid var(--ion-color-angular);
- padding-left: 10px;
- }
- ion-item-sliding.track-communication ion-label {
- border-left: 2px solid var(--ion-color-communication);
- padding-left: 10px;
- }
- ion-item-sliding.track-tooling ion-label {
- border-left: 2px solid var(--ion-color-tooling);
- padding-left: 10px;
- }
- ion-item-sliding.track-services ion-label {
- border-left: 2px solid var(--ion-color-services);
- padding-left: 10px;
- }
- ion-item-sliding.track-design ion-label {
- border-left: 2px solid var(--ion-color-design);
- padding-left: 10px;
- }
- ion-item-sliding.track-workshop ion-label {
- border-left: 2px solid var(--ion-color-workshop);
- padding-left: 10px;
- }
- ion-item-sliding.track-food ion-label {
- border-left: 2px solid var(--ion-color-food);
- padding-left: 10px;
- }
- ion-item-sliding.track-documentation ion-label {
- border-left: 2px solid var(--ion-color-documentation);
- padding-left: 10px;
- }
- ion-item-sliding.track-navigation ion-label {
- border-left: 2px solid var(--ion-color-navigation);
- padding-left: 10px;
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/SchedulePage.tsx b/03_source/mobile_old.del/mobile_main/src/pages/SchedulePage.tsx
deleted file mode 100644
index 1040144..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/SchedulePage.tsx
+++ /dev/null
@@ -1,167 +0,0 @@
-import React, { useState, useRef } from 'react';
-
-import {
- IonToolbar,
- IonContent,
- IonPage,
- IonButtons,
- IonTitle,
- IonMenuButton,
- IonSegment,
- IonSegmentButton,
- IonButton,
- IonIcon,
- IonSearchbar,
- IonRefresher,
- IonRefresherContent,
- IonToast,
- IonModal,
- IonHeader,
- getConfig,
-} from '@ionic/react';
-import { options, search } from 'ionicons/icons';
-
-import SessionList from '../components/SessionList';
-import SessionListFilter from '../components/SessionListFilter';
-import './SchedulePage.scss';
-
-import ShareSocialFab from '../components/ShareSocialFab';
-
-import * as selectors from '../data/selectors';
-import { connect } from '../data/connect';
-import { setSearchText } from '../data/sessions/sessions.actions';
-import { Schedule } from '../models/Schedule';
-
-interface OwnProps {}
-
-interface StateProps {
- schedule: Schedule;
- favoritesSchedule: Schedule;
- mode: 'ios' | 'md';
-}
-
-interface DispatchProps {
- setSearchText: typeof setSearchText;
-}
-
-type SchedulePageProps = OwnProps & StateProps & DispatchProps;
-
-const SchedulePage: React.FC = ({ favoritesSchedule, schedule, setSearchText, mode }) => {
- const [segment, setSegment] = useState<'all' | 'favorites'>('all');
- const [showSearchbar, setShowSearchbar] = useState(false);
- const [showFilterModal, setShowFilterModal] = useState(false);
- const ionRefresherRef = useRef(null);
- const [showCompleteToast, setShowCompleteToast] = useState(false);
-
- const pageRef = useRef(null);
-
- const ios = mode === 'ios';
-
- const doRefresh = () => {
- setTimeout(() => {
- ionRefresherRef.current!.complete();
- setShowCompleteToast(true);
- }, 2500);
- };
-
- return (
-
-
-
- {!showSearchbar && (
-
-
-
- )}
- {ios && (
- setSegment(e.detail.value as any)}>
- All
- Favorites
-
- )}
- {!ios && !showSearchbar && Schedule }
- {showSearchbar && (
- setSearchText(e.detail.value)}
- onIonCancel={() => setShowSearchbar(false)}
- >
- )}
-
-
- {!ios && !showSearchbar && (
- setShowSearchbar(true)}>
-
-
- )}
- {!showSearchbar && (
- setShowFilterModal(true)}>
- {mode === 'ios' ? 'Filter' : }
-
- )}
-
-
-
- {!ios && (
-
- setSegment(e.detail.value as any)}>
- All
- Favorites
-
-
- )}
-
-
-
-
-
- Schedule
-
-
- setSearchText(e.detail.value)}
- >
-
-
-
-
-
-
-
- setShowCompleteToast(false)}
- />
-
-
-
-
-
- setShowFilterModal(false)}
- presentingElement={pageRef.current!}
- >
- setShowFilterModal(false)} />
-
-
-
-
- );
-};
-
-export default connect({
- mapStateToProps: state => ({
- schedule: selectors.getSearchedSchedule(state),
- favoritesSchedule: selectors.getGroupedFavorites(state),
- mode: getConfig()!.get('mode'),
- }),
- mapDispatchToProps: {
- setSearchText,
- },
- component: React.memo(SchedulePage),
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/SessionDetail.scss b/03_source/mobile_old.del/mobile_main/src/pages/SessionDetail.scss
deleted file mode 100644
index 49a5a4f..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/SessionDetail.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-#session-detail-page {
- .session-track-ionic {
- color: var(--ion-color-primary);
- }
-
- .session-track-angular {
- color: var(--ion-color-angular);
- }
-
- .session-track-communication {
- color: var(--ion-color-communication);
- }
-
- .session-track-tooling {
- color: var(--ion-color-tooling);
- }
-
- .session-track-services {
- color: var(--ion-color-services);
- }
-
- .session-track-design {
- color: var(--ion-color-design);
- }
-
- .session-track-workshop {
- color: var(--ion-color-workshop);
- }
-
- .session-track-food {
- color: var(--ion-color-food);
- }
-
- .session-track-documentation {
- color: var(--ion-color-documentation);
- }
-
- .session-track-navigation {
- color: var(--ion-color-navigation);
- }
-
- .show-favorite {
- position: relative;
- }
-
- .icon-heart-empty {
- position: absolute;
- top: 5px;
- right: 5px;
- transform: scale(1);
- transition: transform 0.3s ease;
- }
-
- .icon-heart {
- position: absolute;
- top: 5px;
- right: 5px;
- transform: scale(0);
- transition: transform 0.3s ease;
- }
-
- .show-favorite .icon-heart {
- transform: scale(1);
- }
-
- .show-favorite .icon-heart-empty {
- transform: scale(0);
- }
-
- h1 {
- margin: 0;
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/SessionDetail.tsx b/03_source/mobile_old.del/mobile_main/src/pages/SessionDetail.tsx
deleted file mode 100644
index f5c6741..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/SessionDetail.tsx
+++ /dev/null
@@ -1,122 +0,0 @@
-import React from 'react';
-import {
- IonHeader,
- IonToolbar,
- IonContent,
- IonPage,
- IonButtons,
- IonBackButton,
- IonButton,
- IonIcon,
- IonText,
- IonList,
- IonItem,
- IonLabel,
-} from '@ionic/react';
-import { connect } from '../data/connect';
-import { withRouter, RouteComponentProps } from 'react-router';
-import * as selectors from '../data/selectors';
-import { starOutline, star, share, cloudDownload } from 'ionicons/icons';
-import './SessionDetail.scss';
-import { addFavorite, removeFavorite } from '../data/sessions/sessions.actions';
-import { Session } from '../models/Schedule';
-
-interface OwnProps extends RouteComponentProps {}
-
-interface StateProps {
- session?: Session;
- favoriteSessions: number[];
-}
-
-interface DispatchProps {
- addFavorite: typeof addFavorite;
- removeFavorite: typeof removeFavorite;
-}
-
-type SessionDetailProps = OwnProps & StateProps & DispatchProps;
-
-const SessionDetail: React.FC = ({ session, addFavorite, removeFavorite, favoriteSessions }) => {
- if (!session) {
- return Session not found
;
- }
-
- const isFavorite = favoriteSessions.indexOf(session.id) > -1;
-
- const toggleFavorite = () => {
- isFavorite ? removeFavorite(session.id) : addFavorite(session.id);
- };
- const shareSession = () => {};
- const sessionClick = (text: string) => {
- console.log(`Clicked ${text}`);
- };
-
- return (
-
-
-
-
-
-
-
- toggleFavorite()}>
- {isFavorite ? (
-
- ) : (
-
- )}
-
- shareSession}>
-
-
-
-
-
-
-
-
{session.name}
- {session.tracks.map(track => (
-
- {track}
-
- ))}
-
{session.description}
-
- {session.timeStart} – {session.timeEnd}
-
- {session.location}
-
-
-
- sessionClick('watch')} button>
- Watch
-
- sessionClick('add to calendar')} button>
- Add to Calendar
-
- sessionClick('mark as unwatched')} button>
- Mark as Unwatched
-
- sessionClick('download video')} button>
- Download Video
-
-
- sessionClick('leave feedback')} button>
- Leave Feedback
-
-
-
-
- );
-};
-
-export default connect({
- mapStateToProps: (state, OwnProps) => ({
- session: selectors.getSession(state, OwnProps),
- favoriteSessions: state.data.favorites,
- }),
- mapDispatchToProps: {
- addFavorite,
- removeFavorite,
- },
- component: withRouter(SessionDetail),
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/Signup.tsx b/03_source/mobile_old.del/mobile_main/src/pages/Signup.tsx
deleted file mode 100644
index b04b3f7..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/Signup.tsx
+++ /dev/null
@@ -1,138 +0,0 @@
-import React, { useState } from 'react';
-import {
- IonHeader,
- IonToolbar,
- IonTitle,
- IonContent,
- IonPage,
- IonButtons,
- IonMenuButton,
- IonRow,
- IonCol,
- IonButton,
- IonList,
- IonItem,
- IonInput,
- IonText,
-} from '@ionic/react';
-import './Login.scss';
-import { setIsLoggedIn, setUsername } from '../data/user/user.actions';
-import { connect } from '../data/connect';
-import { RouteComponentProps } from 'react-router';
-
-interface OwnProps extends RouteComponentProps {}
-
-interface DispatchProps {
- setIsLoggedIn: typeof setIsLoggedIn;
- setUsername: typeof setUsername;
-}
-
-interface LoginProps extends OwnProps, DispatchProps {}
-
-const Login: React.FC = ({ setIsLoggedIn, history, setUsername: setUsernameAction }) => {
- const [username, setUsername] = useState('');
- const [password, setPassword] = useState('');
- const [formSubmitted, setFormSubmitted] = useState(false);
- const [usernameError, setUsernameError] = useState(false);
- const [passwordError, setPasswordError] = useState(false);
-
- const login = async (e: React.FormEvent) => {
- e.preventDefault();
- setFormSubmitted(true);
- if (!username) {
- setUsernameError(true);
- }
- if (!password) {
- setPasswordError(true);
- }
-
- if (username && password) {
- await setIsLoggedIn(true);
- await setUsernameAction(username);
- history.push('/tabs/schedule', { direction: 'none' });
- }
- };
-
- return (
-
-
-
-
-
-
- Signup
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default connect({
- mapDispatchToProps: {
- setIsLoggedIn,
- setUsername,
- },
- component: Login,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/SpeakerDetail.scss b/03_source/mobile_old.del/mobile_main/src/pages/SpeakerDetail.scss
deleted file mode 100644
index abdefda..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/SpeakerDetail.scss
+++ /dev/null
@@ -1,77 +0,0 @@
-#speaker-detail {
- /*
- * Speaker Background
- */
-
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .speaker-background {
- position: relative;
-
- display: flex;
-
- padding-top: var(--ion-safe-area-top);
-
- align-items: center;
- justify-content: center;
-
- flex-direction: column;
-
- height: calc(250px + var(--ion-safe-area-top));
-
- background: center / cover url('/assets/img/speaker-background.png') no-repeat;
- }
-
- .speaker-background img {
- width: 70px;
- border-radius: 50%;
- margin-top: calc(-1 * var(--ion-safe-area-top));
- }
-
- .speaker-background h2 {
- position: absolute;
-
- bottom: 10px;
-
- color: white;
- }
-
- .md .speaker-background {
- box-shadow: rgba(0, 0, 0, 0.2) 0 3px 1px -2px, rgba(0, 0, 0, 0.14) 0 2px 2px 0px, rgba(0, 0, 0, 0.12) 0 1px 5px 0;
- }
-
- .ios .speaker-background {
- box-shadow: rgba(0, 0, 0, 0.12) 0 4px 16px;
- }
-
- /*
- * Speaker Details
- */
-
- .speaker-detail p {
- margin-left: 6px;
- margin-right: 6px;
- }
-
- .speaker-detail hr {
- margin-top: 20px;
- margin-bottom: 20px;
-
- background: var(--ion-color-step-150, #d7d8da);
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/SpeakerDetail.tsx b/03_source/mobile_old.del/mobile_main/src/pages/SpeakerDetail.tsx
deleted file mode 100644
index 8a437a1..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/SpeakerDetail.tsx
+++ /dev/null
@@ -1,163 +0,0 @@
-import React, { useState } from 'react';
-import { RouteComponentProps } from 'react-router';
-
-import './SpeakerDetail.scss';
-
-import { ActionSheetButton } from '@ionic/core';
-import {
- IonActionSheet,
- IonChip,
- IonIcon,
- IonHeader,
- IonLabel,
- IonToolbar,
- IonButtons,
- IonContent,
- IonButton,
- IonBackButton,
- IonPage,
-} from '@ionic/react';
-import {
- callOutline,
- callSharp,
- logoTwitter,
- logoGithub,
- logoInstagram,
- shareOutline,
- shareSharp,
-} from 'ionicons/icons';
-
-import { connect } from '../data/connect';
-import * as selectors from '../data/selectors';
-
-import { Speaker } from '../models/Speaker';
-
-interface OwnProps extends RouteComponentProps {
- speaker?: Speaker;
-}
-
-interface StateProps {}
-
-interface DispatchProps {}
-
-interface SpeakerDetailProps extends OwnProps, StateProps, DispatchProps {}
-
-const SpeakerDetail: React.FC = ({ speaker }) => {
- const [showActionSheet, setShowActionSheet] = useState(false);
- const [actionSheetButtons, setActionSheetButtons] = useState([]);
- const [actionSheetHeader, setActionSheetHeader] = useState('');
-
- function openSpeakerShare(speaker: Speaker) {
- setActionSheetButtons([
- {
- text: 'Copy Link',
- handler: () => {
- console.log('Copy Link clicked');
- },
- },
- {
- text: 'Share via ...',
- handler: () => {
- console.log('Share via clicked');
- },
- },
- {
- text: 'Cancel',
- role: 'cancel',
- handler: () => {
- console.log('Cancel clicked');
- },
- },
- ]);
- setActionSheetHeader(`Share ${speaker.name}`);
- setShowActionSheet(true);
- }
-
- function openContact(speaker: Speaker) {
- setActionSheetButtons([
- {
- text: `Email ( ${speaker.email} )`,
- handler: () => {
- window.open('mailto:' + speaker.email);
- },
- },
- {
- text: `Call ( ${speaker.phone} )`,
- handler: () => {
- window.open('tel:' + speaker.phone);
- },
- },
- ]);
- setActionSheetHeader(`Share ${speaker.name}`);
- setShowActionSheet(true);
- }
-
- function openExternalUrl(url: string) {
- window.open(url, '_blank');
- }
-
- if (!speaker) {
- return Speaker not found
;
- }
-
- return (
-
-
-
-
-
-
-
-
- openContact(speaker)}>
-
-
- openSpeakerShare(speaker)}>
-
-
-
-
-
-
-
-
-
{speaker.name}
-
-
-
-
{speaker.about} Say hello on social media!
-
-
-
-
openExternalUrl(`https://twitter.com/${speaker.twitter}`)}>
-
- Twitter
-
-
-
openExternalUrl('https://github.com/ionic-team/ionic-framework')}>
-
- GitHub
-
-
-
openExternalUrl('https://instagram.com/ionicframework')}>
-
- Instagram
-
-
-
- setShowActionSheet(false)}
- buttons={actionSheetButtons}
- />
-
- );
-};
-
-export default connect({
- mapStateToProps: (state, ownProps) => ({
- speaker: selectors.getSpeaker(state, ownProps),
- }),
- component: SpeakerDetail,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/SpeakerList.scss b/03_source/mobile_old.del/mobile_main/src/pages/SpeakerList.scss
deleted file mode 100644
index 051d7ac..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/SpeakerList.scss
+++ /dev/null
@@ -1,48 +0,0 @@
-#speaker-list {
- .speaker-card {
- display: flex;
- flex-direction: column;
- }
-
- /* Due to the fact the cards are inside of columns the margins don't overlap
- * properly so we want to remove the extra margin between cards
- */
- ion-col:not(:last-of-type) .speaker-card {
- margin-bottom: 0;
- }
-
- .speaker-card .speaker-item {
- --min-height: 85px;
- }
-
- .speaker-card .speaker-item h2 {
- font-size: 18px;
- font-weight: 500;
- letter-spacing: 0.02em;
- }
-
- .speaker-card .speaker-item p {
- font-size: 13px;
- letter-spacing: 0.02em;
- }
-
- .speaker-card ion-card-header {
- padding: 0;
- }
-
- .speaker-card ion-card-content {
- flex: 1 1 auto;
-
- padding: 0;
- }
-
- .ios ion-list {
- margin-bottom: 10px;
- }
-
- .md ion-list {
- border-top: 1px solid var(--ion-color-step-150, #d7d8da);
-
- padding: 0;
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/SpeakerList.tsx b/03_source/mobile_old.del/mobile_main/src/pages/SpeakerList.tsx
deleted file mode 100644
index 969cd5b..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/SpeakerList.tsx
+++ /dev/null
@@ -1,71 +0,0 @@
-import React from 'react';
-import {
- IonHeader,
- IonToolbar,
- IonTitle,
- IonContent,
- IonPage,
- IonButtons,
- IonMenuButton,
- IonGrid,
- IonRow,
- IonCol,
-} from '@ionic/react';
-import SpeakerItem from '../components/SpeakerItem';
-import { Speaker } from '../models/Speaker';
-import { Session } from '../models/Schedule';
-import { connect } from '../data/connect';
-import * as selectors from '../data/selectors';
-import './SpeakerList.scss';
-
-interface OwnProps {}
-
-interface StateProps {
- speakers: Speaker[];
- speakerSessions: { [key: string]: Session[] };
-}
-
-interface DispatchProps {}
-
-interface SpeakerListProps extends OwnProps, StateProps, DispatchProps {}
-
-const SpeakerList: React.FC = ({ speakers, speakerSessions }) => {
- return (
-
-
-
-
-
-
- Speakers
-
-
-
-
-
-
- Speakers
-
-
-
-
-
- {speakers.map(speaker => (
-
-
-
- ))}
-
-
-
-
- );
-};
-
-export default connect({
- mapStateToProps: state => ({
- speakers: selectors.getSpeakers(state),
- speakerSessions: selectors.getSpeakerSessions(state),
- }),
- component: React.memo(SpeakerList),
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/Support.tsx b/03_source/mobile_old.del/mobile_main/src/pages/Support.tsx
deleted file mode 100644
index a863d13..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/Support.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-import React, { useState } from 'react';
-import {
- IonHeader,
- IonToolbar,
- IonTitle,
- IonContent,
- IonPage,
- IonButtons,
- IonMenuButton,
- IonRow,
- IonCol,
- IonButton,
- IonList,
- IonItem,
- IonText,
- IonTextarea,
- IonToast,
-} from '@ionic/react';
-import './Login.scss';
-import { connect } from '../data/connect';
-
-interface OwnProps {}
-
-interface DispatchProps {}
-
-interface SupportProps extends OwnProps, DispatchProps {}
-
-const Support: React.FC = () => {
- const [message, setMessage] = useState('');
- const [formSubmitted, setFormSubmitted] = useState(false);
- const [messageError, setMessageError] = useState(false);
- const [showToast, setShowToast] = useState(false);
-
- const send = (e: React.FormEvent) => {
- e.preventDefault();
- setFormSubmitted(true);
- if (!message) {
- setMessageError(true);
- }
- if (message) {
- setMessage('');
- setShowToast(true);
- }
- };
-
- return (
-
-
-
-
-
-
- Support
-
-
-
-
-
-
-
-
-
-
- setShowToast(false)}
- />
-
- );
-};
-
-export default connect({
- component: Support,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/Tutorial.scss b/03_source/mobile_old.del/mobile_main/src/pages/Tutorial.scss
deleted file mode 100644
index 5b9f8a7..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/Tutorial.scss
+++ /dev/null
@@ -1,56 +0,0 @@
-#tutorial-page {
- ion-toolbar {
- --background: transparent;
- --border-color: transparent;
- }
-
- .slide-title {
- margin-top: 2.8rem;
- }
-
- .slider {
- display: grid;
- grid-template-columns: repeat(4, 100%);
- grid-template-rows: 1fr;
-
- height: 100%;
-
- overflow: scroll;
- scroll-snap-type: x mandatory;
- }
-
- section {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- text-align: center;
-
- width: 100%;
-
- scroll-snap-align: center;
- scroll-snap-stop: always;
- }
-
- .slide-image {
- max-height: 50%;
- max-width: 60%;
- margin: -5vh 0 0;
- pointer-events: none;
- }
-
- b {
- font-weight: 500;
- }
-
- p {
- padding: 0 40px;
- font-size: 14px;
- line-height: 1.5;
- color: var(--ion-color-step-600, #60646b);
-
- b {
- color: var(--ion-text-color, #000000);
- }
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/Tutorial.tsx b/03_source/mobile_old.del/mobile_main/src/pages/Tutorial.tsx
deleted file mode 100644
index 3893dca..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/Tutorial.tsx
+++ /dev/null
@@ -1,105 +0,0 @@
-import React from 'react';
-import {
- IonContent,
- IonPage,
- IonHeader,
- IonToolbar,
- IonButtons,
- IonButton,
- IonIcon,
- useIonViewWillEnter,
-} from '@ionic/react';
-import { arrowForward } from 'ionicons/icons';
-import { setMenuEnabled } from '../data/sessions/sessions.actions';
-import { setHasSeenTutorial } from '../data/user/user.actions';
-import './Tutorial.scss';
-import { connect } from '../data/connect';
-import { RouteComponentProps } from 'react-router';
-
-interface OwnProps extends RouteComponentProps {}
-interface DispatchProps {
- setHasSeenTutorial: typeof setHasSeenTutorial;
- setMenuEnabled: typeof setMenuEnabled;
-}
-
-interface TutorialProps extends OwnProps, DispatchProps {}
-
-const Tutorial: React.FC = ({ history, setHasSeenTutorial, setMenuEnabled }) => {
- useIonViewWillEnter(() => {
- setMenuEnabled(false);
- });
-
- const startApp = async () => {
- await setHasSeenTutorial(true);
- await setMenuEnabled(true);
- history.push('/tabs/schedule', { direction: 'none' });
- };
-
- return (
-
-
-
-
-
- Skip
-
-
-
-
-
-
-
-
-
-
- Welcome to ICA
-
-
- The ionic conference app is a practical preview of the ionic framework in action, and a
- demonstration of proper code use.
-
-
-
-
-
-
-
What is Ionic?
-
- Ionic Framework is an open source SDK that enables developers to build high quality mobile apps
- with web technologies like HTML, CSS, and JavaScript.
-
-
-
-
-
-
-
What is Ionic Appflow?
-
- Ionic Appflow is a powerful set of services and features built on top of Ionic Framework that
- brings a totally new level of app development agility to mobile dev teams.
-
-
-
-
-
-
-
Ready to Play?
-
- Continue
-
-
-
-
-
-
-
- );
-};
-
-export default connect({
- mapDispatchToProps: {
- setHasSeenTutorial,
- setMenuEnabled,
- },
- component: Tutorial,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/UnlockMembership/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/UnlockMembership/index.tsx
deleted file mode 100644
index 1e10fe0..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/UnlockMembership/index.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-// REQ0114/Unlock-membership
-
-import React, { useEffect, useContext } from 'react';
-import { IonButton, IonRouterContext } from '@ionic/react';
-
-interface UnlockMemberShipProps {
- setIsLoggedIn: Function;
- setUsername: Function;
-}
-
-const UnlockMemberShip: React.FC = () => {
- return (
- <>
- {'Unlock membership place holder'}
-
- {
- window.history.back();
- }}
- >
- {'Back'}
-
-
- >
- );
-};
-
-export default UnlockMemberShip;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/ViewParticipants/ParticipantDetail/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/ViewParticipants/ParticipantDetail/index.tsx
deleted file mode 100644
index f0b1b39..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/ViewParticipants/ParticipantDetail/index.tsx
+++ /dev/null
@@ -1,173 +0,0 @@
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonChip,
- IonContent,
- IonFooter,
- IonIcon,
- IonItem,
- IonLabel,
- IonList,
- IonPopover,
- IonText,
- IonTitle,
-} from '@ionic/react';
-import React, { useEffect } from 'react';
-import HKPartyIonHeader from '../../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../../components/HKPartyIonToolbar';
-import { useGetUserProfileById } from '../../../hooks/useGetUserProfileById';
-
-import { chevronBackOutline, ellipsisHorizontal, ellipsisVertical, helpCircleOutline } from 'ionicons/icons';
-import Loading from '../../../components/Loading';
-import constants from '../../../constants';
-import './style.scss';
-
-function ParticipantDetail({ user_id }) {
- const [user_profile] = useGetUserProfileById({ user_id });
-
- const [page_content, setPageContent] = React.useState(null);
-
- useEffect(() => {
- setPageContent({
- about_user: user_profile?.about_user || 'No About',
- gender: user_profile?.gender || -1,
- height_cm: user_profile?.height_cm || -1,
- weight_kg: user_profile?.weight_kg || -1,
- avatar_url: user_profile?.avatar_urls?.length > 0 ? user_profile?.avatar_urls[0] : constants.IONIC_DEFAULT_AVATAR,
- other_tags: user_profile?.other_tags || [],
- career: user_profile?.career || [],
- spoken_language: user_profile?.spoken_language || [],
- education: user_profile?.education || [],
- });
- }, [user_profile]);
-
- if (!page_content) return ;
-
- return (
- <>
-
-
-
- close('https://ionicframework.com/docs')}>
- {'Block'}
-
- close('https://ionicframework.com/docs')}>
- {'Report and Block'}
-
-
-
-
-
-
-
-
-
-
- {'Profiles'}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {page_content.about_user}
-
-
-
-
-
-
- {page_content.gender == 1 ? 'Male' : 'Female'}
-
-
-
- {page_content.height_cm} cm
-
-
-
- {page_content.weight_kg} kg
-
-
-
-
-
-
- {page_content.spoken_language.map((t, i) => (i > 0 ? ', ' + t : t))}
-
-
-
-
-
- {page_content.education}
-
-
-
-
-
-
{'About me'}
- {page_content.about_user}
-
-
-
-
{'Career'}
-
- {page_content.career.map((t, i) => (
- {t}
- ))}
-
-
-
-
-
{'Spoken Language'}
-
- {page_content.spoken_language.map((t, i) => (
- {t}
- ))}
-
-
-
-
-
{'Other Tags'}
-
- {page_content.other_tags.map((t, i) => (
- {t}
- ))}
-
-
-
-
-
-
-
-
-
- {'chat'}
-
-
- >
- );
-}
-
-export default React.memo(ParticipantDetail);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/ViewParticipants/ParticipantDetail/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/ViewParticipants/ParticipantDetail/style.scss
deleted file mode 100644
index 2375d77..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/ViewParticipants/ParticipantDetail/style.scss
+++ /dev/null
@@ -1,49 +0,0 @@
-ion-chip {
- --background: #00213f;
- --color: #adefd1;
-}
-
-div.detail_table {
- margin: 0.25rem;
-
- border-radius: 0.5rem;
- border: 1px solid gray;
-
- .detail_row {
- border-bottom: 1px solid gray;
- display: flex;
- }
-
- .last_detail_row {
- border-bottom: unset;
- }
-
- .detail_cell {
- border-right: 1px solid gray;
- width: 33%;
- padding: 10px;
- display: flex;
- flex-direction: row;
- justify-content: center;
- align-items: center;
-
- ion-icon {
- margin-right: 0.5rem;
- }
- }
-
- .right_most_cell {
- border-right: unset;
- }
-
- .full_row {
- width: 100%;
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
-
- ion-icon {
- margin-right: 0.5rem;
- }
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/ViewParticipants/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/ViewParticipants/index.tsx
deleted file mode 100644
index 5480e0a..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/ViewParticipants/index.tsx
+++ /dev/null
@@ -1,91 +0,0 @@
-// REQ0080/party_participants
-
-import { IonBackButton, IonButton, IonButtons, IonContent, IonNavLink, IonTitle } from '@ionic/react';
-import { chevronBackOutline } from 'ionicons/icons';
-
-import { useEffect, useState } from 'react';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-import constants from '../../constants';
-import ParticipantDetail from './ParticipantDetail';
-import './style.scss';
-
-function ParticipantsPhoto({ participant }) {
- const [loading, setLoading] = useState(true);
- const [content, setContent] = useState({
- avatar_url: participant?.acatar_urls?.length > 0 ? participant?.acatar_urls[0] : constants.IONIC_DEFAULT_AVATAR,
- user_id: participant.user_id || 0,
- });
-
- useEffect(() => {
- if (participant.avatar_urls?.length > 0) {
- setContent({ ...content, avatar_url: participant.avatar_urls[0] });
- }
-
- console.log({ participant });
- setLoading(false);
- }, []);
-
- if (loading) return ;
-
- return (
- }>
-
-
- );
-}
-
-function ViewParticipants({ participants }) {
- return (
- <>
-
-
-
-
-
- {'View Participants'}
- {/*
-
-
-
-
-
- */}
-
-
-
-
-
- {participants.map((u, i) => (
-
- ))}
-
-
-
-
-
- {'Unlock'}
-
-
- >
- );
-}
-
-export default ViewParticipants;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/ViewParticipants/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/ViewParticipants/style.scss
deleted file mode 100644
index 3ae038e..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/ViewParticipants/style.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-.ion-padding {
- background-color: gold;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/chat/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/chat/index.tsx
deleted file mode 100644
index 5c9fe75..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/chat/index.tsx
+++ /dev/null
@@ -1,421 +0,0 @@
-import {
- CreateAnimation,
- IonActionSheet,
- IonBackButton,
- IonButton,
- IonButtons,
- IonCol,
- IonContent,
- IonFooter,
- IonGrid,
- IonIcon,
- IonRow,
- IonText,
- IonTextarea,
- IonThumbnail,
- IonTitle,
- IonToast,
- createGesture,
- useIonViewWillEnter,
-} from '@ionic/react';
-import {
- addOutline,
- alertOutline,
- callOutline,
- cameraOutline,
- chevronBackOutline,
- micOutline,
- send,
- shareOutline,
- starOutline,
- trashOutline,
- videocamOutline,
-} from 'ionicons/icons';
-import { useEffect, useRef, useState } from 'react';
-import { ChatStore, ContactStore } from '../../store';
-import { getNotificationCount, markAllAsRead, sendChatMessage, starChatMessage } from '../../store/ChatStore';
-import { getChat, getChats, getContact } from '../../store/Selectors';
-
-//
-import { useLongPress } from 'react-use';
-import { ChatBottomDetails } from '../../components/ChatBottomDetails';
-import { ChatRepliedQuote } from '../../components/ChatRepliedQuote';
-import ReplyTo from '../../components/ReplyTo';
-import { useCamera } from '../../hooks/useCamera';
-import { useGallery } from '../../hooks/useGallery';
-
-//
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import './style.scss';
-
-const ChatHelloworld = () => {
- // TODO: hardcoded for development purpose, should use `useParams()`
- // const params = useParams();
- const params = { contact_id: 1 };
- // Global State
- const chat = ChatStore.useState(getChat(params.contact_id));
-
- const chats = ChatStore.useState(getChats);
- const contact = ContactStore.useState(getContact(params.contact_id));
- const notificationCount = getNotificationCount(chats);
-
- const { takePhoto } = useCamera();
- const { prompt } = useGallery();
-
- // Local state
- const [message, setMessage] = useState('');
- const [showSendButton, setShowSendButton] = useState(false);
- const [replyToMessage, setReplyToMessage] = useState(false);
- const [messageSent, setMessageSent] = useState(false);
-
- const [showActionSheet, setShowActionSheet] = useState(false);
- const [actionMessage, setActionMessage] = useState(false);
-
- const [showToast, setShowToast] = useState(false);
- const [toastMessage, setToastMessage] = useState('');
-
- // Refs
- const contentRef = useRef();
- const swiperRefs = useRef([]);
- const textareaRef = useRef();
- const sideRef = useRef();
- const sendRef = useRef();
- const replyToAnimationRef = useRef();
-
- const actionSheetButtons = [
- {
- text: actionMessage && actionMessage.starred ? 'Unstar Message' : 'Star Message',
- icon: starOutline,
- handler: () => starChatMessage(params.contact_id, actionMessage.id),
- },
- actionMessage && actionMessage.received
- ? {
- text: 'Reply To Message',
- icon: shareOutline,
- handler: () => showReplyToMessage(actionMessage),
- }
- : {
- text: 'Unsend Message',
- icon: alertOutline,
- handler: () => toaster("I haven't implemented unsend :) Simple store update though"),
- },
- {
- text: 'Delete Message',
- icon: trashOutline,
- handler: () => toaster("I haven't implemented delete :) Simple store update though"),
- role: 'destructive',
- },
- ];
-
- useEffect(() => {
- !showActionSheet && setActionMessage(false);
- }, [showActionSheet]);
-
- // Scroll to end of content
- // Mark all chats as read if we come into a chat
- // Set up our swipe events for animations and gestures
- useIonViewWillEnter(() => {
- scrollToBottom();
- setupObserver();
- markAllAsRead(params.contact_id);
- setSwipeEvents();
- });
-
- // For displaying toast messages
- const toaster = message => {
- setToastMessage(message);
- setShowToast(true);
- };
-
- // Scroll to end of content
- const scrollToBottom = async () => {
- contentRef.current.scrollToBottom();
- };
-
- // Watch for DOM changes
- // Then scroll to bottom
- // This ensures that the new chat message has *actually* been rendered
- // Check this:
- // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
- const setupObserver = () => {
- // Mutation Observers watch for DOM changes
- // This will ensure that we scroll to bottom AFTER the new chat has rendered
- const observer = new MutationObserver(() => {
- scrollToBottom();
- });
-
- // We observe the ion-content (or containing element of chats)
- observer.observe(contentRef.current, {
- childList: true,
- });
- };
-
- // Long press callback
- const onLongPress = e => {
- const elementID = e.target.id;
- const chatMessageID = elementID.includes('chatText')
- ? parseInt(elementID.replace('chatText_', ''))
- : elementID.includes('chatTime')
- ? parseInt(elementID.replace('chatTime_', ''))
- : parseInt(elementID.replace('chatBubble_', ''));
-
- const chatMessage = chat.filter(message => parseInt(message.id) === parseInt(chatMessageID))[0];
-
- setActionMessage(chatMessage);
- setShowActionSheet(true);
- };
-
- const longPressEvent = useLongPress(onLongPress, {
- isPreventDefault: true,
- delay: 2000,
- });
-
- const showReplyToMessage = async message => {
- // Activate reply-to functionality
- setReplyToMessage(message);
- await replyToAnimationRef.current.animation.play();
- contentRef.current.scrollToBottom(300);
- };
-
- const checkBubble = async (bubble, message, event) => {
- if (event.deltaX >= 120) {
- // Activate reply-to functionality
- bubble.style.transform = 'none';
- showReplyToMessage(message);
- } else {
- // Put chat bubble back to original position
- bubble.style.transform = 'none';
- }
- };
-
- // Function to move a bubble with the deltaX swipe
- const moveBubble = (bubble, event) => {
- if (event.velocityX > 0) {
- bubble.style.transform = `translateX(${event.deltaX}px)`;
- }
- };
-
- const setSwipeEvents = () => {
- chat.forEach((message, index) => {
- if (!message.sent) {
- const chatBubble = swiperRefs.current[index];
-
- const swipeGesture = createGesture({
- el: chatBubble,
- onEnd: e => checkBubble(chatBubble, message, e),
- onMove: e => moveBubble(chatBubble, e),
- });
-
- swipeGesture.enable();
- }
- });
- };
-
- const widthAnimation = {
- property: 'width',
- fromValue: '110%',
- toValue: '100%',
- };
-
- const fadeAnimation = {
- property: 'opacity',
- fromValue: '100%',
- toValue: '0%',
- };
-
- const sideButtonsAnimation = {
- duration: 200,
- direction: showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [fadeAnimation],
- easing: 'ease-in-out',
- };
-
- const sendButtonAnimation = {
- duration: showSendButton ? 300 : 100,
- direction: !showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [fadeAnimation],
- easing: 'ease-in-out',
- };
-
- const textareaAnimation = {
- duration: 200,
- direction: !showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [widthAnimation],
- easing: 'ease-in-out',
- };
-
- // Set the state value when message val changes
- useEffect(() => {
- setShowSendButton(message !== '');
- }, [message]);
-
- // Play the animations when the state value changes
- useEffect(() => {
- textareaRef.current.animation.play();
- sideRef.current.animation.play();
- sendRef.current.animation.play();
- }, [showSendButton]);
-
- const sendMessage = (image = false, imagePath = false) => {
- if (message !== '' || image === true) {
- sendChatMessage(
- params.contact_id,
- message,
- replyToMessage,
- replyToMessage ? replyToMessage.id : false,
- image,
- imagePath,
- );
- setMessage('');
-
- setMessageSent(true);
- setTimeout(() => setMessageSent(false), 10);
- image && setTimeout(() => scrollToBottom(), 100);
- }
- };
-
- const handlePhoto = async () => {
- const returnedFilePath = await takePhoto();
- sendMessage(true, returnedFilePath);
- };
-
- const handlePrompt = async () => {
- const returnedFilePath = await prompt();
- sendMessage(true, returnedFilePath);
- };
-
- const replyToProps = {
- replyToAnimationRef,
- replyToMessage,
- setReplyToMessage,
- contact: contact.name,
- messageSent,
- };
-
- return (
- <>
-
-
-
- {/* 0 ? notificationCount : ''} /> */}
-
-
-
-
-
-
- {contact.name}
- last seen today at 22:10
-
-
-
-
-
- toaster("As this is a UI only, video calling wouldn't work here.")}>
-
-
-
- toaster("As this is a UI only, calling wouldn't work here.")}>
-
-
-
-
-
-
-
- {chat.map((message, index) => {
- const repliedMessage = chat.filter(subMessage => parseInt(subMessage.id) === parseInt(message.replyID))[0];
-
- return (
- (swiperRefs.current[index] = ref)}
- id={`chatBubble_${message.id}`}
- key={index}
- className={`chat-bubble ${message.sent ? 'bubble-sent' : 'bubble-received'}`}
- {...longPressEvent}
- >
-
-
-
- {message.preview}
- {message.image && message.imagePath &&
}
-
-
-
-
-
- );
- })}
-
- setShowActionSheet(false)}
- buttons={actionSheetButtons}
- />
-
- setShowToast(false)}
- message={toastMessage}
- position="bottom"
- duration="3000"
- />
-
-
- {replyToMessage && }
-
-
- >
- );
-};
-
-export default ChatHelloworld;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/chat/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/chat/style.scss
deleted file mode 100644
index 9e02ca9..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/chat/style.scss
+++ /dev/null
@@ -1,255 +0,0 @@
-//
-$chat-bubble-sent-color: #c6538c;
-$chat-bubble-received-color: #f7f7f7;
-
-.chat-page ion-header,
-.chat-page ion-toolbar {
- --min-height: 3.5rem;
-}
-
-.chat-page ion-title {
- margin-left: -3.5rem;
-}
-
-.chat-page ion-title p {
- padding: 0;
- margin: 0;
-}
-
-.chat-contact {
- display: flex;
- flex-direction: row;
- align-content: center;
- justify-content: center;
- align-items: center;
-
- img {
- //
- }
-
- .chat-contact-details {
- display: flex;
- flex-direction: column;
- margin-left: 0.5rem;
- text-align: left;
-
- ion-text {
- font-size: 0.9rem;
- font-weight: 400;
- }
-
- p {
- font-size: 0.9rem;
- }
- }
-}
-
-.chat-contact .chat-contact-details .chat-contact-details .chat-bubble {
- border-radius: 5px;
- margin-left: 1rem;
- margin-right: 1rem;
- margin-top: 0.8rem;
-
- padding: 0.5rem;
- max-width: 80%;
- clear: both;
-
- display: flex;
- flex-direction: row;
- transition: 0.2s all linear;
-}
-
-.chat-bubble:last-child {
- margin-bottom: 0.8rem;
-}
-
-.bubble-sent {
- background-color: var(--chat-bubble-sent-color);
- float: right;
-}
-
-.bubble-received {
- background-color: var(--chat-bubble-received-color);
- float: left;
-}
-
-.chat-bubble p {
- padding: 0;
- margin: 0;
-}
-
-.chat-footer {
- // background-color: rgb(22, 22, 22);
- border-top: 1px solid rgb(47, 47, 47);
- padding-top: 0.2rem;
- padding-bottom: 1rem;
-}
-
-.chat-footer ion-textarea {
- /* background-color: rgb(31, 31, 31); */
- background-color: rgba(32, 32, 32, 0.1);
- /* border: 1px solid rgb(36, 36, 36); */
- // color: white;
- border-radius: 25px;
- padding-left: 0.5rem;
- caret-color: var(--ion-color-primary);
-}
-
-.chat-footer ion-icon {
- font-size: 1.5rem;
- margin-top: 0.2rem;
-}
-
-.chat-input-container {
- width: 70%;
- margin-right: 0.75rem;
-}
-
-.chat-send-button {
- margin: 0 !important;
- padding: 0 !important;
- position: absolute;
- right: 17px;
- margin-top: -0.2rem !important;
-
- display: flex;
- flex-direction: row;
- align-content: center;
- align-items: center;
- justify-content: center;
-}
-
-.chat-send-button ion-icon {
- color: white;
- background-color: var(--ion-color-primary);
- font-size: 1.1rem;
- border-radius: 500px;
- padding: 0.5rem;
-}
-
-.chat-time {
- color: rgb(165, 165, 165);
- font-size: 0.75rem;
- right: 0;
- bottom: 0 !important;
- margin: 0;
- padding: 0;
- margin-top: 5px;
-}
-
-.bubble-arrow {
- position: absolute;
- float: left;
- left: 6px;
- margin-top: -8px;
- /* top: 0px; */
-}
-
-.bubble-arrow.alt {
- position: relative;
- bottom: 0px;
- left: auto;
- right: -3px;
- float: right;
-}
-
-.bubble-arrow:after {
- content: '';
- position: absolute;
- border-top: 15px solid var(--chat-bubble-received-color);
- border-left: 15px solid transparent;
- border-radius: 4px 0 0 0px;
- width: 0;
- height: 0;
-}
-
-.bubble-arrow.alt:after {
- border-top: 15px solid var(--chat-bubble-sent-color);
- transform: scaleX(-1);
-}
-
-.chat-reply-to-row {
- bottom: 70px !important;
- position: absolute;
-
- border-left: 4px solid rgb(224, 176, 18);
- width: 100%;
- background-color: rgb(22, 22, 22);
- border-top: 1px solid rgb(47, 47, 47);
- padding: 0.5rem;
- padding-bottom: 0.8rem;
-}
-
-.chat-reply-to-container {
- display: flex;
- flex-direction: column;
-}
-
-.chat-reply-to-name {
- color: rgb(224, 176, 18);
- font-weight: 500;
- margin-bottom: 0.5rem;
-}
-
-.chat-reply-to-message {
- font-size: 0.8rem;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.all-chats {
-}
-
-.chat-bottom-details {
- display: flex;
- flex-direction: row;
- width: 100%;
- align-content: center;
- align-items: center;
- justify-content: flex-end;
- margin-top: 0.4rem;
-}
-
-.chat-bottom-details ion-icon {
- font-size: 0.6rem;
- color: grey;
- margin-left: 0.5rem;
- margin-top: 0.05rem;
-}
-
-.chat-bottom-details span {
- margin: 0;
- padding: 0;
- font-size: 0.75rem;
- color: rgb(190, 190, 190);
-}
-
-.in-chat-reply-to-container {
- background-color: rgba(0, 0, 0, 0.2);
- border-left: 3px solid rgb(224, 176, 18);
- height: fit-content;
- padding: 0.5rem;
- border-radius: 5px;
- margin-bottom: 0.5rem;
-}
-
-.in-chat-reply-to-container h1 {
- margin: 0;
- padding: 0;
- color: rgb(224, 176, 18);
- font-size: 0.8rem;
-}
-
-.in-chat-reply-to-container p {
- color: rgb(167, 167, 167);
- font-size: 0.8rem;
-}
-
-.bottom-container {
- position: absolute;
- bottom: 4.5rem;
- height: 5rem;
- background-color: red;
- width: 100%;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/debug/StartupLoading/index.scss b/03_source/mobile_old.del/mobile_main/src/pages/debug/StartupLoading/index.scss
deleted file mode 100644
index da80d78..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/debug/StartupLoading/index.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-ion-content {
- --background: rgb(146, 16, 248);
- --color: white;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/debug/StartupLoading/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/debug/StartupLoading/index.tsx
deleted file mode 100644
index b6e9592..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/debug/StartupLoading/index.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-// REQ0032-start_up_loading
-
-import { IonContent, IonPage } from '@ionic/react';
-import React from 'react';
-import { RouteComponentProps } from 'react-router';
-import { connect } from '../../../data/connect';
-
-import './index.scss';
-
-interface OwnProps extends RouteComponentProps {}
-interface DispatchProps {}
-
-const StartupLoading: React.FC = () => {
- return (
- <>
-
-
-
- HK Single Party
-
-
-
- >
- );
-};
-
-export default connect({
- mapDispatchToProps: {},
- component: StartupLoading,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/debug/WelcomePage/index.scss b/03_source/mobile_old.del/mobile_main/src/pages/debug/WelcomePage/index.scss
deleted file mode 100644
index 8508945..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/debug/WelcomePage/index.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-ion-content {
- --background: white;
- --color: rgba(0, 0, 0, 0.9);
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/debug/WelcomePage/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/debug/WelcomePage/index.tsx
deleted file mode 100644
index de277fd..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/debug/WelcomePage/index.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-// REQ0032-start_up_loading
-
-import { IonButton, IonContent, IonPage, useIonRouter } from '@ionic/react';
-import React from 'react';
-import { RouteComponentProps, useHistory } from 'react-router';
-import { connect } from '../../../data/connect';
-import { useTranslation } from 'react-i18next';
-
-import './index.scss';
-
-interface OwnProps extends RouteComponentProps {}
-interface DispatchProps {}
-
-const StartupLoading: React.FC = () => {
- const history = useHistory();
- const { t, i18n } = useTranslation();
-
- return (
- <>
-
-
-
-
- Icon
-
-
-
- HK Single Party
-
-
{t('helloworld')}
-
Let's get together into your account
-
-
-
- Continue with Phone
-
-
{
- i18n.changeLanguage('en');
- }}
- >
- eng 1
-
-
{
- i18n.changeLanguage('zhHk');
- }}
- >
- chi 2
-
-
-
-
-
- >
- );
-};
-
-export default connect({
- mapDispatchToProps: {},
- component: StartupLoading,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/debug/helloworld/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/debug/helloworld/index.tsx
deleted file mode 100644
index 1ad252a..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/debug/helloworld/index.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { IonContent, IonPage, IonTabButton } from '@ionic/react';
-import React from 'react';
-import { RouteComponentProps } from 'react-router';
-import { connect } from '../../../data/connect';
-import { Link } from 'react-router-dom';
-
-interface OwnProps extends RouteComponentProps {}
-interface DispatchProps {}
-
-const Helloworld: React.FC = () => {
- return (
- <>
-
-
- Profile
-
-
- >
- );
-};
-
-export default connect({
- mapDispatchToProps: {},
- component: Helloworld,
-});
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/EventDetailAvatar/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/event_detail/EventDetailAvatar/index.tsx
deleted file mode 100644
index 09d5fb4..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/EventDetailAvatar/index.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-// REQ0041-home_discover_event_tab
-
-import React, { useState } from 'react';
-import {
- IonHeader,
- IonToolbar,
- IonContent,
- IonPage,
- IonButtons,
- IonMenuButton,
- IonButton,
- IonIcon,
- IonDatetime,
- IonSelectOption,
- IonList,
- IonItem,
- IonLabel,
- IonSelect,
- IonPopover,
- IonText,
- IonImg,
- IonCard,
- IonAvatar,
-} from '@ionic/react';
-
-import { bookmarkOutline, ellipsisHorizontal, ellipsisVertical, logoApple, logoIonic } from 'ionicons/icons';
-import AboutPopover from '../../../components/AboutPopover';
-import { format, parseISO } from 'date-fns';
-
-import './style.scss';
-
-interface AboutProps {}
-
-const EventDetailAvatar: React.FC = ({profile}) => {
- console.log({profile});
-
- return (
- <>
-
-
-
- >
- );
-};
-
-export default React.memo(EventDetailAvatar);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/EventDetailAvatar/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/event_detail/EventDetailAvatar/style.scss
deleted file mode 100644
index f25817f..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/EventDetailAvatar/style.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-.event-detail-avatar {
- margin-left: 0.2rem;
-}
-.user-going-text {
- margin-left: 0.2rem;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/getEventSummary.ts b/03_source/mobile_old.del/mobile_main/src/pages/event_detail/getEventSummary.ts
deleted file mode 100644
index 61c60de..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/getEventSummary.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { supabase } from '../../supabaseClient';
-
-function getEventSummary(party_event_id: string) {
- return supabase.from('view_party_event_summaries').select('*').filter('id', 'eq', party_event_id);
-}
-
-export default getEventSummary;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/event_detail/index.tsx
deleted file mode 100644
index 4df1813..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/index.tsx
+++ /dev/null
@@ -1,238 +0,0 @@
-// REQ0042/event-detail
-
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonCard,
- IonContent,
- IonFooter,
- IonIcon,
- IonText,
- IonTitle,
-} from '@ionic/react';
-import { format, parseISO } from 'date-fns';
-import { bookmarkOutline, chevronBackOutline, logoIonic } from 'ionicons/icons';
-import React, { useContext, useEffect, useState } from 'react';
-import './style.scss';
-
-import EventDetailAvatar from './EventDetailAvatar';
-
-import { useGetPartyEventDetail } from '../../hooks/useGetPartyEventDetail';
-import { supabase } from '../../supabaseClient';
-// useGetPartyEventDetail
-// import { useGetPartyEventDetail } from '../../hooks/useGetPartyEventDetail';
-import { useViewPartyEventParticipants } from '../../hooks/useViewPartyEventParticipants';
-
-import dayjs from 'dayjs';
-import duration from 'dayjs/plugin/duration';
-import relativeTime from 'dayjs/plugin/relativeTime';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-import { AppContext } from '../../data/AppContext';
-dayjs.extend(duration);
-dayjs.extend(relativeTime);
-
-interface AboutProps {
- party_event: any;
-}
-
-const EventDetail: React.FC = ({ party_event }) => {
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
- const { profile } = useContext(AppContext);
-
- const [page_content, setPageContent] = useState({});
- const [party_event_detail] = useGetPartyEventDetail({ party_event_id: party_event.id });
- // view_party_event_participants
- const [participants] = useViewPartyEventParticipants({ party_event_id: party_event.id, limit: 10 });
-
- const [is_loading, setIsLoading] = useState(false);
-
- const selectOptions = {
- header: 'Select a Location',
- };
-
- const presentPopover = (e: React.MouseEvent) => {
- setPopoverEvent(e.nativeEvent);
- setShowPopover(true);
- };
-
- function displayDate(date: string, dateFormat: string) {
- return format(parseISO(date), dateFormat);
- }
-
- function getEventSummary(party_event_id) {
- return supabase.from('view_party_event_summaries').select('*').filter('id', 'eq', party_event_id);
- }
-
- function viewEventParticipants(party_event_id, limit) {
- return supabase
- .from('view_party_event_participants')
- .select('*')
- .filter('pe_id', 'eq', party_event_id)
- .limit(limit);
- }
-
- useEffect(() => {
- Promise.all([
- //
- getEventSummary(party_event.id),
- viewEventParticipants(party_event.id, 3),
- ]).then(([{ data: event_summaries }, { data: party_participants }]) => {
- let event_summary = event_summaries[0];
- setPageContent({
- title: event_summary.title,
- num_m: event_summary.male_count,
- num_f: event_summary.female_count,
- age_min: 18,
- age_max: 48,
- event_date: '2019-01-25',
- event_duration_min: 90,
- // event_summary.event_duration_min,
- address: 'hello address',
- price_per_person: event_summary.price,
- currency: event_summary.currency,
- party_participants,
-
- // TODO: test below to replace when i review this two lines
- // show_party_participants: party_participants ? party_participants.length > 0 : false,
- // party_participants_going: party_participants ? party_participants.length - 3 : 0,
- show_party_participants: party_participants.length > 0,
- party_participants_going: party_participants.length - 3,
- });
-
- setIsLoading(false);
- });
- }, []);
-
- function handleJoinClick() {
- console.log({ profile });
-
- supabase
- .from('party_event_orders')
- .insert({
- user_id: profile.user_id,
- party_event_id: party_event.id,
- status: 2,
- remarks: 'test from ionic',
- })
- .then(() => {
- console.log('insert done');
- });
- console.log('Join clicked');
- }
-
- if (is_loading) return ;
-
- return (
- <>
-
-
-
-
-
- {'Event Detail'}
-
-
-
-
-
-
-
-
- {/* */}
-
- {/* page content */}
-
-
-
-
-
{dayjs(page_content.event_date).format('DD/MM/YYYY')}
-
{party_event.title}
-
-
-
- {page_content.show_party_participants ? (
- <>
- {page_content.party_participants.map(({ profile }, i) => (
-
- ))}
- {page_content.party_participants_going > 0 ? (
-
+{page_content.party_participants_going} Going
- ) : (
- <>>
- )}
- >
- ) : (
- <>>
- )}
-
-
- {'More'}
-
-
-
-
-
-
-
- {page_content.currency}
- {page_content.price_per_person} {'per person'}
-
-
-
-
-
-
- {page_content.event_duration_min / 60} {'hours'}
-
-
-
-
-
-
- {page_content.age_min}-{page_content.age_max} {'years old'}
-
-
-
-
-
-
{page_content.address}
-
-
-
-
-
{page_content.num_m + page_content.num_f}
-
-
{page_content.num_m}
-
-
{page_content.num_f}
-
-
-
-
-
-
- {/* REQ0077/flow-join-event */}
-
-
- {'Join'}
-
-
- >
- );
-};
-
-export default React.memo(EventDetail);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/profile_eng.png b/03_source/mobile_old.del/mobile_main/src/pages/event_detail/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/sample_party_image.avif b/03_source/mobile_old.del/mobile_main/src/pages/event_detail/sample_party_image.avif
deleted file mode 100644
index 661c2c1..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/sample_party_image.avif and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/event_detail/style.scss
deleted file mode 100644
index 7a1f760..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/event_detail/style.scss
+++ /dev/null
@@ -1,65 +0,0 @@
-#event-detail-page {
- .row {
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
- align-items: center;
- gap: 0.5rem;
- }
-
- .avatar-row {
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- align-items: center;
- }
-
- .user-avatar-list {
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
- align-items: center;
- }
-
- .event-properties-list {
- display: flex;
- flex-direction: column;
-
- .item {
- margin-top: 0.5rem;
-
- display: flex;
- flex-direction: row;
-
- div {
- margin-left: 0.5rem;
- }
- }
-
- .item-user-count {
- margin-top: 0.5rem;
-
- display: flex;
- flex-direction: row;
-
- ion-icon:nth-child(3) {
- margin-left: 1rem;
- }
-
- ion-icon:nth-child(5) {
- margin-left: 1rem;
- }
-
- div {
- margin-left: 0.5rem;
- }
- }
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/events/EventIonCard.tsx b/03_source/mobile_old.del/mobile_main/src/pages/events/EventIonCard.tsx
deleted file mode 100644
index a29800b..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/events/EventIonCard.tsx
+++ /dev/null
@@ -1,100 +0,0 @@
-// REQ0041-home_discover_event_tab
-
-import { IonButton, IonCard, IonCardContent, IonIcon, IonImg, IonNavLink } from '@ionic/react';
-import { bookmarkOutline, logoApple, logoIonic } from 'ionicons/icons';
-import React, { useEffect, useState } from 'react';
-import './style.scss';
-
-import Loading from '../../components/Loading';
-import EventDetail from '../event_detail';
-// url('/assets/img/about/austin.jpg');
-
-interface AboutProps {
- event_summary: any;
-}
-
-const EventIonCard: React.FC = ({ event_summary }) => {
- const [page_content, setPageContent] = useState(null);
-
- useEffect(() => {
- setPageContent({
- title: event_summary.title,
- price: event_summary.price,
- currency: 'HKD',
- NUM_M: event_summary.male_count,
- NUM_F: event_summary.female_count,
- image: '/assets/img/samples/party_image.png',
- });
-
- console.log({ party_event: event_summary });
- }, [event_summary]);
-
- if (!page_content) return ;
-
- return (
- <>
-
-
- {
- e.stopPropagation();
- }}
- >
-
-
-
-
}>
-
-
-
-
-
{page_content.title}
-
- {page_content.currency}
- {page_content.price}
-
-
-
-
-
-
-
{page_content.NUM_M + page_content.NUM_F}
-
-
-
-
{page_content.NUM_M}
-
-
-
-
{page_content.NUM_F}
-
-
-
-
-
-
- >
- );
-};
-
-export default React.memo(EventIonCard);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/events/PageOne.tsx b/03_source/mobile_old.del/mobile_main/src/pages/events/PageOne.tsx
deleted file mode 100644
index 05df72a..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/events/PageOne.tsx
+++ /dev/null
@@ -1,60 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { IonBackButton, IonButton, IonButtons, IonContent, IonIcon, IonItem, IonList, IonTitle } from '@ionic/react';
-import { chevronBackOutline, settingsSharp } from 'ionicons/icons';
-import React from 'react';
-import './style.scss';
-
-import EventIonCard from './EventIonCard';
-
-import { useListPartyEventSummaries } from '../../hooks/useListPartyEventSummaries';
-
-import dayjs from 'dayjs';
-import duration from 'dayjs/plugin/duration';
-import relativeTime from 'dayjs/plugin/relativeTime';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-dayjs.extend(duration);
-dayjs.extend(relativeTime);
-
-interface AboutProps {}
-
-const Events: React.FC = () => {
- // const { party_event_summaries } = useContext(AppContext);
- const [party_event_summaries] = useListPartyEventSummaries();
-
- // TODO: loading screen
- if (!party_event_summaries) return ;
- if (party_event_summaries && party_event_summaries.length === 0) return ;
-
- return (
- <>
-
-
-
-
-
- {'Discover events'}
-
-
-
-
-
-
-
-
-
-
- {party_event_summaries.map((event_summary, i) => (
-
-
-
- ))}
-
-
- >
- );
-};
-
-export default React.memo(Events);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/events/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/events/index.tsx
deleted file mode 100644
index 7302a46..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/events/index.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-// REQ0041/home_discover_event_tab
-
-import { IonContent, IonPage } from '@ionic/react';
-import React from 'react';
-import './style.scss';
-
-import PageOne from './PageOne';
-
-interface AboutProps {}
-
-const Events: React.FC = () => {
- return (
- <>
-
-
-
-
-
- >
- );
-};
-
-export default React.memo(Events);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/events/page-two.tsx b/03_source/mobile_old.del/mobile_main/src/pages/events/page-two.tsx
deleted file mode 100644
index d41cd1a..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/events/page-two.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import React from 'react';
-import { IonBackButton, IonButtons, IonHeader, IonContent, IonToolbar, IonTitle } from '@ionic/react';
-import { caretBack, chevronBackOutline } from 'ionicons/icons';
-
-function ShowEventDetail() {
- return (
- <>
- {/* */}
-
-
-
-
-
-
-
- {/* */}
-
- Page Two
- Use the back button to navigate to the previous page.
-
- {/* */}
- >
- );
-}
-
-export default ShowEventDetail;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/events/profile_eng.png b/03_source/mobile_old.del/mobile_main/src/pages/events/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/events/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/events/sample_party_image.avif b/03_source/mobile_old.del/mobile_main/src/pages/events/sample_party_image.avif
deleted file mode 100644
index 661c2c1..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/events/sample_party_image.avif and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/events/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/events/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/events/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/favourite_events/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/favourite_events/index.tsx
deleted file mode 100644
index c9140d5..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/favourite_events/index.tsx
+++ /dev/null
@@ -1,152 +0,0 @@
-// REQ0089-favorite-event-list
-
-import React, { useState } from 'react';
-import {
- IonHeader,
- IonToolbar,
- IonContent,
- IonPage,
- IonButtons,
- IonMenuButton,
- IonButton,
- IonIcon,
- IonDatetime,
- IonSelectOption,
- IonList,
- IonItem,
- IonLabel,
- IonSelect,
- IonPopover,
- IonText,
-} from '@ionic/react';
-import './style.scss';
-import { ellipsisHorizontal, ellipsisVertical } from 'ionicons/icons';
-import AboutPopover from '../../components/AboutPopover';
-import { format, parseISO } from 'date-fns';
-
-import ProfileEng from './profile_eng.png';
-
-interface AboutProps {}
-
-const FavouriteEvents: React.FC = () => {
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
- const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison');
- const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00');
-
- const selectOptions = {
- header: 'Select a Location',
- };
-
- const presentPopover = (e: React.MouseEvent) => {
- setPopoverEvent(e.nativeEvent);
- setShowPopover(true);
- };
-
- function displayDate(date: string, dateFormat: string) {
- return format(parseISO(date), dateFormat);
- }
-
- return (
- <>
-
-
- hello favourite
-
-
- >
- );
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* Instead of loading an image each time the select changes, use opacity to transition them */}
-
-
-
-
-
-
-
About
-
-
- The Ionic Conference is a one-day conference on {displayDate(conferenceDate, 'MMM dd, yyyy')} featuring
- talks from the Ionic team. It is focused on Ionic applications being built with Ionic Framework. This
- includes migrating apps to the latest version of the framework, Angular concepts, Webpack, Sass, and many
- other technologies used in Ionic 2. Tickets are completely sold out, and we’re expecting more than 1000
- developers – making this the largest Ionic conference ever!
-
-
-
Details
-
-
-
- setLocation(e.detail.value as any)}
- >
- Madison, WI
- Austin, TX
- Chicago, IL
- Seattle, WA
-
-
-
- Date
- {displayDate(conferenceDate, 'MMM dd, yyyy')}
-
- setConferenceDate(e.detail.value! as string)}
- presentation="date"
- >
-
-
-
-
-
Internet
-
-
-
- Wifi network
- ica{displayDate(conferenceDate, 'y')}
-
-
- Password
- makegoodthings
-
-
-
-
-
- setShowPopover(false)}>
- setShowPopover(false)} />
-
-
- );
-};
-
-export default React.memo(FavouriteEvents);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/favourite_events/profile_eng.png b/03_source/mobile_old.del/mobile_main/src/pages/favourite_events/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/favourite_events/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/favourite_events/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/favourite_events/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/favourite_events/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/helloworld/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/helloworld/index.tsx
deleted file mode 100644
index e288743..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/helloworld/index.tsx
+++ /dev/null
@@ -1,158 +0,0 @@
-// REQ0041-home_discover_event_tab
-
-import React, { useState } from 'react';
-import {
- IonHeader,
- IonToolbar,
- IonContent,
- IonPage,
- IonButtons,
- IonMenuButton,
- IonButton,
- IonIcon,
- IonDatetime,
- IonSelectOption,
- IonList,
- IonItem,
- IonLabel,
- IonSelect,
- IonPopover,
- IonText,
-} from '@ionic/react';
-import './style.scss';
-import { ellipsisHorizontal, ellipsisVertical } from 'ionicons/icons';
-import AboutPopover from '../../components/AboutPopover';
-import { format, parseISO } from 'date-fns';
-
-import ProfileEng from './profile_eng.png';
-
-interface AboutProps {}
-
-const Events: React.FC = () => {
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
- const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison');
- const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00');
-
- const selectOptions = {
- header: 'Select a Location',
- };
-
- const presentPopover = (e: React.MouseEvent) => {
- setPopoverEvent(e.nativeEvent);
- setShowPopover(true);
- };
-
- function displayDate(date: string, dateFormat: string) {
- return format(parseISO(date), dateFormat);
- }
-
- return (
- <>
-
-
-
-
-
- >
- );
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* Instead of loading an image each time the select changes, use opacity to transition them */}
-
-
-
-
-
-
-
About
-
-
- The Ionic Conference is a one-day conference on {displayDate(conferenceDate, 'MMM dd, yyyy')} featuring
- talks from the Ionic team. It is focused on Ionic applications being built with Ionic Framework. This
- includes migrating apps to the latest version of the framework, Angular concepts, Webpack, Sass, and many
- other technologies used in Ionic 2. Tickets are completely sold out, and we’re expecting more than 1000
- developers – making this the largest Ionic conference ever!
-
-
-
Details
-
-
-
- setLocation(e.detail.value as any)}
- >
- Madison, WI
- Austin, TX
- Chicago, IL
- Seattle, WA
-
-
-
- Date
- {displayDate(conferenceDate, 'MMM dd, yyyy')}
-
- setConferenceDate(e.detail.value! as string)}
- presentation="date"
- >
-
-
-
-
-
Internet
-
-
-
- Wifi network
- ica{displayDate(conferenceDate, 'y')}
-
-
- Password
- makegoodthings
-
-
-
-
-
- setShowPopover(false)}>
- setShowPopover(false)} />
-
-
- );
-};
-
-export default React.memo(Events);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/helloworld/profile_eng.png b/03_source/mobile_old.del/mobile_main/src/pages/helloworld/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/helloworld/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/helloworld/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/helloworld/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/helloworld/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/message/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/message/index.tsx
deleted file mode 100644
index e0f08e6..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/message/index.tsx
+++ /dev/null
@@ -1,408 +0,0 @@
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonCol,
- IonContent,
- IonFooter,
- IonGrid,
- IonHeader,
- IonIcon,
- IonPage,
- IonRow,
- IonText,
- IonTextarea,
- IonTitle,
- IonToolbar,
- CreateAnimation,
- createGesture,
- useIonViewWillEnter,
- IonActionSheet,
- IonToast,
-} from '@ionic/react';
-import {
- addOutline,
- alertOutline,
- callOutline,
- cameraOutline,
- micOutline,
- send,
- shareOutline,
- starOutline,
- trashOutline,
- videocamOutline,
-} from 'ionicons/icons';
-import { useRef } from 'react';
-import { useEffect, useState } from 'react';
-import { useParams } from 'react-router';
-//
-import { ChatStore, ContactStore } from '../../store';
-import { getNotificationCount, markAllAsRead, sendChatMessage, starChatMessage } from '../../store/ChatStore';
-import { getChat, getChats, getContact } from '../../store/Selectors';
-
-//
-import { useLongPress } from 'react-use';
-//
-import './Chat.css';
-import ReplyTo from '../../components/ReplyTo';
-import { ChatBottomDetails } from '../../components/ChatBottomDetails';
-import { ChatRepliedQuote } from '../../components/ChatRepliedQuote';
-import { useCamera } from '../../hooks/useCamera';
-import { useGallery } from '../../hooks/useGallery';
-
-const Chat = () => {
- // const params = useParams();
-
- // TODO: Fix this
- const params = { contact_id: 1 };
- // Global State
- const chat = ChatStore.useState(getChat(params.contact_id));
-
- const chats = ChatStore.useState(getChats);
- const contact = ContactStore.useState(getContact(params.contact_id));
- const notificationCount = getNotificationCount(chats);
-
- const { takePhoto } = useCamera();
- const { prompt } = useGallery();
-
- // Local state
- const [message, setMessage] = useState('');
- const [showSendButton, setShowSendButton] = useState(false);
- const [replyToMessage, setReplyToMessage] = useState(false);
- const [messageSent, setMessageSent] = useState(false);
-
- const [showActionSheet, setShowActionSheet] = useState(false);
- const [actionMessage, setActionMessage] = useState(false);
-
- const [showToast, setShowToast] = useState(false);
- const [toastMessage, setToastMessage] = useState('');
-
- // Refs
- const contentRef = useRef();
- const swiperRefs = useRef([]);
- const textareaRef = useRef();
- const sideRef = useRef();
- const sendRef = useRef();
- const replyToAnimationRef = useRef();
-
- const actionSheetButtons = [
- {
- text: actionMessage && actionMessage.starred ? 'Unstar Message' : 'Star Message',
- icon: starOutline,
- handler: () => starChatMessage(params.contact_id, actionMessage.id),
- },
- actionMessage && actionMessage.received
- ? {
- text: 'Reply To Message',
- icon: shareOutline,
- handler: () => showReplyToMessage(actionMessage),
- }
- : {
- text: 'Unsend Message',
- icon: alertOutline,
- handler: () => toaster("I haven't implemented unsend :) Simple store update though"),
- },
- {
- text: 'Delete Message',
- icon: trashOutline,
- handler: () => toaster("I haven't implemented delete :) Simple store update though"),
- role: 'destructive',
- },
- ];
-
- useEffect(() => {
- !showActionSheet && setActionMessage(false);
- }, [showActionSheet]);
-
- // Scroll to end of content
- // Mark all chats as read if we come into a chat
- // Set up our swipe events for animations and gestures
- useIonViewWillEnter(() => {
- scrollToBottom();
- setupObserver();
- markAllAsRead(params.contact_id);
- setSwipeEvents();
- });
-
- // For displaying toast messages
- const toaster = message => {
- setToastMessage(message);
- setShowToast(true);
- };
-
- // Scroll to end of content
- const scrollToBottom = async () => {
- contentRef.current.scrollToBottom();
- };
-
- // Watch for DOM changes
- // Then scroll to bottom
- // This ensures that the new chat message has *actually* been rendered
- // Check this:
- // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
- const setupObserver = () => {
- // Mutation Observers watch for DOM changes
- // This will ensure that we scroll to bottom AFTER the new chat has rendered
- const observer = new MutationObserver(() => {
- scrollToBottom();
- });
-
- // We observe the ion-content (or containing element of chats)
- observer.observe(contentRef.current, {
- childList: true,
- });
- };
-
- // Long press callback
- const onLongPress = e => {
- const elementID = e.target.id;
- const chatMessageID = elementID.includes('chatText')
- ? parseInt(elementID.replace('chatText_', ''))
- : elementID.includes('chatTime')
- ? parseInt(elementID.replace('chatTime_', ''))
- : parseInt(elementID.replace('chatBubble_', ''));
-
- const chatMessage = chat.filter(message => parseInt(message.id) === parseInt(chatMessageID))[0];
-
- setActionMessage(chatMessage);
- setShowActionSheet(true);
- };
-
- const longPressEvent = useLongPress(onLongPress, {
- isPreventDefault: true,
- delay: 2000,
- });
-
- const showReplyToMessage = async message => {
- // Activate reply-to functionality
- setReplyToMessage(message);
- await replyToAnimationRef.current.animation.play();
- contentRef.current.scrollToBottom(300);
- };
-
- const checkBubble = async (bubble, message, event) => {
- if (event.deltaX >= 120) {
- // Activate reply-to functionality
- bubble.style.transform = 'none';
- showReplyToMessage(message);
- } else {
- // Put chat bubble back to original position
- bubble.style.transform = 'none';
- }
- };
-
- // Function to move a bubble with the deltaX swipe
- const moveBubble = (bubble, event) => {
- if (event.velocityX > 0) {
- bubble.style.transform = `translateX(${event.deltaX}px)`;
- }
- };
-
- const setSwipeEvents = () => {
- chat.forEach((message, index) => {
- if (!message.sent) {
- const chatBubble = swiperRefs.current[index];
-
- const swipeGesture = createGesture({
- el: chatBubble,
- onEnd: e => checkBubble(chatBubble, message, e),
- onMove: e => moveBubble(chatBubble, e),
- });
-
- swipeGesture.enable();
- }
- });
- };
-
- const widthAnimation = {
- property: 'width',
- fromValue: '110%',
- toValue: '100%',
- };
-
- const fadeAnimation = {
- property: 'opacity',
- fromValue: '100%',
- toValue: '0%',
- };
-
- const sideButtonsAnimation = {
- duration: 200,
- direction: showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [fadeAnimation],
- easing: 'ease-in-out',
- };
-
- const sendButtonAnimation = {
- duration: showSendButton ? 300 : 100,
- direction: !showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [fadeAnimation],
- easing: 'ease-in-out',
- };
-
- const textareaAnimation = {
- duration: 200,
- direction: !showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [widthAnimation],
- easing: 'ease-in-out',
- };
-
- // Set the state value when message val changes
- useEffect(() => {
- setShowSendButton(message !== '');
- }, [message]);
-
- // Play the animations when the state value changes
- useEffect(() => {
- textareaRef.current.animation.play();
- sideRef.current.animation.play();
- sendRef.current.animation.play();
- }, [showSendButton]);
-
- const sendMessage = (image = false, imagePath = false) => {
- if (message !== '' || image === true) {
- sendChatMessage(
- params.contact_id,
- message,
- replyToMessage,
- replyToMessage ? replyToMessage.id : false,
- image,
- imagePath,
- );
- setMessage('');
-
- setMessageSent(true);
- setTimeout(() => setMessageSent(false), 10);
- image && setTimeout(() => scrollToBottom(), 100);
- }
- };
-
- const handlePhoto = async () => {
- const returnedFilePath = await takePhoto();
- sendMessage(true, returnedFilePath);
- };
-
- const handlePrompt = async () => {
- const returnedFilePath = await prompt();
- sendMessage(true, returnedFilePath);
- };
-
- const replyToProps = {
- replyToAnimationRef,
- replyToMessage,
- setReplyToMessage,
- contact: contact.name,
- messageSent,
- };
-
- return (
-
-
-
- 0 ? notificationCount : ''} />
-
-
-
-
-
{contact.name}
-
last seen today at 22:10
-
-
-
-
-
- toaster("As this is a UI only, video calling wouldn't work here.")}>
-
-
-
- toaster("As this is a UI only, calling wouldn't work here.")}>
-
-
-
-
-
-
-
- {chat.map((message, index) => {
- const repliedMessage = chat.filter(subMessage => parseInt(subMessage.id) === parseInt(message.replyID))[0];
-
- return (
- (swiperRefs.current[index] = ref)}
- id={`chatBubble_${message.id}`}
- key={index}
- className={`chat-bubble ${message.sent ? 'bubble-sent' : 'bubble-received'}`}
- {...longPressEvent}
- >
-
-
-
- {message.preview}
- {message.image && message.imagePath &&
}
-
-
-
-
-
- );
- })}
-
- setShowActionSheet(false)}
- buttons={actionSheetButtons}
- />
-
- setShowToast(false)}
- message={toastMessage}
- position="bottom"
- duration="3000"
- />
-
-
- {replyToMessage && }
-
-
-
- );
-};
-
-export default Chat;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/message/profile_eng.png b/03_source/mobile_old.del/mobile_main/src/pages/message/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/message/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/message/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/message/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/message/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/messages/Chat.css b/03_source/mobile_old.del/mobile_main/src/pages/messages/Chat.css
deleted file mode 100644
index 4dc7e8b..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/messages/Chat.css
+++ /dev/null
@@ -1,252 +0,0 @@
-.chat-page ion-header,
-.chat-page ion-toolbar {
- --min-height: 3.5rem;
-}
-
-.chat-page ion-title {
- margin-left: -3.5rem;
-}
-
-.chat-page ion-title p {
- padding: 0;
- margin: 0;
-}
-
-.chat-contact {
- display: flex;
- flex-direction: row;
- align-content: center;
- justify-content: center;
- align-items: center;
-}
-
-.chat-contact img {
- height: 2rem;
- width: 2rem;
- border-radius: 500px;
-}
-
-.chat-contact-details {
- display: flex;
- flex-direction: column;
- margin-left: 0.5rem;
- text-align: left;
-}
-
-.chat-contact-details p {
- font-size: 0.9rem;
-}
-
-.chat-contact-details ion-text {
- font-size: 0.7rem;
- font-weight: 400;
-}
-
-.chat-bubble {
- border-radius: 5px;
- margin-left: 1rem;
- margin-right: 1rem;
- margin-top: 0.8rem;
-
- padding: 0.5rem;
- max-width: 80%;
- clear: both;
-
- display: flex;
- flex-direction: row;
- transition: 0.2s all linear;
-}
-
-.chat-bubble:last-child {
- margin-bottom: 0.8rem;
-}
-
-.bubble-sent {
- background-color: var(--chat-bubble-sent-color);
- float: right;
-}
-
-.bubble-received {
- background-color: var(--chat-bubble-received-color);
- float: left;
-}
-
-.chat-bubble p {
- padding: 0;
- margin: 0;
-}
-
-.chat-footer {
- background-color: rgb(22, 22, 22);
- border-top: 1px solid rgb(47, 47, 47);
- padding-top: 0.2rem;
- padding-bottom: 1rem;
-}
-
-.chat-footer ion-textarea {
- background-color: rgb(31, 31, 31);
- border: 1px solid rgb(36, 36, 36);
- color: white;
- border-radius: 25px;
- padding-left: 0.5rem;
- caret-color: var(--ion-color-primary);
-}
-
-.chat-footer ion-icon {
- font-size: 1.5rem;
- margin-top: 0.2rem;
-}
-
-.chat-input-container {
- width: 70%;
- margin-right: 0.75rem;
-}
-
-.chat-send-button {
- margin: 0 !important;
- padding: 0 !important;
- position: absolute;
- right: 17px;
- margin-top: -0.2rem !important;
-
- display: flex;
- flex-direction: row;
- align-content: center;
- align-items: center;
- justify-content: center;
-}
-
-.chat-send-button ion-icon {
- color: white;
- background-color: var(--ion-color-primary);
- font-size: 1.1rem;
- border-radius: 500px;
- padding: 0.5rem;
-}
-
-.chat-time {
- color: rgb(165, 165, 165);
- font-size: 0.75rem;
- right: 0;
- bottom: 0 !important;
- margin: 0;
- padding: 0;
- margin-top: 5px;
-}
-
-.bubble-arrow {
- position: absolute;
- float: left;
- left: 6px;
- margin-top: -8px;
- /* top: 0px; */
-}
-
-.bubble-arrow.alt {
- position: relative;
- bottom: 0px;
- left: auto;
- right: -3px;
- float: right;
-}
-
-.bubble-arrow:after {
- content: '';
- position: absolute;
- border-top: 15px solid var(--chat-bubble-received-color);
- border-left: 15px solid transparent;
- border-radius: 4px 0 0 0px;
- width: 0;
- height: 0;
-}
-
-.bubble-arrow.alt:after {
- border-top: 15px solid var(--chat-bubble-sent-color);
- transform: scaleX(-1);
-}
-
-.chat-reply-to-row {
- bottom: 70px !important;
- position: absolute;
-
- border-left: 4px solid rgb(224, 176, 18);
- width: 100%;
- background-color: rgb(22, 22, 22);
- border-top: 1px solid rgb(47, 47, 47);
- padding: 0.5rem;
- padding-bottom: 0.8rem;
-}
-
-.chat-reply-to-container {
- display: flex;
- flex-direction: column;
-}
-
-.chat-reply-to-name {
- color: rgb(224, 176, 18);
- font-weight: 500;
- margin-bottom: 0.5rem;
-}
-
-.chat-reply-to-message {
- font-size: 0.8rem;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.all-chats {
-}
-
-.chat-bottom-details {
- display: flex;
- flex-direction: row;
- width: 100%;
- align-content: center;
- align-items: center;
- justify-content: flex-end;
- margin-top: 0.4rem;
-}
-
-.chat-bottom-details ion-icon {
- font-size: 0.6rem;
- color: grey;
- margin-left: 0.5rem;
- margin-top: 0.05rem;
-}
-
-.chat-bottom-details span {
- margin: 0;
- padding: 0;
- font-size: 0.75rem;
- color: rgb(190, 190, 190);
-}
-
-.in-chat-reply-to-container {
- background-color: rgba(0, 0, 0, 0.2);
- border-left: 3px solid rgb(224, 176, 18);
- height: fit-content;
- padding: 0.5rem;
- border-radius: 5px;
- margin-bottom: 0.5rem;
-}
-
-.in-chat-reply-to-container h1 {
- margin: 0;
- padding: 0;
- color: rgb(224, 176, 18);
- font-size: 0.8rem;
-}
-
-.in-chat-reply-to-container p {
- color: rgb(167, 167, 167);
- font-size: 0.8rem;
-}
-
-.bottom-container {
- position: absolute;
- bottom: 4.5rem;
- height: 5rem;
- background-color: red;
- width: 100%;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/messages/VisitorAvatar/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/messages/VisitorAvatar/index.tsx
deleted file mode 100644
index f1b3208..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/messages/VisitorAvatar/index.tsx
+++ /dev/null
@@ -1,70 +0,0 @@
-import { useEffect, useState } from 'react';
-import { useRef } from 'react';
-
-import {
- IonContent,
- IonHeader,
- IonPage,
- IonTitle,
- IonToolbar,
- IonSearchbar,
- IonButtons,
- IonButton,
- IonIcon,
- IonItem,
- IonModal,
- IonThumbnail,
-} from '@ionic/react';
-import { checkmarkDone, createOutline, logoApple, notificationsOutline, settingsSharp } from 'ionicons/icons';
-
-//
-import './style.scss';
-
-import { ChatStore, ContactStore } from '../../../store';
-import { getContacts, getChats } from '../../../store/Selectors';
-import ChatItem from '../../../components/ChatItem';
-import ContactModal from '../../../components/ContactModal';
-
-const VisitorAvatar = () => {
- const pageRef = useRef();
- const contacts = ContactStore.useState(getContacts);
- const latestChats = ChatStore.useState(getChats);
-
- const [results, setResults] = useState(latestChats);
- const [showContactModal, setShowContactModal] = useState(false);
-
- useEffect(() => {
- setResults(latestChats);
- }, [latestChats]);
-
- const search = e => {
- const searchTerm = e.target.value;
-
- if (searchTerm !== '') {
- const searchTermLower = searchTerm.toLowerCase();
-
- const newResults = latestChats.filter(chat =>
- contacts
- .filter(c => c.id === chat.contact_id)[0]
- .name.toLowerCase()
- .includes(searchTermLower),
- );
- setResults(newResults);
- } else {
- setResults(latestChats);
- }
- };
-
- return (
- <>
-
-
-
-
-
12:30
-
- >
- );
-};
-
-export default VisitorAvatar;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/messages/VisitorAvatar/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/messages/VisitorAvatar/style.scss
deleted file mode 100644
index 33a4cfe..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/messages/VisitorAvatar/style.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-.visitor-avatar {
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
-
- .time {
- padding-top: 1rem;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/messages/chat.tsx b/03_source/mobile_old.del/mobile_main/src/pages/messages/chat.tsx
deleted file mode 100644
index e0f08e6..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/messages/chat.tsx
+++ /dev/null
@@ -1,408 +0,0 @@
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonCol,
- IonContent,
- IonFooter,
- IonGrid,
- IonHeader,
- IonIcon,
- IonPage,
- IonRow,
- IonText,
- IonTextarea,
- IonTitle,
- IonToolbar,
- CreateAnimation,
- createGesture,
- useIonViewWillEnter,
- IonActionSheet,
- IonToast,
-} from '@ionic/react';
-import {
- addOutline,
- alertOutline,
- callOutline,
- cameraOutline,
- micOutline,
- send,
- shareOutline,
- starOutline,
- trashOutline,
- videocamOutline,
-} from 'ionicons/icons';
-import { useRef } from 'react';
-import { useEffect, useState } from 'react';
-import { useParams } from 'react-router';
-//
-import { ChatStore, ContactStore } from '../../store';
-import { getNotificationCount, markAllAsRead, sendChatMessage, starChatMessage } from '../../store/ChatStore';
-import { getChat, getChats, getContact } from '../../store/Selectors';
-
-//
-import { useLongPress } from 'react-use';
-//
-import './Chat.css';
-import ReplyTo from '../../components/ReplyTo';
-import { ChatBottomDetails } from '../../components/ChatBottomDetails';
-import { ChatRepliedQuote } from '../../components/ChatRepliedQuote';
-import { useCamera } from '../../hooks/useCamera';
-import { useGallery } from '../../hooks/useGallery';
-
-const Chat = () => {
- // const params = useParams();
-
- // TODO: Fix this
- const params = { contact_id: 1 };
- // Global State
- const chat = ChatStore.useState(getChat(params.contact_id));
-
- const chats = ChatStore.useState(getChats);
- const contact = ContactStore.useState(getContact(params.contact_id));
- const notificationCount = getNotificationCount(chats);
-
- const { takePhoto } = useCamera();
- const { prompt } = useGallery();
-
- // Local state
- const [message, setMessage] = useState('');
- const [showSendButton, setShowSendButton] = useState(false);
- const [replyToMessage, setReplyToMessage] = useState(false);
- const [messageSent, setMessageSent] = useState(false);
-
- const [showActionSheet, setShowActionSheet] = useState(false);
- const [actionMessage, setActionMessage] = useState(false);
-
- const [showToast, setShowToast] = useState(false);
- const [toastMessage, setToastMessage] = useState('');
-
- // Refs
- const contentRef = useRef();
- const swiperRefs = useRef([]);
- const textareaRef = useRef();
- const sideRef = useRef();
- const sendRef = useRef();
- const replyToAnimationRef = useRef();
-
- const actionSheetButtons = [
- {
- text: actionMessage && actionMessage.starred ? 'Unstar Message' : 'Star Message',
- icon: starOutline,
- handler: () => starChatMessage(params.contact_id, actionMessage.id),
- },
- actionMessage && actionMessage.received
- ? {
- text: 'Reply To Message',
- icon: shareOutline,
- handler: () => showReplyToMessage(actionMessage),
- }
- : {
- text: 'Unsend Message',
- icon: alertOutline,
- handler: () => toaster("I haven't implemented unsend :) Simple store update though"),
- },
- {
- text: 'Delete Message',
- icon: trashOutline,
- handler: () => toaster("I haven't implemented delete :) Simple store update though"),
- role: 'destructive',
- },
- ];
-
- useEffect(() => {
- !showActionSheet && setActionMessage(false);
- }, [showActionSheet]);
-
- // Scroll to end of content
- // Mark all chats as read if we come into a chat
- // Set up our swipe events for animations and gestures
- useIonViewWillEnter(() => {
- scrollToBottom();
- setupObserver();
- markAllAsRead(params.contact_id);
- setSwipeEvents();
- });
-
- // For displaying toast messages
- const toaster = message => {
- setToastMessage(message);
- setShowToast(true);
- };
-
- // Scroll to end of content
- const scrollToBottom = async () => {
- contentRef.current.scrollToBottom();
- };
-
- // Watch for DOM changes
- // Then scroll to bottom
- // This ensures that the new chat message has *actually* been rendered
- // Check this:
- // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
- const setupObserver = () => {
- // Mutation Observers watch for DOM changes
- // This will ensure that we scroll to bottom AFTER the new chat has rendered
- const observer = new MutationObserver(() => {
- scrollToBottom();
- });
-
- // We observe the ion-content (or containing element of chats)
- observer.observe(contentRef.current, {
- childList: true,
- });
- };
-
- // Long press callback
- const onLongPress = e => {
- const elementID = e.target.id;
- const chatMessageID = elementID.includes('chatText')
- ? parseInt(elementID.replace('chatText_', ''))
- : elementID.includes('chatTime')
- ? parseInt(elementID.replace('chatTime_', ''))
- : parseInt(elementID.replace('chatBubble_', ''));
-
- const chatMessage = chat.filter(message => parseInt(message.id) === parseInt(chatMessageID))[0];
-
- setActionMessage(chatMessage);
- setShowActionSheet(true);
- };
-
- const longPressEvent = useLongPress(onLongPress, {
- isPreventDefault: true,
- delay: 2000,
- });
-
- const showReplyToMessage = async message => {
- // Activate reply-to functionality
- setReplyToMessage(message);
- await replyToAnimationRef.current.animation.play();
- contentRef.current.scrollToBottom(300);
- };
-
- const checkBubble = async (bubble, message, event) => {
- if (event.deltaX >= 120) {
- // Activate reply-to functionality
- bubble.style.transform = 'none';
- showReplyToMessage(message);
- } else {
- // Put chat bubble back to original position
- bubble.style.transform = 'none';
- }
- };
-
- // Function to move a bubble with the deltaX swipe
- const moveBubble = (bubble, event) => {
- if (event.velocityX > 0) {
- bubble.style.transform = `translateX(${event.deltaX}px)`;
- }
- };
-
- const setSwipeEvents = () => {
- chat.forEach((message, index) => {
- if (!message.sent) {
- const chatBubble = swiperRefs.current[index];
-
- const swipeGesture = createGesture({
- el: chatBubble,
- onEnd: e => checkBubble(chatBubble, message, e),
- onMove: e => moveBubble(chatBubble, e),
- });
-
- swipeGesture.enable();
- }
- });
- };
-
- const widthAnimation = {
- property: 'width',
- fromValue: '110%',
- toValue: '100%',
- };
-
- const fadeAnimation = {
- property: 'opacity',
- fromValue: '100%',
- toValue: '0%',
- };
-
- const sideButtonsAnimation = {
- duration: 200,
- direction: showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [fadeAnimation],
- easing: 'ease-in-out',
- };
-
- const sendButtonAnimation = {
- duration: showSendButton ? 300 : 100,
- direction: !showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [fadeAnimation],
- easing: 'ease-in-out',
- };
-
- const textareaAnimation = {
- duration: 200,
- direction: !showSendButton ? 'normal' : 'reverse',
- iterations: '1',
- fromTo: [widthAnimation],
- easing: 'ease-in-out',
- };
-
- // Set the state value when message val changes
- useEffect(() => {
- setShowSendButton(message !== '');
- }, [message]);
-
- // Play the animations when the state value changes
- useEffect(() => {
- textareaRef.current.animation.play();
- sideRef.current.animation.play();
- sendRef.current.animation.play();
- }, [showSendButton]);
-
- const sendMessage = (image = false, imagePath = false) => {
- if (message !== '' || image === true) {
- sendChatMessage(
- params.contact_id,
- message,
- replyToMessage,
- replyToMessage ? replyToMessage.id : false,
- image,
- imagePath,
- );
- setMessage('');
-
- setMessageSent(true);
- setTimeout(() => setMessageSent(false), 10);
- image && setTimeout(() => scrollToBottom(), 100);
- }
- };
-
- const handlePhoto = async () => {
- const returnedFilePath = await takePhoto();
- sendMessage(true, returnedFilePath);
- };
-
- const handlePrompt = async () => {
- const returnedFilePath = await prompt();
- sendMessage(true, returnedFilePath);
- };
-
- const replyToProps = {
- replyToAnimationRef,
- replyToMessage,
- setReplyToMessage,
- contact: contact.name,
- messageSent,
- };
-
- return (
-
-
-
- 0 ? notificationCount : ''} />
-
-
-
-
-
{contact.name}
-
last seen today at 22:10
-
-
-
-
-
- toaster("As this is a UI only, video calling wouldn't work here.")}>
-
-
-
- toaster("As this is a UI only, calling wouldn't work here.")}>
-
-
-
-
-
-
-
- {chat.map((message, index) => {
- const repliedMessage = chat.filter(subMessage => parseInt(subMessage.id) === parseInt(message.replyID))[0];
-
- return (
- (swiperRefs.current[index] = ref)}
- id={`chatBubble_${message.id}`}
- key={index}
- className={`chat-bubble ${message.sent ? 'bubble-sent' : 'bubble-received'}`}
- {...longPressEvent}
- >
-
-
-
- {message.preview}
- {message.image && message.imagePath &&
}
-
-
-
-
-
- );
- })}
-
- setShowActionSheet(false)}
- buttons={actionSheetButtons}
- />
-
- setShowToast(false)}
- message={toastMessage}
- position="bottom"
- duration="3000"
- />
-
-
- {replyToMessage && }
-
-
-
- );
-};
-
-export default Chat;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/messages/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/messages/index.tsx
deleted file mode 100644
index 3ad100d..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/messages/index.tsx
+++ /dev/null
@@ -1,88 +0,0 @@
-import { useEffect, useState } from 'react';
-
-import { IonButton, IonContent, IonIcon, IonNavLink, IonPage, IonTitle } from '@ionic/react';
-import { logoApple, settingsOutline } from 'ionicons/icons';
-
-//
-import './style.scss';
-
-import ChatItem from '../../components/ChatItem';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import { ChatStore, ContactStore } from '../../store';
-import { getChats, getContacts } from '../../store/Selectors';
-import PageHelloworld from '../page-helloworld';
-import VisitorAvatar from './VisitorAvatar';
-
-const Messages = () => {
- // const pageRef = useRef();
- const contacts = ContactStore.useState(getContacts);
- const latestChats = ChatStore.useState(getChats);
-
- const [results, setResults] = useState(latestChats);
- const [showContactModal, setShowContactModal] = useState(false);
-
- useEffect(() => {
- setResults(latestChats);
- }, [latestChats]);
-
- const search = e => {
- const searchTerm = e.target.value;
-
- if (searchTerm !== '') {
- const searchTermLower = searchTerm.toLowerCase();
-
- const newResults = latestChats.filter(chat =>
- contacts
- .filter(c => c.id === chat.contact_id)[0]
- .name.toLowerCase()
- .includes(searchTermLower),
- );
- setResults(newResults);
- } else {
- setResults(latestChats);
- }
- };
-
- // return (
- //
- // {/* */}
- // helloworld message page
- //
- // );
-
- return (
-
-
-
- Chatting Room 1
- }>
-
-
-
-
-
-
- {/* */}
-
-
-
Visitor
-
- {[...Array(3)].map((_, i) => (
-
- ))}
-
-
-
- {results.map((chat, index) => {
- return ;
- })}
-
-
- );
-};
-
-export default Messages;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/messages/page-root.tsx b/03_source/mobile_old.del/mobile_main/src/pages/messages/page-root.tsx
deleted file mode 100644
index fd2e7c3..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/messages/page-root.tsx
+++ /dev/null
@@ -1,79 +0,0 @@
-import { useEffect, useState } from 'react';
-
-import { IonButton, IonContent, IonIcon, IonTitle } from '@ionic/react';
-import { logoApple, notificationsOutline } from 'ionicons/icons';
-
-//
-import './style.scss';
-
-import ChatItem from '../../components/ChatItem';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonPage from '../../components/HKPartyIonPage';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import { ChatStore, ContactStore } from '../../store';
-import { getChats, getContacts } from '../../store/Selectors';
-import VisitorAvatar from './VisitorAvatar';
-
-const ChatsPageRoot = () => {
- // const pageRef = useRef();
- const contacts = ContactStore.useState(getContacts);
- const latestChats = ChatStore.useState(getChats);
-
- const [results, setResults] = useState(latestChats);
- const [showContactModal, setShowContactModal] = useState(false);
-
- useEffect(() => {
- setResults(latestChats);
- }, [latestChats]);
-
- const search = e => {
- const searchTerm = e.target.value;
-
- if (searchTerm !== '') {
- const searchTermLower = searchTerm.toLowerCase();
-
- const newResults = latestChats.filter(chat =>
- contacts
- .filter(c => c.id === chat.contact_id)[0]
- .name.toLowerCase()
- .includes(searchTermLower),
- );
- setResults(newResults);
- } else {
- setResults(latestChats);
- }
- };
-
- return (
-
-
-
- Chatting Room 2
-
-
-
-
-
- {/* */}
-
-
-
Visitor
-
- {[...Array(3)].map((_, i) => (
-
- ))}
-
-
-
- {results.map((chat, index) => {
- return ;
- })}
-
-
- );
-};
-
-export default ChatsPageRoot;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/messages/profile_eng.png b/03_source/mobile_old.del/mobile_main/src/pages/messages/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/messages/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/messages/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/messages/style.scss
deleted file mode 100644
index 6934b9d..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/messages/style.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-#chats-page {
- .visitor-list {
- display: flex;
- flex-direction: row;
-
- overflow-x: scroll;
-
- .visitor-avatar:nth-child(n + 2) {
- margin-left: 1rem;
- }
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/near_by/NearByIonItem.tsx b/03_source/mobile_old.del/mobile_main/src/pages/near_by/NearByIonItem.tsx
deleted file mode 100644
index 8307c20..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/near_by/NearByIonItem.tsx
+++ /dev/null
@@ -1,127 +0,0 @@
-// REQ0047-order-page
-// REQ0044/near_by_page
-
-import { IonItem, IonThumbnail } from '@ionic/react';
-import { caretForwardOutline } from 'ionicons/icons';
-import React, { useEffect, useState } from 'react';
-import Loading from '../../components/Loading';
-import './style.scss';
-
-interface AboutProps {
- user_profile: any;
-}
-const getAge = (year: number): string => {
- const now = new Date();
- const then = new Date(year, 0, 1);
- const age = now.getFullYear() - then.getFullYear();
- const m = now.getMonth() - then.getMonth();
-
- if (m < 0 || (m === 0 && now.getDate() < then.getDate())) {
- return String(age - 1);
- }
-
- return String(age);
-};
-
-const deg2rad = (deg: number) => {
- return deg * (Math.PI / 180);
-};
-
-const getDistanceFromLatLonInKm = (lat1: number, lon1: number, lat2: number, lon2: number) => {
- const R = 6371; // Radius of the earth in km
- const dLat = deg2rad(lat2 - lat1); // deg2rad below
- const dLon = deg2rad(lon2 - lon1);
- const a =
- Math.sin(dLat / 2) * Math.sin(dLat / 2) +
- Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
-
- const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
- const d = R * c; // Distance in km
-
- return d;
-};
-
-const NearByIonItem: React.FC = ({ user_profile }) => {
- const [page_content, setPageContent] = useState({
- full_name: user_profile.full_name || '',
- year_of_birth: getAge(user_profile.year_of_birth) || '',
- distance_between: '',
- avatar_url: user_profile.avatar_urls[0] || 'https://ionicframework.com/docs/img/demos/thumbnail.svg',
- });
-
- useEffect(() => {
- console.log({ user_profile });
- // get lang log from string "(59.628687602265,-37.0533834722112)"
- const regex = /\((.*?),(.*?)\)/;
- const match = user_profile.current_pos.match(regex);
- if (match) {
- const lat = parseFloat(match[1]);
- const lon = parseFloat(match[2]);
-
- let temp = getDistanceFromLatLonInKm(lat, lon, 22.3961, 114.1092).toFixed(1);
- setPageContent({ ...page_content, distance_between: temp });
- } else {
- console.log('no lang/log found in db');
- }
- }, []);
-
- // check if user_profile is null
- if (!user_profile) return ;
-
- console.log({ user_profile });
-
- return (
- <>
-
-
-
-
-
-
-
-
-
- {page_content.full_name || ''} {page_content.year_of_birth}
-
-
- {user_profile.other_tags.map((o, i) => (
- <>
- {i > 0 && ', '}
- {o}
- >
- ))}
-
-
- {page_content.distance_between}
- km. {'Sai Kung'}
-
-
-
-
- >
- );
-};
-
-export default React.memo(NearByIonItem);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/near_by/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/near_by/index.tsx
deleted file mode 100644
index 6c61542..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/near_by/index.tsx
+++ /dev/null
@@ -1,61 +0,0 @@
-// REQ0044/near_by_page
-
-import { IonBackButton, IonButton, IonButtons, IonContent, IonIcon, IonList, IonPage, IonTitle } from '@ionic/react';
-import { chevronBackOutline, settingsSharp } from 'ionicons/icons';
-import React, { useContext } from 'react';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-import { AppContext } from '../../data/AppContext';
-import { useListOtherUserProfiles } from '../../hooks/useListOtherUserProfiles';
-import IsLoggedIn from '../../util/IsLoggedIn';
-import NearByIonItem from './NearByIonItem';
-import './style.scss';
-
-// import ProfileEng from './profile_eng.png';
-
-interface AboutProps {}
-
-const NearBy: React.FC = () => {
- //
- const { profile } = useContext(AppContext);
- //
- const [other_user_profiles] = useListOtherUserProfiles();
-
- // redirect if not logged in
- if (!IsLoggedIn(profile)) {
- window.history.replaceState({}, '', '/sblogin');
- }
-
- if (!other_user_profiles || other_user_profiles.length === 0) return ;
-
- return (
- <>
-
-
-
-
-
-
- {'My Nearby'}
-
-
-
-
-
-
-
-
-
-
- {other_user_profiles.map((up, i) => (
-
- ))}
-
-
-
- >
- );
-};
-
-export default React.memo(NearBy);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/near_by/profile_eng.png b/03_source/mobile_old.del/mobile_main/src/pages/near_by/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/near_by/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/near_by/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/near_by/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/near_by/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/EventDetailAvatar/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/EventDetailAvatar/index.tsx
deleted file mode 100644
index 61ec4cc..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/EventDetailAvatar/index.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-// REQ0041-home_discover_event_tab
-
-import { IonAvatar } from '@ionic/react';
-import React, { useEffect, useState } from 'react';
-
-import Loading from '../../../components/Loading';
-import './style.scss';
-
-interface AboutProps {
- profile: any;
-}
-
-function EventDetailAvatar({ profile }) {
- const [content, setContent] = useState(null);
-
- useEffect(() => {
- setContent({ avatar_url: profile?.avatar_urls?.length > 0 ? profile?.avatar_urls[0] : '' });
- }, []);
-
- if (!content) return ;
-
- return (
- <>
-
-
-
- >
- );
-}
-
-export default React.memo(EventDetailAvatar);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/EventDetailAvatar/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/EventDetailAvatar/style.scss
deleted file mode 100644
index f25817f..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/EventDetailAvatar/style.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-.event-detail-avatar {
- margin-left: 0.2rem;
-}
-.user-going-text {
- margin-left: 0.2rem;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/index.tsx
deleted file mode 100644
index 47ae78b..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/index.tsx
+++ /dev/null
@@ -1,182 +0,0 @@
-// REQ0042/event-detail
-
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonCard,
- IonContent,
- IonFooter,
- IonIcon,
- IonNavLink,
- IonText,
- IonTitle,
-} from '@ionic/react';
-import { chevronBackOutline, logoIonic } from 'ionicons/icons';
-import React, { useContext, useEffect, useState } from 'react';
-import './style.scss';
-
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-import { AppContext } from '../../data/AppContext';
-import { supabase } from '../../supabaseClient';
-import ViewParticipants from '../ViewParticipants';
-import getEventSummary from '../event_detail/getEventSummary';
-import EventDetailAvatar from './EventDetailAvatar';
-
-function OrderEventDetail({ event_detail }) {
- const { showBottomTabBar, setShowBottomTabBar } = useContext(AppContext);
- const [is_loading, setIsLoading] = useState(true);
- const [content, setContent] = useState(null);
- const [page_content, setPageContent] = useState(null);
-
- function viewEventParticipants(party_event_id, limit) {
- return supabase.from('view_party_event_participants').select('*').filter('pe_id', 'eq', party_event_id);
- }
-
- useEffect(() => {
- let { id: party_event_id } = event_detail;
-
- Promise.all([getEventSummary(party_event_id), viewEventParticipants(party_event_id, 3)]).then(
- ([{ data: event_summaries }, { data: party_participants }]) => {
- let event_summary = event_summaries[0];
-
- setPageContent({
- ...event_detail,
- currency: event_summary.currency,
- price_per_person: event_summary.price,
- age_min: 18,
- age_max: 48,
- event_date: '2019-01-25',
- event_duration_min: 90,
- num_m: event_summary.male_count,
- num_f: event_summary.female_count,
- party_participants,
- show_party_participants: party_participants ? party_participants.length > 0 : false,
- party_participants_going: party_participants ? party_participants.length - 3 : 0,
- });
-
- setIsLoading(false);
- },
- );
- }, []);
-
- if (is_loading) return ;
-
- if (!page_content) return ;
-
- return (
- <>
-
-
-
-
-
-
-
- {'Order event details'}
-
-
- {/* */}
-
-
-
-
-
-
-
-
- {page_content.event_date}
- {page_content.title}
-
-
-
- {page_content.show_party_participants ? (
- <>
- {page_content.party_participants.map((profile, i) =>
- i < 3 ?
: null,
- )}
- {page_content.party_participants_going > 0 ? (
-
- {' '}
- +{page_content.party_participants_going} {'Going'}
-
- ) : (
- <>>
- )}
- >
- ) : (
- <>>
- )}
-
-
- {/*
{
- console.log('click into view participants');
- return ;
- }}
- > */}
- }
- >
- {'More'}
-
-
-
-
-
-
-
- {page_content.currency}
- {page_content.price_per_person} {'per person'}
-
-
-
-
-
- {page_content.event_duration_min / 60} {'hours'}
-
-
-
-
-
- {page_content.age_min}-{page_content.age_max} {'years old'}
-
-
-
-
-
Room 1228, Luk hwu Estate, Hong Kong
-
-
-
-
-
{page_content.num_m + page_content.num_f}
-
-
{page_content.num_m}
-
-
{page_content.num_f}
-
-
-
-
-
-
- {'Pay Now'}
-
-
- >
- );
-}
-
-export default React.memo(OrderEventDetail);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/profile_eng.png b/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/sample_party_image.avif b/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/sample_party_image.avif
deleted file mode 100644
index 661c2c1..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/sample_party_image.avif and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/style.scss
deleted file mode 100644
index e9e3838..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/order_event_detail/style.scss
+++ /dev/null
@@ -1,63 +0,0 @@
-.row {
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
- align-items: center;
- gap: 0.5rem;
-}
-
-.avatar-row {
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- align-items: center;
-}
-
-.user-avatar-list {
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
- align-items: center;
-}
-
-.event-properties-list {
- display: flex;
- flex-direction: column;
-
- .item {
- margin-top: 0.5rem;
-
- display: flex;
- flex-direction: row;
-
- div {
- margin-left: 0.5rem;
- }
- }
-
- .item-user-count {
- margin-top: 0.5rem;
-
- display: flex;
- flex-direction: row;
-
- ion-icon:nth-child(3) {
- margin-left: 1rem;
- }
-
- ion-icon:nth-child(5) {
- margin-left: 1rem;
- }
-
- div {
- margin-left: 0.5rem;
- }
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/orders/OrderIonItem.tsx b/03_source/mobile_old.del/mobile_main/src/pages/orders/OrderIonItem.tsx
deleted file mode 100644
index 2be7315..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/orders/OrderIonItem.tsx
+++ /dev/null
@@ -1,92 +0,0 @@
-// REQ0047/order-page
-
-import { IonButton, IonItem, IonText, IonThumbnail } from '@ionic/react';
-import { caretForwardOutline } from 'ionicons/icons';
-import React, { useEffect, useState } from 'react';
-import Loading from '../../components/Loading';
-import './style.scss';
-
-interface AboutProps {}
-
-const OrderIonItem: React.FC = ({ event_detail }) => {
- let [is_loading, setIsLoading] = useState(true);
- let [contents, setContents] = useState(null);
-
- useEffect(() => {
- setContents({
- ...event_detail,
- order_time: event_detail.create_at.split('T')[0],
- last_payment_date: event_detail.last_payment_time.split('T')[0],
- renmaining_date: 50,
- });
- setIsLoading(false);
- }, []);
-
- if (is_loading) return ;
-
- if (!contents) return ;
-
- return (
- <>
-
-
- {/* */}
-
-
-
-
-
-
-
{contents.title}
-
-
-
- {'Number of participants:'}
- {contents.participant_count}
-
-
-
- {'Order time:'}
- {contents.order_time}
-
-
-
- {'Last payment date:'}
- {contents.last_payment_date}
-
-
-
- {'Remaining dates:'}
- {contents.renmaining_date}
-
-
-
-
- {contents.status ? 'Pending' : 'Paid'}
-
-
-
-
- {/* */}
-
-
- >
- );
-};
-
-export default React.memo(OrderIonItem);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/orders/UserOrdersListPage.tsx b/03_source/mobile_old.del/mobile_main/src/pages/orders/UserOrdersListPage.tsx
deleted file mode 100644
index 2a16980..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/orders/UserOrdersListPage.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-// REQ0047/order-page
-
-import { IonNavLink } from '@ionic/react';
-import { useContext, useEffect, useState } from 'react';
-
-import Loading from '../../components/Loading';
-import { AppContext } from '../../data/AppContext';
-import { useListPartyEventOrderSummary } from '../../hooks/useListPartyEventOrderSummary';
-import IsLoggedIn from '../../util/IsLoggedIn';
-import OrderEventDetail from '../order_event_detail';
-import OrderIonItem from './OrderIonItem';
-
-function UserOrdersListPage() {
- const [is_loading, setIsLoading] = useState(true);
- const { profile } = useContext(AppContext);
-
- const [party_event_orders] = useListPartyEventOrderSummary({ user_id: '1' });
-
- useEffect(() => {
- console.log({ party_event_orders });
- setIsLoading(false);
- }, []);
-
- // redirect if not logged in
- if (!IsLoggedIn(profile)) {
- window.history.replaceState({}, '', '/sblogin');
- }
-
- if (is_loading) return ;
-
- // consider if party_event_orders is null during loading
- if (!party_event_orders) return ;
-
- return (
- <>
- {party_event_orders.map((event_detail, i) => (
- }
- >
-
-
- ))}
- >
- );
-}
-
-export default UserOrdersListPage;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/orders/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/orders/index.tsx
deleted file mode 100644
index a6388ac..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/orders/index.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-// REQ0047/order-page
-
-import { IonBackButton, IonButton, IonButtons, IonContent, IonIcon, IonPage, IonTitle } from '@ionic/react';
-import { chevronBackOutline, ellipsisHorizontal, ellipsisVertical } from 'ionicons/icons';
-import React from 'react';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import './style.scss';
-
-interface AboutProps {}
-
-const Orders: React.FC = () => {
- return (
- <>
-
-
-
-
-
-
- {'My Orders'}
-
-
-
-
-
-
-
-
-
- {/* */}
- helloworld orders ?
-
-
- >
- );
-};
-
-export default React.memo(Orders);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/orders/page-two.tsx b/03_source/mobile_old.del/mobile_main/src/pages/orders/page-two.tsx
deleted file mode 100644
index 2d14165..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/orders/page-two.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import React from 'react';
-import { IonBackButton, IonButtons, IonHeader, IonContent, IonToolbar, IonTitle } from '@ionic/react';
-import { caretBack, chevronBackOutline } from 'ionicons/icons';
-
-function PageTwo() {
- return (
- <>
- {/* */}
-
-
-
-
-
-
-
- {/* */}
-
- Page Two
- Use the back button to navigate to the previous page.
-
- {/* */}
- >
- );
-}
-
-export default PageTwo;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/orders/profile_eng.png b/03_source/mobile_old.del/mobile_main/src/pages/orders/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/orders/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/orders/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/orders/style.scss
deleted file mode 100644
index 0c30c4f..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/orders/style.scss
+++ /dev/null
@@ -1,2 +0,0 @@
-#orders-page {
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/page-chat/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/page-chat/index.tsx
deleted file mode 100644
index b4f502e..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/page-chat/index.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { IonBackButton, IonButtons, IonContent, IonText, IonTitle } from '@ionic/react';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import { chevronBackOutline } from 'ionicons/icons';
-
-const PageHelloworld = () => {
- return (
- <>
-
-
-
-
-
- Helloworld
-
-
-
- PageHelloworld
-
- >
- );
-};
-
-export default PageHelloworld;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/page-helloworld/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/page-helloworld/index.tsx
deleted file mode 100644
index b4f502e..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/page-helloworld/index.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { IonBackButton, IonButtons, IonContent, IonText, IonTitle } from '@ionic/react';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import { chevronBackOutline } from 'ionicons/icons';
-
-const PageHelloworld = () => {
- return (
- <>
-
-
-
-
-
- Helloworld
-
-
-
- PageHelloworld
-
- >
- );
-};
-
-export default PageHelloworld;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/Contactus/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/profile/Contactus/index.tsx
deleted file mode 100644
index 07e3187..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/Contactus/index.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-import React, { useState } from 'react';
-import {
- IonBackButton,
- IonButtons,
- IonHeader,
- IonContent,
- IonToolbar,
- IonTitle,
- IonTextarea,
- IonButton,
-} from '@ionic/react';
-import { chevronBackOutline } from 'ionicons/icons';
-import HKPartyIonHeader from '../../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../../components/HKPartyIonToolbar';
-
-import './style.scss';
-
-interface AboutProps {}
-
-const ContactUsPage: React.FC = () => {
- return (
- <>
-
-
-
-
-
- {'Contact us'}
-
-
- {/* */}
-
-
-
{'What assistance do you need?'}
-
-
-
-
{'Add attachments'}
-
-
-
-
-
- {'Send'}
-
-
-
- {/* */}
-
- >
- );
-};
-
-export default ContactUsPage;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/Contactus/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/profile/Contactus/style.scss
deleted file mode 100644
index 75a111d..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/Contactus/style.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-.contact-us-page {
- .image-place-holder {
- width: calc(100vw / 3);
- height: calc(100vw / 3);
- background-color: gold;
- border-radius: 1rem;
- }
-
- .row {
- background-color: gold;
-
- display: flex;
- flex-direction: row;
- gap: 1rem;
- justify-content: center;
- margin: 1rem;
- background-color: unset;
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/DeleteAccount/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/profile/DeleteAccount/index.tsx
deleted file mode 100644
index a666130..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/DeleteAccount/index.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import React from 'react';
-import {
- IonBackButton,
- IonButtons,
- IonHeader,
- IonContent,
- IonToolbar,
- IonTitle,
- IonTextarea,
- IonButton,
-} from '@ionic/react';
-
-function ContactUsPage() {
- return (
- <>
-
-
-
-
-
- Contact us
-
-
-
-
-
What assistance do you need?
-
-
-
-
Add attachments
-
-
-
- {/* */}
-
-
- Send
-
-
-
- >
- );
-}
-
-export default ContactUsPage;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/Language/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/profile/Language/index.tsx
deleted file mode 100644
index a666130..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/Language/index.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import React from 'react';
-import {
- IonBackButton,
- IonButtons,
- IonHeader,
- IonContent,
- IonToolbar,
- IonTitle,
- IonTextarea,
- IonButton,
-} from '@ionic/react';
-
-function ContactUsPage() {
- return (
- <>
-
-
-
-
-
- Contact us
-
-
-
-
-
What assistance do you need?
-
-
-
-
Add attachments
-
-
-
- {/* */}
-
-
- Send
-
-
-
- >
- );
-}
-
-export default ContactUsPage;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/PageRoot.tsx b/03_source/mobile_old.del/mobile_main/src/pages/profile/PageRoot.tsx
deleted file mode 100644
index 26c6256..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/PageRoot.tsx
+++ /dev/null
@@ -1,193 +0,0 @@
-// REQ0053/Profile-page
-
-import {
- IonButton,
- IonCardSubtitle,
- IonCardTitle,
- IonContent,
- IonIcon,
- IonNavLink,
- IonPopover,
- IonThumbnail,
- IonTitle,
-} from '@ionic/react';
-import { checkmarkCircleOutline, logoApple, settingsOutline } from 'ionicons/icons';
-import React, { useContext, useEffect, useState } from 'react';
-import AboutPopover from '../../components/AboutPopover';
-import './style.scss';
-
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-import { AppContext } from '../../data/AppContext';
-import IsLoggedIn from '../../util/IsLoggedIn';
-import PageSetting from './page-setting';
-
-interface AboutProps {}
-
-const PageRoot: React.FC = () => {
- const [is_loading, setIsLoading] = useState(true);
- const { profile } = useContext(AppContext);
-
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
-
- const [page_content, setPageContent] = useState({});
-
- useEffect(() => {
- setPageContent({
- full_name: profile?.full_name || '',
- user_verified: false,
- user_vip: false,
- });
-
- setIsLoading(false);
- }, []);
-
- // consider content is loading
- if (is_loading) return ;
-
- // consider if profile is null, then redirect to login
- if (!IsLoggedIn(profile)) {
- window.history.replaceState({}, '', '/sblogin');
- console.log('login info not found');
- return <>>;
- }
-
- return (
- <>
-
-
- {'My Profile'}
- }>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {page_content.full_name}
- {page_content.user_verified ? <>verified> : <>>}
- {page_content.user_vip ? <>VIP> : <>>}
-
-
-
- {'Edit'}
-
-
- {/* */}
-
-
-
-
-
-
-
- {'MemberShip'}
- 7 {'of the exclusive privileges'}
-
-
-
{
- window.location.href = '/unlock-membership';
- }}
- >
- {'Unlock'}
-
-
-
-
-
Privileges Unlocked
-
-
-
-
Unlock participant list
-
-
-
-
-
-
Exclusive vip logo
-
-
-
-
-
-
-
Tips of message read
-
-
-
-
-
-
Voice and images transmission
-
-
-
-
-
-
Pinned to the top of nearby list
-
-
-
-
-
-
-
-
- setShowPopover(false)}>
- setShowPopover(false)} />
-
- >
- );
-};
-
-export default React.memo(PageRoot);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/Privacy/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/profile/Privacy/index.tsx
deleted file mode 100644
index 2a823bb..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/Privacy/index.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import { useEffect, useState } from 'react';
-
-import Markdown from 'react-markdown';
-
-import { IonBackButton, IonButtons, IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/react';
-import Loading from '../../../components/Loading';
-
-function Privacy() {
- let [terms_temp, setTermsTemp] = useState({ terms: '' });
- const markdown = '# Hi, *Pluto*!';
-
- useEffect(() => {
- fetch('/assets/data/Terms.en.md')
- .then(res => res.text())
- .then(text => {
- setTermsTemp({ terms: text });
- });
- }, []);
-
- if (!terms_temp.terms || terms_temp.terms === '') {
- return ;
- }
-
- return (
- <>
- {/* */}
-
-
-
-
-
- Privacy
-
-
- {/* */}
-
- {terms_temp.terms}
-
- {/* */}
- >
- );
-}
-
-export default Privacy;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/ServiceAgreement/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/profile/ServiceAgreement/index.tsx
deleted file mode 100644
index 7bacc42..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/ServiceAgreement/index.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import { IonBackButton, IonButtons, IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/react';
-import { useEffect, useState } from 'react';
-import Markdown from 'react-markdown';
-import Loading from '../../../components/Loading';
-
-function ServiceAgreement() {
- let [terms_temp, setTermsTemp] = useState({ terms: '' });
- const markdown = '# Hi, *Pluto*!';
-
- useEffect(() => {
- fetch('/assets/data/S_A.en.md')
- .then(res => res.text())
- .then(text => {
- setTermsTemp({ terms: text });
- });
- }, []);
-
- if (!terms_temp.terms || terms_temp.terms === '') {
- return ;
- }
-
- return (
- <>
- {/* */}
-
-
-
-
-
- 服務協議及社區規範
-
-
- {/* */}
-
- {terms_temp.terms}
-
- {/* */}
- >
- );
-}
-
-export default ServiceAgreement;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/Share/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/profile/Share/index.tsx
deleted file mode 100644
index a666130..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/Share/index.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import React from 'react';
-import {
- IonBackButton,
- IonButtons,
- IonHeader,
- IonContent,
- IonToolbar,
- IonTitle,
- IonTextarea,
- IonButton,
-} from '@ionic/react';
-
-function ContactUsPage() {
- return (
- <>
-
-
-
-
-
- Contact us
-
-
-
-
-
What assistance do you need?
-
-
-
-
Add attachments
-
-
-
- {/* */}
-
-
- Send
-
-
-
- >
- );
-}
-
-export default ContactUsPage;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/profile/index.tsx
deleted file mode 100644
index 602c3f9..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/index.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-// REQ0053/Profile-page
-
-import { IonContent, IonPage } from '@ionic/react';
-import React from 'react';
-import './style.scss';
-
-import PageRoot from './PageRoot';
-
-interface AboutProps {}
-
-const Profile: React.FC = () => {
- return (
- <>
-
-
-
-
-
- >
- );
-};
-
-export default React.memo(Profile);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/page-setting/ChangeLanguageModal/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/profile/page-setting/ChangeLanguageModal/index.tsx
deleted file mode 100644
index a28bb5e..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/page-setting/ChangeLanguageModal/index.tsx
+++ /dev/null
@@ -1,87 +0,0 @@
-import React, { useEffect, useRef, useState } from 'react';
-import {
- IonBackButton,
- IonButtons,
- IonHeader,
- IonContent,
- IonToolbar,
- IonTitle,
- IonNavLink,
- IonButton,
- IonList,
- IonItem,
- IonLabel,
- IonIcon,
- IonModal,
- useIonModal,
- IonPage,
- IonInput,
-} from '@ionic/react';
-import {
- alertCircle,
- caretBack,
- chatbubbles,
- chevronBackOutline,
- earth,
- headsetOutline,
- idCard,
- language,
- languageOutline,
- newspaper,
- shareSocial,
- trash,
-} from 'ionicons/icons';
-import PageThree from '../page-three';
-
-import ContactUsPage from '../Contactus';
-import LanguagePage from '../Language';
-import PrivacyPage from '../Privacy';
-import ServiceAgreementPage from '../ServiceAgreement';
-import SharePage from '../Share';
-import DeleteAccountPage from '../DeleteAccount';
-
-import './style.scss';
-import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
-import { OverlayEventDetail } from '@ionic/react/dist/types/components/react-component-lib/interfaces';
-
-const ChangeLanguageModal = ({
- dismiss,
-}: {
- dismiss: (data?: string | null | undefined | number, role?: string) => void;
-}) => {
- const inputRef = useRef(null);
- return (
- <>
-
-
Language
-
-
- dismiss(inputRef.current?.value, 'confirm')}
- fill="outline"
- shape="round"
- size="large"
- >
- English
-
- dismiss(inputRef.current?.value, 'confirm')}
- fill="outline"
- shape="round"
- size="large"
- >
- 中文
-
-
-
-
-
- Change
-
-
-
- >
- );
-};
-
-export default ChangeLanguageModal;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/page-setting/ChangeLanguageModal/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/profile/page-setting/ChangeLanguageModal/style.scss
deleted file mode 100644
index cc447c0..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/page-setting/ChangeLanguageModal/style.scss
+++ /dev/null
@@ -1,69 +0,0 @@
-.change-language-modal-block {
- width: 100%;
- height: 400px;
-
- position: relative;
-
- //
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- //
-
- .title {
- font-weight: bold;
- font-size: 1.2rem;
- padding-top: 1rem;
- }
-
- .subtitle {
- font-size: 0.9rem;
- font-weight: 300;
- padding-top: 1rem;
- }
-
- .button-row {
- display: flex;
- flex-direction: row;
- width: 100%;
- justify-content: center;
- align-items: center;
-
- ion-button {
- width: 45%;
- }
- }
-
- .button-column {
- display: flex;
- flex-direction: column;
-
- width: 100%;
-
- padding: 1rem 2rem;
-
- ion-button {
- padding-top: 1rem;
- }
- }
-}
-
-ion-modal {
- --height: auto;
-}
-
-.modal-wrapper {
- position: fixed;
- bottom: 0px;
-}
-
-.apple {
- position: fixed;
- bottom: 0px;
-}
-
-ion-modal::part(content) {
- position: fixed;
- bottom: 0;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/page-setting/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/profile/page-setting/index.tsx
deleted file mode 100644
index e25ab6f..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/page-setting/index.tsx
+++ /dev/null
@@ -1,161 +0,0 @@
-import {
- IonBackButton,
- IonButton,
- IonButtons,
- IonContent,
- IonIcon,
- IonItem,
- IonLabel,
- IonList,
- IonNavLink,
- IonTitle,
- useIonModal,
-} from '@ionic/react';
-import {
- alertCircle,
- chatbubbles,
- chevronBackOutline,
- earth,
- idCard,
- newspaper,
- shareSocial,
- trash,
-} from 'ionicons/icons';
-import { useRef, useState } from 'react';
-
-import ContactUsPage from '../Contactus';
-import Privacy from '../Privacy';
-
-import { OverlayEventDetail } from '@ionic/react/dist/types/components/react-component-lib/interfaces';
-import HKPartyIonHeader from '../../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../../components/HKPartyIonToolbar';
-import ServiceAgreement from '../ServiceAgreement';
-import ChangeLanguageModal from './ChangeLanguageModal';
-import './style.scss';
-
-const DeleteTheAccountModal = ({
- dismiss,
-}: {
- dismiss: (data?: string | null | undefined | number, role?: string) => void;
-}) => {
- const inputRef = useRef(null);
- return (
- <>
-
-
-
-
-
Delete the Account
-
You cannot re-register after deleting your account
-
-
- Confirm
-
- dismiss(inputRef.current?.value, 'confirm')}
- fill="outline"
- shape="round"
- size="large"
- >
- Cancel
-
-
-
- >
- );
-};
-
-function PageSetting() {
- const [delete_the_account_modal_present, delete_the_account_modal_dismiss] = useIonModal(DeleteTheAccountModal, {
- dismiss: (data: string, role: string) => delete_the_account_modal_dismiss(data, role),
- });
- const [message, setMessage] = useState('This modal example uses the modalController to present and dismiss modals.');
-
- function openDeleteTheAccountModal() {
- delete_the_account_modal_present({
- onWillDismiss: (ev: CustomEvent) => {
- if (ev.detail.role === 'confirm') {
- setMessage(`Hello, ${ev.detail.data}!`);
- }
- },
- });
- }
-
- const [change_language_modal_present, change_language_modal_dismiss] = useIonModal(ChangeLanguageModal, {
- dismiss: (data: string, role: string) => change_language_modal_dismiss(data, role),
- });
-
- function openChangeLanguageModal() {
- change_language_modal_present({
- onWillDismiss: (ev: CustomEvent) => {
- if (ev.detail.role === 'confirm') {
- setMessage(`Hello, ${ev.detail.data}!`);
- }
- },
- });
- }
-
- return (
- <>
-
-
-
-
-
- {'Settings'}
-
-
- {/* */}
-
-
- }>
-
-
- {'Contact us'}
-
-
-
- openChangeLanguageModal()}>
-
- {'Language'}
-
-
- }>
-
-
- {'Privacy'}
-
-
-
- }>
-
-
- {'Service agreement'}
-
-
-
-
-
- {'Share'}
-
-
- openDeleteTheAccountModal()}>
-
- {'Delete Account'}
-
-
-
- {/* */}
-
- {/* */}
-
- {/* */}
- >
- );
-}
-
-export default PageSetting;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/page-setting/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/profile/page-setting/style.scss
deleted file mode 100644
index 1a337fe..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/page-setting/style.scss
+++ /dev/null
@@ -1,57 +0,0 @@
-.block {
- width: 100%;
- height: 400px;
-
- position: relative;
-
- //
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- //
-
- .title {
- font-weight: bold;
- font-size: 1.2rem;
- padding-top: 1rem;
- }
-
- .subtitle {
- font-size: 0.9rem;
- font-weight: 300;
- padding-top: 1rem;
- }
-
- .button-column {
- display: flex;
- flex-direction: column;
-
- width: 100%;
-
- padding: 1rem 2rem;
-
- ion-button {
- padding-top: 1rem;
- }
- }
-}
-
-ion-modal {
- --height: auto;
-}
-
-.modal-wrapper {
- position: fixed;
- bottom: 0px;
-}
-
-.apple {
- position: fixed;
- bottom: 0px;
-}
-
-ion-modal::part(content) {
- position: fixed;
- bottom: 0;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/page-three.tsx b/03_source/mobile_old.del/mobile_main/src/pages/profile/page-three.tsx
deleted file mode 100644
index 5cbb9e4..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/page-three.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import { IonBackButton, IonButtons, IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/react';
-
-function PageThree() {
- return (
- <>
-
-
-
-
-
- Page Three
-
-
-
- Page Three
-
- >
- );
-}
-
-export default PageThree;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/page-two.tsx b/03_source/mobile_old.del/mobile_main/src/pages/profile/page-two.tsx
deleted file mode 100644
index 2d14165..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/page-two.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import React from 'react';
-import { IonBackButton, IonButtons, IonHeader, IonContent, IonToolbar, IonTitle } from '@ionic/react';
-import { caretBack, chevronBackOutline } from 'ionicons/icons';
-
-function PageTwo() {
- return (
- <>
- {/* */}
-
-
-
-
-
-
-
- {/* */}
-
- Page Two
- Use the back button to navigate to the previous page.
-
- {/* */}
- >
- );
-}
-
-export default PageTwo;
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/profile_eng.png b/03_source/mobile_old.del/mobile_main/src/pages/profile/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/profile/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/profile/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/profile/style.scss
deleted file mode 100644
index 64af671..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/profile/style.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-#my-profile-page {
- background-color: white;
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
-
-.row {
- margin: 1rem 0rem;
- display: flex;
- flex-direction: row;
- justify-content: space-between;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/user_profile/NearByIonItem.tsx b/03_source/mobile_old.del/mobile_main/src/pages/user_profile/NearByIonItem.tsx
deleted file mode 100644
index b859114..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/user_profile/NearByIonItem.tsx
+++ /dev/null
@@ -1,180 +0,0 @@
-// REQ0047-order-page
-
-import React, { useState } from 'react';
-import {
- IonHeader,
- IonToolbar,
- IonContent,
- IonPage,
- IonButtons,
- IonMenuButton,
- IonButton,
- IonIcon,
- IonDatetime,
- IonSelectOption,
- IonList,
- IonItem,
- IonLabel,
- IonSelect,
- IonPopover,
- IonText,
- IonTitle,
- IonThumbnail,
-} from '@ionic/react';
-import './style.scss';
-import { caretForwardOutline, ellipsisHorizontal, ellipsisVertical } from 'ionicons/icons';
-import AboutPopover from '../../components/AboutPopover';
-import { format, parseISO } from 'date-fns';
-
-import ProfileEng from './profile_eng.png';
-
-interface AboutProps {}
-
-const NearByIonItem: React.FC = () => {
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
- const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison');
- const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00');
-
- const selectOptions = {
- header: 'Select a Location',
- };
-
- const presentPopover = (e: React.MouseEvent) => {
- setPopoverEvent(e.nativeEvent);
- setShowPopover(true);
- };
-
- function displayDate(date: string, dateFormat: string) {
- return format(parseISO(date), dateFormat);
- }
-
- return (
- <>
-
-
-
-
-
-
-
-
-
John 20
-
Fishing, basketball, piano
-
40 km. Sai Kung
-
-
-
- >
- );
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* Instead of loading an image each time the select changes, use opacity to transition them */}
-
-
-
-
-
-
-
About
-
-
- The Ionic Conference is a one-day conference on {displayDate(conferenceDate, 'MMM dd, yyyy')} featuring
- talks from the Ionic team. It is focused on Ionic applications being built with Ionic Framework. This
- includes migrating apps to the latest version of the framework, Angular concepts, Webpack, Sass, and many
- other technologies used in Ionic 2. Tickets are completely sold out, and we’re expecting more than 1000
- developers – making this the largest Ionic conference ever!
-
-
-
Details
-
-
-
- setLocation(e.detail.value as any)}
- >
- Madison, WI
- Austin, TX
- Chicago, IL
- Seattle, WA
-
-
-
- Date
- {displayDate(conferenceDate, 'MMM dd, yyyy')}
-
- setConferenceDate(e.detail.value! as string)}
- presentation="date"
- >
-
-
-
-
-
Internet
-
-
-
- Wifi network
- ica{displayDate(conferenceDate, 'y')}
-
-
- Password
- makegoodthings
-
-
-
-
-
- setShowPopover(false)}>
- setShowPopover(false)} />
-
-
- );
-};
-
-export default React.memo(NearByIonItem);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/user_profile/index.tsx b/03_source/mobile_old.del/mobile_main/src/pages/user_profile/index.tsx
deleted file mode 100644
index 88656bb..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/user_profile/index.tsx
+++ /dev/null
@@ -1,117 +0,0 @@
-// REQ0043/profile_detail
-
-import {
- IonButton,
- IonButtons,
- IonContent,
- IonFooter,
- IonIcon,
- IonPage,
- IonPopover,
- IonText,
- IonTitle,
-} from '@ionic/react';
-import { chevronBackOutline, ellipsisHorizontal, ellipsisVertical } from 'ionicons/icons';
-import React, { useEffect, useState } from 'react';
-import AboutPopover from '../../components/AboutPopover';
-import './style.scss';
-
-// import ProfileEng from './profile_eng.png';
-import { useGetUserProfileById } from '../../hooks/useGetUserProfileById';
-
-import _ from 'lodash';
-import HKPartyIonHeader from '../../components/HKPartyIonHeader';
-import HKPartyIonToolbar from '../../components/HKPartyIonToolbar';
-import Loading from '../../components/Loading';
-
-interface AboutProps {
- match: { params: { user_id: any } };
-}
-
-const UserProfile: React.FC = props => {
- let {
- match: {
- params: { user_id },
- },
- } = props;
- const [user_profile] = useGetUserProfileById({ user_id });
- const [page_content, setPageContent] = useState({});
-
- const [showPopover, setShowPopover] = useState(false);
- const [popoverEvent, setPopoverEvent] = useState();
- const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison');
- const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00');
-
- const presentPopover = (e: React.MouseEvent) => {
- setPopoverEvent(e.nativeEvent);
- setShowPopover(true);
- };
-
- useEffect(() => {
- if (!_.isEmpty(user_profile)) {
- console.log(user_profile);
- setPageContent({ ...user_profile, avatar_url: user_profile.avatar_urls[0] });
- }
- }, [user_profile]);
-
- if (_.isEmpty(page_content)) return ;
-
- return (
- <>
-
-
-
-
-
- history.back()} icon={chevronBackOutline}>
-
-
- {'Near by Profiles'}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {page_content.about_user}
-
-
{page_content.gender == 1 ? 'Male' : 'Female'}
-
{page_content.height_cm} cm
-
{page_content.weight_kg} kg
-
{page_content.career}
-
{page_content.spoken_language}
-
{page_content.education}
-
-
-
-
-
-
- {'Chat'}
-
-
-
- setShowPopover(false)}>
- setShowPopover(false)} />
-
-
- >
- );
-};
-
-export default React.memo(UserProfile);
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/user_profile/profile_eng.png b/03_source/mobile_old.del/mobile_main/src/pages/user_profile/profile_eng.png
deleted file mode 100644
index 14aedfd..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/user_profile/profile_eng.png and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/user_profile/sample_user_profile_pic.avif b/03_source/mobile_old.del/mobile_main/src/pages/user_profile/sample_user_profile_pic.avif
deleted file mode 100644
index 1ee563e..0000000
Binary files a/03_source/mobile_old.del/mobile_main/src/pages/user_profile/sample_user_profile_pic.avif and /dev/null differ
diff --git a/03_source/mobile_old.del/mobile_main/src/pages/user_profile/style.scss b/03_source/mobile_old.del/mobile_main/src/pages/user_profile/style.scss
deleted file mode 100644
index 5fae6e3..0000000
--- a/03_source/mobile_old.del/mobile_main/src/pages/user_profile/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-#about-page {
- ion-toolbar {
- position: absolute;
-
- top: 0;
- left: 0;
- right: 0;
-
- --background: transparent;
- --color: white;
- }
-
- ion-toolbar ion-back-button,
- ion-toolbar ion-button,
- ion-toolbar ion-menu-button {
- --color: white;
- }
-
- .about-header {
- position: relative;
-
- width: 100%;
- height: 30%;
- }
-
- .about-header .about-image {
- position: absolute;
-
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
-
- background-position: center;
- background-size: cover;
- background-repeat: no-repeat;
-
- opacity: 0;
-
- transition: opacity 500ms ease-in-out;
- }
-
- .about-header .madison {
- background-image: url('/assets/img/about/madison.jpg');
- }
-
- .about-header .austin {
- background-image: url('/assets/img/about/austin.jpg');
- }
-
- .about-header .chicago {
- background-image: url('/assets/img/about/chicago.jpg');
- }
-
- .about-header .seattle {
- background-image: url('/assets/img/about/seattle.jpg');
- }
-
- .about-info {
- position: relative;
- margin-top: -10px;
- border-radius: 10px;
- background: var(--ion-background-color, #fff);
- z-index: 2; // display rounded border above header image
- }
-
- .about-info h3 {
- margin-top: 0;
- }
-
- .about-info ion-list {
- padding-top: 0;
- }
-
- .about-info p {
- line-height: 130%;
-
- color: var(--ion-color-dark);
- }
-
- .about-info ion-icon {
- margin-inline-end: 32px;
- }
-
- /*
- * iOS Only
- */
-
- .ios .about-info {
- --ion-padding: 19px;
- }
-
- .ios .about-info h3 {
- font-weight: 700;
- }
-}
-
-#date-input-popover {
- --offset-y: -var(--ion-safe-area-bottom);
-
- --max-width: 90%;
- --width: 336px;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/react-app-env.d.ts b/03_source/mobile_old.del/mobile_main/src/react-app-env.d.ts
deleted file mode 100644
index 6431bc5..0000000
--- a/03_source/mobile_old.del/mobile_main/src/react-app-env.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-///
diff --git a/03_source/mobile_old.del/mobile_main/src/serviceWorker.ts b/03_source/mobile_old.del/mobile_main/src/serviceWorker.ts
deleted file mode 100644
index b27f047..0000000
--- a/03_source/mobile_old.del/mobile_main/src/serviceWorker.ts
+++ /dev/null
@@ -1,133 +0,0 @@
-// This optional code is used to register a service worker.
-// register() is not called by default.
-
-// This lets the app load faster on subsequent visits in production, and gives
-// it offline capabilities. However, it also means that developers (and users)
-// will only see deployed updates on subsequent visits to a page, after all the
-// existing tabs open on the page have been closed, since previously cached
-// resources are updated in the background.
-
-// To learn more about the benefits of this model and instructions on how to
-// opt-in, read https://bit.ly/CRA-PWA
-
-const isLocalhost = Boolean(
- window.location.hostname === 'localhost' ||
- // [::1] is the IPv6 localhost address.
- window.location.hostname === '[::1]' ||
- // 127.0.0.1/8 is considered localhost for IPv4.
- window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),
-);
-
-type Config = {
- onSuccess?: (registration: ServiceWorkerRegistration) => void;
- onUpdate?: (registration: ServiceWorkerRegistration) => void;
-};
-
-export function register(config?: Config) {
- if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
- // The URL constructor is available in all browsers that support SW.
- const publicUrl = new URL((process as { env: { [key: string]: string } }).env.PUBLIC_URL, window.location.href);
- if (publicUrl.origin !== window.location.origin) {
- // Our service worker won't work if PUBLIC_URL is on a different origin
- // from what our page is served on. This might happen if a CDN is used to
- // serve assets; see https://github.com/facebook/create-react-app/issues/2374
- return;
- }
-
- window.addEventListener('load', () => {
- const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
-
- if (isLocalhost) {
- // This is running on localhost. Let's check if a service worker still exists or not.
- checkValidServiceWorker(swUrl, config);
-
- // Add some additional logging to localhost, pointing developers to the
- // service worker/PWA documentation.
- navigator.serviceWorker.ready.then(() => {
- console.log(
- 'This web app is being served cache-first by a service ' +
- 'worker. To learn more, visit https://bit.ly/CRA-PWA',
- );
- });
- } else {
- // Is not localhost. Just register service worker
- registerValidSW(swUrl, config);
- }
- });
- }
-}
-
-function registerValidSW(swUrl: string, config?: Config) {
- navigator.serviceWorker
- .register(swUrl)
- .then(registration => {
- registration.onupdatefound = () => {
- const installingWorker = registration.installing;
- if (installingWorker == null) {
- return;
- }
- installingWorker.onstatechange = () => {
- if (installingWorker.state === 'installed') {
- if (navigator.serviceWorker.controller) {
- // At this point, the updated precached content has been fetched,
- // but the previous service worker will still serve the older
- // content until all client tabs are closed.
- console.log(
- 'New content is available and will be used when all ' +
- 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',
- );
-
- // Execute callback
- if (config && config.onUpdate) {
- config.onUpdate(registration);
- }
- } else {
- // At this point, everything has been precached.
- // It's the perfect time to display a
- // "Content is cached for offline use." message.
- console.log('Content is cached for offline use.');
-
- // Execute callback
- if (config && config.onSuccess) {
- config.onSuccess(registration);
- }
- }
- }
- };
- };
- })
- .catch(error => {
- console.error('Error during service worker registration:', error);
- });
-}
-
-function checkValidServiceWorker(swUrl: string, config?: Config) {
- // Check if the service worker can be found. If it can't reload the page.
- fetch(swUrl)
- .then(response => {
- // Ensure service worker exists, and that we really are getting a JS file.
- const contentType = response.headers.get('content-type');
- if (response.status === 404 || (contentType != null && contentType.indexOf('javascript') === -1)) {
- // No service worker found. Probably a different app. Reload the page.
- navigator.serviceWorker.ready.then(registration => {
- registration.unregister().then(() => {
- window.location.reload();
- });
- });
- } else {
- // Service worker found. Proceed as normal.
- registerValidSW(swUrl, config);
- }
- })
- .catch(() => {
- console.log('No internet connection found. App is running in offline mode.');
- });
-}
-
-export function unregister() {
- if ('serviceWorker' in navigator) {
- navigator.serviceWorker.ready.then(registration => {
- registration.unregister();
- });
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/store/ChatStore.js b/03_source/mobile_old.del/mobile_main/src/store/ChatStore.js
deleted file mode 100644
index feaf22b..0000000
--- a/03_source/mobile_old.del/mobile_main/src/store/ChatStore.js
+++ /dev/null
@@ -1,373 +0,0 @@
-import { Store } from 'pullstate';
-
-const ChatStore = new Store({
- chats: [
- {
- id: 1,
- contact_id: 1,
- chats: [
- {
- id: 1,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 2,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 3,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 4,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 5,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 6,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 7,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 8,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 9,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 10,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 11,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 12,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 13,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: true,
- sent: false,
- date: '20:05',
- read: false,
- starred: false,
- },
- {
- id: 14,
- preview: 'This is a test whatsapp message inside the whatsapp clone app',
- received: false,
- sent: true,
- date: '20:10',
- read: false,
- starred: false,
- },
- ],
- },
- {
- id: 2,
- contact_id: 2,
- chats: [
- {
- id: 1,
- preview: "Excited for the Ioniconf 2021! The 23rd can't come quick enough",
- received: false,
- sent: true,
- date: 'Yesterday',
- read: true,
- starred: false,
- },
- ],
- },
- {
- id: 3,
- contact_id: 3,
- chats: [
- {
- id: 1,
- preview: "Excited for the Ioniconf 2021! The 23rd can't come quick enough",
- received: false,
- sent: true,
- date: 'Saturday',
- read: true,
- starred: false,
- },
- ],
- },
- {
- id: 4,
- contact_id: 4,
- chats: [
- {
- id: 1,
- preview: 'Hey Alan, this is a test whatsapp message',
- received: true,
- sent: false,
- date: 'Friday',
- read: false,
- starred: false,
- },
- ],
- },
- {
- id: 5,
- contact_id: 5,
- chats: [
- {
- id: 1,
- preview: 'Hey Alan, this is a test whatsapp message',
- received: true,
- sent: false,
- date: 'Thursday',
- read: false,
- starred: false,
- },
- ],
- },
- {
- id: 6,
- contact_id: 6,
- chats: [
- {
- id: 1,
- preview: 'Hey Alan, this is a test received whatsapp message',
- received: true,
- sent: false,
- date: 'Wednesday',
- read: false,
- starred: false,
- },
- {
- id: 2,
- preview: 'Hey Josh, this is a test sent whatsapp message',
- received: true,
- sent: true,
- date: 'Wednesday',
- read: true,
- starred: false,
- },
- {
- id: 3,
- preview: 'Awesome man! This seems to be coming together OK!',
- received: true,
- sent: false,
- date: 'Wednesday',
- read: true,
- starred: false,
- },
- ],
- },
- {
- id: 7,
- contact_id: 7,
- chats: [
- {
- id: 1,
- preview: 'Goodluck on the quest to space, the moon and mars!',
- received: true,
- sent: false,
- date: '08/06/2021',
- read: true,
- starred: false,
- },
- ],
- },
- {
- id: 8,
- contact_id: 8,
- chats: [
- {
- id: 1,
- preview: 'Hey Bill, This is a test sent message to your whatsapp',
- received: true,
- sent: false,
- date: '05/06/2021',
- read: true,
- starred: false,
- },
- ],
- },
- {
- id: 9,
- contact_id: 10,
- chats: [
- {
- id: 1,
- preview:
- 'This is Alans WhatsApp clone using the Ionic Framework and CapacitorJS for some native functionality.',
- received: true,
- sent: false,
- date: 'Wednesday',
- read: false,
- starred: false,
- },
- {
- id: 2,
- preview:
- "Yep, and don't forget the Ionic Animations for the slick UI transitions you see, and some Ionic Gestures for sliding etc, as well as some other things!",
- received: true,
- sent: true,
- date: 'Wednesday',
- read: true,
- starred: false,
- },
- {
- id: 3,
- preview: 'Cool! It looks good, can we get another teaser?',
- received: true,
- sent: false,
- date: 'Wednesday',
- read: true,
- starred: false,
- },
- {
- id: 4,
- preview: "Sure... I'll post one on Twitter now!",
- received: false,
- sent: true,
- date: 'Wednesday',
- read: true,
- starred: false,
- },
- ],
- },
- ],
-});
-
-export const getNotificationCount = allChats => {
- let notificationCount = 0;
-
- allChats.forEach(chats => {
- chats.chats.forEach(chat => {
- if (!chat.read) {
- notificationCount++;
- }
- });
- });
-
- return notificationCount;
-};
-
-export const markAllAsRead = contactId => {
- ChatStore.update(s => {
- const chatIndex = s.chats.findIndex(chat => chat.contact_id === parseInt(contactId));
-
- s.chats[chatIndex].chats.forEach(chat => {
- chat.read = true;
- });
- });
-};
-
-export const sendChatMessage = (
- contactId,
- message,
- reply = false,
- replyID = false,
- image = false,
- imagePath = false,
-) => {
- const today = new Date();
- const currentTime = `${today.getHours() < 10 ? `0${today.getHours()}` : today.getHours()}:${
- today.getMinutes() < 10 ? `0${today.getMinutes()}` : today.getMinutes()
- }`;
-
- ChatStore.update(s => {
- const chatIndex = s.chats.findIndex(chat => chat.contact_id === parseInt(contactId));
- const newChat = {
- id: s.chats[chatIndex].length + 1,
- preview: message,
- received: false,
- sent: true,
- date: currentTime,
- read: true,
- starred: false,
- reply,
- replyID,
- image: image,
- imagePath: imagePath,
- };
-
- s.chats[chatIndex].chats.push(newChat);
- });
-};
-
-export const starChatMessage = (contactId, messageId) => {
- ChatStore.update(s => {
- const chatIndex = s.chats.findIndex(chat => chat.contact_id === parseInt(contactId));
- const messageIndex = s.chats[chatIndex].chats.findIndex(message => message.id === parseInt(messageId));
-
- s.chats[chatIndex].chats[messageIndex].starred = !s.chats[chatIndex].chats[messageIndex].starred;
- });
-};
-
-export default ChatStore;
diff --git a/03_source/mobile_old.del/mobile_main/src/store/ContactStore.js b/03_source/mobile_old.del/mobile_main/src/store/ContactStore.js
deleted file mode 100644
index 363e4be..0000000
--- a/03_source/mobile_old.del/mobile_main/src/store/ContactStore.js
+++ /dev/null
@@ -1,113 +0,0 @@
-import { Store } from 'pullstate';
-
-const ContactStore_long = new Store({
- contacts: [
- {
- id: 1,
- name: 'Amy Sister',
- avatar: '/assets/amy.jpeg',
- },
- {
- id: 2,
- name: 'Max Lynch',
- avatar: '/assets/max.jpeg',
- },
- {
- id: 3,
- name: 'Mike Hartington',
- avatar: '/assets/mike.jpeg',
- },
- {
- id: 4,
- name: 'Henk Jurriens',
- avatar: '/assets/henk.jpeg',
- },
- {
- id: 5,
- name: 'Simon Grimm',
- avatar: '/assets/simon.jpeg',
- },
- {
- id: 6,
- name: 'Josh Morony',
- avatar: '/assets/josh.jpeg',
- },
- {
- id: 7,
- name: 'Elon Musk',
- avatar: '/assets/elon.jpeg',
- },
- {
- id: 8,
- name: 'Bill Gates',
- avatar: '/assets/bill.jpeg',
- },
- {
- id: 9,
- name: 'Mark Zuckerberg',
- avatar: '/assets/mark.jpeg',
- },
- {
- id: 10,
- name: 'Ionic Framework (not)',
- avatar: '/assets/ionic.png',
- },
- ],
-});
-
-const ContactStore = new Store({
- contacts: [
- {
- id: 1,
- name: 'Amy Sister',
- avatar: '/assets/amy.jpeg',
- },
- {
- id: 2,
- name: 'Max Lynch',
- avatar: '/assets/max.jpeg',
- },
- {
- id: 3,
- name: 'Mike Hartington',
- avatar: '/assets/mike.jpeg',
- },
- {
- id: 4,
- name: 'Henk Jurriens',
- avatar: '/assets/henk.jpeg',
- },
- {
- id: 5,
- name: 'Simon Grimm',
- avatar: '/assets/simon.jpeg',
- },
- {
- id: 6,
- name: 'Josh Morony',
- avatar: '/assets/josh.jpeg',
- },
- {
- id: 7,
- name: 'Elon Musk',
- avatar: '/assets/elon.jpeg',
- },
- {
- id: 8,
- name: 'Bill Gates',
- avatar: '/assets/bill.jpeg',
- },
- {
- id: 9,
- name: 'Mark Zuckerberg',
- avatar: '/assets/mark.jpeg',
- },
- {
- id: 10,
- name: 'Ionic Framework (not)',
- avatar: '/assets/ionic.png',
- },
- ],
-});
-
-export default ContactStore;
diff --git a/03_source/mobile_old.del/mobile_main/src/store/Selectors.js b/03_source/mobile_old.del/mobile_main/src/store/Selectors.js
deleted file mode 100644
index c48e53d..0000000
--- a/03_source/mobile_old.del/mobile_main/src/store/Selectors.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import { createSelector } from 'reselect';
-
-const getState = state => state;
-
-// General getters
-export const getContacts = createSelector(getState, state => state.contacts);
-export const getChats = createSelector(getState, state => state.chats);
-
-// More specific getters
-export const getChat = contactId =>
- createSelector(getState, state => state.chats.filter(c => parseInt(c.contact_id) === parseInt(contactId))[0].chats);
-export const getContact = contactId =>
- createSelector(getState, state => state.contacts.filter(c => parseInt(c.id) === parseInt(contactId))[0]);
-
-export const getChatNotificationCount = contactId =>
- createSelector(getState, state =>
- state.chats
- .filter(c => parseInt(c.contact_id) === parseInt(contactId))[0]
- .chats.filter(chat => chat.read === false),
- );
diff --git a/03_source/mobile_old.del/mobile_main/src/store/index.js b/03_source/mobile_old.del/mobile_main/src/store/index.js
deleted file mode 100644
index f0d0f8d..0000000
--- a/03_source/mobile_old.del/mobile_main/src/store/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export { default as ContactStore } from './ContactStore';
-export { default as ChatStore } from './ChatStore';
diff --git a/03_source/mobile_old.del/mobile_main/src/supabaseClient.ts b/03_source/mobile_old.del/mobile_main/src/supabaseClient.ts
deleted file mode 100644
index 733b874..0000000
--- a/03_source/mobile_old.del/mobile_main/src/supabaseClient.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { createClient } from '@supabase/supabase-js';
-
-const supabaseUrl = import.meta.env.VITE_SUPABASE_URL;
-const supabaseAnonKey = import.meta.env.VITE_SUPABASE_ANON_KEY;
-
-export const supabase = createClient(supabaseUrl, supabaseAnonKey);
diff --git a/03_source/mobile_old.del/mobile_main/src/theme/variables.css b/03_source/mobile_old.del/mobile_main/src/theme/variables.css
deleted file mode 100644
index 7523a20..0000000
--- a/03_source/mobile_old.del/mobile_main/src/theme/variables.css
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Ionic Variables and Theming
- * ----------------------------------------------------------------------------
- * For more information, please see
- * https://www.ionicframework.com/docs/theming/
- */
-
-/*
- * Additional Ionic Colors
- * ----------------------------------------------------------------------------
- * In order to add colors to be used within Ionic components,
- * the color should be added as a class with the convention `.ion-color-{COLOR}`
- * where `{COLOR}` is the color to be used on the Ionic component.
- * For more information on adding new colors, please see
- * https://ionicframework.com/docs/theming/colors#adding-colors
- *
- * To generate the code for a new color, check out our new color creator:
- * https://ionicframework.com/docs/theming/colors#new-color-creator
- */
-
-:root {
- --ion-color-favorite: #69bb7b;
- --ion-color-favorite-rgb: 105, 187, 123;
- --ion-color-favorite-contrast: #ffffff;
- --ion-color-favorite-contrast-rgb: 255, 255, 255;
- --ion-color-favorite-shade: #5ca56c;
- --ion-color-favorite-tint: #78c288;
-
- --ion-color-twitter: #1da1f4;
- --ion-color-twitter-rgb: 29, 161, 244;
- --ion-color-twitter-contrast: #ffffff;
- --ion-color-twitter-contrast-rgb: 255, 255, 255;
- --ion-color-twitter-shade: #1a8ed7;
- --ion-color-twitter-tint: #34aaf5;
-
- --ion-color-instagram: #5956d8;
- --ion-color-instagram-rgb: 89, 86, 216;
- --ion-color-instagram-contrast: #ffffff;
- --ion-color-instagram-contrast-rgb: 255, 255, 255;
- --ion-color-instagram-shade: #4e4cbe;
- --ion-color-instagram-tint: #6a67dc;
-
- --ion-color-vimeo: #23b6ea;
- --ion-color-vimeo-rgb: 35, 182, 234;
- --ion-color-vimeo-contrast: #ffffff;
- --ion-color-vimeo-contrast-rgb: 255, 255, 255;
- --ion-color-vimeo-shade: #1fa0ce;
- --ion-color-vimeo-tint: #39bdec;
-
- --ion-color-facebook: #3b5998;
- --ion-color-facebook-rgb: 59, 89, 152;
- --ion-color-facebook-contrast: #ffffff;
- --ion-color-facebook-contrast-rgb: 255, 255, 255;
- --ion-color-facebook-shade: #344e86;
- --ion-color-facebook-tint: #4f6aa2;
-}
-
-.ion-color-favorite {
- --ion-color-base: var(--ion-color-favorite);
- --ion-color-base-rgb: var(--ion-color-favorite-rgb);
- --ion-color-contrast: var(--ion-color-favorite-contrast);
- --ion-color-contrast-rgb: var(--ion-color-favorite-contrast-rgb);
- --ion-color-shade: var(--ion-color-favorite-shade);
- --ion-color-tint: var(--ion-color-favorite-tint);
-}
-
-.ion-color-twitter {
- --ion-color-base: var(--ion-color-twitter);
- --ion-color-base-rgb: var(--ion-color-twitter-rgb);
- --ion-color-contrast: var(--ion-color-twitter-contrast);
- --ion-color-contrast-rgb: var(--ion-color-twitter-contrast-rgb);
- --ion-color-shade: var(--ion-color-twitter-shade);
- --ion-color-tint: var(--ion-color-twitter-tint);
-}
-
-.ion-color-google {
- --ion-color-base: var(--ion-color-google);
- --ion-color-base-rgb: var(--ion-color-google-rgb);
- --ion-color-contrast: var(--ion-color-google-contrast);
- --ion-color-contrast-rgb: var(--ion-color-google-contrast-rgb);
- --ion-color-shade: var(--ion-color-google-shade);
- --ion-color-tint: var(--ion-color-google-tint);
-}
-
-.ion-color-instagram {
- --ion-color-base: var(--ion-color-instagram);
- --ion-color-base-rgb: var(--ion-color-instagram-rgb);
- --ion-color-contrast: var(--ion-color-instagram-contrast);
- --ion-color-contrast-rgb: var(--ion-color-instagram-contrast-rgb);
- --ion-color-shade: var(--ion-color-instagram-shade);
- --ion-color-tint: var(--ion-color-instagram-tint);
-}
-
-.ion-color-vimeo {
- --ion-color-base: var(--ion-color-vimeo);
- --ion-color-base-rgb: var(--ion-color-vimeo-rgb);
- --ion-color-contrast: var(--ion-color-vimeo-contrast);
- --ion-color-contrast-rgb: var(--ion-color-vimeo-contrast-rgb);
- --ion-color-shade: var(--ion-color-vimeo-shade);
- --ion-color-tint: var(--ion-color-vimeo-tint);
-}
-
-.ion-color-facebook {
- --ion-color-base: var(--ion-color-facebook);
- --ion-color-base-rgb: var(--ion-color-facebook-rgb);
- --ion-color-contrast: var(--ion-color-facebook-contrast);
- --ion-color-contrast-rgb: var(--ion-color-facebook-contrast-rgb);
- --ion-color-shade: var(--ion-color-facebook-shade);
- --ion-color-tint: var(--ion-color-facebook-tint);
-}
-
-.ion-color-github {
- --ion-color-base: #211f1f;
- --ion-color-base-rgb: 33, 31, 31;
- --ion-color-contrast: #ffffff;
- --ion-color-contrast-rgb: 255, 255, 255;
- --ion-color-shade: #1d1b1b;
- --ion-color-tint: #373535;
-}
-
-.ion-color-instagram {
- --ion-color-base: #9537bc;
- --ion-color-base-rgb: 149, 55, 188;
- --ion-color-contrast: #ffffff;
- --ion-color-contrast-rgb: 255, 255, 255;
- --ion-color-shade: #8330a5;
- --ion-color-tint: #a04bc3;
-}
-
-/*
- * Shared Variables
- * ----------------------------------------------------------------------------
- * To customize the look and feel of this app, you can override
- * the CSS variables found in Ionic's source files.
- * To view all of the possible Ionic variables, see:
- * https://ionicframework.com/docs/theming/css-variables#ionic-variables
- */
-
-:root {
- --ion-headings-font-weight: 300;
-
- --ion-color-angular: #ac282b;
- --ion-color-communication: #8e8d93;
- --ion-color-tooling: #fe4c52;
- --ion-color-services: #fd8b2d;
- --ion-color-design: #fed035;
- --ion-color-workshop: #69bb7b;
- --ion-color-food: #3bc7c4;
- --ion-color-documentation: #b16be3;
- --ion-color-navigation: #6600cc;
-}
-
-/*
- * App iOS Variables
- * ----------------------------------------------------------------------------
- * iOS only CSS variables can go here
- */
-
-.ios {
-}
-
-/*
- * App Material Design Variables
- * ----------------------------------------------------------------------------
- * Material Design only CSS variables can go here
- */
-
-.md {
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/util/IsLoggedIn.tsx b/03_source/mobile_old.del/mobile_main/src/util/IsLoggedIn.tsx
deleted file mode 100644
index 5d5bc91..0000000
--- a/03_source/mobile_old.del/mobile_main/src/util/IsLoggedIn.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-// if not logged in, checked by profile is null or undefined
-
-export default function IsLoggedIn(profile) {
- if (!profile) return false;
- return true;
-}
diff --git a/03_source/mobile_old.del/mobile_main/src/util/types.ts b/03_source/mobile_old.del/mobile_main/src/util/types.ts
deleted file mode 100644
index 16d490a..0000000
--- a/03_source/mobile_old.del/mobile_main/src/util/types.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-export interface DispatchObject {
- [key: string]: any;
- type: string;
-}
-
-type PromiseResolveValue = T extends Promise ? R : T;
-type EffectType any> = ReturnType>;
-type EffectReturnValue any> = PromiseResolveValue>;
-export type ActionType any> = ReturnType extends DispatchObject
- ? ReturnType
- : EffectReturnValue;
diff --git a/03_source/mobile_old.del/mobile_main/tsconfig.json b/03_source/mobile_old.del/mobile_main/tsconfig.json
deleted file mode 100644
index 72e8164..0000000
--- a/03_source/mobile_old.del/mobile_main/tsconfig.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "compilerOptions": {
- "target": "ESNext",
- "useDefineForClassFields": true,
- "lib": ["DOM", "DOM.Iterable", "ESNext"],
- "allowJs": false,
- "skipLibCheck": true,
- "esModuleInterop": false,
- "allowSyntheticDefaultImports": true,
- "strict": true,
- "forceConsistentCasingInFileNames": true,
- "module": "ESNext",
- "moduleResolution": "Node",
- "resolveJsonModule": true,
- "isolatedModules": true,
- "noEmit": true,
- "jsx": "react-jsx"
- },
- "include": ["src"],
- "references": [{ "path": "./tsconfig.node.json" }],
- "watchOptions": {
- "excludeFiles": ["**/*copy*", "**/*.bak", "**/*.del", "**/_archive"]
- }
-}
diff --git a/03_source/mobile_old.del/mobile_main/tsconfig.node.json b/03_source/mobile_old.del/mobile_main/tsconfig.node.json
deleted file mode 100644
index 9d31e2a..0000000
--- a/03_source/mobile_old.del/mobile_main/tsconfig.node.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "compilerOptions": {
- "composite": true,
- "module": "ESNext",
- "moduleResolution": "Node",
- "allowSyntheticDefaultImports": true
- },
- "include": ["vite.config.ts"]
-}
diff --git a/03_source/mobile_old.del/mobile_main/vite.config.ts b/03_source/mobile_old.del/mobile_main/vite.config.ts
deleted file mode 100644
index ff25d23..0000000
--- a/03_source/mobile_old.del/mobile_main/vite.config.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { defineConfig } from 'vite';
-import react from '@vitejs/plugin-react';
-import legacy from '@vitejs/plugin-legacy';
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [
- react(),
- legacy({
- // es.array.at: Voyager code iOS 15.2
- // es.object.has-own: ReactMarkdown iOS 15.2
- modernPolyfills: ['es.array.at', 'es.object.has-own'],
- }),
- ],
- server: {
- port: 3000,
- },
- define: {
- 'process.env': process.env,
- },
-});
diff --git a/03_source/mobile_old.del/new_nextjs.sh b/03_source/mobile_old.del/new_nextjs.sh
deleted file mode 100755
index cefeb09..0000000
--- a/03_source/mobile_old.del/new_nextjs.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env bash
-
-set -ex
-
-# nextjs-fresh
-npx create-next-app@latest nextjs-fresh --js --tailwind --use-npm --no-eslint --no-src-dir --no-app --no-import-alias
\ No newline at end of file
diff --git a/03_source/mobile_old.del/note.md b/03_source/mobile_old.del/note.md
deleted file mode 100644
index 38986b6..0000000
--- a/03_source/mobile_old.del/note.md
+++ /dev/null
@@ -1,61 +0,0 @@
-### Purpose
-
-to test if cpu loading is occured when browser is offline
-
-### check list before you start
-
-### backend
-
-- [] start docker
- - docker (/home/logic/\_wsl_workspace/HKSingleParty/04_poc/009_poc_chatroom_implement/docker)
- - `./dc_up.sh`
- - `./db_push.sh`
- - supavase available on port `http://localhost:8000`
-- [] check if codeium started and can index files
-- start android emulator
- - start chrome://inspect
-
-### frontend
-
-```bash
-$ cd /home/logic/_wsl_workspace/HKSingleParty/04_poc/009_poc_chatroom_implement/mobile_main
-$ dc_up.sh
-$ npm run dev
-```
-
-### results
-
-| project name | result |
-| ------------------ | :-------------: |
-| nextjs-fresh | no cpu loading |
-| nextjs-slack-clone | loading occured |
-| nextjs-realtime | x |
-
-need to run before example start
-
-```bash
-$ ./reset.sh
-
-```
-
-http://localhost:8000
-
-- supabase
-- this_password_is_insecure_and_should_be_updated
-
-
-
-http://localhost:3000/test
-
-goto http://localhost:8025
-look for new email
-append `:8000` in the link inside email
-
-## in supabase dashboard, goto:
-
--> sql editor -> quick starts -> user management starter
-
-http://localhost:8000/project/default/api
-
-SUPABASE_URL=http://localhost:8000
-ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE
diff --git a/03_source/mobile_old.del/reset.sh b/03_source/mobile_old.del/reset.sh
deleted file mode 100755
index 718676d..0000000
--- a/03_source/mobile_old.del/reset.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-# sudo chown 1000:1000 -R supabase
-# sudo rm -rf supabase
-# cp -r /home/logic/_wsl_workspace/comission-playlist/buytablet2018@gmail.com/task1/02_design/poc_supabase_budibase/supabase .
-
-# mv ./supabase/volumes ./supabase/volumes.backup
-# cp -r ./supabase/volumes.clean ./supabase/volumes
-
-echo "Press any key to continue..., ctrl-c to cancel"
-read -n 1 -s
-
-./clear.sh
-
-cd supabase
-
-docker compose up -d
-docker compose logs -f
-
-cd ..
-
-echo "done"
diff --git a/03_source/mobile_old.del/supabase.old/.env.example b/03_source/mobile_old.del/supabase.old/.env.example
deleted file mode 100644
index 132fe8f..0000000
--- a/03_source/mobile_old.del/supabase.old/.env.example
+++ /dev/null
@@ -1,105 +0,0 @@
-############
-# Secrets
-# YOU MUST CHANGE THESE BEFORE GOING INTO PRODUCTION
-############
-
-POSTGRES_PASSWORD=your-super-secret-and-long-postgres-password
-JWT_SECRET=your-super-secret-jwt-token-with-at-least-32-characters-long
-ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE
-SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q
-DASHBOARD_USERNAME=supabase
-DASHBOARD_PASSWORD=this_password_is_insecure_and_should_be_updated
-
-############
-# Database - You can change these to any PostgreSQL database that has logical replication enabled.
-############
-
-POSTGRES_HOST=db
-POSTGRES_DB=postgres
-POSTGRES_PORT=5432
-# default user is postgres
-
-############
-# API Proxy - Configuration for the Kong Reverse proxy.
-############
-
-KONG_HTTP_PORT=8000
-KONG_HTTPS_PORT=8443
-
-
-############
-# API - Configuration for PostgREST.
-############
-
-PGRST_DB_SCHEMAS=public,storage,graphql_public
-
-
-############
-# Auth - Configuration for the GoTrue authentication server.
-############
-
-## General
-SITE_URL=http://localhost:3000
-ADDITIONAL_REDIRECT_URLS=
-JWT_EXPIRY=3600
-DISABLE_SIGNUP=false
-API_EXTERNAL_URL=http://localhost:8000
-
-## Mailer Config
-MAILER_URLPATHS_CONFIRMATION="/auth/v1/verify"
-MAILER_URLPATHS_INVITE="/auth/v1/verify"
-MAILER_URLPATHS_RECOVERY="/auth/v1/verify"
-MAILER_URLPATHS_EMAIL_CHANGE="/auth/v1/verify"
-
-## Email auth
-ENABLE_EMAIL_SIGNUP=true
-ENABLE_EMAIL_AUTOCONFIRM=false
-SMTP_ADMIN_EMAIL=admin@example.com
-SMTP_HOST=supabase-mail
-SMTP_PORT=2500
-SMTP_USER=fake_mail_user
-SMTP_PASS=fake_mail_password
-SMTP_SENDER_NAME=fake_sender
-ENABLE_ANONYMOUS_USERS=false
-
-## Phone auth
-ENABLE_PHONE_SIGNUP=true
-ENABLE_PHONE_AUTOCONFIRM=true
-
-
-############
-# Studio - Configuration for the Dashboard
-############
-
-STUDIO_DEFAULT_ORGANIZATION=Default Organization
-STUDIO_DEFAULT_PROJECT=Default Project
-
-STUDIO_PORT=3000
-# replace if you intend to use Studio outside of localhost
-SUPABASE_PUBLIC_URL=http://localhost:8000
-
-# Enable webp support
-IMGPROXY_ENABLE_WEBP_DETECTION=true
-
-############
-# Functions - Configuration for Functions
-############
-# NOTE: VERIFY_JWT applies to all functions. Per-function VERIFY_JWT is not supported yet.
-FUNCTIONS_VERIFY_JWT=false
-
-############
-# Logs - Configuration for Logflare
-# Please refer to https://supabase.com/docs/reference/self-hosting-analytics/introduction
-############
-
-LOGFLARE_LOGGER_BACKEND_API_KEY=your-super-secret-and-long-logflare-key
-
-# Change vector.toml sinks to reflect this change
-LOGFLARE_API_KEY=your-super-secret-and-long-logflare-key
-
-# Docker socket location - this value will differ depending on your OS
-DOCKER_SOCKET_LOCATION=/var/run/docker.sock
-
-# Google Cloud Project details
-GOOGLE_PROJECT_ID=GOOGLE_PROJECT_ID
-GOOGLE_PROJECT_NUMBER=GOOGLE_PROJECT_NUMBER
diff --git a/03_source/mobile_old.del/supabase.old/.gitignore b/03_source/mobile_old.del/supabase.old/.gitignore
deleted file mode 100644
index a1e9dc6..0000000
--- a/03_source/mobile_old.del/supabase.old/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-volumes/db/data
-volumes/storage
-.env
-test.http
-docker-compose.override.yml
diff --git a/03_source/mobile_old.del/supabase.old/README.md b/03_source/mobile_old.del/supabase.old/README.md
deleted file mode 100644
index 6ae8306..0000000
--- a/03_source/mobile_old.del/supabase.old/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# to start a new fresh supabase
-
-```bash
-# start a docker supabase container
-
-# reset_supabase.sh
-
-export DB_URL="postgres://postgres:your-super-secret-and-long-postgres-password@127.0.0.1:5432/postgres"
-
-echo "y" | npx supabase db reset --db-url $DB_URL
-```
diff --git a/03_source/mobile_old.del/supabase.old/dc_up.sh b/03_source/mobile_old.del/supabase.old/dc_up.sh
deleted file mode 100755
index 1ee9249..0000000
--- a/03_source/mobile_old.del/supabase.old/dc_up.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env bash
-
-set -ex
-
-# Start:
-docker compose pull
-docker compose up --build
-
-# With helpers:
-# docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up
-
-# Stop: docker compose down
-
-# Destroy: docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down -v --remove-orphans
\ No newline at end of file
diff --git a/03_source/mobile_old.del/supabase.old/dev/data.sql b/03_source/mobile_old.del/supabase.old/dev/data.sql
deleted file mode 100644
index 2328004..0000000
--- a/03_source/mobile_old.del/supabase.old/dev/data.sql
+++ /dev/null
@@ -1,48 +0,0 @@
-create table profiles (
- id uuid references auth.users not null,
- updated_at timestamp with time zone,
- username text unique,
- avatar_url text,
- website text,
-
- primary key (id),
- unique(username),
- constraint username_length check (char_length(username) >= 3)
-);
-
-alter table profiles enable row level security;
-
-create policy "Public profiles are viewable by the owner."
- on profiles for select
- using ( auth.uid() = id );
-
-create policy "Users can insert their own profile."
- on profiles for insert
- with check ( auth.uid() = id );
-
-create policy "Users can update own profile."
- on profiles for update
- using ( auth.uid() = id );
-
--- Set up Realtime
-begin;
- drop publication if exists supabase_realtime;
- create publication supabase_realtime;
-commit;
-alter publication supabase_realtime add table profiles;
-
--- Set up Storage
-insert into storage.buckets (id, name)
-values ('avatars', 'avatars');
-
-create policy "Avatar images are publicly accessible."
- on storage.objects for select
- using ( bucket_id = 'avatars' );
-
-create policy "Anyone can upload an avatar."
- on storage.objects for insert
- with check ( bucket_id = 'avatars' );
-
-create policy "Anyone can update an avatar."
- on storage.objects for update
- with check ( bucket_id = 'avatars' );
diff --git a/03_source/mobile_old.del/supabase.old/dev/docker-compose.dev.yml b/03_source/mobile_old.del/supabase.old/dev/docker-compose.dev.yml
deleted file mode 100644
index c26a2be..0000000
--- a/03_source/mobile_old.del/supabase.old/dev/docker-compose.dev.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-version: "3.8"
-
-services:
- studio:
- build:
- context: ..
- dockerfile: studio/Dockerfile
- target: dev
- ports:
- - 8082:8082
- mail:
- container_name: supabase-mail
- image: inbucket/inbucket:3.0.3
- ports:
- - "2500:2500" # SMTP
- - "9000:9000" # web interface
- - "1100:1100" # POP3
- auth:
- environment:
- - GOTRUE_SMTP_USER=
- - GOTRUE_SMTP_PASS=
- meta:
- ports:
- - 5555:8080
- db:
- restart: "no"
- volumes:
- # Always use a fresh database when developing
- - /var/lib/postgresql/data
- # Seed data should be inserted last (alphabetical order)
- - ./dev/data.sql:/docker-entrypoint-initdb.d/seed.sql
- storage:
- volumes:
- - /var/lib/storage
diff --git a/03_source/mobile_old.del/supabase.old/docker-compose.s3.yml b/03_source/mobile_old.del/supabase.old/docker-compose.s3.yml
deleted file mode 100644
index b821065..0000000
--- a/03_source/mobile_old.del/supabase.old/docker-compose.s3.yml
+++ /dev/null
@@ -1,87 +0,0 @@
-version: "3.8"
-
-services:
- minio:
- image: minio/minio
- ports:
- - "9000:9000"
- - "9001:9001"
- environment:
- MINIO_ROOT_USER: supa-storage
- MINIO_ROOT_PASSWORD: secret1234
- command: server --console-address ":9001" /data
- healthcheck:
- test: ["CMD", "curl", "-f", "http://minio:9000/minio/health/live"]
- interval: 2s
- timeout: 10s
- retries: 5
- volumes:
- - ./volumes/storage:/data:z
-
- minio-createbucket:
- image: minio/mc
- depends_on:
- minio:
- condition: service_healthy
- entrypoint: >
- /bin/sh -c "
- /usr/bin/mc alias set supa-minio http://minio:9000 supa-storage secret1234;
- /usr/bin/mc mb supa-minio/stub;
- exit 0;
- "
-
- storage:
- container_name: supabase-storage
- image: supabase/storage-api:v0.43.11
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- rest:
- condition: service_started
- imgproxy:
- condition: service_started
- minio:
- condition: service_healthy
- healthcheck:
- test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5000/status"]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- ANON_KEY: ${ANON_KEY}
- SERVICE_KEY: ${SERVICE_ROLE_KEY}
- POSTGREST_URL: http://rest:3000
- PGRST_JWT_SECRET: ${JWT_SECRET}
- DATABASE_URL: postgres://supabase_storage_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- FILE_SIZE_LIMIT: 52428800
- STORAGE_BACKEND: s3
- GLOBAL_S3_BUCKET: stub
- GLOBAL_S3_ENDPOINT: http://minio:9000
- GLOBAL_S3_PROTOCOL: http
- GLOBAL_S3_FORCE_PATH_STYLE: true
- AWS_ACCESS_KEY_ID: supa-storage
- AWS_SECRET_ACCESS_KEY: secret1234
- AWS_DEFAULT_REGION: stub
- FILE_STORAGE_BACKEND_PATH: /var/lib/storage
- TENANT_ID: stub
- # TODO: https://github.com/supabase/storage-api/issues/55
- REGION: stub
- ENABLE_IMAGE_TRANSFORMATION: "true"
- IMGPROXY_URL: http://imgproxy:5001
- volumes:
- - ./volumes/storage:/var/lib/storage:z
-
- imgproxy:
- container_name: supabase-imgproxy
- image: darthsim/imgproxy:v3.8.0
- healthcheck:
- test: ["CMD", "imgproxy", "health"]
- timeout: 5s
- interval: 5s
- retries: 3
- environment:
- IMGPROXY_BIND: ":5001"
- IMGPROXY_USE_ETAG: "true"
- IMGPROXY_ENABLE_WEBP_DETECTION: ${IMGPROXY_ENABLE_WEBP_DETECTION}
diff --git a/03_source/mobile_old.del/supabase.old/docker-compose.yml b/03_source/mobile_old.del/supabase.old/docker-compose.yml
deleted file mode 100644
index cb99262..0000000
--- a/03_source/mobile_old.del/supabase.old/docker-compose.yml
+++ /dev/null
@@ -1,400 +0,0 @@
-# Usage
-# Start: docker compose up
-# With helpers: docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up
-# Stop: docker compose down
-# Destroy: docker compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down -v --remove-orphans
-
-name: 009_poc_chatroom_implement
-
-services:
- studio:
- container_name: supabase-studio
- image: supabase/studio:20240729-ce42139
- restart: unless-stopped
- healthcheck:
- test:
- [
- "CMD",
- "node",
- "-e",
- "require('http').get('http://localhost:3000/api/profile', (r) => {if (r.statusCode !== 200) throw new Error(r.statusCode)})",
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- depends_on:
- analytics:
- condition: service_healthy
- environment:
- STUDIO_PG_META_URL: http://meta:8080
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
-
- DEFAULT_ORGANIZATION_NAME: ${STUDIO_DEFAULT_ORGANIZATION}
- DEFAULT_PROJECT_NAME: ${STUDIO_DEFAULT_PROJECT}
-
- SUPABASE_URL: http://kong:8000
- SUPABASE_PUBLIC_URL: ${SUPABASE_PUBLIC_URL}
- SUPABASE_ANON_KEY: ${ANON_KEY}
- SUPABASE_SERVICE_KEY: ${SERVICE_ROLE_KEY}
- AUTH_JWT_SECRET: ${JWT_SECRET}
-
- LOGFLARE_API_KEY: ${LOGFLARE_API_KEY}
- LOGFLARE_URL: http://analytics:4000
- NEXT_PUBLIC_ENABLE_LOGS: true
- # Comment to use Big Query backend for analytics
- NEXT_ANALYTICS_BACKEND_PROVIDER: postgres
- # Uncomment to use Big Query backend for analytics
- # NEXT_ANALYTICS_BACKEND_PROVIDER: bigquery
-
- kong:
- container_name: supabase-kong
- image: kong:2.8.1
- restart: unless-stopped
- # https://unix.stackexchange.com/a/294837
- entrypoint: bash -c 'eval "echo \"$$(cat ~/temp.yml)\"" > ~/kong.yml && /docker-entrypoint.sh kong docker-start'
- ports:
- - ${KONG_HTTP_PORT}:8000/tcp
- - ${KONG_HTTPS_PORT}:8443/tcp
- depends_on:
- analytics:
- condition: service_healthy
- environment:
- KONG_DATABASE: "off"
- KONG_DECLARATIVE_CONFIG: /home/kong/kong.yml
- # https://github.com/supabase/cli/issues/14
- KONG_DNS_ORDER: LAST,A,CNAME
- KONG_PLUGINS: request-transformer,cors,key-auth,acl,basic-auth
- KONG_NGINX_PROXY_PROXY_BUFFER_SIZE: 160k
- KONG_NGINX_PROXY_PROXY_BUFFERS: 64 160k
- SUPABASE_ANON_KEY: ${ANON_KEY}
- SUPABASE_SERVICE_KEY: ${SERVICE_ROLE_KEY}
- DASHBOARD_USERNAME: ${DASHBOARD_USERNAME}
- DASHBOARD_PASSWORD: ${DASHBOARD_PASSWORD}
- volumes:
- # https://github.com/supabase/supabase/issues/12661
- - ./volumes/api/kong.yml:/home/kong/temp.yml:ro
-
- auth:
- container_name: supabase-auth
- image: supabase/gotrue:v2.158.1
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- healthcheck:
- test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:9999/health"]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- GOTRUE_API_HOST: 0.0.0.0
- GOTRUE_API_PORT: 9999
- API_EXTERNAL_URL: ${API_EXTERNAL_URL}
-
- GOTRUE_DB_DRIVER: postgres
- GOTRUE_DB_DATABASE_URL: postgres://supabase_auth_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
-
- GOTRUE_SITE_URL: ${SITE_URL}
- GOTRUE_URI_ALLOW_LIST: ${ADDITIONAL_REDIRECT_URLS}
- GOTRUE_DISABLE_SIGNUP: ${DISABLE_SIGNUP}
-
- GOTRUE_JWT_ADMIN_ROLES: service_role
- GOTRUE_JWT_AUD: authenticated
- GOTRUE_JWT_DEFAULT_GROUP_NAME: authenticated
- GOTRUE_JWT_EXP: ${JWT_EXPIRY}
- GOTRUE_JWT_SECRET: ${JWT_SECRET}
-
- GOTRUE_EXTERNAL_EMAIL_ENABLED: ${ENABLE_EMAIL_SIGNUP}
- GOTRUE_EXTERNAL_ANONYMOUS_USERS_ENABLED: ${ENABLE_ANONYMOUS_USERS}
- GOTRUE_MAILER_AUTOCONFIRM: ${ENABLE_EMAIL_AUTOCONFIRM}
- # GOTRUE_MAILER_SECURE_EMAIL_CHANGE_ENABLED: true
- # GOTRUE_SMTP_MAX_FREQUENCY: 1s
- GOTRUE_SMTP_ADMIN_EMAIL: ${SMTP_ADMIN_EMAIL}
- GOTRUE_SMTP_HOST: ${SMTP_HOST}
- GOTRUE_SMTP_PORT: ${SMTP_PORT}
- GOTRUE_SMTP_USER: ${SMTP_USER}
- GOTRUE_SMTP_PASS: ${SMTP_PASS}
- GOTRUE_SMTP_SENDER_NAME: ${SMTP_SENDER_NAME}
- GOTRUE_MAILER_URLPATHS_INVITE: ${MAILER_URLPATHS_INVITE}
- GOTRUE_MAILER_URLPATHS_CONFIRMATION: ${MAILER_URLPATHS_CONFIRMATION}
- GOTRUE_MAILER_URLPATHS_RECOVERY: ${MAILER_URLPATHS_RECOVERY}
- GOTRUE_MAILER_URLPATHS_EMAIL_CHANGE: ${MAILER_URLPATHS_EMAIL_CHANGE}
-
- GOTRUE_EXTERNAL_PHONE_ENABLED: ${ENABLE_PHONE_SIGNUP}
- GOTRUE_SMS_AUTOCONFIRM: ${ENABLE_PHONE_AUTOCONFIRM}
- # Uncomment to enable custom access token hook. You'll need to create a public.custom_access_token_hook function and grant necessary permissions.
- # See: https://supabase.com/docs/guides/auth/auth-hooks#hook-custom-access-token for details
- # GOTRUE_HOOK_CUSTOM_ACCESS_TOKEN_ENABLED="true"
- # GOTRUE_HOOK_CUSTOM_ACCESS_TOKEN_URI="pg-functions://postgres/public/custom_access_token_hook"
-
- # GOTRUE_HOOK_MFA_VERIFICATION_ATTEMPT_ENABLED="true"
- # GOTRUE_HOOK_MFA_VERIFICATION_ATTEMPT_URI="pg-functions://postgres/public/mfa_verification_attempt"
-
- # GOTRUE_HOOK_PASSWORD_VERIFICATION_ATTEMPT_ENABLED="true"
- # GOTRUE_HOOK_PASSWORD_VERIFICATION_ATTEMPT_URI="pg-functions://postgres/public/password_verification_attempt"
-
- rest:
- container_name: supabase-rest
- image: postgrest/postgrest:v12.2.0
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- restart: unless-stopped
- environment:
- PGRST_DB_URI: postgres://authenticator:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- PGRST_DB_SCHEMAS: ${PGRST_DB_SCHEMAS}
- PGRST_DB_ANON_ROLE: anon
- PGRST_JWT_SECRET: ${JWT_SECRET}
- PGRST_DB_USE_LEGACY_GUCS: "false"
- PGRST_APP_SETTINGS_JWT_SECRET: ${JWT_SECRET}
- PGRST_APP_SETTINGS_JWT_EXP: ${JWT_EXPIRY}
- command: "postgrest"
-
- realtime:
- # This container name looks inconsistent but is correct because realtime constructs tenant id by parsing the subdomain
- container_name: realtime-dev.supabase-realtime
- image: supabase/realtime:v2.30.34
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- healthcheck:
- test:
- [
- "CMD",
- "curl",
- "-sSfL",
- "--head",
- "-o",
- "/dev/null",
- "-H",
- "Authorization: Bearer ${ANON_KEY}",
- "http://localhost:4000/api/tenants/realtime-dev/health",
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- PORT: 4000
- DB_HOST: ${POSTGRES_HOST}
- DB_PORT: ${POSTGRES_PORT}
- DB_USER: supabase_admin
- DB_PASSWORD: ${POSTGRES_PASSWORD}
- DB_NAME: ${POSTGRES_DB}
- DB_AFTER_CONNECT_QUERY: "SET search_path TO _realtime"
- DB_ENC_KEY: supabaserealtime
- API_JWT_SECRET: ${JWT_SECRET}
- SECRET_KEY_BASE: UpNVntn3cDxHJpq99YMc1T1AQgQpc8kfYTuRgBiYa15BLrx8etQoXz3gZv1/u2oq
- ERL_AFLAGS: -proto_dist inet_tcp
- DNS_NODES: "''"
- RLIMIT_NOFILE: "10000"
- APP_NAME: realtime
- SEED_SELF_HOST: true
-
- # To use S3 backed storage: docker compose -f docker-compose.yml -f docker-compose.s3.yml up
- storage:
- container_name: supabase-storage
- image: supabase/storage-api:v1.10.1
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- rest:
- condition: service_started
- imgproxy:
- condition: service_started
- healthcheck:
- test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5000/status"]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- ANON_KEY: ${ANON_KEY}
- SERVICE_KEY: ${SERVICE_ROLE_KEY}
- POSTGREST_URL: http://rest:3000
- PGRST_JWT_SECRET: ${JWT_SECRET}
- DATABASE_URL: postgres://supabase_storage_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- FILE_SIZE_LIMIT: 52428800
- STORAGE_BACKEND: file
- FILE_STORAGE_BACKEND_PATH: /var/lib/storage
- TENANT_ID: stub
- # TODO: https://github.com/supabase/storage-api/issues/55
- REGION: stub
- GLOBAL_S3_BUCKET: stub
- ENABLE_IMAGE_TRANSFORMATION: "true"
- IMGPROXY_URL: http://imgproxy:5001
- volumes:
- - ./volumes/storage:/var/lib/storage:z
-
- imgproxy:
- container_name: supabase-imgproxy
- image: darthsim/imgproxy:v3.8.0
- healthcheck:
- test: ["CMD", "imgproxy", "health"]
- timeout: 5s
- interval: 5s
- retries: 3
- environment:
- IMGPROXY_BIND: ":5001"
- IMGPROXY_LOCAL_FILESYSTEM_ROOT: /
- IMGPROXY_USE_ETAG: "true"
- IMGPROXY_ENABLE_WEBP_DETECTION: ${IMGPROXY_ENABLE_WEBP_DETECTION}
- volumes:
- - ./volumes/storage:/var/lib/storage:z
-
- meta:
- container_name: supabase-meta
- image: supabase/postgres-meta:v0.83.2
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- restart: unless-stopped
- environment:
- PG_META_PORT: 8080
- PG_META_DB_HOST: ${POSTGRES_HOST}
- PG_META_DB_PORT: ${POSTGRES_PORT}
- PG_META_DB_NAME: ${POSTGRES_DB}
- PG_META_DB_USER: supabase_admin
- PG_META_DB_PASSWORD: ${POSTGRES_PASSWORD}
-
- functions:
- container_name: supabase-edge-functions
- image: supabase/edge-runtime:v1.56.1
- restart: unless-stopped
- depends_on:
- analytics:
- condition: service_healthy
- environment:
- JWT_SECRET: ${JWT_SECRET}
- SUPABASE_URL: http://kong:8000
- SUPABASE_ANON_KEY: ${ANON_KEY}
- SUPABASE_SERVICE_ROLE_KEY: ${SERVICE_ROLE_KEY}
- SUPABASE_DB_URL: postgresql://postgres:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- # TODO: Allow configuring VERIFY_JWT per function. This PR might help: https://github.com/supabase/cli/pull/786
- VERIFY_JWT: "${FUNCTIONS_VERIFY_JWT}"
- volumes:
- - ./volumes/functions:/home/deno/functions:Z
- command:
- - start
- - --main-service
- - /home/deno/functions/main
-
- analytics:
- container_name: supabase-analytics
- image: supabase/logflare:1.4.0
- healthcheck:
- test: ["CMD", "curl", "http://localhost:4000/health"]
- timeout: 5s
- interval: 5s
- retries: 10
- restart: unless-stopped
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- # Uncomment to use Big Query backend for analytics
- # volumes:
- # - type: bind
- # source: ${PWD}/gcloud.json
- # target: /opt/app/rel/logflare/bin/gcloud.json
- # read_only: true
- environment:
- LOGFLARE_NODE_HOST: 127.0.0.1
- DB_USERNAME: supabase_admin
- DB_DATABASE: ${POSTGRES_DB}
- DB_HOSTNAME: ${POSTGRES_HOST}
- DB_PORT: ${POSTGRES_PORT}
- DB_PASSWORD: ${POSTGRES_PASSWORD}
- DB_SCHEMA: _analytics
- LOGFLARE_API_KEY: ${LOGFLARE_API_KEY}
- LOGFLARE_SINGLE_TENANT: true
- LOGFLARE_SUPABASE_MODE: true
- LOGFLARE_MIN_CLUSTER_SIZE: 1
-
- # Comment variables to use Big Query backend for analytics
- POSTGRES_BACKEND_URL: postgresql://supabase_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- POSTGRES_BACKEND_SCHEMA: _analytics
- LOGFLARE_FEATURE_FLAG_OVERRIDE: multibackend=true
- # Uncomment to use Big Query backend for analytics
- # GOOGLE_PROJECT_ID: ${GOOGLE_PROJECT_ID}
- # GOOGLE_PROJECT_NUMBER: ${GOOGLE_PROJECT_NUMBER}
- ports:
- - 4000:4000
-
- # Comment out everything below this point if you are using an external Postgres database
- db:
- container_name: supabase-db
- image: supabase/postgres:15.1.1.78
- healthcheck:
- test: pg_isready -U postgres -h localhost
- interval: 5s
- timeout: 5s
- retries: 10
- depends_on:
- vector:
- condition: service_healthy
- command:
- - postgres
- - -c
- - config_file=/etc/postgresql/postgresql.conf
- - -c
- - log_min_messages=fatal # prevents Realtime polling queries from appearing in logs
- restart: unless-stopped
- ports:
- # Pass down internal port because it's set dynamically by other services
- - ${POSTGRES_PORT}:${POSTGRES_PORT}
- environment:
- POSTGRES_HOST: /var/run/postgresql
- PGPORT: ${POSTGRES_PORT}
- POSTGRES_PORT: ${POSTGRES_PORT}
- PGPASSWORD: ${POSTGRES_PASSWORD}
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
- PGDATABASE: ${POSTGRES_DB}
- POSTGRES_DB: ${POSTGRES_DB}
- JWT_SECRET: ${JWT_SECRET}
- JWT_EXP: ${JWT_EXPIRY}
- volumes:
- - ./volumes/db/realtime.sql:/docker-entrypoint-initdb.d/migrations/99-realtime.sql:Z
- # Must be superuser to create event trigger
- - ./volumes/db/webhooks.sql:/docker-entrypoint-initdb.d/init-scripts/98-webhooks.sql:Z
- # Must be superuser to alter reserved role
- - ./volumes/db/roles.sql:/docker-entrypoint-initdb.d/init-scripts/99-roles.sql:Z
- # Initialize the database settings with JWT_SECRET and JWT_EXP
- - ./volumes/db/jwt.sql:/docker-entrypoint-initdb.d/init-scripts/99-jwt.sql:Z
- # PGDATA directory is persisted between restarts
- - ./volumes/db/data:/var/lib/postgresql/data:Z
- # Changes required for Analytics support
- - ./volumes/db/logs.sql:/docker-entrypoint-initdb.d/migrations/99-logs.sql:Z
- # Use named volume to persist pgsodium decryption key between restarts
- - db-config:/etc/postgresql-custom
-
- vector:
- container_name: supabase-vector
- image: timberio/vector:0.28.1-alpine
- healthcheck:
- test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://vector:9001/health"]
- timeout: 5s
- interval: 5s
- retries: 3
- volumes:
- - ./volumes/logs/vector.yml:/etc/vector/vector.yml:ro
- - ${DOCKER_SOCKET_LOCATION}:/var/run/docker.sock:ro
- environment:
- LOGFLARE_API_KEY: ${LOGFLARE_API_KEY}
- command: ["--config", "etc/vector/vector.yml"]
-
-volumes:
- db-config:
diff --git a/03_source/mobile_old.del/supabase.old/dump.sql b/03_source/mobile_old.del/supabase.old/dump.sql
deleted file mode 100644
index 1c15416..0000000
--- a/03_source/mobile_old.del/supabase.old/dump.sql
+++ /dev/null
@@ -1,65 +0,0 @@
-
-SET statement_timeout = 0;
-SET lock_timeout = 0;
-SET idle_in_transaction_session_timeout = 0;
-SET client_encoding = 'UTF8';
-SET standard_conforming_strings = on;
-SELECT pg_catalog.set_config('search_path', '', false);
-SET check_function_bodies = false;
-SET xmloption = content;
-SET client_min_messages = warning;
-SET row_security = off;
-CREATE EXTENSION IF NOT EXISTS "pg_net" WITH SCHEMA "extensions";
-CREATE EXTENSION IF NOT EXISTS "pgsodium" WITH SCHEMA "pgsodium";
-COMMENT ON SCHEMA "public" IS 'standard public schema';
-CREATE EXTENSION IF NOT EXISTS "pg_graphql" WITH SCHEMA "graphql";
-CREATE EXTENSION IF NOT EXISTS "pg_stat_statements" WITH SCHEMA "extensions";
-CREATE EXTENSION IF NOT EXISTS "pgcrypto" WITH SCHEMA "extensions";
-CREATE EXTENSION IF NOT EXISTS "pgjwt" WITH SCHEMA "extensions";
-CREATE EXTENSION IF NOT EXISTS "supabase_vault" WITH SCHEMA "vault";
-CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA "extensions";
-SET default_tablespace = '';
-SET default_table_access_method = "heap";
-CREATE TABLE IF NOT EXISTS "public"."employees" (
- "id" bigint NOT NULL,
- "name" "text",
- "email" "text",
- "created_at" timestamp with time zone DEFAULT "now"(),
- "department" "text" DEFAULT 'Hooli'::"text"
-);
-ALTER TABLE "public"."employees" OWNER TO "postgres";
-ALTER TABLE "public"."employees" ALTER COLUMN "id" ADD GENERATED ALWAYS AS IDENTITY (
- SEQUENCE NAME "public"."employees_id_seq"
- START WITH 1
- INCREMENT BY 1
- NO MINVALUE
- NO MAXVALUE
- CACHE 1
-ALTER TABLE ONLY "public"."employees"
- ADD CONSTRAINT "employees_pkey" PRIMARY KEY ("id");
-CREATE PUBLICATION "logflare_pub" WITH (publish = 'insert, update, delete, truncate');
-ALTER PUBLICATION "logflare_pub" OWNER TO "supabase_admin";
-ALTER PUBLICATION "supabase_realtime" OWNER TO "postgres";
-GRANT USAGE ON SCHEMA "public" TO "postgres";
-GRANT USAGE ON SCHEMA "public" TO "anon";
-GRANT USAGE ON SCHEMA "public" TO "authenticated";
-GRANT USAGE ON SCHEMA "public" TO "service_role";
-GRANT ALL ON TABLE "public"."employees" TO "anon";
-GRANT ALL ON TABLE "public"."employees" TO "authenticated";
-GRANT ALL ON TABLE "public"."employees" TO "service_role";
-GRANT ALL ON SEQUENCE "public"."employees_id_seq" TO "anon";
-GRANT ALL ON SEQUENCE "public"."employees_id_seq" TO "authenticated";
-GRANT ALL ON SEQUENCE "public"."employees_id_seq" TO "service_role";
-ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "postgres";
-ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "anon";
-ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "authenticated";
-ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "service_role";
-ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "postgres";
-ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "anon";
-ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "authenticated";
-ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "service_role";
-ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "postgres";
-ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "anon";
-ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "authenticated";
-ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "service_role";
-RESET ALL;
diff --git a/03_source/mobile_old.del/supabase.old/reset_supabase.sh b/03_source/mobile_old.del/supabase.old/reset_supabase.sh
deleted file mode 100755
index 1b77673..0000000
--- a/03_source/mobile_old.del/supabase.old/reset_supabase.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-export DB_URL="postgres://postgres:your-super-secret-and-long-postgres-password@127.0.0.1:5432/postgres"
-export SUPABASE_ACCESS_TOKEN="your-super-secret-jwt-token-with-at-least-32-characters-long"
-
-echo "Press any key to continue..., ctrl-c to cancel"
-read -n 1 -s
-
-# docker compose kill
-# docker compose down
-
-# sleep 1
-
-# sudo mv volumes "volumes.backup.$(date +%Y-%m-%d-%H-%M-%S)"
-# cp -r ../supabase.fresh/volumes .
-
-# docker compose up -d
-# docker compose logs -f
-
-echo "y" | npx supabase db reset --db-url $DB_URL
-
-# npx supabase db push --db-url $DB_URL
-
-# npx supabase db dump --db-url $DB_URL -f ./dump.sql
-
-# npx supabase db diff --db-url $DB_URL
-# npx supabase db lint --db-url $DB_URL
-# npx supabase db pull --db-url $DB_URL
-
-
-# npx supabase migration new create_employees_table
-# npx supabase db start --db-url $DB_URL
-
-# npx supabase db push --db-url $DB_URL
-# npx supabase db pull --db-url $DB_URL
-# npx supabase db pull --schema auth,storage --db-url $DB_URL
-# npx supabase db reset --db-url $DB_URL
-# npx supabase seed
-
-# npx supabase storage rm media --experimental
diff --git a/03_source/mobile_old.del/supabase.old/reset_supabase_volume.sh b/03_source/mobile_old.del/supabase.old/reset_supabase_volume.sh
deleted file mode 100755
index 8488184..0000000
--- a/03_source/mobile_old.del/supabase.old/reset_supabase_volume.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env bash
-
-CURRENT_DATE=$(date +%Y-%m-%d-%H-%M-%S)
-
-set -e
-
-export DB_URL="postgres://postgres:your-super-secret-and-long-postgres-password@127.0.0.1:5432/postgres"
-export SUPABASE_ACCESS_TOKEN="your-super-secret-jwt-token-with-at-least-32-characters-long"
-
-echo "Press any key to continue..., ctrl-c to cancel"
-read -n 1 -s
-
-# docker compose kill
-# docker compose down
-
-# sleep 1
-
-echo "backup old volumes $CURRENT_DATE"
-sudo mv volumes "volumes.backup.$CURRENT_DATE"
-
-echo "COPY FRESH volume TO volumes"
-cp -r ./volumes.fresh volumes
-
-# docker compose up -d
-# docker compose logs -f
-
-# echo "y" | npx supabase db reset --db-url $DB_URL
-
-# npx supabase db push --db-url $DB_URL
-
-# npx supabase db dump --db-url $DB_URL -f ./dump.sql
-
-# npx supabase db diff --db-url $DB_URL
-# npx supabase db lint --db-url $DB_URL
-# npx supabase db pull --db-url $DB_URL
-
-
-# npx supabase migration new create_employees_table
-# npx supabase db start --db-url $DB_URL
-
-# npx supabase db push --db-url $DB_URL
-# npx supabase db pull --db-url $DB_URL
-# npx supabase db pull --schema auth,storage --db-url $DB_URL
-# npx supabase db reset --db-url $DB_URL
-# npx supabase seed
-
-# npx supabase storage rm media --experimental
diff --git a/03_source/mobile_old.del/supabase.old/supabase.local/.gitignore b/03_source/mobile_old.del/supabase.old/supabase.local/.gitignore
deleted file mode 100644
index a3ad880..0000000
--- a/03_source/mobile_old.del/supabase.old/supabase.local/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# Supabase
-.branches
-.temp
-.env
diff --git a/03_source/mobile_old.del/supabase.old/supabase.local/config.toml b/03_source/mobile_old.del/supabase.old/supabase.local/config.toml
deleted file mode 100644
index 234481a..0000000
--- a/03_source/mobile_old.del/supabase.old/supabase.local/config.toml
+++ /dev/null
@@ -1,237 +0,0 @@
-# A string used to distinguish different Supabase projects on the same host. Defaults to the
-# working directory name when running `supabase init`.
-project_id = "supabase"
-
-[api]
-enabled = true
-# Port to use for the API URL.
-port = 54321
-# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API
-# endpoints. `public` is always included.
-schemas = ["public", "graphql_public"]
-# Extra schemas to add to the search_path of every request. `public` is always included.
-extra_search_path = ["public", "extensions"]
-# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size
-# for accidental or malicious requests.
-max_rows = 1000
-
-[api.tls]
-enabled = false
-
-[db]
-# Port to use for the local database URL.
-port = 54322
-# Port used by db diff command to initialize the shadow database.
-shadow_port = 54320
-# The database major version to use. This has to be the same as your remote database's. Run `SHOW
-# server_version;` on the remote database to check.
-major_version = 15
-
-[db.pooler]
-enabled = false
-# Port to use for the local connection pooler.
-port = 54329
-# Specifies when a server connection can be reused by other clients.
-# Configure one of the supported pooler modes: `transaction`, `session`.
-pool_mode = "transaction"
-# How many server connections to allow per user/database pair.
-default_pool_size = 20
-# Maximum number of client connections allowed.
-max_client_conn = 100
-
-[realtime]
-enabled = true
-# Bind realtime via either IPv4 or IPv6. (default: IPv4)
-# ip_version = "IPv6"
-# The maximum length in bytes of HTTP request headers. (default: 4096)
-# max_header_length = 4096
-
-[studio]
-enabled = true
-# Port to use for Supabase Studio.
-port = 54323
-# External URL of the API server that frontend connects to.
-api_url = "http://127.0.0.1"
-# OpenAI API Key to use for Supabase AI in the Supabase Studio.
-openai_api_key = "env(OPENAI_API_KEY)"
-
-# Email testing server. Emails sent with the local dev setup are not actually sent - rather, they
-# are monitored, and you can view the emails that would have been sent from the web interface.
-[inbucket]
-enabled = true
-# Port to use for the email testing server web interface.
-port = 54324
-# Uncomment to expose additional ports for testing user applications that send emails.
-# smtp_port = 54325
-# pop3_port = 54326
-
-[storage]
-enabled = true
-# The maximum file size allowed (e.g. "5MB", "500KB").
-file_size_limit = "50MiB"
-
-[storage.image_transformation]
-enabled = true
-
-# Uncomment to configure local storage buckets
-# [storage.buckets.images]
-# public = false
-# file_size_limit = "50MiB"
-# allowed_mime_types = ["image/png", "image/jpeg"]
-# objects_path = "./images"
-
-[auth]
-enabled = true
-# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used
-# in emails.
-site_url = "http://127.0.0.1:3000"
-# A list of *exact* URLs that auth providers are permitted to redirect to post authentication.
-additional_redirect_urls = ["https://127.0.0.1:3000"]
-# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week).
-jwt_expiry = 3600
-# If disabled, the refresh token will never expire.
-enable_refresh_token_rotation = true
-# Allows refresh tokens to be reused after expiry, up to the specified interval in seconds.
-# Requires enable_refresh_token_rotation = true.
-refresh_token_reuse_interval = 10
-# Allow/disallow new user signups to your project.
-enable_signup = true
-# Allow/disallow anonymous sign-ins to your project.
-enable_anonymous_sign_ins = false
-# Allow/disallow testing manual linking of accounts
-enable_manual_linking = false
-
-[auth.email]
-# Allow/disallow new user signups via email to your project.
-enable_signup = true
-# If enabled, a user will be required to confirm any email change on both the old, and new email
-# addresses. If disabled, only the new email is required to confirm.
-double_confirm_changes = true
-# If enabled, users need to confirm their email address before signing in.
-enable_confirmations = false
-# Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email.
-max_frequency = "1s"
-
-# Use a production-ready SMTP server
-# [auth.email.smtp]
-# host = "smtp.sendgrid.net"
-# port = 587
-# user = "apikey"
-# pass = "env(SENDGRID_API_KEY)"
-# admin_email = "admin@email.com"
-# sender_name = "Admin"
-
-# Uncomment to customize email template
-# [auth.email.template.invite]
-# subject = "You have been invited"
-# content_path = "./supabase/templates/invite.html"
-
-[auth.sms]
-# Allow/disallow new user signups via SMS to your project.
-enable_signup = true
-# If enabled, users need to confirm their phone number before signing in.
-enable_confirmations = false
-# Template for sending OTP to users
-template = "Your code is {{ .Code }} ."
-# Controls the minimum amount of time that must pass before sending another sms otp.
-max_frequency = "5s"
-
-# Use pre-defined map of phone number to OTP for testing.
-# [auth.sms.test_otp]
-# 4152127777 = "123456"
-
-# Configure logged in session timeouts.
-# [auth.sessions]
-# Force log out after the specified duration.
-# timebox = "24h"
-# Force log out if the user has been inactive longer than the specified duration.
-# inactivity_timeout = "8h"
-
-# This hook runs before a token is issued and allows you to add additional claims based on the authentication method used.
-# [auth.hook.custom_access_token]
-# enabled = true
-# uri = "pg-functions:////"
-
-# Configure one of the supported SMS providers: `twilio`, `twilio_verify`, `messagebird`, `textlocal`, `vonage`.
-[auth.sms.twilio]
-enabled = false
-account_sid = ""
-message_service_sid = ""
-# DO NOT commit your Twilio auth token to git. Use environment variable substitution instead:
-auth_token = "env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)"
-
-[auth.mfa]
-# Control how many MFA factors can be enrolled at once per user.
-max_enrolled_factors = 10
-
-# Control use of MFA via App Authenticator (TOTP)
-[auth.mfa.totp]
-enroll_enabled = true
-verify_enabled = true
-
-# Configure Multi-factor-authentication via Phone Messaging
-# [auth.mfa.phone]
-# enroll_enabled = true
-# verify_enabled = true
-# otp_length = 6
-# template = "Your code is {{ .Code }} ."
-# max_frequency = "10s"
-
-# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`,
-# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin_oidc`, `notion`, `twitch`,
-# `twitter`, `slack`, `spotify`, `workos`, `zoom`.
-[auth.external.apple]
-enabled = false
-client_id = ""
-# DO NOT commit your OAuth provider secret to git. Use environment variable substitution instead:
-secret = "env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)"
-# Overrides the default auth redirectUrl.
-redirect_uri = ""
-# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure,
-# or any other third-party OIDC providers.
-url = ""
-# If enabled, the nonce check will be skipped. Required for local sign in with Google auth.
-skip_nonce_check = false
-
-# Use Firebase Auth as a third-party provider alongside Supabase Auth.
-[auth.third_party.firebase]
-enabled = false
-# project_id = "my-firebase-project"
-
-# Use Auth0 as a third-party provider alongside Supabase Auth.
-[auth.third_party.auth0]
-enabled = false
-# tenant = "my-auth0-tenant"
-# tenant_region = "us"
-
-# Use AWS Cognito (Amplify) as a third-party provider alongside Supabase Auth.
-[auth.third_party.aws_cognito]
-enabled = false
-# user_pool_id = "my-user-pool-id"
-# user_pool_region = "us-east-1"
-
-[edge_runtime]
-enabled = true
-# Configure one of the supported request policies: `oneshot`, `per_worker`.
-# Use `oneshot` for hot reload, or `per_worker` for load testing.
-policy = "oneshot"
-inspector_port = 8083
-
-[analytics]
-enabled = true
-port = 54327
-# Configure one of the supported backends: `postgres`, `bigquery`.
-backend = "postgres"
-
-# Experimental features may be deprecated any time
-[experimental]
-# Configures Postgres storage engine to use OrioleDB (S3)
-orioledb_version = ""
-# Configures S3 bucket URL, eg.