@commercetools-backend/express 20.9.4 → 20.12.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.
- package/dist/commercetools-backend-express.cjs.dev.js +13 -13
- package/dist/commercetools-backend-express.cjs.prod.js +13 -13
- package/dist/declarations/src/auth.d.ts +6 -6
- package/dist/declarations/src/constants.d.ts +18 -18
- package/dist/declarations/src/index.d.ts +3 -3
- package/dist/declarations/src/middlewares/session-middleware.d.ts +4 -4
- package/dist/declarations/src/types.d.ts +15 -15
- package/dist/declarations/src/utils.d.ts +2 -2
- package/package.json +7 -9
|
@@ -62,12 +62,12 @@ var getFirstOrThrow = function getFirstOrThrow(value, errorMessage) {
|
|
|
62
62
|
throw new Error(errorMessage);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
return _Array$isArray__default[
|
|
65
|
+
return _Array$isArray__default["default"](value) ? value[0] : value;
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
-
function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default[
|
|
68
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); if (enumerableOnly) { symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
69
69
|
|
|
70
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context4; _forEachInstanceProperty__default[
|
|
70
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context4; _forEachInstanceProperty__default["default"](_context4 = ownKeys(Object(source), true)).call(_context4, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors__default["default"]) { _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)); } else { var _context5; _forEachInstanceProperty__default["default"](_context5 = ownKeys(Object(source))).call(_context5, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } } return target; }
|
|
71
71
|
var decodedTokenKey = 'decoded_token'; // Assign a session object to the request object.
|
|
72
72
|
|
|
73
73
|
var writeSessionContext = function writeSessionContext(request) {
|
|
@@ -130,7 +130,7 @@ var mapToLegacyIssuer = function mapToLegacyIssuer(cloudIdentifier) {
|
|
|
130
130
|
|
|
131
131
|
var throwIfIssuerIsNotAValidUrl = function throwIfIssuerIsNotAValidUrl(issuer) {
|
|
132
132
|
try {
|
|
133
|
-
new _URL__default[
|
|
133
|
+
new _URL__default["default"](issuer);
|
|
134
134
|
} catch (error) {
|
|
135
135
|
throw new Error("Invalid issuer URL \"".concat(issuer, "\". Expected a valid URL to the Merchant Center API Gateway, or a cloud identifier to one of the available cloud regions. See https://docs.commercetools.com/custom-applications/main-concepts/api-gateway#hostnames."));
|
|
136
136
|
}
|
|
@@ -167,13 +167,13 @@ var getConfiguredAudience = function getConfiguredAudience(options, requestPath)
|
|
|
167
167
|
var _context, _context2;
|
|
168
168
|
|
|
169
169
|
// remove the trailing slash
|
|
170
|
-
var url = new _URL__default[
|
|
170
|
+
var url = new _URL__default["default"](_concatInstanceProperty__default["default"](_context = "".concat(options.audience.replace(/\/?$/, ''))).call(_context, requestPath));
|
|
171
171
|
|
|
172
172
|
if (requestPath === '/') {
|
|
173
173
|
return url.origin;
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
return _concatInstanceProperty__default[
|
|
176
|
+
return _concatInstanceProperty__default["default"](_context2 = "".concat(url.origin)).call(_context2, url.pathname);
|
|
177
177
|
};
|
|
178
178
|
|
|
179
179
|
function createSessionAuthVerifier(options) {
|
|
@@ -181,12 +181,12 @@ function createSessionAuthVerifier(options) {
|
|
|
181
181
|
var configuredDefaultIssuer = getConfiguredDefaultIssuer(options); // Returns an async HTTP handler.
|
|
182
182
|
|
|
183
183
|
return /*#__PURE__*/function () {
|
|
184
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default[
|
|
184
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(request, response) {
|
|
185
185
|
var _mapCloudIdentifierTo, _request$originalUrl;
|
|
186
186
|
|
|
187
187
|
var cloudIdentifierHeader, issuer, proxyForwardVersion, _mapToLegacyIssuer, requestUrlPath, audience;
|
|
188
188
|
|
|
189
|
-
return _regeneratorRuntime__default[
|
|
189
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context3) {
|
|
190
190
|
while (1) {
|
|
191
191
|
switch (_context3.prev = _context3.next) {
|
|
192
192
|
case 0:
|
|
@@ -205,11 +205,11 @@ function createSessionAuthVerifier(options) {
|
|
|
205
205
|
|
|
206
206
|
requestUrlPath = (_request$originalUrl = request.originalUrl) !== null && _request$originalUrl !== void 0 ? _request$originalUrl : request.url;
|
|
207
207
|
audience = getConfiguredAudience(options, requestUrlPath);
|
|
208
|
-
return _context3.abrupt("return", new _Promise__default[
|
|
209
|
-
expressJwtMiddleware__default[
|
|
208
|
+
return _context3.abrupt("return", new _Promise__default["default"](function (resolve, reject) {
|
|
209
|
+
expressJwtMiddleware__default["default"]({
|
|
210
210
|
// Dynamically provide a signing key based on the kid in the header
|
|
211
211
|
// and the singing keys provided by the JWKS endpoint
|
|
212
|
-
secret: jwksRsa__default[
|
|
212
|
+
secret: jwksRsa__default["default"].expressJwtSecret(_objectSpread(_objectSpread({
|
|
213
213
|
// Default options
|
|
214
214
|
cache: true,
|
|
215
215
|
rateLimit: true,
|
|
@@ -253,8 +253,8 @@ function createSessionAuthVerifier(options) {
|
|
|
253
253
|
function createSessionMiddleware(options) {
|
|
254
254
|
var sessionAuthVerifier = createSessionAuthVerifier(options);
|
|
255
255
|
return /*#__PURE__*/function () {
|
|
256
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default[
|
|
257
|
-
return _regeneratorRuntime__default[
|
|
256
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(request, response, next) {
|
|
257
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
258
258
|
while (1) {
|
|
259
259
|
switch (_context.prev = _context.next) {
|
|
260
260
|
case 0:
|
|
@@ -62,12 +62,12 @@ var getFirstOrThrow = function getFirstOrThrow(value, errorMessage) {
|
|
|
62
62
|
throw new Error(errorMessage);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
return _Array$isArray__default[
|
|
65
|
+
return _Array$isArray__default["default"](value) ? value[0] : value;
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
-
function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default[
|
|
68
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); if (enumerableOnly) { symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
69
69
|
|
|
70
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context4; _forEachInstanceProperty__default[
|
|
70
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context4; _forEachInstanceProperty__default["default"](_context4 = ownKeys(Object(source), true)).call(_context4, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors__default["default"]) { _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)); } else { var _context5; _forEachInstanceProperty__default["default"](_context5 = ownKeys(Object(source))).call(_context5, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } } return target; }
|
|
71
71
|
var decodedTokenKey = 'decoded_token'; // Assign a session object to the request object.
|
|
72
72
|
|
|
73
73
|
var writeSessionContext = function writeSessionContext(request) {
|
|
@@ -130,7 +130,7 @@ var mapToLegacyIssuer = function mapToLegacyIssuer(cloudIdentifier) {
|
|
|
130
130
|
|
|
131
131
|
var throwIfIssuerIsNotAValidUrl = function throwIfIssuerIsNotAValidUrl(issuer) {
|
|
132
132
|
try {
|
|
133
|
-
new _URL__default[
|
|
133
|
+
new _URL__default["default"](issuer);
|
|
134
134
|
} catch (error) {
|
|
135
135
|
throw new Error("Invalid issuer URL \"".concat(issuer, "\". Expected a valid URL to the Merchant Center API Gateway, or a cloud identifier to one of the available cloud regions. See https://docs.commercetools.com/custom-applications/main-concepts/api-gateway#hostnames."));
|
|
136
136
|
}
|
|
@@ -167,13 +167,13 @@ var getConfiguredAudience = function getConfiguredAudience(options, requestPath)
|
|
|
167
167
|
var _context, _context2;
|
|
168
168
|
|
|
169
169
|
// remove the trailing slash
|
|
170
|
-
var url = new _URL__default[
|
|
170
|
+
var url = new _URL__default["default"](_concatInstanceProperty__default["default"](_context = "".concat(options.audience.replace(/\/?$/, ''))).call(_context, requestPath));
|
|
171
171
|
|
|
172
172
|
if (requestPath === '/') {
|
|
173
173
|
return url.origin;
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
return _concatInstanceProperty__default[
|
|
176
|
+
return _concatInstanceProperty__default["default"](_context2 = "".concat(url.origin)).call(_context2, url.pathname);
|
|
177
177
|
};
|
|
178
178
|
|
|
179
179
|
function createSessionAuthVerifier(options) {
|
|
@@ -181,12 +181,12 @@ function createSessionAuthVerifier(options) {
|
|
|
181
181
|
var configuredDefaultIssuer = getConfiguredDefaultIssuer(options); // Returns an async HTTP handler.
|
|
182
182
|
|
|
183
183
|
return /*#__PURE__*/function () {
|
|
184
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default[
|
|
184
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(request, response) {
|
|
185
185
|
var _mapCloudIdentifierTo, _request$originalUrl;
|
|
186
186
|
|
|
187
187
|
var cloudIdentifierHeader, issuer, proxyForwardVersion, _mapToLegacyIssuer, requestUrlPath, audience;
|
|
188
188
|
|
|
189
|
-
return _regeneratorRuntime__default[
|
|
189
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context3) {
|
|
190
190
|
while (1) {
|
|
191
191
|
switch (_context3.prev = _context3.next) {
|
|
192
192
|
case 0:
|
|
@@ -205,11 +205,11 @@ function createSessionAuthVerifier(options) {
|
|
|
205
205
|
|
|
206
206
|
requestUrlPath = (_request$originalUrl = request.originalUrl) !== null && _request$originalUrl !== void 0 ? _request$originalUrl : request.url;
|
|
207
207
|
audience = getConfiguredAudience(options, requestUrlPath);
|
|
208
|
-
return _context3.abrupt("return", new _Promise__default[
|
|
209
|
-
expressJwtMiddleware__default[
|
|
208
|
+
return _context3.abrupt("return", new _Promise__default["default"](function (resolve, reject) {
|
|
209
|
+
expressJwtMiddleware__default["default"]({
|
|
210
210
|
// Dynamically provide a signing key based on the kid in the header
|
|
211
211
|
// and the singing keys provided by the JWKS endpoint
|
|
212
|
-
secret: jwksRsa__default[
|
|
212
|
+
secret: jwksRsa__default["default"].expressJwtSecret(_objectSpread(_objectSpread({
|
|
213
213
|
// Default options
|
|
214
214
|
cache: true,
|
|
215
215
|
rateLimit: true,
|
|
@@ -253,8 +253,8 @@ function createSessionAuthVerifier(options) {
|
|
|
253
253
|
function createSessionMiddleware(options) {
|
|
254
254
|
var sessionAuthVerifier = createSessionAuthVerifier(options);
|
|
255
255
|
return /*#__PURE__*/function () {
|
|
256
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default[
|
|
257
|
-
return _regeneratorRuntime__default[
|
|
256
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(request, response, next) {
|
|
257
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
258
258
|
while (1) {
|
|
259
259
|
switch (_context.prev = _context.next) {
|
|
260
260
|
case 0:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import type { ServerResponse, IncomingMessage } from 'http';
|
|
3
|
-
import type { TSessionMiddlewareOptions } from './types';
|
|
4
|
-
export declare const getConfiguredAudience: (options: TSessionMiddlewareOptions, requestPath: string) => string;
|
|
5
|
-
declare function createSessionAuthVerifier<Request extends IncomingMessage, Response extends ServerResponse>(options: TSessionMiddlewareOptions): (request: Request, response: Response) => Promise<void>;
|
|
6
|
-
export { createSessionAuthVerifier };
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { ServerResponse, IncomingMessage } from 'http';
|
|
3
|
+
import type { TSessionMiddlewareOptions } from './types';
|
|
4
|
+
export declare const getConfiguredAudience: (options: TSessionMiddlewareOptions, requestPath: string) => string;
|
|
5
|
+
declare function createSessionAuthVerifier<Request extends IncomingMessage, Response extends ServerResponse>(options: TSessionMiddlewareOptions): (request: Request, response: Response) => Promise<void>;
|
|
6
|
+
export { createSessionAuthVerifier };
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
export declare const CLOUD_IDENTIFIERS: {
|
|
2
|
-
readonly GCP_AU: "gcp-au";
|
|
3
|
-
readonly GCP_EU: "gcp-eu";
|
|
4
|
-
readonly GCP_US: "gcp-us";
|
|
5
|
-
readonly AWS_FRA: "aws-fra";
|
|
6
|
-
readonly AWS_OHIO: "aws-ohio";
|
|
7
|
-
};
|
|
8
|
-
export declare const MC_API_URLS: {
|
|
9
|
-
readonly GCP_AU: "https://mc-api.australia-southeast1.gcp.commercetools.com";
|
|
10
|
-
readonly GCP_EU: "https://mc-api.europe-west1.gcp.commercetools.com";
|
|
11
|
-
readonly GCP_US: "https://mc-api.us-central1.gcp.commercetools.com";
|
|
12
|
-
readonly AWS_FRA: "https://mc-api.eu-central-1.aws.commercetools.com";
|
|
13
|
-
readonly AWS_OHIO: "https://mc-api.us-east-2.aws.commercetools.com";
|
|
14
|
-
};
|
|
15
|
-
export declare const MC_API_PROXY_HEADERS: {
|
|
16
|
-
readonly FORWARD_TO_VERSION: "x-mc-api-forward-to-version";
|
|
17
|
-
readonly CLOUD_IDENTIFIER: "x-mc-api-cloud-identifier";
|
|
18
|
-
};
|
|
1
|
+
export declare const CLOUD_IDENTIFIERS: {
|
|
2
|
+
readonly GCP_AU: "gcp-au";
|
|
3
|
+
readonly GCP_EU: "gcp-eu";
|
|
4
|
+
readonly GCP_US: "gcp-us";
|
|
5
|
+
readonly AWS_FRA: "aws-fra";
|
|
6
|
+
readonly AWS_OHIO: "aws-ohio";
|
|
7
|
+
};
|
|
8
|
+
export declare const MC_API_URLS: {
|
|
9
|
+
readonly GCP_AU: "https://mc-api.australia-southeast1.gcp.commercetools.com";
|
|
10
|
+
readonly GCP_EU: "https://mc-api.europe-west1.gcp.commercetools.com";
|
|
11
|
+
readonly GCP_US: "https://mc-api.us-central1.gcp.commercetools.com";
|
|
12
|
+
readonly AWS_FRA: "https://mc-api.eu-central-1.aws.commercetools.com";
|
|
13
|
+
readonly AWS_OHIO: "https://mc-api.us-east-2.aws.commercetools.com";
|
|
14
|
+
};
|
|
15
|
+
export declare const MC_API_PROXY_HEADERS: {
|
|
16
|
+
readonly FORWARD_TO_VERSION: "x-mc-api-forward-to-version";
|
|
17
|
+
readonly CLOUD_IDENTIFIER: "x-mc-api-cloud-identifier";
|
|
18
|
+
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { CLOUD_IDENTIFIERS, MC_API_URLS } from './constants';
|
|
2
|
-
export { createSessionAuthVerifier } from './auth';
|
|
3
|
-
export { default as createSessionMiddleware } from './middlewares/session-middleware';
|
|
1
|
+
export { CLOUD_IDENTIFIERS, MC_API_URLS } from './constants';
|
|
2
|
+
export { createSessionAuthVerifier } from './auth';
|
|
3
|
+
export { default as createSessionMiddleware } from './middlewares/session-middleware';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Request, Response, NextFunction } from 'express';
|
|
2
|
-
import type { TSessionMiddlewareOptions } from '../types';
|
|
3
|
-
declare function createSessionMiddleware(options: TSessionMiddlewareOptions): (request: Request, response: Response, next: NextFunction) => Promise<void>;
|
|
4
|
-
export default createSessionMiddleware;
|
|
1
|
+
import type { Request, Response, NextFunction } from 'express';
|
|
2
|
+
import type { TSessionMiddlewareOptions } from '../types';
|
|
3
|
+
declare function createSessionMiddleware(options: TSessionMiddlewareOptions): (request: Request, response: Response, next: NextFunction) => Promise<void>;
|
|
4
|
+
export default createSessionMiddleware;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import type { ExpressJwtOptions } from 'jwks-rsa';
|
|
2
|
-
import { CLOUD_IDENTIFIERS } from './constants';
|
|
3
|
-
export declare type TAudience = string;
|
|
4
|
-
export declare type TIssuer = string;
|
|
5
|
-
export declare type TCloudIdentifier = typeof CLOUD_IDENTIFIERS[keyof typeof CLOUD_IDENTIFIERS];
|
|
6
|
-
export declare type TSessionMiddlewareOptions = {
|
|
7
|
-
audience: TAudience;
|
|
8
|
-
issuer: TCloudIdentifier | TIssuer;
|
|
9
|
-
inferIssuer?: boolean;
|
|
10
|
-
jwks?: Omit<ExpressJwtOptions, 'jwksUri'>;
|
|
11
|
-
};
|
|
12
|
-
export declare type TSession = {
|
|
13
|
-
userId: string;
|
|
14
|
-
projectKey: string;
|
|
15
|
-
};
|
|
1
|
+
import type { ExpressJwtOptions } from 'jwks-rsa';
|
|
2
|
+
import { CLOUD_IDENTIFIERS } from './constants';
|
|
3
|
+
export declare type TAudience = string;
|
|
4
|
+
export declare type TIssuer = string;
|
|
5
|
+
export declare type TCloudIdentifier = typeof CLOUD_IDENTIFIERS[keyof typeof CLOUD_IDENTIFIERS];
|
|
6
|
+
export declare type TSessionMiddlewareOptions = {
|
|
7
|
+
audience: TAudience;
|
|
8
|
+
issuer: TCloudIdentifier | TIssuer;
|
|
9
|
+
inferIssuer?: boolean;
|
|
10
|
+
jwks?: Omit<ExpressJwtOptions, 'jwksUri'>;
|
|
11
|
+
};
|
|
12
|
+
export declare type TSession = {
|
|
13
|
+
userId: string;
|
|
14
|
+
projectKey: string;
|
|
15
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const getFirstOrThrow: (value: string | string[] | undefined, errorMessage: string) => string;
|
|
2
|
-
export { getFirstOrThrow };
|
|
1
|
+
declare const getFirstOrThrow: (value: string | string[] | undefined, errorMessage: string) => string;
|
|
2
|
+
export { getFirstOrThrow };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commercetools-backend/express",
|
|
3
|
-
"version": "20.
|
|
3
|
+
"version": "20.12.0",
|
|
4
4
|
"description": "Zero-config HTTP server as Express.js to facilitate development",
|
|
5
5
|
"bugs": "https://github.com/commercetools/merchant-center-application-kit/issues",
|
|
6
6
|
"repository": {
|
|
@@ -11,24 +11,22 @@
|
|
|
11
11
|
"homepage": "https://docs.commercetools.com/custom-applications",
|
|
12
12
|
"keywords": ["javascript", "nodejs", "express", "http", "server", "toolkit"],
|
|
13
13
|
"license": "MIT",
|
|
14
|
-
"private": false,
|
|
15
14
|
"publishConfig": {
|
|
16
15
|
"access": "public"
|
|
17
16
|
},
|
|
18
|
-
"scripts": {},
|
|
19
17
|
"main": "dist/commercetools-backend-express.cjs.js",
|
|
20
18
|
"module": "dist/commercetools-backend-express.esm.js",
|
|
21
19
|
"files": ["dist", "package.json", "LICENSE", "README.md"],
|
|
22
20
|
"dependencies": {
|
|
23
|
-
"@babel/runtime": "7.
|
|
24
|
-
"@babel/runtime-corejs3": "7.
|
|
25
|
-
"@types/node": "
|
|
21
|
+
"@babel/runtime": "7.15.4",
|
|
22
|
+
"@babel/runtime-corejs3": "7.15.4",
|
|
23
|
+
"@types/node": "16.11.10",
|
|
26
24
|
"express": "4.17.1",
|
|
27
|
-
"express-jwt": "6.
|
|
28
|
-
"jwks-rsa": "2.0.
|
|
25
|
+
"express-jwt": "6.1.0",
|
|
26
|
+
"jwks-rsa": "2.0.5"
|
|
29
27
|
},
|
|
30
28
|
"devDependencies": {
|
|
31
29
|
"jose": "2.0.5",
|
|
32
|
-
"msw": "0.
|
|
30
|
+
"msw": "0.35.0"
|
|
33
31
|
}
|
|
34
32
|
}
|