diff --git a/package.json b/package.json index c403c1411..96b7921fd 100644 --- a/package.json +++ b/package.json @@ -114,8 +114,6 @@ "@types/node": "^20.14.10", "@typescript-eslint/eslint-plugin": "^7.16.0", "@typescript-eslint/parser": "^7.16.0", - "apollo-server-express": "^3.13.0", - "body-parser": "^1.20.2", "doctoc": "^2.2.1", "dripip": "^0.10.0", "eslint": "^9.6.0", @@ -126,7 +124,6 @@ "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-tsdoc": "^0.3.0", "eslint-typescript": "^1.1.0", - "express": "^4.19.2", "get-port": "^7.1.0", "graphql": "^16.9.0", "graphql-scalars": "^1.23.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index beef9b0be..a4ff3a7fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,12 +63,6 @@ importers: '@typescript-eslint/parser': specifier: ^7.16.0 version: 7.16.0(eslint@9.6.0)(typescript@5.5.3) - apollo-server-express: - specifier: ^3.13.0 - version: 3.13.0(express@4.19.2)(graphql@16.9.0) - body-parser: - specifier: ^1.20.2 - version: 1.20.2 doctoc: specifier: ^2.2.1 version: 2.2.1 @@ -99,9 +93,6 @@ importers: eslint-typescript: specifier: ^1.1.0 version: 1.1.0(eslint@9.6.0)(prettier@3.3.2) - express: - specifier: ^4.19.2 - version: 4.19.2 get-port: specifier: ^7.1.0 version: 7.1.0 @@ -154,68 +145,6 @@ packages: '@andrewbranch/untar.js@1.0.3': resolution: {integrity: sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==} - '@apollo/protobufjs@1.2.6': - resolution: {integrity: sha512-Wqo1oSHNUj/jxmsVp4iR3I480p6qdqHikn38lKrFhfzcDJ7lwd7Ck7cHRl4JE81tWNArl77xhnG/OkZhxKBYOw==} - hasBin: true - - '@apollo/protobufjs@1.2.7': - resolution: {integrity: sha512-Lahx5zntHPZia35myYDBRuF58tlwPskwHc5CWBZC/4bMKB6siTBWwtMrkqXcsNwQiFSzSx5hKdRPUmemrEp3Gg==} - hasBin: true - - '@apollo/usage-reporting-protobuf@4.1.1': - resolution: {integrity: sha512-u40dIUePHaSKVshcedO7Wp+mPiZsaU6xjv9J+VyxpoU/zL6Jle+9zWeG98tr/+SZ0nZ4OXhrbb8SNr0rAPpIDA==} - - '@apollo/utils.dropunuseddefinitions@1.1.0': - resolution: {integrity: sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==} - engines: {node: '>=12.13.0'} - peerDependencies: - graphql: 14.x || 15.x || 16.x - - '@apollo/utils.keyvaluecache@1.0.2': - resolution: {integrity: sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg==} - - '@apollo/utils.logger@1.0.1': - resolution: {integrity: sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA==} - - '@apollo/utils.printwithreducedwhitespace@1.1.0': - resolution: {integrity: sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==} - engines: {node: '>=12.13.0'} - peerDependencies: - graphql: 14.x || 15.x || 16.x - - '@apollo/utils.removealiases@1.0.0': - resolution: {integrity: sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==} - engines: {node: '>=12.13.0'} - peerDependencies: - graphql: 14.x || 15.x || 16.x - - '@apollo/utils.sortast@1.1.0': - resolution: {integrity: sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==} - engines: {node: '>=12.13.0'} - peerDependencies: - graphql: 14.x || 15.x || 16.x - - '@apollo/utils.stripsensitiveliterals@1.2.0': - resolution: {integrity: sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==} - engines: {node: '>=12.13.0'} - peerDependencies: - graphql: 14.x || 15.x || 16.x - - '@apollo/utils.usagereporting@1.0.1': - resolution: {integrity: sha512-6dk+0hZlnDbahDBB2mP/PZ5ybrtCJdLMbeNJD+TJpKyZmSY6bA3SjI8Cr2EM9QA+AdziywuWg+SgbWUF3/zQqQ==} - engines: {node: '>=12.13.0'} - peerDependencies: - graphql: 14.x || 15.x || 16.x - - '@apollographql/apollo-tools@0.5.4': - resolution: {integrity: sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==} - engines: {node: '>=8', npm: '>=6'} - peerDependencies: - graphql: ^14.2.1 || ^15.0.0 || ^16.0.0 - - '@apollographql/graphql-playground-html@1.6.29': - resolution: {integrity: sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==} - '@arethetypeswrong/cli@0.16.0': resolution: {integrity: sha512-Vn3ihwlhueIvyJ6V3PKS8zwll9TId5Radvl3GS58ITimafJNoYRribKCoymYFiFS3jH6TspM30KhhiMvnMGvNQ==} engines: {node: '>=18'} @@ -453,59 +382,24 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/merge@8.3.1': - resolution: {integrity: sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/merge@8.4.2': - resolution: {integrity: sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/merge@9.0.4': resolution: {integrity: sha512-MivbDLUQ+4Q8G/Hp/9V72hbn810IJDEZQ57F01sHnlrrijyadibfVhaQfW/pNH+9T/l8ySZpaR/DpL5i+ruZ+g==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/mock@8.7.20': - resolution: {integrity: sha512-ljcHSJWjC/ZyzpXd5cfNhPI7YljRVvabKHPzKjEs5ElxWu2cdlLGvyNYepApXDsM/OJG/2xuhGM+9GWu5gEAPQ==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/schema@10.0.4': resolution: {integrity: sha512-HuIwqbKxPaJujox25Ra4qwz0uQzlpsaBOzO6CVfzB/MemZdd+Gib8AIvfhQArK0YIN40aDran/yi+E5Xf0mQww==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/schema@8.5.1': - resolution: {integrity: sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/schema@9.0.19': - resolution: {integrity: sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/utils@10.3.1': resolution: {integrity: sha512-Yhk1F0MNk4/ctgl3d0DKq++ZPovvZuh1ixWuUEVAxrFloYOAVwJ+rvGI1lsopArdJly8QXClT9lkvOxQszMw/w==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/utils@8.9.0': - resolution: {integrity: sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/utils@9.2.1': - resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-typed-document-node/core@3.2.0': resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: @@ -531,9 +425,6 @@ packages: resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} engines: {node: '>=18.18'} - '@josephg/resolvable@1.0.1': - resolution: {integrity: sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==} - '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -687,36 +578,6 @@ packages: '@pothos/core': 4.0.0 graphql: ^16.8.1 - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@repeaterjs/repeater@3.0.6': resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} @@ -816,21 +677,12 @@ packages: '@tsconfig/strictest@2.0.5': resolution: {integrity: sha512-ec4tjL2Rr0pkZ5hww65c+EEPYwxOi4Ryv+0MtjeaSQRJyq322Q27eOQiFbuNgw2hpL4hB1/W/HBGk3VKS43osg==} - '@types/accepts@1.3.7': - resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} - - '@types/body-parser@1.19.2': - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} - '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - '@types/cors@2.8.12': - resolution: {integrity: sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==} - '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -846,15 +698,9 @@ packages: '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - '@types/express-serve-static-core@4.17.31': - resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} - '@types/express-serve-static-core@4.19.5': resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} - '@types/express@4.17.14': - resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} - '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} @@ -870,9 +716,6 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/long@4.0.2': - resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - '@types/mdast@3.0.15': resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} @@ -882,9 +725,6 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@10.17.60': - resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} - '@types/node@20.14.10': resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==} @@ -1049,10 +889,6 @@ packages: resolution: {integrity: sha512-KT9qKLmbuWSuFv0Vg4JyK2vN2+vSuQPeEa25xpndYFROAIZntYe7e2BlWAk9l7IrgnV+M4bCVhjrAwwRsaCeiA==} engines: {node: '>=16.0.0'} - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1098,54 +934,6 @@ packages: ansicolors@0.3.2: resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} - apollo-datasource@3.3.2: - resolution: {integrity: sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==} - engines: {node: '>=12.0'} - deprecated: The `apollo-datasource` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. - - apollo-reporting-protobuf@3.4.0: - resolution: {integrity: sha512-h0u3EbC/9RpihWOmcSsvTW2O6RXVaD/mPEjfrPkxRPTEPWqncsgOoRJw+wih4OqfH3PvTJvoEIf4LwKrUaqWog==} - deprecated: The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. - - apollo-server-core@3.13.0: - resolution: {integrity: sha512-v/g6DR6KuHn9DYSdtQijz8dLOkP78I5JSVJzPkARhDbhpH74QNwrQ2PP2URAPPEDJ2EeZNQDX8PvbYkAKqg+kg==} - engines: {node: '>=12.0'} - peerDependencies: - graphql: ^15.3.0 || ^16.0.0 - - apollo-server-env@4.2.1: - resolution: {integrity: sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==} - engines: {node: '>=12.0'} - deprecated: The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. - - apollo-server-errors@3.3.1: - resolution: {integrity: sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==} - engines: {node: '>=12.0'} - deprecated: The `apollo-server-errors` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. - peerDependencies: - graphql: ^15.3.0 || ^16.0.0 - - apollo-server-express@3.13.0: - resolution: {integrity: sha512-iSxICNbDUyebOuM8EKb3xOrpIwOQgKxGbR2diSr4HP3IW8T3njKFOoMce50vr+moOCe1ev8BnLcw9SNbuUtf7g==} - engines: {node: '>=12.0'} - peerDependencies: - express: ^4.17.1 - graphql: ^15.3.0 || ^16.0.0 - - apollo-server-plugin-base@3.7.2: - resolution: {integrity: sha512-wE8dwGDvBOGehSsPTRZ8P/33Jan6/PmL0y0aN/1Z5a5GcbFhDaaJCjK5cav6npbbGL2DPKK0r6MPXi3k3N45aw==} - engines: {node: '>=12.0'} - deprecated: The `apollo-server-plugin-base` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. - peerDependencies: - graphql: ^15.3.0 || ^16.0.0 - - apollo-server-types@3.8.0: - resolution: {integrity: sha512-ZI/8rTE4ww8BHktsVpb91Sdq7Cb71rdSkXELSwdSR0eXu600/sY+1UXhTWdiJvk+Eq5ljqoHLwLbY2+Clq2b9A==} - engines: {node: '>=12.0'} - deprecated: The `apollo-server-types` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. - peerDependencies: - graphql: ^15.3.0 || ^16.0.0 - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1153,9 +941,6 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - array-includes@3.1.8: resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} @@ -1186,9 +971,6 @@ packages: async-lock@1.4.1: resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} - async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1217,10 +999,6 @@ packages: bignumber.js@9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1235,10 +1013,6 @@ packages: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -1316,9 +1090,6 @@ packages: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - comment-parser@1.1.5: resolution: {integrity: sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==} engines: {node: '>= 10.0.0'} @@ -1330,28 +1101,9 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - crc-32@1.2.2: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} @@ -1365,9 +1117,6 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} - cssfilter@0.0.10: - resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} - cssstyle@4.0.1: resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} engines: {node: '>=18'} @@ -1443,17 +1192,9 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - diff3@0.0.3: resolution: {integrity: sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==} @@ -1497,9 +1238,6 @@ packages: ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - emoji-regex@10.1.0: resolution: {integrity: sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==} @@ -1509,10 +1247,6 @@ packages: emojilib@2.4.0: resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -1559,9 +1293,6 @@ packages: engines: {node: '>=12'} hasBin: true - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1779,18 +1510,10 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} - engines: {node: '>= 0.10.0'} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -1837,10 +1560,6 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} - find-up@2.1.0: resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} engines: {node: '>=4'} @@ -1874,14 +1593,6 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} @@ -2062,10 +1773,6 @@ packages: htmlparser2@7.2.0: resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -2082,10 +1789,6 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -2124,10 +1827,6 @@ packages: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} @@ -2360,19 +2059,9 @@ packages: lodash.snakecase@4.1.1: resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - loglevel@1.9.1: - resolution: {integrity: sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==} - engines: {node: '>= 0.6.0'} - - long@4.0.0: - resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} - longest-streak@2.0.4: resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} @@ -2382,14 +2071,6 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru-cache@7.13.1: - resolution: {integrity: sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==} - engines: {node: '>=12'} - magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} @@ -2440,13 +2121,6 @@ packages: mdast-util-to-string@2.0.0: resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -2454,10 +2128,6 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - micromark-extension-footnote@0.3.2: resolution: {integrity: sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==} @@ -2497,11 +2167,6 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -2548,13 +2213,6 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - node-emoji@2.1.3: resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} engines: {node: '>=18'} @@ -2594,10 +2252,6 @@ packages: oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - object-inspect@1.13.2: resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} engines: {node: '>= 0.4'} @@ -2614,10 +2268,6 @@ packages: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -2675,10 +2325,6 @@ packages: parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -2702,9 +2348,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} @@ -2763,10 +2406,6 @@ packages: engines: {node: '>=14'} hasBin: true - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} @@ -2779,10 +2418,6 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} - qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} @@ -2796,14 +2431,6 @@ packages: ramda@0.27.2: resolution: {integrity: sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==} - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - read-pkg-up@3.0.0: resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} engines: {node: '>=4'} @@ -2877,10 +2504,6 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -2939,14 +2562,6 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -2955,9 +2570,6 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - sha.js@2.4.11: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} hasBin: true @@ -3022,10 +2634,6 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} @@ -3112,10 +2720,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - tough-cookie@2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} @@ -3184,10 +2788,6 @@ packages: resolution: {integrity: sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==} engines: {node: '>=16'} - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} @@ -3269,10 +2869,6 @@ packages: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - update-section@0.3.3: resolution: {integrity: sha512-BpRZMZpgXLuTiKeiu7kK0nIPwGdyrqrs6EDSaXtjD/aQ2T+qVo9a5hRC3HN3iJjCMxNT/VxoLGQ7E/OzE5ucnw==} @@ -3288,19 +2884,11 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. hasBin: true - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -3308,18 +2896,10 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - value-or-promise@1.0.11: - resolution: {integrity: sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==} - engines: {node: '>=12'} - value-or-promise@1.0.12: resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} engines: {node: '>=12'} - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - verror@1.10.0: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} @@ -3477,14 +3057,6 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - xss@1.0.15: - resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} - engines: {node: '>= 0.10.0'} - hasBin: true - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -3504,87 +3076,6 @@ snapshots: '@andrewbranch/untar.js@1.0.3': {} - '@apollo/protobufjs@1.2.6': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/long': 4.0.2 - '@types/node': 10.17.60 - long: 4.0.0 - - '@apollo/protobufjs@1.2.7': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/long': 4.0.2 - long: 4.0.0 - - '@apollo/usage-reporting-protobuf@4.1.1': - dependencies: - '@apollo/protobufjs': 1.2.7 - - '@apollo/utils.dropunuseddefinitions@1.1.0(graphql@16.9.0)': - dependencies: - graphql: 16.9.0 - - '@apollo/utils.keyvaluecache@1.0.2': - dependencies: - '@apollo/utils.logger': 1.0.1 - lru-cache: 7.13.1 - - '@apollo/utils.logger@1.0.1': {} - - '@apollo/utils.printwithreducedwhitespace@1.1.0(graphql@16.9.0)': - dependencies: - graphql: 16.9.0 - - '@apollo/utils.removealiases@1.0.0(graphql@16.9.0)': - dependencies: - graphql: 16.9.0 - - '@apollo/utils.sortast@1.1.0(graphql@16.9.0)': - dependencies: - graphql: 16.9.0 - lodash.sortby: 4.7.0 - - '@apollo/utils.stripsensitiveliterals@1.2.0(graphql@16.9.0)': - dependencies: - graphql: 16.9.0 - - '@apollo/utils.usagereporting@1.0.1(graphql@16.9.0)': - dependencies: - '@apollo/usage-reporting-protobuf': 4.1.1 - '@apollo/utils.dropunuseddefinitions': 1.1.0(graphql@16.9.0) - '@apollo/utils.printwithreducedwhitespace': 1.1.0(graphql@16.9.0) - '@apollo/utils.removealiases': 1.0.0(graphql@16.9.0) - '@apollo/utils.sortast': 1.1.0(graphql@16.9.0) - '@apollo/utils.stripsensitiveliterals': 1.2.0(graphql@16.9.0) - graphql: 16.9.0 - - '@apollographql/apollo-tools@0.5.4(graphql@16.9.0)': - dependencies: - graphql: 16.9.0 - - '@apollographql/graphql-playground-html@1.6.29': - dependencies: - xss: 1.0.15 - '@arethetypeswrong/cli@0.16.0': dependencies: '@arethetypeswrong/core': 0.15.1 @@ -3759,32 +3250,12 @@ snapshots: tslib: 2.6.3 value-or-promise: 1.0.12 - '@graphql-tools/merge@8.3.1(graphql@16.9.0)': - dependencies: - '@graphql-tools/utils': 8.9.0(graphql@16.9.0) - graphql: 16.9.0 - tslib: 2.6.3 - - '@graphql-tools/merge@8.4.2(graphql@16.9.0)': - dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.9.0) - graphql: 16.9.0 - tslib: 2.6.3 - '@graphql-tools/merge@9.0.4(graphql@16.9.0)': dependencies: '@graphql-tools/utils': 10.3.1(graphql@16.9.0) graphql: 16.9.0 tslib: 2.6.3 - '@graphql-tools/mock@8.7.20(graphql@16.9.0)': - dependencies: - '@graphql-tools/schema': 9.0.19(graphql@16.9.0) - '@graphql-tools/utils': 9.2.1(graphql@16.9.0) - fast-json-stable-stringify: 2.1.0 - graphql: 16.9.0 - tslib: 2.6.3 - '@graphql-tools/schema@10.0.4(graphql@16.9.0)': dependencies: '@graphql-tools/merge': 9.0.4(graphql@16.9.0) @@ -3793,22 +3264,6 @@ snapshots: tslib: 2.6.3 value-or-promise: 1.0.12 - '@graphql-tools/schema@8.5.1(graphql@16.9.0)': - dependencies: - '@graphql-tools/merge': 8.3.1(graphql@16.9.0) - '@graphql-tools/utils': 8.9.0(graphql@16.9.0) - graphql: 16.9.0 - tslib: 2.6.3 - value-or-promise: 1.0.11 - - '@graphql-tools/schema@9.0.19(graphql@16.9.0)': - dependencies: - '@graphql-tools/merge': 8.4.2(graphql@16.9.0) - '@graphql-tools/utils': 9.2.1(graphql@16.9.0) - graphql: 16.9.0 - tslib: 2.6.3 - value-or-promise: 1.0.12 - '@graphql-tools/utils@10.3.1(graphql@16.9.0)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) @@ -3817,17 +3272,6 @@ snapshots: graphql: 16.9.0 tslib: 2.6.3 - '@graphql-tools/utils@8.9.0(graphql@16.9.0)': - dependencies: - graphql: 16.9.0 - tslib: 2.6.3 - - '@graphql-tools/utils@9.2.1(graphql@16.9.0)': - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) - graphql: 16.9.0 - tslib: 2.6.3 - '@graphql-typed-document-node/core@3.2.0(graphql@16.9.0)': dependencies: graphql: 16.9.0 @@ -3852,8 +3296,6 @@ snapshots: '@humanwhocodes/retry@0.3.0': {} - '@josephg/resolvable@1.0.1': {} - '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -4116,29 +3558,6 @@ snapshots: '@pothos/core': 4.0.0(graphql@16.9.0) graphql: 16.9.0 - '@protobufjs/aspromise@1.1.2': {} - - '@protobufjs/base64@1.1.2': {} - - '@protobufjs/codegen@2.0.4': {} - - '@protobufjs/eventemitter@1.1.0': {} - - '@protobufjs/fetch@1.1.0': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 - - '@protobufjs/float@1.0.2': {} - - '@protobufjs/inquire@1.1.0': {} - - '@protobufjs/path@1.1.2': {} - - '@protobufjs/pool@1.1.0': {} - - '@protobufjs/utf8@1.1.0': {} - '@repeaterjs/repeater@3.0.6': {} '@rollup/rollup-android-arm-eabi@4.18.1': @@ -4211,15 +3630,6 @@ snapshots: '@tsconfig/strictest@2.0.5': {} - '@types/accepts@1.3.7': - dependencies: - '@types/node': 20.14.10 - - '@types/body-parser@1.19.2': - dependencies: - '@types/connect': 3.4.38 - '@types/node': 20.14.10 - '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 @@ -4229,8 +3639,6 @@ snapshots: dependencies: '@types/node': 20.14.10 - '@types/cors@2.8.12': {} - '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 @@ -4248,12 +3656,6 @@ snapshots: '@types/estree@1.0.5': {} - '@types/express-serve-static-core@4.17.31': - dependencies: - '@types/node': 20.14.10 - '@types/qs': 6.9.15 - '@types/range-parser': 1.2.7 - '@types/express-serve-static-core@4.19.5': dependencies: '@types/node': 20.14.10 @@ -4261,13 +3663,6 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 0.17.4 - '@types/express@4.17.14': - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.17.31 - '@types/qs': 6.9.15 - '@types/serve-static': 1.15.7 - '@types/express@4.17.21': dependencies: '@types/body-parser': 1.19.5 @@ -4283,8 +3678,6 @@ snapshots: '@types/json5@0.0.29': {} - '@types/long@4.0.2': {} - '@types/mdast@3.0.15': dependencies: '@types/unist': 2.0.10 @@ -4293,8 +3686,6 @@ snapshots: '@types/ms@0.7.34': {} - '@types/node@10.17.60': {} - '@types/node@20.14.10': dependencies: undici-types: 5.26.5 @@ -4524,11 +3915,6 @@ snapshots: '@whatwg-node/fetch': 0.9.18 tslib: 2.6.3 - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 @@ -4578,92 +3964,6 @@ snapshots: ansicolors@0.3.2: {} - apollo-datasource@3.3.2: - dependencies: - '@apollo/utils.keyvaluecache': 1.0.2 - apollo-server-env: 4.2.1 - transitivePeerDependencies: - - encoding - - apollo-reporting-protobuf@3.4.0: - dependencies: - '@apollo/protobufjs': 1.2.6 - - apollo-server-core@3.13.0(graphql@16.9.0): - dependencies: - '@apollo/utils.keyvaluecache': 1.0.2 - '@apollo/utils.logger': 1.0.1 - '@apollo/utils.usagereporting': 1.0.1(graphql@16.9.0) - '@apollographql/apollo-tools': 0.5.4(graphql@16.9.0) - '@apollographql/graphql-playground-html': 1.6.29 - '@graphql-tools/mock': 8.7.20(graphql@16.9.0) - '@graphql-tools/schema': 8.5.1(graphql@16.9.0) - '@josephg/resolvable': 1.0.1 - apollo-datasource: 3.3.2 - apollo-reporting-protobuf: 3.4.0 - apollo-server-env: 4.2.1 - apollo-server-errors: 3.3.1(graphql@16.9.0) - apollo-server-plugin-base: 3.7.2(graphql@16.9.0) - apollo-server-types: 3.8.0(graphql@16.9.0) - async-retry: 1.3.3 - fast-json-stable-stringify: 2.1.0 - graphql: 16.9.0 - graphql-tag: 2.12.6(graphql@16.9.0) - loglevel: 1.9.1 - lru-cache: 6.0.0 - node-abort-controller: 3.1.1 - sha.js: 2.4.11 - uuid: 9.0.1 - whatwg-mimetype: 3.0.0 - transitivePeerDependencies: - - encoding - - apollo-server-env@4.2.1: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - apollo-server-errors@3.3.1(graphql@16.9.0): - dependencies: - graphql: 16.9.0 - - apollo-server-express@3.13.0(express@4.19.2)(graphql@16.9.0): - dependencies: - '@types/accepts': 1.3.7 - '@types/body-parser': 1.19.2 - '@types/cors': 2.8.12 - '@types/express': 4.17.14 - '@types/express-serve-static-core': 4.17.31 - accepts: 1.3.8 - apollo-server-core: 3.13.0(graphql@16.9.0) - apollo-server-types: 3.8.0(graphql@16.9.0) - body-parser: 1.20.2 - cors: 2.8.5 - express: 4.19.2 - graphql: 16.9.0 - parseurl: 1.3.3 - transitivePeerDependencies: - - encoding - - supports-color - - apollo-server-plugin-base@3.7.2(graphql@16.9.0): - dependencies: - apollo-server-types: 3.8.0(graphql@16.9.0) - graphql: 16.9.0 - transitivePeerDependencies: - - encoding - - apollo-server-types@3.8.0(graphql@16.9.0): - dependencies: - '@apollo/utils.keyvaluecache': 1.0.2 - '@apollo/utils.logger': 1.0.1 - apollo-reporting-protobuf: 3.4.0 - apollo-server-env: 4.2.1 - graphql: 16.9.0 - transitivePeerDependencies: - - encoding - argparse@2.0.1: {} array-buffer-byte-length@1.0.1: @@ -4671,8 +3971,6 @@ snapshots: call-bind: 1.0.7 is-array-buffer: 3.0.4 - array-flatten@1.1.1: {} - array-includes@3.1.8: dependencies: call-bind: 1.0.7 @@ -4712,10 +4010,6 @@ snapshots: async-lock@1.4.1: {} - async-retry@1.3.3: - dependencies: - retry: 0.13.1 - asynckit@0.4.0: {} available-typed-arrays@1.0.7: @@ -4738,23 +4032,6 @@ snapshots: bignumber.js@9.1.2: {} - body-parser@1.20.2: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -4772,8 +4049,6 @@ snapshots: dependencies: streamsearch: 1.1.0 - bytes@3.1.2: {} - cac@6.7.14: {} call-bind@1.0.7: @@ -4844,31 +4119,14 @@ snapshots: commander@10.0.1: {} - commander@2.20.3: {} - comment-parser@1.1.5: {} common-tags@1.8.2: {} concat-map@0.0.1: {} - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - content-type@1.0.5: {} - - cookie-signature@1.0.6: {} - - cookie@0.6.0: {} - core-util-is@1.0.2: {} - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - crc-32@1.2.2: {} cross-inspect@1.0.0: @@ -4881,8 +4139,6 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - cssfilter@0.0.10: {} - cssstyle@4.0.1: dependencies: rrweb-cssom: 0.6.0 @@ -4950,12 +4206,8 @@ snapshots: delayed-stream@1.0.0: {} - depd@2.0.0: {} - deprecation@2.3.1: {} - destroy@1.2.0: {} - diff3@0.0.3: {} dir-glob@3.0.1: @@ -5035,16 +4287,12 @@ snapshots: jsbn: 0.1.1 safer-buffer: 2.1.2 - ee-first@1.1.1: {} - emoji-regex@10.1.0: {} emoji-regex@8.0.0: {} emojilib@2.4.0: {} - encodeurl@1.0.2: {} - entities@2.2.0: {} entities@3.0.1: {} @@ -5156,8 +4404,6 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - escape-html@1.0.3: {} - escape-string-regexp@4.0.0: {} eslint-config-prettier@6.0.0(eslint@9.6.0): @@ -5438,8 +4684,6 @@ snapshots: esutils@2.0.3: {} - etag@1.8.1: {} - execa@8.0.1: dependencies: cross-spawn: 7.0.3 @@ -5452,42 +4696,6 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - express@4.19.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.2 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.6.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.11.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - extend@3.0.2: {} extsprintf@1.3.0: {} @@ -5532,18 +4740,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.2.0: - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - find-up@2.1.0: dependencies: locate-path: 2.0.0 @@ -5580,10 +4776,6 @@ snapshots: format@0.2.2: {} - forwarded@0.2.0: {} - - fresh@0.5.2: {} - fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 @@ -5775,14 +4967,6 @@ snapshots: domutils: 2.8.0 entities: 3.0.1 - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 @@ -5805,10 +4989,6 @@ snapshots: human-signals@5.0.0: {} - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 @@ -5843,8 +5023,6 @@ snapshots: hasown: 2.0.2 side-channel: 1.0.6 - ipaddr.js@1.9.1: {} - is-alphabetical@1.0.4: {} is-alphanumerical@1.0.4: @@ -6073,14 +5251,8 @@ snapshots: lodash.snakecase@4.1.1: {} - lodash.sortby@4.7.0: {} - lodash@4.17.21: {} - loglevel@1.9.1: {} - - long@4.0.0: {} - longest-streak@2.0.4: {} loupe@3.1.1: @@ -6089,12 +5261,6 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - lru-cache@7.13.1: {} - magic-string@0.30.10: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -6184,16 +5350,10 @@ snapshots: mdast-util-to-string@2.0.0: {} - media-typer@0.3.0: {} - - merge-descriptors@1.0.1: {} - merge-stream@2.0.0: {} merge2@1.4.1: {} - methods@1.1.2: {} - micromark-extension-footnote@0.3.2: dependencies: micromark: 2.11.4 @@ -6259,8 +5419,6 @@ snapshots: dependencies: mime-db: 1.52.0 - mime@1.6.0: {} - mimic-fn@4.0.0: {} mimic-response@3.1.0: {} @@ -6295,10 +5453,6 @@ snapshots: natural-compare@1.4.0: {} - negotiator@0.6.3: {} - - node-abort-controller@3.1.1: {} - node-emoji@2.1.3: dependencies: '@sindresorhus/is': 4.6.0 @@ -6338,8 +5492,6 @@ snapshots: oauth-sign@0.9.0: {} - object-assign@4.1.1: {} - object-inspect@1.13.2: {} object-keys@1.1.1: {} @@ -6357,10 +5509,6 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -6427,8 +5575,6 @@ snapshots: dependencies: entities: 4.5.0 - parseurl@1.3.3: {} - path-exists@3.0.0: {} path-exists@4.0.0: {} @@ -6441,8 +5587,6 @@ snapshots: path-parse@1.0.7: {} - path-to-regexp@0.1.7: {} - path-type@3.0.0: dependencies: pify: 3.0.0 @@ -6483,11 +5627,6 @@ snapshots: prettier@3.3.2: {} - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - psl@1.9.0: {} publint@0.2.8: @@ -6498,10 +5637,6 @@ snapshots: punycode@2.3.1: {} - qs@6.11.0: - dependencies: - side-channel: 1.0.6 - qs@6.5.3: {} querystringify@2.2.0: {} @@ -6510,15 +5645,6 @@ snapshots: ramda@0.27.2: {} - range-parser@1.2.1: {} - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - read-pkg-up@3.0.0: dependencies: find-up: 2.1.0 @@ -6619,8 +5745,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - retry@0.13.1: {} - reusify@1.0.4: {} rimraf@2.7.1: @@ -6688,33 +5812,6 @@ snapshots: semver@7.6.2: {} - send@0.18.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - serve-static@1.15.0: - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.18.0 - transitivePeerDependencies: - - supports-color - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -6731,8 +5828,6 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - setprototypeof@1.2.0: {} - sha.js@2.4.11: dependencies: inherits: 2.0.4 @@ -6807,8 +5902,6 @@ snapshots: stackback@0.0.2: {} - statuses@2.0.1: {} - std-env@3.7.0: {} streamsearch@1.1.0: {} @@ -6887,8 +5980,6 @@ snapshots: dependencies: is-number: 7.0.0 - toidentifier@1.0.1: {} - tough-cookie@2.5.0: dependencies: psl: 1.9.0 @@ -6958,11 +6049,6 @@ snapshots: type-fest@4.21.0: {} - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 @@ -7061,8 +6147,6 @@ snapshots: universalify@0.2.0: {} - unpipe@1.0.0: {} - update-section@0.3.3: {} uri-js@4.4.1: @@ -7078,12 +6162,8 @@ snapshots: util-deprecate@1.0.2: {} - utils-merge@1.0.1: {} - uuid@3.4.0: {} - uuid@9.0.1: {} - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -7091,12 +6171,8 @@ snapshots: validate-npm-package-name@5.0.1: {} - value-or-promise@1.0.11: {} - value-or-promise@1.0.12: {} - vary@1.1.2: {} - verror@1.10.0: dependencies: assert-plus: 1.0.0 @@ -7187,7 +6263,8 @@ snapshots: dependencies: iconv-lite: 0.6.3 - whatwg-mimetype@3.0.0: {} + whatwg-mimetype@3.0.0: + optional: true whatwg-mimetype@4.0.0: {} @@ -7254,13 +6331,6 @@ snapshots: xmlchars@2.2.0: {} - xss@1.0.15: - dependencies: - commander: 2.20.3 - cssfilter: 0.0.10 - - yallist@4.0.0: {} - yocto-queue@0.1.0: {} zod@3.23.8: {} diff --git a/tests/_/text.txt b/tests/_/text.txt index 5adcd3d86..424d9262b 100644 --- a/tests/_/text.txt +++ b/tests/_/text.txt @@ -1 +1 @@ -This is a text file. +This is a text file. It is used in file upload tests. diff --git a/tests/legacy/__helpers.ts b/tests/legacy/__helpers.ts deleted file mode 100644 index f038250bc..000000000 --- a/tests/legacy/__helpers.ts +++ /dev/null @@ -1,170 +0,0 @@ -import type { ApolloServerExpressConfig } from 'apollo-server-express' -import { ApolloServer } from 'apollo-server-express' -import body from 'body-parser' -import type { Application, Request } from 'express' -import express from 'express' -import getPort from 'get-port' -import type { Server } from 'http' -import { createServer } from 'http' -import type { JsonArray, JsonObject } from 'type-fest' -import { afterAll, afterEach, beforeAll, beforeEach } from 'vitest' - -export const errors = { - message: `Syntax Error GraphQL request (1:1) Unexpected Name "x"\n\n1: x\n ^\n`, - locations: [ - { - line: 1, - column: 1, - }, - ], -} - -type CapturedRequest = Pick - -type Context = { - server: Application - nodeServer: Server - url: string - /** - * Setup a response that will be sent to requests - */ - res: (spec?: S) => MockResult -} - -type MockSpecBody = { - data?: JsonObject - extensions?: JsonObject - errors?: JsonObject | JsonArray -} - -type MockSpec = { - headers?: Record - body?: MockSpecBody -} - -export type MockSpecBatch = { - headers?: Record - body?: MockSpecBody[] -} - -type MockResult = { - spec: Spec - requests: { - method: string - headers: Record - body: JsonObject - }[] -} - -export const setupMockServer = ( - delay?: number, -): Context => { - const ctx = {} as Context - beforeAll(async () => { - const port = await getPort() - ctx.server = express() - ctx.server.use(body.json()) - ctx.nodeServer = createServer() - ctx.nodeServer.listen({ port }) - ctx.nodeServer.on(`request`, ctx.server) - await new Promise((res) => { - ctx.nodeServer.once(`listening`, res) - }) - ctx.url = `http://localhost:${String(port)}` - ctx.res = (spec?: T): MockResult => { - const requests: CapturedRequest[] = [] - // eslint-disable-next-line - ctx.server.use(`*`, function mock(req, res) { - void new Promise((res) => { - delay ? setTimeout(res, delay) : res(undefined) - }).then(() => { - req.headers.host = `DYNAMIC` - req.headers[`user-agent`] = `DYNAMIC` // todo undici on machine, node in CI - requests.push({ - method: req.method, - headers: req.headers, - body: req.body, // eslint-disable-line - }) - if (spec?.headers) { - Object.entries(spec.headers).forEach(([name, value]) => { - res.setHeader(name, value) - }) - } - res.send(spec?.body ?? { data: {} }) - }) - }) - - return { spec, requests: requests } as MockResult - } - }) - - afterEach(() => { - // https://stackoverflow.com/questions/10378690/remove-route-mappings-in-nodejs-express/28369539#28369539 - // eslint-disable-next-line - ctx.server._router.stack.forEach((item: any, i: number) => { - // eslint-disable-next-line - if (item.name === `mock`) ctx.server._router.stack.splice(i, 1) - }) - }) - - afterAll(async () => { - await new Promise((resolve) => { - ctx.nodeServer.close(() => { - resolve(undefined) - }) - }) - }) - - return ctx -} - -type ApolloServerContextOptions = { - typeDefs: string - resolvers: ApolloServerExpressConfig['resolvers'] -} - -export const startApolloServer = async ({ typeDefs, resolvers }: ApolloServerContextOptions) => { - const app = express() - - const apolloServer = new ApolloServer({ typeDefs, resolvers }) - - await apolloServer.start() - // @ts-expect-error todo - apolloServer.applyMiddleware({ app }) - - let server: Server - - await new Promise((resolve) => { - server = app.listen(0, resolve) - }) - - return server! -} - -export const createApolloServerContext = ({ typeDefs, resolvers }: ApolloServerContextOptions) => { - const ctx: { url: string; server: Server } = {} as any // eslint-disable-line - - beforeEach(async () => { - ctx.server = await startApolloServer({ typeDefs, resolvers }) - const address = ctx.server.address() - if (address && typeof address === `object`) { - ctx.url = `http://localhost:${String(address.port)}/graphql` - } - }) - - afterEach(async () => { - await new Promise((res) => { - ctx.server.close(() => { - res(undefined) - }) - }) - }) - - return ctx -} - -export const sleep = (timeout: number): Promise => { - return new Promise((resolve) => { - setTimeout(resolve, timeout) - }) -} diff --git a/tests/legacy/__snapshots__/document-node.test.ts.snap b/tests/legacy/__snapshots__/document-node.test.ts.snap deleted file mode 100644 index f0e08154e..000000000 --- a/tests/legacy/__snapshots__/document-node.test.ts.snap +++ /dev/null @@ -1,36 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`accepts graphql DocumentNode as alternative to raw string 1`] = ` -{ - "requests": [ - { - "body": { - "query": "{ - query { - users - } -}", - }, - "headers": { - "accept": "application/graphql-response+json, application/json", - "accept-encoding": "gzip, deflate", - "accept-language": "*", - "connection": "keep-alive", - "content-length": "43", - "content-type": "application/json", - "host": "DYNAMIC", - "sec-fetch-mode": "cors", - "user-agent": "DYNAMIC", - }, - "method": "POST", - }, - ], - "spec": { - "body": { - "data": { - "foo": 1, - }, - }, - }, -} -`; diff --git a/tests/legacy/__snapshots__/gql.test.ts.snap b/tests/legacy/__snapshots__/gql.test.ts.snap deleted file mode 100644 index 37d704742..000000000 --- a/tests/legacy/__snapshots__/gql.test.ts.snap +++ /dev/null @@ -1,35 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`gql > passthrough allowing benefits of tooling for gql template tag 1`] = ` -{ - "requests": [ - { - "body": { - "operationName": "allUsers", - "query": "query allUsers { - users -}", - }, - "headers": { - "accept": "application/graphql-response+json, application/json", - "accept-encoding": "gzip, deflate", - "accept-language": "*", - "connection": "keep-alive", - "content-length": "67", - "content-type": "application/json", - "host": "DYNAMIC", - "sec-fetch-mode": "cors", - "user-agent": "DYNAMIC", - }, - "method": "POST", - }, - ], - "spec": { - "body": { - "data": { - "foo": 1, - }, - }, - }, -} -`; diff --git a/tests/legacy/batching.test.ts b/tests/legacy/batching.test.ts deleted file mode 100644 index 255ee3fb2..000000000 --- a/tests/legacy/batching.test.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { expect, test } from 'vitest' -import { batchRequests } from '../../src/entrypoints/main.js' -import type { MockSpecBatch } from './__helpers.js' -import { errors, setupMockServer } from './__helpers.js' - -const mockServer = setupMockServer() - -test(`minimal double query`, async () => { - const firstResult = { me: { id: `some-id` } } - const secondResult = { me: { id: `another-id` } } - mockServer.res({ - body: [{ data: firstResult }, { data: secondResult }], - }) - const [firstResponse, secondResponse] = await batchRequests(mockServer.url, [ - { document: `{ me { id } }` }, - { document: `{ me { id } }` }, - ]) - - expect(firstResponse.data).toEqual(firstResult) - expect(secondResponse?.data).toEqual(secondResult) -}) - -test(`basic error`, async () => { - mockServer.res({ body: [{ errors }] }) - await expect(batchRequests(mockServer.url, [{ document: `x` }])).rejects.toMatchInlineSnapshot( - `[Error: GraphQL Error (Code: 200): {"response":{"0":{"errors":{"message":"Syntax Error GraphQL request (1:1) Unexpected Name \\"x\\"\\n\\n1: x\\n ^\\n","locations":[{"line":1,"column":1}]}},"status":200,"headers":{}},"request":{"query":["x"],"variables":[null]}}]`, - ) -}) - -test(`successful query with another which make an error`, async () => { - const firstResult = { data: { me: { id: `some-id` } } } - const secondResult = { errors } - mockServer.res({ body: [firstResult, secondResult] }) - await expect( - batchRequests(mockServer.url, [{ document: `{ me { id } }` }, { document: `x` }]), - ).rejects.toMatchInlineSnapshot( - `[Error: GraphQL Error (Code: 200): {"response":{"0":{"data":{"me":{"id":"some-id"}}},"1":{"errors":{"message":"Syntax Error GraphQL request (1:1) Unexpected Name \\"x\\"\\n\\n1: x\\n ^\\n","locations":[{"line":1,"column":1}]}},"status":200,"headers":{}},"request":{"query":["{ me { id } }","x"],"variables":[null,null]}}]`, - ) -}) - -// test('basic error with raw request', async () => { -// ctx.res({ -// body: { -// errors: { -// message: 'Syntax Error GraphQL request (1:1) Unexpected Name "x"\n\n1: x\n ^\n', -// locations: [ -// { -// line: 1, -// column: 1, -// }, -// ], -// }, -// }, -// }) -// const res = await rawRequest(ctx.url, `x`).catch((x) => x) -// expect(res).toMatchInlineSnapshot( -// `[Error: GraphQL Error (Code: 200): {"response":{"errors":{"message":"Syntax Error GraphQL request (1:1) Unexpected Name \\"x\\"\\n\\n1: x\\n ^\\n","locations":[{"line":1,"column":1}]},"status":200,"headers":{}},"request":{"query":"x"}}]` -// ) -// }) diff --git a/tests/legacy/custom-fetch.test.ts b/tests/legacy/custom-fetch.test.ts deleted file mode 100644 index 283df79be..000000000 --- a/tests/legacy/custom-fetch.test.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { expect, test } from 'vitest' -import { GraphQLClient } from '../../src/entrypoints/main.js' -import { setupMockServer } from './__helpers.js' - -const ctx = setupMockServer() - -test(`with custom fetch`, async () => { - let touched = false - const customFetch = (input: RequestInfo | URL, init?: RequestInit) => { - touched = true - return fetch(input, init) - } - const client = new GraphQLClient(ctx.url, { fetch: customFetch }) - ctx.res() - await client.request(`{ me { id } }`) - expect(touched).toEqual(true) -}) diff --git a/tests/legacy/document-node.test.ts b/tests/legacy/document-node.test.ts deleted file mode 100644 index e978f020b..000000000 --- a/tests/legacy/document-node.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { gql } from 'graphql-tag' -import { expect, it } from 'vitest' -import { request } from '../../src/entrypoints/main.js' -import { setupMockServer } from './__helpers.js' - -const ctx = setupMockServer() - -it(`accepts graphql DocumentNode as alternative to raw string`, async () => { - const mock = ctx.res({ body: { data: { foo: 1 } } }) - await request( - ctx.url, - gql` - { - query { - users - } - } - `, - ) - expect(mock).toMatchSnapshot() -}) diff --git a/tests/legacy/endpoint.test.ts b/tests/legacy/endpoint.test.ts deleted file mode 100644 index 248a1085d..000000000 --- a/tests/legacy/endpoint.test.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { describe, expect, test } from 'vitest' -import { GraphQLClient } from '../../src/entrypoints/main.js' -import { setupMockServer } from './__helpers.js' - -const ctx_0 = setupMockServer() -const ctx_1 = setupMockServer() - -describe(`using class`, () => { - test(`.setEndpoint that send request to new server`, async () => { - expect(ctx_0.url === ctx_1.url).toEqual(false) - const client = new GraphQLClient(ctx_0.url) - const mock_0 = ctx_0.res() - const mock_1 = ctx_1.res() - await client.request(`{ me { id } }`) - expect(mock_0.requests.length).toEqual(1) - expect(mock_1.requests.length).toEqual(0) - client.setEndpoint(ctx_1.url) - await client.request(`{ test }`) - expect(mock_0.requests.length).toEqual(1) - expect(mock_1.requests.length).toEqual(1) - await client.request(`{ test }`) - expect(mock_0.requests.length).toEqual(1) - expect(mock_1.requests.length).toEqual(2) - }) -}) diff --git a/tests/legacy/errorPolicy.test.ts b/tests/legacy/errorPolicy.test.ts deleted file mode 100644 index 863ee4e3e..000000000 --- a/tests/legacy/errorPolicy.test.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { describe, expect, test } from 'vitest' -import { GraphQLClient } from '../../src/entrypoints/main.js' -import { errors, setupMockServer } from './__helpers.js' - -const ctx = setupMockServer() - -const data = { test: {} } - -describe(`"none"`, () => { - test(`throws error`, async () => { - ctx.res({ body: { data: {}, errors } }) - await expect(() => new GraphQLClient(ctx.url).rawRequest(`x`)).rejects.toThrow(`GraphQL Error`) - }) - test(`is the default`, async () => { - ctx.res({ body: { data: {}, errors } }) - await expect(() => new GraphQLClient(ctx.url).rawRequest(`x`)).rejects.toThrow(`GraphQL Error`) - }) -}) - -describe(`"ignore"`, () => { - test(`does not throw error, returns only data`, async () => { - ctx.res({ body: { data, errors } }) - const res = await new GraphQLClient(ctx.url, { errorPolicy: `ignore` }).rawRequest(`x`) - expect(res).toEqual(expect.objectContaining({ data })) - expect(res).toEqual(expect.not.objectContaining({ errors })) - }) -}) - -describe(`"all"`, () => { - test(`does not throw, returns both data and error`, async () => { - ctx.res({ body: { data, errors } }) - const res = await new GraphQLClient(ctx.url, { errorPolicy: `all` }).rawRequest(`x`) - expect(res).toEqual(expect.objectContaining({ data, errors })) - }) -}) diff --git a/tests/legacy/fetch.test.ts b/tests/legacy/fetch.test.ts deleted file mode 100644 index 2dc18d351..000000000 --- a/tests/legacy/fetch.test.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { expect, test, vitest } from 'vitest' -import { gql, GraphQLClient } from '../../src/entrypoints/main.js' - -test(`custom fetch configuration is passed through`, async () => { - const fetch = vitest.fn().mockResolvedValue({ ok: true, headers: new Headers(), text: () => ``, data: {} }) - const client = new GraphQLClient(`https://foobar`, { - fetch, - // @ts-expect-error extended fetch options - next: { - revalidate: 1, - }, - }) - await client.request(gql`foo`).catch(() => { - /* ignore */ - }) - expect(fetch.mock.calls).toMatchObject([[new URL(`https://foobar`), { next: { revalidate: 1 } }]]) -}) diff --git a/tests/legacy/general.test.ts b/tests/legacy/general.test.ts deleted file mode 100644 index 89e357ed4..000000000 --- a/tests/legacy/general.test.ts +++ /dev/null @@ -1,414 +0,0 @@ -import { gql } from 'graphql-tag' -import type { Mock } from 'vitest' -import { beforeEach, describe, expect, it, test, vitest } from 'vitest' -import type { RequestMiddleware, ResponseMiddleware } from '../../src/entrypoints/main.js' -import { GraphQLClient, rawRequest, request } from '../../src/entrypoints/main.js' -import { errors, setupMockServer } from './__helpers.js' - -const ctx = setupMockServer() - -const data = { me: { id: `some-id` } } - -test(`minimal query`, async () => { - const mockRes = ctx.res({ body: { data } }).spec.body! - expect(await request(ctx.url, `{ me { id } }`)).toEqual(mockRes.data) -}) - -test(`minimal raw query`, async () => { - const mockRes = ctx.res({ body: { data, extensions: { version: `1` } } }).spec.body! - const { headers: _, ...result } = await rawRequest(ctx.url, `{ me { id } }`) - expect(result).toEqual({ data: mockRes.data, extensions: mockRes.extensions, status: 200 }) -}) - -test(`minimal raw query with response headers`, async () => { - const { headers: reqHeaders, body } = ctx.res({ - headers: { - 'Content-Type': `application/json`, - 'X-Custom-Header': `test-custom-header`, - }, - body: { - data, - extensions: { version: `1` }, - }, - }).spec - - const { headers, ...result } = await rawRequest(ctx.url, `{ me { id } }`) - expect(result).toEqual({ ...body, status: 200 }) - expect(headers.get(`X-Custom-Header`)).toEqual(reqHeaders![`X-Custom-Header`]) -}) - -test(`basic error`, async () => { - ctx.res({ body: { errors } }) - const res = await request(ctx.url, `x`).catch((x: unknown) => x) - expect(res).toMatchInlineSnapshot( - `[Error: GraphQL Error (Code: 200): {"response":{"errors":{"message":"Syntax Error GraphQL request (1:1) Unexpected Name \\"x\\"\\n\\n1: x\\n ^\\n","locations":[{"line":1,"column":1}]},"status":200,"headers":{}},"request":{"query":"x"}}]`, - ) -}) - -test(`basic error with raw request`, async () => { - ctx.res({ body: { errors } }) - const res: unknown = await rawRequest(ctx.url, `x`).catch((x: unknown) => x) - expect(res).toMatchInlineSnapshot( - `[Error: GraphQL Error (Code: 200): {"response":{"errors":{"message":"Syntax Error GraphQL request (1:1) Unexpected Name \\"x\\"\\n\\n1: x\\n ^\\n","locations":[{"line":1,"column":1}]},"status":200,"headers":{}},"request":{"query":"x"}}]`, - ) -}) - -describe(`middleware`, () => { - let client: GraphQLClient - let requestMiddleware: Mock - let responseMiddleware: Mock - - describe(`successful requests`, () => { - beforeEach(() => { - ctx.res({ - body: { - data: { - result: 123, - }, - }, - }) - - requestMiddleware = vitest.fn((req) => ({ ...req })) - responseMiddleware = vitest.fn() - client = new GraphQLClient(ctx.url, { - requestMiddleware, - responseMiddleware, - }) - }) - - it(`request`, async () => { - const requestPromise = client.request<{ result: number }>(`x`) - expect(requestMiddleware).toBeCalledTimes(1) - const res = await requestPromise - expect(responseMiddleware).toBeCalledTimes(1) - expect(res.result).toBe(123) - }) - - it(`rawRequest`, async () => { - const requestPromise = client.rawRequest<{ result: number }>(`x`) - expect(requestMiddleware).toBeCalledTimes(1) - await requestPromise - expect(responseMiddleware).toBeCalledTimes(1) - }) - - it(`batchRequests`, async () => { - const requestPromise = client.batchRequests([{ document: `x` }]) - expect(requestMiddleware).toBeCalledTimes(1) - await requestPromise - expect(responseMiddleware).toBeCalledTimes(1) - }) - - it(`url changes`, async () => { - requestMiddleware = vitest.fn((req) => ({ ...req, url: ctx.url })) - const _client = new GraphQLClient(`https://graphql.org`, { - requestMiddleware, - }) - const requestPromise = _client.request<{ result: number }>(`x`) - const res = await requestPromise - expect(requestMiddleware).toBeCalledTimes(1) - expect(res.result).toBe(123) - }) - - describe(`when response middleware needs second req arg`, () => { - it(`request`, async () => { - await client.request({ - document: `query x($foo: String) { foo(foo: $foo) }`, - variables: { foo: `bar` }, - }) - expect(responseMiddleware).toBeCalledTimes(1) - - const [_, res] = responseMiddleware.mock.calls[0]! - expect(res).toMatchObject({ - operationName: `x`, - url: ctx.url, - variables: { foo: `bar` }, - }) - }) - it(`rawRequest`, async () => { - await client.rawRequest(`query x($foo: String) { foo(foo: $foo) }`, { - foo: `bar`, - }) - expect(responseMiddleware).toBeCalledTimes(1) - - const [_, res] = responseMiddleware.mock.calls[0]! - expect(res).toMatchObject({ - operationName: `x`, - url: ctx.url, - variables: { foo: `bar` }, - }) - }) - - it(`batchRequests`, async () => { - await client.batchRequests([ - { - document: `query x($foo: String) { foo(foo: $foo) }`, - variables: { foo: `bar` }, - }, - ]) - expect(responseMiddleware).toBeCalledTimes(1) - - const [_, res] = responseMiddleware.mock.calls[0]! - expect(res).toMatchObject({ - operationName: undefined, - url: ctx.url, - variables: [{ foo: `bar` }], - }) - }) - }) - }) - - describe(`async request middleware`, () => { - beforeEach(() => { - ctx.res({ - body: { - data: { - result: 123, - }, - }, - }) - requestMiddleware = vitest.fn((req) => ({ ...req })) - client = new GraphQLClient(ctx.url, { - requestMiddleware, - }) - }) - - it(`request`, async () => { - const requestPromise = client.request<{ result: number }>(`x`) - expect(requestMiddleware).toBeCalledTimes(1) - await requestPromise - }) - - it(`rawRequest`, async () => { - const requestPromise = client.rawRequest<{ result: number }>(`x`) - expect(requestMiddleware).toBeCalledTimes(1) - await requestPromise - }) - - it(`batchRequests`, async () => { - const requestPromise = client.batchRequests([{ document: `x` }]) - expect(requestMiddleware).toBeCalledTimes(1) - await requestPromise - }) - }) - - describe(`failed requests`, () => { - beforeEach(() => { - ctx.res({ - body: { - errors: { - message: `Syntax Error GraphQL request (1:1) Unexpected Name "x"\n\n1: x\n ^\n`, - locations: [ - { - line: 1, - column: 1, - }, - ], - }, - }, - }) - - requestMiddleware = vitest.fn((req) => ({ ...req })) - responseMiddleware = vitest.fn() - client = new GraphQLClient(ctx.url, { - requestMiddleware, - responseMiddleware, - }) - }) - - it(`request`, async () => { - const requestPromise = client.request<{ result: number }>(`x`) - expect(requestMiddleware).toBeCalledTimes(1) - await expect(requestPromise).rejects.toThrowError() - expect(responseMiddleware).toBeCalledTimes(1) - }) - - it(`rawRequest`, async () => { - const requestPromise = client.rawRequest<{ result: number }>(`x`) - expect(requestMiddleware).toBeCalledTimes(1) - await expect(requestPromise).rejects.toThrowError() - expect(responseMiddleware).toBeCalledTimes(1) - }) - - it(`batchRequests`, async () => { - const requestPromise = client.batchRequests([{ document: `x` }]) - expect(requestMiddleware).toBeCalledTimes(1) - await expect(requestPromise).rejects.toThrowError() - expect(responseMiddleware).toBeCalledTimes(1) - }) - }) -}) - -// todo needs to be tested in browser environment -// the options under test here aren't used by node-fetch -test.skip(`extra fetch options`, async () => { - const options: RequestInit = { - credentials: `include`, - mode: `cors`, - cache: `reload`, - } - - const client = new GraphQLClient(ctx.url, options as any) - const { requests } = ctx.res({ - body: { data: { test: `test` } }, - }) - await client.request(`{ test }`) - expect(requests).toMatchInlineSnapshot(` - Array [ - Object { - "body": Object { - "query": "{ test }", - }, - "headers": Object { - "accept": "*/*", - "accept-encoding": "gzip,deflate", - "connection": "close", - "content-length": "20", - "content-type": "application/json", - "host": "localhost:3210", - "user-agent": "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)", - }, - "method": "POST", - }, - ] - `) -}) - -describe(`operationName parsing`, () => { - it(`should work for gql documents`, async () => { - const mock = ctx.res({ body: { data: { foo: 1 } } }) - await request( - ctx.url, - gql` - query myGqlOperation { - users - } - `, - ) - - const requestBody = mock.requests[0]?.body - expect(requestBody?.[`operationName`]).toEqual(`myGqlOperation`) - }) - - it(`should work for string documents`, async () => { - const mock = ctx.res({ body: { data: { foo: 1 } } }) - await request( - ctx.url, - ` - query myStringOperation { - users - } - `, - ) - - const requestBody = mock.requests[0]?.body - expect(requestBody?.[`operationName`]).toEqual(`myStringOperation`) - }) -}) -describe(`excludeOperationName`, () => { - it(`it should not ignore operation name by default`, async () => { - ctx.res({ - body: { - data: { - result: `ok`, - }, - }, - }) - const requestMiddleware: Mock = vitest.fn((req: { body: string; operationName: string }) => { - expect(req.body).toContain(`"operationName":"myStringOperation"`) - expect(req.operationName).toBe(`myStringOperation`) - return { ...req } - }) - const client: GraphQLClient = new GraphQLClient(ctx.url, { - requestMiddleware, - }) - await client.request<{ result: number }>(`query myStringOperation { - users - }`) - }) - it(`it should not ignore operation name`, async () => { - ctx.res({ - body: { - data: { - result: `ok`, - }, - }, - }) - const requestMiddleware: Mock = vitest.fn((req: { body: string; operationName: string }) => { - expect(req.body).toContain(`"operationName":"myStringOperation"`) - expect(req.operationName).toBe(`myStringOperation`) - return { ...req } - }) - const client: GraphQLClient = new GraphQLClient(ctx.url, { - requestMiddleware, - excludeOperationName: false, - }) - await client.request<{ result: number }>(`query myStringOperation { - users - }`) - }) - it(`it should ignore operation name`, async () => { - ctx.res({ - body: { - data: { - result: `ok`, - }, - }, - }) - const requestMiddleware: Mock = vitest.fn((req: { body: string; operationName: string }) => { - expect(req.body).not.toContain(`operationName`) - expect(req.operationName).toBe(undefined) - return { ...req } - }) - const client: GraphQLClient = new GraphQLClient(ctx.url, { - requestMiddleware, - excludeOperationName: true, - }) - await client.request<{ result: number }>(`query myStringOperation { - users - }`) - }) -}) - -test(`should not throw error when errors property is an empty array (occurred when using UltraGraphQL)`, async () => { - ctx.res({ body: { data: { test: `test` }, errors: [] } }) - const res = await new GraphQLClient(ctx.url).request(`{ test }`) - expect(res).toEqual(expect.objectContaining({ test: `test` })) -}) - -it(`adds the default headers to the request`, async () => { - const mock = ctx.res({ body: { data: {} } }) - await request( - ctx.url, - gql` - query myGqlOperation { - users - } - `, - ) - - const headers = mock.requests[0]?.headers - expect(headers?.[`accept`]).toEqual(`application/graphql-response+json, application/json`) - expect(headers?.[`content-type`]).toEqual(`application/json`) -}) - -it(`allows overriding the default headers for the request`, async () => { - const mock = ctx.res({ body: { data: {} } }) - const query = gql` - query myGqlOperation { - users - } - ` - - await request({ - url: ctx.url, - document: query, - requestHeaders: { - accept: `text/plain`, - 'content-type': `text/plain`, - }, - }) - - const headers = mock.requests[0]?.headers - expect(headers?.[`accept`]).toEqual(`text/plain`) - expect(headers?.[`content-type`]).toEqual(`text/plain`) -}) diff --git a/tests/legacy/gql.test.ts b/tests/legacy/gql.test.ts deleted file mode 100644 index 853ad7a2f..000000000 --- a/tests/legacy/gql.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { gql } from 'graphql-tag' -import { describe, expect, it } from 'vitest' -import { request } from '../../src/entrypoints/main.js' -import { setupMockServer } from './__helpers.js' - -const ctx = setupMockServer() - -describe(`gql`, () => { - it(`passthrough allowing benefits of tooling for gql template tag`, async () => { - const mock = ctx.res({ body: { data: { foo: 1 } } }) - await request( - ctx.url, - gql` - query allUsers { - users - } - `, - ) - expect(mock).toMatchSnapshot() - }) -}) diff --git a/tests/legacy/headers.test.ts b/tests/legacy/headers.test.ts deleted file mode 100644 index 667754a84..000000000 --- a/tests/legacy/headers.test.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { describe, expect, test } from 'vitest' -import { GraphQLClient, request } from '../../src/entrypoints/main.js' -import { setupMockServer } from './__helpers.js' - -const ctx = setupMockServer() - -const headerFoo = { - name: `foo`, - value: `bar`, -} -const headers = new Headers({ [headerFoo.name]: headerFoo.value }) - -describe(`request()`, () => { - test(`can set headers`, async () => { - const mock = ctx.res() - await request(ctx.url, `{ me { id } }`, {}, headers) - expect(mock.requests[0]?.headers[headerFoo.name]).toEqual(headerFoo.value) - }) - test(`can override built in headers`, async () => { - const mock = ctx.res() - await request(ctx.url, `{ me { id } }`, {}, { 'content-type': `application/json2` }) - expect(mock.requests[0]?.headers[`content-type`]).toEqual(`application/json2`) - }) -}) - -describe(`using class`, () => { - test(`.setHeader() sets a header`, async () => { - const client = new GraphQLClient(ctx.url) - client.setHeader(headerFoo.name, headerFoo.value) - const mock = ctx.res() - await client.request(`{ me { id } }`) - expect(mock.requests[0]?.headers[headerFoo.name]).toEqual(headerFoo.value) - }) - test(`.setHeaders() sets headers`, async () => { - const client = new GraphQLClient(ctx.url) - client.setHeaders(headers) - const mock = ctx.res() - await client.request(`{ me { id } }`) - expect(mock.requests[0]?.headers[headerFoo.name]).toEqual(headerFoo.value) - }) - - describe(`custom header in the request`, () => { - describe(`request unique header with request`, () => { - test(`.request()`, async () => { - const client = new GraphQLClient(ctx.url) - - client.setHeaders(headers) - const mock = ctx.res() - await client.request(`{ me { id } }`, {}, new Headers({ a: `b` })) - - expect(mock.requests[0]?.headers[headerFoo.name]).toEqual(headerFoo.value) - expect(mock.requests[0]?.headers[`a`]).toEqual(`b`) - }) - - test(`.rawRequest()`, async () => { - const client = new GraphQLClient(ctx.url) - - client.setHeaders(headers) - const mock = ctx.res() - await client.rawRequest(`{ me { id } }`, {}, new Headers({ a: `b` })) - - expect(mock.requests[0]).toMatchObject({ - headers: { - [headerFoo.name]: headerFoo.value, - a: `b`, - }, - }) - }) - }) - - describe(`request overriding instance`, () => { - test(`.request()`, async () => { - const client = new GraphQLClient(ctx.url) - client.setHeader(headerFoo.name, headerFoo.value) - const mock = ctx.res() - await client.request(`{ me { id } }`, {}, headers) - expect(mock.requests[0]?.headers[headerFoo.name]).toEqual(headerFoo.value) - }) - - test(`.rawRequest()`, async () => { - const client = new GraphQLClient(ctx.url) - client.setHeader(headerFoo.name, headerFoo.value) - const mock = ctx.res() - await client.rawRequest(`{ me { id } }`, {}, headers) - expect(mock.requests[0]?.headers[headerFoo.name]).toEqual(headerFoo.value) - }) - }) - - describe(`gets fresh dynamic headers before each request`, () => { - test(`.request()`, async () => { - const objectChangedThroughReference = { [headerFoo.name]: `old` } - const client = new GraphQLClient(ctx.url, { headers: () => objectChangedThroughReference }) - objectChangedThroughReference[headerFoo.name] = `new` - const mock = ctx.res() - await client.request(`{ me { id } }`) - expect(mock.requests[0]?.headers[headerFoo.name]).toEqual(`new`) - }) - - test(`.rawRequest()`, async () => { - const objectChangedThroughReference = { [headerFoo.name]: `old` } - const client = new GraphQLClient(ctx.url, { headers: () => objectChangedThroughReference }) - objectChangedThroughReference[headerFoo.name] = `new` - const mock = ctx.res() - await client.rawRequest(`{ me { id } }`) - expect(mock.requests[0]?.headers[headerFoo.name]).toEqual(`new`) - }) - }) - }) -}) diff --git a/tests/legacy/httpMethod.test.ts b/tests/legacy/httpMethod.test.ts deleted file mode 100644 index 832298624..000000000 --- a/tests/legacy/httpMethod.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { expect, test, vitest } from 'vitest' -import { gql, GraphQLClient } from '../../src/entrypoints/main.js' -import type { RequestConfig } from '../../src/legacy/helpers/types.js' -import { CONTENT_TYPE_HEADER, statusCodes } from '../../src/lib/http.js' - -test(`mutation forces a POST method even if input wants GET for query`, async () => { - const fetch = vitest.fn().mockImplementation((_: string, requestConfig: RequestConfig) => { - expect(requestConfig.method).toBe(`POST`) - return new Response(JSON.stringify({ data: { a: { result: `ok` } } }), { - headers: new Headers({ [CONTENT_TYPE_HEADER]: `application/json; charset=utf-8` }), - status: statusCodes.success, - }) - }) - const client = new GraphQLClient(`https://foobar`, { fetch, method: `GET` }) - const document = gql` - mutation { - a { - result - } - } - ` - await client.request(document) - expect(fetch.mock.calls.length).toBe(1) -}) diff --git a/tests/legacy/json-serializer.test.ts b/tests/legacy/json-serializer.test.ts deleted file mode 100644 index 8d18a8122..000000000 --- a/tests/legacy/json-serializer.test.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { beforeEach, describe, expect, test, vitest } from 'vitest' -import { GraphQLClient } from '../../src/entrypoints/main.js' -import type { Fetch, Variables } from '../../src/legacy/helpers/types.js' -import { CONTENT_TYPE_HEADER, statusCodes } from '../../src/lib/http.js' -import { setupMockServer } from './__helpers.js' - -const ctx = setupMockServer() - -const createMockSerializer = () => ({ - stringify: vitest.fn(JSON.stringify), - parse: vitest.fn(JSON.parse), -}) - -const testData = { data: { test: { name: `test` } } } - -const createMockFetch = (): Fetch => () => { - const response = new Response(JSON.stringify(testData), { - headers: new Headers({ [CONTENT_TYPE_HEADER]: `application/json; charset=utf-8` }), - status: statusCodes.success, - }) - return Promise.resolve(response) -} - -test(`is used for parsing response body`, async () => { - const client = new GraphQLClient(ctx.url, { - jsonSerializer: createMockSerializer(), - fetch: createMockFetch(), - }) - const result = await client.request(`{ test { name } }`) - expect(result).toEqual(testData.data) - expect(client.requestConfig.jsonSerializer?.parse).toBeCalledTimes(1) -}) - -describe(`is used for serializing variables`, () => { - const document = `query getTest($name: String!) { test(name: $name) { name } }` - const simpleVariable = { name: `test` } - let client: GraphQLClient - - const testSingleQuery = (expectedNumStringifyCalls?: number, variables: Variables = simpleVariable) => async () => { - await client.request(document, variables) - expect(client.requestConfig.jsonSerializer?.stringify).toBeCalledTimes(expectedNumStringifyCalls ?? 1) - } - - const testBatchQuery = (expectedNumStringifyCalls?: number, variables: Variables = simpleVariable) => async () => { - await client.batchRequests([{ document, variables }]) - expect(client.requestConfig.jsonSerializer?.stringify).toBeCalledTimes(expectedNumStringifyCalls ?? 1) - } - - describe(`request body`, () => { - beforeEach(() => { - client = new GraphQLClient(ctx.url, { - jsonSerializer: createMockSerializer(), - fetch: createMockFetch(), - }) - }) - - test(`single query`, testSingleQuery()) - test(`batch query`, testBatchQuery(1)) - }) - - describe(`query string`, () => { - beforeEach(() => { - client = new GraphQLClient(ctx.url, { - jsonSerializer: createMockSerializer(), - fetch: createMockFetch(), - method: `GET`, - }) - }) - - test(`single query`, testSingleQuery()) - test(`batch query`, testBatchQuery(2)) // once for variable and once for query batch array - }) -}) diff --git a/tests/legacy/middleware.test.ts b/tests/legacy/middleware.test.ts deleted file mode 100644 index cc9f23546..000000000 --- a/tests/legacy/middleware.test.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { expect, test } from 'vitest' -import { GraphQLClient } from '../../src/entrypoints/main.js' -import { setupMockServer } from './__helpers.js' - -const ctx = setupMockServer() - -test(`throwing an async error in response middleware is awaited`, async () => { - const client = new GraphQLClient(ctx.url, { - // eslint-disable-next-line - responseMiddleware: async () => { - throw new Error(`TEST ERROR`) - }, - }) - ctx.res() - await expect(client.request(`{ me { id } }`)).rejects.toMatchInlineSnapshot(`[Error: TEST ERROR]`) -}) diff --git a/tests/legacy/signal.test.ts b/tests/legacy/signal.test.ts deleted file mode 100644 index d6de3f732..000000000 --- a/tests/legacy/signal.test.ts +++ /dev/null @@ -1,248 +0,0 @@ -import { expect, it } from 'vitest' -import { batchRequests, GraphQLClient, rawRequest, request } from '../../src/entrypoints/main.js' -import { setupMockServer, sleep } from './__helpers.js' - -const ctx = setupMockServer(20) - -it(`should abort a request when the signal is defined in the GraphQLClient`, async () => { - const abortController = new AbortController() - abortController.abort() - expect.assertions(1) - - const client = new GraphQLClient(ctx.url, { signal: abortController.signal }) - - try { - await client.request(`{ me { id } }`) - } catch (error) { - expect(error).toHaveProperty(`name`, `AbortError`) - } -}) - -it(`should abort a request when the signal is defined in GraphQLClient and after the request has been sent`, async () => { - const abortController = new AbortController() - ctx.res({ - body: { - data: { - me: { - id: `some-id`, - }, - }, - }, - }).spec.body - - expect.assertions(1) - - const client = new GraphQLClient(ctx.url, { signal: abortController.signal }) - client.request(`{ me { id } }`).catch((error: unknown) => { - expect(error).toHaveProperty(`name`, `AbortError`) - }) - - await sleep(10) - abortController.abort() - await sleep(20) -}) - -it(`should abort a raw request when the signal is defined in the GraphQLClient`, async () => { - const abortController = new AbortController() - abortController.abort() - expect.assertions(1) - - const client = new GraphQLClient(ctx.url, { signal: abortController.signal }) - - try { - await client.rawRequest(`{ me { id } }`) - } catch (error) { - expect(error).toHaveProperty(`name`, `AbortError`) - } -}) - -it(`should abort batch requests when the signal is defined in the GraphQLClient`, async () => { - const abortController = new AbortController() - abortController.abort() - expect.assertions(1) - - const client = new GraphQLClient(ctx.url, { signal: abortController.signal }) - - try { - await client.batchRequests([{ document: `{ me { id } }` }, { document: `{ me { id } }` }]) - } catch (error) { - expect(error).toHaveProperty(`name`, `AbortError`) - } -}) - -it(`should abort a request when the signal overrides GraphQLClient settings`, async () => { - const abortController = new AbortController() - abortController.abort() - expect.assertions(1) - - const client = new GraphQLClient(ctx.url) - - try { - await client.request({ - document: `{ me { id } }`, - signal: abortController.signal, - }) - } catch (error) { - expect(error).toHaveProperty(`name`, `AbortError`) - } -}) - -it(`should abort a raw request when the signal overrides GraphQLClient settings`, async () => { - const abortController = new AbortController() - abortController.abort() - expect.assertions(1) - - const client = new GraphQLClient(ctx.url) - - try { - await client.rawRequest({ query: `{ me { id } }`, signal: abortController.signal }) - } catch (error) { - expect(error).toHaveProperty(`name`, `AbortError`) - } -}) - -it(`should abort batch requests when the signal overrides GraphQLClient settings`, async () => { - const abortController = new AbortController() - abortController.abort() - expect.assertions(1) - - const client = new GraphQLClient(ctx.url) - - try { - await client.batchRequests({ - documents: [{ document: `{ me { id } }` }, { document: `{ me { id } }` }], - signal: abortController.signal, - }) - } catch (error) { - expect(error).toHaveProperty(`name`, `AbortError`) - } -}) - -it(`should abort a request`, async () => { - const abortController = new AbortController() - abortController.abort() - expect.assertions(1) - - try { - await request({ - url: ctx.url, - document: `{ me { id } }`, - signal: abortController.signal, - }) - } catch (error) { - expect(error).toHaveProperty(`name`, `AbortError`) - } -}) - -it(`should abort a request after the request has been sent`, async () => { - const abortController = new AbortController() - ctx.res({ - body: { - data: { - me: { - id: `some-id`, - }, - }, - }, - }).spec.body - - expect.assertions(1) - - request({ - url: ctx.url, - document: `{ me { id } }`, - signal: abortController.signal, - }).catch((error: unknown) => { - expect(error).toHaveProperty(`name`, `AbortError`) - }) - - await sleep(10) - abortController.abort() - await sleep(20) -}) - -it(`should abort a raw request`, async () => { - const abortController = new AbortController() - abortController.abort() - expect.assertions(1) - - try { - await rawRequest({ - url: ctx.url, - query: `{ me { id } }`, - signal: abortController.signal, - }) - } catch (error) { - expect(error).toHaveProperty(`name`, `AbortError`) - } -}) - -it(`should abort a raw request after the request has been sent`, async () => { - const abortController = new AbortController() - ctx.res({ - body: { - data: { - me: { - id: `some-id`, - }, - }, - }, - }).spec.body - - expect.assertions(1) - - rawRequest({ - url: ctx.url, - query: `{ me { id } }`, - signal: abortController.signal, - }).catch((error: unknown) => { - expect(error).toHaveProperty(`name`, `AbortError`) - }) - - await sleep(10) - abortController.abort() - await sleep(20) -}) - -it(`should abort batch requests`, async () => { - const abortController = new AbortController() - abortController.abort() - expect.assertions(1) - - try { - await batchRequests({ - url: ctx.url, - documents: [{ document: `{ me { id } }` }, { document: `{ me { id } }` }], - signal: abortController.signal, - }) - } catch (error) { - expect(error).toHaveProperty(`name`, `AbortError`) - } -}) - -it(`should abort batch requests after a request has been sent`, async () => { - const abortController = new AbortController() - ctx.res({ - body: { - data: { - me: { - id: `some-id`, - }, - }, - }, - }).spec.body - - expect.assertions(1) - - batchRequests({ - url: ctx.url, - documents: [{ document: `{ me { id } }` }, { document: `{ me { id } }` }], - signal: abortController.signal, - }).catch((error: unknown) => { - expect(error).toHaveProperty(`name`, `AbortError`) - }) - - await sleep(10) - abortController.abort() - await sleep(20) -}) diff --git a/tests/legacy/typed-document-node.test.ts b/tests/legacy/typed-document-node.test.ts deleted file mode 100644 index f5d56e9f3..000000000 --- a/tests/legacy/typed-document-node.test.ts +++ /dev/null @@ -1,128 +0,0 @@ -import type { TypedDocumentNode } from '@graphql-typed-document-node/core' -import { parse } from 'graphql' -import { expect, test } from 'vitest' -import request, { gql } from '../../src/entrypoints/main.js' -import { setupMockServer } from './__helpers.js' - -const ctx = setupMockServer() - -test(`typed-document-node code should TS compile with variables`, async () => { - ctx.res({ body: { data: { foo: 1 } } }) - - const query: TypedDocumentNode<{ echo: string }, { str: string }> = parse(gql` - query greetings($str: String!) { - echo(str: $echo) - } - `) - - // variables are mandatory here! - - // @ts-expect-error 'str' is declared here. - await request(ctx.url, query, {}) - // @ts-expect-error Arguments for the rest parameter '_variablesAndRequestHeaders' were not provided. - await request(ctx.url, query) - - await request(ctx.url, query, { str: `Hi` }) - - // @ts-expect-error 'variables' is declared here. - await request({ - url: ctx.url, - document: query, - }) - - await request({ - url: ctx.url, - document: query, - // @ts-expect-error Property 'str' is missing in type '{}' but required in type '{ str: string; }'. - variables: {}, - }) - - await request({ - url: ctx.url, - document: query, - // @ts-expect-error Type '{ aaa: string; }' is not assignable to type '{ str: string; }'. - variables: { aaa: `aaa` }, - }) - - await request({ - url: ctx.url, - document: query, - // @ts-expect-error Type 'number' is not assignable to type 'string'.ts(2322) - variables: { str: 1 }, - }) - - await request({ - url: ctx.url, - document: `a graphql query`, - variables: { whatever: `not typed` }, - }) - - await request<{ echo: string }, { str: string }>({ - url: ctx.url, - document: `a graphql query`, - variables: { str: `Hi` }, - }) - - await request<{ echo: string }, { str: string }>({ - url: ctx.url, - document: `a graphql query`, - // @ts-expect-error Type 'number' is not assignable to type 'string'.ts(2322) - variables: { str: 1 }, - }) - - await request<{ echo: string }, { str: string }>({ - url: ctx.url, - document: `a graphql query`, - // @ts-expect-error Type '{ aaa: string; }' is not assignable to type '{ str: string; }'. - variables: { aaa: `aaa` }, - }) - - await request({ - url: ctx.url, - document: query, - variables: { - str: `foo`, - }, - }) - - expect(1).toBe(1) -}) - -test(`typed-document-node code should TS compile without variables`, async () => { - ctx.res({ body: { data: { foo: 1 } } }) - - const query: TypedDocumentNode<{ echo: string }> = parse(gql` - query greetings { - echo - } - `) - - // variables are not mandatory here! - - await request(ctx.url, query, {}) - await request(ctx.url, query) - - await request({ - url: ctx.url, - document: query, - }) - - await request({ - url: ctx.url, - document: query, - variables: {}, - }) - - await request({ - url: ctx.url, - document: `a graphql query`, - variables: {}, - }) - - await request({ - url: ctx.url, - document: `a graphql query`, - }) - - expect(1).toBe(1) -})