├── .github └── workflows │ └── continuous-integration.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .yarn └── releases │ └── yarn-3.2.0.cjs ├── .yarnrc.yml ├── LICENSE ├── README.md ├── package.json ├── scripts └── esm-post-process.js ├── src └── index.ts ├── tsconfig.cjs.json ├── tsconfig.esm.json ├── tsconfig.json └── yarn.lock /.github/workflows/continuous-integration.yml: -------------------------------------------------------------------------------- 1 | name: Continuous integration 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | types: [opened, synchronize, reopened] 9 | branches: 10 | - main 11 | 12 | jobs: 13 | type-check: 14 | name: Type check 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: Checkout 18 | uses: actions/checkout@v2 19 | - name: Set up node 20 | uses: actions/setup-node@v2 21 | with: 22 | node-version: '17' 23 | cache: 'yarn' 24 | - name: Install 25 | run: yarn install --immutable 26 | - name: Type check 27 | run: yarn type-check 28 | 29 | lint: 30 | name: Lint 31 | runs-on: ubuntu-latest 32 | steps: 33 | - name: Checkout 34 | uses: actions/checkout@v2 35 | - name: Set up node 36 | uses: actions/setup-node@v2 37 | with: 38 | node-version: '17' 39 | cache: 'yarn' 40 | - name: Install 41 | run: yarn install --immutable 42 | - name: Lint 43 | run: yarn lint 44 | -------------------------------------------------------------------------------- /.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 | # Yarn locked release 72 | .yarn/* 73 | !.yarn/releases 74 | 75 | # dotenv environment variables file 76 | .env 77 | .env.test 78 | 79 | # parcel-bundler cache (https://parceljs.org/) 80 | .cache 81 | 82 | # Next.js build output 83 | .next 84 | 85 | # Nuxt.js build / generate output 86 | .nuxt 87 | dist 88 | 89 | # Gatsby files 90 | .cache/ 91 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 92 | # https://nextjs.org/blog/next-9-1#public-directory-support 93 | # public 94 | 95 | # vuepress build output 96 | .vuepress/dist 97 | 98 | # Serverless directories 99 | .serverless/ 100 | 101 | # FuseBox cache 102 | .fusebox/ 103 | 104 | # DynamoDB Local files 105 | .dynamodb/ 106 | 107 | # TernJS port file 108 | .tern-port 109 | 110 | # Built lib 111 | lib/ 112 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | lib/ 2 | .yarn/ -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "all", 3 | "singleQuote": true 4 | } 5 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | 3 | yarnPath: .yarn/releases/yarn-3.2.0.cjs 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Graphile Contrib 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # @graphile-contrib/graphql-sse 2 | 3 | PostGraphile support for [GraphQL over Server-Sent Events (SSE)](https://github.com/enisdenjo/graphql-sse/blob/master/PROTOCOL.md) powered by [graphql-sse](https://github.com/enisdenjo/graphql-sse). 4 | 5 | - Doesn't mess with the schema update stream on `eventSourceRoute`, both can exist on the same route 6 | - `PUT` and `DELETE` methods are allowed through CORS on the `eventSourceRoute` in order to support the ["single connection mode"](https://github.com/enisdenjo/graphql-sse/blob/master/PROTOCOL.md#single-connection-mode) 7 | - The client can use the `X-GraphQL-Event-Stream` header for SSE endpoint discovery 8 | 9 | ## Getting started 10 | 11 | ### Install 12 | 13 | ```bash 14 | npm install --save graphql-sse @graphile-contrib/graphql-sse 15 | ``` 16 | 17 | or 18 | 19 | ```bash 20 | yarn add graphql-sse @graphile-contrib/graphql-sse 21 | ``` 22 | 23 | ### Integrate the plugin 24 | 25 | #### PostGraphile CLI 26 | 27 | ```bash 28 | postgraphile \ 29 | --plugins @graphile/graphql-sse \ 30 | ... 31 | ``` 32 | 33 | #### PostGraphile library 34 | 35 | ```ts 36 | import { postgraphile, makePluginHook } from 'postgraphile'; 37 | import GraphQLSSEPlugin from '@graphile-contrib/graphql-sse'; 38 | 39 | const postGraphileMiddleware = postgraphile(databaseUrl, 'app_public', { 40 | pluginHook: makePluginHook([GraphQLSSEPlugin]), 41 | eventStreamRoute: '/graphql/stream', // default 42 | }); 43 | ``` 44 | 45 | ### Use the client 46 | 47 | Connect to the specified `PostGraphileOptions.eventStreamRoute`. 48 | 49 | For further usage inspiration, please consult the [`graphql-sse` readme](https://github.com/enisdenjo/graphql-sse#readme). 50 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@graphile-contrib/graphql-sse", 3 | "version": "1.0.0", 4 | "description": "PostGraphile support for GraphQL over Server-Sent Events (SSE) powered by graphql-sse", 5 | "keywords": [ 6 | "sse", 7 | "server-sent-events", 8 | "subscriptions", 9 | "realtime", 10 | "graphql", 11 | "PostGraphile", 12 | "Graphile" 13 | ], 14 | "author": "Denis Badurina ", 15 | "license": "MIT", 16 | "homepage": "https://github.com/graphile-contrib/graphql-sse#readme", 17 | "repository": { 18 | "type": "git", 19 | "url": "https://github.com/graphile-contrib/graphql-sse.git" 20 | }, 21 | "engines": { 22 | "node": ">=12" 23 | }, 24 | "packageManager": "yarn@3.2.0", 25 | "files": [ 26 | "lib", 27 | "README.md", 28 | "LICENSE" 29 | ], 30 | "main": "lib/index.js", 31 | "module": "lib/index.mjs", 32 | "types": "lib/index.d.ts", 33 | "exports": { 34 | ".": { 35 | "require": "./lib/index.js", 36 | "import": "./lib/index.mjs" 37 | }, 38 | "./package.json": "./package.json" 39 | }, 40 | "scripts": { 41 | "type-check": "tsc --noEmit", 42 | "lint": "prettier -c .", 43 | "build:esm": "tsc -b tsconfig.esm.json && node scripts/esm-post-process.js", 44 | "build:cjs": "tsc -b tsconfig.cjs.json", 45 | "build": "yarn build:esm && yarn build:cjs", 46 | "prepack": "yarn build" 47 | }, 48 | "peerDependencies": { 49 | "graphql-sse": "^1.1.0", 50 | "postgraphile": "^4.12.9" 51 | }, 52 | "devDependencies": { 53 | "glob": "^8.0.1", 54 | "graphql-sse": "^1.1.0", 55 | "postgraphile": "^4.12.9", 56 | "prettier": "^2.6.2", 57 | "replacestream": "^4.0.3", 58 | "typescript": "^4.6.3" 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /scripts/esm-post-process.js: -------------------------------------------------------------------------------- 1 | // https://github.com/enisdenjo/graphql-sse/blob/f9b1fcf8fafec32f092b92b16bc7caad439795a8/scripts/esm-post-process.js 2 | 3 | 'use strict'; 4 | 5 | const fs = require('fs'); 6 | const path = require('path'); 7 | const glob = require('glob'); 8 | const replaceStream = require('replacestream'); 9 | 10 | glob('lib/**/*.js', (_, filePaths) => { 11 | for (const filePath of filePaths) { 12 | const parts = filePath.split('.'); 13 | parts.pop(); 14 | const mjsFileName = parts.join('.') + '.mjs'; 15 | fs.createReadStream(path.join(__dirname, '..', filePath)) 16 | .pipe(replaceStream(/from '(\.?\.\/[^']*)'/g, "from '$1.mjs'")) 17 | .pipe(fs.createWriteStream(path.join(__dirname, '..', mjsFileName))) 18 | .on('close', () => { 19 | fs.unlinkSync(filePath); 20 | }); 21 | } 22 | }); 23 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import type { IncomingMessage, ServerResponse } from 'http'; 2 | import type { 3 | parse as graphqlParse, 4 | validate as graphqlValidate, 5 | execute as graphqlExecute, 6 | subscribe as graphqlSubscribe, 7 | specifiedRules as graphqlSpecifiedRules, 8 | ExecutionArgs, 9 | ValidationRule, 10 | DocumentNode, 11 | } from 'graphql'; 12 | import type { 13 | CreateRequestHandlerOptions, 14 | PostGraphilePlugin, 15 | } from 'postgraphile'; 16 | 17 | import { createHandler, Handler, TOKEN_HEADER_KEY } from 'graphql-sse'; 18 | 19 | // copied from https://github.com/graphile/postgraphile/blob/55bff41460b113481c8161ef8f178f5af0a17df3/src/postgraphile/pluginHook.ts#L21-L25 20 | // TODO: export from postgraphile or find if already exported? 21 | type PluginHookFn = >( 22 | hookName: string, 23 | argument: TArgument, 24 | context?: TContext, 25 | ) => TArgument; 26 | 27 | let eventStreamRoute = '', 28 | handler: Handler = () => { 29 | throw new Error('graphql-sse handler not initialised'); 30 | }, 31 | parse: typeof graphqlParse = () => { 32 | throw new Error('graphql parse not initialised'); 33 | }, 34 | specifiedRules: typeof graphqlSpecifiedRules, 35 | validate: typeof graphqlValidate = () => { 36 | throw new Error('graphql validate not initialised'); 37 | }, 38 | execute: typeof graphqlExecute = () => { 39 | throw new Error('graphql execute not initialised'); 40 | }, 41 | subscribe: typeof graphqlSubscribe = () => { 42 | throw new Error('graphql subscribe not initialised'); 43 | }, 44 | pluginHook: PluginHookFn = () => { 45 | throw new Error('PostGraphile pluginHook not initialised'); 46 | }; 47 | 48 | // some callbacks of graphql-sse dont supply the response (like onNext) 49 | const resForReq = new Map(); 50 | 51 | const GraphQLSSEPlugin: PostGraphilePlugin = { 52 | init(_, { graphql }) { 53 | // copied from https://github.com/graphile/postgraphile/blob/55bff41460b113481c8161ef8f178f5af0a17df3/isTurbo.js 54 | const major = parseInt(process.version.replace(/\..*$/, ''), 10); 55 | if (major < 12) { 56 | throw new Error('graphql-sse requres Node >=12'); 57 | } 58 | 59 | parse = graphql.parse; 60 | specifiedRules = graphql.specifiedRules; 61 | validate = graphql.validate; 62 | execute = graphql.execute; 63 | subscribe = graphql.subscribe; 64 | 65 | return _; 66 | }, 67 | pluginHook(postgraphilePluginHook) { 68 | return (pluginHook = postgraphilePluginHook); 69 | }, 70 | 'postgraphile:middleware'(middleware) { 71 | const { 72 | options, 73 | getGraphQLSchema, 74 | withPostGraphileContextFromReqRes, 75 | handleErrors, 76 | } = middleware; 77 | 78 | // intentionally not taking from options because middleware will guarantee there's a route 79 | eventStreamRoute = middleware.eventStreamRoute; 80 | if (!eventStreamRoute) { 81 | throw new Error( 82 | 'graphql-sse cannot start because of eventStreamRoute is missing', 83 | ); 84 | } 85 | 86 | const staticValidationRules = pluginHook( 87 | 'postgraphile:validationRules:static', 88 | specifiedRules, 89 | { 90 | options, 91 | }, 92 | ); 93 | 94 | // some values necessary for dynamic validation are not available in `validate` callback 95 | const dynamicValidationRulesForDocument = new Map< 96 | DocumentNode, 97 | ValidationRule[] 98 | >(); 99 | 100 | handler = createHandler({ 101 | execute, 102 | subscribe, 103 | validate(schema, document) { 104 | try { 105 | return validate(schema, document, [ 106 | ...staticValidationRules, 107 | ...(dynamicValidationRulesForDocument.get(document) || []), 108 | ]); 109 | } finally { 110 | dynamicValidationRulesForDocument.delete(document); 111 | } 112 | }, 113 | async onSubscribe(req, res, params) { 114 | const context = await withPostGraphileContextFromReqRes( 115 | req, 116 | res, 117 | { singleStatement: true }, 118 | (context) => context, 119 | ); 120 | 121 | const args: ExecutionArgs = { 122 | schema: await getGraphQLSchema(), 123 | contextValue: context, 124 | operationName: params.operationName, 125 | document: 126 | typeof params.query === 'string' 127 | ? parse(params.query) 128 | : params.query, 129 | variableValues: params.variables, 130 | }; 131 | 132 | // You are strongly encouraged to use 133 | // `postgraphile:validationRules:static` if possible - you should 134 | // only use this one if you need access to variables. 135 | const dynamicValidationRules = pluginHook( 136 | 'postgraphile:validationRules', 137 | [], 138 | { 139 | options, 140 | req, 141 | res, 142 | variables: args.variableValues, 143 | operationName: args.operationName, 144 | }, 145 | ); 146 | if (dynamicValidationRules.length) { 147 | dynamicValidationRulesForDocument.set( 148 | args.document, 149 | dynamicValidationRules, 150 | ); 151 | } 152 | 153 | return args; 154 | }, 155 | async onNext(req, _args, result) { 156 | if (result.errors) { 157 | result.errors = handleErrors( 158 | result.errors, 159 | req, 160 | resForReq.get(req)!, // should be always present 161 | ); 162 | return result; 163 | } 164 | }, 165 | }); 166 | 167 | return middleware; 168 | }, 169 | // TODO: cannot use "postgraphile:http:eventStreamRouteHandler" because watchPg has to be true (https://github.com/graphile/postgraphile/blob/55bff41460b113481c8161ef8f178f5af0a17df3/src/postgraphile/http/createPostGraphileHttpRequestHandler.ts#L548-L553) 170 | 'postgraphile:http:handler'(req, ctx) { 171 | // TODO: context typings for the hook are incorrect (https://github.com/graphile/postgraphile/blob/55bff41460b113481c8161ef8f178f5af0a17df3/src/postgraphile/http/createPostGraphileHttpRequestHandler.ts#L528-L532) 172 | const options = ctx.options as CreateRequestHandlerOptions; 173 | const res = ctx.res as ServerResponse; 174 | const next = ctx.next as (err?: Error | 'route') => void; 175 | 176 | // inform clients about where they can use the event-stream 177 | res.setHeader('X-GraphQL-Event-Stream', eventStreamRoute); 178 | 179 | const url = new URL(req.url || '', `http://${req.headers.host}`); 180 | if (url.pathname !== eventStreamRoute) { 181 | return req; 182 | } 183 | 184 | // receiving a GET request without query params is probably PostGraphile emitting schema changes 185 | if ( 186 | req.method === 'GET' && 187 | !req.headers[TOKEN_HEADER_KEY] && 188 | !url.searchParams.has('query') 189 | ) { 190 | if (req.headers.accept !== 'text/event-stream') { 191 | // this conditional is intentionally nested here because "single connection mode" in GraphQL over SSE accepts non-event stream requests 192 | // for more information, please read: https://github.com/enisdenjo/graphql-sse/blob/master/PROTOCOL.md#single-connection-mode 193 | res.statusCode = 405; 194 | res.end(); 195 | next(); 196 | // TODO: wrong typings for the hook. returning a nullish indicates that the hook is taking over 197 | return null as unknown as IncomingMessage; 198 | } 199 | return req; 200 | } 201 | 202 | if (options.enableCors) { 203 | addCORSHeaders(res); 204 | } 205 | 206 | // Just a CORS preflight check 207 | if (req.method === 'OPTIONS') { 208 | res.statusCode = 200; 209 | res.end(); 210 | next(); 211 | // TODO: wrong typings for the hook. returning a nullish indicates that the hook is taking over 212 | return null as unknown as IncomingMessage; 213 | } 214 | 215 | resForReq.set(req, res); 216 | handler( 217 | req, 218 | res, 219 | req.body, // when nullish, `graphql-sse` will read out the body vanilla Node style 220 | ) 221 | .then(() => { 222 | next(); 223 | }) 224 | .catch((err) => { 225 | // handler should throw only on fatal errors 226 | console.error(err); 227 | 228 | if (!res.headersSent) { 229 | res.writeHead(500, 'Internal Server Error').end(); 230 | } 231 | 232 | next(err); 233 | }) 234 | .finally(() => { 235 | resForReq.delete(req); 236 | }); 237 | 238 | // TODO: wrong typings for the hook. returning a nullish indicates that the hook is taking over 239 | return null as unknown as IncomingMessage; 240 | }, 241 | }; 242 | 243 | /** 244 | * We require the Node response (instead of PostGraphileResponse) because graphql-sse 245 | * will append more headers down the read and flush them on its own. 246 | * 247 | * Mostly copied from https://github.com/graphile/postgraphile/blob/55bff41460b113481c8161ef8f178f5af0a17df3/src/postgraphile/http/createPostGraphileHttpRequestHandler.ts#L1145-L1181 248 | */ 249 | function addCORSHeaders(res: ServerResponse) { 250 | res.setHeader('Access-Control-Allow-Origin', '*'); 251 | // For "single connection mode" GraphQL over SSE 252 | // - PUT creates a event stream reservation 253 | // - DELETE stops an active subscription in a stream 254 | res.setHeader('Access-Control-Allow-Methods', 'HEAD, GET, POST, PUT, DELETE'); 255 | res.setHeader( 256 | 'Access-Control-Allow-Headers', 257 | [ 258 | 'Origin', 259 | 'X-Requested-With', 260 | // Used by `express-graphql` to determine whether to expose the GraphiQL 261 | // interface (`text/html`) or not. 262 | 'Accept', 263 | // Used by PostGraphile for auth purposes. 264 | 'Authorization', 265 | // Used by GraphQL Playground and other Apollo-enabled servers 266 | 'X-Apollo-Tracing', 267 | // The `Content-*` headers are used when making requests with a body, 268 | // like in a POST request. 269 | 'Content-Type', 270 | 'Content-Length', 271 | // For our 'Explain' feature 272 | 'X-PostGraphile-Explain', 273 | // For "single connection mode" GraphQL over SSE 274 | TOKEN_HEADER_KEY, 275 | ].join(', '), 276 | ); 277 | res.setHeader( 278 | 'Access-Control-Expose-Headers', 279 | ['X-GraphQL-Event-Stream'].join(', '), 280 | ); 281 | } 282 | 283 | export default GraphQLSSEPlugin; 284 | -------------------------------------------------------------------------------- /tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "commonjs" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "es2015" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "rootDir": "./src", 4 | "outDir": "./lib", 5 | "declaration": true, 6 | "target": "es2017", 7 | "moduleResolution": "node", 8 | "esModuleInterop": true, 9 | "forceConsistentCasingInFileNames": true, 10 | "strict": true, 11 | "noUnusedLocals": true, 12 | "noUnusedParameters": true, 13 | "skipLibCheck": true 14 | }, 15 | "exclude": ["lib"] 16 | } 17 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # This file is generated by running "yarn install" inside your project. 2 | # Manual changes might be lost - proceed with caution! 3 | 4 | __metadata: 5 | version: 6 6 | cacheKey: 8 7 | 8 | "@graphile-contrib/graphql-sse@workspace:.": 9 | version: 0.0.0-use.local 10 | resolution: "@graphile-contrib/graphql-sse@workspace:." 11 | dependencies: 12 | glob: ^8.0.1 13 | graphql-sse: ^1.1.0 14 | postgraphile: ^4.12.9 15 | prettier: ^2.6.2 16 | replacestream: ^4.0.3 17 | typescript: ^4.6.3 18 | peerDependencies: 19 | graphql-sse: ^1.1.0 20 | postgraphile: ^4.12.9 21 | languageName: unknown 22 | linkType: soft 23 | 24 | "@graphile/lru@npm:4.11.0": 25 | version: 4.11.0 26 | resolution: "@graphile/lru@npm:4.11.0" 27 | dependencies: 28 | tslib: ^2.0.1 29 | checksum: c92fdbcdf3d8cd75666f2d62c8afddf7cbf9b30ce3a9cee76f56553e6993aa4fe003d69b3eb2795c95fb8203670dd9dd98fc57bc3f51bf58b6bb5a6735f9213e 30 | languageName: node 31 | linkType: hard 32 | 33 | "@types/json5@npm:^0.0.30": 34 | version: 0.0.30 35 | resolution: "@types/json5@npm:0.0.30" 36 | checksum: 8802648fa736801264fde08da7c08b57be8845bd75ecf50c1eee980245f6d2c10a00f0768d0979c7ec2e4ff7e1417226e527bfb045e7e1a6e6afcaf11706a5f0 37 | languageName: node 38 | linkType: hard 39 | 40 | "@types/jsonwebtoken@npm:^8.3.2": 41 | version: 8.5.8 42 | resolution: "@types/jsonwebtoken@npm:8.5.8" 43 | dependencies: 44 | "@types/node": "*" 45 | checksum: 56738a918c543dba30786066959f801212e7fb5cd4ec53cf7b8d227711ed358834feb9e5141f7f88ec7c642bb39757330a5a8917e3b22e0ff9084940d35f0d70 46 | languageName: node 47 | linkType: hard 48 | 49 | "@types/node@npm:*": 50 | version: 17.0.24 51 | resolution: "@types/node@npm:17.0.24" 52 | checksum: 9e7c4f863601b2430b4c2429a89935f22eba692956f5013c90a4c7fb0e1401ed8add8c4307453c5d6b8b985384500f8c3f644427ab88632640cc396159af479a 53 | languageName: node 54 | linkType: hard 55 | 56 | "@types/pg@npm:>=6 <9": 57 | version: 8.6.5 58 | resolution: "@types/pg@npm:8.6.5" 59 | dependencies: 60 | "@types/node": "*" 61 | pg-protocol: "*" 62 | pg-types: ^2.2.0 63 | checksum: 49ef858d95e84a6c1be193d367996581c991cf383d8628449507cc4ce67ef43b75acb18a0f9f49f870594cdec3501ddf4d2ac3fbe0dcdaab35c295c038d47199 64 | languageName: node 65 | linkType: hard 66 | 67 | "@types/ws@npm:^7.4.0": 68 | version: 7.4.7 69 | resolution: "@types/ws@npm:7.4.7" 70 | dependencies: 71 | "@types/node": "*" 72 | checksum: b4c9b8ad209620c9b21e78314ce4ff07515c0cadab9af101c1651e7bfb992d7fd933bd8b9c99d110738fd6db523ed15f82f29f50b45510288da72e964dedb1a3 73 | languageName: node 74 | linkType: hard 75 | 76 | "ansi-styles@npm:^3.2.1": 77 | version: 3.2.1 78 | resolution: "ansi-styles@npm:3.2.1" 79 | dependencies: 80 | color-convert: ^1.9.0 81 | checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 82 | languageName: node 83 | linkType: hard 84 | 85 | "backo2@npm:^1.0.2": 86 | version: 1.0.2 87 | resolution: "backo2@npm:1.0.2" 88 | checksum: fda8d0a0f4810068d23715f2f45153146d6ee8f62dd827ce1e0b6cc3c8328e84ad61e11399a83931705cef702fe7cbb457856bf99b9bd10c4ed57b0786252385 89 | languageName: node 90 | linkType: hard 91 | 92 | "balanced-match@npm:^1.0.0": 93 | version: 1.0.2 94 | resolution: "balanced-match@npm:1.0.2" 95 | checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 96 | languageName: node 97 | linkType: hard 98 | 99 | "body-parser@npm:^1.15.2": 100 | version: 1.20.0 101 | resolution: "body-parser@npm:1.20.0" 102 | dependencies: 103 | bytes: 3.1.2 104 | content-type: ~1.0.4 105 | debug: 2.6.9 106 | depd: 2.0.0 107 | destroy: 1.2.0 108 | http-errors: 2.0.0 109 | iconv-lite: 0.4.24 110 | on-finished: 2.4.1 111 | qs: 6.10.3 112 | raw-body: 2.5.1 113 | type-is: ~1.6.18 114 | unpipe: 1.0.0 115 | checksum: 12fffdeac82fe20dddcab7074215d5156e7d02a69ae90cbe9fee1ca3efa2f28ef52097cbea76685ee0a1509c71d85abd0056a08e612c09077cad6277a644cf88 116 | languageName: node 117 | linkType: hard 118 | 119 | "brace-expansion@npm:^2.0.1": 120 | version: 2.0.1 121 | resolution: "brace-expansion@npm:2.0.1" 122 | dependencies: 123 | balanced-match: ^1.0.0 124 | checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 125 | languageName: node 126 | linkType: hard 127 | 128 | "buffer-equal-constant-time@npm:1.0.1": 129 | version: 1.0.1 130 | resolution: "buffer-equal-constant-time@npm:1.0.1" 131 | checksum: 80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab 132 | languageName: node 133 | linkType: hard 134 | 135 | "buffer-writer@npm:2.0.0": 136 | version: 2.0.0 137 | resolution: "buffer-writer@npm:2.0.0" 138 | checksum: 11736b48bb75106c52ca8ec9f025e7c1b3b25ce31875f469d7210eabd5c576c329e34f6b805d4a8d605ff3f0db1e16342328802c4c963e9c826b0e43a4e631c2 139 | languageName: node 140 | linkType: hard 141 | 142 | "bytes@npm:3.1.2": 143 | version: 3.1.2 144 | resolution: "bytes@npm:3.1.2" 145 | checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e 146 | languageName: node 147 | linkType: hard 148 | 149 | "call-bind@npm:^1.0.0": 150 | version: 1.0.2 151 | resolution: "call-bind@npm:1.0.2" 152 | dependencies: 153 | function-bind: ^1.1.1 154 | get-intrinsic: ^1.0.2 155 | checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 156 | languageName: node 157 | linkType: hard 158 | 159 | "chalk@npm:^2.4.2": 160 | version: 2.4.2 161 | resolution: "chalk@npm:2.4.2" 162 | dependencies: 163 | ansi-styles: ^3.2.1 164 | escape-string-regexp: ^1.0.5 165 | supports-color: ^5.3.0 166 | checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 167 | languageName: node 168 | linkType: hard 169 | 170 | "color-convert@npm:^1.9.0": 171 | version: 1.9.3 172 | resolution: "color-convert@npm:1.9.3" 173 | dependencies: 174 | color-name: 1.1.3 175 | checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 176 | languageName: node 177 | linkType: hard 178 | 179 | "color-name@npm:1.1.3": 180 | version: 1.1.3 181 | resolution: "color-name@npm:1.1.3" 182 | checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d 183 | languageName: node 184 | linkType: hard 185 | 186 | "commander@npm:^2.19.0": 187 | version: 2.20.3 188 | resolution: "commander@npm:2.20.3" 189 | checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e 190 | languageName: node 191 | linkType: hard 192 | 193 | "content-type@npm:~1.0.4": 194 | version: 1.0.4 195 | resolution: "content-type@npm:1.0.4" 196 | checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 197 | languageName: node 198 | linkType: hard 199 | 200 | "core-util-is@npm:~1.0.0": 201 | version: 1.0.3 202 | resolution: "core-util-is@npm:1.0.3" 203 | checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 204 | languageName: node 205 | linkType: hard 206 | 207 | "debug@npm:2.6.9": 208 | version: 2.6.9 209 | resolution: "debug@npm:2.6.9" 210 | dependencies: 211 | ms: 2.0.0 212 | checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 213 | languageName: node 214 | linkType: hard 215 | 216 | "debug@npm:>=3 <5, debug@npm:^4.1.1": 217 | version: 4.3.4 218 | resolution: "debug@npm:4.3.4" 219 | dependencies: 220 | ms: 2.1.2 221 | peerDependenciesMeta: 222 | supports-color: 223 | optional: true 224 | checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 225 | languageName: node 226 | linkType: hard 227 | 228 | "depd@npm:2.0.0": 229 | version: 2.0.0 230 | resolution: "depd@npm:2.0.0" 231 | checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a 232 | languageName: node 233 | linkType: hard 234 | 235 | "depd@npm:~1.1.2": 236 | version: 1.1.2 237 | resolution: "depd@npm:1.1.2" 238 | checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 239 | languageName: node 240 | linkType: hard 241 | 242 | "destroy@npm:1.2.0": 243 | version: 1.2.0 244 | resolution: "destroy@npm:1.2.0" 245 | checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 246 | languageName: node 247 | linkType: hard 248 | 249 | "ecdsa-sig-formatter@npm:1.0.11": 250 | version: 1.0.11 251 | resolution: "ecdsa-sig-formatter@npm:1.0.11" 252 | dependencies: 253 | safe-buffer: ^5.0.1 254 | checksum: 207f9ab1c2669b8e65540bce29506134613dd5f122cccf1e6a560f4d63f2732d427d938f8481df175505aad94583bcb32c688737bb39a6df0625f903d6d93c03 255 | languageName: node 256 | linkType: hard 257 | 258 | "ee-first@npm:1.1.1": 259 | version: 1.1.1 260 | resolution: "ee-first@npm:1.1.1" 261 | checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f 262 | languageName: node 263 | linkType: hard 264 | 265 | "encodeurl@npm:~1.0.2": 266 | version: 1.0.2 267 | resolution: "encodeurl@npm:1.0.2" 268 | checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c 269 | languageName: node 270 | linkType: hard 271 | 272 | "escape-html@npm:~1.0.3": 273 | version: 1.0.3 274 | resolution: "escape-html@npm:1.0.3" 275 | checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 276 | languageName: node 277 | linkType: hard 278 | 279 | "escape-string-regexp@npm:^1.0.3, escape-string-regexp@npm:^1.0.5": 280 | version: 1.0.5 281 | resolution: "escape-string-regexp@npm:1.0.5" 282 | checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 283 | languageName: node 284 | linkType: hard 285 | 286 | "eventemitter3@npm:^3.1.0": 287 | version: 3.1.2 288 | resolution: "eventemitter3@npm:3.1.2" 289 | checksum: 81e4e82b8418f5cfd986d2b4a2fa5397ac4eb8134e09bcb47005545e22fdf8e9e61d5c053d34651112245aae411bdfe6d0ad5511da0400743fef5fc38bfcfbe3 290 | languageName: node 291 | linkType: hard 292 | 293 | "finalhandler@npm:^1.0.6": 294 | version: 1.2.0 295 | resolution: "finalhandler@npm:1.2.0" 296 | dependencies: 297 | debug: 2.6.9 298 | encodeurl: ~1.0.2 299 | escape-html: ~1.0.3 300 | on-finished: 2.4.1 301 | parseurl: ~1.3.3 302 | statuses: 2.0.1 303 | unpipe: ~1.0.0 304 | checksum: 92effbfd32e22a7dff2994acedbd9bcc3aa646a3e919ea6a53238090e87097f8ef07cced90aa2cc421abdf993aefbdd5b00104d55c7c5479a8d00ed105b45716 305 | languageName: node 306 | linkType: hard 307 | 308 | "fs.realpath@npm:^1.0.0": 309 | version: 1.0.0 310 | resolution: "fs.realpath@npm:1.0.0" 311 | checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 312 | languageName: node 313 | linkType: hard 314 | 315 | "function-bind@npm:^1.1.1": 316 | version: 1.1.1 317 | resolution: "function-bind@npm:1.1.1" 318 | checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a 319 | languageName: node 320 | linkType: hard 321 | 322 | "get-intrinsic@npm:^1.0.2": 323 | version: 1.1.1 324 | resolution: "get-intrinsic@npm:1.1.1" 325 | dependencies: 326 | function-bind: ^1.1.1 327 | has: ^1.0.3 328 | has-symbols: ^1.0.1 329 | checksum: a9fe2ca8fa3f07f9b0d30fb202bcd01f3d9b9b6b732452e79c48e79f7d6d8d003af3f9e38514250e3553fdc83c61650851cb6870832ac89deaaceb08e3721a17 330 | languageName: node 331 | linkType: hard 332 | 333 | "glob@npm:^8.0.1": 334 | version: 8.0.1 335 | resolution: "glob@npm:8.0.1" 336 | dependencies: 337 | fs.realpath: ^1.0.0 338 | inflight: ^1.0.4 339 | inherits: 2 340 | minimatch: ^5.0.1 341 | once: ^1.3.0 342 | path-is-absolute: ^1.0.0 343 | checksum: 7ac782f3ef1c08005884447479e68ceb0ad56997eb2003e1e9aefae71bad3cb48eb7c49190d3d6736f2ffcd8af4985d53a46831b3d5e0052cc5756822a38b61a 344 | languageName: node 345 | linkType: hard 346 | 347 | "graphile-build-pg@npm:4.12.2": 348 | version: 4.12.2 349 | resolution: "graphile-build-pg@npm:4.12.2" 350 | dependencies: 351 | "@graphile/lru": 4.11.0 352 | chalk: ^2.4.2 353 | debug: ^4.1.1 354 | graphile-build: 4.12.2 355 | jsonwebtoken: ^8.5.1 356 | lodash: ">=4 <5" 357 | lru-cache: ">=4 <5" 358 | pg-sql2: 4.12.1 359 | peerDependencies: 360 | pg: ">=6.1.0 <9" 361 | checksum: 45531c07fdda22e24c7b20be5754ae057a703f24bbb2f5d192665666f0f99a0f28bb8ef54498d0d753ddfd5f562c4e3bbd56c21904c6c5c87fb57551d18a9378 362 | languageName: node 363 | linkType: hard 364 | 365 | "graphile-build@npm:4.12.2": 366 | version: 4.12.2 367 | resolution: "graphile-build@npm:4.12.2" 368 | dependencies: 369 | "@graphile/lru": 4.11.0 370 | chalk: ^2.4.2 371 | debug: ^4.1.1 372 | graphql-parse-resolve-info: 4.12.0 373 | iterall: ^1.2.2 374 | lodash: ">=4 <5" 375 | lru-cache: ^5.0.0 376 | pluralize: ^7.0.0 377 | semver: ^6.0.0 378 | peerDependencies: 379 | graphql: ">=0.9 <0.14 || ^14.0.2 || ^15.4.0" 380 | checksum: ebd2c91a71c6826011599f1cd4f57b0d312e47e3c3b26d46deb01127d03821e2528a1fb4d3fa7570d03121f8be2cff1e9617479a47d339797d22d47a23d10c83 381 | languageName: node 382 | linkType: hard 383 | 384 | "graphile-utils@npm:^4.12.2": 385 | version: 4.12.2 386 | resolution: "graphile-utils@npm:4.12.2" 387 | dependencies: 388 | debug: ^4.1.1 389 | graphql: ">=0.9 <0.14 || ^14.0.2 || ^15.4.0" 390 | tslib: ^2.0.1 391 | peerDependencies: 392 | graphile-build: ^4.5.0 393 | graphile-build-pg: ^4.5.0 394 | checksum: 6782106878d9952da99150b9d6249e79e306a654da290c545f72e42b9cb6b2c3540e883d4369c0dea89b87341161303d736f879710cb5438bf96064e29319de9 395 | languageName: node 396 | linkType: hard 397 | 398 | "graphql-parse-resolve-info@npm:4.12.0": 399 | version: 4.12.0 400 | resolution: "graphql-parse-resolve-info@npm:4.12.0" 401 | dependencies: 402 | debug: ^4.1.1 403 | tslib: ^2.0.1 404 | peerDependencies: 405 | graphql: ">=0.9 <0.14 || ^14.0.2 || ^15.4.0" 406 | checksum: d15554985407b34150a36f8526d3ce63cd97a1fa898eadd74ba5e6d099984d13929de64924332832613d59fba7946222b0a07a127e93ad58bdb82f3548cc497b 407 | languageName: node 408 | linkType: hard 409 | 410 | "graphql-sse@npm:^1.1.0": 411 | version: 1.1.0 412 | resolution: "graphql-sse@npm:1.1.0" 413 | peerDependencies: 414 | graphql: ">=0.11 <=16" 415 | checksum: db4b22551718955faa5ba1c926a33dbb4df9822bfc233ea13e0044b7fced4dc4c65b92d82ca5a68b6ae87b93204639af4faa869b74a7b88ec2d12d6c6b767817 416 | languageName: node 417 | linkType: hard 418 | 419 | "graphql-ws@npm:^5.6.2": 420 | version: 5.7.0 421 | resolution: "graphql-ws@npm:5.7.0" 422 | peerDependencies: 423 | graphql: ">=0.11 <=16" 424 | checksum: 39f795abc48a79177e54f5ef47331424987ba7194361dcfe983fd17c10ef853102b41283b996ab763c4293ea4c1215ba1da36d571c2487f4ff54d2b67a1dc176 425 | languageName: node 426 | linkType: hard 427 | 428 | "graphql@npm:>=0.9 <0.14 || ^14.0.2 || ^15.4.0, graphql@npm:^0.6.0 || ^0.7.0 || ^0.8.0-b || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.2 || ^15.0.0": 429 | version: 15.8.0 430 | resolution: "graphql@npm:15.8.0" 431 | checksum: 423325271db8858428641b9aca01699283d1fe5b40ef6d4ac622569ecca927019fce8196208b91dd1d8eb8114f00263fe661d241d0eb40c10e5bfd650f86ec5e 432 | languageName: node 433 | linkType: hard 434 | 435 | "has-flag@npm:^3.0.0": 436 | version: 3.0.0 437 | resolution: "has-flag@npm:3.0.0" 438 | checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b 439 | languageName: node 440 | linkType: hard 441 | 442 | "has-symbols@npm:^1.0.1": 443 | version: 1.0.3 444 | resolution: "has-symbols@npm:1.0.3" 445 | checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 446 | languageName: node 447 | linkType: hard 448 | 449 | "has@npm:^1.0.3": 450 | version: 1.0.3 451 | resolution: "has@npm:1.0.3" 452 | dependencies: 453 | function-bind: ^1.1.1 454 | checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 455 | languageName: node 456 | linkType: hard 457 | 458 | "http-errors@npm:2.0.0": 459 | version: 2.0.0 460 | resolution: "http-errors@npm:2.0.0" 461 | dependencies: 462 | depd: 2.0.0 463 | inherits: 2.0.4 464 | setprototypeof: 1.2.0 465 | statuses: 2.0.1 466 | toidentifier: 1.0.1 467 | checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 468 | languageName: node 469 | linkType: hard 470 | 471 | "http-errors@npm:^1.5.1": 472 | version: 1.8.1 473 | resolution: "http-errors@npm:1.8.1" 474 | dependencies: 475 | depd: ~1.1.2 476 | inherits: 2.0.4 477 | setprototypeof: 1.2.0 478 | statuses: ">= 1.5.0 < 2" 479 | toidentifier: 1.0.1 480 | checksum: d3c7e7e776fd51c0a812baff570bdf06fe49a5dc448b700ab6171b1250e4cf7db8b8f4c0b133e4bfe2451022a5790c1ca6c2cae4094dedd6ac8304a1267f91d2 481 | languageName: node 482 | linkType: hard 483 | 484 | "iconv-lite@npm:0.4.24": 485 | version: 0.4.24 486 | resolution: "iconv-lite@npm:0.4.24" 487 | dependencies: 488 | safer-buffer: ">= 2.1.2 < 3" 489 | checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 490 | languageName: node 491 | linkType: hard 492 | 493 | "inflight@npm:^1.0.4": 494 | version: 1.0.6 495 | resolution: "inflight@npm:1.0.6" 496 | dependencies: 497 | once: ^1.3.0 498 | wrappy: 1 499 | checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd 500 | languageName: node 501 | linkType: hard 502 | 503 | "inherits@npm:2, inherits@npm:2.0.4, inherits@npm:~2.0.3": 504 | version: 2.0.4 505 | resolution: "inherits@npm:2.0.4" 506 | checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 507 | languageName: node 508 | linkType: hard 509 | 510 | "isarray@npm:~1.0.0": 511 | version: 1.0.0 512 | resolution: "isarray@npm:1.0.0" 513 | checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab 514 | languageName: node 515 | linkType: hard 516 | 517 | "iterall@npm:^1.0.2, iterall@npm:^1.2.1, iterall@npm:^1.2.2": 518 | version: 1.3.0 519 | resolution: "iterall@npm:1.3.0" 520 | checksum: c78b99678f8c99be488cca7f33e4acca9b72c1326e050afbaf023f086e55619ee466af0464af94a0cb3f292e60cb5bac53a8fd86bd4249ecad26e09f17bb158b 521 | languageName: node 522 | linkType: hard 523 | 524 | "json5@npm:^2.1.1": 525 | version: 2.2.1 526 | resolution: "json5@npm:2.2.1" 527 | bin: 528 | json5: lib/cli.js 529 | checksum: 74b8a23b102a6f2bf2d224797ae553a75488b5adbaee9c9b6e5ab8b510a2fc6e38f876d4c77dea672d4014a44b2399e15f2051ac2b37b87f74c0c7602003543b 530 | languageName: node 531 | linkType: hard 532 | 533 | "jsonwebtoken@npm:^8.0.0, jsonwebtoken@npm:^8.5.1": 534 | version: 8.5.1 535 | resolution: "jsonwebtoken@npm:8.5.1" 536 | dependencies: 537 | jws: ^3.2.2 538 | lodash.includes: ^4.3.0 539 | lodash.isboolean: ^3.0.3 540 | lodash.isinteger: ^4.0.4 541 | lodash.isnumber: ^3.0.3 542 | lodash.isplainobject: ^4.0.6 543 | lodash.isstring: ^4.0.1 544 | lodash.once: ^4.0.0 545 | ms: ^2.1.1 546 | semver: ^5.6.0 547 | checksum: 93c9e3f23c59b758ac88ba15f4e4753b3749dfce7a6f7c40fb86663128a1e282db085eec852d4e0cbca4cefdcd3a8275ee255dbd08fcad0df26ad9f6e4cc853a 548 | languageName: node 549 | linkType: hard 550 | 551 | "jwa@npm:^1.4.1": 552 | version: 1.4.1 553 | resolution: "jwa@npm:1.4.1" 554 | dependencies: 555 | buffer-equal-constant-time: 1.0.1 556 | ecdsa-sig-formatter: 1.0.11 557 | safe-buffer: ^5.0.1 558 | checksum: ff30ea7c2dcc61f3ed2098d868bf89d43701605090c5b21b5544b512843ec6fd9e028381a4dda466cbcdb885c2d1150f7c62e7168394ee07941b4098e1035e2f 559 | languageName: node 560 | linkType: hard 561 | 562 | "jws@npm:^3.2.2": 563 | version: 3.2.2 564 | resolution: "jws@npm:3.2.2" 565 | dependencies: 566 | jwa: ^1.4.1 567 | safe-buffer: ^5.0.1 568 | checksum: f0213fe5b79344c56cd443428d8f65c16bf842dc8cb8f5aed693e1e91d79c20741663ad6eff07a6d2c433d1831acc9814e8d7bada6a0471fbb91d09ceb2bf5c2 569 | languageName: node 570 | linkType: hard 571 | 572 | "lodash.includes@npm:^4.3.0": 573 | version: 4.3.0 574 | resolution: "lodash.includes@npm:4.3.0" 575 | checksum: 71092c130515a67ab3bd928f57f6018434797c94def7f46aafa417771e455ce3a4834889f4267b17887d7f75297dfabd96231bf704fd2b8c5096dc4a913568b6 576 | languageName: node 577 | linkType: hard 578 | 579 | "lodash.isboolean@npm:^3.0.3": 580 | version: 3.0.3 581 | resolution: "lodash.isboolean@npm:3.0.3" 582 | checksum: b70068b4a8b8837912b54052557b21fc4774174e3512ed3c5b94621e5aff5eb6c68089d0a386b7e801d679cd105d2e35417978a5e99071750aa2ed90bffd0250 583 | languageName: node 584 | linkType: hard 585 | 586 | "lodash.isinteger@npm:^4.0.4": 587 | version: 4.0.4 588 | resolution: "lodash.isinteger@npm:4.0.4" 589 | checksum: 6034821b3fc61a2ffc34e7d5644bb50c5fd8f1c0121c554c21ac271911ee0c0502274852845005f8651d51e199ee2e0cfebfe40aaa49c7fe617f603a8a0b1691 590 | languageName: node 591 | linkType: hard 592 | 593 | "lodash.isnumber@npm:^3.0.3": 594 | version: 3.0.3 595 | resolution: "lodash.isnumber@npm:3.0.3" 596 | checksum: 913784275b565346255e6ae6a6e30b760a0da70abc29f3e1f409081585875105138cda4a429ff02577e1bc0a7ae2a90e0a3079a37f3a04c3d6c5aaa532f4cab2 597 | languageName: node 598 | linkType: hard 599 | 600 | "lodash.isplainobject@npm:^4.0.6": 601 | version: 4.0.6 602 | resolution: "lodash.isplainobject@npm:4.0.6" 603 | checksum: 29c6351f281e0d9a1d58f1a4c8f4400924b4c79f18dfc4613624d7d54784df07efaff97c1ff2659f3e085ecf4fff493300adc4837553104cef2634110b0d5337 604 | languageName: node 605 | linkType: hard 606 | 607 | "lodash.isstring@npm:^4.0.1": 608 | version: 4.0.1 609 | resolution: "lodash.isstring@npm:4.0.1" 610 | checksum: eaac87ae9636848af08021083d796e2eea3d02e80082ab8a9955309569cb3a463ce97fd281d7dc119e402b2e7d8c54a23914b15d2fc7fff56461511dc8937ba0 611 | languageName: node 612 | linkType: hard 613 | 614 | "lodash.once@npm:^4.0.0": 615 | version: 4.1.1 616 | resolution: "lodash.once@npm:4.1.1" 617 | checksum: d768fa9f9b4e1dc6453be99b753906f58990e0c45e7b2ca5a3b40a33111e5d17f6edf2f768786e2716af90a8e78f8f91431ab8435f761fef00f9b0c256f6d245 618 | languageName: node 619 | linkType: hard 620 | 621 | "lodash@npm:>=4 <5": 622 | version: 4.17.21 623 | resolution: "lodash@npm:4.17.21" 624 | checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 625 | languageName: node 626 | linkType: hard 627 | 628 | "lru-cache@npm:>=4 <5": 629 | version: 4.1.5 630 | resolution: "lru-cache@npm:4.1.5" 631 | dependencies: 632 | pseudomap: ^1.0.2 633 | yallist: ^2.1.2 634 | checksum: 4bb4b58a36cd7dc4dcec74cbe6a8f766a38b7426f1ff59d4cf7d82a2aa9b9565cd1cb98f6ff60ce5cd174524868d7bc9b7b1c294371851356066ca9ac4cf135a 635 | languageName: node 636 | linkType: hard 637 | 638 | "lru-cache@npm:^5.0.0": 639 | version: 5.1.1 640 | resolution: "lru-cache@npm:5.1.1" 641 | dependencies: 642 | yallist: ^3.0.2 643 | checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb 644 | languageName: node 645 | linkType: hard 646 | 647 | "media-typer@npm:0.3.0": 648 | version: 0.3.0 649 | resolution: "media-typer@npm:0.3.0" 650 | checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 651 | languageName: node 652 | linkType: hard 653 | 654 | "mime-db@npm:1.52.0": 655 | version: 1.52.0 656 | resolution: "mime-db@npm:1.52.0" 657 | checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f 658 | languageName: node 659 | linkType: hard 660 | 661 | "mime-types@npm:~2.1.24": 662 | version: 2.1.35 663 | resolution: "mime-types@npm:2.1.35" 664 | dependencies: 665 | mime-db: 1.52.0 666 | checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 667 | languageName: node 668 | linkType: hard 669 | 670 | "minimatch@npm:^5.0.1": 671 | version: 5.0.1 672 | resolution: "minimatch@npm:5.0.1" 673 | dependencies: 674 | brace-expansion: ^2.0.1 675 | checksum: b34b98463da4754bc526b244d680c69d4d6089451ebe512edaf6dd9eeed0279399cfa3edb19233513b8f830bf4bfcad911dddcdf125e75074100d52f724774f0 676 | languageName: node 677 | linkType: hard 678 | 679 | "ms@npm:2.0.0": 680 | version: 2.0.0 681 | resolution: "ms@npm:2.0.0" 682 | checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 683 | languageName: node 684 | linkType: hard 685 | 686 | "ms@npm:2.1.2": 687 | version: 2.1.2 688 | resolution: "ms@npm:2.1.2" 689 | checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f 690 | languageName: node 691 | linkType: hard 692 | 693 | "ms@npm:^2.1.1": 694 | version: 2.1.3 695 | resolution: "ms@npm:2.1.3" 696 | checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d 697 | languageName: node 698 | linkType: hard 699 | 700 | "object-assign@npm:^4.0.1": 701 | version: 4.1.1 702 | resolution: "object-assign@npm:4.1.1" 703 | checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f 704 | languageName: node 705 | linkType: hard 706 | 707 | "object-inspect@npm:^1.9.0": 708 | version: 1.12.0 709 | resolution: "object-inspect@npm:1.12.0" 710 | checksum: 2b36d4001a9c921c6b342e2965734519c9c58c355822243c3207fbf0aac271f8d44d30d2d570d450b2cc6f0f00b72bcdba515c37827d2560e5f22b1899a31cf4 711 | languageName: node 712 | linkType: hard 713 | 714 | "on-finished@npm:2.4.1": 715 | version: 2.4.1 716 | resolution: "on-finished@npm:2.4.1" 717 | dependencies: 718 | ee-first: 1.1.1 719 | checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 720 | languageName: node 721 | linkType: hard 722 | 723 | "once@npm:^1.3.0": 724 | version: 1.4.0 725 | resolution: "once@npm:1.4.0" 726 | dependencies: 727 | wrappy: 1 728 | checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 729 | languageName: node 730 | linkType: hard 731 | 732 | "packet-reader@npm:1.0.0": 733 | version: 1.0.0 734 | resolution: "packet-reader@npm:1.0.0" 735 | checksum: 0b7516f0cbf3e322aad591bed29ba544220088c53943145c0d9121a6f59182ad811f7fd6785a8979a34356aca69d97653689029964c5998dc02645633d88ffd7 736 | languageName: node 737 | linkType: hard 738 | 739 | "parseurl@npm:^1.3.2, parseurl@npm:~1.3.3": 740 | version: 1.3.3 741 | resolution: "parseurl@npm:1.3.3" 742 | checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 743 | languageName: node 744 | linkType: hard 745 | 746 | "path-is-absolute@npm:^1.0.0": 747 | version: 1.0.1 748 | resolution: "path-is-absolute@npm:1.0.1" 749 | checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 750 | languageName: node 751 | linkType: hard 752 | 753 | "pg-connection-string@npm:^2.0.0, pg-connection-string@npm:^2.5.0": 754 | version: 2.5.0 755 | resolution: "pg-connection-string@npm:2.5.0" 756 | checksum: a6f3a068f7c9416a5b33a326811caf0dfaaee045c225b7c628b4c9b4e9a2b25bdd12a21e4c48940e1000ea223a4e608ca122d2ff3dd08c8b1db0fc9f5705133a 757 | languageName: node 758 | linkType: hard 759 | 760 | "pg-int8@npm:1.0.1": 761 | version: 1.0.1 762 | resolution: "pg-int8@npm:1.0.1" 763 | checksum: a1e3a05a69005ddb73e5f324b6b4e689868a447c5fa280b44cd4d04e6916a344ac289e0b8d2695d66e8e89a7fba023affb9e0e94778770ada5df43f003d664c9 764 | languageName: node 765 | linkType: hard 766 | 767 | "pg-pool@npm:^3.5.1": 768 | version: 3.5.1 769 | resolution: "pg-pool@npm:3.5.1" 770 | peerDependencies: 771 | pg: ">=8.0" 772 | checksum: 42833c25f18fee41a1b2d955978f1403e93164762a7e57d3a870429103d302f1899b393ab021bb8144272037eb3f13bdb9f16a4c4afaa3efd3d2c3689738038f 773 | languageName: node 774 | linkType: hard 775 | 776 | "pg-protocol@npm:*, pg-protocol@npm:^1.5.0": 777 | version: 1.5.0 778 | resolution: "pg-protocol@npm:1.5.0" 779 | checksum: b839d12cafe942ef9cbc5b13c174eb2356804fb4fe8ead8279f46a36be90722d19a91409955beb8a3d5301639c44854e49749de4aef02dc361fee3e2a61fb1e4 780 | languageName: node 781 | linkType: hard 782 | 783 | "pg-sql2@npm:4.12.1": 784 | version: 4.12.1 785 | resolution: "pg-sql2@npm:4.12.1" 786 | dependencies: 787 | "@graphile/lru": 4.11.0 788 | "@types/pg": ">=6 <9" 789 | debug: ">=3 <5" 790 | tslib: ^2.0.1 791 | peerDependencies: 792 | pg: ">=6.1.0 <9" 793 | checksum: 86cfe2a766f7cca5609c212a4cfed065ffb28f7b6125a78643e924f72f9605c8c4133f3009dacab5601463e18a51ac0f5565ee1e7021306fb5ea289a3bc6e010 794 | languageName: node 795 | linkType: hard 796 | 797 | "pg-types@npm:^2.1.0, pg-types@npm:^2.2.0": 798 | version: 2.2.0 799 | resolution: "pg-types@npm:2.2.0" 800 | dependencies: 801 | pg-int8: 1.0.1 802 | postgres-array: ~2.0.0 803 | postgres-bytea: ~1.0.0 804 | postgres-date: ~1.0.4 805 | postgres-interval: ^1.1.0 806 | checksum: bf4ec3f594743442857fb3a8dfe5d2478a04c98f96a0a47365014557cbc0b4b0cee01462c79adca863b93befbf88f876299b75b72c665b5fb84a2c94fbd10316 807 | languageName: node 808 | linkType: hard 809 | 810 | "pg@npm:>=6.1.0 <9": 811 | version: 8.7.3 812 | resolution: "pg@npm:8.7.3" 813 | dependencies: 814 | buffer-writer: 2.0.0 815 | packet-reader: 1.0.0 816 | pg-connection-string: ^2.5.0 817 | pg-pool: ^3.5.1 818 | pg-protocol: ^1.5.0 819 | pg-types: ^2.1.0 820 | pgpass: 1.x 821 | peerDependencies: 822 | pg-native: ">=2.0.0" 823 | peerDependenciesMeta: 824 | pg-native: 825 | optional: true 826 | checksum: d0e7040967779b9ccea16897f099510bcaf6bc86f77a6d8fa7e293c24d8bd2fd2ec46d99d6d1adc9be4cc8f254aa909361346b693088c1ba4501414f7afb2fe3 827 | languageName: node 828 | linkType: hard 829 | 830 | "pgpass@npm:1.x": 831 | version: 1.0.5 832 | resolution: "pgpass@npm:1.0.5" 833 | dependencies: 834 | split2: ^4.1.0 835 | checksum: 947ac096c031eebdf08d989de2e9f6f156b8133d6858c7c2c06c041e1e71dda6f5f3bad3c0ec1e96a09497bbc6ef89e762eefe703b5ef9cb2804392ec52ec400 836 | languageName: node 837 | linkType: hard 838 | 839 | "pluralize@npm:^7.0.0": 840 | version: 7.0.0 841 | resolution: "pluralize@npm:7.0.0" 842 | checksum: e3f694924b7c8c03dc9fa40b2312e17787998ac6e20fccace11efa1146046eb9931541bfd247b3ec5535e730d902a5aee7c32681d5bf9a00fc74a72039a3e609 843 | languageName: node 844 | linkType: hard 845 | 846 | "postgraphile-core@npm:4.12.2": 847 | version: 4.12.2 848 | resolution: "postgraphile-core@npm:4.12.2" 849 | dependencies: 850 | graphile-build: 4.12.2 851 | graphile-build-pg: 4.12.2 852 | tslib: ^2.0.1 853 | peerDependencies: 854 | graphql: ">=0.9 <0.14 || ^14.0.2 || ^15.4.0" 855 | pg: ">=6.1.0 <9" 856 | checksum: 086168f2c1954c033dc78f765fa0e46d2fcfa0720823a26690cf118d7c81a1cc9c67ade609ca4001bf8c4e0df4cea84c99f879fc6aa81021549f6848f77a1228 857 | languageName: node 858 | linkType: hard 859 | 860 | "postgraphile@npm:^4.12.9": 861 | version: 4.12.10 862 | resolution: "postgraphile@npm:4.12.10" 863 | dependencies: 864 | "@graphile/lru": 4.11.0 865 | "@types/json5": ^0.0.30 866 | "@types/jsonwebtoken": ^8.3.2 867 | "@types/pg": ">=6 <9" 868 | "@types/ws": ^7.4.0 869 | body-parser: ^1.15.2 870 | chalk: ^2.4.2 871 | commander: ^2.19.0 872 | debug: ^4.1.1 873 | finalhandler: ^1.0.6 874 | graphile-build: 4.12.2 875 | graphile-build-pg: 4.12.2 876 | graphile-utils: ^4.12.2 877 | graphql: ^0.6.0 || ^0.7.0 || ^0.8.0-b || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.2 || ^15.0.0 878 | graphql-ws: ^5.6.2 879 | http-errors: ^1.5.1 880 | iterall: ^1.0.2 881 | json5: ^2.1.1 882 | jsonwebtoken: ^8.0.0 883 | parseurl: ^1.3.2 884 | pg: ">=6.1.0 <9" 885 | pg-connection-string: ^2.0.0 886 | pg-sql2: 4.12.1 887 | postgraphile-core: 4.12.2 888 | subscriptions-transport-ws: ^0.9.18 889 | tslib: ^2.1.0 890 | ws: ^7.4.2 891 | bin: 892 | postgraphile: cli.js 893 | checksum: 0990af539171e509f6d4352e51ed5fb515b9c5694b507ede4be148066ce23e8c878756386e92688120259de324bdf84baf4dbeda5210d5b56e51f5fa190bafa3 894 | languageName: node 895 | linkType: hard 896 | 897 | "postgres-array@npm:~2.0.0": 898 | version: 2.0.0 899 | resolution: "postgres-array@npm:2.0.0" 900 | checksum: 0e1e659888147c5de579d229a2d95c0d83ebdbffc2b9396d890a123557708c3b758a0a97ed305ce7f58edfa961fa9f0bbcd1ea9f08b6e5df73322e683883c464 901 | languageName: node 902 | linkType: hard 903 | 904 | "postgres-bytea@npm:~1.0.0": 905 | version: 1.0.0 906 | resolution: "postgres-bytea@npm:1.0.0" 907 | checksum: d844ae4ca7a941b70e45cac1261a73ee8ed39d72d3d74ab1d645248185a1b7f0ac91a3c63d6159441020f4e1f7fe64689ac56536a307b31cef361e5187335090 908 | languageName: node 909 | linkType: hard 910 | 911 | "postgres-date@npm:~1.0.4": 912 | version: 1.0.7 913 | resolution: "postgres-date@npm:1.0.7" 914 | checksum: 5745001d47e51cd767e46bcb1710649cd705d91a24d42fa661c454b6dcbb7353c066a5047983c90a626cd3bbfea9e626cc6fa84a35ec57e5bbb28b49f78e13ed 915 | languageName: node 916 | linkType: hard 917 | 918 | "postgres-interval@npm:^1.1.0": 919 | version: 1.2.0 920 | resolution: "postgres-interval@npm:1.2.0" 921 | dependencies: 922 | xtend: ^4.0.0 923 | checksum: 746b71f93805ae33b03528e429dc624706d1f9b20ee81bf743263efb6a0cd79ae02a642a8a480dbc0f09547b4315ab7df6ce5ec0be77ed700bac42730f5c76b2 924 | languageName: node 925 | linkType: hard 926 | 927 | "prettier@npm:^2.6.2": 928 | version: 2.6.2 929 | resolution: "prettier@npm:2.6.2" 930 | bin: 931 | prettier: bin-prettier.js 932 | checksum: 48d08dde8e9fb1f5bccdd205baa7f192e9fc8bc98f86e1b97d919de804e28c806b0e6cc685e4a88211aa7987fa9668f30baae19580d87ced3ed0f2ec6572106f 933 | languageName: node 934 | linkType: hard 935 | 936 | "process-nextick-args@npm:~2.0.0": 937 | version: 2.0.1 938 | resolution: "process-nextick-args@npm:2.0.1" 939 | checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf 940 | languageName: node 941 | linkType: hard 942 | 943 | "pseudomap@npm:^1.0.2": 944 | version: 1.0.2 945 | resolution: "pseudomap@npm:1.0.2" 946 | checksum: 856c0aae0ff2ad60881168334448e898ad7a0e45fe7386d114b150084254c01e200c957cf378378025df4e052c7890c5bd933939b0e0d2ecfcc1dc2f0b2991f5 947 | languageName: node 948 | linkType: hard 949 | 950 | "qs@npm:6.10.3": 951 | version: 6.10.3 952 | resolution: "qs@npm:6.10.3" 953 | dependencies: 954 | side-channel: ^1.0.4 955 | checksum: 0fac5e6c7191d0295a96d0e83c851aeb015df7e990e4d3b093897d3ac6c94e555dbd0a599739c84d7fa46d7fee282d94ba76943983935cf33bba6769539b8019 956 | languageName: node 957 | linkType: hard 958 | 959 | "raw-body@npm:2.5.1": 960 | version: 2.5.1 961 | resolution: "raw-body@npm:2.5.1" 962 | dependencies: 963 | bytes: 3.1.2 964 | http-errors: 2.0.0 965 | iconv-lite: 0.4.24 966 | unpipe: 1.0.0 967 | checksum: 5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e 968 | languageName: node 969 | linkType: hard 970 | 971 | "readable-stream@npm:^2.0.2": 972 | version: 2.3.7 973 | resolution: "readable-stream@npm:2.3.7" 974 | dependencies: 975 | core-util-is: ~1.0.0 976 | inherits: ~2.0.3 977 | isarray: ~1.0.0 978 | process-nextick-args: ~2.0.0 979 | safe-buffer: ~5.1.1 980 | string_decoder: ~1.1.1 981 | util-deprecate: ~1.0.1 982 | checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 983 | languageName: node 984 | linkType: hard 985 | 986 | "replacestream@npm:^4.0.3": 987 | version: 4.0.3 988 | resolution: "replacestream@npm:4.0.3" 989 | dependencies: 990 | escape-string-regexp: ^1.0.3 991 | object-assign: ^4.0.1 992 | readable-stream: ^2.0.2 993 | checksum: ab9a48193eed4f30e24a659ed59235d96b0244b0b9e1dda0765483ea4d02f942172323ddb74395e82c1d03d2cbff983c6f72283d9d7184d0568943f8722411f1 994 | languageName: node 995 | linkType: hard 996 | 997 | "safe-buffer@npm:^5.0.1": 998 | version: 5.2.1 999 | resolution: "safe-buffer@npm:5.2.1" 1000 | checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 1001 | languageName: node 1002 | linkType: hard 1003 | 1004 | "safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": 1005 | version: 5.1.2 1006 | resolution: "safe-buffer@npm:5.1.2" 1007 | checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c 1008 | languageName: node 1009 | linkType: hard 1010 | 1011 | "safer-buffer@npm:>= 2.1.2 < 3": 1012 | version: 2.1.2 1013 | resolution: "safer-buffer@npm:2.1.2" 1014 | checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 1015 | languageName: node 1016 | linkType: hard 1017 | 1018 | "semver@npm:^5.6.0": 1019 | version: 5.7.1 1020 | resolution: "semver@npm:5.7.1" 1021 | bin: 1022 | semver: ./bin/semver 1023 | checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf 1024 | languageName: node 1025 | linkType: hard 1026 | 1027 | "semver@npm:^6.0.0": 1028 | version: 6.3.0 1029 | resolution: "semver@npm:6.3.0" 1030 | bin: 1031 | semver: ./bin/semver.js 1032 | checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 1033 | languageName: node 1034 | linkType: hard 1035 | 1036 | "setprototypeof@npm:1.2.0": 1037 | version: 1.2.0 1038 | resolution: "setprototypeof@npm:1.2.0" 1039 | checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 1040 | languageName: node 1041 | linkType: hard 1042 | 1043 | "side-channel@npm:^1.0.4": 1044 | version: 1.0.4 1045 | resolution: "side-channel@npm:1.0.4" 1046 | dependencies: 1047 | call-bind: ^1.0.0 1048 | get-intrinsic: ^1.0.2 1049 | object-inspect: ^1.9.0 1050 | checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 1051 | languageName: node 1052 | linkType: hard 1053 | 1054 | "split2@npm:^4.1.0": 1055 | version: 4.1.0 1056 | resolution: "split2@npm:4.1.0" 1057 | checksum: ec581597cb74c13cdfb5e2047543dd40cb1e8e9803c7b1e0c29ede05f2b4f049b2d6e7f2788a225d544549375719658b8f38e9366364dec35dc7a12edfda5ee5 1058 | languageName: node 1059 | linkType: hard 1060 | 1061 | "statuses@npm:2.0.1": 1062 | version: 2.0.1 1063 | resolution: "statuses@npm:2.0.1" 1064 | checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb 1065 | languageName: node 1066 | linkType: hard 1067 | 1068 | "statuses@npm:>= 1.5.0 < 2": 1069 | version: 1.5.0 1070 | resolution: "statuses@npm:1.5.0" 1071 | checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c 1072 | languageName: node 1073 | linkType: hard 1074 | 1075 | "string_decoder@npm:~1.1.1": 1076 | version: 1.1.1 1077 | resolution: "string_decoder@npm:1.1.1" 1078 | dependencies: 1079 | safe-buffer: ~5.1.0 1080 | checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b 1081 | languageName: node 1082 | linkType: hard 1083 | 1084 | "subscriptions-transport-ws@npm:^0.9.18": 1085 | version: 0.9.19 1086 | resolution: "subscriptions-transport-ws@npm:0.9.19" 1087 | dependencies: 1088 | backo2: ^1.0.2 1089 | eventemitter3: ^3.1.0 1090 | iterall: ^1.2.1 1091 | symbol-observable: ^1.0.4 1092 | ws: ^5.2.0 || ^6.0.0 || ^7.0.0 1093 | peerDependencies: 1094 | graphql: ">=0.10.0" 1095 | checksum: 6979b36e03c0a48e33836cb412941e41bae8743767dff2aa453159cfffa983b879cc80cd4e744e82afbf11062c66899c37f5dca0281253ee240098ada0078533 1096 | languageName: node 1097 | linkType: hard 1098 | 1099 | "supports-color@npm:^5.3.0": 1100 | version: 5.5.0 1101 | resolution: "supports-color@npm:5.5.0" 1102 | dependencies: 1103 | has-flag: ^3.0.0 1104 | checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac 1105 | languageName: node 1106 | linkType: hard 1107 | 1108 | "symbol-observable@npm:^1.0.4": 1109 | version: 1.2.0 1110 | resolution: "symbol-observable@npm:1.2.0" 1111 | checksum: 48ffbc22e3d75f9853b3ff2ae94a44d84f386415110aea5effc24d84c502e03a4a6b7a8f75ebaf7b585780bda34eb5d6da3121f826a6f93398429d30032971b6 1112 | languageName: node 1113 | linkType: hard 1114 | 1115 | "toidentifier@npm:1.0.1": 1116 | version: 1.0.1 1117 | resolution: "toidentifier@npm:1.0.1" 1118 | checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 1119 | languageName: node 1120 | linkType: hard 1121 | 1122 | "tslib@npm:^2.0.1, tslib@npm:^2.1.0": 1123 | version: 2.3.1 1124 | resolution: "tslib@npm:2.3.1" 1125 | checksum: de17a98d4614481f7fcb5cd53ffc1aaf8654313be0291e1bfaee4b4bb31a20494b7d218ff2e15017883e8ea9626599b3b0e0229c18383ba9dce89da2adf15cb9 1126 | languageName: node 1127 | linkType: hard 1128 | 1129 | "type-is@npm:~1.6.18": 1130 | version: 1.6.18 1131 | resolution: "type-is@npm:1.6.18" 1132 | dependencies: 1133 | media-typer: 0.3.0 1134 | mime-types: ~2.1.24 1135 | checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 1136 | languageName: node 1137 | linkType: hard 1138 | 1139 | "typescript@npm:^4.6.3": 1140 | version: 4.6.3 1141 | resolution: "typescript@npm:4.6.3" 1142 | bin: 1143 | tsc: bin/tsc 1144 | tsserver: bin/tsserver 1145 | checksum: 255bb26c8cb846ca689dd1c3a56587af4f69055907aa2c154796ea28ee0dea871535b1c78f85a6212c77f2657843a269c3a742d09d81495b97b914bf7920415b 1146 | languageName: node 1147 | linkType: hard 1148 | 1149 | "typescript@patch:typescript@^4.6.3#~builtin": 1150 | version: 4.6.3 1151 | resolution: "typescript@patch:typescript@npm%3A4.6.3#~builtin::version=4.6.3&hash=bda367" 1152 | bin: 1153 | tsc: bin/tsc 1154 | tsserver: bin/tsserver 1155 | checksum: 6bf45caf847062420592e711bc9c28bf5f9a9a7fa8245343b81493e4ededae33f1774009d1234d911422d1646a2c839f44e1a23ecb111b40a60ac2ea4c1482a8 1156 | languageName: node 1157 | linkType: hard 1158 | 1159 | "unpipe@npm:1.0.0, unpipe@npm:~1.0.0": 1160 | version: 1.0.0 1161 | resolution: "unpipe@npm:1.0.0" 1162 | checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 1163 | languageName: node 1164 | linkType: hard 1165 | 1166 | "util-deprecate@npm:~1.0.1": 1167 | version: 1.0.2 1168 | resolution: "util-deprecate@npm:1.0.2" 1169 | checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 1170 | languageName: node 1171 | linkType: hard 1172 | 1173 | "wrappy@npm:1": 1174 | version: 1.0.2 1175 | resolution: "wrappy@npm:1.0.2" 1176 | checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 1177 | languageName: node 1178 | linkType: hard 1179 | 1180 | "ws@npm:^5.2.0 || ^6.0.0 || ^7.0.0, ws@npm:^7.4.2": 1181 | version: 7.5.7 1182 | resolution: "ws@npm:7.5.7" 1183 | peerDependencies: 1184 | bufferutil: ^4.0.1 1185 | utf-8-validate: ^5.0.2 1186 | peerDependenciesMeta: 1187 | bufferutil: 1188 | optional: true 1189 | utf-8-validate: 1190 | optional: true 1191 | checksum: 5c1f669a166fb57560b4e07f201375137fa31d9186afde78b1508926345ce546332f109081574ddc4e38cc474c5406b5fc71c18d71eb75f6e2d2245576976cba 1192 | languageName: node 1193 | linkType: hard 1194 | 1195 | "xtend@npm:^4.0.0": 1196 | version: 4.0.2 1197 | resolution: "xtend@npm:4.0.2" 1198 | checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a 1199 | languageName: node 1200 | linkType: hard 1201 | 1202 | "yallist@npm:^2.1.2": 1203 | version: 2.1.2 1204 | resolution: "yallist@npm:2.1.2" 1205 | checksum: 9ba99409209f485b6fcb970330908a6d41fa1c933f75e08250316cce19383179a6b70a7e0721b89672ebb6199cc377bf3e432f55100da6a7d6e11902b0a642cb 1206 | languageName: node 1207 | linkType: hard 1208 | 1209 | "yallist@npm:^3.0.2": 1210 | version: 3.1.1 1211 | resolution: "yallist@npm:3.1.1" 1212 | checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d 1213 | languageName: node 1214 | linkType: hard 1215 | --------------------------------------------------------------------------------