@middy/http-content-negotiation 3.0.3 → 3.1.0-rc.1

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.
Files changed (3) hide show
  1. package/index.cjs +74 -1
  2. package/index.js +63 -1
  3. package/package.json +13 -7
package/index.cjs CHANGED
@@ -1,3 +1,76 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});module.exports=void 0;var _charsetJs=_interopRequireDefault(require("negotiator/lib/charset.js"));var _encodingJs=_interopRequireDefault(require("negotiator/lib/encoding.js"));var _languageJs=_interopRequireDefault(require("negotiator/lib/language.js"));var _mediaTypeJs=_interopRequireDefault(require("negotiator/lib/mediaType.js"));var _util=require("@middy/util");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}const parseFn={Charset:_charsetJs.default,Encoding:_encodingJs.default,Language:_languageJs.default,MediaType:_mediaTypeJs.default};const defaults={parseCharsets:true,availableCharsets:undefined,parseEncodings:true,availableEncodings:undefined,parseLanguages:true,availableLanguages:undefined,defaultToFirstLanguage:false,parseMediaTypes:true,availableMediaTypes:undefined,failOnMismatch:true};const httpContentNegotiationMiddleware=(opts={})=>{const options={...defaults,...opts};const httpContentNegotiationMiddlewareBefore=async request=>{const{event}=request;if(!event.headers)return;if(options.parseCharsets){parseHeader("Accept-Charset","Charset",options.availableCharsets,options.defaultToFirstCharset,options.failOnMismatch,event)}if(options.parseEncodings){parseHeader("Accept-Encoding","Encoding",options.availableEncodings,options.defaultToFirstEncoding,options.failOnMismatch,event)}if(options.parseLanguages){parseHeader("Accept-Language","Language",options.availableLanguages,options.defaultToFirstLanguage,options.failOnMismatch,event)}if(options.parseMediaTypes){parseHeader("Accept","MediaType",options.availableMediaTypes,options.defaultToFirstMediaType,options.failOnMismatch,event)}};return{before:httpContentNegotiationMiddlewareBefore}};const parseHeader=(headerName,type,availableValues,defaultToFirstValue,failOnMismatch,event)=>{const resultsName=`preferred${type}s`;const resultName=`preferred${type}`;const headerValue=event.headers[headerName]??event.headers[headerName.toLowerCase()];event[resultsName]=parseFn[type](headerValue,availableValues);event[resultName]=event[resultsName][0];if(defaultToFirstValue&&event[resultName]===undefined){event[resultName]=availableValues[0]}if(failOnMismatch&&event[resultName]===undefined){throw(0,_util).createError(406,`Unsupported ${type}. Acceptable values: ${availableValues.join(", ")}`)}};var _default=httpContentNegotiationMiddleware;module.exports=_default
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ module.exports = void 0;
6
+ var _charsetJs = _interopRequireDefault(require("negotiator/lib/charset.js"));
7
+ var _encodingJs = _interopRequireDefault(require("negotiator/lib/encoding.js"));
8
+ var _languageJs = _interopRequireDefault(require("negotiator/lib/language.js"));
9
+ var _mediaTypeJs = _interopRequireDefault(require("negotiator/lib/mediaType.js"));
10
+ var _util = require("@middy/util");
11
+ function _interopRequireDefault(obj) {
12
+ return obj && obj.__esModule ? obj : {
13
+ default: obj
14
+ };
15
+ }
16
+ const parseFn = {
17
+ Charset: _charsetJs.default,
18
+ Encoding: _encodingJs.default,
19
+ Language: _languageJs.default,
20
+ MediaType: _mediaTypeJs.default
21
+ };
22
+ const defaults = {
23
+ parseCharsets: true,
24
+ availableCharsets: undefined,
25
+ parseEncodings: true,
26
+ availableEncodings: undefined,
27
+ parseLanguages: true,
28
+ availableLanguages: undefined,
29
+ defaultToFirstLanguage: false,
30
+ parseMediaTypes: true,
31
+ availableMediaTypes: undefined,
32
+ failOnMismatch: true
33
+ };
34
+ const httpContentNegotiationMiddleware = (opts = {})=>{
35
+ const options = {
36
+ ...defaults,
37
+ ...opts
38
+ };
39
+ const httpContentNegotiationMiddlewareBefore = async (request)=>{
40
+ const { event } = request;
41
+ if (!event.headers) return;
42
+ if (options.parseCharsets) {
43
+ parseHeader('Accept-Charset', 'Charset', options.availableCharsets, options.defaultToFirstCharset, options.failOnMismatch, event);
44
+ }
45
+ if (options.parseEncodings) {
46
+ parseHeader('Accept-Encoding', 'Encoding', options.availableEncodings, options.defaultToFirstEncoding, options.failOnMismatch, event);
47
+ }
48
+ if (options.parseLanguages) {
49
+ parseHeader('Accept-Language', 'Language', options.availableLanguages, options.defaultToFirstLanguage, options.failOnMismatch, event);
50
+ }
51
+ if (options.parseMediaTypes) {
52
+ parseHeader('Accept', 'MediaType', options.availableMediaTypes, options.defaultToFirstMediaType, options.failOnMismatch, event);
53
+ }
54
+ };
55
+ return {
56
+ before: httpContentNegotiationMiddlewareBefore
57
+ };
58
+ };
59
+ const parseHeader = (headerName, type, availableValues, defaultToFirstValue, failOnMismatch, event)=>{
60
+ const resultsName = `preferred${type}s`;
61
+ const resultName = `preferred${type}`;
62
+ const headerValue = event.headers[headerName] ?? event.headers[headerName.toLowerCase()];
63
+ event[resultsName] = parseFn[type](headerValue, availableValues);
64
+ event[resultName] = event[resultsName][0];
65
+ if (defaultToFirstValue && event[resultName] === undefined) {
66
+ event[resultName] = availableValues[0];
67
+ }
68
+ if (failOnMismatch && event[resultName] === undefined) {
69
+ throw (0, _util).createError(406, `Unsupported ${type}. Acceptable values: ${availableValues.join(', ')}`);
70
+ }
71
+ };
72
+ var _default = httpContentNegotiationMiddleware;
73
+ module.exports = _default;
74
+
2
75
 
3
76
  //# sourceMappingURL=index.cjs.map
package/index.js CHANGED
@@ -1,3 +1,65 @@
1
- import charset from"negotiator/lib/charset.js";import encoding from"negotiator/lib/encoding.js";import language from"negotiator/lib/language.js";import mediaType from"negotiator/lib/mediaType.js";import{createError}from"@middy/util";const parseFn={Charset:charset,Encoding:encoding,Language:language,MediaType:mediaType};const defaults={parseCharsets:true,availableCharsets:undefined,parseEncodings:true,availableEncodings:undefined,parseLanguages:true,availableLanguages:undefined,defaultToFirstLanguage:false,parseMediaTypes:true,availableMediaTypes:undefined,failOnMismatch:true};const httpContentNegotiationMiddleware=(opts={})=>{const options={...defaults,...opts};const httpContentNegotiationMiddlewareBefore=async request=>{const{event}=request;if(!event.headers)return;if(options.parseCharsets){parseHeader("Accept-Charset","Charset",options.availableCharsets,options.defaultToFirstCharset,options.failOnMismatch,event)}if(options.parseEncodings){parseHeader("Accept-Encoding","Encoding",options.availableEncodings,options.defaultToFirstEncoding,options.failOnMismatch,event)}if(options.parseLanguages){parseHeader("Accept-Language","Language",options.availableLanguages,options.defaultToFirstLanguage,options.failOnMismatch,event)}if(options.parseMediaTypes){parseHeader("Accept","MediaType",options.availableMediaTypes,options.defaultToFirstMediaType,options.failOnMismatch,event)}};return{before:httpContentNegotiationMiddlewareBefore}};const parseHeader=(headerName,type,availableValues,defaultToFirstValue,failOnMismatch,event)=>{const resultsName=`preferred${type}s`;const resultName=`preferred${type}`;const headerValue=event.headers[headerName]??event.headers[headerName.toLowerCase()];event[resultsName]=parseFn[type](headerValue,availableValues);event[resultName]=event[resultsName][0];if(defaultToFirstValue&&event[resultName]===undefined){event[resultName]=availableValues[0]}if(failOnMismatch&&event[resultName]===undefined){throw createError(406,`Unsupported ${type}. Acceptable values: ${availableValues.join(", ")}`)}};export default httpContentNegotiationMiddleware
1
+ import charset from 'negotiator/lib/charset.js';
2
+ import encoding from 'negotiator/lib/encoding.js';
3
+ import language from 'negotiator/lib/language.js';
4
+ import mediaType from 'negotiator/lib/mediaType.js';
5
+ import { createError } from '@middy/util';
6
+ const parseFn = {
7
+ Charset: charset,
8
+ Encoding: encoding,
9
+ Language: language,
10
+ MediaType: mediaType
11
+ };
12
+ const defaults = {
13
+ parseCharsets: true,
14
+ availableCharsets: undefined,
15
+ parseEncodings: true,
16
+ availableEncodings: undefined,
17
+ parseLanguages: true,
18
+ availableLanguages: undefined,
19
+ defaultToFirstLanguage: false,
20
+ parseMediaTypes: true,
21
+ availableMediaTypes: undefined,
22
+ failOnMismatch: true
23
+ };
24
+ const httpContentNegotiationMiddleware = (opts = {})=>{
25
+ const options = {
26
+ ...defaults,
27
+ ...opts
28
+ };
29
+ const httpContentNegotiationMiddlewareBefore = async (request)=>{
30
+ const { event } = request;
31
+ if (!event.headers) return;
32
+ if (options.parseCharsets) {
33
+ parseHeader('Accept-Charset', 'Charset', options.availableCharsets, options.defaultToFirstCharset, options.failOnMismatch, event);
34
+ }
35
+ if (options.parseEncodings) {
36
+ parseHeader('Accept-Encoding', 'Encoding', options.availableEncodings, options.defaultToFirstEncoding, options.failOnMismatch, event);
37
+ }
38
+ if (options.parseLanguages) {
39
+ parseHeader('Accept-Language', 'Language', options.availableLanguages, options.defaultToFirstLanguage, options.failOnMismatch, event);
40
+ }
41
+ if (options.parseMediaTypes) {
42
+ parseHeader('Accept', 'MediaType', options.availableMediaTypes, options.defaultToFirstMediaType, options.failOnMismatch, event);
43
+ }
44
+ };
45
+ return {
46
+ before: httpContentNegotiationMiddlewareBefore
47
+ };
48
+ };
49
+ const parseHeader = (headerName, type, availableValues, defaultToFirstValue, failOnMismatch, event)=>{
50
+ const resultsName = `preferred${type}s`;
51
+ const resultName = `preferred${type}`;
52
+ const headerValue = event.headers[headerName] ?? event.headers[headerName.toLowerCase()];
53
+ event[resultsName] = parseFn[type](headerValue, availableValues);
54
+ event[resultName] = event[resultsName][0];
55
+ if (defaultToFirstValue && event[resultName] === undefined) {
56
+ event[resultName] = availableValues[0];
57
+ }
58
+ if (failOnMismatch && event[resultName] === undefined) {
59
+ throw createError(406, `Unsupported ${type}. Acceptable values: ${availableValues.join(', ')}`);
60
+ }
61
+ };
62
+ export default httpContentNegotiationMiddleware;
63
+
2
64
 
3
65
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@middy/http-content-negotiation",
3
- "version": "3.0.3",
3
+ "version": "3.1.0-rc.1",
4
4
  "description": "Http content negotiation middleware for the middy framework",
5
5
  "type": "module",
6
6
  "engines": {
@@ -10,11 +10,17 @@
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },
13
+ "main": "./index.cjs",
13
14
  "exports": {
14
15
  ".": {
15
- "import": "./index.js",
16
- "require": "./index.cjs",
17
- "types": "./index.d.ts"
16
+ "import": {
17
+ "types": "./index.d.ts",
18
+ "default": "./index.js"
19
+ },
20
+ "require": {
21
+ "types": "./index.d.ts",
22
+ "default": "./index.cjs"
23
+ }
18
24
  }
19
25
  },
20
26
  "types": "index.d.ts",
@@ -55,11 +61,11 @@
55
61
  },
56
62
  "homepage": "https://middy.js.org",
57
63
  "dependencies": {
58
- "@middy/util": "3.0.3",
64
+ "@middy/util": "3.1.0-rc.1",
59
65
  "negotiator": "0.6.3"
60
66
  },
61
67
  "devDependencies": {
62
- "@middy/core": "3.0.3"
68
+ "@middy/core": "3.1.0-rc.1"
63
69
  },
64
- "gitHead": "ea9e5e8cce754d0c467c7dd3ac9a7601149efea2"
70
+ "gitHead": "044c397e7a2b1de516b4b5c21ece2baffdbfa771"
65
71
  }