Skip to content

Commit

Permalink
Cleanup some extra code about plugins system (#1185)
Browse files Browse the repository at this point in the history
* Plugins cleanup

* ..

* Avoid exporting things

* ..

* ..

* Fix benchmarks

* Change the order

* Ahh
  • Loading branch information
ardatan authored May 9, 2022
1 parent c6bbbd9 commit cc4e454
Show file tree
Hide file tree
Showing 11 changed files with 44 additions and 63 deletions.
15 changes: 8 additions & 7 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,20 @@ jobs:
- name: Build Packages
run: yarn build

- name: Setup K6
run: |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
- name: Start Yoga Server
working-directory: ./benchmark/hello-world
run: yarn start & sleep 5s
env:
NODE_NO_WARNINGS: true
NODE_ENV: production

- name: Setup K6
run: |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6=0.37.0
- name: Start and Report Yoga Benchmark
working-directory: ./benchmark/hello-world
run: k6 -e GITHUB_PR=${{ github.event.number }} -e GITHUB_SHA=${{ github.sha }} -e GITHUB_TOKEN=${{secrets.GITHUB_TOKEN}} run k6.js
2 changes: 1 addition & 1 deletion e2e/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"@pulumi/awsx": "0.40.0",
"@pulumi/aws": "5.4.0",
"@pulumi/docker": "3.2.0",
"@types/node": "17.0.23",
"@types/node": "^16.11.7",
"typescript": "4.6.4",
"tsup": "5.12.7",
"undici": "5.1.1"
Expand Down
2 changes: 1 addition & 1 deletion examples/aws-lambda/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"devDependencies": {
"@aws-cdk/assert": "2.17.0",
"@types/aws-lambda": "8.10.93",
"@types/node": "17.0.23",
"@types/node": "^16.11.7",
"ts-node": "10.7.0",
"aws-cdk": "2.17.0",
"aws-cdk-lib": "2.17.0",
Expand Down
3 changes: 0 additions & 3 deletions packages/common/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,3 @@ export * from './server'
export * from './graphiql'
export * from '@envelop/core'
export * from '@graphql-yoga/subscription'
export * from './plugins/types'
export * from './plugins/useRequestParser'
export { Plugin } from './plugins/types'
13 changes: 1 addition & 12 deletions packages/common/src/plugins/requestParser/GET.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { GraphQLParams } from '../../types'
import { Plugin } from '../types'

export function isGETRequest(request: Request) {
return request.method === 'GET'
return request.method === 'GET' && request.url.includes('?')
}

export function parseGETRequest(request: Request): GraphQLParams {
Expand All @@ -19,13 +18,3 @@ export function parseGETRequest(request: Request): GraphQLParams {
extensions: extensions ? JSON.parse(extensions) : undefined,
}
}

export function useGETRequestParser(): Plugin {
return {
onRequestParse: async ({ request, setRequestParser }) => {
if (isGETRequest(request)) {
setRequestParser(parseGETRequest)
}
},
}
}
9 changes: 0 additions & 9 deletions packages/common/src/plugins/requestParser/POST.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import { GraphQLParams } from '../../types'
import { Plugin } from '../types'
import { useRequestParser } from '../useRequestParser'

export function isPOSTRequest(request: Request) {
return request.method === 'POST'
Expand All @@ -17,10 +15,3 @@ export async function parsePOSTRequest(
extensions: requestBody.extensions,
}
}

export function usePOSTRequestParser(): Plugin {
return useRequestParser({
match: isPOSTRequest,
parse: parsePOSTRequest,
})
}
16 changes: 4 additions & 12 deletions packages/common/src/plugins/requestParser/POSTMultipart.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import { dset } from 'dset'
import { GraphQLParams } from '../../types'
import { Plugin } from '../types'
import { useRequestParser } from '../useRequestParser'
import { isPOSTRequest } from './POST'

export function isPOSTMultipartRequest(request: Request): boolean {
Expand All @@ -17,13 +15,14 @@ export async function parsePOSTMultipartRequest(
const requestBody = await request.formData()
const operationsStr = requestBody.get('operations')?.toString() || '{}'
const operations = JSON.parse(operationsStr)

const mapStr = requestBody.get('map')?.toString() || '{}'
const map = JSON.parse(mapStr)
for (const fileIndex in map) {
const file = requestBody.get(fileIndex)
const [path] = map[fileIndex]
dset(operations, path, file)
const keys = map[fileIndex]
for (const key of keys) {
dset(operations, key, file)
}
}

return {
Expand All @@ -33,10 +32,3 @@ export async function parsePOSTMultipartRequest(
extensions: operations.extensions,
}
}

export function usePOSTMultipartRequestParser(): Plugin {
return useRequestParser({
match: isPOSTMultipartRequest,
parse: parsePOSTMultipartRequest,
})
}
26 changes: 19 additions & 7 deletions packages/common/src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,14 @@ import {
import * as crossUndiciFetch from 'cross-undici-fetch'
import { processRequest } from './processRequest'
import { defaultYogaLogger, titleBold, YogaLogger } from './logger'
import { useGETRequestParser } from './plugins/requestParser/GET'
import { usePOSTRequestParser } from './plugins/requestParser/POST'
import { usePOSTMultipartRequestParser } from './plugins/requestParser/POSTMultipart'
import { isGETRequest, parseGETRequest } from './plugins/requestParser/GET'
import { isPOSTRequest, parsePOSTRequest } from './plugins/requestParser/POST'
import {
isPOSTMultipartRequest,
parsePOSTMultipartRequest,
} from './plugins/requestParser/POSTMultipart'
import { getCORSHeadersByRequestAndOptions } from './cors'
import { useRequestParser } from './plugins/useRequestParser'

interface OptionsWithPlugins<TContext> {
/**
Expand Down Expand Up @@ -321,12 +325,20 @@ export class YogaServer<
}
}),
),
useGETRequestParser(),
usePOSTRequestParser(),
useRequestParser({
match: isGETRequest,
parse: parseGETRequest,
}),
useRequestParser({
match: isPOSTRequest,
parse: parsePOSTRequest,
}),
enableIf(options?.multipart !== false, () =>
usePOSTMultipartRequestParser(),
useRequestParser({
match: isPOSTMultipartRequest,
parse: parsePOSTMultipartRequest,
}),
),
usePOSTMultipartRequestParser(),
...(options?.plugins ?? []),
enableIf(
!!maskedErrors,
Expand Down
2 changes: 1 addition & 1 deletion packages/node/__tests__/integration.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import http from 'http'
import { useLiveQuery } from '@envelop/live-query'
import { InMemoryLiveQueryStore } from '@n1ru4l/in-memory-live-query-store'
import { fetch, File, FormData } from 'cross-undici-fetch'
import { Readable } from 'stream'

describe('Disable Introspection with plugin', () => {
it('succeeds introspection query', async () => {
Expand Down Expand Up @@ -368,6 +367,7 @@ describe('Incremental Delivery', () => {
const yoga = createServer({
schema,
logging: false,
maskedErrors: false,
multipart: {
fileSize: 12,
},
Expand Down
1 change: 0 additions & 1 deletion packages/node/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@
"@envelop/live-query": "3.3.1",
"@types/eventsource": "^1",
"@types/node": "^16.11.7",
"@types/node-fetch": "^2.6.1",
"bob-the-bundler": "^1.5.1",
"eventsource": "^2.0.0",
"graphql": "^16.0.1",
Expand Down
18 changes: 9 additions & 9 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -6069,24 +6069,24 @@
"@types/node" "*"
form-data "^3.0.0"

"@types/node-fetch@^2.1.6", "@types/node-fetch@^2.6.1":
"@types/node-fetch@^2.1.6":
version "2.6.1"
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975"
integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==
dependencies:
"@types/node" "*"
form-data "^3.0.0"

"@types/node@*", "@types/[email protected]", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@^16.0.0", "@types/node@^16.11.7":
version "16.11.7"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.7.tgz#36820945061326978c42a01e56b61cd223dfdc42"
integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==

"@types/[email protected]":
"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0":
version "17.0.23"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da"
integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==

"@types/[email protected]", "@types/node@^16.0.0", "@types/node@^16.11.7":
version "16.11.7"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.7.tgz#36820945061326978c42a01e56b61cd223dfdc42"
integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==

"@types/node@^10.1.0", "@types/node@^10.17.60":
version "10.17.60"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b"
Expand Down Expand Up @@ -21834,12 +21834,12 @@ [email protected], tslib@^1.0.0, tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35"
integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==

[email protected], tslib@^2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@~2.3.0:
[email protected], tslib@~2.3.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==

tslib@~2.4.0:
tslib@^2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@~2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
Expand Down

0 comments on commit cc4e454

Please sign in to comment.