UNPKG

3.66 kBSource Map (JSON)View Raw
1{"version":3,"file":"api-function-webpack-loader.js","names":["APIFunctionLoader","params","URLSearchParams","resourceQuery","matchPath","get","modulePath","slash","resourcePath","require","resolve"],"sources":["../../../src/internal-plugins/functions/api-function-webpack-loader.ts"],"sourcesContent":["import { slash } from \"gatsby-core-utils\"\nimport type { LoaderDefinition } from \"webpack\"\n\nconst APIFunctionLoader: LoaderDefinition = async function () {\n const params = new URLSearchParams(this.resourceQuery)\n const matchPath = params.get(`matchPath`)\n\n const modulePath = slash(this.resourcePath)\n\n return /* javascript */ `\n const preferDefault = m => (m && m.default) || m\n\n const functionModule = require('${slash(modulePath)}');\n const functionToExecute = preferDefault(functionModule);\n const matchPath = '${matchPath}';\n const { match: reachMatch } = require('${slash(\n require.resolve(`@gatsbyjs/reach-router`)\n )}');\n const { urlencoded, text, json, raw } = require('${slash(\n require.resolve(`body-parser`)\n )}')\n const multer = require('${slash(require.resolve(`multer`))}')\n const { createConfig } = require('${slash(require.resolve(`./config`))}')\n\n function functionWrapper(req, res) {\n if (matchPath) {\n let functionPath = req.originalUrl\n\n functionPath = functionPath.replace(new RegExp('^/*' + PREFIX_TO_STRIP), '')\n functionPath = functionPath.replace(new RegExp('^/*api/?'), '')\n\n const matchResult = reachMatch(matchPath, functionPath)\n if (matchResult) {\n req.params = matchResult.params\n if (req.params['*']) {\n // TODO(v6): Remove this backwards compatability for v3\n req.params['0'] = req.params['*']\n }\n }\n }\n\n // handle body parsing if request stream was not yet consumed\n const { config } = createConfig(functionModule?.config)\n const middlewares = \n req.readableEnded \n ? [] \n : [\n multer().any(),\n raw(config?.bodyParser?.raw ?? { limit: '100kb' }),\n text(config?.bodyParser?.text ?? { limit: '100kb' }),\n urlencoded(config?.bodyParser?.urlencoded ?? { limit: '100kb', extended: true }),\n json(config?.bodyParser?.json ?? { limit: '100kb' })\n ]\n\n let i = 0\n function runMiddlewareOrFunction() {\n if (i >= middlewares.length) {\n functionToExecute(req, res);\n } else {\n middlewares[i++](req, res, runMiddlewareOrFunction)\n }\n }\n\n\n runMiddlewareOrFunction() \n }\n\n module.exports = typeof functionToExecute === 'function' \n ? {\n default: functionWrapper,\n config: functionModule?.config\n } : functionModule\n `\n}\n\nexport default APIFunctionLoader\n"],"mappings":";;;;AAAA;AAGA,MAAMA,iBAAmC,GAAG,kBAAkB;EAC5D,MAAMC,MAAM,GAAG,IAAIC,eAAe,CAAC,IAAI,CAACC,aAAa,CAAC;EACtD,MAAMC,SAAS,GAAGH,MAAM,CAACI,GAAG,CAAE,WAAU,CAAC;EAEzC,MAAMC,UAAU,GAAG,IAAAC,sBAAK,EAAC,IAAI,CAACC,YAAY,CAAC;EAE3C,OAAO,iBAAkB;AAC3B;AACA;AACA,oCAAoC,IAAAD,sBAAK,EAACD,UAAU,CAAE;AACtD;AACA,uBAAuBF,SAAU;AACjC,2CAA2C,IAAAG,sBAAK,EAC5CE,OAAO,CAACC,OAAO,CAAE,wBAAuB,CAAC,CACzC;AACJ,qDAAqD,IAAAH,sBAAK,EACtDE,OAAO,CAACC,OAAO,CAAE,aAAY,CAAC,CAC9B;AACJ,4BAA4B,IAAAH,sBAAK,EAACE,OAAO,CAACC,OAAO,CAAE,QAAO,CAAC,CAAE;AAC7D,sCAAsC,IAAAH,sBAAK,EAACE,OAAO,CAACC,OAAO,CAAE,UAAS,CAAC,CAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAAG;AACH,CAAC;AAAA,eAEcV,iBAAiB;AAAA"}
\No newline at end of file