@gahojin-inc/middy-http-body-parser 2026.3.3 → 2026.5.0

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.
@@ -0,0 +1,21 @@
1
+ import { default as middy } from '@middy/core';
2
+ import { ALBEvent, APIGatewayEvent, APIGatewayProxyEventV2 } from 'aws-lambda';
3
+ type BodyParseFn<TResult = any> = (body: string, rawBody: string) => TResult;
4
+ type BodyParser<TResult = any> = {
5
+ contentType: RegExp;
6
+ parse: BodyParseFn<TResult>;
7
+ invalidMessage: string;
8
+ } & ({
9
+ errorWhenUndefined: true;
10
+ } | {
11
+ errorWhenUndefined: false;
12
+ responseWhenUndefined: any;
13
+ });
14
+ type Options = {
15
+ parsers: BodyParser[];
16
+ disableContentTypeError: boolean;
17
+ };
18
+ type RequestEvent = APIGatewayEvent | APIGatewayProxyEventV2 | ALBEvent;
19
+ declare const parser: (options?: Partial<Options>) => middy.MiddlewareObj<RequestEvent>;
20
+ export default parser;
21
+ export type { BodyParser };
@@ -1,12 +1,12 @@
1
- import jsonParser from "./parser/json.mjs";
2
- import urlencodeParser from "./parser/urlencode.mjs";
1
+ import jsonParser from "./parser/json.js";
2
+ import urlencodeParser from "./parser/urlencode.js";
3
3
  import { createError } from "@middy/util";
4
4
  //#region src/index.ts
5
- const defaultOptions = {
5
+ var defaultOptions = {
6
6
  parsers: [jsonParser, urlencodeParser],
7
7
  disableContentTypeError: false
8
8
  };
9
- const parser = (options = {}) => {
9
+ var parser = (options = {}) => {
10
10
  const { parsers, disableContentTypeError } = {
11
11
  ...defaultOptions,
12
12
  ...options
@@ -48,4 +48,4 @@ const parser = (options = {}) => {
48
48
  //#endregion
49
49
  export { parser as default };
50
50
 
51
- //# sourceMappingURL=index.mjs.map
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type middy from '@middy/core'\nimport { createError } from '@middy/util'\nimport type { ALBEvent, APIGatewayEvent, APIGatewayProxyEventV2 } from 'aws-lambda'\nimport jsonParser from './parser/json.js'\nimport urlencodeParser from './parser/urlencode.js'\n\ntype BodyParseFn<TResult = any> = (body: string, rawBody: string) => TResult\n\ntype BodyParser<TResult = any> = {\n contentType: RegExp\n parse: BodyParseFn<TResult>\n invalidMessage: string\n} & (\n | {\n errorWhenUndefined: true\n }\n | {\n errorWhenUndefined: false\n responseWhenUndefined: any\n }\n)\n\ntype Options = {\n parsers: BodyParser[]\n disableContentTypeError: boolean\n}\n\ntype RequestEvent = APIGatewayEvent | APIGatewayProxyEventV2 | ALBEvent\n\nconst defaultOptions: Options = {\n parsers: [jsonParser, urlencodeParser],\n disableContentTypeError: false,\n}\n\nconst parser = (options: Partial<Options> = {}): middy.MiddlewareObj<RequestEvent> => {\n const opts: Options = { ...defaultOptions, ...options }\n const { parsers, disableContentTypeError } = opts\n\n const beforeFn: middy.MiddlewareFn<RequestEvent> = (request) => {\n const { headers, body } = request.event\n const contentType = headers?.['content-type'] ?? headers?.['Content-Type']\n\n const parser = parsers.find((parser) => {\n return contentType && parser.contentType.test(contentType)\n })\n if (!parser) {\n if (disableContentTypeError) {\n return\n }\n throw createError(415, 'Unsupported Media Type', {\n cause: { package: '@gahojin-inc/middy-http-body-parser', data: contentType },\n })\n }\n\n if (typeof body === 'undefined' || body === null) {\n if (parser.errorWhenUndefined === true) {\n throw createError(415, parser.invalidMessage, {\n cause: { package: '@gahojin-inc/middy-http-body-parser', data: body },\n })\n }\n request.event.body = parser.responseWhenUndefined\n return\n }\n\n try {\n const data = request.event.isBase64Encoded ? Buffer.from(body, 'base64').toString() : body\n\n request.event.body = parser.parse(data, body)\n } catch (err) {\n // UnprocessableEntity\n throw createError(415, parser.invalidMessage, {\n cause: { package: '@gahojin-inc/middy-http-body-parser', data: body, message: err instanceof Error ? err.message : err?.toString() },\n })\n }\n }\n\n return {\n before: beforeFn,\n }\n}\n\nexport default parser\nexport type { BodyParser }\n"],"mappings":";;;;AA6BA,IAAM,iBAA0B;CAC9B,SAAS,CAAC,YAAY,gBAAgB;CACtC,yBAAyB;CAC1B;AAED,IAAM,UAAU,UAA4B,EAAE,KAAwC;CAEpF,MAAM,EAAE,SAAS,4BAA4B;EADrB,GAAG;EAAgB,GAAG;EACD;CAE7C,MAAM,YAA8C,YAAY;EAC9D,MAAM,EAAE,SAAS,SAAS,QAAQ;EAClC,MAAM,cAAc,UAAU,mBAAmB,UAAU;EAE3D,MAAM,SAAS,QAAQ,MAAM,WAAW;AACtC,UAAO,eAAe,OAAO,YAAY,KAAK,YAAY;IAC1D;AACF,MAAI,CAAC,QAAQ;AACX,OAAI,wBACF;AAEF,SAAM,YAAY,KAAK,0BAA0B,EAC/C,OAAO;IAAE,SAAS;IAAuC,MAAM;IAAa,EAC7E,CAAC;;AAGJ,MAAI,OAAO,SAAS,eAAe,SAAS,MAAM;AAChD,OAAI,OAAO,uBAAuB,KAChC,OAAM,YAAY,KAAK,OAAO,gBAAgB,EAC5C,OAAO;IAAE,SAAS;IAAuC,MAAM;IAAM,EACtE,CAAC;AAEJ,WAAQ,MAAM,OAAO,OAAO;AAC5B;;AAGF,MAAI;GACF,MAAM,OAAO,QAAQ,MAAM,kBAAkB,OAAO,KAAK,MAAM,SAAS,CAAC,UAAU,GAAG;AAEtF,WAAQ,MAAM,OAAO,OAAO,MAAM,MAAM,KAAK;WACtC,KAAK;AAEZ,SAAM,YAAY,KAAK,OAAO,gBAAgB,EAC5C,OAAO;IAAE,SAAS;IAAuC,MAAM;IAAM,SAAS,eAAe,QAAQ,IAAI,UAAU,KAAK,UAAU;IAAE,EACrI,CAAC;;;AAIN,QAAO,EACL,QAAQ,UACT"}
@@ -1,3 +1,3 @@
1
- import type { BodyParser } from "../index.cjs";
1
+ import { BodyParser } from '../index.js';
2
2
  declare const jsonParser: BodyParser;
3
3
  export default jsonParser;
@@ -1,5 +1,5 @@
1
1
  //#region src/parser/json.ts
2
- const jsonParser = {
2
+ var jsonParser = {
3
3
  contentType: /^application\/(.+\+)?json($|;.+)/,
4
4
  parse: (body) => {
5
5
  return JSON.parse(body);
@@ -10,4 +10,4 @@ const jsonParser = {
10
10
  //#endregion
11
11
  export { jsonParser as default };
12
12
 
13
- //# sourceMappingURL=json.mjs.map
13
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","names":[],"sources":["../../src/parser/json.ts"],"sourcesContent":["import type { BodyParser } from '../index.js'\n\nconst invalidMessage = 'Invalid or malformed JSON was provided'\n\nconst jsonParser: BodyParser = {\n contentType: /^application\\/(.+\\+)?json($|;.+)/,\n parse: (body) => {\n return JSON.parse(body)\n },\n invalidMessage,\n errorWhenUndefined: true,\n}\n\nexport default jsonParser\n"],"mappings":";AAIA,IAAM,aAAyB;CAC7B,aAAa;CACb,QAAQ,SAAS;AACf,SAAO,KAAK,MAAM,KAAK;;CAEzB,gBAAA;CACA,oBAAoB;CACrB"}
@@ -1,3 +1,3 @@
1
- import type { BodyParser } from "../index.cjs";
1
+ import { BodyParser } from '../index.js';
2
2
  declare const urlencodeParser: BodyParser;
3
3
  export default urlencodeParser;
@@ -1,7 +1,7 @@
1
1
  import querystring from "node:querystring";
2
2
  //#region src/parser/urlencode.ts
3
- const invalidMessage = "Invalid or malformed URL encoded form was provided";
4
- const urlencodeParser = {
3
+ var invalidMessage = "Invalid or malformed URL encoded form was provided";
4
+ var urlencodeParser = {
5
5
  contentType: /^application\/x-www-form-urlencoded(;.*)?$/,
6
6
  parse: (body) => {
7
7
  const ret = Object.assign({}, querystring.parse(body));
@@ -15,4 +15,4 @@ const urlencodeParser = {
15
15
  //#endregion
16
16
  export { urlencodeParser as default };
17
17
 
18
- //# sourceMappingURL=urlencode.mjs.map
18
+ //# sourceMappingURL=urlencode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlencode.js","names":[],"sources":["../../src/parser/urlencode.ts"],"sourcesContent":["import querystring from 'node:querystring'\nimport type { BodyParser } from '../index.js'\n\nconst invalidMessage = 'Invalid or malformed URL encoded form was provided'\nconst urlencodeParser: BodyParser = {\n contentType: /^application\\/x-www-form-urlencoded(;.*)?$/,\n parse: (body) => {\n const ret = Object.assign({}, querystring.parse(body))\n if (ret?.[body] === '') {\n throw new Error(invalidMessage)\n }\n return ret\n },\n invalidMessage,\n errorWhenUndefined: false,\n responseWhenUndefined: {},\n}\n\nexport default urlencodeParser\n"],"mappings":";;AAGA,IAAM,iBAAiB;AACvB,IAAM,kBAA8B;CAClC,aAAa;CACb,QAAQ,SAAS;EACf,MAAM,MAAM,OAAO,OAAO,EAAE,EAAE,YAAY,MAAM,KAAK,CAAC;AACtD,MAAI,MAAM,UAAU,GAClB,OAAM,IAAI,MAAM,eAAe;AAEjC,SAAO;;CAET;CACA,oBAAoB;CACpB,uBAAuB,EAAE;CAC1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gahojin-inc/middy-http-body-parser",
3
- "version": "2026.3.3",
3
+ "version": "2026.5.0",
4
4
  "description": "Middy HTTP body parser",
5
5
  "author": "GAHOJIN, Inc.",
6
6
  "license": "Apache-2.0",
@@ -23,46 +23,34 @@
23
23
  "access": "public",
24
24
  "provenance": true
25
25
  },
26
- "main": "./dist/index.cjs",
27
- "module": "./dist/index.mjs",
28
- "types": "./dist/index.d.cts",
26
+ "main": "./dist/index.js",
27
+ "module": "./dist/index.js",
28
+ "types": "./dist/index.d.ts",
29
29
  "exports": {
30
30
  "./package.json": "./package.json",
31
31
  ".": {
32
32
  "import": {
33
- "types": "./dist/index.d.mts",
34
- "default": "./dist/index.mjs"
35
- },
36
- "require": {
37
- "types": "./dist/index.d.cts",
38
- "default": "./dist/index.cjs"
33
+ "types": "./dist/index.d.ts",
34
+ "default": "./dist/index.js"
39
35
  }
40
36
  },
41
37
  "./parser/json": {
42
38
  "import": {
43
- "types": "./dist/parser/json.d.mts",
44
- "default": "./dist/parser/json.mjs"
45
- },
46
- "require": {
47
- "types": "./dist/parser/json.d.cts",
48
- "default": "./dist/parser/json.cjs"
39
+ "types": "./dist/parser/json.d.ts",
40
+ "default": "./dist/parser/json.js"
49
41
  }
50
42
  },
51
43
  "./parser/urlencode": {
52
44
  "import": {
53
- "types": "./dist/parser/urlencode.d.mts",
54
- "default": "./dist/parser/json.mjs"
55
- },
56
- "require": {
57
- "types": "./dist/parser/json.d.cts",
58
- "default": "./dist/parser/urlencode.cjs"
45
+ "types": "./dist/parser/urlencode.d.ts",
46
+ "default": "./dist/parser/urlencode.js"
59
47
  }
60
48
  }
61
49
  },
62
50
  "devDependencies": {
63
- "@gahojin-inc/aws-lambda-mock-context": "2026.2.0",
64
- "@middy/core": "7.1.7",
65
- "@middy/util": "7.1.7",
51
+ "@gahojin-inc/aws-lambda-mock-context": "2026.4.0",
52
+ "@middy/core": "7.3.3",
53
+ "@middy/util": "7.3.3",
66
54
  "@types/aws-lambda": "8.10.161"
67
55
  },
68
56
  "peerDependencies": {
@@ -71,11 +59,11 @@
71
59
  "@types/aws-lambda": "^8"
72
60
  },
73
61
  "scripts": {
74
- "build": "rolldown -c",
62
+ "build": "vite build",
75
63
  "lint": "biome check --write .",
76
64
  "lint:ci": "biome ci .",
77
65
  "check": "tsc --noEmit",
78
- "check:packagejson": "attw --pack --profile node16 .",
66
+ "check:packagejson": "attw --pack --profile esm-only .",
79
67
  "test": "vitest --watch",
80
68
  "test:unit": "vitest --passWithNoTests --run --coverage"
81
69
  }
package/dist/index.cjs DELETED
@@ -1,55 +0,0 @@
1
- Object.defineProperties(exports, {
2
- __esModule: { value: true },
3
- [Symbol.toStringTag]: { value: "Module" }
4
- });
5
- const require_urlencode = require("./urlencode-CdbvAHSA.js");
6
- const require_parser_json = require("./parser/json.cjs");
7
- let _middy_util = require("@middy/util");
8
- //#region src/index.ts
9
- const defaultOptions = {
10
- parsers: [require_parser_json.default, require_urlencode.urlencodeParser],
11
- disableContentTypeError: false
12
- };
13
- const parser = (options = {}) => {
14
- const { parsers, disableContentTypeError } = {
15
- ...defaultOptions,
16
- ...options
17
- };
18
- const beforeFn = (request) => {
19
- const { headers, body } = request.event;
20
- const contentType = headers?.["content-type"] ?? headers?.["Content-Type"];
21
- const parser = parsers.find((parser) => {
22
- return contentType && parser.contentType.test(contentType);
23
- });
24
- if (!parser) {
25
- if (disableContentTypeError) return;
26
- throw (0, _middy_util.createError)(415, "Unsupported Media Type", { cause: {
27
- package: "@gahojin-inc/middy-http-body-parser",
28
- data: contentType
29
- } });
30
- }
31
- if (typeof body === "undefined" || body === null) {
32
- if (parser.errorWhenUndefined === true) throw (0, _middy_util.createError)(415, parser.invalidMessage, { cause: {
33
- package: "@gahojin-inc/middy-http-body-parser",
34
- data: body
35
- } });
36
- request.event.body = parser.responseWhenUndefined;
37
- return;
38
- }
39
- try {
40
- const data = request.event.isBase64Encoded ? Buffer.from(body, "base64").toString() : body;
41
- request.event.body = parser.parse(data, body);
42
- } catch (err) {
43
- throw (0, _middy_util.createError)(415, parser.invalidMessage, { cause: {
44
- package: "@gahojin-inc/middy-http-body-parser",
45
- data: body,
46
- message: err instanceof Error ? err.message : err?.toString()
47
- } });
48
- }
49
- };
50
- return { before: beforeFn };
51
- };
52
- //#endregion
53
- exports.default = parser;
54
-
55
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","names":["jsonParser","urlencodeParser"],"sources":["../src/index.ts"],"sourcesContent":["import type middy from '@middy/core'\nimport { createError } from '@middy/util'\nimport type { ALBEvent, APIGatewayEvent, APIGatewayProxyEventV2 } from 'aws-lambda'\nimport jsonParser from './parser/json'\nimport urlencodeParser from './parser/urlencode'\n\ntype BodyParseFn<TResult = any> = (body: string, rawBody: string) => TResult\n\ntype BodyParser<TResult = any> = {\n contentType: RegExp\n parse: BodyParseFn<TResult>\n invalidMessage: string\n} & (\n | {\n errorWhenUndefined: true\n }\n | {\n errorWhenUndefined: false\n responseWhenUndefined: any\n }\n)\n\ntype Options = {\n parsers: BodyParser[]\n disableContentTypeError: boolean\n}\n\ntype RequestEvent = APIGatewayEvent | APIGatewayProxyEventV2 | ALBEvent\n\nconst defaultOptions: Options = {\n parsers: [jsonParser, urlencodeParser],\n disableContentTypeError: false,\n}\n\nconst parser = (options: Partial<Options> = {}): middy.MiddlewareObj<RequestEvent> => {\n const opts: Options = { ...defaultOptions, ...options }\n const { parsers, disableContentTypeError } = opts\n\n const beforeFn: middy.MiddlewareFn<RequestEvent> = (request) => {\n const { headers, body } = request.event\n const contentType = headers?.['content-type'] ?? headers?.['Content-Type']\n\n const parser = parsers.find((parser) => {\n return contentType && parser.contentType.test(contentType)\n })\n if (!parser) {\n if (disableContentTypeError) {\n return\n }\n throw createError(415, 'Unsupported Media Type', {\n cause: { package: '@gahojin-inc/middy-http-body-parser', data: contentType },\n })\n }\n\n if (typeof body === 'undefined' || body === null) {\n if (parser.errorWhenUndefined === true) {\n throw createError(415, parser.invalidMessage, {\n cause: { package: '@gahojin-inc/middy-http-body-parser', data: body },\n })\n }\n request.event.body = parser.responseWhenUndefined\n return\n }\n\n try {\n const data = request.event.isBase64Encoded ? Buffer.from(body, 'base64').toString() : body\n\n request.event.body = parser.parse(data, body)\n } catch (err) {\n // UnprocessableEntity\n throw createError(415, parser.invalidMessage, {\n cause: { package: '@gahojin-inc/middy-http-body-parser', data: body, message: err instanceof Error ? err.message : err?.toString() },\n })\n }\n }\n\n return {\n before: beforeFn,\n }\n}\n\nexport default parser\nexport type { BodyParser }\n"],"mappings":";;;;;;;;AA6BA,MAAM,iBAA0B;CAC9B,SAAS,CAACA,oBAAAA,SAAYC,kBAAAA,gBAAgB;CACtC,yBAAyB;CAC1B;AAED,MAAM,UAAU,UAA4B,EAAE,KAAwC;CAEpF,MAAM,EAAE,SAAS,4BADK;EAAE,GAAG;EAAgB,GAAG;EAAS;CAGvD,MAAM,YAA8C,YAAY;EAC9D,MAAM,EAAE,SAAS,SAAS,QAAQ;EAClC,MAAM,cAAc,UAAU,mBAAmB,UAAU;EAE3D,MAAM,SAAS,QAAQ,MAAM,WAAW;AACtC,UAAO,eAAe,OAAO,YAAY,KAAK,YAAY;IAC1D;AACF,MAAI,CAAC,QAAQ;AACX,OAAI,wBACF;AAEF,UAAA,GAAA,YAAA,aAAkB,KAAK,0BAA0B,EAC/C,OAAO;IAAE,SAAS;IAAuC,MAAM;IAAa,EAC7E,CAAC;;AAGJ,MAAI,OAAO,SAAS,eAAe,SAAS,MAAM;AAChD,OAAI,OAAO,uBAAuB,KAChC,QAAA,GAAA,YAAA,aAAkB,KAAK,OAAO,gBAAgB,EAC5C,OAAO;IAAE,SAAS;IAAuC,MAAM;IAAM,EACtE,CAAC;AAEJ,WAAQ,MAAM,OAAO,OAAO;AAC5B;;AAGF,MAAI;GACF,MAAM,OAAO,QAAQ,MAAM,kBAAkB,OAAO,KAAK,MAAM,SAAS,CAAC,UAAU,GAAG;AAEtF,WAAQ,MAAM,OAAO,OAAO,MAAM,MAAM,KAAK;WACtC,KAAK;AAEZ,UAAA,GAAA,YAAA,aAAkB,KAAK,OAAO,gBAAgB,EAC5C,OAAO;IAAE,SAAS;IAAuC,MAAM;IAAM,SAAS,eAAe,QAAQ,IAAI,UAAU,KAAK,UAAU;IAAE,EACrI,CAAC;;;AAIN,QAAO,EACL,QAAQ,UACT"}
package/dist/index.d.cts DELETED
@@ -1,21 +0,0 @@
1
- import type middy from "@middy/core";
2
- import type { ALBEvent, APIGatewayEvent, APIGatewayProxyEventV2 } from "aws-lambda";
3
- type BodyParseFn<TResult = any> = (body: string, rawBody: string) => TResult;
4
- type BodyParser<TResult = any> = {
5
- contentType: RegExp;
6
- parse: BodyParseFn<TResult>;
7
- invalidMessage: string;
8
- } & ({
9
- errorWhenUndefined: true;
10
- } | {
11
- errorWhenUndefined: false;
12
- responseWhenUndefined: any;
13
- });
14
- type Options = {
15
- parsers: BodyParser[];
16
- disableContentTypeError: boolean;
17
- };
18
- type RequestEvent = APIGatewayEvent | APIGatewayProxyEventV2 | ALBEvent;
19
- declare const parser: (options?: Partial<Options>) => middy.MiddlewareObj<RequestEvent>;
20
- export default parser;
21
- export type { BodyParser };
package/dist/index.d.mts DELETED
@@ -1,21 +0,0 @@
1
- import type middy from "@middy/core";
2
- import type { ALBEvent, APIGatewayEvent, APIGatewayProxyEventV2 } from "aws-lambda";
3
- type BodyParseFn<TResult = any> = (body: string, rawBody: string) => TResult;
4
- type BodyParser<TResult = any> = {
5
- contentType: RegExp;
6
- parse: BodyParseFn<TResult>;
7
- invalidMessage: string;
8
- } & ({
9
- errorWhenUndefined: true;
10
- } | {
11
- errorWhenUndefined: false;
12
- responseWhenUndefined: any;
13
- });
14
- type Options = {
15
- parsers: BodyParser[];
16
- disableContentTypeError: boolean;
17
- };
18
- type RequestEvent = APIGatewayEvent | APIGatewayProxyEventV2 | ALBEvent;
19
- declare const parser: (options?: Partial<Options>) => middy.MiddlewareObj<RequestEvent>;
20
- export default parser;
21
- export type { BodyParser };
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type middy from '@middy/core'\nimport { createError } from '@middy/util'\nimport type { ALBEvent, APIGatewayEvent, APIGatewayProxyEventV2 } from 'aws-lambda'\nimport jsonParser from './parser/json'\nimport urlencodeParser from './parser/urlencode'\n\ntype BodyParseFn<TResult = any> = (body: string, rawBody: string) => TResult\n\ntype BodyParser<TResult = any> = {\n contentType: RegExp\n parse: BodyParseFn<TResult>\n invalidMessage: string\n} & (\n | {\n errorWhenUndefined: true\n }\n | {\n errorWhenUndefined: false\n responseWhenUndefined: any\n }\n)\n\ntype Options = {\n parsers: BodyParser[]\n disableContentTypeError: boolean\n}\n\ntype RequestEvent = APIGatewayEvent | APIGatewayProxyEventV2 | ALBEvent\n\nconst defaultOptions: Options = {\n parsers: [jsonParser, urlencodeParser],\n disableContentTypeError: false,\n}\n\nconst parser = (options: Partial<Options> = {}): middy.MiddlewareObj<RequestEvent> => {\n const opts: Options = { ...defaultOptions, ...options }\n const { parsers, disableContentTypeError } = opts\n\n const beforeFn: middy.MiddlewareFn<RequestEvent> = (request) => {\n const { headers, body } = request.event\n const contentType = headers?.['content-type'] ?? headers?.['Content-Type']\n\n const parser = parsers.find((parser) => {\n return contentType && parser.contentType.test(contentType)\n })\n if (!parser) {\n if (disableContentTypeError) {\n return\n }\n throw createError(415, 'Unsupported Media Type', {\n cause: { package: '@gahojin-inc/middy-http-body-parser', data: contentType },\n })\n }\n\n if (typeof body === 'undefined' || body === null) {\n if (parser.errorWhenUndefined === true) {\n throw createError(415, parser.invalidMessage, {\n cause: { package: '@gahojin-inc/middy-http-body-parser', data: body },\n })\n }\n request.event.body = parser.responseWhenUndefined\n return\n }\n\n try {\n const data = request.event.isBase64Encoded ? Buffer.from(body, 'base64').toString() : body\n\n request.event.body = parser.parse(data, body)\n } catch (err) {\n // UnprocessableEntity\n throw createError(415, parser.invalidMessage, {\n cause: { package: '@gahojin-inc/middy-http-body-parser', data: body, message: err instanceof Error ? err.message : err?.toString() },\n })\n }\n }\n\n return {\n before: beforeFn,\n }\n}\n\nexport default parser\nexport type { BodyParser }\n"],"mappings":";;;;AA6BA,MAAM,iBAA0B;CAC9B,SAAS,CAAC,YAAY,gBAAgB;CACtC,yBAAyB;CAC1B;AAED,MAAM,UAAU,UAA4B,EAAE,KAAwC;CAEpF,MAAM,EAAE,SAAS,4BADK;EAAE,GAAG;EAAgB,GAAG;EAAS;CAGvD,MAAM,YAA8C,YAAY;EAC9D,MAAM,EAAE,SAAS,SAAS,QAAQ;EAClC,MAAM,cAAc,UAAU,mBAAmB,UAAU;EAE3D,MAAM,SAAS,QAAQ,MAAM,WAAW;AACtC,UAAO,eAAe,OAAO,YAAY,KAAK,YAAY;IAC1D;AACF,MAAI,CAAC,QAAQ;AACX,OAAI,wBACF;AAEF,SAAM,YAAY,KAAK,0BAA0B,EAC/C,OAAO;IAAE,SAAS;IAAuC,MAAM;IAAa,EAC7E,CAAC;;AAGJ,MAAI,OAAO,SAAS,eAAe,SAAS,MAAM;AAChD,OAAI,OAAO,uBAAuB,KAChC,OAAM,YAAY,KAAK,OAAO,gBAAgB,EAC5C,OAAO;IAAE,SAAS;IAAuC,MAAM;IAAM,EACtE,CAAC;AAEJ,WAAQ,MAAM,OAAO,OAAO;AAC5B;;AAGF,MAAI;GACF,MAAM,OAAO,QAAQ,MAAM,kBAAkB,OAAO,KAAK,MAAM,SAAS,CAAC,UAAU,GAAG;AAEtF,WAAQ,MAAM,OAAO,OAAO,MAAM,MAAM,KAAK;WACtC,KAAK;AAEZ,SAAM,YAAY,KAAK,OAAO,gBAAgB,EAC5C,OAAO;IAAE,SAAS;IAAuC,MAAM;IAAM,SAAS,eAAe,QAAQ,IAAI,UAAU,KAAK,UAAU;IAAE,EACrI,CAAC;;;AAIN,QAAO,EACL,QAAQ,UACT"}
@@ -1,17 +0,0 @@
1
- Object.defineProperties(exports, {
2
- __esModule: { value: true },
3
- [Symbol.toStringTag]: { value: "Module" }
4
- });
5
- //#region src/parser/json.ts
6
- const jsonParser = {
7
- contentType: /^application\/(.+\+)?json($|;.+)/,
8
- parse: (body) => {
9
- return JSON.parse(body);
10
- },
11
- invalidMessage: "Invalid or malformed JSON was provided",
12
- errorWhenUndefined: true
13
- };
14
- //#endregion
15
- exports.default = jsonParser;
16
-
17
- //# sourceMappingURL=json.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.cjs","names":[],"sources":["../../src/parser/json.ts"],"sourcesContent":["import type { BodyParser } from '../index'\n\nconst invalidMessage = 'Invalid or malformed JSON was provided'\n\nconst jsonParser: BodyParser = {\n contentType: /^application\\/(.+\\+)?json($|;.+)/,\n parse: (body) => {\n return JSON.parse(body)\n },\n invalidMessage,\n errorWhenUndefined: true,\n}\n\nexport default jsonParser\n"],"mappings":";;;;;AAIA,MAAM,aAAyB;CAC7B,aAAa;CACb,QAAQ,SAAS;AACf,SAAO,KAAK,MAAM,KAAK;;CAEzB,gBAPqB;CAQrB,oBAAoB;CACrB"}
@@ -1,3 +0,0 @@
1
- import type { BodyParser } from "../index.mjs";
2
- declare const jsonParser: BodyParser;
3
- export default jsonParser;
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.mjs","names":[],"sources":["../../src/parser/json.ts"],"sourcesContent":["import type { BodyParser } from '../index'\n\nconst invalidMessage = 'Invalid or malformed JSON was provided'\n\nconst jsonParser: BodyParser = {\n contentType: /^application\\/(.+\\+)?json($|;.+)/,\n parse: (body) => {\n return JSON.parse(body)\n },\n invalidMessage,\n errorWhenUndefined: true,\n}\n\nexport default jsonParser\n"],"mappings":";AAIA,MAAM,aAAyB;CAC7B,aAAa;CACb,QAAQ,SAAS;AACf,SAAO,KAAK,MAAM,KAAK;;CAEzB,gBAPqB;CAQrB,oBAAoB;CACrB"}
@@ -1,6 +0,0 @@
1
- Object.defineProperties(exports, {
2
- __esModule: { value: true },
3
- [Symbol.toStringTag]: { value: "Module" }
4
- });
5
- const require_urlencode = require("../urlencode-CdbvAHSA.js");
6
- exports.default = require_urlencode.urlencodeParser;
@@ -1,3 +0,0 @@
1
- import type { BodyParser } from "../index.mjs";
2
- declare const urlencodeParser: BodyParser;
3
- export default urlencodeParser;
@@ -1 +0,0 @@
1
- {"version":3,"file":"urlencode.mjs","names":[],"sources":["../../src/parser/urlencode.ts"],"sourcesContent":["import querystring from 'node:querystring'\nimport type { BodyParser } from '../index'\n\nconst invalidMessage = 'Invalid or malformed URL encoded form was provided'\nconst urlencodeParser: BodyParser = {\n contentType: /^application\\/x-www-form-urlencoded(;.*)?$/,\n parse: (body) => {\n const ret = Object.assign({}, querystring.parse(body))\n if (ret?.[body] === '') {\n throw new Error(invalidMessage)\n }\n return ret\n },\n invalidMessage,\n errorWhenUndefined: false,\n responseWhenUndefined: {},\n}\n\nexport default urlencodeParser\n"],"mappings":";;AAGA,MAAM,iBAAiB;AACvB,MAAM,kBAA8B;CAClC,aAAa;CACb,QAAQ,SAAS;EACf,MAAM,MAAM,OAAO,OAAO,EAAE,EAAE,YAAY,MAAM,KAAK,CAAC;AACtD,MAAI,MAAM,UAAU,GAClB,OAAM,IAAI,MAAM,eAAe;AAEjC,SAAO;;CAET;CACA,oBAAoB;CACpB,uBAAuB,EAAE;CAC1B"}
@@ -1,52 +0,0 @@
1
- //#region \0rolldown/runtime.js
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
- key = keys[i];
11
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
- get: ((k) => from[k]).bind(null, key),
13
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
- });
15
- }
16
- return to;
17
- };
18
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
- value: mod,
20
- enumerable: true
21
- }) : target, mod));
22
- //#endregion
23
- let node_querystring = require("node:querystring");
24
- node_querystring = __toESM(node_querystring);
25
- //#region src/parser/urlencode.ts
26
- const invalidMessage = "Invalid or malformed URL encoded form was provided";
27
- const urlencodeParser = {
28
- contentType: /^application\/x-www-form-urlencoded(;.*)?$/,
29
- parse: (body) => {
30
- const ret = Object.assign({}, node_querystring.default.parse(body));
31
- if (ret?.[body] === "") throw new Error(invalidMessage);
32
- return ret;
33
- },
34
- invalidMessage,
35
- errorWhenUndefined: false,
36
- responseWhenUndefined: {}
37
- };
38
- //#endregion
39
- Object.defineProperty(exports, "__toESM", {
40
- enumerable: true,
41
- get: function() {
42
- return __toESM;
43
- }
44
- });
45
- Object.defineProperty(exports, "urlencodeParser", {
46
- enumerable: true,
47
- get: function() {
48
- return urlencodeParser;
49
- }
50
- });
51
-
52
- //# sourceMappingURL=urlencode-CdbvAHSA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"urlencode-CdbvAHSA.js","names":["querystring"],"sources":["../src/parser/urlencode.ts"],"sourcesContent":["import querystring from 'node:querystring'\nimport type { BodyParser } from '../index'\n\nconst invalidMessage = 'Invalid or malformed URL encoded form was provided'\nconst urlencodeParser: BodyParser = {\n contentType: /^application\\/x-www-form-urlencoded(;.*)?$/,\n parse: (body) => {\n const ret = Object.assign({}, querystring.parse(body))\n if (ret?.[body] === '') {\n throw new Error(invalidMessage)\n }\n return ret\n },\n invalidMessage,\n errorWhenUndefined: false,\n responseWhenUndefined: {},\n}\n\nexport default urlencodeParser\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAM,iBAAiB;AACvB,MAAM,kBAA8B;CAClC,aAAa;CACb,QAAQ,SAAS;EACf,MAAM,MAAM,OAAO,OAAO,EAAE,EAAEA,iBAAAA,QAAY,MAAM,KAAK,CAAC;AACtD,MAAI,MAAM,UAAU,GAClB,OAAM,IAAI,MAAM,eAAe;AAEjC,SAAO;;CAET;CACA,oBAAoB;CACpB,uBAAuB,EAAE;CAC1B"}