From 54def952ba688245a2215b42957057b1e759e7b4 Mon Sep 17 00:00:00 2001 From: David Federspiel Date: Sat, 14 Aug 2021 07:57:25 -0400 Subject: [PATCH 1/9] try: graphql as serverless function --- api/graphql/function.json | 19 ++ api/graphql/index.js | 24 +++ api/graphql/sample.dat | 3 + api/package-lock.json | 368 ++++++++++++++++++++++++++++++++++++++ api/package.json | 1 + 5 files changed, 415 insertions(+) create mode 100644 api/graphql/function.json create mode 100644 api/graphql/index.js create mode 100644 api/graphql/sample.dat diff --git a/api/graphql/function.json b/api/graphql/function.json new file mode 100644 index 0000000..b430f6a --- /dev/null +++ b/api/graphql/function.json @@ -0,0 +1,19 @@ +{ + "bindings": [ + { + "authLevel": "function", + "type": "httpTrigger", + "direction": "in", + "name": "req", + "methods": [ + "get", + "post" + ] + }, + { + "type": "http", + "direction": "out", + "name": "$return" + } + ] +} diff --git a/api/graphql/index.js b/api/graphql/index.js new file mode 100644 index 0000000..b77f854 --- /dev/null +++ b/api/graphql/index.js @@ -0,0 +1,24 @@ +const { gql, ApolloServer } = require("apollo-server-azure-functions"); + +// Construct a schema, using GraphQL schema language +const typeDefs = gql` + type Query { + hello: String + } +`; + +// A map of functions which return data for the schema. +const resolvers = { + Query: { + hello: () => "world" + } +}; + +const server = new ApolloServer({ typeDefs, resolvers }); + +module.exports = server.createHandler({ + cors: { + origin: '*', + credentials: true, + }, + } \ No newline at end of file diff --git a/api/graphql/sample.dat b/api/graphql/sample.dat new file mode 100644 index 0000000..2e60943 --- /dev/null +++ b/api/graphql/sample.dat @@ -0,0 +1,3 @@ +{ + "name": "Azure" +} \ No newline at end of file diff --git a/api/package-lock.json b/api/package-lock.json index d247e2d..2f635e3 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -4,15 +4,383 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@apollo/protobufjs": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.2.tgz", + "integrity": "sha512-vF+zxhPiLtkwxONs6YanSt1EpwpGilThpneExUN5K3tCymuxNnVq2yojTvnpRjv2QfsEIt/n7ozPIIzBLwGIDQ==", + "requires": { + "@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.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + } + }, + "@apollographql/apollo-tools": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.1.tgz", + "integrity": "sha512-ZII+/xUFfb9ezDU2gad114+zScxVFMVlZ91f8fGApMzlS1kkqoyLnC4AJaQ1Ya/X+b63I20B4Gd+eCL8QuB4sA==" + }, + "@apollographql/graphql-playground-html": { + "version": "1.6.29", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", + "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", + "requires": { + "xss": "^1.0.8" + } + }, + "@azure/functions": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@azure/functions/-/functions-1.2.3.tgz", + "integrity": "sha512-dZITbYPNg6ay6ngcCOjRUh1wDhlFITS0zIkqplyH5KfKEAVPooaoaye5mUFnR+WP9WdGRjlNXyl/y2tgWKHcRg==" + }, + "@graphql-tools/merge": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.0.0.tgz", + "integrity": "sha512-Hdhp3qwDeRwPGUVUkmRwTg5KX/bp1MNkplhI6szgQHeDPaC2l9a1iS6LznVP6xQjsyb8oRPqlVPKfiXemodwFw==", + "requires": { + "@graphql-tools/utils": "8.1.0", + "tslib": "~2.3.0" + } + }, + "@graphql-tools/mock": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.2.0.tgz", + "integrity": "sha512-E6rZITUsexmTssAsPSiVFFBePI9L7VZ33+WQBWldJwqduJ9z1WsL+2eJuKPlOIsQ15cbpnHkr2mIv/yrZv99ug==", + "requires": { + "@graphql-tools/schema": "^8.1.0", + "@graphql-tools/utils": "8.1.0", + "fast-json-stable-stringify": "^2.1.0", + "tslib": "~2.3.0" + } + }, + "@graphql-tools/schema": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.1.0.tgz", + "integrity": "sha512-k6M877jFTKjlRU2f2YYjWx+FKXlhuQlCQQ8IdG5API4UL1qk57zYoNnYlT+CJfWxEfcMvEd6AlJ8wvmapzr53A==", + "requires": { + "@graphql-tools/merge": "8.0.0", + "@graphql-tools/utils": "8.1.0", + "tslib": "~2.3.0", + "value-or-promise": "1.0.10" + } + }, + "@graphql-tools/utils": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.1.0.tgz", + "integrity": "sha512-V5a7xAxZ6DHzrYYticmsLgWim+vGnC6ztbiOXrO5cGtOOk5NSK657SZXsyVOR7hNvdWiHSW0dlBZb6zkkfOnHA==", + "requires": { + "tslib": "~2.3.0" + } + }, + "@josephg/resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", + "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "apollo-datasource": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.0.3.tgz", + "integrity": "sha512-oboGz50DbGW6LNaNvB/bpJRypXvYFE1SRO5VxYSUnkz1P7TDcemWfJLRjNnfxCIMVyd0hmmwrmSaGKPQZvmT9Q==", + "requires": { + "apollo-server-caching": "^3.0.1", + "apollo-server-env": "^4.0.3" + } + }, + "apollo-graphql": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.3.tgz", + "integrity": "sha512-rcAl2E841Iko4kSzj4Pt3PRBitmyq1MvoEmpl04TQSpGnoVgl1E/ZXuLBYxMTSnEAm7umn2IsoY+c6Ll9U/10A==", + "requires": { + "core-js-pure": "^3.10.2", + "lodash.sortby": "^4.7.0", + "sha.js": "^2.4.11" + } + }, + "apollo-reporting-protobuf": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.0.0.tgz", + "integrity": "sha512-jmCD+6gECt8KS7PxP460hztT/5URTbv2Kg0zgnR6iWPGce88IBmSUjcqf1Z6wJJq7Teb8Hu7WbyyMhn0vN5TxQ==", + "requires": { + "@apollo/protobufjs": "1.2.2" + } + }, + "apollo-server-azure-functions": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/apollo-server-azure-functions/-/apollo-server-azure-functions-3.1.2.tgz", + "integrity": "sha512-6z8pJ3ls/JL4ieU1TrVCtkxCS8AsucdtDRbouyXRHe8HiD7NNlQlzlYkO8pcwMlhSaE8ufQiodjeNORAr7QPFQ==", + "requires": { + "@azure/functions": "1.2.3", + "apollo-server-core": "^3.1.2", + "apollo-server-env": "^4.0.3", + "apollo-server-types": "^3.1.1" + } + }, + "apollo-server-caching": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-3.0.1.tgz", + "integrity": "sha512-Cd0imFQlU6IKrkm+RNY0MQvKTMBTME+518EuwCaw3TKNUYDpir1vOuIdc4bALXDANilOR73k/UQs/oPxayXfrg==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "apollo-server-core": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.1.2.tgz", + "integrity": "sha512-bFmzPDGBT97vMzdhhjlycL9Ey4YDa0eCVaHjI5TcYQM8Vphzvndd033DvvQFVRPWoZr8uwupeUyVa82Ne/iM6A==", + "requires": { + "@apollographql/apollo-tools": "^0.5.1", + "@apollographql/graphql-playground-html": "1.6.29", + "@graphql-tools/mock": "^8.1.2", + "@graphql-tools/schema": "^8.0.0", + "@graphql-tools/utils": "^8.0.0", + "@josephg/resolvable": "^1.0.0", + "apollo-datasource": "^3.0.3", + "apollo-graphql": "^0.9.0", + "apollo-reporting-protobuf": "^3.0.0", + "apollo-server-caching": "^3.0.1", + "apollo-server-env": "^4.0.3", + "apollo-server-errors": "^3.0.1", + "apollo-server-plugin-base": "^3.1.1", + "apollo-server-types": "^3.1.1", + "async-retry": "^1.2.1", + "fast-json-stable-stringify": "^2.1.0", + "graphql-tag": "^2.11.0", + "loglevel": "^1.6.8", + "lru-cache": "^6.0.0", + "sha.js": "^2.4.11", + "uuid": "^8.0.0" + } + }, + "apollo-server-env": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.0.3.tgz", + "integrity": "sha512-B32+RUOM4GUJAwnQqQE1mT1BG7+VfW3a0A87Bp3gv/q8iNnhY2BIWe74Qn03pX8n27g3EGVCt0kcBuHhjG5ltA==", + "requires": { + "node-fetch": "^2.6.1" + } + }, + "apollo-server-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.0.1.tgz", + "integrity": "sha512-PSp64IFeN1YK5EYZ3V/8iDRESMMyE00h1vE5aCr83wHL3T0mN7VRiMKoOIZ+2rUtnn7CpK73o6QLmouhxPtXsQ==" + }, + "apollo-server-plugin-base": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.1.1.tgz", + "integrity": "sha512-gkV/UtMji6SrX8CdZ5/3IlRBVE57CM+DL6x9MA3pjNEc357OOC3dnh1SXNmp0cvqn66CB1kODGrqKGRxyl/qpA==", + "requires": { + "apollo-server-types": "^3.1.1" + } + }, + "apollo-server-types": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.1.1.tgz", + "integrity": "sha512-dTNlRxqdo+wnrcOFpFfzehdmcYHl6MQKuLnCCRzAHuVR5yOiuhQ5CIGhIjvMx2bP9ZoyON1SvXOIDTyTaU9gaQ==", + "requires": { + "apollo-reporting-protobuf": "^3.0.0", + "apollo-server-caching": "^3.0.1", + "apollo-server-env": "^4.0.3" + } + }, + "async-retry": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz", + "integrity": "sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA==", + "requires": { + "retry": "0.12.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "core-js-pure": { + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.1.tgz", + "integrity": "sha512-TyofCdMzx0KMhi84mVRS8rL1XsRk2SPUNz2azmth53iRN0/08Uim9fdhQTaZTG1LqaXHYVci4RDHka6WrXfnvg==" + }, + "cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" + }, "faker": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==" }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "graphql-tag": { + "version": "2.12.5", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.5.tgz", + "integrity": "sha512-5xNhP4063d16Pz3HBtKprutsPrmHZi5IdUGOWRxA2B6VF7BIRGOHZ5WQvDmJXZuPcBg7rYwaFxvQYjqkSdR3TQ==", + "requires": { + "tslib": "^2.1.0" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==" + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "value-or-promise": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.10.tgz", + "integrity": "sha512-1OwTzvcfXkAfabk60UVr5NdjtjJ0Fg0T5+B1bhxtrOEwSH2fe8y4DnLgoksfCyd8yZCOQQHB0qLMQnwgCjbXLQ==" + }, + "xss": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.9.tgz", + "integrity": "sha512-2t7FahYnGJys6DpHLhajusId7R0Pm2yTmuL0GV9+mV0ZlaLSnb2toBmppATfg5sWIhZQGlsTLoecSzya+l4EAQ==", + "requires": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } diff --git a/api/package.json b/api/package.json index 0d2b27c..30500e1 100644 --- a/api/package.json +++ b/api/package.json @@ -7,6 +7,7 @@ "test": "echo \"No tests yet...\"" }, "dependencies": { + "apollo-server-azure-functions": "^3.1.2", "faker": "^5.5.3", "lodash": "^4.17.21" }, From 7a09dca60fc179a5a279db5e61b70df6eb38ddf2 Mon Sep 17 00:00:00 2001 From: David Federspiel Date: Sat, 14 Aug 2021 08:09:17 -0400 Subject: [PATCH 2/9] try: add options to supported methods --- api/Articles/index.js | 1 - api/graphql/function.json | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/Articles/index.js b/api/Articles/index.js index 4b0ef18..8dc179d 100644 --- a/api/Articles/index.js +++ b/api/Articles/index.js @@ -3,7 +3,6 @@ var jsonData = require('../generate'); module.exports = async function (context, req) { const byId = (req.query.id); context.res = { - // status: 200, /* Defaults to 200 */ body: byId ? jsonData().articles[byId] : jsonData().articles }; } \ No newline at end of file diff --git a/api/graphql/function.json b/api/graphql/function.json index b430f6a..0fdc5b0 100644 --- a/api/graphql/function.json +++ b/api/graphql/function.json @@ -7,7 +7,8 @@ "name": "req", "methods": [ "get", - "post" + "post", + "options" ] }, { From 5a4c76ab7f2b5ec31d95d2928dbb73ea8bbbcd31 Mon Sep 17 00:00:00 2001 From: David Federspiel Date: Sat, 14 Aug 2021 08:12:15 -0400 Subject: [PATCH 3/9] fix: syntax error --- api/graphql/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/graphql/index.js b/api/graphql/index.js index b77f854..5f6713e 100644 --- a/api/graphql/index.js +++ b/api/graphql/index.js @@ -21,4 +21,4 @@ module.exports = server.createHandler({ origin: '*', credentials: true, }, - } \ No newline at end of file +}); \ No newline at end of file From 6d819d691284573704e7a8cd8d7d46c4ae4fb536 Mon Sep 17 00:00:00 2001 From: David Federspiel Date: Sat, 14 Aug 2021 08:37:34 -0400 Subject: [PATCH 4/9] try: use anonymous auth level --- api/graphql/function.json | 5 +++-- api/graphql/index.js | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api/graphql/function.json b/api/graphql/function.json index 0fdc5b0..f3474d9 100644 --- a/api/graphql/function.json +++ b/api/graphql/function.json @@ -1,7 +1,7 @@ { "bindings": [ { - "authLevel": "function", + "authLevel": "anonymous", "type": "httpTrigger", "direction": "in", "name": "req", @@ -16,5 +16,6 @@ "direction": "out", "name": "$return" } - ] + ], + "scriptFile": "./index.js" } diff --git a/api/graphql/index.js b/api/graphql/index.js index 5f6713e..39bffe0 100644 --- a/api/graphql/index.js +++ b/api/graphql/index.js @@ -19,6 +19,5 @@ const server = new ApolloServer({ typeDefs, resolvers }); module.exports = server.createHandler({ cors: { origin: '*', - credentials: true, }, }); \ No newline at end of file From 72f9ba8debc50782e5af9e95466aaaf689c202af Mon Sep 17 00:00:00 2001 From: David Federspiel Date: Sat, 14 Aug 2021 09:04:07 -0400 Subject: [PATCH 5/9] try: add missing deps --- api/Articles/host.json | 7 +++++++ api/graphql/function.json | 3 +-- api/graphql/host.json | 7 +++++++ api/graphql/index.js | 2 +- api/package-lock.json | 5 +++++ api/package.json | 1 + 6 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 api/Articles/host.json create mode 100644 api/graphql/host.json diff --git a/api/Articles/host.json b/api/Articles/host.json new file mode 100644 index 0000000..506376e --- /dev/null +++ b/api/Articles/host.json @@ -0,0 +1,7 @@ +{ + "version": "2.0", + "extensionBundle": { + "id": "Microsoft.Azure.Functions.ExtensionBundle", + "version": "[2.*, 3.0.0)" + } +} \ No newline at end of file diff --git a/api/graphql/function.json b/api/graphql/function.json index f3474d9..7cc14f6 100644 --- a/api/graphql/function.json +++ b/api/graphql/function.json @@ -16,6 +16,5 @@ "direction": "out", "name": "$return" } - ], - "scriptFile": "./index.js" + ] } diff --git a/api/graphql/host.json b/api/graphql/host.json new file mode 100644 index 0000000..8f3cf9d --- /dev/null +++ b/api/graphql/host.json @@ -0,0 +1,7 @@ +{ + "version": "2.0", + "extensionBundle": { + "id": "Microsoft.Azure.Functions.ExtensionBundle", + "version": "[1.*, 2.0.0)" + } +} \ No newline at end of file diff --git a/api/graphql/index.js b/api/graphql/index.js index 39bffe0..fb0c880 100644 --- a/api/graphql/index.js +++ b/api/graphql/index.js @@ -14,7 +14,7 @@ const resolvers = { } }; -const server = new ApolloServer({ typeDefs, resolvers }); +const server = new ApolloServer({ typeDefs, resolvers, debug: true, playground: true }); module.exports = server.createHandler({ cors: { diff --git a/api/package-lock.json b/api/package-lock.json index 2f635e3..bb42491 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -288,6 +288,11 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, + "graphql": { + "version": "15.5.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.1.tgz", + "integrity": "sha512-FeTRX67T3LoE3LWAxxOlW2K3Bz+rMYAC18rRguK4wgXaTZMiJwSUwDmPFo3UadAKbzirKIg5Qy+sNJXbpPRnQw==" + }, "graphql-tag": { "version": "2.12.5", "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.5.tgz", diff --git a/api/package.json b/api/package.json index 30500e1..e08664e 100644 --- a/api/package.json +++ b/api/package.json @@ -9,6 +9,7 @@ "dependencies": { "apollo-server-azure-functions": "^3.1.2", "faker": "^5.5.3", + "graphql": "^15.5.1", "lodash": "^4.17.21" }, "devDependencies": {} From e11eef3269f7815e70d17830138aacf83ed91136 Mon Sep 17 00:00:00 2001 From: David Federspiel Date: Tue, 17 Aug 2021 15:44:25 -0400 Subject: [PATCH 6/9] fix: add methods to handler --- api/graphql/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/graphql/index.js b/api/graphql/index.js index fb0c880..f546be4 100644 --- a/api/graphql/index.js +++ b/api/graphql/index.js @@ -19,5 +19,6 @@ const server = new ApolloServer({ typeDefs, resolvers, debug: true, playground: module.exports = server.createHandler({ cors: { origin: '*', + methods: ['GET', 'POST', 'OPTIONS'], }, -}); \ No newline at end of file +}); From 12a16070d1af216a4f35de434eff351687e34ee0 Mon Sep 17 00:00:00 2001 From: David Federspiel Date: Tue, 17 Aug 2021 15:57:16 -0400 Subject: [PATCH 7/9] Update index.js --- api/graphql/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/api/graphql/index.js b/api/graphql/index.js index f546be4..f36a5b8 100644 --- a/api/graphql/index.js +++ b/api/graphql/index.js @@ -20,5 +20,6 @@ module.exports = server.createHandler({ cors: { origin: '*', methods: ['GET', 'POST', 'OPTIONS'], + preflightContinue: true, }, }); From 22acaf4f1cbb7ac0659fea01fe8c77d435595c6a Mon Sep 17 00:00:00 2001 From: David Federspiel Date: Tue, 17 Aug 2021 16:02:47 -0400 Subject: [PATCH 8/9] Update index.js --- api/graphql/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/graphql/index.js b/api/graphql/index.js index f36a5b8..d19cfed 100644 --- a/api/graphql/index.js +++ b/api/graphql/index.js @@ -20,6 +20,6 @@ module.exports = server.createHandler({ cors: { origin: '*', methods: ['GET', 'POST', 'OPTIONS'], - preflightContinue: true, + credentials: true, }, }); From d976ab8a5316a05827be7e433f40fd8301263620 Mon Sep 17 00:00:00 2001 From: David Federspiel Date: Tue, 17 Aug 2021 16:10:05 -0400 Subject: [PATCH 9/9] Update index.js --- api/graphql/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/api/graphql/index.js b/api/graphql/index.js index d19cfed..2194739 100644 --- a/api/graphql/index.js +++ b/api/graphql/index.js @@ -18,7 +18,9 @@ const server = new ApolloServer({ typeDefs, resolvers, debug: true, playground: module.exports = server.createHandler({ cors: { - origin: '*', + origin: [ + 'https://studio.apollographql.com', + ], methods: ['GET', 'POST', 'OPTIONS'], credentials: true, },