@authup/server-kit 1.0.0-beta.2 → 1.0.0-beta.21
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/LICENSE +201 -21
- package/README.md +2 -2
- package/dist/crypto/hash/hash.d.ts +1 -1
- package/dist/crypto/hash/hash.d.ts.map +1 -1
- package/dist/crypto/json-web-token/extract.d.ts +11 -0
- package/dist/crypto/json-web-token/extract.d.ts.map +1 -0
- package/dist/crypto/json-web-token/index.d.ts +1 -1
- package/dist/crypto/json-web-token/index.d.ts.map +1 -1
- package/dist/crypto/json-web-token/sign/index.d.ts +3 -0
- package/dist/crypto/json-web-token/sign/index.d.ts.map +1 -0
- package/dist/crypto/json-web-token/sign/module.d.ts +4 -0
- package/dist/crypto/json-web-token/sign/module.d.ts.map +1 -0
- package/dist/crypto/json-web-token/sign/types.d.ts +23 -0
- package/dist/crypto/json-web-token/sign/types.d.ts.map +1 -0
- package/dist/crypto/json-web-token/type.d.ts +4 -33
- package/dist/crypto/json-web-token/type.d.ts.map +1 -1
- package/dist/crypto/json-web-token/utils.d.ts +4 -1
- package/dist/crypto/json-web-token/utils.d.ts.map +1 -1
- package/dist/crypto/json-web-token/verify/index.d.ts +3 -0
- package/dist/crypto/json-web-token/verify/index.d.ts.map +1 -0
- package/dist/crypto/json-web-token/verify/module.d.ts +12 -0
- package/dist/crypto/json-web-token/verify/module.d.ts.map +1 -0
- package/dist/crypto/json-web-token/verify/types.d.ts +20 -0
- package/dist/crypto/json-web-token/verify/types.d.ts.map +1 -0
- package/dist/crypto/key-pair/helpers/check.d.ts.map +1 -0
- package/dist/crypto/key-pair/helpers/file-name.d.ts.map +1 -0
- package/dist/crypto/key-pair/{utils → helpers}/index.d.ts +1 -0
- package/dist/crypto/key-pair/helpers/index.d.ts.map +1 -0
- package/dist/crypto/key-pair/helpers/options.d.ts.map +1 -0
- package/dist/crypto/key-pair/{utils → helpers}/private-key.d.ts +0 -1
- package/dist/crypto/key-pair/helpers/private-key.d.ts.map +1 -0
- package/dist/crypto/key-pair/helpers/wrap.d.ts +5 -0
- package/dist/crypto/key-pair/helpers/wrap.d.ts.map +1 -0
- package/dist/crypto/key-pair/index.d.ts +1 -1
- package/dist/crypto/key-pair/index.d.ts.map +1 -1
- package/dist/crypto/key-pair/type.d.ts +0 -1
- package/dist/crypto/key-pair/type.d.ts.map +1 -1
- package/dist/domain-event/index.d.ts +1 -1
- package/dist/domain-event/index.d.ts.map +1 -1
- package/dist/domain-event/module.d.ts +8 -0
- package/dist/domain-event/module.d.ts.map +1 -0
- package/dist/domain-event/redis/index.d.ts +1 -1
- package/dist/domain-event/redis/index.d.ts.map +1 -1
- package/dist/domain-event/redis/module.d.ts +8 -0
- package/dist/domain-event/redis/module.d.ts.map +1 -0
- package/dist/domain-event/socket/index.d.ts +1 -2
- package/dist/domain-event/socket/index.d.ts.map +1 -1
- package/dist/domain-event/socket/module.d.ts +9 -0
- package/dist/domain-event/socket/module.d.ts.map +1 -0
- package/dist/domain-event/type.d.ts +8 -0
- package/dist/domain-event/type.d.ts.map +1 -1
- package/dist/index.cjs +466 -279
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +371 -255
- package/dist/index.mjs.map +1 -1
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/logger/index.d.ts +4 -0
- package/dist/services/logger/index.d.ts.map +1 -0
- package/dist/services/logger/module.d.ts +3 -0
- package/dist/services/logger/module.d.ts.map +1 -0
- package/dist/services/logger/singleton.d.ts +7 -0
- package/dist/services/logger/singleton.d.ts.map +1 -0
- package/dist/services/logger/types.d.ts +7 -0
- package/dist/services/logger/types.d.ts.map +1 -0
- package/dist/services/redis/index.d.ts +3 -0
- package/dist/services/redis/index.d.ts.map +1 -0
- package/dist/services/redis/module.d.ts +3 -0
- package/dist/services/redis/module.d.ts.map +1 -0
- package/dist/services/redis/singleton.d.ts +7 -0
- package/dist/services/redis/singleton.d.ts.map +1 -0
- package/dist/services/vault/index.d.ts +3 -0
- package/dist/services/vault/index.d.ts.map +1 -0
- package/dist/services/vault/module.d.ts +3 -0
- package/dist/services/vault/module.d.ts.map +1 -0
- package/dist/services/vault/singleton.d.ts +6 -0
- package/dist/services/vault/singleton.d.ts.map +1 -0
- package/package.json +17 -20
- package/dist/crypto/json-web-token/decode.d.ts +0 -15
- package/dist/crypto/json-web-token/decode.d.ts.map +0 -1
- package/dist/crypto/json-web-token/sign.d.ts +0 -4
- package/dist/crypto/json-web-token/sign.d.ts.map +0 -1
- package/dist/crypto/json-web-token/verify.d.ts +0 -15
- package/dist/crypto/json-web-token/verify.d.ts.map +0 -1
- package/dist/crypto/key-pair/utils/check.d.ts.map +0 -1
- package/dist/crypto/key-pair/utils/file-name.d.ts.map +0 -1
- package/dist/crypto/key-pair/utils/index.d.ts.map +0 -1
- package/dist/crypto/key-pair/utils/options.d.ts.map +0 -1
- package/dist/crypto/key-pair/utils/private-key.d.ts.map +0 -1
- package/dist/domain-event/publish.d.ts +0 -4
- package/dist/domain-event/publish.d.ts.map +0 -1
- package/dist/domain-event/redis/publish.d.ts +0 -4
- package/dist/domain-event/redis/publish.d.ts.map +0 -1
- package/dist/domain-event/socket/publish.d.ts +0 -4
- package/dist/domain-event/socket/publish.d.ts.map +0 -1
- package/dist/domain-event/socket/singleton.d.ts +0 -4
- package/dist/domain-event/socket/singleton.d.ts.map +0 -1
- package/dist/domain-event/socket/type.d.ts +0 -5
- package/dist/domain-event/socket/type.d.ts.map +0 -1
- package/dist/logger/index.d.ts +0 -4
- package/dist/logger/index.d.ts.map +0 -1
- package/dist/logger/module.d.ts +0 -4
- package/dist/logger/module.d.ts.map +0 -1
- package/dist/logger/presets/index.d.ts +0 -2
- package/dist/logger/presets/index.d.ts.map +0 -1
- package/dist/logger/presets/void.d.ts +0 -16
- package/dist/logger/presets/void.d.ts.map +0 -1
- package/dist/logger/type.d.ts +0 -14
- package/dist/logger/type.d.ts.map +0 -1
- package/dist/smtp/config/index.d.ts +0 -2
- package/dist/smtp/config/index.d.ts.map +0 -1
- package/dist/smtp/config/singleton.d.ts +0 -5
- package/dist/smtp/config/singleton.d.ts.map +0 -1
- package/dist/smtp/index.d.ts +0 -5
- package/dist/smtp/index.d.ts.map +0 -1
- package/dist/smtp/module.d.ts +0 -4
- package/dist/smtp/module.d.ts.map +0 -1
- package/dist/smtp/singleton.d.ts +0 -3
- package/dist/smtp/singleton.d.ts.map +0 -1
- package/dist/smtp/type.d.ts +0 -14
- package/dist/smtp/type.d.ts.map +0 -1
- /package/dist/crypto/key-pair/{utils → helpers}/check.d.ts +0 -0
- /package/dist/crypto/key-pair/{utils → helpers}/file-name.d.ts +0 -0
- /package/dist/crypto/key-pair/{utils → helpers}/options.d.ts +0 -0
package/dist/index.cjs
CHANGED
|
@@ -1,22 +1,44 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var bcrypt = require('bcrypt');
|
|
3
|
+
var bcrypt = require('@node-rs/bcrypt');
|
|
4
4
|
var node_crypto = require('node:crypto');
|
|
5
|
-
var
|
|
5
|
+
var kit = require('@authup/kit');
|
|
6
6
|
var path = require('node:path');
|
|
7
7
|
var fs = require('node:fs');
|
|
8
|
-
var jsonwebtoken = require('jsonwebtoken');
|
|
8
|
+
var jsonwebtoken = require('@node-rs/jsonwebtoken');
|
|
9
9
|
var smob = require('smob');
|
|
10
|
+
var process$1 = require('node:process');
|
|
11
|
+
var winston = require('winston');
|
|
12
|
+
var singa = require('singa');
|
|
10
13
|
var redisExtension = require('redis-extension');
|
|
14
|
+
var vault = require('@hapic/vault');
|
|
11
15
|
var redisEmitter = require('@socket.io/redis-emitter');
|
|
12
|
-
|
|
16
|
+
|
|
17
|
+
function _interopNamespaceDefault(e) {
|
|
18
|
+
var n = Object.create(null);
|
|
19
|
+
if (e) {
|
|
20
|
+
Object.keys(e).forEach(function (k) {
|
|
21
|
+
if (k !== 'default') {
|
|
22
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
23
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () { return e[k]; }
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
n.default = e;
|
|
31
|
+
return Object.freeze(n);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
var process__namespace = /*#__PURE__*/_interopNamespaceDefault(process$1);
|
|
13
35
|
|
|
14
36
|
async function compare(value, hashedValue) {
|
|
15
37
|
return bcrypt.compare(value, hashedValue);
|
|
16
38
|
}
|
|
17
39
|
|
|
18
|
-
async function hash(str,
|
|
19
|
-
return bcrypt.hash(str,
|
|
40
|
+
async function hash(str, rounds = 10) {
|
|
41
|
+
return bcrypt.hash(str, rounds);
|
|
20
42
|
}
|
|
21
43
|
|
|
22
44
|
/*
|
|
@@ -24,17 +46,17 @@ async function hash(str, saltOrRounds = 10) {
|
|
|
24
46
|
* Author Peter Placzek (tada5hi)
|
|
25
47
|
* For the full copyright and license information,
|
|
26
48
|
* view the LICENSE file that was distributed with this source code.
|
|
27
|
-
*/
|
|
28
|
-
(function(KeyPairKind) {
|
|
49
|
+
*/ var KeyPairKind = /*#__PURE__*/ function(KeyPairKind) {
|
|
29
50
|
KeyPairKind["PRIVATE"] = "private";
|
|
30
51
|
KeyPairKind["PUBLIC"] = "public";
|
|
31
|
-
|
|
52
|
+
return KeyPairKind;
|
|
53
|
+
}({});
|
|
32
54
|
|
|
33
55
|
function isKeyPair(data) {
|
|
34
|
-
return
|
|
56
|
+
return kit.isObject(data) && typeof data.privateKey !== 'undefined' && typeof data.publicKey !== 'undefined';
|
|
35
57
|
}
|
|
36
58
|
function isKeyPairWithPublicKey(data) {
|
|
37
|
-
return
|
|
59
|
+
return kit.isObject(data) && typeof data.publicKey !== 'undefined';
|
|
38
60
|
}
|
|
39
61
|
|
|
40
62
|
function extendKeyPairOptions(options) {
|
|
@@ -68,7 +90,7 @@ function buildKeyFileName(type, context) {
|
|
|
68
90
|
const options = extendKeyPairOptions(context);
|
|
69
91
|
const parts = [];
|
|
70
92
|
switch(type){
|
|
71
|
-
case
|
|
93
|
+
case KeyPairKind.PRIVATE:
|
|
72
94
|
{
|
|
73
95
|
if (options.privateName) {
|
|
74
96
|
parts.push(options.privateName);
|
|
@@ -85,7 +107,7 @@ function buildKeyFileName(type, context) {
|
|
|
85
107
|
}
|
|
86
108
|
break;
|
|
87
109
|
}
|
|
88
|
-
case
|
|
110
|
+
case KeyPairKind.PUBLIC:
|
|
89
111
|
{
|
|
90
112
|
if (options.publicName) {
|
|
91
113
|
parts.push(options.publicName);
|
|
@@ -123,6 +145,41 @@ function decryptRSAPrivateKey(context, key) {
|
|
|
123
145
|
return content;
|
|
124
146
|
}
|
|
125
147
|
|
|
148
|
+
/*
|
|
149
|
+
* Copyright (c) 2024.
|
|
150
|
+
* Author Peter Placzek (tada5hi)
|
|
151
|
+
* For the full copyright and license information,
|
|
152
|
+
* view the LICENSE file that was distributed with this source code.
|
|
153
|
+
*/ function wrapPem(type, input) {
|
|
154
|
+
if (typeof input !== 'string') {
|
|
155
|
+
input = Buffer.from(input).toString('base64');
|
|
156
|
+
}
|
|
157
|
+
return `-----BEGIN ${type}-----\n${input}\n-----END ${type}-----`;
|
|
158
|
+
}
|
|
159
|
+
function wrapPrivateKeyPem(input) {
|
|
160
|
+
return wrapPem('PRIVATE KEY', input);
|
|
161
|
+
}
|
|
162
|
+
function wrapPublicKeyPem(input) {
|
|
163
|
+
return wrapPem('PUBLIC KEY', input);
|
|
164
|
+
}
|
|
165
|
+
// ------------------------------------------------------------
|
|
166
|
+
function unwrapPem(type, input) {
|
|
167
|
+
if (typeof input !== 'string') {
|
|
168
|
+
input = Buffer.from(input).toString('base64');
|
|
169
|
+
}
|
|
170
|
+
input = input.replace(`-----BEGIN ${type}-----\n`, '');
|
|
171
|
+
input = input.replace(`\n-----END ${type}-----\n`, '');
|
|
172
|
+
input = input.replace(`-----END ${type}-----\n`, '');
|
|
173
|
+
input = input.replace(`\n-----END ${type}-----`, '');
|
|
174
|
+
return input;
|
|
175
|
+
}
|
|
176
|
+
function unwrapPrivateKeyPem(input) {
|
|
177
|
+
return unwrapPem('PRIVATE KEY', input);
|
|
178
|
+
}
|
|
179
|
+
function unwrapPublicKeyPem(input) {
|
|
180
|
+
return unwrapPem('PUBLIC KEY', input);
|
|
181
|
+
}
|
|
182
|
+
|
|
126
183
|
async function saveKeyPair(keyPair, context) {
|
|
127
184
|
context = extendKeyPairOptions(context);
|
|
128
185
|
await fs.promises.mkdir(context.directory, {
|
|
@@ -130,11 +187,11 @@ async function saveKeyPair(keyPair, context) {
|
|
|
130
187
|
});
|
|
131
188
|
await Promise.all([
|
|
132
189
|
{
|
|
133
|
-
path: path.resolve(context.directory, buildKeyFileName(
|
|
190
|
+
path: path.resolve(context.directory, buildKeyFileName(KeyPairKind.PRIVATE, context)),
|
|
134
191
|
content: keyPair.privateKey
|
|
135
192
|
},
|
|
136
193
|
{
|
|
137
|
-
path: path.resolve(context.directory, buildKeyFileName(
|
|
194
|
+
path: path.resolve(context.directory, buildKeyFileName(KeyPairKind.PUBLIC, context)),
|
|
138
195
|
content: keyPair.publicKey
|
|
139
196
|
}
|
|
140
197
|
].map((file)=>fs.promises.writeFile(file.path, file.content)));
|
|
@@ -177,8 +234,8 @@ async function createKeyPair(context) {
|
|
|
177
234
|
|
|
178
235
|
async function deleteKeyPair(context) {
|
|
179
236
|
const options = extendKeyPairOptions(context);
|
|
180
|
-
const privateKeyPath = path.resolve(options.directory, buildKeyFileName(
|
|
181
|
-
const publicKeyPath = path.resolve(options.directory, buildKeyFileName(
|
|
237
|
+
const privateKeyPath = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PRIVATE, options));
|
|
238
|
+
const publicKeyPath = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PUBLIC, options));
|
|
182
239
|
try {
|
|
183
240
|
await Promise.all([
|
|
184
241
|
privateKeyPath,
|
|
@@ -195,7 +252,7 @@ async function deleteKeyPair(context) {
|
|
|
195
252
|
|
|
196
253
|
async function loadKeyPair(context) {
|
|
197
254
|
const options = extendKeyPairOptions(context);
|
|
198
|
-
const privateKeyPath = path.resolve(options.directory, buildKeyFileName(
|
|
255
|
+
const privateKeyPath = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PRIVATE, options));
|
|
199
256
|
try {
|
|
200
257
|
await fs.promises.stat(privateKeyPath);
|
|
201
258
|
} catch (e) {
|
|
@@ -206,7 +263,7 @@ async function loadKeyPair(context) {
|
|
|
206
263
|
if (options.passphrase || options.privateKeyEncoding.passphrase) {
|
|
207
264
|
privateKey = decryptRSAPrivateKey(options, privateKey);
|
|
208
265
|
}
|
|
209
|
-
const publicKeyPath = path.resolve(options.directory, buildKeyFileName(
|
|
266
|
+
const publicKeyPath = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PUBLIC, options));
|
|
210
267
|
let publicKey;
|
|
211
268
|
try {
|
|
212
269
|
await fs.promises.stat(publicKeyPath);
|
|
@@ -261,130 +318,232 @@ async function useKeyPair(value) {
|
|
|
261
318
|
return keyPair;
|
|
262
319
|
}
|
|
263
320
|
|
|
321
|
+
/**
|
|
322
|
+
* Decode a JWT token with no verification.
|
|
323
|
+
*
|
|
324
|
+
* @param token
|
|
325
|
+
*
|
|
326
|
+
* @throws TokenError
|
|
327
|
+
*/ function extractTokenHeader(token) {
|
|
328
|
+
const parts = token.split('.');
|
|
329
|
+
if (parts.length !== 3) {
|
|
330
|
+
throw kit.TokenError.payloadInvalid('The token format is not valid.');
|
|
331
|
+
}
|
|
332
|
+
const [headerBase64] = parts;
|
|
333
|
+
try {
|
|
334
|
+
const payload = atob(headerBase64);
|
|
335
|
+
return JSON.parse(payload);
|
|
336
|
+
/*
|
|
337
|
+
return {
|
|
338
|
+
typ: 'JWT',
|
|
339
|
+
alg: transformInternalToJWTAlgorithm(header.algorithm),
|
|
340
|
+
cty: header.contentType,
|
|
341
|
+
jku: header.jsonKeyUrl,
|
|
342
|
+
kid: header.keyId,
|
|
343
|
+
x5u: header.x5Url,
|
|
344
|
+
x5c: header.x5CertChain,
|
|
345
|
+
x5t: header.x5CertThumbprint,
|
|
346
|
+
'x5t#S256': header.x5TS256CertThumbprint,
|
|
347
|
+
};
|
|
348
|
+
*/ } catch (e) {
|
|
349
|
+
throw kit.TokenError.headerInvalid('The token header could not be extracted.');
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
function extractTokenPayload(token) {
|
|
353
|
+
const parts = token.split('.');
|
|
354
|
+
if (parts.length !== 3) {
|
|
355
|
+
throw kit.TokenError.payloadInvalid('The token format is not valid.');
|
|
356
|
+
}
|
|
357
|
+
const [, payloadBase64] = parts;
|
|
358
|
+
try {
|
|
359
|
+
const payload = atob(payloadBase64);
|
|
360
|
+
return JSON.parse(payload);
|
|
361
|
+
} catch (e) {
|
|
362
|
+
throw kit.TokenError.payloadInvalid('The token payload could not be extracted.');
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
264
366
|
function createErrorForJWTError(e) {
|
|
265
|
-
if (smob.isObject(e)
|
|
266
|
-
|
|
267
|
-
|
|
367
|
+
if (smob.isObject(e)) {
|
|
368
|
+
if (typeof e.name === 'string') {
|
|
369
|
+
switch(e.name){
|
|
370
|
+
case 'TokenExpiredError':
|
|
371
|
+
{
|
|
372
|
+
return kit.TokenError.expired();
|
|
373
|
+
}
|
|
374
|
+
case 'NotBeforeError':
|
|
375
|
+
{
|
|
376
|
+
if (typeof e.date === 'string' || e.date instanceof Date) {
|
|
377
|
+
return kit.TokenError.notActiveBefore(e.date);
|
|
378
|
+
}
|
|
379
|
+
break;
|
|
380
|
+
}
|
|
381
|
+
case 'JsonWebTokenError':
|
|
382
|
+
{
|
|
383
|
+
if (typeof e.message === 'string') {
|
|
384
|
+
return kit.TokenError.payloadInvalid(e.message);
|
|
385
|
+
}
|
|
386
|
+
break;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
// @see https://github.com/Keats/jsonwebtoken/blob/master/src/errors.rs
|
|
391
|
+
switch(e.message){
|
|
392
|
+
case 'ExpiredSignature':
|
|
268
393
|
{
|
|
269
|
-
return
|
|
394
|
+
return kit.TokenError.expired();
|
|
270
395
|
}
|
|
271
|
-
case '
|
|
396
|
+
case 'ImmatureSignature':
|
|
272
397
|
{
|
|
273
|
-
|
|
274
|
-
return core.TokenError.notActiveBefore(e.date);
|
|
275
|
-
}
|
|
276
|
-
break;
|
|
398
|
+
return kit.TokenError.notActiveBefore();
|
|
277
399
|
}
|
|
278
|
-
case '
|
|
400
|
+
case 'InvalidToken':
|
|
401
|
+
case 'InvalidSignature':
|
|
279
402
|
{
|
|
280
|
-
|
|
281
|
-
return core.TokenError.payloadInvalid(e.message);
|
|
282
|
-
}
|
|
283
|
-
break;
|
|
403
|
+
return kit.TokenError.payloadInvalid();
|
|
284
404
|
}
|
|
285
405
|
}
|
|
286
406
|
}
|
|
287
|
-
return new
|
|
407
|
+
return new kit.TokenError({
|
|
288
408
|
cause: e,
|
|
289
409
|
logMessage: true,
|
|
290
410
|
message: 'The JWT error could not be determined.'
|
|
291
411
|
});
|
|
292
412
|
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
413
|
+
function transformJWTAlgorithmToInternal(algorithm) {
|
|
414
|
+
switch(algorithm){
|
|
415
|
+
case kit.JWTAlgorithm.HS256:
|
|
416
|
+
{
|
|
417
|
+
return jsonwebtoken.Algorithm.HS256;
|
|
418
|
+
}
|
|
419
|
+
case kit.JWTAlgorithm.HS384:
|
|
420
|
+
{
|
|
421
|
+
return jsonwebtoken.Algorithm.HS384;
|
|
422
|
+
}
|
|
423
|
+
case kit.JWTAlgorithm.HS512:
|
|
424
|
+
{
|
|
425
|
+
return jsonwebtoken.Algorithm.HS512;
|
|
426
|
+
}
|
|
427
|
+
case kit.JWTAlgorithm.RS256:
|
|
428
|
+
{
|
|
429
|
+
return jsonwebtoken.Algorithm.RS256;
|
|
430
|
+
}
|
|
431
|
+
case kit.JWTAlgorithm.RS384:
|
|
432
|
+
{
|
|
433
|
+
return jsonwebtoken.Algorithm.RS384;
|
|
434
|
+
}
|
|
435
|
+
case kit.JWTAlgorithm.RS512:
|
|
436
|
+
{
|
|
437
|
+
return jsonwebtoken.Algorithm.RS512;
|
|
438
|
+
}
|
|
439
|
+
case kit.JWTAlgorithm.ES256:
|
|
440
|
+
{
|
|
441
|
+
return jsonwebtoken.Algorithm.ES256;
|
|
442
|
+
}
|
|
443
|
+
case kit.JWTAlgorithm.ES384:
|
|
444
|
+
{
|
|
445
|
+
return jsonwebtoken.Algorithm.ES384;
|
|
446
|
+
}
|
|
447
|
+
case kit.JWTAlgorithm.PS256:
|
|
448
|
+
{
|
|
449
|
+
return jsonwebtoken.Algorithm.PS256;
|
|
450
|
+
}
|
|
451
|
+
case kit.JWTAlgorithm.PS384:
|
|
452
|
+
{
|
|
453
|
+
return jsonwebtoken.Algorithm.PS384;
|
|
454
|
+
}
|
|
455
|
+
case kit.JWTAlgorithm.PS512:
|
|
456
|
+
{
|
|
457
|
+
return jsonwebtoken.Algorithm.PS512;
|
|
458
|
+
}
|
|
306
459
|
}
|
|
307
|
-
|
|
460
|
+
throw new Error(`The algorithm ${algorithm} is not supported.`);
|
|
308
461
|
}
|
|
309
462
|
|
|
310
|
-
|
|
311
|
-
|
|
463
|
+
const getUtcTimestamp = ()=>Math.floor(new Date().getTime() / 1000);
|
|
464
|
+
async function signToken(claims, context) {
|
|
465
|
+
if (typeof claims.exp !== 'number') {
|
|
466
|
+
claims.exp = getUtcTimestamp() + 3600;
|
|
467
|
+
}
|
|
468
|
+
if (typeof claims.iat !== 'number') {
|
|
469
|
+
claims.iat = getUtcTimestamp();
|
|
470
|
+
}
|
|
312
471
|
switch(context.type){
|
|
313
|
-
case
|
|
314
|
-
case
|
|
472
|
+
case kit.JWKType.RSA:
|
|
473
|
+
case kit.JWKType.EC:
|
|
315
474
|
{
|
|
316
|
-
const {
|
|
317
|
-
|
|
318
|
-
if (type ===
|
|
319
|
-
|
|
475
|
+
const { privateKey } = isKeyPair(context.keyPair) ? context.keyPair : await useKeyPair(context.keyPair);
|
|
476
|
+
let algorithm;
|
|
477
|
+
if (context.type === kit.JWKType.RSA) {
|
|
478
|
+
algorithm = context.algorithm ? transformJWTAlgorithmToInternal(context.algorithm) : jsonwebtoken.Algorithm.RS256;
|
|
320
479
|
} else {
|
|
321
|
-
|
|
480
|
+
algorithm = context.algorithm ? transformJWTAlgorithmToInternal(context.algorithm) : jsonwebtoken.Algorithm.ES256;
|
|
322
481
|
}
|
|
323
|
-
return jsonwebtoken.sign(
|
|
482
|
+
return jsonwebtoken.sign(claims, privateKey, {
|
|
483
|
+
algorithm,
|
|
484
|
+
keyId: context.keyId
|
|
485
|
+
});
|
|
324
486
|
}
|
|
325
|
-
case
|
|
487
|
+
case kit.JWKType.OCT:
|
|
326
488
|
{
|
|
327
|
-
const
|
|
328
|
-
|
|
329
|
-
|
|
489
|
+
const algorithm = context.algorithm ? transformJWTAlgorithmToInternal(context.algorithm) : jsonwebtoken.Algorithm.HS256;
|
|
490
|
+
return jsonwebtoken.sign(claims, context.key, {
|
|
491
|
+
algorithm,
|
|
492
|
+
keyId: context.keyId
|
|
493
|
+
});
|
|
330
494
|
}
|
|
331
495
|
}
|
|
332
|
-
throw new
|
|
496
|
+
throw new kit.TokenError();
|
|
333
497
|
}
|
|
334
498
|
|
|
335
|
-
|
|
499
|
+
/**
|
|
500
|
+
* Verify JWT.
|
|
501
|
+
*
|
|
502
|
+
* @param token
|
|
503
|
+
* @param context
|
|
504
|
+
*
|
|
505
|
+
* @throws TokenError
|
|
506
|
+
*/ async function verifyToken(token, context) {
|
|
336
507
|
let promise;
|
|
337
508
|
let output;
|
|
338
509
|
try {
|
|
339
510
|
switch(context.type){
|
|
340
|
-
case
|
|
341
|
-
case
|
|
511
|
+
case kit.JWKType.RSA:
|
|
512
|
+
case kit.JWKType.EC:
|
|
342
513
|
{
|
|
343
|
-
const {
|
|
344
|
-
|
|
345
|
-
if (type ===
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
514
|
+
const { publicKey } = isKeyPairWithPublicKey(context.keyPair) ? context.keyPair : await useKeyPair(context.keyPair);
|
|
515
|
+
let algorithms;
|
|
516
|
+
if (context.type === kit.JWKType.RSA) {
|
|
517
|
+
algorithms = context.algorithms ? context.algorithms.map((algorithm)=>transformJWTAlgorithmToInternal(algorithm)) : [
|
|
518
|
+
jsonwebtoken.Algorithm.RS256,
|
|
519
|
+
jsonwebtoken.Algorithm.RS384,
|
|
520
|
+
jsonwebtoken.Algorithm.RS512,
|
|
521
|
+
jsonwebtoken.Algorithm.PS256,
|
|
522
|
+
jsonwebtoken.Algorithm.PS384,
|
|
523
|
+
jsonwebtoken.Algorithm.PS512
|
|
353
524
|
];
|
|
354
525
|
} else {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
'ES512'
|
|
526
|
+
algorithms = context.algorithms ? context.algorithms.map((algorithm)=>transformJWTAlgorithmToInternal(algorithm)) : [
|
|
527
|
+
jsonwebtoken.Algorithm.ES256,
|
|
528
|
+
jsonwebtoken.Algorithm.ES384
|
|
359
529
|
];
|
|
360
530
|
}
|
|
361
|
-
promise =
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
reject(err);
|
|
365
|
-
return;
|
|
366
|
-
}
|
|
367
|
-
resolve(decoded);
|
|
368
|
-
});
|
|
531
|
+
promise = jsonwebtoken.verify(token, publicKey, {
|
|
532
|
+
algorithms,
|
|
533
|
+
validateNbf: true
|
|
369
534
|
});
|
|
370
535
|
break;
|
|
371
536
|
}
|
|
372
|
-
case
|
|
537
|
+
case kit.JWKType.OCT:
|
|
373
538
|
{
|
|
374
|
-
const
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
'HS512'
|
|
539
|
+
const algorithms = context.algorithms ? context.algorithms.map((algorithm)=>transformJWTAlgorithmToInternal(algorithm)) : [
|
|
540
|
+
jsonwebtoken.Algorithm.HS256,
|
|
541
|
+
jsonwebtoken.Algorithm.HS384,
|
|
542
|
+
jsonwebtoken.Algorithm.HS512
|
|
379
543
|
];
|
|
380
|
-
promise =
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
reject(err);
|
|
384
|
-
return;
|
|
385
|
-
}
|
|
386
|
-
resolve(decoded);
|
|
387
|
-
});
|
|
544
|
+
promise = jsonwebtoken.verify(token, context.key, {
|
|
545
|
+
algorithms,
|
|
546
|
+
validateNbf: true
|
|
388
547
|
});
|
|
389
548
|
}
|
|
390
549
|
}
|
|
@@ -393,15 +552,96 @@ async function verifyToken(token, context) {
|
|
|
393
552
|
throw createErrorForJWTError(e);
|
|
394
553
|
}
|
|
395
554
|
if (typeof output === 'undefined') {
|
|
396
|
-
throw new
|
|
555
|
+
throw new kit.TokenError({
|
|
397
556
|
message: 'Invalid type.'
|
|
398
557
|
});
|
|
399
558
|
}
|
|
400
559
|
return output;
|
|
401
560
|
}
|
|
402
561
|
|
|
562
|
+
function createLogger(context) {
|
|
563
|
+
let items;
|
|
564
|
+
const cwd = context.directory || process__namespace.cwd();
|
|
565
|
+
if (context.env === 'production') {
|
|
566
|
+
items = [
|
|
567
|
+
new winston.transports.Console({
|
|
568
|
+
level: 'info'
|
|
569
|
+
}),
|
|
570
|
+
new winston.transports.File({
|
|
571
|
+
filename: path.join(cwd, 'access.log'),
|
|
572
|
+
level: 'http',
|
|
573
|
+
maxsize: 10 * 1024 * 1024,
|
|
574
|
+
maxFiles: 5
|
|
575
|
+
}),
|
|
576
|
+
new winston.transports.File({
|
|
577
|
+
filename: path.join(cwd, 'error.log'),
|
|
578
|
+
level: 'warn',
|
|
579
|
+
maxsize: 10 * 1024 * 1024,
|
|
580
|
+
maxFiles: 5
|
|
581
|
+
})
|
|
582
|
+
];
|
|
583
|
+
} else {
|
|
584
|
+
items = [
|
|
585
|
+
new winston.transports.Console({
|
|
586
|
+
level: 'debug'
|
|
587
|
+
})
|
|
588
|
+
];
|
|
589
|
+
}
|
|
590
|
+
return winston.createLogger({
|
|
591
|
+
format: winston.format.combine(winston.format.errors({
|
|
592
|
+
stack: true
|
|
593
|
+
}), winston.format.timestamp(), winston.format.colorize(), winston.format.simple()),
|
|
594
|
+
transports: items
|
|
595
|
+
});
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
const instance$2 = singa.singa({
|
|
599
|
+
name: 'logger'
|
|
600
|
+
});
|
|
601
|
+
function setLoggerFactory(factory) {
|
|
602
|
+
instance$2.setFactory(factory);
|
|
603
|
+
}
|
|
604
|
+
function isLoggerUsable() {
|
|
605
|
+
return instance$2.has() || instance$2.hasFactory();
|
|
606
|
+
}
|
|
607
|
+
function setLogger(input) {
|
|
608
|
+
instance$2.set(input);
|
|
609
|
+
}
|
|
610
|
+
function useLogger() {
|
|
611
|
+
return instance$2.use();
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
const instance$1 = singa.singa({
|
|
615
|
+
name: 'redis'
|
|
616
|
+
});
|
|
617
|
+
function setRedisFactory(factory) {
|
|
618
|
+
instance$1.setFactory(factory);
|
|
619
|
+
}
|
|
620
|
+
function isRedisClientUsable() {
|
|
621
|
+
return instance$1.has() || instance$1.hasFactory();
|
|
622
|
+
}
|
|
623
|
+
function setRedisClient(input) {
|
|
624
|
+
instance$1.set(input);
|
|
625
|
+
}
|
|
626
|
+
function useRedisClient() {
|
|
627
|
+
return instance$1.use();
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
const instance = singa.singa({
|
|
631
|
+
name: 'vault'
|
|
632
|
+
});
|
|
633
|
+
function setVaultFactory(factory) {
|
|
634
|
+
instance.setFactory(factory);
|
|
635
|
+
}
|
|
636
|
+
function isVaultClientUsable() {
|
|
637
|
+
return instance.has() || instance.hasFactory();
|
|
638
|
+
}
|
|
639
|
+
function useVaultClient() {
|
|
640
|
+
return instance.use();
|
|
641
|
+
}
|
|
642
|
+
|
|
403
643
|
function transformDomainEventData(input) {
|
|
404
|
-
if (
|
|
644
|
+
if (kit.isObject(input)) {
|
|
405
645
|
const keys = Object.keys(input);
|
|
406
646
|
for(let i = 0; i < keys.length; i++){
|
|
407
647
|
const value = input[keys[i]];
|
|
@@ -419,187 +659,81 @@ function buildDomainEventChannelName(input, id) {
|
|
|
419
659
|
return input(id);
|
|
420
660
|
}
|
|
421
661
|
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
if (context.event !== core.DomainEventName.CREATED && typeof destinations[i].channel === 'function') {
|
|
436
|
-
key = keyPrefix + buildDomainEventChannelName(destinations[i].channel, context.data.id);
|
|
437
|
-
pipeline.publish(key, json);
|
|
662
|
+
class DomainEventRedisPublisher {
|
|
663
|
+
async publish(ctx) {
|
|
664
|
+
const data = JSON.stringify(transformDomainEventData(ctx.content));
|
|
665
|
+
const pipeline = this.driver.pipeline();
|
|
666
|
+
for(let i = 0; i < ctx.destinations.length; i++){
|
|
667
|
+
const { namespace } = ctx.destinations[i];
|
|
668
|
+
const keyPrefix = namespace ? `${namespace}:` : '';
|
|
669
|
+
let key = keyPrefix + buildDomainEventChannelName(ctx.destinations[i].channel);
|
|
670
|
+
pipeline.publish(key, data);
|
|
671
|
+
if (typeof ctx.destinations[i].channel === 'function') {
|
|
672
|
+
key = keyPrefix + buildDomainEventChannelName(ctx.destinations[i].channel, ctx.content.data.id);
|
|
673
|
+
pipeline.publish(key, data);
|
|
674
|
+
}
|
|
438
675
|
}
|
|
676
|
+
await pipeline.exec();
|
|
439
677
|
}
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
let instance$3;
|
|
444
|
-
function useSocketEmitter() {
|
|
445
|
-
if (typeof instance$3 !== 'undefined') {
|
|
446
|
-
return instance$3;
|
|
678
|
+
constructor(client){
|
|
679
|
+
this.driver = client;
|
|
447
680
|
}
|
|
448
|
-
instance$3 = new redisEmitter.Emitter(redisExtension.useClient());
|
|
449
|
-
return instance$3;
|
|
450
681
|
}
|
|
451
682
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
}
|
|
462
|
-
let roomName = buildDomainEventChannelName(destinations[i].channel);
|
|
463
|
-
const fullEventName = core.buildDomainEventFullName(context.type, context.event);
|
|
464
|
-
emitter.in(roomName)// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
465
|
-
// @ts-ignore
|
|
466
|
-
.emit(fullEventName, {
|
|
467
|
-
...context,
|
|
468
|
-
meta: {
|
|
469
|
-
roomName
|
|
683
|
+
class DomainEventSocketPublisher {
|
|
684
|
+
async publish(ctx) {
|
|
685
|
+
ctx.content = transformDomainEventData(ctx.content);
|
|
686
|
+
for(let i = 0; i < ctx.destinations.length; i++){
|
|
687
|
+
let emitter;
|
|
688
|
+
if (ctx.destinations[i].namespace) {
|
|
689
|
+
emitter = this.driver.of(ctx.destinations[i].namespace);
|
|
690
|
+
} else {
|
|
691
|
+
emitter = this.driver;
|
|
470
692
|
}
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
roomName
|
|
474
|
-
|
|
475
|
-
// @ts-ignore
|
|
476
|
-
.emit(fullEventName, {
|
|
477
|
-
...context,
|
|
693
|
+
let roomName = buildDomainEventChannelName(ctx.destinations[i].channel);
|
|
694
|
+
const fullEventName = kit.buildEventFullName(ctx.content.type, ctx.content.event);
|
|
695
|
+
emitter.in(roomName).emit(fullEventName, {
|
|
696
|
+
...ctx.content,
|
|
478
697
|
meta: {
|
|
479
|
-
roomName
|
|
480
|
-
roomId: context.data.id
|
|
698
|
+
roomName
|
|
481
699
|
}
|
|
482
700
|
});
|
|
701
|
+
if (typeof ctx.destinations[i].channel === 'function') {
|
|
702
|
+
roomName = buildDomainEventChannelName(ctx.destinations[i].channel, ctx.content.data.id);
|
|
703
|
+
emitter.in(roomName).emit(fullEventName, {
|
|
704
|
+
...ctx.content,
|
|
705
|
+
meta: {
|
|
706
|
+
roomName,
|
|
707
|
+
roomId: ctx.content.data.id
|
|
708
|
+
}
|
|
709
|
+
});
|
|
710
|
+
}
|
|
483
711
|
}
|
|
484
712
|
}
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
async function publishDomainEvent(context, destinations) {
|
|
488
|
-
await publishDomainRedisEvent(context, destinations);
|
|
489
|
-
publishDomainSocketEvent(context, destinations);
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
/*
|
|
493
|
-
* Copyright (c) 2022.
|
|
494
|
-
* Author Peter Placzek (tada5hi)
|
|
495
|
-
* For the full copyright and license information,
|
|
496
|
-
* view the LICENSE file that was distributed with this source code.
|
|
497
|
-
*/ class VoidLogger {
|
|
498
|
-
error() {
|
|
499
|
-
return this;
|
|
500
|
-
}
|
|
501
|
-
warn() {
|
|
502
|
-
return this;
|
|
503
|
-
}
|
|
504
|
-
info() {
|
|
505
|
-
return this;
|
|
506
|
-
}
|
|
507
|
-
http() {
|
|
508
|
-
return this;
|
|
509
|
-
}
|
|
510
|
-
verbose() {
|
|
511
|
-
return this;
|
|
512
|
-
}
|
|
513
|
-
debug() {
|
|
514
|
-
return this;
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
let instance$2;
|
|
519
|
-
function useLogger() {
|
|
520
|
-
if (typeof instance$2 !== 'undefined') {
|
|
521
|
-
return instance$2;
|
|
522
|
-
}
|
|
523
|
-
instance$2 = new VoidLogger();
|
|
524
|
-
return instance$2;
|
|
525
|
-
}
|
|
526
|
-
function setLogger(logger) {
|
|
527
|
-
instance$2 = logger;
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
/*
|
|
531
|
-
* Copyright (c) 2022.
|
|
532
|
-
* Author Peter Placzek (tada5hi)
|
|
533
|
-
* For the full copyright and license information,
|
|
534
|
-
* view the LICENSE file that was distributed with this source code.
|
|
535
|
-
*/ let instance$1;
|
|
536
|
-
function hasSmtpConfig() {
|
|
537
|
-
return !!instance$1;
|
|
538
|
-
}
|
|
539
|
-
function setSmtpConfig(value) {
|
|
540
|
-
instance$1 = value;
|
|
541
|
-
}
|
|
542
|
-
function useSmtpConfig() {
|
|
543
|
-
if (typeof instance$1 !== 'undefined') {
|
|
544
|
-
return instance$1;
|
|
713
|
+
constructor(client){
|
|
714
|
+
this.driver = new redisEmitter.Emitter(client);
|
|
545
715
|
}
|
|
546
|
-
instance$1 = {};
|
|
547
|
-
return instance$1;
|
|
548
716
|
}
|
|
549
717
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
} else {
|
|
558
|
-
let auth;
|
|
559
|
-
if (options.user && options.password) {
|
|
560
|
-
auth = {
|
|
561
|
-
type: 'login',
|
|
562
|
-
user: options.user,
|
|
563
|
-
pass: options.password
|
|
564
|
-
};
|
|
565
|
-
}
|
|
566
|
-
transport = nodemailer.createTransport({
|
|
567
|
-
host: options.host,
|
|
568
|
-
port: options.port,
|
|
569
|
-
auth,
|
|
570
|
-
secure: options.ssl,
|
|
571
|
-
opportunisticTLS: options.starttls,
|
|
572
|
-
tls: {
|
|
573
|
-
rejectUnauthorized: false
|
|
718
|
+
class DomainEventPublisher {
|
|
719
|
+
async publish(ctx) {
|
|
720
|
+
const publishers = this.publishers.values();
|
|
721
|
+
while(true){
|
|
722
|
+
const it = publishers.next();
|
|
723
|
+
if (it.done) {
|
|
724
|
+
return;
|
|
574
725
|
}
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
transport.on('error', (e)=>{
|
|
578
|
-
useLogger().error(e.message);
|
|
579
|
-
});
|
|
580
|
-
return transport;
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
let instance;
|
|
584
|
-
async function useSMTPClient() {
|
|
585
|
-
if (typeof instance !== 'undefined') {
|
|
586
|
-
return instance;
|
|
726
|
+
await it.value.publish(ctx);
|
|
727
|
+
}
|
|
587
728
|
}
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
user: testAccount.user,
|
|
596
|
-
password: testAccount.pass
|
|
597
|
-
};
|
|
598
|
-
} else {
|
|
599
|
-
options = useSmtpConfig();
|
|
729
|
+
constructor(){
|
|
730
|
+
this.publishers = new Set();
|
|
731
|
+
if (isRedisClientUsable()) {
|
|
732
|
+
const client = useRedisClient();
|
|
733
|
+
this.publishers.add(new DomainEventRedisPublisher(client));
|
|
734
|
+
this.publishers.add(new DomainEventSocketPublisher(client));
|
|
735
|
+
}
|
|
600
736
|
}
|
|
601
|
-
instance = createSmtpClient(options);
|
|
602
|
-
return instance;
|
|
603
737
|
}
|
|
604
738
|
|
|
605
739
|
/*
|
|
@@ -611,32 +745,85 @@ async function useSMTPClient() {
|
|
|
611
745
|
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
612
746
|
}
|
|
613
747
|
|
|
614
|
-
exports
|
|
748
|
+
Object.defineProperty(exports, "Logger", {
|
|
749
|
+
enumerable: true,
|
|
750
|
+
get: function () { return winston.Logger; }
|
|
751
|
+
});
|
|
752
|
+
Object.defineProperty(exports, "RedisClient", {
|
|
753
|
+
enumerable: true,
|
|
754
|
+
get: function () { return redisExtension.Client; }
|
|
755
|
+
});
|
|
756
|
+
Object.defineProperty(exports, "RedisClientOptions", {
|
|
757
|
+
enumerable: true,
|
|
758
|
+
get: function () { return redisExtension.ClientOptions; }
|
|
759
|
+
});
|
|
760
|
+
Object.defineProperty(exports, "RedisJsonAdapter", {
|
|
761
|
+
enumerable: true,
|
|
762
|
+
get: function () { return redisExtension.JsonAdapter; }
|
|
763
|
+
});
|
|
764
|
+
Object.defineProperty(exports, "RedisWatcher", {
|
|
765
|
+
enumerable: true,
|
|
766
|
+
get: function () { return redisExtension.Watcher; }
|
|
767
|
+
});
|
|
768
|
+
Object.defineProperty(exports, "buildRedisKeyPath", {
|
|
769
|
+
enumerable: true,
|
|
770
|
+
get: function () { return redisExtension.buildKeyPath; }
|
|
771
|
+
});
|
|
772
|
+
Object.defineProperty(exports, "createRedisClient", {
|
|
773
|
+
enumerable: true,
|
|
774
|
+
get: function () { return redisExtension.createClient; }
|
|
775
|
+
});
|
|
776
|
+
Object.defineProperty(exports, "escapeRedisKey", {
|
|
777
|
+
enumerable: true,
|
|
778
|
+
get: function () { return redisExtension.escapeKey; }
|
|
779
|
+
});
|
|
780
|
+
Object.defineProperty(exports, "parseRedisKeyPath", {
|
|
781
|
+
enumerable: true,
|
|
782
|
+
get: function () { return redisExtension.parseKeyPath; }
|
|
783
|
+
});
|
|
784
|
+
Object.defineProperty(exports, "VaultClient", {
|
|
785
|
+
enumerable: true,
|
|
786
|
+
get: function () { return vault.VaultClient; }
|
|
787
|
+
});
|
|
788
|
+
Object.defineProperty(exports, "createVaultClient", {
|
|
789
|
+
enumerable: true,
|
|
790
|
+
get: function () { return vault.createClient; }
|
|
791
|
+
});
|
|
792
|
+
exports.DomainEventPublisher = DomainEventPublisher;
|
|
793
|
+
exports.DomainEventRedisPublisher = DomainEventRedisPublisher;
|
|
794
|
+
exports.DomainEventSocketPublisher = DomainEventSocketPublisher;
|
|
795
|
+
exports.KeyPairKind = KeyPairKind;
|
|
615
796
|
exports.buildKeyFileName = buildKeyFileName;
|
|
616
797
|
exports.compare = compare;
|
|
617
798
|
exports.createKeyPair = createKeyPair;
|
|
618
|
-
exports.
|
|
619
|
-
exports.decodeToken = decodeToken;
|
|
799
|
+
exports.createLogger = createLogger;
|
|
620
800
|
exports.decryptRSAPrivateKey = decryptRSAPrivateKey;
|
|
621
801
|
exports.deleteKeyPair = deleteKeyPair;
|
|
622
802
|
exports.extendKeyPairOptions = extendKeyPairOptions;
|
|
803
|
+
exports.extractTokenHeader = extractTokenHeader;
|
|
804
|
+
exports.extractTokenPayload = extractTokenPayload;
|
|
623
805
|
exports.hasOwnProperty = hasOwnProperty;
|
|
624
|
-
exports.hasSmtpConfig = hasSmtpConfig;
|
|
625
806
|
exports.hash = hash;
|
|
626
807
|
exports.isKeyPair = isKeyPair;
|
|
627
808
|
exports.isKeyPairWithPublicKey = isKeyPairWithPublicKey;
|
|
809
|
+
exports.isLoggerUsable = isLoggerUsable;
|
|
810
|
+
exports.isRedisClientUsable = isRedisClientUsable;
|
|
811
|
+
exports.isVaultClientUsable = isVaultClientUsable;
|
|
628
812
|
exports.loadKeyPair = loadKeyPair;
|
|
629
|
-
exports.publishDomainEvent = publishDomainEvent;
|
|
630
|
-
exports.publishDomainRedisEvent = publishDomainRedisEvent;
|
|
631
|
-
exports.publishDomainSocketEvent = publishDomainSocketEvent;
|
|
632
813
|
exports.saveKeyPair = saveKeyPair;
|
|
633
814
|
exports.setLogger = setLogger;
|
|
634
|
-
exports.
|
|
815
|
+
exports.setLoggerFactory = setLoggerFactory;
|
|
816
|
+
exports.setRedisClient = setRedisClient;
|
|
817
|
+
exports.setRedisFactory = setRedisFactory;
|
|
818
|
+
exports.setVaultFactory = setVaultFactory;
|
|
635
819
|
exports.signToken = signToken;
|
|
820
|
+
exports.unwrapPrivateKeyPem = unwrapPrivateKeyPem;
|
|
821
|
+
exports.unwrapPublicKeyPem = unwrapPublicKeyPem;
|
|
636
822
|
exports.useKeyPair = useKeyPair;
|
|
637
823
|
exports.useLogger = useLogger;
|
|
638
|
-
exports.
|
|
639
|
-
exports.
|
|
640
|
-
exports.useSocketEmitter = useSocketEmitter;
|
|
824
|
+
exports.useRedisClient = useRedisClient;
|
|
825
|
+
exports.useVaultClient = useVaultClient;
|
|
641
826
|
exports.verifyToken = verifyToken;
|
|
827
|
+
exports.wrapPrivateKeyPem = wrapPrivateKeyPem;
|
|
828
|
+
exports.wrapPublicKeyPem = wrapPublicKeyPem;
|
|
642
829
|
//# sourceMappingURL=index.cjs.map
|