├── server_local ├── data │ └── .gitkeep ├── .gitignore ├── README.md ├── package.json ├── serve.js └── package-lock.json ├── server ├── .gitignore ├── .env.sample ├── .dockerignore ├── Dockerfile ├── package.json ├── README.md ├── serve.js └── package-lock.json ├── web ├── .env.sample ├── README.md ├── src │ ├── tiktok-web.js │ └── TiktokWeb.js ├── .gitignore ├── index.html ├── .editorconfig ├── LICENSE ├── package.json ├── web-dev-server.config.mjs └── rollup.config.js ├── devtools.html ├── overview.png ├── web_accessible_resources.js ├── icons ├── favicon-128x128.png ├── favicon-16x16.png └── favicon-48x48.png ├── popup.html ├── options.html ├── options.js ├── popup.js ├── devtools.js ├── LICENSE ├── manifest.json ├── background.js ├── content-script.js ├── README.md └── overview.drawio /server_local/data/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | uploads 3 | .env -------------------------------------------------------------------------------- /web/.env.sample: -------------------------------------------------------------------------------- 1 | FIREBASE_API_KEY= 2 | FIREBASE_PROJECT_ID= -------------------------------------------------------------------------------- /server_local/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | data/*.json 3 | !.gitignore -------------------------------------------------------------------------------- /server/.env.sample: -------------------------------------------------------------------------------- 1 | GOOGLE_APPLICATION_CREDENTIALS= 2 | GOOGLE_CLOUD_FIRESTORE_COLLECTION= -------------------------------------------------------------------------------- /server/.dockerignore: -------------------------------------------------------------------------------- 1 | Dockerfile 2 | .dockerignore 3 | node_modules 4 | npm-debug.log 5 | .env -------------------------------------------------------------------------------- /web/README.md: -------------------------------------------------------------------------------- 1 | # web 2 | 3 | View data from Google Cloud Firestore. 4 | Uses HTML of TikTok oembed. -------------------------------------------------------------------------------- /server_local/README.md: -------------------------------------------------------------------------------- 1 | # server_local 2 | ## Usage 3 | ``` 4 | $ npm install 5 | $ npm start 6 | ``` -------------------------------------------------------------------------------- /devtools.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverbirder/chrome-extensions-tiktok-scraping-downloader/HEAD/overview.png -------------------------------------------------------------------------------- /web/src/tiktok-web.js: -------------------------------------------------------------------------------- 1 | import { TiktokWeb } from './TiktokWeb.js'; 2 | 3 | customElements.define('tiktok-web', TiktokWeb); -------------------------------------------------------------------------------- /web_accessible_resources.js: -------------------------------------------------------------------------------- 1 | window.postMessage({ from: 'web_accessible_resources.js', data: window["SIGI_STATE"].ItemModule }) -------------------------------------------------------------------------------- /icons/favicon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverbirder/chrome-extensions-tiktok-scraping-downloader/HEAD/icons/favicon-128x128.png -------------------------------------------------------------------------------- /icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverbirder/chrome-extensions-tiktok-scraping-downloader/HEAD/icons/favicon-16x16.png -------------------------------------------------------------------------------- /icons/favicon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverbirder/chrome-extensions-tiktok-scraping-downloader/HEAD/icons/favicon-48x48.png -------------------------------------------------------------------------------- /server/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:14-slim 2 | 3 | WORKDIR /usr/src/app 4 | 5 | COPY package*.json ./ 6 | 7 | RUN npm install --only=production 8 | 9 | COPY . ./ 10 | 11 | CMD [ "npm", "start" ] -------------------------------------------------------------------------------- /popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

Scraping

5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /server_local/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "start": "node serve.js" 7 | }, 8 | "dependencies": { 9 | "cors": "^2.8.5", 10 | "dotenv": "^10.0.0", 11 | "express": "^4.17.2" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /web/.gitignore: -------------------------------------------------------------------------------- 1 | ## editors 2 | /.idea 3 | /.vscode 4 | 5 | ## system files 6 | .DS_Store 7 | 8 | ## npm 9 | /node_modules/ 10 | /npm-debug.log 11 | 12 | ## testing 13 | /coverage/ 14 | 15 | ## temp folders 16 | /.tmp/ 17 | 18 | # build 19 | /_site/ 20 | /dist/ 21 | /out-tsc/ 22 | 23 | storybook-static 24 | .env -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "start": "node serve.js" 7 | }, 8 | "dependencies": { 9 | "@google-cloud/firestore": "^5.0.1", 10 | "cors": "^2.8.5", 11 | "dotenv": "^10.0.0", 12 | "express": "^4.17.2" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/README.md: -------------------------------------------------------------------------------- 1 | # server 2 | ## Usage 3 | ``` 4 | $ npm install 5 | $ cp .env.sample .env 6 | # edit .env file to store to Google Cloud Firestore. 7 | $ npm start 8 | ``` 9 | 10 | ## Misc 11 | 12 | ``` 13 | $ gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/storer 14 | $ gcloud run deploy --image gcr.io/$(gcloud config get-value project)/storer 15 | ``` 16 | -------------------------------------------------------------------------------- /options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

Settings

5 |
6 | 7 | 8 |
9 |
10 | 11 | 12 |
13 | 14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /server_local/serve.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const cors = require('cors'); 3 | const fs = require('fs'); 4 | 5 | const port = process.env.PORT || 3000; 6 | 7 | express() 8 | .use(cors()) 9 | .use(express.json()) 10 | .use(express.urlencoded({ extended: false })) 11 | .post('/', async (req, res, next) => { 12 | const data = req.body.data; 13 | fs.writeFileSync(`./data/${req.body.data.id}.json`, JSON.stringify(data)); 14 | res.sendStatus(200); 15 | }) 16 | .listen(port, () => { 17 | console.log(`Example app listening at http://localhost:${port}`) 18 | }) -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 17 | tiktok web 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /options.js: -------------------------------------------------------------------------------- 1 | (async () => { 2 | document.querySelector('#save').addEventListener('click', async () => { 3 | const url = document.querySelector('#url').value; 4 | const interval = document.querySelector('#interval').value; 5 | const value = { url: url, interval: interval }; 6 | await chrome.storage.sync.set({ ts: value }); 7 | document.querySelector('#message').innerText = 'Saved!!!'; 8 | }); 9 | 10 | const storage = await chrome.storage.sync.get(['ts']); 11 | document.querySelector('#url').value = storage.ts.url; 12 | document.querySelector('#interval').value = storage.ts.interval; 13 | })(); -------------------------------------------------------------------------------- /web/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | 10 | # Change these settings to your own preference 11 | indent_style = space 12 | indent_size = 2 13 | 14 | # We recommend you to keep these unchanged 15 | end_of_line = lf 16 | charset = utf-8 17 | trim_trailing_whitespace = true 18 | insert_final_newline = true 19 | 20 | [*.md] 21 | trim_trailing_whitespace = false 22 | 23 | [*.json] 24 | indent_size = 2 25 | 26 | [*.{html,js,md}] 27 | block_comment_start = /** 28 | block_comment = * 29 | block_comment_end = */ 30 | -------------------------------------------------------------------------------- /popup.js: -------------------------------------------------------------------------------- 1 | document.querySelector('#start').addEventListener('click', async () => { 2 | const tab = await getCurrentTab(); 3 | chrome.tabs.sendMessage(tab.id, { "message": "start" }); 4 | }); 5 | 6 | document.querySelector('#end').addEventListener('click', async () => { 7 | const tab = await getCurrentTab(); 8 | chrome.tabs.sendMessage(tab.id, { "message": "end" }); 9 | }); 10 | 11 | const getCurrentTab = async () => { 12 | const queryOptions = { url: ["https://www.tiktok.com/*"] }; 13 | const tabs = await chrome.tabs.query(queryOptions); 14 | const activeTabs = tabs.filter((t) => t.active === true) 15 | return activeTabs.length > 0 ? activeTabs[0] : tabs[0]; 16 | } -------------------------------------------------------------------------------- /devtools.js: -------------------------------------------------------------------------------- 1 | const getCurrentTab = async () => { 2 | const queryOptions = { url: ["https://www.tiktok.com/*"] }; 3 | const tabs = await chrome.tabs.query(queryOptions); 4 | const activeTabs = tabs.filter((t) => t.active === true) 5 | return activeTabs.length > 0 ? activeTabs[0] : tabs[0]; 6 | } 7 | 8 | chrome.devtools.network.onRequestFinished.addListener( 9 | (details) => { 10 | if (!/item_list/.test(details.request.url)) return; 11 | details.getContent(async (content, encoding) => { 12 | const j = JSON.parse(content); 13 | const tab = await getCurrentTab(); 14 | console.log(`watch ${details.request.url}`); 15 | chrome.tabs.sendMessage(tab.id, { data: j.itemList, from: 'devtools.js' }, (response) => { }); 16 | }); 17 | } 18 | ); -------------------------------------------------------------------------------- /server/serve.js: -------------------------------------------------------------------------------- 1 | require('dotenv').config(); 2 | 3 | const express = require('express'); 4 | const cors = require('cors'); 5 | const { Firestore } = require('@google-cloud/firestore'); 6 | 7 | const port = process.env.PORT || 3000; 8 | 9 | const uploadDoc = async (collectionName, docObj) => { 10 | const firestore = new Firestore(); 11 | const documentRef = firestore.collection(collectionName).doc(docObj.id); 12 | await documentRef.set(docObj); 13 | }; 14 | 15 | express() 16 | .use(cors()) 17 | .use(express.json()) 18 | .use(express.urlencoded({ extended: false })) 19 | .post('/', async (req, res, next) => { 20 | const data = req.body.data; 21 | data['timestamp'] = Date.now(); 22 | await uploadDoc( 23 | process.env.GOOGLE_CLOUD_FIRESTORE_COLLECTION, 24 | req.body.data, 25 | ); 26 | console.log(`saved id:${req.body.data.id}`); 27 | res.sendStatus(200); 28 | }) 29 | .listen(port, () => { 30 | console.log(`Example app listening at http://localhost:${port}`) 31 | }) -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 silverbirder 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /web/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 wc-firestore 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Tiktok-Scraper", 3 | "description": "This extension scrapes a Tiktok web page and either downloads a file or sends a POST.", 4 | "version": "0.0.1", 5 | "manifest_version": 3, 6 | "icons": { 7 | "16": "./icons/favicon-16x16.png", 8 | "48": "./icons/favicon-16x16.png", 9 | "128": "./icons/favicon-16x16.png" 10 | }, 11 | "permissions": [ 12 | "tabs", 13 | "storage", 14 | "downloads" 15 | ], 16 | "content_scripts": [ 17 | { 18 | "matches": [ 19 | "https://*.tiktok.com/*" 20 | ], 21 | "js": [ 22 | "content-script.js" 23 | ] 24 | } 25 | ], 26 | "background": { 27 | "service_worker": "background.js" 28 | }, 29 | "web_accessible_resources": [ 30 | { 31 | "resources": [ 32 | "web_accessible_resources.js" 33 | ], 34 | "matches": [ 35 | "https://*.tiktok.com/*" 36 | ] 37 | } 38 | ], 39 | "options_page": "options.html", 40 | "action": { 41 | "default_popup": "popup.html", 42 | "default_icon": { 43 | "16": "./icons/favicon-16x16.png", 44 | "48": "./icons/favicon-16x16.png", 45 | "128": "./icons/favicon-16x16.png" 46 | } 47 | }, 48 | "devtools_page": "devtools.html" 49 | } -------------------------------------------------------------------------------- /web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tiktok-web", 3 | "description": "Webcomponent tiktok-web following open-wc recommendations", 4 | "license": "MIT", 5 | "author": "tiktok-web", 6 | "version": "0.0.0", 7 | "scripts": { 8 | "build": "rimraf dist && rollup -c rollup.config.js", 9 | "start:build": "web-dev-server --root-dir dist --app-index index.html --open", 10 | "start": "web-dev-server" 11 | }, 12 | "dependencies": { 13 | "firebase": "^9.4.1", 14 | "lit": "^2.0.0-rc.2" 15 | }, 16 | "devDependencies": { 17 | "@babel/preset-env": "^7.15.0", 18 | "@open-wc/building-rollup": "^1.10.0", 19 | "@rollup/plugin-babel": "^5.3.0", 20 | "@rollup/plugin-node-resolve": "^13.0.4", 21 | "@rollup/plugin-replace": "^3.0.1", 22 | "@web/dev-server": "^0.1.21", 23 | "@web/dev-server-rollup": "^0.3.14", 24 | "@web/rollup-plugin-html": "^1.9.1", 25 | "@web/rollup-plugin-import-meta-assets": "^1.0.7", 26 | "babel-plugin-template-html-minifier": "^4.1.0", 27 | "deepmerge": "^4.2.2", 28 | "dotenv": "^11.0.0", 29 | "rimraf": "^3.0.2", 30 | "rollup": "^2.56.2", 31 | "rollup-plugin-dotenv": "^0.3.0", 32 | "rollup-plugin-terser": "^7.0.2", 33 | "rollup-plugin-workbox": "^6.2.0" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /background.js: -------------------------------------------------------------------------------- 1 | const initStorage = async () => { 2 | const storageValue = await chrome.storage.sync.get(['ts']); 3 | if (storageValue.ts !== undefined) return; 4 | const value = { url: "http://localhost:3000", interval: 1000 }; 5 | await chrome.storage.sync.set({ ts: value }); 6 | }; 7 | 8 | const getCurrentTab = async () => { 9 | const queryOptions = { url: ["https://www.tiktok.com/*"] }; 10 | const tabs = await chrome.tabs.query(queryOptions); 11 | const activeTabs = tabs.filter((t) => t.active === true) 12 | return activeTabs.length > 0 ? activeTabs[0] : tabs[0]; 13 | } 14 | 15 | const handleFromContentScript = async (request, sender, sendResponse) => { 16 | const b = btoa(encodeURIComponent(JSON.stringify(request.data))); 17 | const manifest = chrome.runtime.getManifest(); 18 | chrome.downloads.download({ 19 | filename: `${manifest.name}/${request.data.id}.json`, 20 | url: `data:application/json;base64,${b}` 21 | }, (downloadId) => { 22 | console.log(`downloadId: ${downloadId}`); 23 | sendResponse(); 24 | }) 25 | return true; 26 | }; 27 | 28 | chrome.runtime.onInstalled.addListener(async () => { 29 | await initStorage(); 30 | chrome.runtime.onMessage.addListener(handleFromContentScript); 31 | }); -------------------------------------------------------------------------------- /web/web-dev-server.config.mjs: -------------------------------------------------------------------------------- 1 | import dotenv from 'dotenv'; 2 | dotenv.config(); 3 | 4 | // import { hmrPlugin, presets } from '@open-wc/dev-server-hmr'; 5 | /** Use Hot Module replacement by adding --hmr to the start command */ 6 | const hmr = process.argv.includes('--hmr'); 7 | 8 | import { fromRollup } from '@web/dev-server-rollup'; 9 | import rollupReplace from '@rollup/plugin-replace'; 10 | 11 | const replace = fromRollup(rollupReplace); 12 | 13 | export default /** @type {import('@web/dev-server').DevServerConfig} */ ({ 14 | open: '/', 15 | watch: !hmr, 16 | /** Resolve bare module imports */ 17 | nodeResolve: { 18 | exportConditions: ['browser', 'development'], 19 | }, 20 | 21 | /** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */ 22 | // esbuildTarget: 'auto' 23 | 24 | /** Set appIndex to enable SPA routing */ 25 | // appIndex: 'demo/index.html', 26 | 27 | plugins: [ 28 | replace({ 29 | 'process.env.FIREBASE_API_KEY': `"${process.env.FIREBASE_API_KEY}"`, 30 | 'process.env.FIREBASE_PROJECT_ID': `"${process.env.FIREBASE_PROJECT_ID}"`, 31 | }), 32 | /** Use Hot Module Replacement by uncommenting. Requires @open-wc/dev-server-hmr plugin */ 33 | // hmr && hmrPlugin({ exclude: ['**/*/node_modules/**/*'], presets: [presets.litElement] }), 34 | ], 35 | 36 | // See documentation for all available options 37 | }); 38 | -------------------------------------------------------------------------------- /web/src/TiktokWeb.js: -------------------------------------------------------------------------------- 1 | import { LitElement, html } from 'lit'; 2 | import { initializeApp } from "firebase/app" 3 | import { getFirestore, collection, getDocs, query, orderBy, limit, startAfter } from "firebase/firestore" 4 | 5 | export class TiktokWeb extends LitElement { 6 | static get properties() { 7 | return { 8 | docs: { type: Array }, 9 | oembeds: { type: Array }, 10 | }; 11 | } 12 | constructor() { 13 | super(); 14 | const firebaseApp = initializeApp({ 15 | apiKey: process.env.FIREBASE_API_KEY, 16 | projectId: process.env.FIREBASE_PROJECT_ID, 17 | }); 18 | this.db = getFirestore(firebaseApp); 19 | this.docs = []; 20 | this.oembeds = []; 21 | } 22 | 23 | async connectedCallback() { 24 | super.connectedCallback(); 25 | const col = collection(this.db, 'collection'); 26 | const q = query(col, orderBy("timestamp", "desc"), limit(5)); 27 | const querySnapshot = await getDocs(q); 28 | this.docs = querySnapshot.docs.filter((d) => d.data().video); 29 | this.oembeds = await Promise.all(this.docs.map(async (d) => { 30 | const data = d.data(); 31 | const tiktokUrl = `https://www.tiktok.com/@${data.author}/video/${data.video.id}`; 32 | const tiktokOembedUrl = `https://www.tiktok.com/oembed?url=${tiktokUrl}`; 33 | return (await fetch(tiktokOembedUrl)).json(); 34 | })); 35 | } 36 | async readMore() { 37 | const lastDoc = this.docs[this.docs.length - 1]; 38 | const col = collection(this.db, 'collection'); 39 | const q = query(col, orderBy("timestamp", "desc"), limit(5), startAfter(lastDoc)); 40 | const querySnapshot = await getDocs(q); 41 | const incDocs = querySnapshot.docs.filter((d) => d.data().video); 42 | const incOembeds = await Promise.all(incDocs.map(async (d) => { 43 | const data = d.data(); 44 | const tiktokUrl = `https://www.tiktok.com/@${data.author}/video/${data.video.id}`; 45 | const tiktokOembedUrl = `https://www.tiktok.com/oembed?url=${tiktokUrl}`; 46 | return (await fetch(tiktokOembedUrl)).json(); 47 | })); 48 | incDocs.map((d) => { 49 | this.docs.push(d); 50 | }); 51 | incOembeds.map((d) => { 52 | this.oembeds.push(d); 53 | }); 54 | this.requestUpdate(); 55 | } 56 | render() { 57 | // In the html in the tiktok oembed return, the height is specified as 739px. 58 | // @see https://www.tiktok.com/oembed?url=xxxx ... 59 | 60 | // return html` 61 | // `; 63 | return html`${this.oembeds.map((d) => { 64 | return html ``; 65 | })}`; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /content-script.js: -------------------------------------------------------------------------------- 1 | let _started = false; 2 | 3 | const handleFromBackground = async (request, sender, sendResponse) => { 4 | if (request.message === 'start') { 5 | start(); 6 | sendResponse(); 7 | } else if (request.message === 'end') { 8 | end(); 9 | sendResponse(); 10 | } else if (request.data) { 11 | if (!_started) return true; 12 | console.log(`process from ${request.from}`); 13 | process(request.data); 14 | sendResponse(); 15 | } 16 | return true; 17 | }; 18 | 19 | const handleFromWeb = async (event) => { 20 | if (event.data.from) { 21 | const data = event.data.data; 22 | console.log(`process from ${event.data.from}`); 23 | process(Object.values(data)); 24 | } 25 | }; 26 | 27 | const injectScript = (filePath, tag) => { 28 | var node = document.getElementsByTagName(tag)[0]; 29 | var script = document.createElement('script'); 30 | script.setAttribute('type', 'text/javascript'); 31 | script.setAttribute('src', filePath); 32 | script.setAttribute('id', 'inject'); 33 | node.appendChild(script); 34 | } 35 | 36 | const removeInjectScript = () => { 37 | const scriptElement = document.querySelector('#inject'); 38 | if (!scriptElement) return; 39 | scriptElement.remove(); 40 | }; 41 | 42 | const process = async (items) => { 43 | const storage = await chrome.storage.sync.get(['ts']); 44 | console.log('Will post data is below.'); 45 | console.log(items); 46 | const url = storage.ts.url; 47 | Promise.all(items.map(async (i) => { 48 | return fetch(url, { 49 | method: "POST", 50 | headers: { 51 | 'Content-Type': 'application/json' 52 | }, 53 | body: JSON.stringify({ 'data': i }) 54 | }).catch((error) => { 55 | chrome.runtime.sendMessage({ data: i }, (response) => { }); 56 | }); 57 | })) 58 | }; 59 | 60 | const scrollToBottom = async (event) => { 61 | document.scrollingElement.scrollBy(0, document.scrollingElement.scrollHeight) 62 | }; 63 | 64 | const start = () => { 65 | _started = true; 66 | window.addEventListener('message', handleFromWeb); 67 | window.addEventListener('scroll', scrollToBottom); 68 | injectScript(chrome.runtime.getURL('web_accessible_resources.js'), 'body'); 69 | console.log('start tiktok scraping!!!'); 70 | } 71 | 72 | const end = () => { 73 | _started = false; 74 | window.removeEventListener('message', handleFromWeb); 75 | window.removeEventListener('scroll', scrollToBottom); 76 | removeInjectScript(); 77 | console.log('end tiktok scraping'); 78 | }; 79 | 80 | chrome.runtime.onMessage.addListener(handleFromBackground); 81 | 82 | (async () => { 83 | const storage = await chrome.storage.sync.get(['ts']); 84 | setInterval(() => { 85 | window.dispatchEvent(new Event('scroll')); 86 | }, storage.ts.interval); 87 | })(); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # chrome-extensions-tiktok-scraping-downloader 2 | 3 | ## What's this 4 | 5 | This is a Chrome extensions that scrapes and posts Tiktok web pages. 6 | 7 | ## Motivation 8 | 9 | I'm Tik Tok Lover. TikTok does not provide an official API. Therefore, there are various unofficial TikTok APIs such as: 10 | 11 | * https://github.com/davidteather/TikTok-Api 12 | * https://github.com/drawrowfly/tiktok-scraper 13 | 14 | These APIs are great OSSs that meet my needs. However, if the changes on the TikTok side (especially authentication) occurs, these OSSs will not work well. Thanks to the efforts of the OSS developers, the unofficial API works fine, but it's a cat-and-mouse game. 15 | 16 | So, for stability, I came up with a way to scrape [TikTok web page](https://www.tiktok.com) from Chrome extensions. That is this repository. 17 | 18 | ## System Structure 19 | 20 | One video posted by TikTok is called a `TikTok Item`. 21 | On the TikTok web page, there are two ways to get a TikTok Item. 22 | 23 | * First 24 | * First render, set TikTok Item on window object. 25 | * Second and subsequent 26 | * Due to lazy loading, request to TikTok API to get TikTok Item and render. 27 | 28 | To get these TikTok Item from the Chrome extensions, I have the following configuration. 29 | 30 | ![overview](./overview.png) 31 | 32 | * First 33 | * web_accessible_resources.js accesses the window object and gets a TikTok Item. 34 | * Second and subsequent 35 | * background.js monitor requests to the TikTok API and get the request URL. Get TikTok Item using URL. 36 | 37 | The obtained TikTok Item will be POST from content-script.js to the URL you specify. The data is set in a variable called `data`. 38 | 39 | ## Usage 40 | 41 | 1. Load this repository as a Chrome extensions. 42 | 1. see https://developer.chrome.com/docs/extensions/mv3/getstarted/ 43 | 1. Go to the Option page and set your server URL. 44 | 1. Otherwise, it will be `http://localhost:3000`. 45 | 1. In that case, let's start the local [server](./server). 46 | 1. Open the [TikTok web page](https://www.tiktok.com) in your Chrome browser. 47 | 1. Tiktok Item will be POSTed to your server! 48 | 49 | 50 | ## Notes 51 | 52 | Make sure you run it with chrome incognito! 53 | This is because it will not work under the influence of other chrome exteions. 54 | 55 | ### Zip 56 | 57 | ``` 58 | $ zip -r tiktok-scraper-chrome-extension.zip \ 59 | ./chrome-extension-tiktok-downloader/ \ 60 | -x './chrome-extension-tiktok-downloader/server/*' \ 61 | -x './chrome-extension-tiktok-downloader/server_local/*' \ 62 | -x './chrome-extension-tiktok-downloader/web/*' \ 63 | -x './chrome-extension-tiktok-downloader/.git/*' \ 64 | -x './chrome-extension-tiktok-downloader/web/*' \ 65 | -x './chrome-extension-tiktok-downloader/*.md' \ 66 | -x './chrome-extension-tiktok-downloader/.DS_Store' \ 67 | -x './chrome-extension-tiktok-downloader/overview.*' \ 68 | -x './chrome-extension-tiktok-downloader/LICENSE' 69 | ``` 70 | -------------------------------------------------------------------------------- /web/rollup.config.js: -------------------------------------------------------------------------------- 1 | import dotenv from 'dotenv'; 2 | dotenv.config(); 3 | 4 | import nodeResolve from '@rollup/plugin-node-resolve'; 5 | import babel from '@rollup/plugin-babel'; 6 | import html from '@web/rollup-plugin-html'; 7 | import { importMetaAssets } from '@web/rollup-plugin-import-meta-assets'; 8 | import { terser } from 'rollup-plugin-terser'; 9 | import { generateSW } from 'rollup-plugin-workbox'; 10 | import path from 'path'; 11 | import replace from '@rollup/plugin-replace'; 12 | 13 | export default { 14 | input: 'index.html', 15 | output: { 16 | entryFileNames: '[hash].js', 17 | chunkFileNames: '[hash].js', 18 | assetFileNames: '[hash][extname]', 19 | format: 'es', 20 | dir: 'dist', 21 | }, 22 | preserveEntrySignatures: false, 23 | 24 | plugins: [ 25 | replace({ 26 | 'process.env.FIREBASE_API_KEY': `"${process.env.FIREBASE_API_KEY}"`, 27 | 'process.env.FIREBASE_PROJECT_ID': `"${process.env.FIREBASE_PROJECT_ID}"`, 28 | }), 29 | /** Enable using HTML as rollup entrypoint */ 30 | html({ 31 | minify: true, 32 | injectServiceWorker: true, 33 | serviceWorkerPath: 'dist/sw.js', 34 | }), 35 | /** Resolve bare module imports */ 36 | nodeResolve(), 37 | /** Minify JS */ 38 | terser(), 39 | /** Bundle assets references via import.meta.url */ 40 | importMetaAssets(), 41 | /** Compile JS to a lower language target */ 42 | babel({ 43 | babelHelpers: 'bundled', 44 | presets: [ 45 | [ 46 | require.resolve('@babel/preset-env'), 47 | { 48 | targets: [ 49 | 'last 3 Chrome major versions', 50 | 'last 3 Firefox major versions', 51 | 'last 3 Edge major versions', 52 | 'last 3 Safari major versions', 53 | ], 54 | modules: false, 55 | bugfixes: true, 56 | }, 57 | ], 58 | ], 59 | plugins: [ 60 | [ 61 | require.resolve('babel-plugin-template-html-minifier'), 62 | { 63 | modules: { lit: ['html', { name: 'css', encapsulation: 'style' }] }, 64 | failOnError: false, 65 | strictCSS: true, 66 | htmlMinifier: { 67 | collapseWhitespace: true, 68 | conservativeCollapse: true, 69 | removeComments: true, 70 | caseSensitive: true, 71 | minifyCSS: true, 72 | }, 73 | }, 74 | ], 75 | ], 76 | }), 77 | /** Create and inject a service worker */ 78 | generateSW({ 79 | navigateFallback: '/index.html', 80 | // where to output the generated sw 81 | swDest: path.join('dist', 'sw.js'), 82 | // directory to match patterns against to be precached 83 | globDirectory: path.join('dist'), 84 | // cache any html js and css by default 85 | globPatterns: ['**/*.{html,js,css,webmanifest}'], 86 | skipWaiting: true, 87 | clientsClaim: true, 88 | }), 89 | ], 90 | }; 91 | -------------------------------------------------------------------------------- /overview.drawio: -------------------------------------------------------------------------------- 1 | 7VxZc9s4Ev41qtqdKql4U3qUfGSSTXZcY28lmRcXREISLJLgkJAl5dcvQAIiQUBXTPqY2I4jogECILr760ajqZ59EW8+ZCBdfMEhjHqWEW569mXPskaOR/9nhG1JcIejkjDPUFiSzIpwi35ATjQ4dYVCmEsNCcYRQalMDHCSwIBINJBleC03m+FIHjUFc6gQbgMQqdSvKCSLkjq0/Ir+O0TzhRjZ9PjzxUA05k+SL0CI1zWSfdWzLzKMSXkVby5gxNZOrEt53/We2t3EMpiQU24Iw+S/879uPv5xOflhwJsP42W+7ttlL48gWvEH7lne3ys2p8kdWt7hJa39SGBckVmXOVtd+veQ44R+4OkDW3vKmgUgJTMIQEleUGC57BFeo2TObk5mOKOrg3AyoL1GrM9pRq/mZe9Nym9sflQIMP38V4AfIa25oJUgTmltMs3ZB13ZJMIgHIehtnqVFQMWVQYkwb+bLfTjxqscBWxcUZ2nIBENQDRdxZrBRFvKinpzgggVKrV5GoHt/7JImppmKmBFFjhjc0lQsExArOsLPAICsi8wRHxmBzqkNVwwyVZIe4ZXSQiZwBi01XqBCLxNQcBq11S9KW1B4oiWTLaoIF8Ubc1iMdA8odcRnJXP3hROLq+UfQRuaiQurB8gjiHJtrSJqBWKI5DD5eV1pYe2aLOQdJATAdf9+a7vSj3oBdcQvbZcL8YXnz998rdfvs8X/vd+bD78p28PlRWDIYULXsQZZdEcJyC6qqgTeU2rNp8xTvniPUBCthz7KJ+xvM50CbPtN3b/wPRE+XtRdl1RvtzwAcrStl66gRmiC0AVpyTOqHry0SznELNyvMoCeGBBBCKDbA7JoYVzyoZstQ7yPoMRVdRHGXx1fCxuHWcZ2NYapBglJK/1fMMIlUi5nixSjtMQibLDSkB2M/t5mRFyX0fYhgzlJMPLnXlhLN/ZCqOuZ0ZNzwLKK8bQuqDQu1LWZbyZM1s8iHGwXKUDjsYwywdTZhBh9hUlRfeTjIsB67mcxQWOcFZMy/aKH7nGKqsMYxjMZnKVXVYFDvulVTEd8w5uSrG4YIPBYJXllLl/wrwatgOkMDVIsUOPOlLYw2FHSGEpXL9hjoZlmC/IfZAEzIRIAGD6vKxj/FFQPyjxJ/OvoZWmpXBvB+l17lleVzCvMG9BCPM3x6xf63q9Xg8IWhK8pKsbvwaG1vX4lTHXtGXueqpuWjrd7Iy7jsJdtqL0qft5kKGUDB5yhaXcsNBrd0L/GQPLpZhmFH9uAW+MqKP5KtFkJdGDTNTRfFfXpakZu0mzNERtl5qxjcYk6T9VIqdpnAwIyJd7nEWK+EQ4Rzs3aMLB32TCym7+ArJl4ZuU63+Sg9KSbDaAx9HYDVvnYbpdeZijF3EwN4h8Ew4jvea+JS9VniUrbGuFpl9ZOaoNL7UbJ/WQDBz1XN0TPdfX4bj2GybStt26qB1tTyW2e0/XVYB1Daf3IAhgnqNpBO8zWLIlf4fYXxVibfPETXxnCGvbbwZiBZyarx9ObetEPHXbxtMnCYOrjX9GQkEkMRHxT1bRLxVszDZ0XrqpB0fLANttwNSzCgSWvYkQp0b+PoMpjGSZUfYGTOtQAKIxr4hRGJbiyTbUYBqJLYCMpZc/z36hLIq+7wLufNRePaatw4G+MTBMx5TBoCydZzorWyea4NkspzLXlIUWLJqQ6oPBGw7YKC5OEuoMbPKLMLDYUQuO3+AcFYFp+3KKCaG7SXsSsYoJCJbzAnZqe7dZ8UObFION87Q88Sg2kqIwQ5vCBPD5XMpb1yBMzAGivJshCmhZuX+9DgEB9IPRqWG+XoA1v2ILcO2NRkN32Ge1fd/rhzhYxWy7NEMR7LPH7ZvWcJAmc42cKUElo/hhLVEUCXqCE9ihDXJ8S5Y7EYWpGSFvqNogr4XokPbURfWUFLGSogR4RSK647/YnXEZR5AiasiWAiF7hU8vs02vhDp2hbAMigMge0KpIYJVnIEz9Dl4LPZunsrTocavGLbgV2h5auqwog1TIh3D5afaFFJEXqVwkqSK+zl0utnR+qOSp/RCXqblqsJgGroAcAvScJ/e++799sH5ZP65uJ/8/uP+8Vvf9N5VvOtojf98Gq/nsf/O47Z53DzJGT4fj/UPYCgsfa27xZcPyJ26WeTY+EZib41Q2qiRZXO4te09Q+BNtTUhfGRZUu+BtrcQaHvykZqvi6mZKkp2FlPjeRRvHSWfJ852cm7NqTDptQ2TT7OYJ3i+CgQZZqGc4rOm96PhsRr+WasRvak1vybUHfUWj8aslOiS4qoWLIXZ1SMsOatLYAhQHmBzNMiKviZp9jEo5hHjBBGcoTKCVHM2e5Z9PWa/+kiSa/h2NwjrDI8irC5noTuAfVk3lOcdVhh7Psi2h4sd5RIeTRZUDv1LYOZ3VQxuNynx5Gl16mHaatLMucEtyzkU3GomKI9vPp58ehJFKM1hDW+CCK/CPW5cTbyfFKtWALAF1PE1h6OmiDI8y3ZXHNC0HsT8cHXXY3v7Jp8b7xgYn1FO9r8UcH7Qs80zNAaQwt/fG09t3xa5visrvEZIdElKfmdCojs0bSplEo7Z2zeFNoKcvUVxUPda9cH3LvpRV9o81Zc+0RFo2QSNXLmH0lYqFkjpxzHkfhRHZY8pay1AoWY9/6Pfmzi+ZTM68WHODm35slzY/uG0siPtZd9DvbsZG/NPE+fW8tN08fr6a10/a9y+AhIsCmb9vYKV/Wq8/3WCtXqdR3Tn756chsWyNCbLcFXYtLoyWULyWvdfv1ORffdeZe91l6OqOYR9Vm/W6yq76+aP27t/2kH8+W/teL7Mb81bV47GN+pOyd0X9jIqr6L0MkYvfc7mvC13xPcdSaIcObRxbvuODtvUUAhOi5fZC6E4Gur+NUPQb/i0zRvKOOeItMC6XdMBXWcbcG+/I/vErGWKdMWXNPzips1vpKE49vOZNm1yoS782mDGm8tDdo7mIdP5iEuXpVcWFf3a94fUEo9b4Lo9arypqtm26LjunM91Wqy++KW0TNW359hX/wc= -------------------------------------------------------------------------------- /server_local/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "server", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "cors": "^2.8.5", 12 | "dotenv": "^10.0.0", 13 | "express": "^4.17.2" 14 | } 15 | }, 16 | "node_modules/accepts": { 17 | "version": "1.3.7", 18 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 19 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 20 | "dependencies": { 21 | "mime-types": "~2.1.24", 22 | "negotiator": "0.6.2" 23 | }, 24 | "engines": { 25 | "node": ">= 0.6" 26 | } 27 | }, 28 | "node_modules/array-flatten": { 29 | "version": "1.1.1", 30 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 31 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 32 | }, 33 | "node_modules/body-parser": { 34 | "version": "1.19.1", 35 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", 36 | "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", 37 | "dependencies": { 38 | "bytes": "3.1.1", 39 | "content-type": "~1.0.4", 40 | "debug": "2.6.9", 41 | "depd": "~1.1.2", 42 | "http-errors": "1.8.1", 43 | "iconv-lite": "0.4.24", 44 | "on-finished": "~2.3.0", 45 | "qs": "6.9.6", 46 | "raw-body": "2.4.2", 47 | "type-is": "~1.6.18" 48 | }, 49 | "engines": { 50 | "node": ">= 0.8" 51 | } 52 | }, 53 | "node_modules/body-parser/node_modules/http-errors": { 54 | "version": "1.8.1", 55 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 56 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 57 | "dependencies": { 58 | "depd": "~1.1.2", 59 | "inherits": "2.0.4", 60 | "setprototypeof": "1.2.0", 61 | "statuses": ">= 1.5.0 < 2", 62 | "toidentifier": "1.0.1" 63 | }, 64 | "engines": { 65 | "node": ">= 0.6" 66 | } 67 | }, 68 | "node_modules/body-parser/node_modules/inherits": { 69 | "version": "2.0.4", 70 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 71 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 72 | }, 73 | "node_modules/body-parser/node_modules/setprototypeof": { 74 | "version": "1.2.0", 75 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 76 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 77 | }, 78 | "node_modules/bytes": { 79 | "version": "3.1.1", 80 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", 81 | "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", 82 | "engines": { 83 | "node": ">= 0.8" 84 | } 85 | }, 86 | "node_modules/content-disposition": { 87 | "version": "0.5.4", 88 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 89 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 90 | "dependencies": { 91 | "safe-buffer": "5.2.1" 92 | }, 93 | "engines": { 94 | "node": ">= 0.6" 95 | } 96 | }, 97 | "node_modules/content-disposition/node_modules/safe-buffer": { 98 | "version": "5.2.1", 99 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 100 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 101 | "funding": [ 102 | { 103 | "type": "github", 104 | "url": "https://github.com/sponsors/feross" 105 | }, 106 | { 107 | "type": "patreon", 108 | "url": "https://www.patreon.com/feross" 109 | }, 110 | { 111 | "type": "consulting", 112 | "url": "https://feross.org/support" 113 | } 114 | ] 115 | }, 116 | "node_modules/content-type": { 117 | "version": "1.0.4", 118 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 119 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 120 | "engines": { 121 | "node": ">= 0.6" 122 | } 123 | }, 124 | "node_modules/cookie": { 125 | "version": "0.4.1", 126 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", 127 | "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", 128 | "engines": { 129 | "node": ">= 0.6" 130 | } 131 | }, 132 | "node_modules/cookie-signature": { 133 | "version": "1.0.6", 134 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 135 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 136 | }, 137 | "node_modules/cors": { 138 | "version": "2.8.5", 139 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 140 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 141 | "dependencies": { 142 | "object-assign": "^4", 143 | "vary": "^1" 144 | }, 145 | "engines": { 146 | "node": ">= 0.10" 147 | } 148 | }, 149 | "node_modules/debug": { 150 | "version": "2.6.9", 151 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 152 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 153 | "dependencies": { 154 | "ms": "2.0.0" 155 | } 156 | }, 157 | "node_modules/depd": { 158 | "version": "1.1.2", 159 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 160 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 161 | "engines": { 162 | "node": ">= 0.6" 163 | } 164 | }, 165 | "node_modules/destroy": { 166 | "version": "1.0.4", 167 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 168 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 169 | }, 170 | "node_modules/dotenv": { 171 | "version": "10.0.0", 172 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", 173 | "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", 174 | "engines": { 175 | "node": ">=10" 176 | } 177 | }, 178 | "node_modules/ee-first": { 179 | "version": "1.1.1", 180 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 181 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 182 | }, 183 | "node_modules/encodeurl": { 184 | "version": "1.0.2", 185 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 186 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 187 | "engines": { 188 | "node": ">= 0.8" 189 | } 190 | }, 191 | "node_modules/escape-html": { 192 | "version": "1.0.3", 193 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 194 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 195 | }, 196 | "node_modules/etag": { 197 | "version": "1.8.1", 198 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 199 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", 200 | "engines": { 201 | "node": ">= 0.6" 202 | } 203 | }, 204 | "node_modules/express": { 205 | "version": "4.17.2", 206 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", 207 | "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", 208 | "dependencies": { 209 | "accepts": "~1.3.7", 210 | "array-flatten": "1.1.1", 211 | "body-parser": "1.19.1", 212 | "content-disposition": "0.5.4", 213 | "content-type": "~1.0.4", 214 | "cookie": "0.4.1", 215 | "cookie-signature": "1.0.6", 216 | "debug": "2.6.9", 217 | "depd": "~1.1.2", 218 | "encodeurl": "~1.0.2", 219 | "escape-html": "~1.0.3", 220 | "etag": "~1.8.1", 221 | "finalhandler": "~1.1.2", 222 | "fresh": "0.5.2", 223 | "merge-descriptors": "1.0.1", 224 | "methods": "~1.1.2", 225 | "on-finished": "~2.3.0", 226 | "parseurl": "~1.3.3", 227 | "path-to-regexp": "0.1.7", 228 | "proxy-addr": "~2.0.7", 229 | "qs": "6.9.6", 230 | "range-parser": "~1.2.1", 231 | "safe-buffer": "5.2.1", 232 | "send": "0.17.2", 233 | "serve-static": "1.14.2", 234 | "setprototypeof": "1.2.0", 235 | "statuses": "~1.5.0", 236 | "type-is": "~1.6.18", 237 | "utils-merge": "1.0.1", 238 | "vary": "~1.1.2" 239 | }, 240 | "engines": { 241 | "node": ">= 0.10.0" 242 | } 243 | }, 244 | "node_modules/express/node_modules/safe-buffer": { 245 | "version": "5.2.1", 246 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 247 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 248 | "funding": [ 249 | { 250 | "type": "github", 251 | "url": "https://github.com/sponsors/feross" 252 | }, 253 | { 254 | "type": "patreon", 255 | "url": "https://www.patreon.com/feross" 256 | }, 257 | { 258 | "type": "consulting", 259 | "url": "https://feross.org/support" 260 | } 261 | ] 262 | }, 263 | "node_modules/express/node_modules/setprototypeof": { 264 | "version": "1.2.0", 265 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 266 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 267 | }, 268 | "node_modules/finalhandler": { 269 | "version": "1.1.2", 270 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 271 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 272 | "dependencies": { 273 | "debug": "2.6.9", 274 | "encodeurl": "~1.0.2", 275 | "escape-html": "~1.0.3", 276 | "on-finished": "~2.3.0", 277 | "parseurl": "~1.3.3", 278 | "statuses": "~1.5.0", 279 | "unpipe": "~1.0.0" 280 | }, 281 | "engines": { 282 | "node": ">= 0.8" 283 | } 284 | }, 285 | "node_modules/forwarded": { 286 | "version": "0.2.0", 287 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 288 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 289 | "engines": { 290 | "node": ">= 0.6" 291 | } 292 | }, 293 | "node_modules/fresh": { 294 | "version": "0.5.2", 295 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 296 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 297 | "engines": { 298 | "node": ">= 0.6" 299 | } 300 | }, 301 | "node_modules/iconv-lite": { 302 | "version": "0.4.24", 303 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 304 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 305 | "dependencies": { 306 | "safer-buffer": ">= 2.1.2 < 3" 307 | }, 308 | "engines": { 309 | "node": ">=0.10.0" 310 | } 311 | }, 312 | "node_modules/ipaddr.js": { 313 | "version": "1.9.1", 314 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 315 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 316 | "engines": { 317 | "node": ">= 0.10" 318 | } 319 | }, 320 | "node_modules/media-typer": { 321 | "version": "0.3.0", 322 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 323 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 324 | "engines": { 325 | "node": ">= 0.6" 326 | } 327 | }, 328 | "node_modules/merge-descriptors": { 329 | "version": "1.0.1", 330 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 331 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 332 | }, 333 | "node_modules/methods": { 334 | "version": "1.1.2", 335 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 336 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 337 | "engines": { 338 | "node": ">= 0.6" 339 | } 340 | }, 341 | "node_modules/mime": { 342 | "version": "1.6.0", 343 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 344 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 345 | "bin": { 346 | "mime": "cli.js" 347 | }, 348 | "engines": { 349 | "node": ">=4" 350 | } 351 | }, 352 | "node_modules/mime-db": { 353 | "version": "1.51.0", 354 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", 355 | "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", 356 | "engines": { 357 | "node": ">= 0.6" 358 | } 359 | }, 360 | "node_modules/mime-types": { 361 | "version": "2.1.34", 362 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", 363 | "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", 364 | "dependencies": { 365 | "mime-db": "1.51.0" 366 | }, 367 | "engines": { 368 | "node": ">= 0.6" 369 | } 370 | }, 371 | "node_modules/ms": { 372 | "version": "2.0.0", 373 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 374 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 375 | }, 376 | "node_modules/negotiator": { 377 | "version": "0.6.2", 378 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 379 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", 380 | "engines": { 381 | "node": ">= 0.6" 382 | } 383 | }, 384 | "node_modules/object-assign": { 385 | "version": "4.1.1", 386 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 387 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 388 | "engines": { 389 | "node": ">=0.10.0" 390 | } 391 | }, 392 | "node_modules/on-finished": { 393 | "version": "2.3.0", 394 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 395 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 396 | "dependencies": { 397 | "ee-first": "1.1.1" 398 | }, 399 | "engines": { 400 | "node": ">= 0.8" 401 | } 402 | }, 403 | "node_modules/parseurl": { 404 | "version": "1.3.3", 405 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 406 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 407 | "engines": { 408 | "node": ">= 0.8" 409 | } 410 | }, 411 | "node_modules/path-to-regexp": { 412 | "version": "0.1.7", 413 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 414 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 415 | }, 416 | "node_modules/proxy-addr": { 417 | "version": "2.0.7", 418 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 419 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 420 | "dependencies": { 421 | "forwarded": "0.2.0", 422 | "ipaddr.js": "1.9.1" 423 | }, 424 | "engines": { 425 | "node": ">= 0.10" 426 | } 427 | }, 428 | "node_modules/qs": { 429 | "version": "6.9.6", 430 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", 431 | "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", 432 | "engines": { 433 | "node": ">=0.6" 434 | }, 435 | "funding": { 436 | "url": "https://github.com/sponsors/ljharb" 437 | } 438 | }, 439 | "node_modules/range-parser": { 440 | "version": "1.2.1", 441 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 442 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 443 | "engines": { 444 | "node": ">= 0.6" 445 | } 446 | }, 447 | "node_modules/raw-body": { 448 | "version": "2.4.2", 449 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", 450 | "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", 451 | "dependencies": { 452 | "bytes": "3.1.1", 453 | "http-errors": "1.8.1", 454 | "iconv-lite": "0.4.24", 455 | "unpipe": "1.0.0" 456 | }, 457 | "engines": { 458 | "node": ">= 0.8" 459 | } 460 | }, 461 | "node_modules/raw-body/node_modules/http-errors": { 462 | "version": "1.8.1", 463 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 464 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 465 | "dependencies": { 466 | "depd": "~1.1.2", 467 | "inherits": "2.0.4", 468 | "setprototypeof": "1.2.0", 469 | "statuses": ">= 1.5.0 < 2", 470 | "toidentifier": "1.0.1" 471 | }, 472 | "engines": { 473 | "node": ">= 0.6" 474 | } 475 | }, 476 | "node_modules/raw-body/node_modules/inherits": { 477 | "version": "2.0.4", 478 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 479 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 480 | }, 481 | "node_modules/raw-body/node_modules/setprototypeof": { 482 | "version": "1.2.0", 483 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 484 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 485 | }, 486 | "node_modules/safer-buffer": { 487 | "version": "2.1.2", 488 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 489 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 490 | }, 491 | "node_modules/send": { 492 | "version": "0.17.2", 493 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", 494 | "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", 495 | "dependencies": { 496 | "debug": "2.6.9", 497 | "depd": "~1.1.2", 498 | "destroy": "~1.0.4", 499 | "encodeurl": "~1.0.2", 500 | "escape-html": "~1.0.3", 501 | "etag": "~1.8.1", 502 | "fresh": "0.5.2", 503 | "http-errors": "1.8.1", 504 | "mime": "1.6.0", 505 | "ms": "2.1.3", 506 | "on-finished": "~2.3.0", 507 | "range-parser": "~1.2.1", 508 | "statuses": "~1.5.0" 509 | }, 510 | "engines": { 511 | "node": ">= 0.8.0" 512 | } 513 | }, 514 | "node_modules/send/node_modules/http-errors": { 515 | "version": "1.8.1", 516 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 517 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 518 | "dependencies": { 519 | "depd": "~1.1.2", 520 | "inherits": "2.0.4", 521 | "setprototypeof": "1.2.0", 522 | "statuses": ">= 1.5.0 < 2", 523 | "toidentifier": "1.0.1" 524 | }, 525 | "engines": { 526 | "node": ">= 0.6" 527 | } 528 | }, 529 | "node_modules/send/node_modules/inherits": { 530 | "version": "2.0.4", 531 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 532 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 533 | }, 534 | "node_modules/send/node_modules/ms": { 535 | "version": "2.1.3", 536 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 537 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 538 | }, 539 | "node_modules/send/node_modules/setprototypeof": { 540 | "version": "1.2.0", 541 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 542 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 543 | }, 544 | "node_modules/serve-static": { 545 | "version": "1.14.2", 546 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", 547 | "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", 548 | "dependencies": { 549 | "encodeurl": "~1.0.2", 550 | "escape-html": "~1.0.3", 551 | "parseurl": "~1.3.3", 552 | "send": "0.17.2" 553 | }, 554 | "engines": { 555 | "node": ">= 0.8.0" 556 | } 557 | }, 558 | "node_modules/statuses": { 559 | "version": "1.5.0", 560 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 561 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 562 | "engines": { 563 | "node": ">= 0.6" 564 | } 565 | }, 566 | "node_modules/toidentifier": { 567 | "version": "1.0.1", 568 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 569 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 570 | "engines": { 571 | "node": ">=0.6" 572 | } 573 | }, 574 | "node_modules/type-is": { 575 | "version": "1.6.18", 576 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 577 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 578 | "dependencies": { 579 | "media-typer": "0.3.0", 580 | "mime-types": "~2.1.24" 581 | }, 582 | "engines": { 583 | "node": ">= 0.6" 584 | } 585 | }, 586 | "node_modules/unpipe": { 587 | "version": "1.0.0", 588 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 589 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 590 | "engines": { 591 | "node": ">= 0.8" 592 | } 593 | }, 594 | "node_modules/utils-merge": { 595 | "version": "1.0.1", 596 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 597 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 598 | "engines": { 599 | "node": ">= 0.4.0" 600 | } 601 | }, 602 | "node_modules/vary": { 603 | "version": "1.1.2", 604 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 605 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 606 | "engines": { 607 | "node": ">= 0.8" 608 | } 609 | } 610 | }, 611 | "dependencies": { 612 | "accepts": { 613 | "version": "1.3.7", 614 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 615 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 616 | "requires": { 617 | "mime-types": "~2.1.24", 618 | "negotiator": "0.6.2" 619 | } 620 | }, 621 | "array-flatten": { 622 | "version": "1.1.1", 623 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 624 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 625 | }, 626 | "body-parser": { 627 | "version": "1.19.1", 628 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", 629 | "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", 630 | "requires": { 631 | "bytes": "3.1.1", 632 | "content-type": "~1.0.4", 633 | "debug": "2.6.9", 634 | "depd": "~1.1.2", 635 | "http-errors": "1.8.1", 636 | "iconv-lite": "0.4.24", 637 | "on-finished": "~2.3.0", 638 | "qs": "6.9.6", 639 | "raw-body": "2.4.2", 640 | "type-is": "~1.6.18" 641 | }, 642 | "dependencies": { 643 | "http-errors": { 644 | "version": "1.8.1", 645 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 646 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 647 | "requires": { 648 | "depd": "~1.1.2", 649 | "inherits": "2.0.4", 650 | "setprototypeof": "1.2.0", 651 | "statuses": ">= 1.5.0 < 2", 652 | "toidentifier": "1.0.1" 653 | } 654 | }, 655 | "inherits": { 656 | "version": "2.0.4", 657 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 658 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 659 | }, 660 | "setprototypeof": { 661 | "version": "1.2.0", 662 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 663 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 664 | } 665 | } 666 | }, 667 | "bytes": { 668 | "version": "3.1.1", 669 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", 670 | "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==" 671 | }, 672 | "content-disposition": { 673 | "version": "0.5.4", 674 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 675 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 676 | "requires": { 677 | "safe-buffer": "5.2.1" 678 | }, 679 | "dependencies": { 680 | "safe-buffer": { 681 | "version": "5.2.1", 682 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 683 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 684 | } 685 | } 686 | }, 687 | "content-type": { 688 | "version": "1.0.4", 689 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 690 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 691 | }, 692 | "cookie": { 693 | "version": "0.4.1", 694 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", 695 | "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" 696 | }, 697 | "cookie-signature": { 698 | "version": "1.0.6", 699 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 700 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 701 | }, 702 | "cors": { 703 | "version": "2.8.5", 704 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 705 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 706 | "requires": { 707 | "object-assign": "^4", 708 | "vary": "^1" 709 | } 710 | }, 711 | "debug": { 712 | "version": "2.6.9", 713 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 714 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 715 | "requires": { 716 | "ms": "2.0.0" 717 | } 718 | }, 719 | "depd": { 720 | "version": "1.1.2", 721 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 722 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 723 | }, 724 | "destroy": { 725 | "version": "1.0.4", 726 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 727 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 728 | }, 729 | "dotenv": { 730 | "version": "10.0.0", 731 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", 732 | "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" 733 | }, 734 | "ee-first": { 735 | "version": "1.1.1", 736 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 737 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 738 | }, 739 | "encodeurl": { 740 | "version": "1.0.2", 741 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 742 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 743 | }, 744 | "escape-html": { 745 | "version": "1.0.3", 746 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 747 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 748 | }, 749 | "etag": { 750 | "version": "1.8.1", 751 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 752 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 753 | }, 754 | "express": { 755 | "version": "4.17.2", 756 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", 757 | "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", 758 | "requires": { 759 | "accepts": "~1.3.7", 760 | "array-flatten": "1.1.1", 761 | "body-parser": "1.19.1", 762 | "content-disposition": "0.5.4", 763 | "content-type": "~1.0.4", 764 | "cookie": "0.4.1", 765 | "cookie-signature": "1.0.6", 766 | "debug": "2.6.9", 767 | "depd": "~1.1.2", 768 | "encodeurl": "~1.0.2", 769 | "escape-html": "~1.0.3", 770 | "etag": "~1.8.1", 771 | "finalhandler": "~1.1.2", 772 | "fresh": "0.5.2", 773 | "merge-descriptors": "1.0.1", 774 | "methods": "~1.1.2", 775 | "on-finished": "~2.3.0", 776 | "parseurl": "~1.3.3", 777 | "path-to-regexp": "0.1.7", 778 | "proxy-addr": "~2.0.7", 779 | "qs": "6.9.6", 780 | "range-parser": "~1.2.1", 781 | "safe-buffer": "5.2.1", 782 | "send": "0.17.2", 783 | "serve-static": "1.14.2", 784 | "setprototypeof": "1.2.0", 785 | "statuses": "~1.5.0", 786 | "type-is": "~1.6.18", 787 | "utils-merge": "1.0.1", 788 | "vary": "~1.1.2" 789 | }, 790 | "dependencies": { 791 | "safe-buffer": { 792 | "version": "5.2.1", 793 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 794 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 795 | }, 796 | "setprototypeof": { 797 | "version": "1.2.0", 798 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 799 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 800 | } 801 | } 802 | }, 803 | "finalhandler": { 804 | "version": "1.1.2", 805 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 806 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 807 | "requires": { 808 | "debug": "2.6.9", 809 | "encodeurl": "~1.0.2", 810 | "escape-html": "~1.0.3", 811 | "on-finished": "~2.3.0", 812 | "parseurl": "~1.3.3", 813 | "statuses": "~1.5.0", 814 | "unpipe": "~1.0.0" 815 | } 816 | }, 817 | "forwarded": { 818 | "version": "0.2.0", 819 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 820 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 821 | }, 822 | "fresh": { 823 | "version": "0.5.2", 824 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 825 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 826 | }, 827 | "iconv-lite": { 828 | "version": "0.4.24", 829 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 830 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 831 | "requires": { 832 | "safer-buffer": ">= 2.1.2 < 3" 833 | } 834 | }, 835 | "ipaddr.js": { 836 | "version": "1.9.1", 837 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 838 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 839 | }, 840 | "media-typer": { 841 | "version": "0.3.0", 842 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 843 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 844 | }, 845 | "merge-descriptors": { 846 | "version": "1.0.1", 847 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 848 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 849 | }, 850 | "methods": { 851 | "version": "1.1.2", 852 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 853 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 854 | }, 855 | "mime": { 856 | "version": "1.6.0", 857 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 858 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 859 | }, 860 | "mime-db": { 861 | "version": "1.51.0", 862 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", 863 | "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" 864 | }, 865 | "mime-types": { 866 | "version": "2.1.34", 867 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", 868 | "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", 869 | "requires": { 870 | "mime-db": "1.51.0" 871 | } 872 | }, 873 | "ms": { 874 | "version": "2.0.0", 875 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 876 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 877 | }, 878 | "negotiator": { 879 | "version": "0.6.2", 880 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 881 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 882 | }, 883 | "object-assign": { 884 | "version": "4.1.1", 885 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 886 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 887 | }, 888 | "on-finished": { 889 | "version": "2.3.0", 890 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 891 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 892 | "requires": { 893 | "ee-first": "1.1.1" 894 | } 895 | }, 896 | "parseurl": { 897 | "version": "1.3.3", 898 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 899 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 900 | }, 901 | "path-to-regexp": { 902 | "version": "0.1.7", 903 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 904 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 905 | }, 906 | "proxy-addr": { 907 | "version": "2.0.7", 908 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 909 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 910 | "requires": { 911 | "forwarded": "0.2.0", 912 | "ipaddr.js": "1.9.1" 913 | } 914 | }, 915 | "qs": { 916 | "version": "6.9.6", 917 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", 918 | "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" 919 | }, 920 | "range-parser": { 921 | "version": "1.2.1", 922 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 923 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 924 | }, 925 | "raw-body": { 926 | "version": "2.4.2", 927 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", 928 | "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", 929 | "requires": { 930 | "bytes": "3.1.1", 931 | "http-errors": "1.8.1", 932 | "iconv-lite": "0.4.24", 933 | "unpipe": "1.0.0" 934 | }, 935 | "dependencies": { 936 | "http-errors": { 937 | "version": "1.8.1", 938 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 939 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 940 | "requires": { 941 | "depd": "~1.1.2", 942 | "inherits": "2.0.4", 943 | "setprototypeof": "1.2.0", 944 | "statuses": ">= 1.5.0 < 2", 945 | "toidentifier": "1.0.1" 946 | } 947 | }, 948 | "inherits": { 949 | "version": "2.0.4", 950 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 951 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 952 | }, 953 | "setprototypeof": { 954 | "version": "1.2.0", 955 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 956 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 957 | } 958 | } 959 | }, 960 | "safer-buffer": { 961 | "version": "2.1.2", 962 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 963 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 964 | }, 965 | "send": { 966 | "version": "0.17.2", 967 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", 968 | "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", 969 | "requires": { 970 | "debug": "2.6.9", 971 | "depd": "~1.1.2", 972 | "destroy": "~1.0.4", 973 | "encodeurl": "~1.0.2", 974 | "escape-html": "~1.0.3", 975 | "etag": "~1.8.1", 976 | "fresh": "0.5.2", 977 | "http-errors": "1.8.1", 978 | "mime": "1.6.0", 979 | "ms": "2.1.3", 980 | "on-finished": "~2.3.0", 981 | "range-parser": "~1.2.1", 982 | "statuses": "~1.5.0" 983 | }, 984 | "dependencies": { 985 | "http-errors": { 986 | "version": "1.8.1", 987 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 988 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 989 | "requires": { 990 | "depd": "~1.1.2", 991 | "inherits": "2.0.4", 992 | "setprototypeof": "1.2.0", 993 | "statuses": ">= 1.5.0 < 2", 994 | "toidentifier": "1.0.1" 995 | } 996 | }, 997 | "inherits": { 998 | "version": "2.0.4", 999 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1000 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1001 | }, 1002 | "ms": { 1003 | "version": "2.1.3", 1004 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1005 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1006 | }, 1007 | "setprototypeof": { 1008 | "version": "1.2.0", 1009 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1010 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1011 | } 1012 | } 1013 | }, 1014 | "serve-static": { 1015 | "version": "1.14.2", 1016 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", 1017 | "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", 1018 | "requires": { 1019 | "encodeurl": "~1.0.2", 1020 | "escape-html": "~1.0.3", 1021 | "parseurl": "~1.3.3", 1022 | "send": "0.17.2" 1023 | } 1024 | }, 1025 | "statuses": { 1026 | "version": "1.5.0", 1027 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1028 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 1029 | }, 1030 | "toidentifier": { 1031 | "version": "1.0.1", 1032 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1033 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 1034 | }, 1035 | "type-is": { 1036 | "version": "1.6.18", 1037 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1038 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1039 | "requires": { 1040 | "media-typer": "0.3.0", 1041 | "mime-types": "~2.1.24" 1042 | } 1043 | }, 1044 | "unpipe": { 1045 | "version": "1.0.0", 1046 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1047 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1048 | }, 1049 | "utils-merge": { 1050 | "version": "1.0.1", 1051 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1052 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1053 | }, 1054 | "vary": { 1055 | "version": "1.1.2", 1056 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1057 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1058 | } 1059 | } 1060 | } 1061 | -------------------------------------------------------------------------------- /server/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "server", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "@google-cloud/firestore": "^5.0.1", 12 | "cookie-parser": "~1.4.4", 13 | "cors": "^2.8.5", 14 | "dotenv": "^10.0.0", 15 | "express": "^4.17.2" 16 | } 17 | }, 18 | "node_modules/@google-cloud/firestore": { 19 | "version": "5.0.1", 20 | "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-5.0.1.tgz", 21 | "integrity": "sha512-HYj/9ZxgtMO7rwEyoiaYA78ivi4q4PaPoY0IZJQaPmKj9Z3l3ZWJCZKbl4kEiBZ+HtcvIMOVNjBm0lQXkGj37g==", 22 | "dependencies": { 23 | "fast-deep-equal": "^3.1.1", 24 | "functional-red-black-tree": "^1.0.1", 25 | "google-gax": "^2.24.1", 26 | "protobufjs": "^6.8.6" 27 | }, 28 | "engines": { 29 | "node": ">=10.10.0" 30 | } 31 | }, 32 | "node_modules/@grpc/grpc-js": { 33 | "version": "1.4.5", 34 | "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.4.5.tgz", 35 | "integrity": "sha512-A6cOzSu7dqXZ7rzvh/9JZf+Jg/MOpLEMP0IdT8pT8hrWJZ6TB4ydN/MRuqOtAugInJe/VQ9F8BPricUpYZSaZA==", 36 | "dependencies": { 37 | "@grpc/proto-loader": "^0.6.4", 38 | "@types/node": ">=12.12.47" 39 | }, 40 | "engines": { 41 | "node": "^8.13.0 || >=10.10.0" 42 | } 43 | }, 44 | "node_modules/@grpc/proto-loader": { 45 | "version": "0.6.7", 46 | "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.7.tgz", 47 | "integrity": "sha512-QzTPIyJxU0u+r2qGe8VMl3j/W2ryhEvBv7hc42OjYfthSj370fUrb7na65rG6w3YLZS/fb8p89iTBobfWGDgdw==", 48 | "dependencies": { 49 | "@types/long": "^4.0.1", 50 | "lodash.camelcase": "^4.3.0", 51 | "long": "^4.0.0", 52 | "protobufjs": "^6.10.0", 53 | "yargs": "^16.1.1" 54 | }, 55 | "bin": { 56 | "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" 57 | }, 58 | "engines": { 59 | "node": ">=6" 60 | } 61 | }, 62 | "node_modules/@protobufjs/aspromise": { 63 | "version": "1.1.2", 64 | "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", 65 | "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" 66 | }, 67 | "node_modules/@protobufjs/base64": { 68 | "version": "1.1.2", 69 | "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", 70 | "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" 71 | }, 72 | "node_modules/@protobufjs/codegen": { 73 | "version": "2.0.4", 74 | "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", 75 | "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" 76 | }, 77 | "node_modules/@protobufjs/eventemitter": { 78 | "version": "1.1.0", 79 | "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", 80 | "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" 81 | }, 82 | "node_modules/@protobufjs/fetch": { 83 | "version": "1.1.0", 84 | "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", 85 | "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", 86 | "dependencies": { 87 | "@protobufjs/aspromise": "^1.1.1", 88 | "@protobufjs/inquire": "^1.1.0" 89 | } 90 | }, 91 | "node_modules/@protobufjs/float": { 92 | "version": "1.0.2", 93 | "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", 94 | "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" 95 | }, 96 | "node_modules/@protobufjs/inquire": { 97 | "version": "1.1.0", 98 | "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", 99 | "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" 100 | }, 101 | "node_modules/@protobufjs/path": { 102 | "version": "1.1.2", 103 | "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", 104 | "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" 105 | }, 106 | "node_modules/@protobufjs/pool": { 107 | "version": "1.1.0", 108 | "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", 109 | "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" 110 | }, 111 | "node_modules/@protobufjs/utf8": { 112 | "version": "1.1.0", 113 | "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", 114 | "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" 115 | }, 116 | "node_modules/@types/long": { 117 | "version": "4.0.1", 118 | "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", 119 | "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" 120 | }, 121 | "node_modules/@types/node": { 122 | "version": "17.0.7", 123 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.7.tgz", 124 | "integrity": "sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ==" 125 | }, 126 | "node_modules/abort-controller": { 127 | "version": "3.0.0", 128 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 129 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 130 | "dependencies": { 131 | "event-target-shim": "^5.0.0" 132 | }, 133 | "engines": { 134 | "node": ">=6.5" 135 | } 136 | }, 137 | "node_modules/accepts": { 138 | "version": "1.3.7", 139 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 140 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 141 | "dependencies": { 142 | "mime-types": "~2.1.24", 143 | "negotiator": "0.6.2" 144 | }, 145 | "engines": { 146 | "node": ">= 0.6" 147 | } 148 | }, 149 | "node_modules/agent-base": { 150 | "version": "6.0.2", 151 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 152 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 153 | "dependencies": { 154 | "debug": "4" 155 | }, 156 | "engines": { 157 | "node": ">= 6.0.0" 158 | } 159 | }, 160 | "node_modules/agent-base/node_modules/debug": { 161 | "version": "4.3.3", 162 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 163 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 164 | "dependencies": { 165 | "ms": "2.1.2" 166 | }, 167 | "engines": { 168 | "node": ">=6.0" 169 | }, 170 | "peerDependenciesMeta": { 171 | "supports-color": { 172 | "optional": true 173 | } 174 | } 175 | }, 176 | "node_modules/agent-base/node_modules/ms": { 177 | "version": "2.1.2", 178 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 179 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 180 | }, 181 | "node_modules/ansi-regex": { 182 | "version": "5.0.1", 183 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 184 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 185 | "engines": { 186 | "node": ">=8" 187 | } 188 | }, 189 | "node_modules/ansi-styles": { 190 | "version": "4.3.0", 191 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 192 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 193 | "dependencies": { 194 | "color-convert": "^2.0.1" 195 | }, 196 | "engines": { 197 | "node": ">=8" 198 | }, 199 | "funding": { 200 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 201 | } 202 | }, 203 | "node_modules/array-flatten": { 204 | "version": "1.1.1", 205 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 206 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 207 | }, 208 | "node_modules/arrify": { 209 | "version": "2.0.1", 210 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", 211 | "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", 212 | "engines": { 213 | "node": ">=8" 214 | } 215 | }, 216 | "node_modules/base64-js": { 217 | "version": "1.5.1", 218 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 219 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 220 | "funding": [ 221 | { 222 | "type": "github", 223 | "url": "https://github.com/sponsors/feross" 224 | }, 225 | { 226 | "type": "patreon", 227 | "url": "https://www.patreon.com/feross" 228 | }, 229 | { 230 | "type": "consulting", 231 | "url": "https://feross.org/support" 232 | } 233 | ] 234 | }, 235 | "node_modules/bignumber.js": { 236 | "version": "9.0.2", 237 | "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz", 238 | "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==", 239 | "engines": { 240 | "node": "*" 241 | } 242 | }, 243 | "node_modules/body-parser": { 244 | "version": "1.19.1", 245 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", 246 | "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", 247 | "dependencies": { 248 | "bytes": "3.1.1", 249 | "content-type": "~1.0.4", 250 | "debug": "2.6.9", 251 | "depd": "~1.1.2", 252 | "http-errors": "1.8.1", 253 | "iconv-lite": "0.4.24", 254 | "on-finished": "~2.3.0", 255 | "qs": "6.9.6", 256 | "raw-body": "2.4.2", 257 | "type-is": "~1.6.18" 258 | }, 259 | "engines": { 260 | "node": ">= 0.8" 261 | } 262 | }, 263 | "node_modules/body-parser/node_modules/http-errors": { 264 | "version": "1.8.1", 265 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 266 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 267 | "dependencies": { 268 | "depd": "~1.1.2", 269 | "inherits": "2.0.4", 270 | "setprototypeof": "1.2.0", 271 | "statuses": ">= 1.5.0 < 2", 272 | "toidentifier": "1.0.1" 273 | }, 274 | "engines": { 275 | "node": ">= 0.6" 276 | } 277 | }, 278 | "node_modules/body-parser/node_modules/inherits": { 279 | "version": "2.0.4", 280 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 281 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 282 | }, 283 | "node_modules/body-parser/node_modules/setprototypeof": { 284 | "version": "1.2.0", 285 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 286 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 287 | }, 288 | "node_modules/buffer-equal-constant-time": { 289 | "version": "1.0.1", 290 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 291 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 292 | }, 293 | "node_modules/bytes": { 294 | "version": "3.1.1", 295 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", 296 | "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", 297 | "engines": { 298 | "node": ">= 0.8" 299 | } 300 | }, 301 | "node_modules/cliui": { 302 | "version": "7.0.4", 303 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 304 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 305 | "dependencies": { 306 | "string-width": "^4.2.0", 307 | "strip-ansi": "^6.0.0", 308 | "wrap-ansi": "^7.0.0" 309 | } 310 | }, 311 | "node_modules/color-convert": { 312 | "version": "2.0.1", 313 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 314 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 315 | "dependencies": { 316 | "color-name": "~1.1.4" 317 | }, 318 | "engines": { 319 | "node": ">=7.0.0" 320 | } 321 | }, 322 | "node_modules/color-name": { 323 | "version": "1.1.4", 324 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 325 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 326 | }, 327 | "node_modules/content-disposition": { 328 | "version": "0.5.4", 329 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 330 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 331 | "dependencies": { 332 | "safe-buffer": "5.2.1" 333 | }, 334 | "engines": { 335 | "node": ">= 0.6" 336 | } 337 | }, 338 | "node_modules/content-disposition/node_modules/safe-buffer": { 339 | "version": "5.2.1", 340 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 341 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 342 | "funding": [ 343 | { 344 | "type": "github", 345 | "url": "https://github.com/sponsors/feross" 346 | }, 347 | { 348 | "type": "patreon", 349 | "url": "https://www.patreon.com/feross" 350 | }, 351 | { 352 | "type": "consulting", 353 | "url": "https://feross.org/support" 354 | } 355 | ] 356 | }, 357 | "node_modules/content-type": { 358 | "version": "1.0.4", 359 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 360 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 361 | "engines": { 362 | "node": ">= 0.6" 363 | } 364 | }, 365 | "node_modules/cookie": { 366 | "version": "0.4.1", 367 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", 368 | "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", 369 | "engines": { 370 | "node": ">= 0.6" 371 | } 372 | }, 373 | "node_modules/cookie-parser": { 374 | "version": "1.4.6", 375 | "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", 376 | "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", 377 | "dependencies": { 378 | "cookie": "0.4.1", 379 | "cookie-signature": "1.0.6" 380 | }, 381 | "engines": { 382 | "node": ">= 0.8.0" 383 | } 384 | }, 385 | "node_modules/cookie-signature": { 386 | "version": "1.0.6", 387 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 388 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 389 | }, 390 | "node_modules/cors": { 391 | "version": "2.8.5", 392 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 393 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 394 | "dependencies": { 395 | "object-assign": "^4", 396 | "vary": "^1" 397 | }, 398 | "engines": { 399 | "node": ">= 0.10" 400 | } 401 | }, 402 | "node_modules/debug": { 403 | "version": "2.6.9", 404 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 405 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 406 | "dependencies": { 407 | "ms": "2.0.0" 408 | } 409 | }, 410 | "node_modules/depd": { 411 | "version": "1.1.2", 412 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 413 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 414 | "engines": { 415 | "node": ">= 0.6" 416 | } 417 | }, 418 | "node_modules/destroy": { 419 | "version": "1.0.4", 420 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 421 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 422 | }, 423 | "node_modules/dotenv": { 424 | "version": "10.0.0", 425 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", 426 | "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", 427 | "engines": { 428 | "node": ">=10" 429 | } 430 | }, 431 | "node_modules/duplexify": { 432 | "version": "4.1.2", 433 | "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", 434 | "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", 435 | "dependencies": { 436 | "end-of-stream": "^1.4.1", 437 | "inherits": "^2.0.3", 438 | "readable-stream": "^3.1.1", 439 | "stream-shift": "^1.0.0" 440 | } 441 | }, 442 | "node_modules/duplexify/node_modules/readable-stream": { 443 | "version": "3.6.0", 444 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 445 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 446 | "dependencies": { 447 | "inherits": "^2.0.3", 448 | "string_decoder": "^1.1.1", 449 | "util-deprecate": "^1.0.1" 450 | }, 451 | "engines": { 452 | "node": ">= 6" 453 | } 454 | }, 455 | "node_modules/duplexify/node_modules/safe-buffer": { 456 | "version": "5.2.1", 457 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 458 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 459 | "funding": [ 460 | { 461 | "type": "github", 462 | "url": "https://github.com/sponsors/feross" 463 | }, 464 | { 465 | "type": "patreon", 466 | "url": "https://www.patreon.com/feross" 467 | }, 468 | { 469 | "type": "consulting", 470 | "url": "https://feross.org/support" 471 | } 472 | ] 473 | }, 474 | "node_modules/duplexify/node_modules/string_decoder": { 475 | "version": "1.3.0", 476 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 477 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 478 | "dependencies": { 479 | "safe-buffer": "~5.2.0" 480 | } 481 | }, 482 | "node_modules/ecdsa-sig-formatter": { 483 | "version": "1.0.11", 484 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 485 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 486 | "dependencies": { 487 | "safe-buffer": "^5.0.1" 488 | } 489 | }, 490 | "node_modules/ee-first": { 491 | "version": "1.1.1", 492 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 493 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 494 | }, 495 | "node_modules/emoji-regex": { 496 | "version": "8.0.0", 497 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 498 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 499 | }, 500 | "node_modules/encodeurl": { 501 | "version": "1.0.2", 502 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 503 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 504 | "engines": { 505 | "node": ">= 0.8" 506 | } 507 | }, 508 | "node_modules/end-of-stream": { 509 | "version": "1.4.4", 510 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 511 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 512 | "dependencies": { 513 | "once": "^1.4.0" 514 | } 515 | }, 516 | "node_modules/escalade": { 517 | "version": "3.1.1", 518 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 519 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 520 | "engines": { 521 | "node": ">=6" 522 | } 523 | }, 524 | "node_modules/escape-html": { 525 | "version": "1.0.3", 526 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 527 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 528 | }, 529 | "node_modules/etag": { 530 | "version": "1.8.1", 531 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 532 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", 533 | "engines": { 534 | "node": ">= 0.6" 535 | } 536 | }, 537 | "node_modules/event-target-shim": { 538 | "version": "5.0.1", 539 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 540 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", 541 | "engines": { 542 | "node": ">=6" 543 | } 544 | }, 545 | "node_modules/express": { 546 | "version": "4.17.2", 547 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", 548 | "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", 549 | "dependencies": { 550 | "accepts": "~1.3.7", 551 | "array-flatten": "1.1.1", 552 | "body-parser": "1.19.1", 553 | "content-disposition": "0.5.4", 554 | "content-type": "~1.0.4", 555 | "cookie": "0.4.1", 556 | "cookie-signature": "1.0.6", 557 | "debug": "2.6.9", 558 | "depd": "~1.1.2", 559 | "encodeurl": "~1.0.2", 560 | "escape-html": "~1.0.3", 561 | "etag": "~1.8.1", 562 | "finalhandler": "~1.1.2", 563 | "fresh": "0.5.2", 564 | "merge-descriptors": "1.0.1", 565 | "methods": "~1.1.2", 566 | "on-finished": "~2.3.0", 567 | "parseurl": "~1.3.3", 568 | "path-to-regexp": "0.1.7", 569 | "proxy-addr": "~2.0.7", 570 | "qs": "6.9.6", 571 | "range-parser": "~1.2.1", 572 | "safe-buffer": "5.2.1", 573 | "send": "0.17.2", 574 | "serve-static": "1.14.2", 575 | "setprototypeof": "1.2.0", 576 | "statuses": "~1.5.0", 577 | "type-is": "~1.6.18", 578 | "utils-merge": "1.0.1", 579 | "vary": "~1.1.2" 580 | }, 581 | "engines": { 582 | "node": ">= 0.10.0" 583 | } 584 | }, 585 | "node_modules/express/node_modules/safe-buffer": { 586 | "version": "5.2.1", 587 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 588 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 589 | "funding": [ 590 | { 591 | "type": "github", 592 | "url": "https://github.com/sponsors/feross" 593 | }, 594 | { 595 | "type": "patreon", 596 | "url": "https://www.patreon.com/feross" 597 | }, 598 | { 599 | "type": "consulting", 600 | "url": "https://feross.org/support" 601 | } 602 | ] 603 | }, 604 | "node_modules/express/node_modules/setprototypeof": { 605 | "version": "1.2.0", 606 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 607 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 608 | }, 609 | "node_modules/extend": { 610 | "version": "3.0.2", 611 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 612 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 613 | }, 614 | "node_modules/fast-deep-equal": { 615 | "version": "3.1.3", 616 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 617 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 618 | }, 619 | "node_modules/fast-text-encoding": { 620 | "version": "1.0.3", 621 | "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", 622 | "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" 623 | }, 624 | "node_modules/finalhandler": { 625 | "version": "1.1.2", 626 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 627 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 628 | "dependencies": { 629 | "debug": "2.6.9", 630 | "encodeurl": "~1.0.2", 631 | "escape-html": "~1.0.3", 632 | "on-finished": "~2.3.0", 633 | "parseurl": "~1.3.3", 634 | "statuses": "~1.5.0", 635 | "unpipe": "~1.0.0" 636 | }, 637 | "engines": { 638 | "node": ">= 0.8" 639 | } 640 | }, 641 | "node_modules/forwarded": { 642 | "version": "0.2.0", 643 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 644 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 645 | "engines": { 646 | "node": ">= 0.6" 647 | } 648 | }, 649 | "node_modules/fresh": { 650 | "version": "0.5.2", 651 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 652 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 653 | "engines": { 654 | "node": ">= 0.6" 655 | } 656 | }, 657 | "node_modules/functional-red-black-tree": { 658 | "version": "1.0.1", 659 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 660 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" 661 | }, 662 | "node_modules/gaxios": { 663 | "version": "4.3.2", 664 | "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz", 665 | "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==", 666 | "dependencies": { 667 | "abort-controller": "^3.0.0", 668 | "extend": "^3.0.2", 669 | "https-proxy-agent": "^5.0.0", 670 | "is-stream": "^2.0.0", 671 | "node-fetch": "^2.6.1" 672 | }, 673 | "engines": { 674 | "node": ">=10" 675 | } 676 | }, 677 | "node_modules/gcp-metadata": { 678 | "version": "4.3.1", 679 | "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", 680 | "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", 681 | "dependencies": { 682 | "gaxios": "^4.0.0", 683 | "json-bigint": "^1.0.0" 684 | }, 685 | "engines": { 686 | "node": ">=10" 687 | } 688 | }, 689 | "node_modules/get-caller-file": { 690 | "version": "2.0.5", 691 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 692 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 693 | "engines": { 694 | "node": "6.* || 8.* || >= 10.*" 695 | } 696 | }, 697 | "node_modules/google-auth-library": { 698 | "version": "7.11.0", 699 | "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.11.0.tgz", 700 | "integrity": "sha512-3S5jn2quRumvh9F/Ubf7GFrIq71HZ5a6vqosgdIu105kkk0WtSqc2jGCRqtWWOLRS8SX3AHACMOEDxhyWAQIcg==", 701 | "dependencies": { 702 | "arrify": "^2.0.0", 703 | "base64-js": "^1.3.0", 704 | "ecdsa-sig-formatter": "^1.0.11", 705 | "fast-text-encoding": "^1.0.0", 706 | "gaxios": "^4.0.0", 707 | "gcp-metadata": "^4.2.0", 708 | "gtoken": "^5.0.4", 709 | "jws": "^4.0.0", 710 | "lru-cache": "^6.0.0" 711 | }, 712 | "engines": { 713 | "node": ">=10" 714 | } 715 | }, 716 | "node_modules/google-gax": { 717 | "version": "2.28.1", 718 | "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-2.28.1.tgz", 719 | "integrity": "sha512-2Xjd3FrjlVd6Cmw2B2Aicpc/q92SwTpIOvxPUlnRg9w+Do8nu7UR+eQrgoKlo2FIUcUuDTvppvcx8toND0pK9g==", 720 | "dependencies": { 721 | "@grpc/grpc-js": "~1.4.0", 722 | "@grpc/proto-loader": "^0.6.1", 723 | "@types/long": "^4.0.0", 724 | "abort-controller": "^3.0.0", 725 | "duplexify": "^4.0.0", 726 | "fast-text-encoding": "^1.0.3", 727 | "google-auth-library": "^7.6.1", 728 | "is-stream-ended": "^0.1.4", 729 | "node-fetch": "^2.6.1", 730 | "object-hash": "^2.1.1", 731 | "proto3-json-serializer": "^0.1.5", 732 | "protobufjs": "6.11.2", 733 | "retry-request": "^4.0.0" 734 | }, 735 | "bin": { 736 | "compileProtos": "build/tools/compileProtos.js" 737 | }, 738 | "engines": { 739 | "node": ">=10" 740 | } 741 | }, 742 | "node_modules/google-p12-pem": { 743 | "version": "3.1.2", 744 | "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz", 745 | "integrity": "sha512-tjf3IQIt7tWCDsa0ofDQ1qqSCNzahXDxdAGJDbruWqu3eCg5CKLYKN+hi0s6lfvzYZ1GDVr+oDF9OOWlDSdf0A==", 746 | "dependencies": { 747 | "node-forge": "^0.10.0" 748 | }, 749 | "bin": { 750 | "gp12-pem": "build/src/bin/gp12-pem.js" 751 | }, 752 | "engines": { 753 | "node": ">=10" 754 | } 755 | }, 756 | "node_modules/gtoken": { 757 | "version": "5.3.1", 758 | "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.1.tgz", 759 | "integrity": "sha512-yqOREjzLHcbzz1UrQoxhBtpk8KjrVhuqPE7od1K2uhyxG2BHjKZetlbLw/SPZak/QqTIQW+addS+EcjqQsZbwQ==", 760 | "dependencies": { 761 | "gaxios": "^4.0.0", 762 | "google-p12-pem": "^3.0.3", 763 | "jws": "^4.0.0" 764 | }, 765 | "engines": { 766 | "node": ">=10" 767 | } 768 | }, 769 | "node_modules/https-proxy-agent": { 770 | "version": "5.0.0", 771 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 772 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 773 | "dependencies": { 774 | "agent-base": "6", 775 | "debug": "4" 776 | }, 777 | "engines": { 778 | "node": ">= 6" 779 | } 780 | }, 781 | "node_modules/https-proxy-agent/node_modules/debug": { 782 | "version": "4.3.3", 783 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 784 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 785 | "dependencies": { 786 | "ms": "2.1.2" 787 | }, 788 | "engines": { 789 | "node": ">=6.0" 790 | }, 791 | "peerDependenciesMeta": { 792 | "supports-color": { 793 | "optional": true 794 | } 795 | } 796 | }, 797 | "node_modules/https-proxy-agent/node_modules/ms": { 798 | "version": "2.1.2", 799 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 800 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 801 | }, 802 | "node_modules/iconv-lite": { 803 | "version": "0.4.24", 804 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 805 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 806 | "dependencies": { 807 | "safer-buffer": ">= 2.1.2 < 3" 808 | }, 809 | "engines": { 810 | "node": ">=0.10.0" 811 | } 812 | }, 813 | "node_modules/inherits": { 814 | "version": "2.0.3", 815 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 816 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 817 | }, 818 | "node_modules/ipaddr.js": { 819 | "version": "1.9.1", 820 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 821 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 822 | "engines": { 823 | "node": ">= 0.10" 824 | } 825 | }, 826 | "node_modules/is-fullwidth-code-point": { 827 | "version": "3.0.0", 828 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 829 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 830 | "engines": { 831 | "node": ">=8" 832 | } 833 | }, 834 | "node_modules/is-stream": { 835 | "version": "2.0.1", 836 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 837 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 838 | "engines": { 839 | "node": ">=8" 840 | }, 841 | "funding": { 842 | "url": "https://github.com/sponsors/sindresorhus" 843 | } 844 | }, 845 | "node_modules/is-stream-ended": { 846 | "version": "0.1.4", 847 | "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", 848 | "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" 849 | }, 850 | "node_modules/json-bigint": { 851 | "version": "1.0.0", 852 | "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", 853 | "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", 854 | "dependencies": { 855 | "bignumber.js": "^9.0.0" 856 | } 857 | }, 858 | "node_modules/jwa": { 859 | "version": "2.0.0", 860 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", 861 | "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", 862 | "dependencies": { 863 | "buffer-equal-constant-time": "1.0.1", 864 | "ecdsa-sig-formatter": "1.0.11", 865 | "safe-buffer": "^5.0.1" 866 | } 867 | }, 868 | "node_modules/jws": { 869 | "version": "4.0.0", 870 | "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", 871 | "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", 872 | "dependencies": { 873 | "jwa": "^2.0.0", 874 | "safe-buffer": "^5.0.1" 875 | } 876 | }, 877 | "node_modules/lodash.camelcase": { 878 | "version": "4.3.0", 879 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 880 | "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" 881 | }, 882 | "node_modules/long": { 883 | "version": "4.0.0", 884 | "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", 885 | "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" 886 | }, 887 | "node_modules/lru-cache": { 888 | "version": "6.0.0", 889 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 890 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 891 | "dependencies": { 892 | "yallist": "^4.0.0" 893 | }, 894 | "engines": { 895 | "node": ">=10" 896 | } 897 | }, 898 | "node_modules/media-typer": { 899 | "version": "0.3.0", 900 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 901 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 902 | "engines": { 903 | "node": ">= 0.6" 904 | } 905 | }, 906 | "node_modules/merge-descriptors": { 907 | "version": "1.0.1", 908 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 909 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 910 | }, 911 | "node_modules/methods": { 912 | "version": "1.1.2", 913 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 914 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 915 | "engines": { 916 | "node": ">= 0.6" 917 | } 918 | }, 919 | "node_modules/mime": { 920 | "version": "1.6.0", 921 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 922 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 923 | "bin": { 924 | "mime": "cli.js" 925 | }, 926 | "engines": { 927 | "node": ">=4" 928 | } 929 | }, 930 | "node_modules/mime-db": { 931 | "version": "1.51.0", 932 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", 933 | "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", 934 | "engines": { 935 | "node": ">= 0.6" 936 | } 937 | }, 938 | "node_modules/mime-types": { 939 | "version": "2.1.34", 940 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", 941 | "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", 942 | "dependencies": { 943 | "mime-db": "1.51.0" 944 | }, 945 | "engines": { 946 | "node": ">= 0.6" 947 | } 948 | }, 949 | "node_modules/ms": { 950 | "version": "2.0.0", 951 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 952 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 953 | }, 954 | "node_modules/negotiator": { 955 | "version": "0.6.2", 956 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 957 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", 958 | "engines": { 959 | "node": ">= 0.6" 960 | } 961 | }, 962 | "node_modules/node-fetch": { 963 | "version": "2.6.6", 964 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", 965 | "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", 966 | "dependencies": { 967 | "whatwg-url": "^5.0.0" 968 | }, 969 | "engines": { 970 | "node": "4.x || >=6.0.0" 971 | } 972 | }, 973 | "node_modules/node-forge": { 974 | "version": "0.10.0", 975 | "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", 976 | "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", 977 | "engines": { 978 | "node": ">= 6.0.0" 979 | } 980 | }, 981 | "node_modules/object-assign": { 982 | "version": "4.1.1", 983 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 984 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 985 | "engines": { 986 | "node": ">=0.10.0" 987 | } 988 | }, 989 | "node_modules/object-hash": { 990 | "version": "2.2.0", 991 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", 992 | "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", 993 | "engines": { 994 | "node": ">= 6" 995 | } 996 | }, 997 | "node_modules/on-finished": { 998 | "version": "2.3.0", 999 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1000 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1001 | "dependencies": { 1002 | "ee-first": "1.1.1" 1003 | }, 1004 | "engines": { 1005 | "node": ">= 0.8" 1006 | } 1007 | }, 1008 | "node_modules/once": { 1009 | "version": "1.4.0", 1010 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1011 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1012 | "dependencies": { 1013 | "wrappy": "1" 1014 | } 1015 | }, 1016 | "node_modules/parseurl": { 1017 | "version": "1.3.3", 1018 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1019 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 1020 | "engines": { 1021 | "node": ">= 0.8" 1022 | } 1023 | }, 1024 | "node_modules/path-to-regexp": { 1025 | "version": "0.1.7", 1026 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1027 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 1028 | }, 1029 | "node_modules/proto3-json-serializer": { 1030 | "version": "0.1.6", 1031 | "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.6.tgz", 1032 | "integrity": "sha512-tGbV6m6Kad8NqxMh5hw87euPS0YoZSAOIfvR01zYkQV8Gpx1V/8yU/0gCKCvfCkhAJsjvzzhnnsdQxA1w7PSog==", 1033 | "dependencies": { 1034 | "protobufjs": "^6.11.2" 1035 | } 1036 | }, 1037 | "node_modules/protobufjs": { 1038 | "version": "6.11.2", 1039 | "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", 1040 | "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", 1041 | "hasInstallScript": true, 1042 | "dependencies": { 1043 | "@protobufjs/aspromise": "^1.1.2", 1044 | "@protobufjs/base64": "^1.1.2", 1045 | "@protobufjs/codegen": "^2.0.4", 1046 | "@protobufjs/eventemitter": "^1.1.0", 1047 | "@protobufjs/fetch": "^1.1.0", 1048 | "@protobufjs/float": "^1.0.2", 1049 | "@protobufjs/inquire": "^1.1.0", 1050 | "@protobufjs/path": "^1.1.2", 1051 | "@protobufjs/pool": "^1.1.0", 1052 | "@protobufjs/utf8": "^1.1.0", 1053 | "@types/long": "^4.0.1", 1054 | "@types/node": ">=13.7.0", 1055 | "long": "^4.0.0" 1056 | }, 1057 | "bin": { 1058 | "pbjs": "bin/pbjs", 1059 | "pbts": "bin/pbts" 1060 | } 1061 | }, 1062 | "node_modules/proxy-addr": { 1063 | "version": "2.0.7", 1064 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1065 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 1066 | "dependencies": { 1067 | "forwarded": "0.2.0", 1068 | "ipaddr.js": "1.9.1" 1069 | }, 1070 | "engines": { 1071 | "node": ">= 0.10" 1072 | } 1073 | }, 1074 | "node_modules/qs": { 1075 | "version": "6.9.6", 1076 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", 1077 | "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", 1078 | "engines": { 1079 | "node": ">=0.6" 1080 | }, 1081 | "funding": { 1082 | "url": "https://github.com/sponsors/ljharb" 1083 | } 1084 | }, 1085 | "node_modules/range-parser": { 1086 | "version": "1.2.1", 1087 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1088 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 1089 | "engines": { 1090 | "node": ">= 0.6" 1091 | } 1092 | }, 1093 | "node_modules/raw-body": { 1094 | "version": "2.4.2", 1095 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", 1096 | "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", 1097 | "dependencies": { 1098 | "bytes": "3.1.1", 1099 | "http-errors": "1.8.1", 1100 | "iconv-lite": "0.4.24", 1101 | "unpipe": "1.0.0" 1102 | }, 1103 | "engines": { 1104 | "node": ">= 0.8" 1105 | } 1106 | }, 1107 | "node_modules/raw-body/node_modules/http-errors": { 1108 | "version": "1.8.1", 1109 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 1110 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 1111 | "dependencies": { 1112 | "depd": "~1.1.2", 1113 | "inherits": "2.0.4", 1114 | "setprototypeof": "1.2.0", 1115 | "statuses": ">= 1.5.0 < 2", 1116 | "toidentifier": "1.0.1" 1117 | }, 1118 | "engines": { 1119 | "node": ">= 0.6" 1120 | } 1121 | }, 1122 | "node_modules/raw-body/node_modules/inherits": { 1123 | "version": "2.0.4", 1124 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1125 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1126 | }, 1127 | "node_modules/raw-body/node_modules/setprototypeof": { 1128 | "version": "1.2.0", 1129 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1130 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1131 | }, 1132 | "node_modules/require-directory": { 1133 | "version": "2.1.1", 1134 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1135 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1136 | "engines": { 1137 | "node": ">=0.10.0" 1138 | } 1139 | }, 1140 | "node_modules/retry-request": { 1141 | "version": "4.2.2", 1142 | "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz", 1143 | "integrity": "sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==", 1144 | "dependencies": { 1145 | "debug": "^4.1.1", 1146 | "extend": "^3.0.2" 1147 | }, 1148 | "engines": { 1149 | "node": ">=8.10.0" 1150 | } 1151 | }, 1152 | "node_modules/retry-request/node_modules/debug": { 1153 | "version": "4.3.3", 1154 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 1155 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 1156 | "dependencies": { 1157 | "ms": "2.1.2" 1158 | }, 1159 | "engines": { 1160 | "node": ">=6.0" 1161 | }, 1162 | "peerDependenciesMeta": { 1163 | "supports-color": { 1164 | "optional": true 1165 | } 1166 | } 1167 | }, 1168 | "node_modules/retry-request/node_modules/ms": { 1169 | "version": "2.1.2", 1170 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1171 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1172 | }, 1173 | "node_modules/safe-buffer": { 1174 | "version": "5.1.2", 1175 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1176 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1177 | }, 1178 | "node_modules/safer-buffer": { 1179 | "version": "2.1.2", 1180 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1181 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1182 | }, 1183 | "node_modules/send": { 1184 | "version": "0.17.2", 1185 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", 1186 | "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", 1187 | "dependencies": { 1188 | "debug": "2.6.9", 1189 | "depd": "~1.1.2", 1190 | "destroy": "~1.0.4", 1191 | "encodeurl": "~1.0.2", 1192 | "escape-html": "~1.0.3", 1193 | "etag": "~1.8.1", 1194 | "fresh": "0.5.2", 1195 | "http-errors": "1.8.1", 1196 | "mime": "1.6.0", 1197 | "ms": "2.1.3", 1198 | "on-finished": "~2.3.0", 1199 | "range-parser": "~1.2.1", 1200 | "statuses": "~1.5.0" 1201 | }, 1202 | "engines": { 1203 | "node": ">= 0.8.0" 1204 | } 1205 | }, 1206 | "node_modules/send/node_modules/http-errors": { 1207 | "version": "1.8.1", 1208 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 1209 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 1210 | "dependencies": { 1211 | "depd": "~1.1.2", 1212 | "inherits": "2.0.4", 1213 | "setprototypeof": "1.2.0", 1214 | "statuses": ">= 1.5.0 < 2", 1215 | "toidentifier": "1.0.1" 1216 | }, 1217 | "engines": { 1218 | "node": ">= 0.6" 1219 | } 1220 | }, 1221 | "node_modules/send/node_modules/inherits": { 1222 | "version": "2.0.4", 1223 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1224 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1225 | }, 1226 | "node_modules/send/node_modules/ms": { 1227 | "version": "2.1.3", 1228 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1229 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1230 | }, 1231 | "node_modules/send/node_modules/setprototypeof": { 1232 | "version": "1.2.0", 1233 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1234 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1235 | }, 1236 | "node_modules/serve-static": { 1237 | "version": "1.14.2", 1238 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", 1239 | "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", 1240 | "dependencies": { 1241 | "encodeurl": "~1.0.2", 1242 | "escape-html": "~1.0.3", 1243 | "parseurl": "~1.3.3", 1244 | "send": "0.17.2" 1245 | }, 1246 | "engines": { 1247 | "node": ">= 0.8.0" 1248 | } 1249 | }, 1250 | "node_modules/statuses": { 1251 | "version": "1.5.0", 1252 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1253 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 1254 | "engines": { 1255 | "node": ">= 0.6" 1256 | } 1257 | }, 1258 | "node_modules/stream-shift": { 1259 | "version": "1.0.1", 1260 | "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", 1261 | "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" 1262 | }, 1263 | "node_modules/string-width": { 1264 | "version": "4.2.3", 1265 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1266 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1267 | "dependencies": { 1268 | "emoji-regex": "^8.0.0", 1269 | "is-fullwidth-code-point": "^3.0.0", 1270 | "strip-ansi": "^6.0.1" 1271 | }, 1272 | "engines": { 1273 | "node": ">=8" 1274 | } 1275 | }, 1276 | "node_modules/strip-ansi": { 1277 | "version": "6.0.1", 1278 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1279 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1280 | "dependencies": { 1281 | "ansi-regex": "^5.0.1" 1282 | }, 1283 | "engines": { 1284 | "node": ">=8" 1285 | } 1286 | }, 1287 | "node_modules/toidentifier": { 1288 | "version": "1.0.1", 1289 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1290 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 1291 | "engines": { 1292 | "node": ">=0.6" 1293 | } 1294 | }, 1295 | "node_modules/tr46": { 1296 | "version": "0.0.3", 1297 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1298 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 1299 | }, 1300 | "node_modules/type-is": { 1301 | "version": "1.6.18", 1302 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1303 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1304 | "dependencies": { 1305 | "media-typer": "0.3.0", 1306 | "mime-types": "~2.1.24" 1307 | }, 1308 | "engines": { 1309 | "node": ">= 0.6" 1310 | } 1311 | }, 1312 | "node_modules/unpipe": { 1313 | "version": "1.0.0", 1314 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1315 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 1316 | "engines": { 1317 | "node": ">= 0.8" 1318 | } 1319 | }, 1320 | "node_modules/util-deprecate": { 1321 | "version": "1.0.2", 1322 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1323 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1324 | }, 1325 | "node_modules/utils-merge": { 1326 | "version": "1.0.1", 1327 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1328 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 1329 | "engines": { 1330 | "node": ">= 0.4.0" 1331 | } 1332 | }, 1333 | "node_modules/vary": { 1334 | "version": "1.1.2", 1335 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1336 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 1337 | "engines": { 1338 | "node": ">= 0.8" 1339 | } 1340 | }, 1341 | "node_modules/webidl-conversions": { 1342 | "version": "3.0.1", 1343 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1344 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 1345 | }, 1346 | "node_modules/whatwg-url": { 1347 | "version": "5.0.0", 1348 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1349 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 1350 | "dependencies": { 1351 | "tr46": "~0.0.3", 1352 | "webidl-conversions": "^3.0.0" 1353 | } 1354 | }, 1355 | "node_modules/wrap-ansi": { 1356 | "version": "7.0.0", 1357 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1358 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1359 | "dependencies": { 1360 | "ansi-styles": "^4.0.0", 1361 | "string-width": "^4.1.0", 1362 | "strip-ansi": "^6.0.0" 1363 | }, 1364 | "engines": { 1365 | "node": ">=10" 1366 | }, 1367 | "funding": { 1368 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1369 | } 1370 | }, 1371 | "node_modules/wrappy": { 1372 | "version": "1.0.2", 1373 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1374 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1375 | }, 1376 | "node_modules/y18n": { 1377 | "version": "5.0.8", 1378 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1379 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1380 | "engines": { 1381 | "node": ">=10" 1382 | } 1383 | }, 1384 | "node_modules/yallist": { 1385 | "version": "4.0.0", 1386 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1387 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1388 | }, 1389 | "node_modules/yargs": { 1390 | "version": "16.2.0", 1391 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 1392 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 1393 | "dependencies": { 1394 | "cliui": "^7.0.2", 1395 | "escalade": "^3.1.1", 1396 | "get-caller-file": "^2.0.5", 1397 | "require-directory": "^2.1.1", 1398 | "string-width": "^4.2.0", 1399 | "y18n": "^5.0.5", 1400 | "yargs-parser": "^20.2.2" 1401 | }, 1402 | "engines": { 1403 | "node": ">=10" 1404 | } 1405 | }, 1406 | "node_modules/yargs-parser": { 1407 | "version": "20.2.9", 1408 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 1409 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 1410 | "engines": { 1411 | "node": ">=10" 1412 | } 1413 | } 1414 | }, 1415 | "dependencies": { 1416 | "@google-cloud/firestore": { 1417 | "version": "5.0.1", 1418 | "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-5.0.1.tgz", 1419 | "integrity": "sha512-HYj/9ZxgtMO7rwEyoiaYA78ivi4q4PaPoY0IZJQaPmKj9Z3l3ZWJCZKbl4kEiBZ+HtcvIMOVNjBm0lQXkGj37g==", 1420 | "requires": { 1421 | "fast-deep-equal": "^3.1.1", 1422 | "functional-red-black-tree": "^1.0.1", 1423 | "google-gax": "^2.24.1", 1424 | "protobufjs": "^6.8.6" 1425 | } 1426 | }, 1427 | "@grpc/grpc-js": { 1428 | "version": "1.4.5", 1429 | "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.4.5.tgz", 1430 | "integrity": "sha512-A6cOzSu7dqXZ7rzvh/9JZf+Jg/MOpLEMP0IdT8pT8hrWJZ6TB4ydN/MRuqOtAugInJe/VQ9F8BPricUpYZSaZA==", 1431 | "requires": { 1432 | "@grpc/proto-loader": "^0.6.4", 1433 | "@types/node": ">=12.12.47" 1434 | } 1435 | }, 1436 | "@grpc/proto-loader": { 1437 | "version": "0.6.7", 1438 | "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.7.tgz", 1439 | "integrity": "sha512-QzTPIyJxU0u+r2qGe8VMl3j/W2ryhEvBv7hc42OjYfthSj370fUrb7na65rG6w3YLZS/fb8p89iTBobfWGDgdw==", 1440 | "requires": { 1441 | "@types/long": "^4.0.1", 1442 | "lodash.camelcase": "^4.3.0", 1443 | "long": "^4.0.0", 1444 | "protobufjs": "^6.10.0", 1445 | "yargs": "^16.1.1" 1446 | } 1447 | }, 1448 | "@protobufjs/aspromise": { 1449 | "version": "1.1.2", 1450 | "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", 1451 | "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" 1452 | }, 1453 | "@protobufjs/base64": { 1454 | "version": "1.1.2", 1455 | "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", 1456 | "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" 1457 | }, 1458 | "@protobufjs/codegen": { 1459 | "version": "2.0.4", 1460 | "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", 1461 | "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" 1462 | }, 1463 | "@protobufjs/eventemitter": { 1464 | "version": "1.1.0", 1465 | "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", 1466 | "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" 1467 | }, 1468 | "@protobufjs/fetch": { 1469 | "version": "1.1.0", 1470 | "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", 1471 | "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", 1472 | "requires": { 1473 | "@protobufjs/aspromise": "^1.1.1", 1474 | "@protobufjs/inquire": "^1.1.0" 1475 | } 1476 | }, 1477 | "@protobufjs/float": { 1478 | "version": "1.0.2", 1479 | "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", 1480 | "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" 1481 | }, 1482 | "@protobufjs/inquire": { 1483 | "version": "1.1.0", 1484 | "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", 1485 | "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" 1486 | }, 1487 | "@protobufjs/path": { 1488 | "version": "1.1.2", 1489 | "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", 1490 | "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" 1491 | }, 1492 | "@protobufjs/pool": { 1493 | "version": "1.1.0", 1494 | "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", 1495 | "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" 1496 | }, 1497 | "@protobufjs/utf8": { 1498 | "version": "1.1.0", 1499 | "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", 1500 | "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" 1501 | }, 1502 | "@types/long": { 1503 | "version": "4.0.1", 1504 | "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", 1505 | "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" 1506 | }, 1507 | "@types/node": { 1508 | "version": "17.0.7", 1509 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.7.tgz", 1510 | "integrity": "sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ==" 1511 | }, 1512 | "abort-controller": { 1513 | "version": "3.0.0", 1514 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 1515 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 1516 | "requires": { 1517 | "event-target-shim": "^5.0.0" 1518 | } 1519 | }, 1520 | "accepts": { 1521 | "version": "1.3.7", 1522 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 1523 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 1524 | "requires": { 1525 | "mime-types": "~2.1.24", 1526 | "negotiator": "0.6.2" 1527 | } 1528 | }, 1529 | "agent-base": { 1530 | "version": "6.0.2", 1531 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 1532 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 1533 | "requires": { 1534 | "debug": "4" 1535 | }, 1536 | "dependencies": { 1537 | "debug": { 1538 | "version": "4.3.3", 1539 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 1540 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 1541 | "requires": { 1542 | "ms": "2.1.2" 1543 | } 1544 | }, 1545 | "ms": { 1546 | "version": "2.1.2", 1547 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1548 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1549 | } 1550 | } 1551 | }, 1552 | "ansi-regex": { 1553 | "version": "5.0.1", 1554 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1555 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 1556 | }, 1557 | "ansi-styles": { 1558 | "version": "4.3.0", 1559 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1560 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1561 | "requires": { 1562 | "color-convert": "^2.0.1" 1563 | } 1564 | }, 1565 | "array-flatten": { 1566 | "version": "1.1.1", 1567 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 1568 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 1569 | }, 1570 | "arrify": { 1571 | "version": "2.0.1", 1572 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", 1573 | "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" 1574 | }, 1575 | "base64-js": { 1576 | "version": "1.5.1", 1577 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1578 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 1579 | }, 1580 | "bignumber.js": { 1581 | "version": "9.0.2", 1582 | "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz", 1583 | "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==" 1584 | }, 1585 | "body-parser": { 1586 | "version": "1.19.1", 1587 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", 1588 | "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", 1589 | "requires": { 1590 | "bytes": "3.1.1", 1591 | "content-type": "~1.0.4", 1592 | "debug": "2.6.9", 1593 | "depd": "~1.1.2", 1594 | "http-errors": "1.8.1", 1595 | "iconv-lite": "0.4.24", 1596 | "on-finished": "~2.3.0", 1597 | "qs": "6.9.6", 1598 | "raw-body": "2.4.2", 1599 | "type-is": "~1.6.18" 1600 | }, 1601 | "dependencies": { 1602 | "http-errors": { 1603 | "version": "1.8.1", 1604 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 1605 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 1606 | "requires": { 1607 | "depd": "~1.1.2", 1608 | "inherits": "2.0.4", 1609 | "setprototypeof": "1.2.0", 1610 | "statuses": ">= 1.5.0 < 2", 1611 | "toidentifier": "1.0.1" 1612 | } 1613 | }, 1614 | "inherits": { 1615 | "version": "2.0.4", 1616 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1617 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1618 | }, 1619 | "setprototypeof": { 1620 | "version": "1.2.0", 1621 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1622 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1623 | } 1624 | } 1625 | }, 1626 | "buffer-equal-constant-time": { 1627 | "version": "1.0.1", 1628 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 1629 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 1630 | }, 1631 | "bytes": { 1632 | "version": "3.1.1", 1633 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", 1634 | "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==" 1635 | }, 1636 | "cliui": { 1637 | "version": "7.0.4", 1638 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 1639 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 1640 | "requires": { 1641 | "string-width": "^4.2.0", 1642 | "strip-ansi": "^6.0.0", 1643 | "wrap-ansi": "^7.0.0" 1644 | } 1645 | }, 1646 | "color-convert": { 1647 | "version": "2.0.1", 1648 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1649 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1650 | "requires": { 1651 | "color-name": "~1.1.4" 1652 | } 1653 | }, 1654 | "color-name": { 1655 | "version": "1.1.4", 1656 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1657 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1658 | }, 1659 | "content-disposition": { 1660 | "version": "0.5.4", 1661 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 1662 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 1663 | "requires": { 1664 | "safe-buffer": "5.2.1" 1665 | }, 1666 | "dependencies": { 1667 | "safe-buffer": { 1668 | "version": "5.2.1", 1669 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1670 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1671 | } 1672 | } 1673 | }, 1674 | "content-type": { 1675 | "version": "1.0.4", 1676 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 1677 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 1678 | }, 1679 | "cookie": { 1680 | "version": "0.4.1", 1681 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", 1682 | "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" 1683 | }, 1684 | "cookie-parser": { 1685 | "version": "1.4.6", 1686 | "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", 1687 | "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", 1688 | "requires": { 1689 | "cookie": "0.4.1", 1690 | "cookie-signature": "1.0.6" 1691 | } 1692 | }, 1693 | "cookie-signature": { 1694 | "version": "1.0.6", 1695 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 1696 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 1697 | }, 1698 | "cors": { 1699 | "version": "2.8.5", 1700 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 1701 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 1702 | "requires": { 1703 | "object-assign": "^4", 1704 | "vary": "^1" 1705 | } 1706 | }, 1707 | "debug": { 1708 | "version": "2.6.9", 1709 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1710 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1711 | "requires": { 1712 | "ms": "2.0.0" 1713 | } 1714 | }, 1715 | "depd": { 1716 | "version": "1.1.2", 1717 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 1718 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 1719 | }, 1720 | "destroy": { 1721 | "version": "1.0.4", 1722 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 1723 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 1724 | }, 1725 | "dotenv": { 1726 | "version": "10.0.0", 1727 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", 1728 | "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" 1729 | }, 1730 | "duplexify": { 1731 | "version": "4.1.2", 1732 | "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", 1733 | "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", 1734 | "requires": { 1735 | "end-of-stream": "^1.4.1", 1736 | "inherits": "^2.0.3", 1737 | "readable-stream": "^3.1.1", 1738 | "stream-shift": "^1.0.0" 1739 | }, 1740 | "dependencies": { 1741 | "readable-stream": { 1742 | "version": "3.6.0", 1743 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1744 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1745 | "requires": { 1746 | "inherits": "^2.0.3", 1747 | "string_decoder": "^1.1.1", 1748 | "util-deprecate": "^1.0.1" 1749 | } 1750 | }, 1751 | "safe-buffer": { 1752 | "version": "5.2.1", 1753 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1754 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1755 | }, 1756 | "string_decoder": { 1757 | "version": "1.3.0", 1758 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1759 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1760 | "requires": { 1761 | "safe-buffer": "~5.2.0" 1762 | } 1763 | } 1764 | } 1765 | }, 1766 | "ecdsa-sig-formatter": { 1767 | "version": "1.0.11", 1768 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 1769 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 1770 | "requires": { 1771 | "safe-buffer": "^5.0.1" 1772 | } 1773 | }, 1774 | "ee-first": { 1775 | "version": "1.1.1", 1776 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1777 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 1778 | }, 1779 | "emoji-regex": { 1780 | "version": "8.0.0", 1781 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1782 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 1783 | }, 1784 | "encodeurl": { 1785 | "version": "1.0.2", 1786 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1787 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 1788 | }, 1789 | "end-of-stream": { 1790 | "version": "1.4.4", 1791 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1792 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1793 | "requires": { 1794 | "once": "^1.4.0" 1795 | } 1796 | }, 1797 | "escalade": { 1798 | "version": "3.1.1", 1799 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1800 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" 1801 | }, 1802 | "escape-html": { 1803 | "version": "1.0.3", 1804 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1805 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 1806 | }, 1807 | "etag": { 1808 | "version": "1.8.1", 1809 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1810 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 1811 | }, 1812 | "event-target-shim": { 1813 | "version": "5.0.1", 1814 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 1815 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" 1816 | }, 1817 | "express": { 1818 | "version": "4.17.2", 1819 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", 1820 | "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", 1821 | "requires": { 1822 | "accepts": "~1.3.7", 1823 | "array-flatten": "1.1.1", 1824 | "body-parser": "1.19.1", 1825 | "content-disposition": "0.5.4", 1826 | "content-type": "~1.0.4", 1827 | "cookie": "0.4.1", 1828 | "cookie-signature": "1.0.6", 1829 | "debug": "2.6.9", 1830 | "depd": "~1.1.2", 1831 | "encodeurl": "~1.0.2", 1832 | "escape-html": "~1.0.3", 1833 | "etag": "~1.8.1", 1834 | "finalhandler": "~1.1.2", 1835 | "fresh": "0.5.2", 1836 | "merge-descriptors": "1.0.1", 1837 | "methods": "~1.1.2", 1838 | "on-finished": "~2.3.0", 1839 | "parseurl": "~1.3.3", 1840 | "path-to-regexp": "0.1.7", 1841 | "proxy-addr": "~2.0.7", 1842 | "qs": "6.9.6", 1843 | "range-parser": "~1.2.1", 1844 | "safe-buffer": "5.2.1", 1845 | "send": "0.17.2", 1846 | "serve-static": "1.14.2", 1847 | "setprototypeof": "1.2.0", 1848 | "statuses": "~1.5.0", 1849 | "type-is": "~1.6.18", 1850 | "utils-merge": "1.0.1", 1851 | "vary": "~1.1.2" 1852 | }, 1853 | "dependencies": { 1854 | "safe-buffer": { 1855 | "version": "5.2.1", 1856 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1857 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1858 | }, 1859 | "setprototypeof": { 1860 | "version": "1.2.0", 1861 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1862 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1863 | } 1864 | } 1865 | }, 1866 | "extend": { 1867 | "version": "3.0.2", 1868 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 1869 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 1870 | }, 1871 | "fast-deep-equal": { 1872 | "version": "3.1.3", 1873 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1874 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 1875 | }, 1876 | "fast-text-encoding": { 1877 | "version": "1.0.3", 1878 | "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", 1879 | "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" 1880 | }, 1881 | "finalhandler": { 1882 | "version": "1.1.2", 1883 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 1884 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 1885 | "requires": { 1886 | "debug": "2.6.9", 1887 | "encodeurl": "~1.0.2", 1888 | "escape-html": "~1.0.3", 1889 | "on-finished": "~2.3.0", 1890 | "parseurl": "~1.3.3", 1891 | "statuses": "~1.5.0", 1892 | "unpipe": "~1.0.0" 1893 | } 1894 | }, 1895 | "forwarded": { 1896 | "version": "0.2.0", 1897 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 1898 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 1899 | }, 1900 | "fresh": { 1901 | "version": "0.5.2", 1902 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1903 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 1904 | }, 1905 | "functional-red-black-tree": { 1906 | "version": "1.0.1", 1907 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1908 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" 1909 | }, 1910 | "gaxios": { 1911 | "version": "4.3.2", 1912 | "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz", 1913 | "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==", 1914 | "requires": { 1915 | "abort-controller": "^3.0.0", 1916 | "extend": "^3.0.2", 1917 | "https-proxy-agent": "^5.0.0", 1918 | "is-stream": "^2.0.0", 1919 | "node-fetch": "^2.6.1" 1920 | } 1921 | }, 1922 | "gcp-metadata": { 1923 | "version": "4.3.1", 1924 | "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", 1925 | "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", 1926 | "requires": { 1927 | "gaxios": "^4.0.0", 1928 | "json-bigint": "^1.0.0" 1929 | } 1930 | }, 1931 | "get-caller-file": { 1932 | "version": "2.0.5", 1933 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1934 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" 1935 | }, 1936 | "google-auth-library": { 1937 | "version": "7.11.0", 1938 | "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.11.0.tgz", 1939 | "integrity": "sha512-3S5jn2quRumvh9F/Ubf7GFrIq71HZ5a6vqosgdIu105kkk0WtSqc2jGCRqtWWOLRS8SX3AHACMOEDxhyWAQIcg==", 1940 | "requires": { 1941 | "arrify": "^2.0.0", 1942 | "base64-js": "^1.3.0", 1943 | "ecdsa-sig-formatter": "^1.0.11", 1944 | "fast-text-encoding": "^1.0.0", 1945 | "gaxios": "^4.0.0", 1946 | "gcp-metadata": "^4.2.0", 1947 | "gtoken": "^5.0.4", 1948 | "jws": "^4.0.0", 1949 | "lru-cache": "^6.0.0" 1950 | } 1951 | }, 1952 | "google-gax": { 1953 | "version": "2.28.1", 1954 | "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-2.28.1.tgz", 1955 | "integrity": "sha512-2Xjd3FrjlVd6Cmw2B2Aicpc/q92SwTpIOvxPUlnRg9w+Do8nu7UR+eQrgoKlo2FIUcUuDTvppvcx8toND0pK9g==", 1956 | "requires": { 1957 | "@grpc/grpc-js": "~1.4.0", 1958 | "@grpc/proto-loader": "^0.6.1", 1959 | "@types/long": "^4.0.0", 1960 | "abort-controller": "^3.0.0", 1961 | "duplexify": "^4.0.0", 1962 | "fast-text-encoding": "^1.0.3", 1963 | "google-auth-library": "^7.6.1", 1964 | "is-stream-ended": "^0.1.4", 1965 | "node-fetch": "^2.6.1", 1966 | "object-hash": "^2.1.1", 1967 | "proto3-json-serializer": "^0.1.5", 1968 | "protobufjs": "6.11.2", 1969 | "retry-request": "^4.0.0" 1970 | } 1971 | }, 1972 | "google-p12-pem": { 1973 | "version": "3.1.2", 1974 | "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz", 1975 | "integrity": "sha512-tjf3IQIt7tWCDsa0ofDQ1qqSCNzahXDxdAGJDbruWqu3eCg5CKLYKN+hi0s6lfvzYZ1GDVr+oDF9OOWlDSdf0A==", 1976 | "requires": { 1977 | "node-forge": "^0.10.0" 1978 | } 1979 | }, 1980 | "gtoken": { 1981 | "version": "5.3.1", 1982 | "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.1.tgz", 1983 | "integrity": "sha512-yqOREjzLHcbzz1UrQoxhBtpk8KjrVhuqPE7od1K2uhyxG2BHjKZetlbLw/SPZak/QqTIQW+addS+EcjqQsZbwQ==", 1984 | "requires": { 1985 | "gaxios": "^4.0.0", 1986 | "google-p12-pem": "^3.0.3", 1987 | "jws": "^4.0.0" 1988 | } 1989 | }, 1990 | "https-proxy-agent": { 1991 | "version": "5.0.0", 1992 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 1993 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 1994 | "requires": { 1995 | "agent-base": "6", 1996 | "debug": "4" 1997 | }, 1998 | "dependencies": { 1999 | "debug": { 2000 | "version": "4.3.3", 2001 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 2002 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 2003 | "requires": { 2004 | "ms": "2.1.2" 2005 | } 2006 | }, 2007 | "ms": { 2008 | "version": "2.1.2", 2009 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2010 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2011 | } 2012 | } 2013 | }, 2014 | "iconv-lite": { 2015 | "version": "0.4.24", 2016 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 2017 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 2018 | "requires": { 2019 | "safer-buffer": ">= 2.1.2 < 3" 2020 | } 2021 | }, 2022 | "inherits": { 2023 | "version": "2.0.3", 2024 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2025 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 2026 | }, 2027 | "ipaddr.js": { 2028 | "version": "1.9.1", 2029 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 2030 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 2031 | }, 2032 | "is-fullwidth-code-point": { 2033 | "version": "3.0.0", 2034 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2035 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 2036 | }, 2037 | "is-stream": { 2038 | "version": "2.0.1", 2039 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 2040 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" 2041 | }, 2042 | "is-stream-ended": { 2043 | "version": "0.1.4", 2044 | "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", 2045 | "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" 2046 | }, 2047 | "json-bigint": { 2048 | "version": "1.0.0", 2049 | "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", 2050 | "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", 2051 | "requires": { 2052 | "bignumber.js": "^9.0.0" 2053 | } 2054 | }, 2055 | "jwa": { 2056 | "version": "2.0.0", 2057 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", 2058 | "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", 2059 | "requires": { 2060 | "buffer-equal-constant-time": "1.0.1", 2061 | "ecdsa-sig-formatter": "1.0.11", 2062 | "safe-buffer": "^5.0.1" 2063 | } 2064 | }, 2065 | "jws": { 2066 | "version": "4.0.0", 2067 | "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", 2068 | "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", 2069 | "requires": { 2070 | "jwa": "^2.0.0", 2071 | "safe-buffer": "^5.0.1" 2072 | } 2073 | }, 2074 | "lodash.camelcase": { 2075 | "version": "4.3.0", 2076 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 2077 | "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" 2078 | }, 2079 | "long": { 2080 | "version": "4.0.0", 2081 | "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", 2082 | "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" 2083 | }, 2084 | "lru-cache": { 2085 | "version": "6.0.0", 2086 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2087 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2088 | "requires": { 2089 | "yallist": "^4.0.0" 2090 | } 2091 | }, 2092 | "media-typer": { 2093 | "version": "0.3.0", 2094 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 2095 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 2096 | }, 2097 | "merge-descriptors": { 2098 | "version": "1.0.1", 2099 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 2100 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 2101 | }, 2102 | "methods": { 2103 | "version": "1.1.2", 2104 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 2105 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 2106 | }, 2107 | "mime": { 2108 | "version": "1.6.0", 2109 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 2110 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 2111 | }, 2112 | "mime-db": { 2113 | "version": "1.51.0", 2114 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", 2115 | "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" 2116 | }, 2117 | "mime-types": { 2118 | "version": "2.1.34", 2119 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", 2120 | "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", 2121 | "requires": { 2122 | "mime-db": "1.51.0" 2123 | } 2124 | }, 2125 | "ms": { 2126 | "version": "2.0.0", 2127 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2128 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 2129 | }, 2130 | "negotiator": { 2131 | "version": "0.6.2", 2132 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 2133 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 2134 | }, 2135 | "node-fetch": { 2136 | "version": "2.6.6", 2137 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", 2138 | "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", 2139 | "requires": { 2140 | "whatwg-url": "^5.0.0" 2141 | } 2142 | }, 2143 | "node-forge": { 2144 | "version": "0.10.0", 2145 | "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", 2146 | "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" 2147 | }, 2148 | "object-assign": { 2149 | "version": "4.1.1", 2150 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2151 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2152 | }, 2153 | "object-hash": { 2154 | "version": "2.2.0", 2155 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", 2156 | "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" 2157 | }, 2158 | "on-finished": { 2159 | "version": "2.3.0", 2160 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2161 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 2162 | "requires": { 2163 | "ee-first": "1.1.1" 2164 | } 2165 | }, 2166 | "once": { 2167 | "version": "1.4.0", 2168 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2169 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2170 | "requires": { 2171 | "wrappy": "1" 2172 | } 2173 | }, 2174 | "parseurl": { 2175 | "version": "1.3.3", 2176 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 2177 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 2178 | }, 2179 | "path-to-regexp": { 2180 | "version": "0.1.7", 2181 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 2182 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 2183 | }, 2184 | "proto3-json-serializer": { 2185 | "version": "0.1.6", 2186 | "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.6.tgz", 2187 | "integrity": "sha512-tGbV6m6Kad8NqxMh5hw87euPS0YoZSAOIfvR01zYkQV8Gpx1V/8yU/0gCKCvfCkhAJsjvzzhnnsdQxA1w7PSog==", 2188 | "requires": { 2189 | "protobufjs": "^6.11.2" 2190 | } 2191 | }, 2192 | "protobufjs": { 2193 | "version": "6.11.2", 2194 | "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", 2195 | "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", 2196 | "requires": { 2197 | "@protobufjs/aspromise": "^1.1.2", 2198 | "@protobufjs/base64": "^1.1.2", 2199 | "@protobufjs/codegen": "^2.0.4", 2200 | "@protobufjs/eventemitter": "^1.1.0", 2201 | "@protobufjs/fetch": "^1.1.0", 2202 | "@protobufjs/float": "^1.0.2", 2203 | "@protobufjs/inquire": "^1.1.0", 2204 | "@protobufjs/path": "^1.1.2", 2205 | "@protobufjs/pool": "^1.1.0", 2206 | "@protobufjs/utf8": "^1.1.0", 2207 | "@types/long": "^4.0.1", 2208 | "@types/node": ">=13.7.0", 2209 | "long": "^4.0.0" 2210 | } 2211 | }, 2212 | "proxy-addr": { 2213 | "version": "2.0.7", 2214 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 2215 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 2216 | "requires": { 2217 | "forwarded": "0.2.0", 2218 | "ipaddr.js": "1.9.1" 2219 | } 2220 | }, 2221 | "qs": { 2222 | "version": "6.9.6", 2223 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", 2224 | "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" 2225 | }, 2226 | "range-parser": { 2227 | "version": "1.2.1", 2228 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 2229 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 2230 | }, 2231 | "raw-body": { 2232 | "version": "2.4.2", 2233 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", 2234 | "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", 2235 | "requires": { 2236 | "bytes": "3.1.1", 2237 | "http-errors": "1.8.1", 2238 | "iconv-lite": "0.4.24", 2239 | "unpipe": "1.0.0" 2240 | }, 2241 | "dependencies": { 2242 | "http-errors": { 2243 | "version": "1.8.1", 2244 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 2245 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 2246 | "requires": { 2247 | "depd": "~1.1.2", 2248 | "inherits": "2.0.4", 2249 | "setprototypeof": "1.2.0", 2250 | "statuses": ">= 1.5.0 < 2", 2251 | "toidentifier": "1.0.1" 2252 | } 2253 | }, 2254 | "inherits": { 2255 | "version": "2.0.4", 2256 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2257 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 2258 | }, 2259 | "setprototypeof": { 2260 | "version": "1.2.0", 2261 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 2262 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 2263 | } 2264 | } 2265 | }, 2266 | "require-directory": { 2267 | "version": "2.1.1", 2268 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2269 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" 2270 | }, 2271 | "retry-request": { 2272 | "version": "4.2.2", 2273 | "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz", 2274 | "integrity": "sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg==", 2275 | "requires": { 2276 | "debug": "^4.1.1", 2277 | "extend": "^3.0.2" 2278 | }, 2279 | "dependencies": { 2280 | "debug": { 2281 | "version": "4.3.3", 2282 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 2283 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 2284 | "requires": { 2285 | "ms": "2.1.2" 2286 | } 2287 | }, 2288 | "ms": { 2289 | "version": "2.1.2", 2290 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2291 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2292 | } 2293 | } 2294 | }, 2295 | "safe-buffer": { 2296 | "version": "5.1.2", 2297 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2298 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2299 | }, 2300 | "safer-buffer": { 2301 | "version": "2.1.2", 2302 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2303 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2304 | }, 2305 | "send": { 2306 | "version": "0.17.2", 2307 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", 2308 | "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", 2309 | "requires": { 2310 | "debug": "2.6.9", 2311 | "depd": "~1.1.2", 2312 | "destroy": "~1.0.4", 2313 | "encodeurl": "~1.0.2", 2314 | "escape-html": "~1.0.3", 2315 | "etag": "~1.8.1", 2316 | "fresh": "0.5.2", 2317 | "http-errors": "1.8.1", 2318 | "mime": "1.6.0", 2319 | "ms": "2.1.3", 2320 | "on-finished": "~2.3.0", 2321 | "range-parser": "~1.2.1", 2322 | "statuses": "~1.5.0" 2323 | }, 2324 | "dependencies": { 2325 | "http-errors": { 2326 | "version": "1.8.1", 2327 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 2328 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 2329 | "requires": { 2330 | "depd": "~1.1.2", 2331 | "inherits": "2.0.4", 2332 | "setprototypeof": "1.2.0", 2333 | "statuses": ">= 1.5.0 < 2", 2334 | "toidentifier": "1.0.1" 2335 | } 2336 | }, 2337 | "inherits": { 2338 | "version": "2.0.4", 2339 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2340 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 2341 | }, 2342 | "ms": { 2343 | "version": "2.1.3", 2344 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2345 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 2346 | }, 2347 | "setprototypeof": { 2348 | "version": "1.2.0", 2349 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 2350 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 2351 | } 2352 | } 2353 | }, 2354 | "serve-static": { 2355 | "version": "1.14.2", 2356 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", 2357 | "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", 2358 | "requires": { 2359 | "encodeurl": "~1.0.2", 2360 | "escape-html": "~1.0.3", 2361 | "parseurl": "~1.3.3", 2362 | "send": "0.17.2" 2363 | } 2364 | }, 2365 | "statuses": { 2366 | "version": "1.5.0", 2367 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 2368 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 2369 | }, 2370 | "stream-shift": { 2371 | "version": "1.0.1", 2372 | "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", 2373 | "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" 2374 | }, 2375 | "string-width": { 2376 | "version": "4.2.3", 2377 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2378 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2379 | "requires": { 2380 | "emoji-regex": "^8.0.0", 2381 | "is-fullwidth-code-point": "^3.0.0", 2382 | "strip-ansi": "^6.0.1" 2383 | } 2384 | }, 2385 | "strip-ansi": { 2386 | "version": "6.0.1", 2387 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2388 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2389 | "requires": { 2390 | "ansi-regex": "^5.0.1" 2391 | } 2392 | }, 2393 | "toidentifier": { 2394 | "version": "1.0.1", 2395 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 2396 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 2397 | }, 2398 | "tr46": { 2399 | "version": "0.0.3", 2400 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 2401 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 2402 | }, 2403 | "type-is": { 2404 | "version": "1.6.18", 2405 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 2406 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 2407 | "requires": { 2408 | "media-typer": "0.3.0", 2409 | "mime-types": "~2.1.24" 2410 | } 2411 | }, 2412 | "unpipe": { 2413 | "version": "1.0.0", 2414 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2415 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 2416 | }, 2417 | "util-deprecate": { 2418 | "version": "1.0.2", 2419 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2420 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 2421 | }, 2422 | "utils-merge": { 2423 | "version": "1.0.1", 2424 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2425 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 2426 | }, 2427 | "vary": { 2428 | "version": "1.1.2", 2429 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2430 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 2431 | }, 2432 | "webidl-conversions": { 2433 | "version": "3.0.1", 2434 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 2435 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 2436 | }, 2437 | "whatwg-url": { 2438 | "version": "5.0.0", 2439 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 2440 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 2441 | "requires": { 2442 | "tr46": "~0.0.3", 2443 | "webidl-conversions": "^3.0.0" 2444 | } 2445 | }, 2446 | "wrap-ansi": { 2447 | "version": "7.0.0", 2448 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2449 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2450 | "requires": { 2451 | "ansi-styles": "^4.0.0", 2452 | "string-width": "^4.1.0", 2453 | "strip-ansi": "^6.0.0" 2454 | } 2455 | }, 2456 | "wrappy": { 2457 | "version": "1.0.2", 2458 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2459 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 2460 | }, 2461 | "y18n": { 2462 | "version": "5.0.8", 2463 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2464 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" 2465 | }, 2466 | "yallist": { 2467 | "version": "4.0.0", 2468 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2469 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 2470 | }, 2471 | "yargs": { 2472 | "version": "16.2.0", 2473 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 2474 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 2475 | "requires": { 2476 | "cliui": "^7.0.2", 2477 | "escalade": "^3.1.1", 2478 | "get-caller-file": "^2.0.5", 2479 | "require-directory": "^2.1.1", 2480 | "string-width": "^4.2.0", 2481 | "y18n": "^5.0.5", 2482 | "yargs-parser": "^20.2.2" 2483 | } 2484 | }, 2485 | "yargs-parser": { 2486 | "version": "20.2.9", 2487 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 2488 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" 2489 | } 2490 | } 2491 | } 2492 | --------------------------------------------------------------------------------