gatsby 4.15.1 → 4.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ### [4.15.2](https://github.com/gatsbyjs/gatsby/commits/HEAD/packages/gatsby) (2022-06-01)
7
+
8
+ #### Bug Fixes
9
+
10
+ - prioritize raw body parser [#35780](https://github.com/gatsbyjs/gatsby/issues/35780) [#35786](https://github.com/gatsbyjs/gatsby/issues/35786) ([9f5c107](https://github.com/gatsbyjs/gatsby/commit/9f5c10721d16ca5d2c025254cada60fb85af5a21))
11
+ - Make `GatsbyImageData` nullable [#35777](https://github.com/gatsbyjs/gatsby/issues/35777) [#35785](https://github.com/gatsbyjs/gatsby/issues/35785) ([e7a3e6e](https://github.com/gatsbyjs/gatsby/commit/e7a3e6ebca645bd15f668aa3c2e763d93d648ea0))
12
+ - correctly auto-load preview plugin [#35745](https://github.com/gatsbyjs/gatsby/issues/35745) [#35746](https://github.com/gatsbyjs/gatsby/issues/35746) ([884c554](https://github.com/gatsbyjs/gatsby/commit/884c5545b5030846d9b8fb414b2e20bab2ceb437))
13
+
14
+ #### Chores
15
+
16
+ - re-pin select packages after 'lerna version' [#35725](https://github.com/gatsbyjs/gatsby/issues/35725) [#35726](https://github.com/gatsbyjs/gatsby/issues/35726) ([04f9509](https://github.com/gatsbyjs/gatsby/commit/04f9509ce6295215b87b377855460873e0b5afeb))
17
+
6
18
  ### [4.15.1](https://github.com/gatsbyjs/gatsby/commits/HEAD/packages/gatsby) (2022-05-25)
7
19
 
8
20
  #### Bug Fixes
@@ -181,6 +181,6 @@ async function executeFunction(req, res, next) {
181
181
 
182
182
  function functionMiddlewares(middlewareConfig) {
183
183
  const setContext = createSetContextFunctionMiddleware(middlewareConfig);
184
- return [setCookies, setContext, (0, _multer.default)().any(), bodyParserMiddlewareWithConfig(`text`), bodyParserMiddlewareWithConfig(`urlencoded`), bodyParserMiddlewareWithConfig(`json`), bodyParserMiddlewareWithConfig(`raw`), executeFunction];
184
+ return [setCookies, setContext, (0, _multer.default)().any(), bodyParserMiddlewareWithConfig(`raw`), bodyParserMiddlewareWithConfig(`text`), bodyParserMiddlewareWithConfig(`urlencoded`), bodyParserMiddlewareWithConfig(`json`), executeFunction];
185
185
  }
186
186
  //# sourceMappingURL=middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/internal-plugins/functions/middleware.ts"],"names":["expressBuiltinMiddleware","urlencoded","text","json","raw","createSetContextFunctionMiddleware","getFunctions","prepareFn","showDebugMessageInResponse","executeFunction","req","res","next","functions","pathFragment","params","functionObj","find","functionRoute","some","f","matchPath","matchResult","userConfig","pathToFunction","absoluteCompiledFilePath","fnToExecute","require","cache","resolve","fn","config","default","e","message","includes","originalAbsoluteFilePath","undefined","reporter","error","headersSent","status","send","sendStatus","context","setCookies","_res","cookies","headers","cookie","parse","bodyParserMiddlewareWithConfig","type","bodyParser","bodyParserConfig","verbose","start","Date","now","Promise","end","log","functionMiddlewares","middlewareConfig","setContext","any"],"mappings":"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","sourcesContent":["import { match as reachMatch } from \"@gatsbyjs/reach-router/lib/utils\"\nimport cookie from \"cookie\"\nimport { urlencoded, text, json, raw } from \"express\"\nimport type { RequestHandler, Request, Response, NextFunction } from \"express\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport multer from \"multer\"\n\nimport {\n createConfig,\n IGatsbyFunctionConfigProcessed,\n IGatsbyBodyParserConfigProcessed,\n} from \"./config\"\nimport type { IGatsbyFunction } from \"../../redux/types\"\n\nconst expressBuiltinMiddleware = {\n urlencoded,\n text,\n json,\n raw,\n}\n\ninterface IGatsbyRequestContext {\n functionObj: IGatsbyFunction\n fnToExecute: (req: Request, res: Response) => void | Promise<void>\n // we massage params early in setContext middleware, but apparently other middlewares\n // reset it, so we will store those on our context and restore later\n params: Request[\"params\"]\n config: IGatsbyFunctionConfigProcessed\n showDebugMessageInResponse: boolean\n}\n\ninterface IGatsbyInternalRequest extends Request {\n context?: IGatsbyRequestContext\n}\n\ntype IGatsbyMiddleware = (\n req: IGatsbyInternalRequest,\n res: Response,\n next: NextFunction\n) => Promise<void> | void\n\ninterface ICreateMiddlewareConfig {\n getFunctions: () => Array<IGatsbyFunction>\n prepareFn?: (functionObj: IGatsbyFunction) => Promise<void> | void\n showDebugMessageInResponse?: boolean\n}\n\nfunction createSetContextFunctionMiddleware({\n getFunctions,\n prepareFn,\n showDebugMessageInResponse,\n}: ICreateMiddlewareConfig): IGatsbyMiddleware {\n return async function executeFunction(\n req: IGatsbyInternalRequest,\n res: Response,\n next: NextFunction\n ): Promise<void> {\n const functions = getFunctions()\n const { \"0\": pathFragment } = req.params\n\n // Check first for exact matches.\n let functionObj = functions.find(\n ({ functionRoute }) => functionRoute === pathFragment\n )\n\n if (!functionObj) {\n // Check if there's any matchPaths that match.\n // We loop until we find the first match.\n functions.some(f => {\n if (f.matchPath) {\n const matchResult = reachMatch(f.matchPath, pathFragment)\n if (matchResult) {\n req.params = matchResult.params\n if (req.params[`*`]) {\n // Backwards compatability for v3\n // TODO remove in v5\n req.params[`0`] = req.params[`*`]\n }\n functionObj = f\n\n return true\n }\n }\n\n return false\n })\n }\n\n if (functionObj) {\n let userConfig\n if (prepareFn) {\n await prepareFn(functionObj)\n }\n\n const pathToFunction = functionObj.absoluteCompiledFilePath\n let fnToExecute\n try {\n delete require.cache[require.resolve(pathToFunction)]\n const fn = require(pathToFunction)\n userConfig = fn?.config\n\n fnToExecute = (fn && fn.default) || fn\n } catch (e) {\n if (e?.message?.includes(`fnToExecute is not a function`)) {\n e.message = `${functionObj.originalAbsoluteFilePath} does not export a function.`\n }\n\n fnToExecute = undefined\n reporter.error(e)\n if (!res.headersSent) {\n if (showDebugMessageInResponse) {\n res\n .status(500)\n .send(\n `Error when executing function \"${functionObj.originalAbsoluteFilePath}\":<br /><br />${e.message}`\n )\n } else {\n res.sendStatus(500)\n }\n }\n return\n }\n\n if (fnToExecute) {\n req.context = {\n functionObj,\n fnToExecute,\n params: req.params,\n config: createConfig(userConfig, functionObj),\n showDebugMessageInResponse: showDebugMessageInResponse ?? false,\n }\n }\n }\n\n next()\n }\n}\n\nfunction setCookies(\n req: IGatsbyInternalRequest,\n _res: Response,\n next: NextFunction\n): void {\n const cookies = req.headers.cookie\n\n if (!cookies) {\n return next()\n }\n\n req.cookies = cookie.parse(cookies)\n\n return next()\n}\n\nfunction bodyParserMiddlewareWithConfig(\n type: keyof IGatsbyBodyParserConfigProcessed\n): IGatsbyMiddleware {\n return function (\n req: IGatsbyInternalRequest,\n res: Response,\n next: NextFunction\n ): void {\n if (req.context && req.context.config.bodyParser) {\n const bodyParserConfig = req.context.config.bodyParser[type]\n expressBuiltinMiddleware[type](bodyParserConfig)(req, res, next)\n } else {\n next()\n }\n }\n}\n\nasync function executeFunction(\n req: IGatsbyInternalRequest,\n res: Response,\n next: NextFunction\n): Promise<void> {\n if (req.context) {\n reporter.verbose(`Running ${req.context.functionObj.functionRoute}`)\n req.params = req.context.params\n const start = Date.now()\n const context = req.context\n // we don't want to leak internal context to actual request handler\n delete req.context\n try {\n await Promise.resolve(context.fnToExecute(req, res))\n } catch (e) {\n if (e?.message?.includes(`fnToExecute is not a function`)) {\n e.message = `${context.functionObj.originalAbsoluteFilePath} does not export a function.`\n }\n\n reporter.error(e)\n // Don't send the error if that would cause another error.\n if (!res.headersSent) {\n if (context.showDebugMessageInResponse) {\n res\n .status(500)\n .send(\n `Error when executing function \"${context.functionObj.originalAbsoluteFilePath}\":<br /><br />${e.message}`\n )\n } else {\n res.sendStatus(500)\n }\n }\n }\n\n const end = Date.now()\n reporter.log(\n `Executed function \"/api/${context.functionObj.functionRoute}\" in ${\n end - start\n }ms`\n )\n } else {\n next()\n }\n}\n\nexport function functionMiddlewares(\n middlewareConfig: ICreateMiddlewareConfig\n): Array<RequestHandler> {\n const setContext = createSetContextFunctionMiddleware(middlewareConfig)\n\n return [\n setCookies,\n setContext,\n multer().any(),\n bodyParserMiddlewareWithConfig(`text`),\n bodyParserMiddlewareWithConfig(`urlencoded`),\n bodyParserMiddlewareWithConfig(`json`),\n bodyParserMiddlewareWithConfig(`raw`),\n executeFunction,\n ]\n}\n"],"file":"middleware.js"}
1
+ {"version":3,"sources":["../../../src/internal-plugins/functions/middleware.ts"],"names":["expressBuiltinMiddleware","urlencoded","text","json","raw","createSetContextFunctionMiddleware","getFunctions","prepareFn","showDebugMessageInResponse","executeFunction","req","res","next","functions","pathFragment","params","functionObj","find","functionRoute","some","f","matchPath","matchResult","userConfig","pathToFunction","absoluteCompiledFilePath","fnToExecute","require","cache","resolve","fn","config","default","e","message","includes","originalAbsoluteFilePath","undefined","reporter","error","headersSent","status","send","sendStatus","context","setCookies","_res","cookies","headers","cookie","parse","bodyParserMiddlewareWithConfig","type","bodyParser","bodyParserConfig","verbose","start","Date","now","Promise","end","log","functionMiddlewares","middlewareConfig","setContext","any"],"mappings":"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","sourcesContent":["import { match as reachMatch } from \"@gatsbyjs/reach-router/lib/utils\"\nimport cookie from \"cookie\"\nimport { urlencoded, text, json, raw } from \"express\"\nimport type { RequestHandler, Request, Response, NextFunction } from \"express\"\nimport reporter from \"gatsby-cli/lib/reporter\"\nimport multer from \"multer\"\n\nimport {\n createConfig,\n IGatsbyFunctionConfigProcessed,\n IGatsbyBodyParserConfigProcessed,\n} from \"./config\"\nimport type { IGatsbyFunction } from \"../../redux/types\"\n\nconst expressBuiltinMiddleware = {\n urlencoded,\n text,\n json,\n raw,\n}\n\ninterface IGatsbyRequestContext {\n functionObj: IGatsbyFunction\n fnToExecute: (req: Request, res: Response) => void | Promise<void>\n // we massage params early in setContext middleware, but apparently other middlewares\n // reset it, so we will store those on our context and restore later\n params: Request[\"params\"]\n config: IGatsbyFunctionConfigProcessed\n showDebugMessageInResponse: boolean\n}\n\ninterface IGatsbyInternalRequest extends Request {\n context?: IGatsbyRequestContext\n}\n\ntype IGatsbyMiddleware = (\n req: IGatsbyInternalRequest,\n res: Response,\n next: NextFunction\n) => Promise<void> | void\n\ninterface ICreateMiddlewareConfig {\n getFunctions: () => Array<IGatsbyFunction>\n prepareFn?: (functionObj: IGatsbyFunction) => Promise<void> | void\n showDebugMessageInResponse?: boolean\n}\n\nfunction createSetContextFunctionMiddleware({\n getFunctions,\n prepareFn,\n showDebugMessageInResponse,\n}: ICreateMiddlewareConfig): IGatsbyMiddleware {\n return async function executeFunction(\n req: IGatsbyInternalRequest,\n res: Response,\n next: NextFunction\n ): Promise<void> {\n const functions = getFunctions()\n const { \"0\": pathFragment } = req.params\n\n // Check first for exact matches.\n let functionObj = functions.find(\n ({ functionRoute }) => functionRoute === pathFragment\n )\n\n if (!functionObj) {\n // Check if there's any matchPaths that match.\n // We loop until we find the first match.\n functions.some(f => {\n if (f.matchPath) {\n const matchResult = reachMatch(f.matchPath, pathFragment)\n if (matchResult) {\n req.params = matchResult.params\n if (req.params[`*`]) {\n // Backwards compatability for v3\n // TODO remove in v5\n req.params[`0`] = req.params[`*`]\n }\n functionObj = f\n\n return true\n }\n }\n\n return false\n })\n }\n\n if (functionObj) {\n let userConfig\n if (prepareFn) {\n await prepareFn(functionObj)\n }\n\n const pathToFunction = functionObj.absoluteCompiledFilePath\n let fnToExecute\n try {\n delete require.cache[require.resolve(pathToFunction)]\n const fn = require(pathToFunction)\n userConfig = fn?.config\n\n fnToExecute = (fn && fn.default) || fn\n } catch (e) {\n if (e?.message?.includes(`fnToExecute is not a function`)) {\n e.message = `${functionObj.originalAbsoluteFilePath} does not export a function.`\n }\n\n fnToExecute = undefined\n reporter.error(e)\n if (!res.headersSent) {\n if (showDebugMessageInResponse) {\n res\n .status(500)\n .send(\n `Error when executing function \"${functionObj.originalAbsoluteFilePath}\":<br /><br />${e.message}`\n )\n } else {\n res.sendStatus(500)\n }\n }\n return\n }\n\n if (fnToExecute) {\n req.context = {\n functionObj,\n fnToExecute,\n params: req.params,\n config: createConfig(userConfig, functionObj),\n showDebugMessageInResponse: showDebugMessageInResponse ?? false,\n }\n }\n }\n\n next()\n }\n}\n\nfunction setCookies(\n req: IGatsbyInternalRequest,\n _res: Response,\n next: NextFunction\n): void {\n const cookies = req.headers.cookie\n\n if (!cookies) {\n return next()\n }\n\n req.cookies = cookie.parse(cookies)\n\n return next()\n}\n\nfunction bodyParserMiddlewareWithConfig(\n type: keyof IGatsbyBodyParserConfigProcessed\n): IGatsbyMiddleware {\n return function (\n req: IGatsbyInternalRequest,\n res: Response,\n next: NextFunction\n ): void {\n if (req.context && req.context.config.bodyParser) {\n const bodyParserConfig = req.context.config.bodyParser[type]\n expressBuiltinMiddleware[type](bodyParserConfig)(req, res, next)\n } else {\n next()\n }\n }\n}\n\nasync function executeFunction(\n req: IGatsbyInternalRequest,\n res: Response,\n next: NextFunction\n): Promise<void> {\n if (req.context) {\n reporter.verbose(`Running ${req.context.functionObj.functionRoute}`)\n req.params = req.context.params\n const start = Date.now()\n const context = req.context\n // we don't want to leak internal context to actual request handler\n delete req.context\n try {\n await Promise.resolve(context.fnToExecute(req, res))\n } catch (e) {\n if (e?.message?.includes(`fnToExecute is not a function`)) {\n e.message = `${context.functionObj.originalAbsoluteFilePath} does not export a function.`\n }\n\n reporter.error(e)\n // Don't send the error if that would cause another error.\n if (!res.headersSent) {\n if (context.showDebugMessageInResponse) {\n res\n .status(500)\n .send(\n `Error when executing function \"${context.functionObj.originalAbsoluteFilePath}\":<br /><br />${e.message}`\n )\n } else {\n res.sendStatus(500)\n }\n }\n }\n\n const end = Date.now()\n reporter.log(\n `Executed function \"/api/${context.functionObj.functionRoute}\" in ${\n end - start\n }ms`\n )\n } else {\n next()\n }\n}\n\nexport function functionMiddlewares(\n middlewareConfig: ICreateMiddlewareConfig\n): Array<RequestHandler> {\n const setContext = createSetContextFunctionMiddleware(middlewareConfig)\n\n return [\n setCookies,\n setContext,\n multer().any(),\n bodyParserMiddlewareWithConfig(`raw`),\n bodyParserMiddlewareWithConfig(`text`),\n bodyParserMiddlewareWithConfig(`urlencoded`),\n bodyParserMiddlewareWithConfig(`json`),\n executeFunction,\n ]\n}\n"],"file":"middleware.js"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "gatsby",
3
3
  "description": "Blazing fast modern site generator for React",
4
- "version": "4.15.1",
4
+ "version": "4.15.2",
5
5
  "author": "Kyle Mathews <mathews.kyle@gmail.com>",
6
6
  "bin": {
7
7
  "gatsby": "./cli.js"
@@ -87,18 +87,18 @@
87
87
  "find-cache-dir": "^3.3.2",
88
88
  "fs-exists-cached": "1.0.0",
89
89
  "fs-extra": "^10.1.0",
90
- "gatsby-cli": "^4.15.0",
90
+ "gatsby-cli": "^4.15.1",
91
91
  "gatsby-core-utils": "^3.15.0",
92
92
  "gatsby-graphiql-explorer": "^2.15.0",
93
93
  "gatsby-legacy-polyfills": "^2.15.0",
94
94
  "gatsby-link": "^4.15.0",
95
95
  "gatsby-page-utils": "^2.15.0",
96
96
  "gatsby-parcel-config": "0.6.0",
97
- "gatsby-plugin-page-creator": "^4.15.0",
97
+ "gatsby-plugin-page-creator": "^4.15.1",
98
98
  "gatsby-plugin-typescript": "^4.15.0",
99
- "gatsby-plugin-utils": "^3.9.0",
99
+ "gatsby-plugin-utils": "^3.9.1",
100
100
  "gatsby-react-router-scroll": "^5.15.0",
101
- "gatsby-script": "^1.0.0",
101
+ "gatsby-script": "^1.0.1",
102
102
  "gatsby-telemetry": "^3.15.0",
103
103
  "gatsby-worker": "^1.15.0",
104
104
  "glob": "^7.2.3",
@@ -277,5 +277,5 @@
277
277
  "yargs": {
278
278
  "boolean-negation": false
279
279
  },
280
- "gitHead": "823b22e83a36b3fb9e653d96b8fe95e2d79e7323"
280
+ "gitHead": "2652fa800cf5f21861368b332ea55de210cabcb3"
281
281
  }