├── react-app
├── public
│ ├── robots.txt
│ ├── favicon.ico
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── index.html
├── src
│ ├── NotesAPI.js
│ ├── setupTests.js
│ ├── App.test.js
│ ├── Note.js
│ ├── index.css
│ ├── Config.js
│ ├── App.css
│ ├── index.js
│ ├── NoteForm.js
│ ├── logo.svg
│ ├── App.js
│ └── serviceWorker.js
├── .gitignore
├── README.md
└── package.json
├── mw-app
├── .vscode
│ └── extensions.json
├── host.json
├── echo
│ ├── function.json
│ ├── datasources.js
│ └── index.js
├── package.json
├── .gitignore
├── README.md
└── package-lock.json
├── .vscode
├── settings.json
└── tasks.json
├── CODE_OF_CONDUCT.md
├── LICENSE
├── SUPPORT.md
├── .gitignore
├── SECURITY.md
└── README.md
/react-app/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/react-app/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/aadb2c-starter-kit/main/react-app/public/favicon.ico
--------------------------------------------------------------------------------
/react-app/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/aadb2c-starter-kit/main/react-app/public/logo192.png
--------------------------------------------------------------------------------
/react-app/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/aadb2c-starter-kit/main/react-app/public/logo512.png
--------------------------------------------------------------------------------
/mw-app/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "ms-azuretools.vscode-azurefunctions"
4 | ]
5 | }
--------------------------------------------------------------------------------
/react-app/src/NotesAPI.js:
--------------------------------------------------------------------------------
1 | import { ApolloClient, InMemoryCache } from '@apollo/client';
2 | import { config } from './Config';
3 |
4 | const NotesApi = new ApolloClient({
5 | uri: config.apiurl,
6 | cache: new InMemoryCache()
7 | });
8 |
9 | export default NotesApi;
10 |
--------------------------------------------------------------------------------
/react-app/src/setupTests.js:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom/extend-expect';
6 |
--------------------------------------------------------------------------------
/react-app/src/App.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { render } from '@testing-library/react';
3 | import App from './App';
4 |
5 | test('renders learn react link', () => {
6 | const { getByText } = render();
7 | const linkElement = getByText(/learn react/i);
8 | expect(linkElement).toBeInTheDocument();
9 | });
10 |
--------------------------------------------------------------------------------
/react-app/src/Note.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 |
3 | class Note extends Component {
4 |
5 |
6 | render(){
7 |
8 |
9 | return (
10 |
11 |
{this.props.note.id}
12 |
Text:{this.props.note.text}
13 |
14 | );
15 | }
16 | }
17 |
18 | export default Note;
19 |
--------------------------------------------------------------------------------
/mw-app/host.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0",
3 | "logging": {
4 | "applicationInsights": {
5 | "samplingSettings": {
6 | "isEnabled": true,
7 | "excludedTypes": "Request"
8 | }
9 | }
10 | },
11 | "extensionBundle": {
12 | "id": "Microsoft.Azure.Functions.ExtensionBundle",
13 | "version": "[1.*, 2.0.0)"
14 | }
15 | }
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "azureFunctions.projectSubpath": "mw-app",
3 | "azureFunctions.deploySubpath": "mw-app",
4 | "azureFunctions.postDeployTask": "npm install",
5 | "azureFunctions.projectLanguage": "JavaScript",
6 | "azureFunctions.projectRuntime": "~3",
7 | "debug.internalConsoleOptions": "neverOpen",
8 | "azureFunctions.preDeployTask": "npm prune"
9 | }
--------------------------------------------------------------------------------
/react-app/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | /build
13 |
14 | # misc
15 | .DS_Store
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
--------------------------------------------------------------------------------
/mw-app/echo/function.json:
--------------------------------------------------------------------------------
1 | {
2 | "bindings": [
3 | {
4 | "authLevel": "anonymous",
5 | "type": "httpTrigger",
6 | "direction": "in",
7 | "name": "req",
8 | "route": "u/{uid}",
9 | "methods": [
10 | "get",
11 | "post",
12 | "options"
13 | ]
14 | },
15 | {
16 | "type": "http",
17 | "direction": "out",
18 | "name": "$return"
19 | }
20 | ]
21 | }
--------------------------------------------------------------------------------
/react-app/README.md:
--------------------------------------------------------------------------------
1 | This is the REACT app
2 |
3 | # Run
4 | 1. run ``npm install```` to install dependencies
5 | 2. take a look at /src/config.js the app uses the middleware in azure. If you want to change the app to run against a local middleware just uncomment the localhost address
6 |
7 | # Build
8 | If you want an all static version of this app just run
9 | ```npm run build```
10 | The static content will be in build directory.
11 |
12 |
--------------------------------------------------------------------------------
/react-app/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
5 | sans-serif;
6 | -webkit-font-smoothing: antialiased;
7 | -moz-osx-font-smoothing: grayscale;
8 | }
9 |
10 | code {
11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
12 | monospace;
13 | }
14 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Microsoft Open Source Code of Conduct
2 |
3 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
4 |
5 | Resources:
6 |
7 | - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
8 | - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
9 | - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
10 |
--------------------------------------------------------------------------------
/mw-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "",
3 | "version": "",
4 | "description": "",
5 | "scripts": {
6 | "test": "echo \"No tests yet...\""
7 | },
8 | "dependencies": {
9 | "@azure/cosmos": "^3.10.5",
10 | "@azure/service-bus": "^7.0.0",
11 | "apollo-datasource": "^0.1.3",
12 | "apollo-datasource-rest": "^0.1.5",
13 | "apollo-server-azure-functions": "^2.23.0",
14 | "azure-function-log-intercept": "^1.0.7",
15 | "cors": "^2.8.5",
16 | "graphql": "^15.5.0",
17 | "uuid": "^8.3.2"
18 | },
19 | "author": ""
20 | }
21 |
--------------------------------------------------------------------------------
/mw-app/.gitignore:
--------------------------------------------------------------------------------
1 | bin
2 | obj
3 | csx
4 | .vs
5 | edge
6 | Publish
7 |
8 | *.user
9 | *.suo
10 | *.cscfg
11 | *.Cache
12 | project.lock.json
13 |
14 | /packages
15 | /TestResults
16 |
17 | /tools/NuGet.exe
18 | /App_Data
19 | /secrets
20 | /data
21 | .secrets
22 | appsettings.json
23 | local.settings.json
24 |
25 | node_modules
26 | dist
27 |
28 | # Local python packages
29 | .python_packages/
30 |
31 | # Python Environments
32 | .env
33 | .venv
34 | env/
35 | venv/
36 | ENV/
37 | env.bak/
38 | venv.bak/
39 |
40 | # Byte-compiled / optimized / DLL files
41 | __pycache__/
42 | *.py[cod]
43 | *$py.class
--------------------------------------------------------------------------------
/react-app/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/react-app/src/Config.js:
--------------------------------------------------------------------------------
1 | const prod = {
2 | apiurl: 'https://adb2cstarterkitmw.azurewebsites.net/api/u/',
3 | clientId: '0da90f62-a335-4338-a70a-3d73ea275926',
4 | authority: 'https://aadb2cstarterkit.b2clogin.com/tfp/aadb2cstarterkit.onmicrosoft.com/B2C_1_signup_signin/',
5 |
6 | };
7 | const dev = {
8 | apiurl: 'https://adb2cstarterkitmw.azurewebsites.net/api/u/',
9 | //uncomment to run against local
10 | //apiurl: 'http://localhost:7071/api/u/',
11 | clientId: prod.clientId,
12 | authority: prod.authority,
13 |
14 | };
15 | export const config = process.env.NODE_ENV === 'development' ? dev: prod;
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "type": "func",
6 | "command": "host start",
7 | "problemMatcher": "$func-node-watch",
8 | "isBackground": true,
9 | "dependsOn": "npm install",
10 | "options": {
11 | "cwd": "${workspaceFolder}/mw-app"
12 | }
13 | },
14 | {
15 | "type": "shell",
16 | "label": "npm install",
17 | "command": "npm install",
18 | "options": {
19 | "cwd": "${workspaceFolder}/mw-app"
20 | }
21 | },
22 | {
23 | "type": "shell",
24 | "label": "npm prune",
25 | "command": "npm prune --production",
26 | "problemMatcher": [],
27 | "options": {
28 | "cwd": "${workspaceFolder}/mw-app"
29 | }
30 | }
31 | ]
32 | }
--------------------------------------------------------------------------------
/react-app/src/App.css:
--------------------------------------------------------------------------------
1 | .App {
2 | text-align: center;
3 | }
4 |
5 | .App-logo {
6 | height: 40vmin;
7 | pointer-events: none;
8 | }
9 |
10 | @media (prefers-reduced-motion: no-preference) {
11 | .App-logo {
12 | animation: App-logo-spin infinite 20s linear;
13 | }
14 | }
15 |
16 | .App-header {
17 | background-color: #282c34;
18 | min-height: 100vh;
19 | display: flex;
20 | flex-direction: column;
21 | align-items: center;
22 | justify-content: center;
23 | font-size: calc(10px + 2vmin);
24 | color: white;
25 | }
26 |
27 | .App-link {
28 | color: #61dafb;
29 | }
30 |
31 | @keyframes App-logo-spin {
32 | from {
33 | transform: rotate(0deg);
34 | }
35 | to {
36 | transform: rotate(360deg);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/react-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "reactadb2c",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@apollo/client": "^3.3.15",
7 | "@testing-library/jest-dom": "^4.2.4",
8 | "@testing-library/react": "^9.5.0",
9 | "@testing-library/user-event": "^7.2.1",
10 | "bootstrap": "^4.6.0",
11 | "graphql": "^15.5.0",
12 | "msal": "^1.4.9",
13 | "react": "^16.14.0",
14 | "react-bootstrap": "^1.5.2",
15 | "react-dom": "^16.14.0",
16 | "react-scripts": "3.4.1",
17 | "semantic-ui-css": "^2.4.1",
18 | "semantic-ui-react": "^2.0.3"
19 | },
20 | "scripts": {
21 | "start": "react-scripts start",
22 | "build": "react-scripts build",
23 | "test": "react-scripts test",
24 | "eject": "react-scripts eject"
25 | },
26 | "eslintConfig": {
27 | "extends": "react-app"
28 | },
29 | "browserslist": {
30 | "production": [
31 | ">0.2%",
32 | "not dead",
33 | "not op_mini all"
34 | ],
35 | "development": [
36 | "last 1 chrome version",
37 | "last 1 firefox version",
38 | "last 1 safari version"
39 | ]
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) Microsoft Corporation.
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 |
--------------------------------------------------------------------------------
/react-app/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import './index.css';
4 | import App from './App';
5 | import * as serviceWorker from './serviceWorker';
6 | import * as Msal from "msal";
7 | import { Button } from 'react-bootstrap';
8 |
9 |
10 |
11 |
12 |
13 | var apiTokenRequest = {
14 | scopes: ["https://ssdadb2cdevbackend.azurewebsites.net/api/echo"] // optional Array
15 | };
16 | let token;
17 | let apiresponse;
18 | let givenname;
19 | let email;
20 | let displayname;
21 | let id;
22 |
23 |
24 |
25 | let fetchFromAPI = function () {
26 | var headers = new Headers();
27 | var bearer = "Bearer " + token;
28 | headers.append("Authorization", bearer);
29 | var options = {
30 | method: "GET",
31 | headers: headers
32 | };
33 | var graphEndpoint = "https://ssdadb2cdevbackend.azurewebsites.net/api/echo?name=hihihi";//"https://graph.microsoft.com/v1.0/me";
34 |
35 | fetch(graphEndpoint, options)
36 | .then(response => response.json())
37 | .then(data => {
38 | console.log("hey");
39 |
40 | apiresponse = data.text;
41 |
42 | render();
43 | });
44 |
45 | }
46 |
47 | let render = function () {
48 | ReactDOM.render(
49 |
50 |
51 | ,
52 | document.getElementById('root')
53 | );
54 | };
55 | render();
56 |
--------------------------------------------------------------------------------
/SUPPORT.md:
--------------------------------------------------------------------------------
1 | # TODO: The maintainer of this repo has not yet edited this file
2 |
3 | **REPO OWNER**: Do you want Customer Service & Support (CSS) support for this product/project?
4 |
5 | - **No CSS support:** Fill out this template with information about how to file issues and get help.
6 | - **Yes CSS support:** Fill out an intake form at [aka.ms/spot](https://aka.ms/spot). CSS will work with/help you to determine next steps. More details also available at [aka.ms/onboardsupport](https://aka.ms/onboardsupport).
7 | - **Not sure?** Fill out a SPOT intake as though the answer were "Yes". CSS will help you decide.
8 |
9 | *Then remove this first heading from this SUPPORT.MD file before publishing your repo.*
10 |
11 | # Support
12 |
13 | ## How to file issues and get help
14 |
15 | This project uses GitHub Issues to track bugs and feature requests. Please search the existing
16 | issues before filing new issues to avoid duplicates. For new issues, file your bug or
17 | feature request as a new Issue.
18 |
19 | For help and questions about using this project, please **REPO MAINTAINER: INSERT INSTRUCTIONS HERE
20 | FOR HOW TO ENGAGE REPO OWNERS OR COMMUNITY FOR HELP. COULD BE A STACK OVERFLOW TAG OR OTHER
21 | CHANNEL. WHERE WILL YOU HELP PEOPLE?**.
22 |
23 | ## Microsoft Support Policy
24 |
25 | Support for this **PROJECT or PRODUCT** is limited to the resources listed above.
26 |
--------------------------------------------------------------------------------
/mw-app/echo/datasources.js:
--------------------------------------------------------------------------------
1 | const { RESTDataSource } = require('apollo-datasource-rest');
2 | const { CosmosClient } = require('@azure/cosmos');
3 | const { v4: uuidv4 } =require('uuid');
4 |
5 |
6 |
7 | class CosmosBackend extends RESTDataSource {
8 | constructor() {
9 | super();
10 | this.client = new CosmosClient(process.env.cosmos);
11 | }
12 | getNotesCollection(){
13 |
14 | return this.client.database("notesdb").container("notescontainer");
15 | }
16 |
17 | async getNotesByUserid({ userid }) {
18 |
19 | let results = await this.getNotesCollection()
20 | .items.query({
21 | query: 'SELECT * FROM c where c.userid="'+userid +'"',
22 | })
23 | .fetchAll();
24 |
25 |
26 | return results.resources.length >=1 ?results.resources:[];
27 | }
28 |
29 | async updateNote({id,pk,text}){
30 |
31 | let {resource} = await this.getNotesCollection().item(id,pk).read();
32 | if(resource){
33 | resource.text=text;
34 | await this.getNotesCollection().item(id,pk).replace(resource);
35 | return resource;
36 | }
37 | return null;
38 | }
39 |
40 | async newNote({userid,text}){
41 | let nNote={
42 | id: uuidv4(),
43 | userid: userid,
44 | text: text
45 | };
46 | let { resource: createdItem } = await this.getNotesCollection().items.create(nNote);
47 | return createdItem?createdItem:null;
48 | }
49 |
50 |
51 |
52 | }
53 | module.exports = CosmosBackend;
--------------------------------------------------------------------------------
/react-app/src/NoteForm.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 |
3 |
4 |
5 |
6 | class NoteForm extends Component {
7 | constructor(props) {
8 | super(props);
9 | this.state = {
10 | submitting: false,
11 | title: '',
12 | content: ''
13 | };
14 | }
15 | formChangeHandler=(event)=>{
16 | let nam = event.target.name;
17 | let val = event.target.value;
18 | this.setState({[nam]: val});
19 | }
20 |
21 |
22 |
23 |
24 | submitForm = (event) => {
25 | event.preventDefault();
26 | this.setState({ submitting: true });
27 | this.props.submitCallback({text:this.state.content});
28 | this.setState({contents:""});
29 | }
30 |
31 | render() {
32 |
33 |
34 | return (
35 |
36 | {!this.props.submitting ?
37 |
44 | :
45 | adding note please wait...
46 | }
47 |
48 | );
49 | }
50 | }
51 |
52 | export default NoteForm;
53 |
--------------------------------------------------------------------------------
/mw-app/echo/index.js:
--------------------------------------------------------------------------------
1 |
2 | const { ApolloServer, gql } = require('apollo-server-azure-functions');
3 | const typeDefs =
4 | gql`
5 | type Note {
6 | id: ID
7 | uid: String
8 | text: String
9 | }
10 | type Query {
11 | hello: String
12 | getNotesByUser:[Note]
13 | }
14 | type Mutation {
15 | updateNote(id:ID,text: String):Note
16 | newNote(text: String): Note
17 | }
18 | `;
19 | const CosmosBackend = require('./datasources');
20 |
21 |
22 | const resolvers = {
23 | Query: {
24 | hello: () => 'Hello world!',
25 | getNotesByUser:(_,{},{uidReqParam,cosmosBackend})=>
26 | cosmosBackend.getNotesByUserid({userid:uidReqParam})
27 |
28 | },
29 | Mutation: {
30 | newNote: async (_, {text}, {uidReqParam,cosmosBackend}) => {
31 | return await cosmosBackend.newNote({userid:uidReqParam,text:text}); },
32 | updateNote: async(_,{id,text},{uidReqParam,cosmosBackend})=>{
33 | return await cosmosBackend.updateNote({id:id,pk:uidReqParam,text:text}); }
34 | }
35 | };
36 |
37 | const server = new ApolloServer(
38 |
39 | { typeDefs,
40 | // dataSources: () => ({ cosmosBackend:new CosmosBackend() }),
41 | resolvers,
42 | context: (req) => {
43 | return {
44 | uidReqParam: req.context.bindingData.uid,
45 | cosmosBackend:new CosmosBackend()
46 | }},
47 | introspection: false,
48 | playground: false,
49 | });
50 |
51 | exports.graphqlHandler = server.createHandler({
52 | cors: {
53 | origin: '*',
54 | allowedHeaders:['Content-Type', 'Authorization']
55 | },
56 | });
57 |
--------------------------------------------------------------------------------
/react-app/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
18 |
19 |
23 |
24 |
33 | React App
34 |
35 |
36 |
37 |
38 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # TypeScript v1 declaration files
45 | typings/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 |
78 | # Next.js build output
79 | .next
80 |
81 | # Nuxt.js build / generate output
82 | .nuxt
83 | dist
84 |
85 | # Gatsby files
86 | .cache/
87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
88 | # https://nextjs.org/blog/next-9-1#public-directory-support
89 | # public
90 |
91 | # vuepress build output
92 | .vuepress/dist
93 |
94 | # Serverless directories
95 | .serverless/
96 |
97 | # FuseBox cache
98 | .fusebox/
99 |
100 | # DynamoDB Local files
101 | .dynamodb/
102 |
103 | # TernJS port file
104 | .tern-port
105 |
--------------------------------------------------------------------------------
/react-app/src/logo.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## Security
4 |
5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
6 |
7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
8 |
9 | ## Reporting Security Issues
10 |
11 | **Please do not report security vulnerabilities through public GitHub issues.**
12 |
13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
14 |
15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
16 |
17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
18 |
19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
20 |
21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
22 | * Full paths of source file(s) related to the manifestation of the issue
23 | * The location of the affected source code (tag/branch/commit or direct URL)
24 | * Any special configuration required to reproduce the issue
25 | * Step-by-step instructions to reproduce the issue
26 | * Proof-of-concept or exploit code (if possible)
27 | * Impact of the issue, including how an attacker might exploit the issue
28 |
29 | This information will help us triage your report more quickly.
30 |
31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
32 |
33 | ## Preferred Languages
34 |
35 | We prefer all communications to be in English.
36 |
37 | ## Policy
38 |
39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
40 |
41 |
--------------------------------------------------------------------------------
/mw-app/README.md:
--------------------------------------------------------------------------------
1 | # What is this?
2 | This is middle ware that sits in front of cosmos. It's hsoted as an Azure Function and uses GrapQL. [Apollo Server for Azure Functions=(https://github.com/apollographql/apollo-server/tree/main/packages/apollo-server-azure-functions).
3 |
4 | # Quickstart
5 |
6 | ## Prereq
7 | You need to setup a Cosmos Database. It needs to have a database called "notesdb" and a collection called "notescollection" with a partionkey called "userid".
8 |
9 | If you want to run local you must have [Azure Functions Core Tools](https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local?tabs=windows%2Ccsharp%2Cbash) installed.
10 |
11 | ## Running Local
12 | 1. Pull down the code
13 | 2. Run `npm install` to install dependenceies
14 | 3. Create a local.settings.json file with the following:
15 | ```
16 | {
17 | "IsEncrypted": false,
18 | "Values": {
19 | "cosmos":"REPLACE",
20 | "FUNCTIONS_WORKER_RUNTIME": "node",
21 | "AzureWebJobsStorage": "UseDevelopmentStorage=true"
22 | },
23 | "Host": {
24 | "LocalHttpPort": 7071,
25 | "CORS": "*"
26 | }
27 | }
28 | ```
29 | 4. Replace the value of cosmos with your Cosmos connection string
30 | 5. Run `func start`
31 | 6. Point your app to http:/localhost:7071/u
32 |
33 | ## Run on Azure
34 | 1. Deploy this code to a Linux Azure Function (it will work on Windows hosted functions but will perform slower)
35 | 2. Create an app setting called "cosmos" with teh connection string
36 | 3. Change your app to point to the function url
37 |
38 | # Deep Dive
39 |
40 | ## Grapql
41 | Is this your first time using GrapQL? Let's walk through it.
42 | Before we look through the code let's play with GrapQL.
43 | ### Let's start the GrapQL IDE and walk through it.
44 | 1. Open echo/index.js and look towards the bottom of the file.
45 | 2. Find and change these two values to tru:
46 | ```
47 | introspection: false,
48 | playground: false,
49 | ```
50 | 3. Save the file
51 | 4. Run `func start`
52 | 5. Go to http://localhost:7071/u/myuser
53 |
54 | This is the GrapQL IDE for Apollo called Playground.
55 | You can interactivley use tab + space to autocomplete build a query. Try it!
56 | Here's a sample query you can copy/paste.
57 | ### Create a new note:
58 | ```
59 | mutation{
60 | newNote(text:"my first note"){id uid text}
61 | }
62 | ```
63 | Note that the output shows the id of the document created
64 |
65 | #### Retreive all recrods
66 | ```
67 | query{
68 | getNotesByUserid{id userid text}
69 | }
70 | ```
71 |
72 | #### Retrieve All notes v2
73 | ```
74 | query{
75 | getNotesByUserid{id text}
76 | }
77 | ```
78 |
79 | #### Why is any of this important?
80 | Let's say you're building a front end app and you want to create new notes. On a traditional API you'd need to create an endpoint for creating new notes.
81 | Now lets say you want to add functionality to create a new note where you specify the ID. Well now you're going to need to create an additional ID.
82 | Now let's say we add a new field to the note- we either need to coordinate modification of the endpoints with teh frontend app or make a new end poin.
83 |
84 |
85 | As we repeat this a few more cycles we have tens fo end points with different signatures.
86 |
87 |
--------------------------------------------------------------------------------
/react-app/src/App.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import 'semantic-ui-css/semantic.min.css'
3 | import { Button, Menu } from 'semantic-ui-react'
4 |
5 | import Note from './Note';
6 | import NoteForm from './NoteForm';
7 | import * as Msal from "msal";
8 | import { config } from './Config';
9 | import { ApolloClient, InMemoryCache } from '@apollo/client';
10 | import NotesApi from './NotesAPI';
11 | import { gql } from '@apollo/client';
12 |
13 | const NotesQuery=gql`
14 | query{
15 | notes:getNotesByUser{id text}
16 | }
17 | `;
18 | const NewNoteMutation=gql`
19 | mutation($te:String){
20 | newNote(text:$te){id text}
21 | }
22 | `;
23 |
24 | class App extends Component {
25 |
26 | constructor(props) {
27 | super(props);
28 | let msalConfig = {
29 | auth: {
30 | clientId: config.clientId,
31 | authority: config.authority,
32 | id:"",
33 | validateAuthority: false
34 | }
35 | };
36 |
37 | let msalI = new Msal.UserAgentApplication(msalConfig);
38 | this.state = {
39 | msalInstance:msalI,
40 | loggedin:false,
41 | id:null,
42 | displayname:"",
43 | notes: [],
44 | api:null
45 | };
46 | }
47 |
48 | componentDidMount(){
49 | if (this.state.msalInstance.getAccount()) {
50 |
51 | let id = this.state.msalInstance.getAccount();
52 | this.setState({
53 | loggedin: true,
54 | id: id.accountIdentifier,
55 | displayname: id.name
56 | },()=>{
57 | this.fetchNotes();
58 | });
59 | }
60 | }
61 |
62 |
63 | signout = () => {
64 | this.state.msalInstance.logout().then(response => {
65 | this.setState({
66 | loggedin:false,
67 | displayname:"",
68 | token:""});
69 | });
70 | }
71 | signin = () => {
72 | let loginRequest = {
73 | scopes: ["openid"] // optional Array
74 | };
75 | this.state.msalInstance.loginRedirect(loginRequest);
76 | }
77 |
78 | getAPIClient=()=>{
79 | return new ApolloClient({
80 | uri: config.apiurl + this.state.id,
81 | cache: new InMemoryCache()
82 | });
83 | }
84 |
85 | fetchNotes = (event) => {
86 | if (this.state.loggedin) {
87 | let NotesApi = this.getAPIClient();
88 |
89 | NotesApi.query({
90 | query:NotesQuery
91 | })
92 | .then(response=>{
93 | this.setState({notes:response.data.notes});
94 | });
95 |
96 | }
97 | }
98 |
99 | newNote = ({text:noteText})=>{
100 | this.setState({submitting:true});
101 | let NotesApi = this.getAPIClient();
102 | NotesApi.mutate({
103 | mutation:NewNoteMutation,
104 | variables:{
105 | te:noteText
106 | }
107 | })
108 | .then((response)=>{
109 | this.setState({submitting:false});
110 | this.fetchNotes();
111 | });
112 | }
113 |
114 | render() {
115 | let sorted=[];
116 | if(this.state.notes.length>0){
117 | sorted = this.state.notes.map((note) => (
118 |
119 | ));
120 | }
121 |
122 | return (
123 |
124 |
141 | {this.state.loggedin?
142 |
143 |
144 | {sorted}
145 |
146 | :
147 |
Please Sign In
148 | }
149 |
150 | );
151 | }
152 | }
153 |
154 | export default App;
155 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Let's Make an App with Login
2 |
3 | ## Scenario
4 | We are part of a startup that is going to offer encrypted shared documents on the web.
5 | Our CEO has investores who want to see what we've got next week.
6 | We want to get an MVP on the web in a week!
7 | Our MVP will allow users to store notes on the web- no sharing, no encryption.
8 |
9 | # Final Architecture
10 | 1. React Front End served on Azure Blob Static Site
11 | 2. B2C for Identity and PII
12 | 3. APIM for authorization
13 | 4. Azure Functions App as middle ware API
14 | 5. Cosmos DB for PHI
15 |
16 | ## MVP Requirements:
17 | 1. Self service- sign up, sign in, password requirements
18 | 2. Users must agree to T&C
19 | 3. We must captre users' age, name, email, password
20 | 4. Descent UI (bootstrap is fine)
21 | 5. Support Live, and Google sign ups,
22 | 6. App requires sign in
23 | 7. App displays user name
24 | 8. App displays notes user has access to
25 | 9. App allows users to edit notes
26 |
27 |
28 | ## Components:
29 | ADB2C - will handle all the identity stuff
30 | storage account - will store static assets
31 | App service - will run our SPA
32 | Function - will act as an intermediary to cosmos
33 | Cosmos - will store our notes
34 |
35 | Ok enough of that- let's get started.
36 |
37 | # Sprints
38 | 1. Setup Sign In, Sign Up (2 hours)
39 | At the end of this sprint we'll enable self-service user registration and sign in
40 | 2. App (2 hour)
41 | At the end of this sprint we'll have a front end that runs the sign in in a nice flow
42 | 3. APIs (2 hours)
43 | At the end of this sprint we'll have a REST-ish API that CRUDs notes in Cosmos
44 | 4. Integrate App and API (1 hour)
45 | At the end of this sprint our front end app will CRUD notes in cosmos!
46 | 5. Add T&C (2 hours)
47 | At the end of this sprint our app users will also agree to t&c
48 | 6. UI/UX (2 hours)
49 | At the end of this sprint our app will look good enough
50 | 7. Setup Live and Facebook
51 | At the end of this sprint our users can use their Live and Facebook IDs to login
52 |
53 | ## Sprint 1 Setup Sign In, Sign Up
54 | 1. Create a B2C tenant
55 | 2. Create a user attribute for email, and dateofbirth
56 | 3. Create a sign in / sign up user flow
57 | 4. Run "test flow".
58 |
59 | ## Sprint 2 App (2 hour)
60 | 1. npm create-react-app
61 | 2. Create a notes component
62 | 3. npm install msal
63 | 4. create react app id in adb2c
64 | 5. setup sign in
65 | 6. Deploy to app service
66 |
67 | ## Sprint 3 APIs (2 hours)
68 | 1. Visual Studio Project
69 | 2. Create binding to cosmos
70 | 3. Create CRUD methods
71 | 4. Validate JWT
72 | 5. Deploy to Functions
73 | 6. Create APP ID for Function
74 | 7. Create scope
75 |
76 | ## Sprint 4 Integrate App and API (1 hour)
77 | 1. Update app
78 | 2. Update CORS on functions
79 | BOOM we have an MVP!
80 |
81 | ## Sprint 5 Add T&C (2 hours)
82 | 1. Create custom policy
83 | 2. Update app
84 |
85 |
86 | What we haven't done:
87 | our app really should validate jwt
88 | ## Contributing
89 |
90 | This project welcomes contributions and suggestions. Most contributions require you to agree to a
91 | Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
92 | the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
93 |
94 | When you submit a pull request, a CLA bot will automatically determine whether you need to provide
95 | a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
96 | provided by the bot. You will only need to do this once across all repos using our CLA.
97 |
98 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
99 | For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
100 | contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
101 |
102 | ## Trademarks
103 |
104 | This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft
105 | trademarks or logos is subject to and must follow
106 | [Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
107 | Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
108 | Any use of third-party trademarks or logos are subject to those third-party's policies.
109 |
--------------------------------------------------------------------------------
/react-app/src/serviceWorker.js:
--------------------------------------------------------------------------------
1 | // This optional code is used to register a service worker.
2 | // register() is not called by default.
3 |
4 | // This lets the app load faster on subsequent visits in production, and gives
5 | // it offline capabilities. However, it also means that developers (and users)
6 | // will only see deployed updates on subsequent visits to a page, after all the
7 | // existing tabs open on the page have been closed, since previously cached
8 | // resources are updated in the background.
9 |
10 | // To learn more about the benefits of this model and instructions on how to
11 | // opt-in, read https://bit.ly/CRA-PWA
12 |
13 | const isLocalhost = Boolean(
14 | window.location.hostname === 'localhost' ||
15 | // [::1] is the IPv6 localhost address.
16 | window.location.hostname === '[::1]' ||
17 | // 127.0.0.0/8 are considered localhost for IPv4.
18 | window.location.hostname.match(
19 | /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
20 | )
21 | );
22 |
23 | export function register(config) {
24 | if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
25 | // The URL constructor is available in all browsers that support SW.
26 | const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);
27 | if (publicUrl.origin !== window.location.origin) {
28 | // Our service worker won't work if PUBLIC_URL is on a different origin
29 | // from what our page is served on. This might happen if a CDN is used to
30 | // serve assets; see https://github.com/facebook/create-react-app/issues/2374
31 | return;
32 | }
33 |
34 | window.addEventListener('load', () => {
35 | const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
36 |
37 | if (isLocalhost) {
38 | // This is running on localhost. Let's check if a service worker still exists or not.
39 | checkValidServiceWorker(swUrl, config);
40 |
41 | // Add some additional logging to localhost, pointing developers to the
42 | // service worker/PWA documentation.
43 | navigator.serviceWorker.ready.then(() => {
44 | console.log(
45 | 'This web app is being served cache-first by a service ' +
46 | 'worker. To learn more, visit https://bit.ly/CRA-PWA'
47 | );
48 | });
49 | } else {
50 | // Is not localhost. Just register service worker
51 | registerValidSW(swUrl, config);
52 | }
53 | });
54 | }
55 | }
56 |
57 | function registerValidSW(swUrl, config) {
58 | navigator.serviceWorker
59 | .register(swUrl)
60 | .then(registration => {
61 | registration.onupdatefound = () => {
62 | const installingWorker = registration.installing;
63 | if (installingWorker == null) {
64 | return;
65 | }
66 | installingWorker.onstatechange = () => {
67 | if (installingWorker.state === 'installed') {
68 | if (navigator.serviceWorker.controller) {
69 | // At this point, the updated precached content has been fetched,
70 | // but the previous service worker will still serve the older
71 | // content until all client tabs are closed.
72 | console.log(
73 | 'New content is available and will be used when all ' +
74 | 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'
75 | );
76 |
77 | // Execute callback
78 | if (config && config.onUpdate) {
79 | config.onUpdate(registration);
80 | }
81 | } else {
82 | // At this point, everything has been precached.
83 | // It's the perfect time to display a
84 | // "Content is cached for offline use." message.
85 | console.log('Content is cached for offline use.');
86 |
87 | // Execute callback
88 | if (config && config.onSuccess) {
89 | config.onSuccess(registration);
90 | }
91 | }
92 | }
93 | };
94 | };
95 | })
96 | .catch(error => {
97 | console.error('Error during service worker registration:', error);
98 | });
99 | }
100 |
101 | function checkValidServiceWorker(swUrl, config) {
102 | // Check if the service worker can be found. If it can't reload the page.
103 | fetch(swUrl, {
104 | headers: { 'Service-Worker': 'script' },
105 | })
106 | .then(response => {
107 | // Ensure service worker exists, and that we really are getting a JS file.
108 | const contentType = response.headers.get('content-type');
109 | if (
110 | response.status === 404 ||
111 | (contentType != null && contentType.indexOf('javascript') === -1)
112 | ) {
113 | // No service worker found. Probably a different app. Reload the page.
114 | navigator.serviceWorker.ready.then(registration => {
115 | registration.unregister().then(() => {
116 | window.location.reload();
117 | });
118 | });
119 | } else {
120 | // Service worker found. Proceed as normal.
121 | registerValidSW(swUrl, config);
122 | }
123 | })
124 | .catch(() => {
125 | console.log(
126 | 'No internet connection found. App is running in offline mode.'
127 | );
128 | });
129 | }
130 |
131 | export function unregister() {
132 | if ('serviceWorker' in navigator) {
133 | navigator.serviceWorker.ready
134 | .then(registration => {
135 | registration.unregister();
136 | })
137 | .catch(error => {
138 | console.error(error.message);
139 | });
140 | }
141 | }
142 |
--------------------------------------------------------------------------------
/mw-app/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "requires": true,
3 | "lockfileVersion": 1,
4 | "dependencies": {
5 | "@apollo/protobufjs": {
6 | "version": "1.0.5",
7 | "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.0.5.tgz",
8 | "integrity": "sha512-ZtyaBH1icCgqwIGb3zrtopV2D5Q8yxibkJzlaViM08eOhTQc7rACdYu0pfORFfhllvdMZ3aq69vifYHszY4gNA==",
9 | "requires": {
10 | "@protobufjs/aspromise": "^1.1.2",
11 | "@protobufjs/base64": "^1.1.2",
12 | "@protobufjs/codegen": "^2.0.4",
13 | "@protobufjs/eventemitter": "^1.1.0",
14 | "@protobufjs/fetch": "^1.1.0",
15 | "@protobufjs/float": "^1.0.2",
16 | "@protobufjs/inquire": "^1.1.0",
17 | "@protobufjs/path": "^1.1.2",
18 | "@protobufjs/pool": "^1.1.0",
19 | "@protobufjs/utf8": "^1.1.0",
20 | "@types/long": "^4.0.0",
21 | "@types/node": "^10.1.0",
22 | "long": "^4.0.0"
23 | },
24 | "dependencies": {
25 | "@types/node": {
26 | "version": "10.17.58",
27 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.58.tgz",
28 | "integrity": "sha512-Dn5RBxLohjdHFj17dVVw3rtrZAeXeWg+LQfvxDIW/fdPkSiuQk7h3frKMYtsQhtIW42wkErDcy9UMVxhGW4O7w=="
29 | }
30 | }
31 | },
32 | "@apollographql/apollo-tools": {
33 | "version": "0.4.9",
34 | "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.4.9.tgz",
35 | "integrity": "sha512-M50pk8oo3CGTu4waGOklIX3YtTZoPfWG9K/G9WB8NpyQGA1OwYTiBFv94XqUtKElTDoFwoMXpMQd3Wy5dINvxA==",
36 | "requires": {
37 | "apollo-env": "^0.6.6"
38 | }
39 | },
40 | "@apollographql/graphql-playground-html": {
41 | "version": "1.6.27",
42 | "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.27.tgz",
43 | "integrity": "sha512-tea2LweZvn6y6xFV11K0KC8ETjmm52mQrW+ezgB2O/aTQf8JGyFmMcRPFgUaQZeHbWdm8iisDC6EjOKsXu0nfw==",
44 | "requires": {
45 | "xss": "^1.0.8"
46 | }
47 | },
48 | "@apollographql/graphql-upload-8-fork": {
49 | "version": "8.1.3",
50 | "resolved": "https://registry.npmjs.org/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.3.tgz",
51 | "integrity": "sha512-ssOPUT7euLqDXcdVv3Qs4LoL4BPtfermW1IOouaqEmj36TpHYDmYDIbKoSQxikd9vtMumFnP87OybH7sC9fJ6g==",
52 | "requires": {
53 | "@types/express": "*",
54 | "@types/fs-capacitor": "*",
55 | "@types/koa": "*",
56 | "busboy": "^0.3.1",
57 | "fs-capacitor": "^2.0.4",
58 | "http-errors": "^1.7.3",
59 | "object-path": "^0.11.4"
60 | }
61 | },
62 | "@azure/abort-controller": {
63 | "version": "1.0.4",
64 | "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.4.tgz",
65 | "integrity": "sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw==",
66 | "requires": {
67 | "tslib": "^2.0.0"
68 | }
69 | },
70 | "@azure/core-amqp": {
71 | "version": "2.2.0",
72 | "resolved": "https://registry.npmjs.org/@azure/core-amqp/-/core-amqp-2.2.0.tgz",
73 | "integrity": "sha512-Nt81a8097+ofBAQfnil5UWw0o5/D3bYfqyJY7e1wrP2RlR/6Fig9zSj4tLe/oiMmE4gvDoK5X8kGIbhswne0Yw==",
74 | "requires": {
75 | "@azure/abort-controller": "^1.0.0",
76 | "@azure/core-auth": "^1.3.0",
77 | "@azure/logger": "^1.0.0",
78 | "@types/async-lock": "^1.1.0",
79 | "async-lock": "^1.1.3",
80 | "buffer": "^5.2.1",
81 | "events": "^3.0.0",
82 | "jssha": "^3.1.0",
83 | "process": "^0.11.10",
84 | "rhea": "^1.0.24",
85 | "rhea-promise": "^1.2.0",
86 | "tslib": "^2.0.0",
87 | "url": "^0.11.0",
88 | "util": "^0.12.1"
89 | }
90 | },
91 | "@azure/core-asynciterator-polyfill": {
92 | "version": "1.0.0",
93 | "resolved": "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz",
94 | "integrity": "sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg=="
95 | },
96 | "@azure/core-auth": {
97 | "version": "1.3.0",
98 | "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.3.0.tgz",
99 | "integrity": "sha512-kSDSZBL6c0CYdhb+7KuutnKGf2geeT+bCJAgccB0DD7wmNJSsQPcF7TcuoZX83B7VK4tLz/u+8sOO/CnCsYp8A==",
100 | "requires": {
101 | "@azure/abort-controller": "^1.0.0",
102 | "tslib": "^2.0.0"
103 | }
104 | },
105 | "@azure/core-http": {
106 | "version": "1.2.4",
107 | "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-1.2.4.tgz",
108 | "integrity": "sha512-cNumz3ckyFZY5zWOgcTHSO7AKRVwxbodG8WfcEGcdH+ZJL3KvJEI/vN58H6xk5v3ijulU2x/WPGJqrMVvcI79A==",
109 | "requires": {
110 | "@azure/abort-controller": "^1.0.0",
111 | "@azure/core-asynciterator-polyfill": "^1.0.0",
112 | "@azure/core-auth": "^1.3.0",
113 | "@azure/core-tracing": "1.0.0-preview.11",
114 | "@azure/logger": "^1.0.0",
115 | "@types/node-fetch": "^2.5.0",
116 | "@types/tunnel": "^0.0.1",
117 | "form-data": "^3.0.0",
118 | "node-fetch": "^2.6.0",
119 | "process": "^0.11.10",
120 | "tough-cookie": "^4.0.0",
121 | "tslib": "^2.0.0",
122 | "tunnel": "^0.0.6",
123 | "uuid": "^8.3.0",
124 | "xml2js": "^0.4.19"
125 | }
126 | },
127 | "@azure/core-paging": {
128 | "version": "1.1.3",
129 | "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.1.3.tgz",
130 | "integrity": "sha512-his7Ah40ThEYORSpIAwuh6B8wkGwO/zG7gqVtmSE4WAJ46e36zUDXTKReUCLBDc6HmjjApQQxxcRFy5FruG79A==",
131 | "requires": {
132 | "@azure/core-asynciterator-polyfill": "^1.0.0"
133 | }
134 | },
135 | "@azure/core-tracing": {
136 | "version": "1.0.0-preview.11",
137 | "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.11.tgz",
138 | "integrity": "sha512-frF0pJc9HTmKncVokhBxCqipjbql02DThQ1ZJ9wLi7SDMLdPAFyDI5xZNzX5guLz+/DtPkY+SGK2li9FIXqshQ==",
139 | "requires": {
140 | "@opencensus/web-types": "0.0.7",
141 | "@opentelemetry/api": "1.0.0-rc.0",
142 | "tslib": "^2.0.0"
143 | }
144 | },
145 | "@azure/cosmos": {
146 | "version": "3.10.5",
147 | "resolved": "https://registry.npmjs.org/@azure/cosmos/-/cosmos-3.10.5.tgz",
148 | "integrity": "sha512-if1uApYNjNXzB+reNFvzEBHvinxdQOzU8fni9e9Fs9jcPv9m76t2pzmYJNrxxCiFLP0vbNr/QCfQzIPQVw6v/A==",
149 | "requires": {
150 | "@azure/core-auth": "^1.2.0",
151 | "debug": "^4.1.1",
152 | "fast-json-stable-stringify": "^2.0.0",
153 | "jsbi": "^3.1.3",
154 | "node-abort-controller": "^1.2.0",
155 | "node-fetch": "^2.6.0",
156 | "priorityqueuejs": "^1.0.0",
157 | "semaphore": "^1.0.5",
158 | "tslib": "^2.0.0",
159 | "universal-user-agent": "^6.0.0",
160 | "uuid": "^8.3.0"
161 | }
162 | },
163 | "@azure/functions": {
164 | "version": "1.2.3",
165 | "resolved": "https://registry.npmjs.org/@azure/functions/-/functions-1.2.3.tgz",
166 | "integrity": "sha512-dZITbYPNg6ay6ngcCOjRUh1wDhlFITS0zIkqplyH5KfKEAVPooaoaye5mUFnR+WP9WdGRjlNXyl/y2tgWKHcRg=="
167 | },
168 | "@azure/logger": {
169 | "version": "1.0.2",
170 | "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.2.tgz",
171 | "integrity": "sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw==",
172 | "requires": {
173 | "tslib": "^2.0.0"
174 | }
175 | },
176 | "@azure/service-bus": {
177 | "version": "7.0.5",
178 | "resolved": "https://registry.npmjs.org/@azure/service-bus/-/service-bus-7.0.5.tgz",
179 | "integrity": "sha512-x3VgZFLsmhnTka6IpKePHcibm3znMhcrSsVoVlMOCQSgoJrTSTuczRh4S9/c55pj8M+EQ6FdPweQY6Ld+g/qiQ==",
180 | "requires": {
181 | "@azure/abort-controller": "^1.0.0",
182 | "@azure/core-amqp": "^2.2.0",
183 | "@azure/core-asynciterator-polyfill": "^1.0.0",
184 | "@azure/core-auth": "^1.3.0",
185 | "@azure/core-http": "^1.2.0",
186 | "@azure/core-paging": "^1.1.1",
187 | "@azure/core-tracing": "1.0.0-preview.11",
188 | "@azure/logger": "^1.0.0",
189 | "@types/is-buffer": "^2.0.0",
190 | "@types/long": "^4.0.0",
191 | "buffer": "^5.2.1",
192 | "is-buffer": "^2.0.3",
193 | "jssha": "^3.1.0",
194 | "long": "^4.0.0",
195 | "process": "^0.11.10",
196 | "rhea-promise": "^1.2.0",
197 | "tslib": "^2.0.0"
198 | }
199 | },
200 | "@josephg/resolvable": {
201 | "version": "1.0.0",
202 | "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.0.tgz",
203 | "integrity": "sha512-OfTtjoqB2doov5aTJxkyAMK8dXoo7CjCUQSYUEtiY34jbWduOGV7+168tmCT8COMsUEd5DMSFg/0iAOPCBTNAQ=="
204 | },
205 | "@opencensus/web-types": {
206 | "version": "0.0.7",
207 | "resolved": "https://registry.npmjs.org/@opencensus/web-types/-/web-types-0.0.7.tgz",
208 | "integrity": "sha512-xB+w7ZDAu3YBzqH44rCmG9/RlrOmFuDPt/bpf17eJr8eZSrLt7nc7LnWdxM9Mmoj/YKMHpxRg28txu3TcpiL+g=="
209 | },
210 | "@opentelemetry/api": {
211 | "version": "1.0.0-rc.0",
212 | "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.0.0-rc.0.tgz",
213 | "integrity": "sha512-iXKByCMfrlO5S6Oh97BuM56tM2cIBB0XsL/vWF/AtJrJEKx4MC/Xdu0xDsGXMGcNWpqF7ujMsjjnp0+UHBwnDQ=="
214 | },
215 | "@protobufjs/aspromise": {
216 | "version": "1.1.2",
217 | "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
218 | "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
219 | },
220 | "@protobufjs/base64": {
221 | "version": "1.1.2",
222 | "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
223 | "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
224 | },
225 | "@protobufjs/codegen": {
226 | "version": "2.0.4",
227 | "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
228 | "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
229 | },
230 | "@protobufjs/eventemitter": {
231 | "version": "1.1.0",
232 | "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
233 | "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
234 | },
235 | "@protobufjs/fetch": {
236 | "version": "1.1.0",
237 | "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
238 | "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
239 | "requires": {
240 | "@protobufjs/aspromise": "^1.1.1",
241 | "@protobufjs/inquire": "^1.1.0"
242 | }
243 | },
244 | "@protobufjs/float": {
245 | "version": "1.0.2",
246 | "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
247 | "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
248 | },
249 | "@protobufjs/inquire": {
250 | "version": "1.1.0",
251 | "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
252 | "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
253 | },
254 | "@protobufjs/path": {
255 | "version": "1.1.2",
256 | "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
257 | "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
258 | },
259 | "@protobufjs/pool": {
260 | "version": "1.1.0",
261 | "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
262 | "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
263 | },
264 | "@protobufjs/utf8": {
265 | "version": "1.1.0",
266 | "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
267 | "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
268 | },
269 | "@types/accepts": {
270 | "version": "1.3.5",
271 | "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz",
272 | "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==",
273 | "requires": {
274 | "@types/node": "*"
275 | }
276 | },
277 | "@types/async-lock": {
278 | "version": "1.1.2",
279 | "resolved": "https://registry.npmjs.org/@types/async-lock/-/async-lock-1.1.2.tgz",
280 | "integrity": "sha512-j9n4bb6RhgFIydBe0+kpjnBPYumDaDyU8zvbWykyVMkku+c2CSu31MZkLeaBfqIwU+XCxlDpYDfyMQRkM0AkeQ=="
281 | },
282 | "@types/body-parser": {
283 | "version": "1.19.0",
284 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz",
285 | "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==",
286 | "requires": {
287 | "@types/connect": "*",
288 | "@types/node": "*"
289 | }
290 | },
291 | "@types/connect": {
292 | "version": "3.4.34",
293 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz",
294 | "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==",
295 | "requires": {
296 | "@types/node": "*"
297 | }
298 | },
299 | "@types/content-disposition": {
300 | "version": "0.5.3",
301 | "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.3.tgz",
302 | "integrity": "sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg=="
303 | },
304 | "@types/cookies": {
305 | "version": "0.7.6",
306 | "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.6.tgz",
307 | "integrity": "sha512-FK4U5Qyn7/Sc5ih233OuHO0qAkOpEcD/eG6584yEiLKizTFRny86qHLe/rej3HFQrkBuUjF4whFliAdODbVN/w==",
308 | "requires": {
309 | "@types/connect": "*",
310 | "@types/express": "*",
311 | "@types/keygrip": "*",
312 | "@types/node": "*"
313 | }
314 | },
315 | "@types/express": {
316 | "version": "4.17.11",
317 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz",
318 | "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==",
319 | "requires": {
320 | "@types/body-parser": "*",
321 | "@types/express-serve-static-core": "^4.17.18",
322 | "@types/qs": "*",
323 | "@types/serve-static": "*"
324 | }
325 | },
326 | "@types/express-serve-static-core": {
327 | "version": "4.17.19",
328 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz",
329 | "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==",
330 | "requires": {
331 | "@types/node": "*",
332 | "@types/qs": "*",
333 | "@types/range-parser": "*"
334 | }
335 | },
336 | "@types/fs-capacitor": {
337 | "version": "2.0.0",
338 | "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz",
339 | "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==",
340 | "requires": {
341 | "@types/node": "*"
342 | }
343 | },
344 | "@types/http-assert": {
345 | "version": "1.5.1",
346 | "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.1.tgz",
347 | "integrity": "sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ=="
348 | },
349 | "@types/http-errors": {
350 | "version": "1.8.0",
351 | "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.0.tgz",
352 | "integrity": "sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA=="
353 | },
354 | "@types/is-buffer": {
355 | "version": "2.0.0",
356 | "resolved": "https://registry.npmjs.org/@types/is-buffer/-/is-buffer-2.0.0.tgz",
357 | "integrity": "sha512-0f7N/e3BAz32qDYvgB4d2cqv1DqUwvGxHkXsrucICn8la1Vb6Yl6Eg8mPScGwUiqHJeE7diXlzaK+QMA9m4Gxw==",
358 | "requires": {
359 | "@types/node": "*"
360 | }
361 | },
362 | "@types/keygrip": {
363 | "version": "1.0.2",
364 | "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz",
365 | "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw=="
366 | },
367 | "@types/koa": {
368 | "version": "2.13.1",
369 | "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.1.tgz",
370 | "integrity": "sha512-Qbno7FWom9nNqu0yHZ6A0+RWt4mrYBhw3wpBAQ3+IuzGcLlfeYkzZrnMq5wsxulN2np8M4KKeUpTodsOsSad5Q==",
371 | "requires": {
372 | "@types/accepts": "*",
373 | "@types/content-disposition": "*",
374 | "@types/cookies": "*",
375 | "@types/http-assert": "*",
376 | "@types/http-errors": "*",
377 | "@types/keygrip": "*",
378 | "@types/koa-compose": "*",
379 | "@types/node": "*"
380 | }
381 | },
382 | "@types/koa-compose": {
383 | "version": "3.2.5",
384 | "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz",
385 | "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==",
386 | "requires": {
387 | "@types/koa": "*"
388 | }
389 | },
390 | "@types/long": {
391 | "version": "4.0.1",
392 | "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
393 | "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
394 | },
395 | "@types/mime": {
396 | "version": "1.3.2",
397 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
398 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
399 | },
400 | "@types/node": {
401 | "version": "14.14.41",
402 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.41.tgz",
403 | "integrity": "sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g=="
404 | },
405 | "@types/node-fetch": {
406 | "version": "2.5.10",
407 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.10.tgz",
408 | "integrity": "sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ==",
409 | "requires": {
410 | "@types/node": "*",
411 | "form-data": "^3.0.0"
412 | }
413 | },
414 | "@types/qs": {
415 | "version": "6.9.6",
416 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz",
417 | "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA=="
418 | },
419 | "@types/range-parser": {
420 | "version": "1.2.3",
421 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
422 | "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA=="
423 | },
424 | "@types/serve-static": {
425 | "version": "1.13.9",
426 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz",
427 | "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==",
428 | "requires": {
429 | "@types/mime": "^1",
430 | "@types/node": "*"
431 | }
432 | },
433 | "@types/tunnel": {
434 | "version": "0.0.1",
435 | "resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.1.tgz",
436 | "integrity": "sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A==",
437 | "requires": {
438 | "@types/node": "*"
439 | }
440 | },
441 | "@types/ws": {
442 | "version": "7.4.1",
443 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.1.tgz",
444 | "integrity": "sha512-ISCK1iFnR+jYv7+jLNX0wDqesZ/5RAeY3wUx6QaphmocphU61h+b+PHjS18TF4WIPTu/MMzxIq2PHr32o2TS5Q==",
445 | "requires": {
446 | "@types/node": "*"
447 | }
448 | },
449 | "@wry/equality": {
450 | "version": "0.1.11",
451 | "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz",
452 | "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==",
453 | "requires": {
454 | "tslib": "^1.9.3"
455 | },
456 | "dependencies": {
457 | "tslib": {
458 | "version": "1.14.1",
459 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
460 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
461 | }
462 | }
463 | },
464 | "apollo-cache-control": {
465 | "version": "0.12.0",
466 | "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.12.0.tgz",
467 | "integrity": "sha512-kClF5rfAm159Nboul1LxA+l58Tjz0M8L1GUknEMpZt0UHhILLAn3BfcG3ToX4TbNoR9M57kKMUcbPWLdy3Up7w==",
468 | "requires": {
469 | "apollo-server-env": "^3.0.0",
470 | "apollo-server-plugin-base": "^0.11.0"
471 | },
472 | "dependencies": {
473 | "apollo-server-env": {
474 | "version": "3.0.0",
475 | "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.0.0.tgz",
476 | "integrity": "sha512-tPSN+VttnPsoQAl/SBVUpGbLA97MXG990XIwq6YUnJyAixrrsjW1xYG7RlaOqetxm80y5mBZKLrRDiiSsW/vog==",
477 | "requires": {
478 | "node-fetch": "^2.1.2",
479 | "util.promisify": "^1.0.0"
480 | }
481 | }
482 | }
483 | },
484 | "apollo-datasource": {
485 | "version": "0.1.3",
486 | "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.1.3.tgz",
487 | "integrity": "sha512-yEGEe5Cjzqqu5ml1VV3O8+C+thzdknZri9Ny0P3daTGNO+45J3vBOMcmaANeeI2+OOeWxdqUNa5aPOx/35kniw==",
488 | "requires": {
489 | "apollo-server-caching": "0.1.2",
490 | "apollo-server-env": "2.0.3"
491 | }
492 | },
493 | "apollo-datasource-rest": {
494 | "version": "0.1.5",
495 | "resolved": "https://registry.npmjs.org/apollo-datasource-rest/-/apollo-datasource-rest-0.1.5.tgz",
496 | "integrity": "sha512-sKDzsPCfDlLXxrgQtrxnvyMLbpRRfxcNiWJFeSdYR9in2zY37KUHgmyQOum7NylCikdkrhxzj51ny1YGWrOLrA==",
497 | "requires": {
498 | "apollo-datasource": "0.1.3",
499 | "apollo-server-caching": "0.1.2",
500 | "apollo-server-env": "2.0.3",
501 | "apollo-server-errors": "2.0.2",
502 | "http-cache-semantics": "^4.0.0"
503 | }
504 | },
505 | "apollo-env": {
506 | "version": "0.6.6",
507 | "resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.6.6.tgz",
508 | "integrity": "sha512-hXI9PjJtzmD34XviBU+4sPMOxnifYrHVmxpjykqI/dUD2G3yTiuRaiQqwRwB2RCdwC1Ug/jBfoQ/NHDTnnjndQ==",
509 | "requires": {
510 | "@types/node-fetch": "2.5.7",
511 | "core-js": "^3.0.1",
512 | "node-fetch": "^2.2.0",
513 | "sha.js": "^2.4.11"
514 | },
515 | "dependencies": {
516 | "@types/node-fetch": {
517 | "version": "2.5.7",
518 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz",
519 | "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==",
520 | "requires": {
521 | "@types/node": "*",
522 | "form-data": "^3.0.0"
523 | }
524 | }
525 | }
526 | },
527 | "apollo-graphql": {
528 | "version": "0.6.1",
529 | "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.6.1.tgz",
530 | "integrity": "sha512-ZRXAV+k+hboCVS+FW86FW/QgnDR7gm/xMUwJPGXEbV53OLGuQQdIT0NCYK7AzzVkCfsbb7NJ3mmEclkZY9uuxQ==",
531 | "requires": {
532 | "apollo-env": "^0.6.6",
533 | "lodash.sortby": "^4.7.0"
534 | }
535 | },
536 | "apollo-link": {
537 | "version": "1.2.14",
538 | "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz",
539 | "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==",
540 | "requires": {
541 | "apollo-utilities": "^1.3.0",
542 | "ts-invariant": "^0.4.0",
543 | "tslib": "^1.9.3",
544 | "zen-observable-ts": "^0.8.21"
545 | },
546 | "dependencies": {
547 | "tslib": {
548 | "version": "1.14.1",
549 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
550 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
551 | }
552 | }
553 | },
554 | "apollo-reporting-protobuf": {
555 | "version": "0.6.2",
556 | "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.6.2.tgz",
557 | "integrity": "sha512-WJTJxLM+MRHNUxt1RTl4zD0HrLdH44F2mDzMweBj1yHL0kSt8I1WwoiF/wiGVSpnG48LZrBegCaOJeuVbJTbtw==",
558 | "requires": {
559 | "@apollo/protobufjs": "^1.0.3"
560 | }
561 | },
562 | "apollo-server-azure-functions": {
563 | "version": "2.23.0",
564 | "resolved": "https://registry.npmjs.org/apollo-server-azure-functions/-/apollo-server-azure-functions-2.23.0.tgz",
565 | "integrity": "sha512-1uosCqCQp0P+buGQL3/QSDQ2UF1FBRHxYvGD47yQ4hN4xnctCCrspNPjymmAcTyG4nOjuabX8GdzpVJKDmH3rg==",
566 | "requires": {
567 | "@apollographql/graphql-playground-html": "1.6.27",
568 | "@azure/functions": "1.2.3",
569 | "apollo-server-core": "^2.23.0",
570 | "apollo-server-env": "^3.0.0",
571 | "apollo-server-types": "^0.7.0",
572 | "graphql-tools": "^4.0.8"
573 | },
574 | "dependencies": {
575 | "apollo-server-env": {
576 | "version": "3.0.0",
577 | "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.0.0.tgz",
578 | "integrity": "sha512-tPSN+VttnPsoQAl/SBVUpGbLA97MXG990XIwq6YUnJyAixrrsjW1xYG7RlaOqetxm80y5mBZKLrRDiiSsW/vog==",
579 | "requires": {
580 | "node-fetch": "^2.1.2",
581 | "util.promisify": "^1.0.0"
582 | }
583 | }
584 | }
585 | },
586 | "apollo-server-caching": {
587 | "version": "0.1.2",
588 | "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.1.2.tgz",
589 | "integrity": "sha512-jBRnsTgXN0m8yVpumoelaUq9mXR7YpJ3EE+y/alI7zgXY+0qFDqksRApU8dEfg3q6qUnO7rFxRhdG5eyc0+1ig==",
590 | "requires": {
591 | "lru-cache": "^4.1.3"
592 | }
593 | },
594 | "apollo-server-core": {
595 | "version": "2.23.0",
596 | "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.23.0.tgz",
597 | "integrity": "sha512-3/a4LPgRADc8CdT/nRh7W0CAqQv3Q4DJvakWQgKqGSqDEb/0u4IBynYjlQKuPBi4wwKdeK2Hb1wiQLl+zu4StQ==",
598 | "requires": {
599 | "@apollographql/apollo-tools": "^0.4.3",
600 | "@apollographql/graphql-playground-html": "1.6.27",
601 | "@apollographql/graphql-upload-8-fork": "^8.1.3",
602 | "@josephg/resolvable": "^1.0.0",
603 | "@types/ws": "^7.0.0",
604 | "apollo-cache-control": "^0.12.0",
605 | "apollo-datasource": "^0.8.0",
606 | "apollo-graphql": "^0.6.0",
607 | "apollo-reporting-protobuf": "^0.6.2",
608 | "apollo-server-caching": "^0.6.0",
609 | "apollo-server-env": "^3.0.0",
610 | "apollo-server-errors": "^2.5.0",
611 | "apollo-server-plugin-base": "^0.11.0",
612 | "apollo-server-types": "^0.7.0",
613 | "apollo-tracing": "^0.13.0",
614 | "async-retry": "^1.2.1",
615 | "fast-json-stable-stringify": "^2.0.0",
616 | "graphql-extensions": "^0.13.0",
617 | "graphql-tag": "^2.11.0",
618 | "graphql-tools": "^4.0.8",
619 | "loglevel": "^1.6.7",
620 | "lru-cache": "^6.0.0",
621 | "sha.js": "^2.4.11",
622 | "subscriptions-transport-ws": "^0.9.11",
623 | "uuid": "^8.0.0",
624 | "ws": "^6.0.0"
625 | },
626 | "dependencies": {
627 | "apollo-datasource": {
628 | "version": "0.8.0",
629 | "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.8.0.tgz",
630 | "integrity": "sha512-gXgsGVLuejLc138z/2jUjPAzadDQxWbcLJyBgaQsg5BaXJNkv5uW/NjiSPk00cK51hyZrb0Xx8a+L+wPk2qIBA==",
631 | "requires": {
632 | "apollo-server-caching": "^0.6.0",
633 | "apollo-server-env": "^3.0.0"
634 | }
635 | },
636 | "apollo-server-caching": {
637 | "version": "0.6.0",
638 | "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.6.0.tgz",
639 | "integrity": "sha512-SfjKaccrhRzUQ8TAke9FrYppp4pZV3Rp8KCs+4Ox3kGtbco68acRPJkiYYtSVc4idR8XNAUOOVfAEZVNHdZQKQ==",
640 | "requires": {
641 | "lru-cache": "^6.0.0"
642 | }
643 | },
644 | "apollo-server-env": {
645 | "version": "3.0.0",
646 | "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.0.0.tgz",
647 | "integrity": "sha512-tPSN+VttnPsoQAl/SBVUpGbLA97MXG990XIwq6YUnJyAixrrsjW1xYG7RlaOqetxm80y5mBZKLrRDiiSsW/vog==",
648 | "requires": {
649 | "node-fetch": "^2.1.2",
650 | "util.promisify": "^1.0.0"
651 | }
652 | },
653 | "apollo-server-errors": {
654 | "version": "2.5.0",
655 | "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz",
656 | "integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA=="
657 | },
658 | "lru-cache": {
659 | "version": "6.0.0",
660 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
661 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
662 | "requires": {
663 | "yallist": "^4.0.0"
664 | }
665 | },
666 | "yallist": {
667 | "version": "4.0.0",
668 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
669 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
670 | }
671 | }
672 | },
673 | "apollo-server-env": {
674 | "version": "2.0.3",
675 | "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-2.0.3.tgz",
676 | "integrity": "sha512-uIfKFH8n8xKO0eLb9Fa79+s2DdMuVethgznvW6SrOYq5VzgkIIobqKEuZPKa5wObw9CkCyju/+Sr7b7WWMFxUQ==",
677 | "requires": {
678 | "node-fetch": "^2.1.2",
679 | "util.promisify": "^1.0.0"
680 | }
681 | },
682 | "apollo-server-errors": {
683 | "version": "2.0.2",
684 | "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.0.2.tgz",
685 | "integrity": "sha512-zyWDqAVDCkj9espVsoUpZr9PwDznM8UW6fBfhV+i1br//s2AQb07N6ektZ9pRIEvkhykDZW+8tQbDwAO0vUROg=="
686 | },
687 | "apollo-server-plugin-base": {
688 | "version": "0.11.0",
689 | "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.11.0.tgz",
690 | "integrity": "sha512-Du68x0XCyQ6EWlgoL9Z+1s8fJfXgY131QbKP7ao617StQPzwB0aGCwxBDfcMt1A75VXf4TkvV1rdUH5YeJFlhQ==",
691 | "requires": {
692 | "apollo-server-types": "^0.7.0"
693 | }
694 | },
695 | "apollo-server-types": {
696 | "version": "0.7.0",
697 | "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.7.0.tgz",
698 | "integrity": "sha512-pJ6ri2N4xJ+e2PUUPHeCNpMDzHUagJyn0DDZGQmXDz6aoMlSd4B2KUvK81hHyHkw3wHk9clgcpfM9hKqbfZweA==",
699 | "requires": {
700 | "apollo-reporting-protobuf": "^0.6.2",
701 | "apollo-server-caching": "^0.6.0",
702 | "apollo-server-env": "^3.0.0"
703 | },
704 | "dependencies": {
705 | "apollo-server-caching": {
706 | "version": "0.6.0",
707 | "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.6.0.tgz",
708 | "integrity": "sha512-SfjKaccrhRzUQ8TAke9FrYppp4pZV3Rp8KCs+4Ox3kGtbco68acRPJkiYYtSVc4idR8XNAUOOVfAEZVNHdZQKQ==",
709 | "requires": {
710 | "lru-cache": "^6.0.0"
711 | }
712 | },
713 | "apollo-server-env": {
714 | "version": "3.0.0",
715 | "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.0.0.tgz",
716 | "integrity": "sha512-tPSN+VttnPsoQAl/SBVUpGbLA97MXG990XIwq6YUnJyAixrrsjW1xYG7RlaOqetxm80y5mBZKLrRDiiSsW/vog==",
717 | "requires": {
718 | "node-fetch": "^2.1.2",
719 | "util.promisify": "^1.0.0"
720 | }
721 | },
722 | "lru-cache": {
723 | "version": "6.0.0",
724 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
725 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
726 | "requires": {
727 | "yallist": "^4.0.0"
728 | }
729 | },
730 | "yallist": {
731 | "version": "4.0.0",
732 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
733 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
734 | }
735 | }
736 | },
737 | "apollo-tracing": {
738 | "version": "0.13.0",
739 | "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.13.0.tgz",
740 | "integrity": "sha512-28z4T+XfLQ6t696usU0nTFDxVN8BfF3o74d2p/zsT4eu1OuoyoDOEmVJqdInmVRpyTJK0tDEOjkIuDJJHZftog==",
741 | "requires": {
742 | "apollo-server-env": "^3.0.0",
743 | "apollo-server-plugin-base": "^0.11.0"
744 | },
745 | "dependencies": {
746 | "apollo-server-env": {
747 | "version": "3.0.0",
748 | "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.0.0.tgz",
749 | "integrity": "sha512-tPSN+VttnPsoQAl/SBVUpGbLA97MXG990XIwq6YUnJyAixrrsjW1xYG7RlaOqetxm80y5mBZKLrRDiiSsW/vog==",
750 | "requires": {
751 | "node-fetch": "^2.1.2",
752 | "util.promisify": "^1.0.0"
753 | }
754 | }
755 | }
756 | },
757 | "apollo-utilities": {
758 | "version": "1.3.4",
759 | "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz",
760 | "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==",
761 | "requires": {
762 | "@wry/equality": "^0.1.2",
763 | "fast-json-stable-stringify": "^2.0.0",
764 | "ts-invariant": "^0.4.0",
765 | "tslib": "^1.10.0"
766 | },
767 | "dependencies": {
768 | "tslib": {
769 | "version": "1.14.1",
770 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
771 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
772 | }
773 | }
774 | },
775 | "array-filter": {
776 | "version": "1.0.0",
777 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz",
778 | "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM="
779 | },
780 | "async-limiter": {
781 | "version": "1.0.1",
782 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
783 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
784 | },
785 | "async-lock": {
786 | "version": "1.2.8",
787 | "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.2.8.tgz",
788 | "integrity": "sha512-G+26B2jc0Gw0EG/WN2M6IczuGepBsfR1+DtqLnyFSH4p2C668qkOCtEkGNVEaaNAVlYwEMazy1+/jnLxltBkIQ=="
789 | },
790 | "async-retry": {
791 | "version": "1.3.1",
792 | "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz",
793 | "integrity": "sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA==",
794 | "requires": {
795 | "retry": "0.12.0"
796 | }
797 | },
798 | "asynckit": {
799 | "version": "0.4.0",
800 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
801 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
802 | },
803 | "available-typed-arrays": {
804 | "version": "1.0.2",
805 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz",
806 | "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==",
807 | "requires": {
808 | "array-filter": "^1.0.0"
809 | }
810 | },
811 | "azure-function-log-intercept": {
812 | "version": "1.0.7",
813 | "resolved": "https://registry.npmjs.org/azure-function-log-intercept/-/azure-function-log-intercept-1.0.7.tgz",
814 | "integrity": "sha512-gwXZ/bT6juT3XokE5bUceQlb9CbkqNI6fafZX4phdZB6qrQai1FhOn1pTrzcIX5RH9bZr16q5sV7JdqMk6blrw=="
815 | },
816 | "backo2": {
817 | "version": "1.0.2",
818 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
819 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
820 | },
821 | "base64-js": {
822 | "version": "1.5.1",
823 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
824 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
825 | },
826 | "buffer": {
827 | "version": "5.7.1",
828 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
829 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
830 | "requires": {
831 | "base64-js": "^1.3.1",
832 | "ieee754": "^1.1.13"
833 | }
834 | },
835 | "busboy": {
836 | "version": "0.3.1",
837 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz",
838 | "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==",
839 | "requires": {
840 | "dicer": "0.3.0"
841 | }
842 | },
843 | "call-bind": {
844 | "version": "1.0.2",
845 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
846 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
847 | "requires": {
848 | "function-bind": "^1.1.1",
849 | "get-intrinsic": "^1.0.2"
850 | }
851 | },
852 | "combined-stream": {
853 | "version": "1.0.8",
854 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
855 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
856 | "requires": {
857 | "delayed-stream": "~1.0.0"
858 | }
859 | },
860 | "commander": {
861 | "version": "2.20.3",
862 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
863 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
864 | },
865 | "core-js": {
866 | "version": "3.10.1",
867 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.10.1.tgz",
868 | "integrity": "sha512-pwCxEXnj27XG47mu7SXAwhLP3L5CrlvCB91ANUkIz40P27kUcvNfSdvyZJ9CLHiVoKSp+TTChMQMSKQEH/IQxA=="
869 | },
870 | "cors": {
871 | "version": "2.8.5",
872 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
873 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
874 | "requires": {
875 | "object-assign": "^4",
876 | "vary": "^1"
877 | }
878 | },
879 | "cssfilter": {
880 | "version": "0.0.10",
881 | "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz",
882 | "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4="
883 | },
884 | "debug": {
885 | "version": "4.3.1",
886 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
887 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
888 | "requires": {
889 | "ms": "2.1.2"
890 | }
891 | },
892 | "define-properties": {
893 | "version": "1.1.3",
894 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
895 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
896 | "requires": {
897 | "object-keys": "^1.0.12"
898 | }
899 | },
900 | "delayed-stream": {
901 | "version": "1.0.0",
902 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
903 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
904 | },
905 | "depd": {
906 | "version": "1.1.2",
907 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
908 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
909 | },
910 | "deprecated-decorator": {
911 | "version": "0.1.6",
912 | "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz",
913 | "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc="
914 | },
915 | "dicer": {
916 | "version": "0.3.0",
917 | "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz",
918 | "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==",
919 | "requires": {
920 | "streamsearch": "0.1.2"
921 | }
922 | },
923 | "es-abstract": {
924 | "version": "1.18.0",
925 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz",
926 | "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==",
927 | "requires": {
928 | "call-bind": "^1.0.2",
929 | "es-to-primitive": "^1.2.1",
930 | "function-bind": "^1.1.1",
931 | "get-intrinsic": "^1.1.1",
932 | "has": "^1.0.3",
933 | "has-symbols": "^1.0.2",
934 | "is-callable": "^1.2.3",
935 | "is-negative-zero": "^2.0.1",
936 | "is-regex": "^1.1.2",
937 | "is-string": "^1.0.5",
938 | "object-inspect": "^1.9.0",
939 | "object-keys": "^1.1.1",
940 | "object.assign": "^4.1.2",
941 | "string.prototype.trimend": "^1.0.4",
942 | "string.prototype.trimstart": "^1.0.4",
943 | "unbox-primitive": "^1.0.0"
944 | }
945 | },
946 | "es-to-primitive": {
947 | "version": "1.2.1",
948 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
949 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
950 | "requires": {
951 | "is-callable": "^1.1.4",
952 | "is-date-object": "^1.0.1",
953 | "is-symbol": "^1.0.2"
954 | }
955 | },
956 | "eventemitter3": {
957 | "version": "3.1.2",
958 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
959 | "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="
960 | },
961 | "events": {
962 | "version": "3.3.0",
963 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
964 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
965 | },
966 | "fast-json-stable-stringify": {
967 | "version": "2.1.0",
968 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
969 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
970 | },
971 | "for-each": {
972 | "version": "0.3.3",
973 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
974 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
975 | "requires": {
976 | "is-callable": "^1.1.3"
977 | }
978 | },
979 | "foreach": {
980 | "version": "2.0.5",
981 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
982 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
983 | },
984 | "form-data": {
985 | "version": "3.0.1",
986 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
987 | "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
988 | "requires": {
989 | "asynckit": "^0.4.0",
990 | "combined-stream": "^1.0.8",
991 | "mime-types": "^2.1.12"
992 | }
993 | },
994 | "fs-capacitor": {
995 | "version": "2.0.4",
996 | "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.4.tgz",
997 | "integrity": "sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA=="
998 | },
999 | "function-bind": {
1000 | "version": "1.1.1",
1001 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1002 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
1003 | },
1004 | "get-intrinsic": {
1005 | "version": "1.1.1",
1006 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
1007 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
1008 | "requires": {
1009 | "function-bind": "^1.1.1",
1010 | "has": "^1.0.3",
1011 | "has-symbols": "^1.0.1"
1012 | }
1013 | },
1014 | "graphql": {
1015 | "version": "15.5.0",
1016 | "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.0.tgz",
1017 | "integrity": "sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA=="
1018 | },
1019 | "graphql-extensions": {
1020 | "version": "0.13.0",
1021 | "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.13.0.tgz",
1022 | "integrity": "sha512-Bb7E97nvfX4gtrIdZ/i5YFlqOd6MGzrw8ED+t4wQVraYje6NQ+8P8MHMOV2WZLfbW8zsNTx8NdnnlbsdH5siag==",
1023 | "requires": {
1024 | "@apollographql/apollo-tools": "^0.4.3",
1025 | "apollo-server-env": "^3.0.0",
1026 | "apollo-server-types": "^0.7.0"
1027 | },
1028 | "dependencies": {
1029 | "apollo-server-env": {
1030 | "version": "3.0.0",
1031 | "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.0.0.tgz",
1032 | "integrity": "sha512-tPSN+VttnPsoQAl/SBVUpGbLA97MXG990XIwq6YUnJyAixrrsjW1xYG7RlaOqetxm80y5mBZKLrRDiiSsW/vog==",
1033 | "requires": {
1034 | "node-fetch": "^2.1.2",
1035 | "util.promisify": "^1.0.0"
1036 | }
1037 | }
1038 | }
1039 | },
1040 | "graphql-tag": {
1041 | "version": "2.11.0",
1042 | "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.11.0.tgz",
1043 | "integrity": "sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA=="
1044 | },
1045 | "graphql-tools": {
1046 | "version": "4.0.8",
1047 | "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz",
1048 | "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==",
1049 | "requires": {
1050 | "apollo-link": "^1.2.14",
1051 | "apollo-utilities": "^1.0.1",
1052 | "deprecated-decorator": "^0.1.6",
1053 | "iterall": "^1.1.3",
1054 | "uuid": "^3.1.0"
1055 | },
1056 | "dependencies": {
1057 | "uuid": {
1058 | "version": "3.4.0",
1059 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
1060 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
1061 | }
1062 | }
1063 | },
1064 | "has": {
1065 | "version": "1.0.3",
1066 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1067 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1068 | "requires": {
1069 | "function-bind": "^1.1.1"
1070 | }
1071 | },
1072 | "has-bigints": {
1073 | "version": "1.0.1",
1074 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
1075 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA=="
1076 | },
1077 | "has-symbols": {
1078 | "version": "1.0.2",
1079 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
1080 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
1081 | },
1082 | "http-cache-semantics": {
1083 | "version": "4.1.0",
1084 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
1085 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
1086 | },
1087 | "http-errors": {
1088 | "version": "1.8.0",
1089 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz",
1090 | "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==",
1091 | "requires": {
1092 | "depd": "~1.1.2",
1093 | "inherits": "2.0.4",
1094 | "setprototypeof": "1.2.0",
1095 | "statuses": ">= 1.5.0 < 2",
1096 | "toidentifier": "1.0.0"
1097 | }
1098 | },
1099 | "ieee754": {
1100 | "version": "1.2.1",
1101 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
1102 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
1103 | },
1104 | "inherits": {
1105 | "version": "2.0.4",
1106 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1107 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1108 | },
1109 | "is-arguments": {
1110 | "version": "1.1.0",
1111 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz",
1112 | "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==",
1113 | "requires": {
1114 | "call-bind": "^1.0.0"
1115 | }
1116 | },
1117 | "is-bigint": {
1118 | "version": "1.0.1",
1119 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz",
1120 | "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg=="
1121 | },
1122 | "is-boolean-object": {
1123 | "version": "1.1.0",
1124 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz",
1125 | "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==",
1126 | "requires": {
1127 | "call-bind": "^1.0.0"
1128 | }
1129 | },
1130 | "is-buffer": {
1131 | "version": "2.0.5",
1132 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
1133 | "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ=="
1134 | },
1135 | "is-callable": {
1136 | "version": "1.2.3",
1137 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz",
1138 | "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ=="
1139 | },
1140 | "is-date-object": {
1141 | "version": "1.0.2",
1142 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
1143 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g=="
1144 | },
1145 | "is-generator-function": {
1146 | "version": "1.0.8",
1147 | "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz",
1148 | "integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ=="
1149 | },
1150 | "is-negative-zero": {
1151 | "version": "2.0.1",
1152 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
1153 | "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w=="
1154 | },
1155 | "is-number-object": {
1156 | "version": "1.0.4",
1157 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz",
1158 | "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw=="
1159 | },
1160 | "is-regex": {
1161 | "version": "1.1.2",
1162 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz",
1163 | "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==",
1164 | "requires": {
1165 | "call-bind": "^1.0.2",
1166 | "has-symbols": "^1.0.1"
1167 | }
1168 | },
1169 | "is-string": {
1170 | "version": "1.0.5",
1171 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
1172 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ=="
1173 | },
1174 | "is-symbol": {
1175 | "version": "1.0.3",
1176 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
1177 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
1178 | "requires": {
1179 | "has-symbols": "^1.0.1"
1180 | }
1181 | },
1182 | "is-typed-array": {
1183 | "version": "1.1.5",
1184 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz",
1185 | "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==",
1186 | "requires": {
1187 | "available-typed-arrays": "^1.0.2",
1188 | "call-bind": "^1.0.2",
1189 | "es-abstract": "^1.18.0-next.2",
1190 | "foreach": "^2.0.5",
1191 | "has-symbols": "^1.0.1"
1192 | }
1193 | },
1194 | "iterall": {
1195 | "version": "1.3.0",
1196 | "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz",
1197 | "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg=="
1198 | },
1199 | "jsbi": {
1200 | "version": "3.1.4",
1201 | "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-3.1.4.tgz",
1202 | "integrity": "sha512-52QRRFSsi9impURE8ZUbzAMCLjPm4THO7H2fcuIvaaeFTbSysvkodbQQXIVsNgq/ypDbq6dJiuGKL0vZ/i9hUg=="
1203 | },
1204 | "jssha": {
1205 | "version": "3.2.0",
1206 | "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz",
1207 | "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q=="
1208 | },
1209 | "lodash.sortby": {
1210 | "version": "4.7.0",
1211 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
1212 | "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
1213 | },
1214 | "loglevel": {
1215 | "version": "1.7.1",
1216 | "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz",
1217 | "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw=="
1218 | },
1219 | "long": {
1220 | "version": "4.0.0",
1221 | "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
1222 | "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
1223 | },
1224 | "lru-cache": {
1225 | "version": "4.1.5",
1226 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
1227 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
1228 | "requires": {
1229 | "pseudomap": "^1.0.2",
1230 | "yallist": "^2.1.2"
1231 | }
1232 | },
1233 | "mime-db": {
1234 | "version": "1.47.0",
1235 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz",
1236 | "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw=="
1237 | },
1238 | "mime-types": {
1239 | "version": "2.1.30",
1240 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz",
1241 | "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==",
1242 | "requires": {
1243 | "mime-db": "1.47.0"
1244 | }
1245 | },
1246 | "ms": {
1247 | "version": "2.1.2",
1248 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1249 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1250 | },
1251 | "node-abort-controller": {
1252 | "version": "1.2.1",
1253 | "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-1.2.1.tgz",
1254 | "integrity": "sha512-79PYeJuj6S9+yOHirR0JBLFOgjB6sQCir10uN6xRx25iD+ZD4ULqgRn3MwWBRaQGB0vEgReJzWwJo42T1R6YbQ=="
1255 | },
1256 | "node-fetch": {
1257 | "version": "2.6.1",
1258 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
1259 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
1260 | },
1261 | "object-assign": {
1262 | "version": "4.1.1",
1263 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1264 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
1265 | },
1266 | "object-inspect": {
1267 | "version": "1.9.0",
1268 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz",
1269 | "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw=="
1270 | },
1271 | "object-keys": {
1272 | "version": "1.1.1",
1273 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
1274 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
1275 | },
1276 | "object-path": {
1277 | "version": "0.11.5",
1278 | "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.5.tgz",
1279 | "integrity": "sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg=="
1280 | },
1281 | "object.assign": {
1282 | "version": "4.1.2",
1283 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
1284 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
1285 | "requires": {
1286 | "call-bind": "^1.0.0",
1287 | "define-properties": "^1.1.3",
1288 | "has-symbols": "^1.0.1",
1289 | "object-keys": "^1.1.1"
1290 | }
1291 | },
1292 | "object.getownpropertydescriptors": {
1293 | "version": "2.1.2",
1294 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz",
1295 | "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==",
1296 | "requires": {
1297 | "call-bind": "^1.0.2",
1298 | "define-properties": "^1.1.3",
1299 | "es-abstract": "^1.18.0-next.2"
1300 | }
1301 | },
1302 | "priorityqueuejs": {
1303 | "version": "1.0.0",
1304 | "resolved": "https://registry.npmjs.org/priorityqueuejs/-/priorityqueuejs-1.0.0.tgz",
1305 | "integrity": "sha1-LuTyPCVgkT4IwHzlzN1t498sWvg="
1306 | },
1307 | "process": {
1308 | "version": "0.11.10",
1309 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
1310 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
1311 | },
1312 | "pseudomap": {
1313 | "version": "1.0.2",
1314 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
1315 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
1316 | },
1317 | "psl": {
1318 | "version": "1.8.0",
1319 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
1320 | "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
1321 | },
1322 | "punycode": {
1323 | "version": "1.3.2",
1324 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
1325 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
1326 | },
1327 | "querystring": {
1328 | "version": "0.2.0",
1329 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
1330 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
1331 | },
1332 | "retry": {
1333 | "version": "0.12.0",
1334 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
1335 | "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs="
1336 | },
1337 | "rhea": {
1338 | "version": "1.0.24",
1339 | "resolved": "https://registry.npmjs.org/rhea/-/rhea-1.0.24.tgz",
1340 | "integrity": "sha512-PEl62U2EhxCO5wMUZ2/bCBcXAVKN9AdMSNQOrp3+R5b77TEaOSiy16MQ0sIOmzj/iqsgIAgPs1mt3FYfu1vIXA==",
1341 | "requires": {
1342 | "debug": "0.8.0 - 3.5.0"
1343 | },
1344 | "dependencies": {
1345 | "debug": {
1346 | "version": "3.2.7",
1347 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
1348 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
1349 | "requires": {
1350 | "ms": "^2.1.1"
1351 | }
1352 | }
1353 | }
1354 | },
1355 | "rhea-promise": {
1356 | "version": "1.2.1",
1357 | "resolved": "https://registry.npmjs.org/rhea-promise/-/rhea-promise-1.2.1.tgz",
1358 | "integrity": "sha512-m0aa+/TM6Cl5qu+mHNPn7aadNf1525WxpKwQKINP/knvoi4otB74G16iPDoTDbnGcJo1lc0AQEbVku8Gdoqmuw==",
1359 | "requires": {
1360 | "debug": "^3.1.0",
1361 | "rhea": "^1.0.24",
1362 | "tslib": "^1.10.0"
1363 | },
1364 | "dependencies": {
1365 | "debug": {
1366 | "version": "3.2.7",
1367 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
1368 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
1369 | "requires": {
1370 | "ms": "^2.1.1"
1371 | }
1372 | },
1373 | "tslib": {
1374 | "version": "1.14.1",
1375 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
1376 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
1377 | }
1378 | }
1379 | },
1380 | "safe-buffer": {
1381 | "version": "5.2.1",
1382 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1383 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1384 | },
1385 | "sax": {
1386 | "version": "1.2.4",
1387 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
1388 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
1389 | },
1390 | "semaphore": {
1391 | "version": "1.1.0",
1392 | "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz",
1393 | "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA=="
1394 | },
1395 | "setprototypeof": {
1396 | "version": "1.2.0",
1397 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1398 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1399 | },
1400 | "sha.js": {
1401 | "version": "2.4.11",
1402 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
1403 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
1404 | "requires": {
1405 | "inherits": "^2.0.1",
1406 | "safe-buffer": "^5.0.1"
1407 | }
1408 | },
1409 | "statuses": {
1410 | "version": "1.5.0",
1411 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
1412 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
1413 | },
1414 | "streamsearch": {
1415 | "version": "0.1.2",
1416 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
1417 | "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
1418 | },
1419 | "string.prototype.trimend": {
1420 | "version": "1.0.4",
1421 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
1422 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
1423 | "requires": {
1424 | "call-bind": "^1.0.2",
1425 | "define-properties": "^1.1.3"
1426 | }
1427 | },
1428 | "string.prototype.trimstart": {
1429 | "version": "1.0.4",
1430 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
1431 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
1432 | "requires": {
1433 | "call-bind": "^1.0.2",
1434 | "define-properties": "^1.1.3"
1435 | }
1436 | },
1437 | "subscriptions-transport-ws": {
1438 | "version": "0.9.18",
1439 | "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz",
1440 | "integrity": "sha512-tztzcBTNoEbuErsVQpTN2xUNN/efAZXyCyL5m3x4t6SKrEiTL2N8SaKWBFWM4u56pL79ULif3zjyeq+oV+nOaA==",
1441 | "requires": {
1442 | "backo2": "^1.0.2",
1443 | "eventemitter3": "^3.1.0",
1444 | "iterall": "^1.2.1",
1445 | "symbol-observable": "^1.0.4",
1446 | "ws": "^5.2.0"
1447 | },
1448 | "dependencies": {
1449 | "ws": {
1450 | "version": "5.2.2",
1451 | "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
1452 | "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
1453 | "requires": {
1454 | "async-limiter": "~1.0.0"
1455 | }
1456 | }
1457 | }
1458 | },
1459 | "symbol-observable": {
1460 | "version": "1.2.0",
1461 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
1462 | "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
1463 | },
1464 | "toidentifier": {
1465 | "version": "1.0.0",
1466 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
1467 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
1468 | },
1469 | "tough-cookie": {
1470 | "version": "4.0.0",
1471 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
1472 | "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
1473 | "requires": {
1474 | "psl": "^1.1.33",
1475 | "punycode": "^2.1.1",
1476 | "universalify": "^0.1.2"
1477 | },
1478 | "dependencies": {
1479 | "punycode": {
1480 | "version": "2.1.1",
1481 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1482 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
1483 | }
1484 | }
1485 | },
1486 | "ts-invariant": {
1487 | "version": "0.4.4",
1488 | "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz",
1489 | "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==",
1490 | "requires": {
1491 | "tslib": "^1.9.3"
1492 | },
1493 | "dependencies": {
1494 | "tslib": {
1495 | "version": "1.14.1",
1496 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
1497 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
1498 | }
1499 | }
1500 | },
1501 | "tslib": {
1502 | "version": "2.2.0",
1503 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
1504 | "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
1505 | },
1506 | "tunnel": {
1507 | "version": "0.0.6",
1508 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
1509 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
1510 | },
1511 | "unbox-primitive": {
1512 | "version": "1.0.1",
1513 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
1514 | "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
1515 | "requires": {
1516 | "function-bind": "^1.1.1",
1517 | "has-bigints": "^1.0.1",
1518 | "has-symbols": "^1.0.2",
1519 | "which-boxed-primitive": "^1.0.2"
1520 | }
1521 | },
1522 | "universal-user-agent": {
1523 | "version": "6.0.0",
1524 | "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
1525 | "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
1526 | },
1527 | "universalify": {
1528 | "version": "0.1.2",
1529 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
1530 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
1531 | },
1532 | "url": {
1533 | "version": "0.11.0",
1534 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
1535 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
1536 | "requires": {
1537 | "punycode": "1.3.2",
1538 | "querystring": "0.2.0"
1539 | }
1540 | },
1541 | "util": {
1542 | "version": "0.12.3",
1543 | "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz",
1544 | "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==",
1545 | "requires": {
1546 | "inherits": "^2.0.3",
1547 | "is-arguments": "^1.0.4",
1548 | "is-generator-function": "^1.0.7",
1549 | "is-typed-array": "^1.1.3",
1550 | "safe-buffer": "^5.1.2",
1551 | "which-typed-array": "^1.1.2"
1552 | }
1553 | },
1554 | "util.promisify": {
1555 | "version": "1.1.1",
1556 | "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz",
1557 | "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==",
1558 | "requires": {
1559 | "call-bind": "^1.0.0",
1560 | "define-properties": "^1.1.3",
1561 | "for-each": "^0.3.3",
1562 | "has-symbols": "^1.0.1",
1563 | "object.getownpropertydescriptors": "^2.1.1"
1564 | }
1565 | },
1566 | "uuid": {
1567 | "version": "8.3.2",
1568 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
1569 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
1570 | },
1571 | "vary": {
1572 | "version": "1.1.2",
1573 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1574 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
1575 | },
1576 | "which-boxed-primitive": {
1577 | "version": "1.0.2",
1578 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
1579 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
1580 | "requires": {
1581 | "is-bigint": "^1.0.1",
1582 | "is-boolean-object": "^1.1.0",
1583 | "is-number-object": "^1.0.4",
1584 | "is-string": "^1.0.5",
1585 | "is-symbol": "^1.0.3"
1586 | }
1587 | },
1588 | "which-typed-array": {
1589 | "version": "1.1.4",
1590 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz",
1591 | "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==",
1592 | "requires": {
1593 | "available-typed-arrays": "^1.0.2",
1594 | "call-bind": "^1.0.0",
1595 | "es-abstract": "^1.18.0-next.1",
1596 | "foreach": "^2.0.5",
1597 | "function-bind": "^1.1.1",
1598 | "has-symbols": "^1.0.1",
1599 | "is-typed-array": "^1.1.3"
1600 | }
1601 | },
1602 | "ws": {
1603 | "version": "6.2.1",
1604 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
1605 | "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
1606 | "requires": {
1607 | "async-limiter": "~1.0.0"
1608 | }
1609 | },
1610 | "xml2js": {
1611 | "version": "0.4.23",
1612 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
1613 | "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
1614 | "requires": {
1615 | "sax": ">=0.6.0",
1616 | "xmlbuilder": "~11.0.0"
1617 | }
1618 | },
1619 | "xmlbuilder": {
1620 | "version": "11.0.1",
1621 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
1622 | "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
1623 | },
1624 | "xss": {
1625 | "version": "1.0.8",
1626 | "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.8.tgz",
1627 | "integrity": "sha512-3MgPdaXV8rfQ/pNn16Eio6VXYPTkqwa0vc7GkiymmY/DqR1SE/7VPAAVZz1GJsJFrllMYO3RHfEaiUGjab6TNw==",
1628 | "requires": {
1629 | "commander": "^2.20.3",
1630 | "cssfilter": "0.0.10"
1631 | }
1632 | },
1633 | "yallist": {
1634 | "version": "2.1.2",
1635 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
1636 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
1637 | },
1638 | "zen-observable": {
1639 | "version": "0.8.15",
1640 | "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz",
1641 | "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ=="
1642 | },
1643 | "zen-observable-ts": {
1644 | "version": "0.8.21",
1645 | "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz",
1646 | "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==",
1647 | "requires": {
1648 | "tslib": "^1.9.3",
1649 | "zen-observable": "^0.8.0"
1650 | },
1651 | "dependencies": {
1652 | "tslib": {
1653 | "version": "1.14.1",
1654 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
1655 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
1656 | }
1657 | }
1658 | }
1659 | }
1660 | }
1661 |
--------------------------------------------------------------------------------