lemon-core 5.0.2 → 5.0.3
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/cores/aws/aws-kms-service.d.ts +3 -0
- package/dist/cores/aws/aws-kms-service.js +15 -0
- package/dist/cores/aws/aws-kms-service.js.map +1 -1
- package/dist/cores/aws/kms-fetch.d.ts +70 -0
- package/dist/cores/aws/kms-fetch.js +206 -0
- package/dist/cores/aws/kms-fetch.js.map +1 -0
- package/package.json +2 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CoreKmsService } from '../core-services';
|
|
2
|
+
import { KmsTransport } from './kms-fetch';
|
|
2
3
|
/**
|
|
3
4
|
* signing algorithm (local literal union = the SDK `SigningAlgorithmSpec` values; v5 B2-c).
|
|
4
5
|
*/
|
|
@@ -53,6 +54,8 @@ export declare class AWSKMSService implements CoreKmsService {
|
|
|
53
54
|
*/
|
|
54
55
|
keyId: () => string;
|
|
55
56
|
protected _instance: KmsClientLike;
|
|
57
|
+
/** transport of the SDK-less decrypt (v5 B8; tests inject one, default Node `https`). */
|
|
58
|
+
protected _transport?: KmsTransport;
|
|
56
59
|
/**
|
|
57
60
|
* get KMS instance in stock (sync; the SDK package is loaded on the first call)
|
|
58
61
|
*/
|
|
@@ -23,6 +23,7 @@ const engine_1 = require("../../engine/");
|
|
|
23
23
|
const tools_1 = require("../../tools");
|
|
24
24
|
const test_helper_1 = require("../../common/test-helper");
|
|
25
25
|
const perf_1 = require("../../lib/perf");
|
|
26
|
+
const kms_fetch_1 = require("./kms-fetch");
|
|
26
27
|
const NS = engine_1.$U.NS('KMSS', 'blue'); // NAMESPACE TO BE PRINTED.
|
|
27
28
|
const ALIAS = `lemon-hello-api`; //NOTE - use env[KMS_KEY_ID] to overide.
|
|
28
29
|
const region = () => engine_1.$engine.environ('REGION', 'ap-northeast-2');
|
|
@@ -84,6 +85,8 @@ class AWSKMSService {
|
|
|
84
85
|
return this._keyId;
|
|
85
86
|
};
|
|
86
87
|
_instance;
|
|
88
|
+
/** transport of the SDK-less decrypt (v5 B8; tests inject one, default Node `https`). */
|
|
89
|
+
_transport;
|
|
87
90
|
/**
|
|
88
91
|
* get KMS instance in stock (sync; the SDK package is loaded on the first call)
|
|
89
92
|
*/
|
|
@@ -119,6 +122,18 @@ class AWSKMSService {
|
|
|
119
122
|
*/
|
|
120
123
|
decrypt = async (encryptedSecret) => {
|
|
121
124
|
(0, engine_1._inf)(NS, `decrypt(${encryptedSecret.substring(0, 12)}...)..`);
|
|
125
|
+
//* env credentials → one SigV4-signed HTTPS call without the SDK (v5 B8); a network error falls back to the SDK once.
|
|
126
|
+
if ((0, kms_fetch_1.hasEnvCredentials)()) {
|
|
127
|
+
try {
|
|
128
|
+
return await (0, kms_fetch_1.decryptViaHttp)(encryptedSecret, { region: region(), transport: this._transport });
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
if ((0, kms_fetch_1.isKmsHttpError)(e))
|
|
132
|
+
throw e;
|
|
133
|
+
(0, engine_1._err)(NS, '! kms fetch failed, fallback to sdk =', (0, test_helper_1.GETERR)(e));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//* SDK path.
|
|
122
137
|
const CiphertextBlob = Buffer.from(encryptedSecret, 'base64');
|
|
123
138
|
//* api param.
|
|
124
139
|
const params = { CiphertextBlob: CiphertextBlob };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws-kms-service.js","sourceRoot":"","sources":["../../../src/cores/aws/aws-kms-service.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,6DAA6D;AAC7D,0CAA8D;
|
|
1
|
+
{"version":3,"file":"aws-kms-service.js","sourceRoot":"","sources":["../../../src/cores/aws/aws-kms-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as https from 'https';
|
|
2
|
+
/** a logger like `_inf`. */
|
|
3
|
+
type KmsFetchLogger = (...args: any[]) => void;
|
|
4
|
+
/** the response a transport returns (the part of `Response` this module reads). */
|
|
5
|
+
export interface KmsHttpResponse {
|
|
6
|
+
ok: boolean;
|
|
7
|
+
status: number;
|
|
8
|
+
json: () => Promise<any>;
|
|
9
|
+
text: () => Promise<string>;
|
|
10
|
+
}
|
|
11
|
+
/** a transport: `(url, { method, headers, body })` → response. Node `https` by default; `globalThis.fetch` is compatible. */
|
|
12
|
+
export type KmsTransport = (url: string, init: {
|
|
13
|
+
method: string;
|
|
14
|
+
headers: Record<string, string>;
|
|
15
|
+
body: string;
|
|
16
|
+
}) => Promise<KmsHttpResponse>;
|
|
17
|
+
/** options of `decryptViaHttp()`. */
|
|
18
|
+
export interface DecryptViaHttpOptions {
|
|
19
|
+
/** AWS region (ex: `ap-northeast-2`) */
|
|
20
|
+
region: string;
|
|
21
|
+
/** env with the credentials (default `process.env`) */
|
|
22
|
+
env?: NodeJS.ProcessEnv;
|
|
23
|
+
/** transport to use (default `httpsTransport`) */
|
|
24
|
+
transport?: KmsTransport;
|
|
25
|
+
/** logger of the `PERF` lines (default `_inf`) */
|
|
26
|
+
log?: KmsFetchLogger;
|
|
27
|
+
}
|
|
28
|
+
/** socket idle timeout of the default transport; a timeout is a network error (the caller falls back to the SDK). */
|
|
29
|
+
export declare const KMS_HTTPS_TIMEOUT_MS = 10000;
|
|
30
|
+
/**
|
|
31
|
+
* true when the env has `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` (both non-empty).
|
|
32
|
+
*/
|
|
33
|
+
export declare const hasEnvCredentials: (env?: NodeJS.ProcessEnv) => boolean;
|
|
34
|
+
/**
|
|
35
|
+
* true when `e` is the error of a KMS HTTP response (not a network error).
|
|
36
|
+
*/
|
|
37
|
+
export declare const isKmsHttpError: (e: any) => boolean;
|
|
38
|
+
/**
|
|
39
|
+
* class: `NodeSha256`
|
|
40
|
+
* - the `sha256` constructor the signer expects, on Node `crypto` (hash, or HMAC with a secret).
|
|
41
|
+
*/
|
|
42
|
+
export declare class NodeSha256 {
|
|
43
|
+
private readonly secret?;
|
|
44
|
+
private hash;
|
|
45
|
+
constructor(secret?: Uint8Array | string);
|
|
46
|
+
private make;
|
|
47
|
+
/** add data. */
|
|
48
|
+
update(data: Uint8Array | string): void;
|
|
49
|
+
/** the digest (async, as the signer awaits it). */
|
|
50
|
+
digest(): Promise<Uint8Array>;
|
|
51
|
+
/** start over. */
|
|
52
|
+
reset(): void;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* build a transport on a `request()` like Node `https.request` (injectable for tests).
|
|
56
|
+
* - reads the whole body; `ok` is 2xx; a socket error or the idle timeout rejects.
|
|
57
|
+
*/
|
|
58
|
+
export declare const transportOf: (request: typeof https.request) => KmsTransport;
|
|
59
|
+
/** the default transport: Node `https` (no undici load on the boot path). */
|
|
60
|
+
export declare const httpsTransport: KmsTransport;
|
|
61
|
+
/**
|
|
62
|
+
* decrypt a base64 ciphertext by KMS `Decrypt` (`TrentService.Decrypt`) with one SigV4-signed HTTPS call.
|
|
63
|
+
* - KMS error (non-2xx): throws `<type>: <message>` (see `isKmsHttpError()`).
|
|
64
|
+
* - network error (socket, timeout): the transport rejection is thrown as is.
|
|
65
|
+
*
|
|
66
|
+
* @param encryptedBase64 ciphertext blob in base64
|
|
67
|
+
* @returns the plaintext in utf-8, or `''` when KMS returns no `Plaintext`.
|
|
68
|
+
*/
|
|
69
|
+
export declare const decryptViaHttp: (encryptedBase64: string, opts: DecryptViaHttpOptions) => Promise<string>;
|
|
70
|
+
export {};
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.decryptViaHttp = exports.httpsTransport = exports.transportOf = exports.NodeSha256 = exports.isKmsHttpError = exports.hasEnvCredentials = exports.KMS_HTTPS_TIMEOUT_MS = void 0;
|
|
37
|
+
/**
|
|
38
|
+
* `cores/aws/kms-fetch.ts`
|
|
39
|
+
* - (internal) KMS `Decrypt` by one SigV4-signed HTTPS call to the KMS JSON API (v5 B8, D55).
|
|
40
|
+
* - used by `AWSKMSService.decrypt()` when the env has credentials, so the boot path does not load `@aws-sdk/client-kms`.
|
|
41
|
+
* - transport is Node `https` (not `fetch`: the first `fetch` call loads undici, ~250 ms on a cold Lambda); `fetch` is a compatible transport.
|
|
42
|
+
* - not exported by any barrel. No SDK or `@smithy` type in the signatures.
|
|
43
|
+
*
|
|
44
|
+
* @author Steve Jung <steve@lemoncloud.io>
|
|
45
|
+
* @date 2026-10-29 v5 B8 (D55)
|
|
46
|
+
*
|
|
47
|
+
* @copyright (C) 2026 LemonCloud Co Ltd. - All Rights Reserved.
|
|
48
|
+
*/
|
|
49
|
+
const crypto_1 = require("crypto");
|
|
50
|
+
const https = __importStar(require("https"));
|
|
51
|
+
const engine_1 = require("../../engine/");
|
|
52
|
+
const perf_1 = require("../../lib/perf");
|
|
53
|
+
/** socket idle timeout of the default transport; a timeout is a network error (the caller falls back to the SDK). */
|
|
54
|
+
exports.KMS_HTTPS_TIMEOUT_MS = 10_000;
|
|
55
|
+
/**
|
|
56
|
+
* true when the env has `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` (both non-empty).
|
|
57
|
+
*/
|
|
58
|
+
const hasEnvCredentials = (env = process.env) => !!(env?.AWS_ACCESS_KEY_ID && env?.AWS_SECRET_ACCESS_KEY);
|
|
59
|
+
exports.hasEnvCredentials = hasEnvCredentials;
|
|
60
|
+
/**
|
|
61
|
+
* true when `e` is the error of a KMS HTTP response (not a network error).
|
|
62
|
+
*/
|
|
63
|
+
const isKmsHttpError = (e) => !!(e && e.kmsError === true);
|
|
64
|
+
exports.isKmsHttpError = isKmsHttpError;
|
|
65
|
+
/**
|
|
66
|
+
* class: `NodeSha256`
|
|
67
|
+
* - the `sha256` constructor the signer expects, on Node `crypto` (hash, or HMAC with a secret).
|
|
68
|
+
*/
|
|
69
|
+
class NodeSha256 {
|
|
70
|
+
//* the secret (for `reset()`), and the current hash.
|
|
71
|
+
secret;
|
|
72
|
+
hash;
|
|
73
|
+
//* HMAC-SHA256 with a secret, else SHA256.
|
|
74
|
+
constructor(secret) {
|
|
75
|
+
this.secret = secret;
|
|
76
|
+
this.hash = this.make();
|
|
77
|
+
}
|
|
78
|
+
// build a new hash object.
|
|
79
|
+
make() {
|
|
80
|
+
return this.secret !== undefined ? (0, crypto_1.createHmac)('sha256', this.secret) : (0, crypto_1.createHash)('sha256');
|
|
81
|
+
}
|
|
82
|
+
/** add data. */
|
|
83
|
+
update(data) {
|
|
84
|
+
this.hash.update(data);
|
|
85
|
+
}
|
|
86
|
+
/** the digest (async, as the signer awaits it). */
|
|
87
|
+
async digest() {
|
|
88
|
+
return new Uint8Array(this.hash.digest());
|
|
89
|
+
}
|
|
90
|
+
/** start over. */
|
|
91
|
+
reset() {
|
|
92
|
+
this.hash = this.make();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.NodeSha256 = NodeSha256;
|
|
96
|
+
/**
|
|
97
|
+
* build a transport on a `request()` like Node `https.request` (injectable for tests).
|
|
98
|
+
* - reads the whole body; `ok` is 2xx; a socket error or the idle timeout rejects.
|
|
99
|
+
*/
|
|
100
|
+
const transportOf = (request) => (url, init) => new Promise((resolve, reject) => {
|
|
101
|
+
const u = new URL(url);
|
|
102
|
+
const req = request({ method: init.method, hostname: u.hostname, path: `${u.pathname}${u.search}`, headers: init.headers }, res => {
|
|
103
|
+
//* collect the body, then resolve a `Response`-like object.
|
|
104
|
+
const chunks = [];
|
|
105
|
+
res.on('data', (c) => chunks.push(Buffer.isBuffer(c) ? c : Buffer.from(c)));
|
|
106
|
+
res.on('error', reject);
|
|
107
|
+
res.on('end', () => {
|
|
108
|
+
const text = Buffer.concat(chunks).toString('utf-8');
|
|
109
|
+
const status = res.statusCode ?? 0;
|
|
110
|
+
resolve({
|
|
111
|
+
ok: status >= 200 && status < 300,
|
|
112
|
+
status,
|
|
113
|
+
text: async () => text,
|
|
114
|
+
json: async () => JSON.parse(text),
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
//* a socket error or the idle timeout is a network error.
|
|
119
|
+
req.on('error', reject);
|
|
120
|
+
req.setTimeout(exports.KMS_HTTPS_TIMEOUT_MS, () => req.destroy(new Error(`kms https timeout (${exports.KMS_HTTPS_TIMEOUT_MS} ms)`)));
|
|
121
|
+
req.end(init.body);
|
|
122
|
+
});
|
|
123
|
+
exports.transportOf = transportOf;
|
|
124
|
+
/** the default transport: Node `https` (no undici load on the boot path). */
|
|
125
|
+
exports.httpsTransport = (0, exports.transportOf)(https.request);
|
|
126
|
+
/**
|
|
127
|
+
* `@smithy/signature-v4`, required on the first use (not at import).
|
|
128
|
+
*/
|
|
129
|
+
let $sigv4;
|
|
130
|
+
// memoized sync loader (the first call prints one `PERF` line).
|
|
131
|
+
const loadSigV4 = (log) =>
|
|
132
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
133
|
+
($sigv4 ??= (0, perf_1.measure)(log, engine_1.$U.NS('PERF', 'cyan'), 'lazy-load @smithy/signature-v4', () => require('@smithy/signature-v4')));
|
|
134
|
+
// build the error of a KMS HTTP response: `<type>: <message>`, marked with `kmsError`.
|
|
135
|
+
const asKmsError = async (res) => {
|
|
136
|
+
//* read the JSON body (`{ __type, message }`), or the text.
|
|
137
|
+
let body = null;
|
|
138
|
+
try {
|
|
139
|
+
body = res.json ? await res.json() : JSON.parse((await res.text?.()) || '{}');
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
body = null;
|
|
143
|
+
}
|
|
144
|
+
const raw = `${body?.__type || body?.code || `HTTP${res.status}`}`;
|
|
145
|
+
const type = raw.includes('#') ? raw.substring(raw.lastIndexOf('#') + 1) : raw;
|
|
146
|
+
const message = `${body?.message ?? body?.Message ?? ''}`;
|
|
147
|
+
const err = new Error(`${type}: ${message}`);
|
|
148
|
+
err.kmsError = true;
|
|
149
|
+
err.statusCode = res.status;
|
|
150
|
+
return err;
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* decrypt a base64 ciphertext by KMS `Decrypt` (`TrentService.Decrypt`) with one SigV4-signed HTTPS call.
|
|
154
|
+
* - KMS error (non-2xx): throws `<type>: <message>` (see `isKmsHttpError()`).
|
|
155
|
+
* - network error (socket, timeout): the transport rejection is thrown as is.
|
|
156
|
+
*
|
|
157
|
+
* @param encryptedBase64 ciphertext blob in base64
|
|
158
|
+
* @returns the plaintext in utf-8, or `''` when KMS returns no `Plaintext`.
|
|
159
|
+
*/
|
|
160
|
+
const decryptViaHttp = async (encryptedBase64, opts) => {
|
|
161
|
+
const { region } = opts;
|
|
162
|
+
const env = opts.env ?? process.env;
|
|
163
|
+
const log = opts.log ?? engine_1._inf;
|
|
164
|
+
const send = opts.transport ?? exports.httpsTransport;
|
|
165
|
+
const hostname = `kms.${region}.amazonaws.com`;
|
|
166
|
+
//* the same body string is signed and sent.
|
|
167
|
+
const body = JSON.stringify({ CiphertextBlob: encryptedBase64 });
|
|
168
|
+
const request = {
|
|
169
|
+
method: 'POST',
|
|
170
|
+
protocol: 'https:',
|
|
171
|
+
hostname,
|
|
172
|
+
path: '/',
|
|
173
|
+
headers: {
|
|
174
|
+
'content-type': 'application/x-amz-json-1.1',
|
|
175
|
+
'x-amz-target': 'TrentService.Decrypt',
|
|
176
|
+
host: hostname,
|
|
177
|
+
},
|
|
178
|
+
body,
|
|
179
|
+
};
|
|
180
|
+
//* sign with the env credentials (session token when present).
|
|
181
|
+
const { SignatureV4 } = loadSigV4(log);
|
|
182
|
+
const credentials = {
|
|
183
|
+
accessKeyId: `${env.AWS_ACCESS_KEY_ID || ''}`,
|
|
184
|
+
secretAccessKey: `${env.AWS_SECRET_ACCESS_KEY || ''}`,
|
|
185
|
+
...(env.AWS_SESSION_TOKEN ? { sessionToken: `${env.AWS_SESSION_TOKEN}` } : {}),
|
|
186
|
+
};
|
|
187
|
+
const signer = new SignatureV4({ service: 'kms', region, credentials, sha256: NodeSha256 });
|
|
188
|
+
//* one `PERF` line for the whole call, split `sign=` (SigV4) `send=` (connect + request + response) `decode=` (base64).
|
|
189
|
+
const t0 = (0, perf_1.nowMs)();
|
|
190
|
+
const signed = (await signer.sign(request));
|
|
191
|
+
const t1 = (0, perf_1.nowMs)();
|
|
192
|
+
//* send (a network error rejects here, as is).
|
|
193
|
+
const res = await send(`https://${hostname}/`, { method: 'POST', headers: signed.headers, body });
|
|
194
|
+
if (!res.ok)
|
|
195
|
+
throw await asKmsError(res);
|
|
196
|
+
const t2 = (0, perf_1.nowMs)();
|
|
197
|
+
//* decode the plaintext.
|
|
198
|
+
const json = await res.json();
|
|
199
|
+
const plain = json?.Plaintext ? Buffer.from(json.Plaintext, 'base64').toString('utf-8') : '';
|
|
200
|
+
const t3 = (0, perf_1.nowMs)();
|
|
201
|
+
const ms = (a, b) => (b - a).toFixed(1);
|
|
202
|
+
log(engine_1.$U.NS('PERF', 'cyan'), '>', 'kms decrypt', `${ms(t0, t3)} ms`, `sign=${ms(t0, t1)} send=${ms(t1, t2)} decode=${ms(t2, t3)}`);
|
|
203
|
+
return plain;
|
|
204
|
+
};
|
|
205
|
+
exports.decryptViaHttp = decryptViaHttp;
|
|
206
|
+
//# sourceMappingURL=kms-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kms-fetch.js","sourceRoot":"","sources":["../../../src/cores/aws/kms-fetch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lemon-core",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.3",
|
|
4
4
|
"description": "Lemon Serverless Micro-Service Platform",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -92,6 +92,7 @@
|
|
|
92
92
|
"@aws-sdk/client-dynamodb": "^3.971.0",
|
|
93
93
|
"@aws-sdk/lib-dynamodb": "^3.971.0",
|
|
94
94
|
"@opensearch-project/opensearch": "^3.9.0",
|
|
95
|
+
"@smithy/signature-v4": "^5.3.8",
|
|
95
96
|
"@types/aws-lambda": "^8.10.62",
|
|
96
97
|
"@types/jsonwebtoken": "^8.5.9",
|
|
97
98
|
"async": "^3.2.4",
|