@authup/server-core 0.29.0 → 0.30.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/crypto/json-web-token/type.d.ts +4 -3
- package/dist/crypto/json-web-token/type.d.ts.map +1 -1
- package/dist/crypto/key-pair/utils/check.d.ts +1 -0
- package/dist/crypto/key-pair/utils/check.d.ts.map +1 -1
- package/dist/index.cjs +6 -47
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +6 -43
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -6
- package/dist/domains/index.d.ts +0 -2
- package/dist/domains/index.d.ts.map +0 -1
- package/dist/domains/robot/index.d.ts +0 -2
- package/dist/domains/robot/index.d.ts.map +0 -1
- package/dist/domains/robot/vault.d.ts +0 -5
- package/dist/domains/robot/vault.d.ts.map +0 -1
- package/dist/vault/index.d.ts +0 -2
- package/dist/vault/index.d.ts.map +0 -1
- package/dist/vault/module.d.ts +0 -4
- package/dist/vault/module.d.ts.map +0 -1
|
@@ -15,14 +15,15 @@ export type TokenSignOptions = ({
|
|
|
15
15
|
algorithm?: 'HS256' | 'HS384' | 'HS512';
|
|
16
16
|
secret: string | Buffer;
|
|
17
17
|
}) & Omit<SignOptions, 'algorithm'>;
|
|
18
|
+
export type TokenVerifyRSAlgorithm = 'RS256' | 'RS384' | 'RS512' | 'PS256' | 'PS384' | 'PS512';
|
|
18
19
|
export type TokenVerifyOptions = ({
|
|
19
20
|
type: `${KeyType.RSA}` | KeyType.RSA;
|
|
20
|
-
algorithms?:
|
|
21
|
-
keyPair: KeyPair | Partial<KeyPairOptions> | string;
|
|
21
|
+
algorithms?: TokenVerifyRSAlgorithm[];
|
|
22
|
+
keyPair: Omit<KeyPair, 'privateKey'> | KeyPair | Partial<KeyPairOptions> | string;
|
|
22
23
|
} | {
|
|
23
24
|
type: `${KeyType.EC}` | KeyType.EC;
|
|
24
25
|
algorithms?: ('ES256' | 'ES384' | 'ES512')[];
|
|
25
|
-
keyPair: KeyPair | Partial<KeyPairOptions> | string;
|
|
26
|
+
keyPair: Omit<KeyPair, 'privateKey'> | KeyPair | Partial<KeyPairOptions> | string;
|
|
26
27
|
} | {
|
|
27
28
|
type: `${KeyType.OCT}` | KeyType.OCT;
|
|
28
29
|
algorithms?: ('HS256' | 'HS384' | 'HS512')[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/crypto/json-web-token/type.ts"],"names":[],"mappings":";AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG,CAAC;IAC5B,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GACvC,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAC5B,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAA;CACtD,GAAG;IACA,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAA;CACtD,GAAG;IACA,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAC1B,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAEpC,MAAM,MAAM,kBAAkB,GAAG,CAAC;IAC9B,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACrC,UAAU,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/crypto/json-web-token/type.ts"],"names":[],"mappings":";AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG,CAAC;IAC5B,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GACvC,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAC5B,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAA;CACtD,GAAG;IACA,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAA;CACtD,GAAG;IACA,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAC1B,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAEpC,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAChE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAE5B,MAAM,MAAM,kBAAkB,GAAG,CAAC;IAC9B,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACrC,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACtC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAA;CACpF,GAAG;IACA,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;IAC7C,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAA;CACpF,GAAG;IACA,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACrC,UAAU,CAAC,EAAE,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;IAC7C,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAC1B,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AAEvC,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../../src/crypto/key-pair/utils/check.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAI,IAAI,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../../src/crypto/key-pair/utils/check.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAI,IAAI,IAAI,OAAO,CAIzD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAG1F"}
|
package/dist/index.cjs
CHANGED
|
@@ -11,7 +11,6 @@ var fs = require('node:fs');
|
|
|
11
11
|
var jsonwebtoken = require('jsonwebtoken');
|
|
12
12
|
var redisExtension = require('redis-extension');
|
|
13
13
|
var redisEmitter = require('@socket.io/redis-emitter');
|
|
14
|
-
var vault = require('@hapic/vault');
|
|
15
14
|
var http = require('node:http');
|
|
16
15
|
var https = require('node:https');
|
|
17
16
|
var proxyFromEnv = require('proxy-from-env');
|
|
@@ -182,7 +181,10 @@ async function hash(str, saltOrRounds = 10) {
|
|
|
182
181
|
})(exports.KeyPairKind || (exports.KeyPairKind = {}));
|
|
183
182
|
|
|
184
183
|
function isKeyPair(data) {
|
|
185
|
-
return
|
|
184
|
+
return core.isObject(data) && typeof data.privateKey !== 'undefined' && typeof data.publicKey !== 'undefined';
|
|
185
|
+
}
|
|
186
|
+
function isKeyPairWithPublicKey(data) {
|
|
187
|
+
return core.isObject(data) && typeof data.publicKey !== 'undefined';
|
|
186
188
|
}
|
|
187
189
|
|
|
188
190
|
function extendKeyPairOptions(options) {
|
|
@@ -481,7 +483,7 @@ async function verifyToken(token, context) {
|
|
|
481
483
|
case core.KeyType.EC:
|
|
482
484
|
{
|
|
483
485
|
const { type , keyPair , ...options } = context;
|
|
484
|
-
const { publicKey } =
|
|
486
|
+
const { publicKey } = isKeyPairWithPublicKey(keyPair) ? keyPair : await useKeyPair(keyPair);
|
|
485
487
|
if (type === core.KeyType.RSA) {
|
|
486
488
|
options.algorithms = options.algorithms || [
|
|
487
489
|
'RS256',
|
|
@@ -609,35 +611,6 @@ async function publishDomainEvent(context, destinations) {
|
|
|
609
611
|
publishDomainSocketEvent(context, destinations);
|
|
610
612
|
}
|
|
611
613
|
|
|
612
|
-
async function saveRobotCredentialsToVault(entity) {
|
|
613
|
-
if (!vault.hasConfig()) {
|
|
614
|
-
return;
|
|
615
|
-
}
|
|
616
|
-
const client = vault.useClient();
|
|
617
|
-
await client.keyValue.save('robots', entity.name, {
|
|
618
|
-
id: entity.id,
|
|
619
|
-
secret: entity.secret
|
|
620
|
-
});
|
|
621
|
-
}
|
|
622
|
-
async function removeRobotCredentialsFromVault(entity) {
|
|
623
|
-
if (!vault.hasConfig()) {
|
|
624
|
-
return;
|
|
625
|
-
}
|
|
626
|
-
const client = vault.useClient();
|
|
627
|
-
await client.keyValue.delete('robots', entity.name);
|
|
628
|
-
}
|
|
629
|
-
async function findRobotCredentialsInVault(entity) {
|
|
630
|
-
if (!vault.hasConfig()) {
|
|
631
|
-
return undefined;
|
|
632
|
-
}
|
|
633
|
-
const client = vault.useClient();
|
|
634
|
-
const response = await client.keyValue.find('robots', entity.name);
|
|
635
|
-
if (response && response.data) {
|
|
636
|
-
return response.data;
|
|
637
|
-
}
|
|
638
|
-
return undefined;
|
|
639
|
-
}
|
|
640
|
-
|
|
641
614
|
/*
|
|
642
615
|
* Copyright (c) 2022.
|
|
643
616
|
* Author Peter Placzek (tada5hi)
|
|
@@ -819,16 +792,6 @@ async function useSMTPClient() {
|
|
|
819
792
|
return instance;
|
|
820
793
|
}
|
|
821
794
|
|
|
822
|
-
function setVaultConfig(input) {
|
|
823
|
-
if (vault.hasClient()) {
|
|
824
|
-
vault.unsetClient();
|
|
825
|
-
}
|
|
826
|
-
vault.setConfig(input);
|
|
827
|
-
}
|
|
828
|
-
function hasVaultConfig() {
|
|
829
|
-
return vault.hasConfig();
|
|
830
|
-
}
|
|
831
|
-
|
|
832
795
|
exports.ProxyClient = ProxyClient;
|
|
833
796
|
exports.VoidLogger = VoidLogger;
|
|
834
797
|
exports.buildHTTPClientConfigForProxy = buildHTTPClientConfigForProxy;
|
|
@@ -841,13 +804,12 @@ exports.decodeToken = decodeToken;
|
|
|
841
804
|
exports.decryptRSAPrivateKey = decryptRSAPrivateKey;
|
|
842
805
|
exports.deleteKeyPair = deleteKeyPair;
|
|
843
806
|
exports.extendKeyPairOptions = extendKeyPairOptions;
|
|
844
|
-
exports.findRobotCredentialsInVault = findRobotCredentialsInVault;
|
|
845
807
|
exports.hasOwnProperty = hasOwnProperty;
|
|
846
808
|
exports.hasProcessEnv = hasProcessEnv;
|
|
847
809
|
exports.hasSmtpConfig = hasSmtpConfig;
|
|
848
|
-
exports.hasVaultConfig = hasVaultConfig;
|
|
849
810
|
exports.hash = hash;
|
|
850
811
|
exports.isKeyPair = isKeyPair;
|
|
812
|
+
exports.isKeyPairWithPublicKey = isKeyPairWithPublicKey;
|
|
851
813
|
exports.loadKeyPair = loadKeyPair;
|
|
852
814
|
exports.publishDomainEvent = publishDomainEvent;
|
|
853
815
|
exports.publishDomainRedisEvent = publishDomainRedisEvent;
|
|
@@ -857,12 +819,9 @@ exports.readBoolOrStringFromProcessEnv = readBoolOrStringFromProcessEnv;
|
|
|
857
819
|
exports.readConfigFile = readConfigFile;
|
|
858
820
|
exports.readFromProcessEnv = readFromProcessEnv;
|
|
859
821
|
exports.readIntFromProcessEnv = readIntFromProcessEnv;
|
|
860
|
-
exports.removeRobotCredentialsFromVault = removeRobotCredentialsFromVault;
|
|
861
822
|
exports.saveKeyPair = saveKeyPair;
|
|
862
|
-
exports.saveRobotCredentialsToVault = saveRobotCredentialsToVault;
|
|
863
823
|
exports.setLogger = setLogger;
|
|
864
824
|
exports.setSmtpConfig = setSmtpConfig;
|
|
865
|
-
exports.setVaultConfig = setVaultConfig;
|
|
866
825
|
exports.signToken = signToken;
|
|
867
826
|
exports.useKeyPair = useKeyPair;
|
|
868
827
|
exports.useLogger = useLogger;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/utils/env.ts","../src/utils/has-property.ts","../src/config/utils.ts","../src/config/read.ts","../src/crypto/hash/compare.ts","../src/crypto/hash/hash.ts","../src/crypto/key-pair/constants.ts","../src/crypto/key-pair/utils/check.ts","../src/crypto/key-pair/utils/options.ts","../src/crypto/key-pair/utils/file-name.ts","../src/crypto/key-pair/utils/private-key.ts","../src/crypto/key-pair/save.ts","../src/crypto/key-pair/create.ts","../src/crypto/key-pair/delete.ts","../src/crypto/key-pair/load.ts","../src/crypto/key-pair/module.ts","../src/crypto/json-web-token/utils.ts","../src/crypto/json-web-token/decode.ts","../src/crypto/json-web-token/sign.ts","../src/crypto/json-web-token/verify.ts","../src/domain-event/utils.ts","../src/domain-event/redis/publish.ts","../src/domain-event/socket/singleton.ts","../src/domain-event/socket/publish.ts","../src/domain-event/publish.ts","../src/domains/robot/vault.ts","../src/logger/presets/void.ts","../src/logger/module.ts","../src/proxy/module.ts","../src/proxy/utils.ts","../src/smtp/config/singleton.ts","../src/smtp/module.ts","../src/smtp/singleton.ts","../src/vault/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty } from '@authup/core';\nimport process from 'node:process';\n\nexport function hasProcessEnv(key: string | string[]) : boolean {\n const keys = Array.isArray(key) ? key : [key];\n for (let i = 0; i < keys.length; i++) {\n if (hasOwnProperty(process.env, keys[i])) {\n return true;\n }\n }\n return false;\n}\n\nexport function readFromProcessEnv(key: string | string[]) : string | undefined;\nexport function readFromProcessEnv<T>(key: string | string[], alt: T) : T | string;\nexport function readFromProcessEnv<T>(key: string | string[], alt?: T): any {\n const keys = Array.isArray(key) ? key : [key];\n for (let i = 0; i < keys.length; i++) {\n if (hasOwnProperty(process.env, keys[i])) {\n return process.env[keys[i]];\n }\n }\n\n return alt;\n}\n\nexport function readBoolFromProcessEnv(key: string | string[], alt?: boolean): boolean | undefined {\n const keys = Array.isArray(key) ? key : [key];\n for (let i = 0; i < keys.length; i++) {\n const value = readFromProcessEnv(keys[i], alt);\n\n switch (value) {\n case true:\n case 'true':\n case 't':\n case '1':\n return true;\n case false:\n case 'false':\n case 'f':\n case '0':\n return false;\n }\n }\n\n return alt;\n}\n\nexport function readBoolOrStringFromProcessEnv(\n key: string,\n alt?: boolean | string,\n) : boolean | string | undefined {\n if (hasProcessEnv(key)) {\n const value = readBoolFromProcessEnv(key, undefined);\n if (typeof value === 'undefined') {\n return readFromProcessEnv(key, alt);\n }\n\n return value;\n }\n\n return alt;\n}\n\nexport function readIntFromProcessEnv(\n key: string | string[],\n alt?: number,\n): number | undefined {\n const keys = Array.isArray(key) ? key : [key];\n\n for (let i = 0; i < keys.length; i++) {\n const value = readFromProcessEnv(keys[i], alt);\n const intValue = parseInt(`${value}`, 10);\n\n if (!Number.isNaN(intValue)) {\n return intValue;\n }\n }\n\n return alt;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function hasOwnProperty<X extends Record<string, any>, Y extends PropertyKey>(\n obj: X,\n prop: Y,\n): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport process from 'node:process';\nimport { hasProcessEnv, readFromProcessEnv } from '../utils';\n\nexport function buildWorkingDirectoryPathsForConfigFile() {\n const cwd : string[] = [\n process.cwd(),\n ];\n\n if (hasProcessEnv('WRITABLE_DIRECTORY_PATH')) {\n let writableDirectoryPath = readFromProcessEnv('WRITABLE_DIRECTORY_PATH');\n if (!path.isAbsolute(writableDirectoryPath)) {\n writableDirectoryPath = path.join(process.cwd(), writableDirectoryPath);\n }\n\n cwd.push(writableDirectoryPath);\n } else {\n cwd.push(path.join(process.cwd(), 'writable'));\n }\n\n return cwd;\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/core';\nimport { getModuleExport, load, locateMany } from 'locter';\nimport path from 'node:path';\nimport process from 'node:process';\nimport { merge } from 'smob';\nimport type { ConfigFileReadContext } from './type';\nimport { buildWorkingDirectoryPathsForConfigFile } from './utils';\n\nexport async function readConfigFile(context?: ConfigFileReadContext) : Promise<Record<string, any>> {\n context = context || {};\n\n const cwd : string[] = [];\n if (context.cwd) {\n const arr = Array.isArray(context.cwd) ?\n context.cwd :\n [context.cwd];\n\n for (let i = 0; i < arr.length; i++) {\n if (path.isAbsolute(arr[i])) {\n cwd.push(arr[i]);\n } else {\n cwd.push(path.join(process.cwd(), arr[i]));\n }\n }\n }\n\n if (cwd.length === 0) {\n cwd.push(...buildWorkingDirectoryPathsForConfigFile());\n }\n\n const locations = await locateMany([\n 'authup.*.{conf,js,mjs,cjs,ts,mts,mts}',\n 'authup.{conf,js,mjs,cjs,ts,mts,mts}',\n ], {\n path: cwd,\n });\n\n const content : Record<string, any> = {};\n\n for (let i = 0; i < locations.length; i++) {\n const file = await load(locations[i]);\n const fileExport = getModuleExport(file);\n\n if (!isObject(fileExport.value)) {\n continue;\n }\n\n const [root, name] = locations[i].name.split('.');\n if (root && name) {\n if (context.name === name) {\n merge(content, fileExport.value);\n } else if (!context.name) {\n content[name] = content[name] || {};\n merge(content[name], fileExport.value);\n }\n }\n\n if (root && !name) {\n if (context.name) {\n if (isObject(fileExport.value[context.name])) {\n merge(content, fileExport.value[context.name]);\n }\n } else {\n merge(content, fileExport.value);\n }\n }\n }\n\n return content;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { compare as compareMethod } from 'bcrypt';\n\nexport async function compare(value: string, hashedValue: string) : Promise<boolean> {\n return compareMethod(value, hashedValue);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hash as hashMethod } from 'bcrypt';\n\nexport async function hash(str: string, saltOrRounds: number | string = 10) : Promise<string> {\n return hashMethod(str, saltOrRounds);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum KeyPairKind {\n PRIVATE = 'private',\n PUBLIC = 'public',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty } from '@authup/core';\nimport type { KeyPair } from '../type';\n\nexport function isKeyPair(data: unknown) : data is KeyPair {\n return typeof data === 'object' &&\n data !== null &&\n hasOwnProperty(data, 'privateKey') &&\n hasOwnProperty(data, 'publicKey');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport type { KeyPairOptions } from '../type';\n\nexport function extendKeyPairOptions(\n options?: Partial<KeyPairOptions>,\n) : KeyPairOptions {\n options = options ?? {};\n\n options.directory = options.directory || process.cwd();\n options.directory = path.isAbsolute(options.directory) ?\n options.directory :\n path.resolve(process.cwd(), options.directory);\n\n options.type ??= 'rsa';\n\n if (\n options.type === 'rsa' ||\n options.type === 'rsa-pss' ||\n options.type === 'dsa'\n ) {\n options.modulusLength = 2048;\n }\n\n if (!options.privateKeyEncoding) {\n options.privateKeyEncoding = {\n type: 'pkcs8',\n format: 'pem',\n };\n }\n\n if (!options.publicKeyEncoding) {\n options.publicKeyEncoding = {\n type: 'spki',\n format: 'pem',\n };\n }\n\n if (\n options.privateKeyEncoding.passphrase &&\n !options.privateKeyEncoding.cipher\n ) {\n options.privateKeyEncoding.cipher = 'aes-256-cbc';\n }\n\n return options as KeyPairOptions;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { KeyPairKind } from '../constants';\nimport type { KeyPairOptions } from '../type';\nimport { extendKeyPairOptions } from './options';\n\nexport function buildKeyFileName(\n type: `${KeyPairKind}`,\n context?: Partial<KeyPairOptions>,\n) {\n const options = extendKeyPairOptions(context);\n\n const parts : string[] = [];\n\n switch (type) {\n case KeyPairKind.PRIVATE: {\n if (options.privateName) {\n parts.push(options.privateName);\n } else {\n parts.push(type);\n }\n\n if (options.privateExtension) {\n if (options.privateExtension.startsWith('.')) {\n options.privateExtension = options.privateExtension.slice(1);\n }\n\n parts.push(options.privateExtension);\n } else {\n parts.push('pem');\n }\n break;\n }\n case KeyPairKind.PUBLIC: {\n if (options.publicName) {\n parts.push(options.publicName);\n } else {\n parts.push(type);\n }\n\n if (options.publicExtension) {\n if (options.publicExtension.startsWith('.')) {\n options.publicExtension = options.publicExtension.slice(1);\n }\n\n parts.push(options.publicExtension);\n } else {\n parts.push('pem');\n }\n break;\n }\n }\n\n return parts.join('.');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createPrivateKey } from 'node:crypto';\nimport type { KeyPairOptions } from '../type';\n\nexport function decryptRSAPrivateKey(\n context: KeyPairOptions,\n key: string | Buffer,\n) : string {\n const privateKey = createPrivateKey({\n type: context.privateKeyEncoding.type,\n format: context.privateKeyEncoding.format,\n key,\n passphrase: context.privateKeyEncoding.passphrase || context.passphrase,\n });\n\n let content = privateKey.export({\n type: context.privateKeyEncoding.type,\n format: context.privateKeyEncoding.format,\n });\n\n if (typeof content !== 'string') {\n content = Buffer.from(content).toString('utf-8');\n }\n\n return content;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { buildKeyFileName, extendKeyPairOptions } from './utils';\nimport { KeyPairKind } from './constants';\n\nexport async function saveKeyPair(keyPair: KeyPair, context?: KeyPairOptions) : Promise<KeyPair> {\n context = extendKeyPairOptions(context);\n\n await fs.promises.mkdir(context.directory, { recursive: true });\n\n await Promise.all(\n [\n {\n path: path.resolve(context.directory, buildKeyFileName(KeyPairKind.PRIVATE, context)),\n content: keyPair.privateKey,\n },\n {\n path: path.resolve(context.directory, buildKeyFileName(KeyPairKind.PUBLIC, context)),\n content: keyPair.publicKey,\n },\n ]\n .map((file) => fs.promises.writeFile(file.path, file.content)),\n );\n\n return keyPair;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { generateKeyPair } from 'node:crypto';\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { decryptRSAPrivateKey, extendKeyPairOptions } from './utils';\nimport { saveKeyPair } from './save';\n\nexport async function createKeyPair(context?: Partial<KeyPairOptions>) : Promise<KeyPair> {\n const options = extendKeyPairOptions(context);\n\n const keyPair : KeyPair = await new Promise((resolve: (value: KeyPair) => void, reject) => {\n const callback = (err: (Error | null), publicKey: string, privateKey: string) => {\n if (err) reject(err);\n\n resolve({\n privateKey,\n publicKey,\n });\n };\n switch (options.type) {\n case 'dsa':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n case 'ec':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n case 'rsa':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n case 'rsa-pss':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n }\n });\n\n if (options.save) {\n await saveKeyPair(keyPair, options);\n }\n\n if (\n options.passphrase ||\n options.privateKeyEncoding.passphrase\n ) {\n keyPair.privateKey = decryptRSAPrivateKey(\n options,\n keyPair.privateKey,\n );\n }\n\n return keyPair;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { KeyPairOptions } from './type';\nimport { buildKeyFileName, extendKeyPairOptions } from './utils';\nimport { KeyPairKind } from './constants';\n\nexport async function deleteKeyPair(context?: Partial<KeyPairOptions>) : Promise<void> {\n const options = extendKeyPairOptions(context);\n\n const privateKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PRIVATE, options));\n const publicKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PUBLIC, options));\n\n try {\n await Promise.all([privateKeyPath, publicKeyPath]\n .map((filePath) => fs.promises.stat(filePath)));\n } catch (e) {\n return;\n }\n\n await Promise.all([\n privateKeyPath,\n publicKeyPath,\n ].map((filePath) => fs.promises.rm(filePath)));\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createPublicKey } from 'node:crypto';\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { buildKeyFileName, decryptRSAPrivateKey, extendKeyPairOptions } from './utils';\nimport { KeyPairKind } from './constants';\nimport { saveKeyPair } from './save';\n\nexport async function loadKeyPair(context?: Partial<KeyPairOptions>) : Promise<KeyPair | undefined> {\n const options = extendKeyPairOptions(context);\n\n const privateKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PRIVATE, options));\n\n try {\n await fs.promises.stat(privateKeyPath);\n } catch (e) {\n return undefined;\n }\n\n const privateKeyBuffer = await fs.promises.readFile(privateKeyPath);\n let privateKey = privateKeyBuffer.toString();\n if (\n options.passphrase ||\n options.privateKeyEncoding.passphrase\n ) {\n privateKey = decryptRSAPrivateKey(\n options,\n privateKey,\n );\n }\n\n const publicKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PUBLIC, options));\n\n let publicKey : string;\n\n try {\n await fs.promises.stat(publicKeyPath);\n const publicKeyBuffer = await fs.promises.readFile(publicKeyPath);\n publicKey = publicKeyBuffer.toString();\n } catch (e) {\n const publicKeyObject = createPublicKey({\n key: privateKey,\n format: options.privateKeyEncoding.format,\n type: options.publicKeyEncoding.type,\n });\n\n const stringOrBuffer = publicKeyObject.export({\n format: options.publicKeyEncoding.format,\n type: options.publicKeyEncoding.type,\n });\n if (typeof stringOrBuffer !== 'string') {\n publicKey = stringOrBuffer.toString();\n } else {\n publicKey = stringOrBuffer;\n }\n\n if (options.save) {\n await saveKeyPair({\n privateKey,\n publicKey,\n }, options);\n }\n }\n\n return {\n privateKey,\n publicKey,\n };\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { extendKeyPairOptions } from './utils';\nimport { loadKeyPair } from './load';\nimport { createKeyPair } from './create';\n\nconst keyPairCache : Record<string, KeyPair> = {};\n\nexport async function useKeyPair(value?: Partial<KeyPairOptions> | string) : Promise<KeyPair> {\n let options : KeyPairOptions;\n\n if (typeof value === 'string') {\n options = extendKeyPairOptions({\n privateName: value,\n });\n } else {\n options = extendKeyPairOptions(value || {});\n }\n\n if (Object.prototype.hasOwnProperty.call(keyPairCache, options.privateName)) {\n return keyPairCache[options.privateName];\n }\n\n let keyPair = await loadKeyPair(options);\n if (typeof keyPair === 'undefined') {\n keyPair = await createKeyPair(options);\n }\n\n keyPairCache[options.privateName] = keyPair;\n\n return keyPair;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { TokenError, hasOwnProperty } from '@authup/core';\n\nexport function handleJWTError(e: unknown) {\n if (\n e &&\n typeof e === 'object' &&\n hasOwnProperty(e, 'name')\n ) {\n switch (e.name) {\n case 'TokenExpiredError':\n throw TokenError.expired();\n case 'NotBeforeError': {\n if (\n hasOwnProperty(e, 'date') &&\n typeof e.date === 'string'\n ) {\n throw TokenError.notActiveBefore(e.date);\n }\n break;\n }\n case 'JsonWebTokenError': {\n if (\n hasOwnProperty(e, 'message') &&\n typeof e.message === 'string'\n ) {\n throw TokenError.payloadInvalid(e.message);\n }\n }\n }\n }\n\n throw new TokenError({\n previous: e as Error,\n decorateMessage: true,\n logMessage: true,\n message: 'The JWT error could not be determined.',\n });\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n Jwt,\n JwtPayload,\n} from 'jsonwebtoken';\nimport {\n decode,\n} from 'jsonwebtoken';\nimport { TokenError } from '@authup/core';\nimport type { TokenDecodeOptions } from './type';\nimport { handleJWTError } from './utils';\n\n/**\n * Decode a JWT token with no verification.\n *\n * @param token\n * @param options\n *\n * @throws TokenError\n */\nexport function decodeToken(token: string, options: TokenDecodeOptions & { complete: true }): null | Jwt;\nexport function decodeToken(token: string, options?: TokenDecodeOptions): JwtPayload | string | null;\nexport function decodeToken(\n token: string,\n options?: TokenDecodeOptions,\n): JwtPayload | string | null {\n options ??= {};\n\n try {\n return decode(token, {\n ...options,\n });\n } catch (e) {\n handleJWTError(e);\n\n throw e;\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { sign } from 'jsonwebtoken';\nimport { KeyType, TokenError } from '@authup/core';\nimport { isKeyPair, useKeyPair } from '../key-pair';\nimport type { TokenSignOptions } from './type';\n\nexport async function signToken(\n payload: string | object | Buffer | Record<string, any>,\n context: TokenSignOptions,\n): Promise<string> {\n context.expiresIn = context.expiresIn || 3600;\n\n switch (context.type) {\n case KeyType.RSA:\n case KeyType.EC: {\n const { type, keyPair, ...options } = context;\n const { privateKey } = isKeyPair(keyPair) ?\n keyPair :\n await useKeyPair(keyPair);\n\n if (type === KeyType.RSA) {\n options.algorithm = options.algorithm || 'RS256';\n } else {\n options.algorithm = options.algorithm || 'ES256';\n }\n\n return sign(payload, privateKey, options);\n }\n case KeyType.OCT: {\n const { type, secret, ...options } = context;\n options.algorithm = options.algorithm || 'HS256';\n\n return sign(payload, secret, options);\n }\n }\n\n throw new TokenError();\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Jwt, JwtPayload } from 'jsonwebtoken';\nimport { verify } from 'jsonwebtoken';\nimport { KeyType, TokenError } from '@authup/core';\nimport { isKeyPair, useKeyPair } from '../key-pair';\nimport type { TokenVerifyOptions } from './type';\nimport { handleJWTError } from './utils';\n\n/**\n * Verify JWT.\n *\n * @param token\n * @param context\n *\n * @throws TokenError\n */\nexport async function verifyToken(token: string, context: TokenVerifyOptions & { complete: true }): Promise<string | Jwt>;\nexport async function verifyToken(token: string, context: TokenVerifyOptions): Promise<JwtPayload | string>;\nexport async function verifyToken(\n token: string,\n context: TokenVerifyOptions,\n) : Promise<JwtPayload | Jwt | string> {\n try {\n switch (context.type) {\n case KeyType.RSA:\n case KeyType.EC: {\n const { type, keyPair, ...options } = context;\n const { publicKey } = isKeyPair(keyPair) ?\n keyPair :\n await useKeyPair(keyPair);\n\n if (type === KeyType.RSA) {\n options.algorithms = options.algorithms || ['RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512'];\n } else {\n options.algorithms = options.algorithms || ['ES256', 'ES384', 'ES512'];\n }\n\n return verify(token, publicKey, {\n ...options,\n });\n }\n case KeyType.OCT: {\n const { type, secret, ...options } = context;\n\n options.algorithms = options.algorithms || ['HS256', 'HS384', 'HS512'];\n\n return verify(token, secret, {\n ...options,\n });\n }\n }\n } catch (e) {\n handleJWTError(e);\n\n throw e;\n }\n\n throw new TokenError({ message: 'Invalid type.' });\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/core';\nimport type { DomainEventChannelName } from './type';\n\nexport function transformDomainEventData<T>(input: T) : T {\n if (isObject(input)) {\n const keys = Object.keys(input);\n for (let i = 0; i < keys.length; i++) {\n const value = input[keys[i]];\n if (value instanceof Date) {\n input[keys[i]] = value.toISOString();\n }\n }\n }\n\n return input;\n}\n\nexport function buildDomainEventChannelName(\n input: DomainEventChannelName,\n id?: string | number,\n) : string {\n if (typeof input === 'string') {\n return input;\n }\n\n return input(id);\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { DomainEventName } from '@authup/core';\nimport type { DomainEventContext } from '@authup/core';\nimport { hasClient, hasConfig, useClient } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport async function publishDomainRedisEvent(\n context: DomainEventContext,\n destinations: DomainEventDestinations,\n) : Promise<any> {\n if (!hasClient() && !hasConfig()) {\n return Promise.resolve();\n }\n\n context = transformDomainEventData(context);\n\n const json = JSON.stringify(context);\n\n const client = useClient();\n const pipeline = client.pipeline();\n for (let i = 0; i < destinations.length; i++) {\n const { namespace } = destinations[i];\n const keyPrefix = (namespace ? `${namespace}:` : '');\n\n let key = keyPrefix + buildDomainEventChannelName(destinations[i].channel);\n pipeline.publish(key, json);\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n key = keyPrefix + buildDomainEventChannelName(destinations[i].channel, context.data.id);\n pipeline.publish(key, json);\n }\n }\n\n return pipeline.exec();\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { Emitter } from '@socket.io/redis-emitter';\nimport { useClient } from 'redis-extension';\nimport type { SocketServerToClientEvents } from './type';\n\nlet instance : undefined | Emitter<SocketServerToClientEvents>;\n\nexport function useSocketEmitter() : Emitter<SocketServerToClientEvents> {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = new Emitter<SocketServerToClientEvents>(useClient());\n\n return instance;\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { DomainEventContext } from '@authup/core';\nimport { DomainEventName, buildDomainEventFullName } from '@authup/core';\nimport { hasClient, hasConfig } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\nimport { useSocketEmitter } from './singleton';\n\nexport function publishDomainSocketEvent(\n context: DomainEventContext,\n destinations: DomainEventDestinations,\n) {\n if (!hasClient() && !hasConfig()) {\n return;\n }\n\n context = transformDomainEventData(context);\n\n for (let i = 0; i < destinations.length; i++) {\n let emitter = useSocketEmitter();\n if (destinations[i].namespace) {\n emitter = emitter.of(destinations[i].namespace);\n }\n\n let roomName = buildDomainEventChannelName(destinations[i].channel);\n\n const fullEventName = buildDomainEventFullName(context.type, context.event);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n data: context,\n meta: {\n roomName,\n },\n });\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n roomName = buildDomainEventChannelName(destinations[i].channel, context.data.id);\n emitter\n .in(roomName)\n .emit(fullEventName, {\n data: context,\n meta: {\n roomName,\n roomId: context.data.id,\n },\n });\n }\n }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { DomainEventContext } from '@authup/core';\nimport { publishDomainRedisEvent } from './redis';\nimport { publishDomainSocketEvent } from './socket';\nimport type { DomainEventDestinations } from './type';\n\nexport async function publishDomainEvent(\n context: DomainEventContext,\n destinations: DomainEventDestinations,\n) {\n await publishDomainRedisEvent(context, destinations);\n publishDomainSocketEvent(context, destinations);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Robot } from '@authup/core';\nimport { hasConfig, useClient } from '@hapic/vault';\n\nexport async function saveRobotCredentialsToVault(entity: Pick<Robot, 'id' | 'secret' | 'name'>) {\n if (!hasConfig()) {\n return;\n }\n\n const client = useClient();\n\n await client.keyValue.save('robots', entity.name, {\n id: entity.id,\n secret: entity.secret,\n });\n}\n\nexport async function removeRobotCredentialsFromVault(entity: Pick<Robot, 'name'>) {\n if (!hasConfig()) {\n return;\n }\n\n const client = useClient();\n\n await client.keyValue.delete('robots', entity.name);\n}\n\nexport async function findRobotCredentialsInVault(\n entity: Pick<Robot, 'name'>,\n) : Promise<Pick<Robot, 'id' | 'secret'> | undefined> {\n if (!hasConfig()) {\n return undefined;\n }\n\n const client = useClient();\n\n const response = await client.keyValue.find('robots', entity.name);\n if (response && response.data) {\n return response.data as Robot;\n }\n\n return undefined;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Logger } from '../type';\n\nexport class VoidLogger implements Logger {\n error(message: any) : any;\n\n error(message: string, ...meta: any[]) : any;\n\n error(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n warn(message: any) : any;\n\n warn(message: string, ...meta: any[]) : any;\n\n warn(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n info(message: any) : any;\n\n info(message: string, ...meta: any[]) : any;\n\n info(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n http(message: any) : any;\n\n http(message: string, ...meta: any[]) : any;\n\n http(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n verbose(message: any) : any;\n\n verbose(message: string, ...meta: any[]) : any;\n\n verbose(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n debug(message: any) : any;\n\n debug(message: string, ...meta: any[]) : any;\n\n debug(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { VoidLogger } from './presets';\nimport type { Logger } from './type';\n\nlet instance: Logger | undefined;\n\nexport function useLogger() : Logger {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = new VoidLogger();\n\n return instance;\n}\n\nexport function setLogger(logger: Logger) {\n instance = logger;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport http from 'node:http';\nimport type { AgentOptions } from 'node:https';\nimport https from 'node:https';\n\nexport type ProxyClientOptions = {\n user?: string,\n password?: string,\n host: string,\n port: number\n};\n\nexport class ProxyClient {\n protected options: ProxyClientOptions;\n\n /**\n * e.g. { keepAlive: true }\n * @protected\n */\n protected agentOptions : AgentOptions;\n\n constructor(options: ProxyClientOptions, agentOptions?: AgentOptions) {\n this.options = options;\n this.agentOptions = agentOptions || {};\n }\n\n /**\n * Create a http agent for an url.\n *\n * @param input\n */\n async createAgent(input: string) {\n return new Promise((resolve, reject) => {\n const headers : Record<string, any> = { };\n\n if (\n this.options.user &&\n this.options.password\n ) {\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(`${this.options.user}:${this.options.password}`).toString('base64')}`;\n }\n\n const urlParsed = new URL(input);\n const request = http.request({\n host: this.options.host,\n port: this.options.port,\n method: 'CONNECT',\n path: `${urlParsed.hostname}:443`,\n headers,\n });\n\n request.on('connect', (res, socket) => {\n if (\n res.statusCode >= 200 &&\n res.statusCode < 300\n ) {\n resolve(new https.Agent({ socket, ...this.agentOptions }));\n } else {\n reject(new Error('Could not connect to proxy!'));\n }\n });\n\n request.on('error', (err) => {\n reject(err);\n });\n\n request.on('timeout', (err) => {\n reject(err);\n });\n\n request.end();\n });\n }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { parseProxyConnectionString } from '@authup/core';\nimport type { ClientRequestConfig } from '@hapic/vault';\nimport { getProxyForUrl } from 'proxy-from-env';\nimport { ProxyClient } from './module';\n\nexport async function buildHTTPClientConfigForProxy(\n url: string,\n) : Promise<ClientRequestConfig> {\n const connectionString = getProxyForUrl(url);\n if (connectionString) {\n const connectionDetails = parseProxyConnectionString(connectionString);\n const proxyClient = new ProxyClient({\n host: connectionDetails.host,\n port: connectionDetails.port || 3128,\n ...(connectionDetails.auth.username ? { user: connectionDetails.auth.username } : {}),\n ...(connectionDetails.auth.password ? { password: connectionDetails.auth.password } : {}),\n });\n\n const agent = await proxyClient.createAgent(url);\n\n return {\n httpAgent: agent,\n httpsAgent: agent,\n proxy: false,\n };\n }\n\n return {};\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { SmtpConfig } from '../type';\n\nlet instance : SmtpConfig | string | undefined;\n\nexport function hasSmtpConfig() {\n return !!instance;\n}\n\nexport function setSmtpConfig(value: SmtpConfig | string | undefined) {\n instance = value;\n}\n\nexport function useSmtpConfig() : SmtpConfig | string {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = {};\n\n return instance;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Transporter } from 'nodemailer';\nimport { createTransport } from 'nodemailer';\nimport type { SmtpConfig } from './type';\nimport { useLogger } from '../logger';\n\nexport function createSmtpClient(options?: SmtpConfig | string) : Transporter {\n let transport : Transporter;\n\n options = options || {};\n\n if (typeof options === 'string') {\n transport = createTransport(options);\n } else if (options.connectionString) {\n transport = createTransport(options.connectionString);\n } else {\n let auth: Record<string, any> | undefined;\n if (options.user && options.password) {\n auth = {\n type: 'login',\n user: options.user,\n pass: options.password,\n };\n }\n\n transport = createTransport({\n host: options.host,\n port: options.port,\n auth,\n secure: options.ssl,\n opportunisticTLS: options.starttls,\n tls: {\n rejectUnauthorized: false,\n },\n });\n }\n\n transport.on('error', (e) => {\n useLogger().error(e.message);\n });\n\n return transport;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Transporter } from 'nodemailer';\nimport { createTestAccount } from 'nodemailer';\nimport { createSmtpClient } from './module';\nimport { useSmtpConfig } from './config';\nimport type { SmtpConfig } from './type';\n\nlet instance : Transporter | undefined;\n\nexport async function useSMTPClient() : Promise<Transporter> {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n let options : SmtpConfig | string;\n if (process.env.NODE_ENV === 'test') {\n const testAccount = await createTestAccount();\n\n options = {\n host: 'smtp.ethereal.email',\n port: 587,\n ssl: false,\n user: testAccount.user,\n password: testAccount.pass,\n };\n } else {\n options = useSmtpConfig();\n }\n\n instance = createSmtpClient(options);\n\n return instance;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ConfigInput } from '@hapic/vault';\nimport {\n hasClient, hasConfig, setConfig, unsetClient,\n} from '@hapic/vault';\n\nexport function setVaultConfig(input: ConfigInput) {\n if (hasClient()) {\n unsetClient();\n }\n\n setConfig(input);\n}\n\nexport function hasVaultConfig() {\n return hasConfig();\n}\n"],"names":["hasProcessEnv","key","keys","Array","isArray","i","length","hasOwnProperty","process","env","readFromProcessEnv","alt","readBoolFromProcessEnv","value","readBoolOrStringFromProcessEnv","undefined","readIntFromProcessEnv","intValue","parseInt","Number","isNaN","obj","prop","Object","prototype","call","buildWorkingDirectoryPathsForConfigFile","cwd","writableDirectoryPath","path","isAbsolute","join","push","readConfigFile","context","arr","locations","locateMany","content","file","load","fileExport","getModuleExport","isObject","root","name","split","merge","compare","hashedValue","compareMethod","hash","str","saltOrRounds","hashMethod","KeyPairKind","PRIVATE","PUBLIC","isKeyPair","data","extendKeyPairOptions","options","directory","resolve","type","modulusLength","privateKeyEncoding","format","publicKeyEncoding","passphrase","cipher","buildKeyFileName","parts","privateName","privateExtension","startsWith","slice","publicName","publicExtension","decryptRSAPrivateKey","privateKey","createPrivateKey","export","Buffer","from","toString","saveKeyPair","keyPair","fs","promises","mkdir","recursive","Promise","all","publicKey","map","writeFile","createKeyPair","reject","callback","err","generateKeyPair","save","deleteKeyPair","privateKeyPath","publicKeyPath","filePath","stat","e","rm","loadKeyPair","privateKeyBuffer","readFile","publicKeyBuffer","publicKeyObject","createPublicKey","stringOrBuffer","keyPairCache","useKeyPair","handleJWTError","TokenError","expired","date","notActiveBefore","message","payloadInvalid","previous","decorateMessage","logMessage","decodeToken","token","decode","signToken","payload","expiresIn","KeyType","RSA","EC","algorithm","sign","OCT","secret","verifyToken","algorithms","verify","transformDomainEventData","input","Date","toISOString","buildDomainEventChannelName","id","publishDomainRedisEvent","destinations","hasClient","hasConfig","json","JSON","stringify","client","useClient","pipeline","namespace","keyPrefix","channel","publish","event","DomainEventName","CREATED","exec","instance","useSocketEmitter","Emitter","publishDomainSocketEvent","emitter","of","roomName","fullEventName","buildDomainEventFullName","in","emit","meta","roomId","publishDomainEvent","saveRobotCredentialsToVault","entity","keyValue","removeRobotCredentialsFromVault","delete","findRobotCredentialsInVault","response","find","VoidLogger","error","warn","info","http","verbose","debug","useLogger","setLogger","logger","ProxyClient","createAgent","headers","user","password","urlParsed","URL","request","host","port","method","hostname","on","res","socket","statusCode","https","Agent","agentOptions","Error","end","constructor","buildHTTPClientConfigForProxy","url","connectionString","getProxyForUrl","connectionDetails","parseProxyConnectionString","proxyClient","auth","username","agent","httpAgent","httpsAgent","proxy","hasSmtpConfig","setSmtpConfig","useSmtpConfig","createSmtpClient","transport","createTransport","pass","secure","ssl","opportunisticTLS","starttls","tls","rejectUnauthorized","useSMTPClient","NODE_ENV","testAccount","createTestAccount","setVaultConfig","unsetClient","setConfig","hasVaultConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/utils/env.ts","../src/utils/has-property.ts","../src/config/utils.ts","../src/config/read.ts","../src/crypto/hash/compare.ts","../src/crypto/hash/hash.ts","../src/crypto/key-pair/constants.ts","../src/crypto/key-pair/utils/check.ts","../src/crypto/key-pair/utils/options.ts","../src/crypto/key-pair/utils/file-name.ts","../src/crypto/key-pair/utils/private-key.ts","../src/crypto/key-pair/save.ts","../src/crypto/key-pair/create.ts","../src/crypto/key-pair/delete.ts","../src/crypto/key-pair/load.ts","../src/crypto/key-pair/module.ts","../src/crypto/json-web-token/utils.ts","../src/crypto/json-web-token/decode.ts","../src/crypto/json-web-token/sign.ts","../src/crypto/json-web-token/verify.ts","../src/domain-event/utils.ts","../src/domain-event/redis/publish.ts","../src/domain-event/socket/singleton.ts","../src/domain-event/socket/publish.ts","../src/domain-event/publish.ts","../src/logger/presets/void.ts","../src/logger/module.ts","../src/proxy/module.ts","../src/proxy/utils.ts","../src/smtp/config/singleton.ts","../src/smtp/module.ts","../src/smtp/singleton.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty } from '@authup/core';\nimport process from 'node:process';\n\nexport function hasProcessEnv(key: string | string[]) : boolean {\n const keys = Array.isArray(key) ? key : [key];\n for (let i = 0; i < keys.length; i++) {\n if (hasOwnProperty(process.env, keys[i])) {\n return true;\n }\n }\n return false;\n}\n\nexport function readFromProcessEnv(key: string | string[]) : string | undefined;\nexport function readFromProcessEnv<T>(key: string | string[], alt: T) : T | string;\nexport function readFromProcessEnv<T>(key: string | string[], alt?: T): any {\n const keys = Array.isArray(key) ? key : [key];\n for (let i = 0; i < keys.length; i++) {\n if (hasOwnProperty(process.env, keys[i])) {\n return process.env[keys[i]];\n }\n }\n\n return alt;\n}\n\nexport function readBoolFromProcessEnv(key: string | string[], alt?: boolean): boolean | undefined {\n const keys = Array.isArray(key) ? key : [key];\n for (let i = 0; i < keys.length; i++) {\n const value = readFromProcessEnv(keys[i], alt);\n\n switch (value) {\n case true:\n case 'true':\n case 't':\n case '1':\n return true;\n case false:\n case 'false':\n case 'f':\n case '0':\n return false;\n }\n }\n\n return alt;\n}\n\nexport function readBoolOrStringFromProcessEnv(\n key: string,\n alt?: boolean | string,\n) : boolean | string | undefined {\n if (hasProcessEnv(key)) {\n const value = readBoolFromProcessEnv(key, undefined);\n if (typeof value === 'undefined') {\n return readFromProcessEnv(key, alt);\n }\n\n return value;\n }\n\n return alt;\n}\n\nexport function readIntFromProcessEnv(\n key: string | string[],\n alt?: number,\n): number | undefined {\n const keys = Array.isArray(key) ? key : [key];\n\n for (let i = 0; i < keys.length; i++) {\n const value = readFromProcessEnv(keys[i], alt);\n const intValue = parseInt(`${value}`, 10);\n\n if (!Number.isNaN(intValue)) {\n return intValue;\n }\n }\n\n return alt;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function hasOwnProperty<X extends Record<string, any>, Y extends PropertyKey>(\n obj: X,\n prop: Y,\n): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport process from 'node:process';\nimport { hasProcessEnv, readFromProcessEnv } from '../utils';\n\nexport function buildWorkingDirectoryPathsForConfigFile() {\n const cwd : string[] = [\n process.cwd(),\n ];\n\n if (hasProcessEnv('WRITABLE_DIRECTORY_PATH')) {\n let writableDirectoryPath = readFromProcessEnv('WRITABLE_DIRECTORY_PATH');\n if (!path.isAbsolute(writableDirectoryPath)) {\n writableDirectoryPath = path.join(process.cwd(), writableDirectoryPath);\n }\n\n cwd.push(writableDirectoryPath);\n } else {\n cwd.push(path.join(process.cwd(), 'writable'));\n }\n\n return cwd;\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/core';\nimport { getModuleExport, load, locateMany } from 'locter';\nimport path from 'node:path';\nimport process from 'node:process';\nimport { merge } from 'smob';\nimport type { ConfigFileReadContext } from './type';\nimport { buildWorkingDirectoryPathsForConfigFile } from './utils';\n\nexport async function readConfigFile(context?: ConfigFileReadContext) : Promise<Record<string, any>> {\n context = context || {};\n\n const cwd : string[] = [];\n if (context.cwd) {\n const arr = Array.isArray(context.cwd) ?\n context.cwd :\n [context.cwd];\n\n for (let i = 0; i < arr.length; i++) {\n if (path.isAbsolute(arr[i])) {\n cwd.push(arr[i]);\n } else {\n cwd.push(path.join(process.cwd(), arr[i]));\n }\n }\n }\n\n if (cwd.length === 0) {\n cwd.push(...buildWorkingDirectoryPathsForConfigFile());\n }\n\n const locations = await locateMany([\n 'authup.*.{conf,js,mjs,cjs,ts,mts,mts}',\n 'authup.{conf,js,mjs,cjs,ts,mts,mts}',\n ], {\n path: cwd,\n });\n\n const content : Record<string, any> = {};\n\n for (let i = 0; i < locations.length; i++) {\n const file = await load(locations[i]);\n const fileExport = getModuleExport(file);\n\n if (!isObject(fileExport.value)) {\n continue;\n }\n\n const [root, name] = locations[i].name.split('.');\n if (root && name) {\n if (context.name === name) {\n merge(content, fileExport.value);\n } else if (!context.name) {\n content[name] = content[name] || {};\n merge(content[name], fileExport.value);\n }\n }\n\n if (root && !name) {\n if (context.name) {\n if (isObject(fileExport.value[context.name])) {\n merge(content, fileExport.value[context.name]);\n }\n } else {\n merge(content, fileExport.value);\n }\n }\n }\n\n return content;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { compare as compareMethod } from 'bcrypt';\n\nexport async function compare(value: string, hashedValue: string) : Promise<boolean> {\n return compareMethod(value, hashedValue);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hash as hashMethod } from 'bcrypt';\n\nexport async function hash(str: string, saltOrRounds: number | string = 10) : Promise<string> {\n return hashMethod(str, saltOrRounds);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum KeyPairKind {\n PRIVATE = 'private',\n PUBLIC = 'public',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/core';\nimport type { KeyPair } from '../type';\n\nexport function isKeyPair(data: unknown) : data is KeyPair {\n return isObject(data) &&\n typeof (data as KeyPair).privateKey !== 'undefined' &&\n typeof (data as KeyPair).publicKey !== 'undefined';\n}\n\nexport function isKeyPairWithPublicKey(data: unknown) : data is Omit<KeyPair, 'privateKey'> {\n return isObject(data) &&\n typeof (data as KeyPair).publicKey !== 'undefined';\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport type { KeyPairOptions } from '../type';\n\nexport function extendKeyPairOptions(\n options?: Partial<KeyPairOptions>,\n) : KeyPairOptions {\n options = options ?? {};\n\n options.directory = options.directory || process.cwd();\n options.directory = path.isAbsolute(options.directory) ?\n options.directory :\n path.resolve(process.cwd(), options.directory);\n\n options.type ??= 'rsa';\n\n if (\n options.type === 'rsa' ||\n options.type === 'rsa-pss' ||\n options.type === 'dsa'\n ) {\n options.modulusLength = 2048;\n }\n\n if (!options.privateKeyEncoding) {\n options.privateKeyEncoding = {\n type: 'pkcs8',\n format: 'pem',\n };\n }\n\n if (!options.publicKeyEncoding) {\n options.publicKeyEncoding = {\n type: 'spki',\n format: 'pem',\n };\n }\n\n if (\n options.privateKeyEncoding.passphrase &&\n !options.privateKeyEncoding.cipher\n ) {\n options.privateKeyEncoding.cipher = 'aes-256-cbc';\n }\n\n return options as KeyPairOptions;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { KeyPairKind } from '../constants';\nimport type { KeyPairOptions } from '../type';\nimport { extendKeyPairOptions } from './options';\n\nexport function buildKeyFileName(\n type: `${KeyPairKind}`,\n context?: Partial<KeyPairOptions>,\n) {\n const options = extendKeyPairOptions(context);\n\n const parts : string[] = [];\n\n switch (type) {\n case KeyPairKind.PRIVATE: {\n if (options.privateName) {\n parts.push(options.privateName);\n } else {\n parts.push(type);\n }\n\n if (options.privateExtension) {\n if (options.privateExtension.startsWith('.')) {\n options.privateExtension = options.privateExtension.slice(1);\n }\n\n parts.push(options.privateExtension);\n } else {\n parts.push('pem');\n }\n break;\n }\n case KeyPairKind.PUBLIC: {\n if (options.publicName) {\n parts.push(options.publicName);\n } else {\n parts.push(type);\n }\n\n if (options.publicExtension) {\n if (options.publicExtension.startsWith('.')) {\n options.publicExtension = options.publicExtension.slice(1);\n }\n\n parts.push(options.publicExtension);\n } else {\n parts.push('pem');\n }\n break;\n }\n }\n\n return parts.join('.');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createPrivateKey } from 'node:crypto';\nimport type { KeyPairOptions } from '../type';\n\nexport function decryptRSAPrivateKey(\n context: KeyPairOptions,\n key: string | Buffer,\n) : string {\n const privateKey = createPrivateKey({\n type: context.privateKeyEncoding.type,\n format: context.privateKeyEncoding.format,\n key,\n passphrase: context.privateKeyEncoding.passphrase || context.passphrase,\n });\n\n let content = privateKey.export({\n type: context.privateKeyEncoding.type,\n format: context.privateKeyEncoding.format,\n });\n\n if (typeof content !== 'string') {\n content = Buffer.from(content).toString('utf-8');\n }\n\n return content;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { buildKeyFileName, extendKeyPairOptions } from './utils';\nimport { KeyPairKind } from './constants';\n\nexport async function saveKeyPair(keyPair: KeyPair, context?: KeyPairOptions) : Promise<KeyPair> {\n context = extendKeyPairOptions(context);\n\n await fs.promises.mkdir(context.directory, { recursive: true });\n\n await Promise.all(\n [\n {\n path: path.resolve(context.directory, buildKeyFileName(KeyPairKind.PRIVATE, context)),\n content: keyPair.privateKey,\n },\n {\n path: path.resolve(context.directory, buildKeyFileName(KeyPairKind.PUBLIC, context)),\n content: keyPair.publicKey,\n },\n ]\n .map((file) => fs.promises.writeFile(file.path, file.content)),\n );\n\n return keyPair;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { generateKeyPair } from 'node:crypto';\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { decryptRSAPrivateKey, extendKeyPairOptions } from './utils';\nimport { saveKeyPair } from './save';\n\nexport async function createKeyPair(context?: Partial<KeyPairOptions>) : Promise<KeyPair> {\n const options = extendKeyPairOptions(context);\n\n const keyPair : KeyPair = await new Promise((resolve: (value: KeyPair) => void, reject) => {\n const callback = (err: (Error | null), publicKey: string, privateKey: string) => {\n if (err) reject(err);\n\n resolve({\n privateKey,\n publicKey,\n });\n };\n switch (options.type) {\n case 'dsa':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n case 'ec':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n case 'rsa':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n case 'rsa-pss':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n }\n });\n\n if (options.save) {\n await saveKeyPair(keyPair, options);\n }\n\n if (\n options.passphrase ||\n options.privateKeyEncoding.passphrase\n ) {\n keyPair.privateKey = decryptRSAPrivateKey(\n options,\n keyPair.privateKey,\n );\n }\n\n return keyPair;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { KeyPairOptions } from './type';\nimport { buildKeyFileName, extendKeyPairOptions } from './utils';\nimport { KeyPairKind } from './constants';\n\nexport async function deleteKeyPair(context?: Partial<KeyPairOptions>) : Promise<void> {\n const options = extendKeyPairOptions(context);\n\n const privateKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PRIVATE, options));\n const publicKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PUBLIC, options));\n\n try {\n await Promise.all([privateKeyPath, publicKeyPath]\n .map((filePath) => fs.promises.stat(filePath)));\n } catch (e) {\n return;\n }\n\n await Promise.all([\n privateKeyPath,\n publicKeyPath,\n ].map((filePath) => fs.promises.rm(filePath)));\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createPublicKey } from 'node:crypto';\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { buildKeyFileName, decryptRSAPrivateKey, extendKeyPairOptions } from './utils';\nimport { KeyPairKind } from './constants';\nimport { saveKeyPair } from './save';\n\nexport async function loadKeyPair(context?: Partial<KeyPairOptions>) : Promise<KeyPair | undefined> {\n const options = extendKeyPairOptions(context);\n\n const privateKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PRIVATE, options));\n\n try {\n await fs.promises.stat(privateKeyPath);\n } catch (e) {\n return undefined;\n }\n\n const privateKeyBuffer = await fs.promises.readFile(privateKeyPath);\n let privateKey = privateKeyBuffer.toString();\n if (\n options.passphrase ||\n options.privateKeyEncoding.passphrase\n ) {\n privateKey = decryptRSAPrivateKey(\n options,\n privateKey,\n );\n }\n\n const publicKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PUBLIC, options));\n\n let publicKey : string;\n\n try {\n await fs.promises.stat(publicKeyPath);\n const publicKeyBuffer = await fs.promises.readFile(publicKeyPath);\n publicKey = publicKeyBuffer.toString();\n } catch (e) {\n const publicKeyObject = createPublicKey({\n key: privateKey,\n format: options.privateKeyEncoding.format,\n type: options.publicKeyEncoding.type,\n });\n\n const stringOrBuffer = publicKeyObject.export({\n format: options.publicKeyEncoding.format,\n type: options.publicKeyEncoding.type,\n });\n if (typeof stringOrBuffer !== 'string') {\n publicKey = stringOrBuffer.toString();\n } else {\n publicKey = stringOrBuffer;\n }\n\n if (options.save) {\n await saveKeyPair({\n privateKey,\n publicKey,\n }, options);\n }\n }\n\n return {\n privateKey,\n publicKey,\n };\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { extendKeyPairOptions } from './utils';\nimport { loadKeyPair } from './load';\nimport { createKeyPair } from './create';\n\nconst keyPairCache : Record<string, KeyPair> = {};\n\nexport async function useKeyPair(value?: Partial<KeyPairOptions> | string) : Promise<KeyPair> {\n let options : KeyPairOptions;\n\n if (typeof value === 'string') {\n options = extendKeyPairOptions({\n privateName: value,\n });\n } else {\n options = extendKeyPairOptions(value || {});\n }\n\n if (Object.prototype.hasOwnProperty.call(keyPairCache, options.privateName)) {\n return keyPairCache[options.privateName];\n }\n\n let keyPair = await loadKeyPair(options);\n if (typeof keyPair === 'undefined') {\n keyPair = await createKeyPair(options);\n }\n\n keyPairCache[options.privateName] = keyPair;\n\n return keyPair;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { TokenError, hasOwnProperty } from '@authup/core';\n\nexport function handleJWTError(e: unknown) {\n if (\n e &&\n typeof e === 'object' &&\n hasOwnProperty(e, 'name')\n ) {\n switch (e.name) {\n case 'TokenExpiredError':\n throw TokenError.expired();\n case 'NotBeforeError': {\n if (\n hasOwnProperty(e, 'date') &&\n typeof e.date === 'string'\n ) {\n throw TokenError.notActiveBefore(e.date);\n }\n break;\n }\n case 'JsonWebTokenError': {\n if (\n hasOwnProperty(e, 'message') &&\n typeof e.message === 'string'\n ) {\n throw TokenError.payloadInvalid(e.message);\n }\n }\n }\n }\n\n throw new TokenError({\n previous: e as Error,\n decorateMessage: true,\n logMessage: true,\n message: 'The JWT error could not be determined.',\n });\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n Jwt,\n JwtPayload,\n} from 'jsonwebtoken';\nimport {\n decode,\n} from 'jsonwebtoken';\nimport { TokenError } from '@authup/core';\nimport type { TokenDecodeOptions } from './type';\nimport { handleJWTError } from './utils';\n\n/**\n * Decode a JWT token with no verification.\n *\n * @param token\n * @param options\n *\n * @throws TokenError\n */\nexport function decodeToken(token: string, options: TokenDecodeOptions & { complete: true }): null | Jwt;\nexport function decodeToken(token: string, options?: TokenDecodeOptions): JwtPayload | string | null;\nexport function decodeToken(\n token: string,\n options?: TokenDecodeOptions,\n): JwtPayload | string | null {\n options ??= {};\n\n try {\n return decode(token, {\n ...options,\n });\n } catch (e) {\n handleJWTError(e);\n\n throw e;\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { sign } from 'jsonwebtoken';\nimport { KeyType, TokenError } from '@authup/core';\nimport { isKeyPair, useKeyPair } from '../key-pair';\nimport type { TokenSignOptions } from './type';\n\nexport async function signToken(\n payload: string | object | Buffer | Record<string, any>,\n context: TokenSignOptions,\n): Promise<string> {\n context.expiresIn = context.expiresIn || 3600;\n\n switch (context.type) {\n case KeyType.RSA:\n case KeyType.EC: {\n const { type, keyPair, ...options } = context;\n const { privateKey } = isKeyPair(keyPair) ?\n keyPair :\n await useKeyPair(keyPair);\n\n if (type === KeyType.RSA) {\n options.algorithm = options.algorithm || 'RS256';\n } else {\n options.algorithm = options.algorithm || 'ES256';\n }\n\n return sign(payload, privateKey, options);\n }\n case KeyType.OCT: {\n const { type, secret, ...options } = context;\n options.algorithm = options.algorithm || 'HS256';\n\n return sign(payload, secret, options);\n }\n }\n\n throw new TokenError();\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Jwt, JwtPayload } from 'jsonwebtoken';\nimport { verify } from 'jsonwebtoken';\nimport { KeyType, TokenError } from '@authup/core';\nimport { isKeyPair, isKeyPairWithPublicKey, useKeyPair } from '../key-pair';\nimport type { TokenVerifyOptions } from './type';\nimport { handleJWTError } from './utils';\n\n/**\n * Verify JWT.\n *\n * @param token\n * @param context\n *\n * @throws TokenError\n */\nexport async function verifyToken(token: string, context: TokenVerifyOptions & { complete: true }): Promise<string | Jwt>;\nexport async function verifyToken(token: string, context: TokenVerifyOptions): Promise<JwtPayload | string>;\nexport async function verifyToken(\n token: string,\n context: TokenVerifyOptions,\n) : Promise<JwtPayload | Jwt | string> {\n try {\n switch (context.type) {\n case KeyType.RSA:\n case KeyType.EC: {\n const { type, keyPair, ...options } = context;\n const { publicKey } = isKeyPairWithPublicKey(keyPair) ?\n keyPair :\n await useKeyPair(keyPair);\n\n if (type === KeyType.RSA) {\n options.algorithms = options.algorithms || ['RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512'];\n } else {\n options.algorithms = options.algorithms || ['ES256', 'ES384', 'ES512'];\n }\n\n return verify(token, publicKey, {\n ...options,\n });\n }\n case KeyType.OCT: {\n const { type, secret, ...options } = context;\n\n options.algorithms = options.algorithms || ['HS256', 'HS384', 'HS512'];\n\n return verify(token, secret, {\n ...options,\n });\n }\n }\n } catch (e) {\n handleJWTError(e);\n\n throw e;\n }\n\n throw new TokenError({ message: 'Invalid type.' });\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/core';\nimport type { DomainEventChannelName } from './type';\n\nexport function transformDomainEventData<T>(input: T) : T {\n if (isObject(input)) {\n const keys = Object.keys(input);\n for (let i = 0; i < keys.length; i++) {\n const value = input[keys[i]];\n if (value instanceof Date) {\n input[keys[i]] = value.toISOString();\n }\n }\n }\n\n return input;\n}\n\nexport function buildDomainEventChannelName(\n input: DomainEventChannelName,\n id?: string | number,\n) : string {\n if (typeof input === 'string') {\n return input;\n }\n\n return input(id);\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { DomainEventName } from '@authup/core';\nimport type { DomainEventContext } from '@authup/core';\nimport { hasClient, hasConfig, useClient } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport async function publishDomainRedisEvent(\n context: DomainEventContext,\n destinations: DomainEventDestinations,\n) : Promise<any> {\n if (!hasClient() && !hasConfig()) {\n return Promise.resolve();\n }\n\n context = transformDomainEventData(context);\n\n const json = JSON.stringify(context);\n\n const client = useClient();\n const pipeline = client.pipeline();\n for (let i = 0; i < destinations.length; i++) {\n const { namespace } = destinations[i];\n const keyPrefix = (namespace ? `${namespace}:` : '');\n\n let key = keyPrefix + buildDomainEventChannelName(destinations[i].channel);\n pipeline.publish(key, json);\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n key = keyPrefix + buildDomainEventChannelName(destinations[i].channel, context.data.id);\n pipeline.publish(key, json);\n }\n }\n\n return pipeline.exec();\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { Emitter } from '@socket.io/redis-emitter';\nimport { useClient } from 'redis-extension';\nimport type { SocketServerToClientEvents } from './type';\n\nlet instance : undefined | Emitter<SocketServerToClientEvents>;\n\nexport function useSocketEmitter() : Emitter<SocketServerToClientEvents> {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = new Emitter<SocketServerToClientEvents>(useClient());\n\n return instance;\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { DomainEventContext } from '@authup/core';\nimport { DomainEventName, buildDomainEventFullName } from '@authup/core';\nimport { hasClient, hasConfig } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\nimport { useSocketEmitter } from './singleton';\n\nexport function publishDomainSocketEvent(\n context: DomainEventContext,\n destinations: DomainEventDestinations,\n) {\n if (!hasClient() && !hasConfig()) {\n return;\n }\n\n context = transformDomainEventData(context);\n\n for (let i = 0; i < destinations.length; i++) {\n let emitter = useSocketEmitter();\n if (destinations[i].namespace) {\n emitter = emitter.of(destinations[i].namespace);\n }\n\n let roomName = buildDomainEventChannelName(destinations[i].channel);\n\n const fullEventName = buildDomainEventFullName(context.type, context.event);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n data: context,\n meta: {\n roomName,\n },\n });\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n roomName = buildDomainEventChannelName(destinations[i].channel, context.data.id);\n emitter\n .in(roomName)\n .emit(fullEventName, {\n data: context,\n meta: {\n roomName,\n roomId: context.data.id,\n },\n });\n }\n }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { DomainEventContext } from '@authup/core';\nimport { publishDomainRedisEvent } from './redis';\nimport { publishDomainSocketEvent } from './socket';\nimport type { DomainEventDestinations } from './type';\n\nexport async function publishDomainEvent(\n context: DomainEventContext,\n destinations: DomainEventDestinations,\n) {\n await publishDomainRedisEvent(context, destinations);\n publishDomainSocketEvent(context, destinations);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Logger } from '../type';\n\nexport class VoidLogger implements Logger {\n error(message: any) : any;\n\n error(message: string, ...meta: any[]) : any;\n\n error(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n warn(message: any) : any;\n\n warn(message: string, ...meta: any[]) : any;\n\n warn(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n info(message: any) : any;\n\n info(message: string, ...meta: any[]) : any;\n\n info(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n http(message: any) : any;\n\n http(message: string, ...meta: any[]) : any;\n\n http(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n verbose(message: any) : any;\n\n verbose(message: string, ...meta: any[]) : any;\n\n verbose(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n debug(message: any) : any;\n\n debug(message: string, ...meta: any[]) : any;\n\n debug(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { VoidLogger } from './presets';\nimport type { Logger } from './type';\n\nlet instance: Logger | undefined;\n\nexport function useLogger() : Logger {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = new VoidLogger();\n\n return instance;\n}\n\nexport function setLogger(logger: Logger) {\n instance = logger;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport http from 'node:http';\nimport type { AgentOptions } from 'node:https';\nimport https from 'node:https';\n\nexport type ProxyClientOptions = {\n user?: string,\n password?: string,\n host: string,\n port: number\n};\n\nexport class ProxyClient {\n protected options: ProxyClientOptions;\n\n /**\n * e.g. { keepAlive: true }\n * @protected\n */\n protected agentOptions : AgentOptions;\n\n constructor(options: ProxyClientOptions, agentOptions?: AgentOptions) {\n this.options = options;\n this.agentOptions = agentOptions || {};\n }\n\n /**\n * Create a http agent for an url.\n *\n * @param input\n */\n async createAgent(input: string) {\n return new Promise((resolve, reject) => {\n const headers : Record<string, any> = { };\n\n if (\n this.options.user &&\n this.options.password\n ) {\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(`${this.options.user}:${this.options.password}`).toString('base64')}`;\n }\n\n const urlParsed = new URL(input);\n const request = http.request({\n host: this.options.host,\n port: this.options.port,\n method: 'CONNECT',\n path: `${urlParsed.hostname}:443`,\n headers,\n });\n\n request.on('connect', (res, socket) => {\n if (\n res.statusCode >= 200 &&\n res.statusCode < 300\n ) {\n resolve(new https.Agent({ socket, ...this.agentOptions }));\n } else {\n reject(new Error('Could not connect to proxy!'));\n }\n });\n\n request.on('error', (err) => {\n reject(err);\n });\n\n request.on('timeout', (err) => {\n reject(err);\n });\n\n request.end();\n });\n }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { parseProxyConnectionString } from '@authup/core';\nimport type { ClientRequestConfig } from '@hapic/vault';\nimport { getProxyForUrl } from 'proxy-from-env';\nimport { ProxyClient } from './module';\n\nexport async function buildHTTPClientConfigForProxy(\n url: string,\n) : Promise<ClientRequestConfig> {\n const connectionString = getProxyForUrl(url);\n if (connectionString) {\n const connectionDetails = parseProxyConnectionString(connectionString);\n const proxyClient = new ProxyClient({\n host: connectionDetails.host,\n port: connectionDetails.port || 3128,\n ...(connectionDetails.auth.username ? { user: connectionDetails.auth.username } : {}),\n ...(connectionDetails.auth.password ? { password: connectionDetails.auth.password } : {}),\n });\n\n const agent = await proxyClient.createAgent(url);\n\n return {\n httpAgent: agent,\n httpsAgent: agent,\n proxy: false,\n };\n }\n\n return {};\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { SmtpConfig } from '../type';\n\nlet instance : SmtpConfig | string | undefined;\n\nexport function hasSmtpConfig() {\n return !!instance;\n}\n\nexport function setSmtpConfig(value: SmtpConfig | string | undefined) {\n instance = value;\n}\n\nexport function useSmtpConfig() : SmtpConfig | string {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = {};\n\n return instance;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Transporter } from 'nodemailer';\nimport { createTransport } from 'nodemailer';\nimport type { SmtpConfig } from './type';\nimport { useLogger } from '../logger';\n\nexport function createSmtpClient(options?: SmtpConfig | string) : Transporter {\n let transport : Transporter;\n\n options = options || {};\n\n if (typeof options === 'string') {\n transport = createTransport(options);\n } else if (options.connectionString) {\n transport = createTransport(options.connectionString);\n } else {\n let auth: Record<string, any> | undefined;\n if (options.user && options.password) {\n auth = {\n type: 'login',\n user: options.user,\n pass: options.password,\n };\n }\n\n transport = createTransport({\n host: options.host,\n port: options.port,\n auth,\n secure: options.ssl,\n opportunisticTLS: options.starttls,\n tls: {\n rejectUnauthorized: false,\n },\n });\n }\n\n transport.on('error', (e) => {\n useLogger().error(e.message);\n });\n\n return transport;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Transporter } from 'nodemailer';\nimport { createTestAccount } from 'nodemailer';\nimport { createSmtpClient } from './module';\nimport { useSmtpConfig } from './config';\nimport type { SmtpConfig } from './type';\n\nlet instance : Transporter | undefined;\n\nexport async function useSMTPClient() : Promise<Transporter> {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n let options : SmtpConfig | string;\n if (process.env.NODE_ENV === 'test') {\n const testAccount = await createTestAccount();\n\n options = {\n host: 'smtp.ethereal.email',\n port: 587,\n ssl: false,\n user: testAccount.user,\n password: testAccount.pass,\n };\n } else {\n options = useSmtpConfig();\n }\n\n instance = createSmtpClient(options);\n\n return instance;\n}\n"],"names":["hasProcessEnv","key","keys","Array","isArray","i","length","hasOwnProperty","process","env","readFromProcessEnv","alt","readBoolFromProcessEnv","value","readBoolOrStringFromProcessEnv","undefined","readIntFromProcessEnv","intValue","parseInt","Number","isNaN","obj","prop","Object","prototype","call","buildWorkingDirectoryPathsForConfigFile","cwd","writableDirectoryPath","path","isAbsolute","join","push","readConfigFile","context","arr","locations","locateMany","content","file","load","fileExport","getModuleExport","isObject","root","name","split","merge","compare","hashedValue","compareMethod","hash","str","saltOrRounds","hashMethod","KeyPairKind","PRIVATE","PUBLIC","isKeyPair","data","privateKey","publicKey","isKeyPairWithPublicKey","extendKeyPairOptions","options","directory","resolve","type","modulusLength","privateKeyEncoding","format","publicKeyEncoding","passphrase","cipher","buildKeyFileName","parts","privateName","privateExtension","startsWith","slice","publicName","publicExtension","decryptRSAPrivateKey","createPrivateKey","export","Buffer","from","toString","saveKeyPair","keyPair","fs","promises","mkdir","recursive","Promise","all","map","writeFile","createKeyPair","reject","callback","err","generateKeyPair","save","deleteKeyPair","privateKeyPath","publicKeyPath","filePath","stat","e","rm","loadKeyPair","privateKeyBuffer","readFile","publicKeyBuffer","publicKeyObject","createPublicKey","stringOrBuffer","keyPairCache","useKeyPair","handleJWTError","TokenError","expired","date","notActiveBefore","message","payloadInvalid","previous","decorateMessage","logMessage","decodeToken","token","decode","signToken","payload","expiresIn","KeyType","RSA","EC","algorithm","sign","OCT","secret","verifyToken","algorithms","verify","transformDomainEventData","input","Date","toISOString","buildDomainEventChannelName","id","publishDomainRedisEvent","destinations","hasClient","hasConfig","json","JSON","stringify","client","useClient","pipeline","namespace","keyPrefix","channel","publish","event","DomainEventName","CREATED","exec","instance","useSocketEmitter","Emitter","publishDomainSocketEvent","emitter","of","roomName","fullEventName","buildDomainEventFullName","in","emit","meta","roomId","publishDomainEvent","VoidLogger","error","warn","info","http","verbose","debug","useLogger","setLogger","logger","ProxyClient","createAgent","headers","user","password","urlParsed","URL","request","host","port","method","hostname","on","res","socket","statusCode","https","Agent","agentOptions","Error","end","constructor","buildHTTPClientConfigForProxy","url","connectionString","getProxyForUrl","connectionDetails","parseProxyConnectionString","proxyClient","auth","username","agent","httpAgent","httpsAgent","proxy","hasSmtpConfig","setSmtpConfig","useSmtpConfig","createSmtpClient","transport","createTransport","pass","secure","ssl","opportunisticTLS","starttls","tls","rejectUnauthorized","useSMTPClient","NODE_ENV","testAccount","createTestAccount"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
export * from './config';
|
|
2
2
|
export * from './crypto';
|
|
3
3
|
export * from './domain-event';
|
|
4
|
-
export * from './domains';
|
|
5
4
|
export * from './logger';
|
|
6
5
|
export * from './proxy';
|
|
7
6
|
export * from './smtp';
|
|
8
|
-
export * from './vault';
|
|
9
7
|
export * from './utils';
|
|
10
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
|
package/dist/index.mjs
CHANGED
|
@@ -9,7 +9,6 @@ import fs from 'node:fs';
|
|
|
9
9
|
import { decode, sign, verify } from 'jsonwebtoken';
|
|
10
10
|
import { hasClient, hasConfig, useClient } from 'redis-extension';
|
|
11
11
|
import { Emitter } from '@socket.io/redis-emitter';
|
|
12
|
-
import { hasConfig as hasConfig$1, useClient as useClient$1, hasClient as hasClient$1, unsetClient, setConfig } from '@hapic/vault';
|
|
13
12
|
import http from 'node:http';
|
|
14
13
|
import https from 'node:https';
|
|
15
14
|
import { getProxyForUrl } from 'proxy-from-env';
|
|
@@ -180,7 +179,10 @@ async function hash(str, saltOrRounds = 10) {
|
|
|
180
179
|
})(KeyPairKind || (KeyPairKind = {}));
|
|
181
180
|
|
|
182
181
|
function isKeyPair(data) {
|
|
183
|
-
return
|
|
182
|
+
return isObject(data) && typeof data.privateKey !== 'undefined' && typeof data.publicKey !== 'undefined';
|
|
183
|
+
}
|
|
184
|
+
function isKeyPairWithPublicKey(data) {
|
|
185
|
+
return isObject(data) && typeof data.publicKey !== 'undefined';
|
|
184
186
|
}
|
|
185
187
|
|
|
186
188
|
function extendKeyPairOptions(options) {
|
|
@@ -479,7 +481,7 @@ async function verifyToken(token, context) {
|
|
|
479
481
|
case KeyType.EC:
|
|
480
482
|
{
|
|
481
483
|
const { type , keyPair , ...options } = context;
|
|
482
|
-
const { publicKey } =
|
|
484
|
+
const { publicKey } = isKeyPairWithPublicKey(keyPair) ? keyPair : await useKeyPair(keyPair);
|
|
483
485
|
if (type === KeyType.RSA) {
|
|
484
486
|
options.algorithms = options.algorithms || [
|
|
485
487
|
'RS256',
|
|
@@ -607,35 +609,6 @@ async function publishDomainEvent(context, destinations) {
|
|
|
607
609
|
publishDomainSocketEvent(context, destinations);
|
|
608
610
|
}
|
|
609
611
|
|
|
610
|
-
async function saveRobotCredentialsToVault(entity) {
|
|
611
|
-
if (!hasConfig$1()) {
|
|
612
|
-
return;
|
|
613
|
-
}
|
|
614
|
-
const client = useClient$1();
|
|
615
|
-
await client.keyValue.save('robots', entity.name, {
|
|
616
|
-
id: entity.id,
|
|
617
|
-
secret: entity.secret
|
|
618
|
-
});
|
|
619
|
-
}
|
|
620
|
-
async function removeRobotCredentialsFromVault(entity) {
|
|
621
|
-
if (!hasConfig$1()) {
|
|
622
|
-
return;
|
|
623
|
-
}
|
|
624
|
-
const client = useClient$1();
|
|
625
|
-
await client.keyValue.delete('robots', entity.name);
|
|
626
|
-
}
|
|
627
|
-
async function findRobotCredentialsInVault(entity) {
|
|
628
|
-
if (!hasConfig$1()) {
|
|
629
|
-
return undefined;
|
|
630
|
-
}
|
|
631
|
-
const client = useClient$1();
|
|
632
|
-
const response = await client.keyValue.find('robots', entity.name);
|
|
633
|
-
if (response && response.data) {
|
|
634
|
-
return response.data;
|
|
635
|
-
}
|
|
636
|
-
return undefined;
|
|
637
|
-
}
|
|
638
|
-
|
|
639
612
|
/*
|
|
640
613
|
* Copyright (c) 2022.
|
|
641
614
|
* Author Peter Placzek (tada5hi)
|
|
@@ -817,15 +790,5 @@ async function useSMTPClient() {
|
|
|
817
790
|
return instance;
|
|
818
791
|
}
|
|
819
792
|
|
|
820
|
-
|
|
821
|
-
if (hasClient$1()) {
|
|
822
|
-
unsetClient();
|
|
823
|
-
}
|
|
824
|
-
setConfig(input);
|
|
825
|
-
}
|
|
826
|
-
function hasVaultConfig() {
|
|
827
|
-
return hasConfig$1();
|
|
828
|
-
}
|
|
829
|
-
|
|
830
|
-
export { KeyPairKind, ProxyClient, VoidLogger, buildHTTPClientConfigForProxy, buildKeyFileName, buildWorkingDirectoryPathsForConfigFile, compare, createKeyPair, createSmtpClient, decodeToken, decryptRSAPrivateKey, deleteKeyPair, extendKeyPairOptions, findRobotCredentialsInVault, hasOwnProperty, hasProcessEnv, hasSmtpConfig, hasVaultConfig, hash, isKeyPair, loadKeyPair, publishDomainEvent, publishDomainRedisEvent, publishDomainSocketEvent, readBoolFromProcessEnv, readBoolOrStringFromProcessEnv, readConfigFile, readFromProcessEnv, readIntFromProcessEnv, removeRobotCredentialsFromVault, saveKeyPair, saveRobotCredentialsToVault, setLogger, setSmtpConfig, setVaultConfig, signToken, useKeyPair, useLogger, useSMTPClient, useSmtpConfig, useSocketEmitter, verifyToken };
|
|
793
|
+
export { KeyPairKind, ProxyClient, VoidLogger, buildHTTPClientConfigForProxy, buildKeyFileName, buildWorkingDirectoryPathsForConfigFile, compare, createKeyPair, createSmtpClient, decodeToken, decryptRSAPrivateKey, deleteKeyPair, extendKeyPairOptions, hasOwnProperty, hasProcessEnv, hasSmtpConfig, hash, isKeyPair, isKeyPairWithPublicKey, loadKeyPair, publishDomainEvent, publishDomainRedisEvent, publishDomainSocketEvent, readBoolFromProcessEnv, readBoolOrStringFromProcessEnv, readConfigFile, readFromProcessEnv, readIntFromProcessEnv, saveKeyPair, setLogger, setSmtpConfig, signToken, useKeyPair, useLogger, useSMTPClient, useSmtpConfig, useSocketEmitter, verifyToken };
|
|
831
794
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/utils/env.ts","../src/utils/has-property.ts","../src/config/utils.ts","../src/config/read.ts","../src/crypto/hash/compare.ts","../src/crypto/hash/hash.ts","../src/crypto/key-pair/constants.ts","../src/crypto/key-pair/utils/check.ts","../src/crypto/key-pair/utils/options.ts","../src/crypto/key-pair/utils/file-name.ts","../src/crypto/key-pair/utils/private-key.ts","../src/crypto/key-pair/save.ts","../src/crypto/key-pair/create.ts","../src/crypto/key-pair/delete.ts","../src/crypto/key-pair/load.ts","../src/crypto/key-pair/module.ts","../src/crypto/json-web-token/utils.ts","../src/crypto/json-web-token/decode.ts","../src/crypto/json-web-token/sign.ts","../src/crypto/json-web-token/verify.ts","../src/domain-event/utils.ts","../src/domain-event/redis/publish.ts","../src/domain-event/socket/singleton.ts","../src/domain-event/socket/publish.ts","../src/domain-event/publish.ts","../src/domains/robot/vault.ts","../src/logger/presets/void.ts","../src/logger/module.ts","../src/proxy/module.ts","../src/proxy/utils.ts","../src/smtp/config/singleton.ts","../src/smtp/module.ts","../src/smtp/singleton.ts","../src/vault/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty } from '@authup/core';\nimport process from 'node:process';\n\nexport function hasProcessEnv(key: string | string[]) : boolean {\n const keys = Array.isArray(key) ? key : [key];\n for (let i = 0; i < keys.length; i++) {\n if (hasOwnProperty(process.env, keys[i])) {\n return true;\n }\n }\n return false;\n}\n\nexport function readFromProcessEnv(key: string | string[]) : string | undefined;\nexport function readFromProcessEnv<T>(key: string | string[], alt: T) : T | string;\nexport function readFromProcessEnv<T>(key: string | string[], alt?: T): any {\n const keys = Array.isArray(key) ? key : [key];\n for (let i = 0; i < keys.length; i++) {\n if (hasOwnProperty(process.env, keys[i])) {\n return process.env[keys[i]];\n }\n }\n\n return alt;\n}\n\nexport function readBoolFromProcessEnv(key: string | string[], alt?: boolean): boolean | undefined {\n const keys = Array.isArray(key) ? key : [key];\n for (let i = 0; i < keys.length; i++) {\n const value = readFromProcessEnv(keys[i], alt);\n\n switch (value) {\n case true:\n case 'true':\n case 't':\n case '1':\n return true;\n case false:\n case 'false':\n case 'f':\n case '0':\n return false;\n }\n }\n\n return alt;\n}\n\nexport function readBoolOrStringFromProcessEnv(\n key: string,\n alt?: boolean | string,\n) : boolean | string | undefined {\n if (hasProcessEnv(key)) {\n const value = readBoolFromProcessEnv(key, undefined);\n if (typeof value === 'undefined') {\n return readFromProcessEnv(key, alt);\n }\n\n return value;\n }\n\n return alt;\n}\n\nexport function readIntFromProcessEnv(\n key: string | string[],\n alt?: number,\n): number | undefined {\n const keys = Array.isArray(key) ? key : [key];\n\n for (let i = 0; i < keys.length; i++) {\n const value = readFromProcessEnv(keys[i], alt);\n const intValue = parseInt(`${value}`, 10);\n\n if (!Number.isNaN(intValue)) {\n return intValue;\n }\n }\n\n return alt;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function hasOwnProperty<X extends Record<string, any>, Y extends PropertyKey>(\n obj: X,\n prop: Y,\n): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport process from 'node:process';\nimport { hasProcessEnv, readFromProcessEnv } from '../utils';\n\nexport function buildWorkingDirectoryPathsForConfigFile() {\n const cwd : string[] = [\n process.cwd(),\n ];\n\n if (hasProcessEnv('WRITABLE_DIRECTORY_PATH')) {\n let writableDirectoryPath = readFromProcessEnv('WRITABLE_DIRECTORY_PATH');\n if (!path.isAbsolute(writableDirectoryPath)) {\n writableDirectoryPath = path.join(process.cwd(), writableDirectoryPath);\n }\n\n cwd.push(writableDirectoryPath);\n } else {\n cwd.push(path.join(process.cwd(), 'writable'));\n }\n\n return cwd;\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/core';\nimport { getModuleExport, load, locateMany } from 'locter';\nimport path from 'node:path';\nimport process from 'node:process';\nimport { merge } from 'smob';\nimport type { ConfigFileReadContext } from './type';\nimport { buildWorkingDirectoryPathsForConfigFile } from './utils';\n\nexport async function readConfigFile(context?: ConfigFileReadContext) : Promise<Record<string, any>> {\n context = context || {};\n\n const cwd : string[] = [];\n if (context.cwd) {\n const arr = Array.isArray(context.cwd) ?\n context.cwd :\n [context.cwd];\n\n for (let i = 0; i < arr.length; i++) {\n if (path.isAbsolute(arr[i])) {\n cwd.push(arr[i]);\n } else {\n cwd.push(path.join(process.cwd(), arr[i]));\n }\n }\n }\n\n if (cwd.length === 0) {\n cwd.push(...buildWorkingDirectoryPathsForConfigFile());\n }\n\n const locations = await locateMany([\n 'authup.*.{conf,js,mjs,cjs,ts,mts,mts}',\n 'authup.{conf,js,mjs,cjs,ts,mts,mts}',\n ], {\n path: cwd,\n });\n\n const content : Record<string, any> = {};\n\n for (let i = 0; i < locations.length; i++) {\n const file = await load(locations[i]);\n const fileExport = getModuleExport(file);\n\n if (!isObject(fileExport.value)) {\n continue;\n }\n\n const [root, name] = locations[i].name.split('.');\n if (root && name) {\n if (context.name === name) {\n merge(content, fileExport.value);\n } else if (!context.name) {\n content[name] = content[name] || {};\n merge(content[name], fileExport.value);\n }\n }\n\n if (root && !name) {\n if (context.name) {\n if (isObject(fileExport.value[context.name])) {\n merge(content, fileExport.value[context.name]);\n }\n } else {\n merge(content, fileExport.value);\n }\n }\n }\n\n return content;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { compare as compareMethod } from 'bcrypt';\n\nexport async function compare(value: string, hashedValue: string) : Promise<boolean> {\n return compareMethod(value, hashedValue);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hash as hashMethod } from 'bcrypt';\n\nexport async function hash(str: string, saltOrRounds: number | string = 10) : Promise<string> {\n return hashMethod(str, saltOrRounds);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum KeyPairKind {\n PRIVATE = 'private',\n PUBLIC = 'public',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty } from '@authup/core';\nimport type { KeyPair } from '../type';\n\nexport function isKeyPair(data: unknown) : data is KeyPair {\n return typeof data === 'object' &&\n data !== null &&\n hasOwnProperty(data, 'privateKey') &&\n hasOwnProperty(data, 'publicKey');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport type { KeyPairOptions } from '../type';\n\nexport function extendKeyPairOptions(\n options?: Partial<KeyPairOptions>,\n) : KeyPairOptions {\n options = options ?? {};\n\n options.directory = options.directory || process.cwd();\n options.directory = path.isAbsolute(options.directory) ?\n options.directory :\n path.resolve(process.cwd(), options.directory);\n\n options.type ??= 'rsa';\n\n if (\n options.type === 'rsa' ||\n options.type === 'rsa-pss' ||\n options.type === 'dsa'\n ) {\n options.modulusLength = 2048;\n }\n\n if (!options.privateKeyEncoding) {\n options.privateKeyEncoding = {\n type: 'pkcs8',\n format: 'pem',\n };\n }\n\n if (!options.publicKeyEncoding) {\n options.publicKeyEncoding = {\n type: 'spki',\n format: 'pem',\n };\n }\n\n if (\n options.privateKeyEncoding.passphrase &&\n !options.privateKeyEncoding.cipher\n ) {\n options.privateKeyEncoding.cipher = 'aes-256-cbc';\n }\n\n return options as KeyPairOptions;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { KeyPairKind } from '../constants';\nimport type { KeyPairOptions } from '../type';\nimport { extendKeyPairOptions } from './options';\n\nexport function buildKeyFileName(\n type: `${KeyPairKind}`,\n context?: Partial<KeyPairOptions>,\n) {\n const options = extendKeyPairOptions(context);\n\n const parts : string[] = [];\n\n switch (type) {\n case KeyPairKind.PRIVATE: {\n if (options.privateName) {\n parts.push(options.privateName);\n } else {\n parts.push(type);\n }\n\n if (options.privateExtension) {\n if (options.privateExtension.startsWith('.')) {\n options.privateExtension = options.privateExtension.slice(1);\n }\n\n parts.push(options.privateExtension);\n } else {\n parts.push('pem');\n }\n break;\n }\n case KeyPairKind.PUBLIC: {\n if (options.publicName) {\n parts.push(options.publicName);\n } else {\n parts.push(type);\n }\n\n if (options.publicExtension) {\n if (options.publicExtension.startsWith('.')) {\n options.publicExtension = options.publicExtension.slice(1);\n }\n\n parts.push(options.publicExtension);\n } else {\n parts.push('pem');\n }\n break;\n }\n }\n\n return parts.join('.');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createPrivateKey } from 'node:crypto';\nimport type { KeyPairOptions } from '../type';\n\nexport function decryptRSAPrivateKey(\n context: KeyPairOptions,\n key: string | Buffer,\n) : string {\n const privateKey = createPrivateKey({\n type: context.privateKeyEncoding.type,\n format: context.privateKeyEncoding.format,\n key,\n passphrase: context.privateKeyEncoding.passphrase || context.passphrase,\n });\n\n let content = privateKey.export({\n type: context.privateKeyEncoding.type,\n format: context.privateKeyEncoding.format,\n });\n\n if (typeof content !== 'string') {\n content = Buffer.from(content).toString('utf-8');\n }\n\n return content;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { buildKeyFileName, extendKeyPairOptions } from './utils';\nimport { KeyPairKind } from './constants';\n\nexport async function saveKeyPair(keyPair: KeyPair, context?: KeyPairOptions) : Promise<KeyPair> {\n context = extendKeyPairOptions(context);\n\n await fs.promises.mkdir(context.directory, { recursive: true });\n\n await Promise.all(\n [\n {\n path: path.resolve(context.directory, buildKeyFileName(KeyPairKind.PRIVATE, context)),\n content: keyPair.privateKey,\n },\n {\n path: path.resolve(context.directory, buildKeyFileName(KeyPairKind.PUBLIC, context)),\n content: keyPair.publicKey,\n },\n ]\n .map((file) => fs.promises.writeFile(file.path, file.content)),\n );\n\n return keyPair;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { generateKeyPair } from 'node:crypto';\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { decryptRSAPrivateKey, extendKeyPairOptions } from './utils';\nimport { saveKeyPair } from './save';\n\nexport async function createKeyPair(context?: Partial<KeyPairOptions>) : Promise<KeyPair> {\n const options = extendKeyPairOptions(context);\n\n const keyPair : KeyPair = await new Promise((resolve: (value: KeyPair) => void, reject) => {\n const callback = (err: (Error | null), publicKey: string, privateKey: string) => {\n if (err) reject(err);\n\n resolve({\n privateKey,\n publicKey,\n });\n };\n switch (options.type) {\n case 'dsa':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n case 'ec':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n case 'rsa':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n case 'rsa-pss':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n }\n });\n\n if (options.save) {\n await saveKeyPair(keyPair, options);\n }\n\n if (\n options.passphrase ||\n options.privateKeyEncoding.passphrase\n ) {\n keyPair.privateKey = decryptRSAPrivateKey(\n options,\n keyPair.privateKey,\n );\n }\n\n return keyPair;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { KeyPairOptions } from './type';\nimport { buildKeyFileName, extendKeyPairOptions } from './utils';\nimport { KeyPairKind } from './constants';\n\nexport async function deleteKeyPair(context?: Partial<KeyPairOptions>) : Promise<void> {\n const options = extendKeyPairOptions(context);\n\n const privateKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PRIVATE, options));\n const publicKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PUBLIC, options));\n\n try {\n await Promise.all([privateKeyPath, publicKeyPath]\n .map((filePath) => fs.promises.stat(filePath)));\n } catch (e) {\n return;\n }\n\n await Promise.all([\n privateKeyPath,\n publicKeyPath,\n ].map((filePath) => fs.promises.rm(filePath)));\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createPublicKey } from 'node:crypto';\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { buildKeyFileName, decryptRSAPrivateKey, extendKeyPairOptions } from './utils';\nimport { KeyPairKind } from './constants';\nimport { saveKeyPair } from './save';\n\nexport async function loadKeyPair(context?: Partial<KeyPairOptions>) : Promise<KeyPair | undefined> {\n const options = extendKeyPairOptions(context);\n\n const privateKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PRIVATE, options));\n\n try {\n await fs.promises.stat(privateKeyPath);\n } catch (e) {\n return undefined;\n }\n\n const privateKeyBuffer = await fs.promises.readFile(privateKeyPath);\n let privateKey = privateKeyBuffer.toString();\n if (\n options.passphrase ||\n options.privateKeyEncoding.passphrase\n ) {\n privateKey = decryptRSAPrivateKey(\n options,\n privateKey,\n );\n }\n\n const publicKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PUBLIC, options));\n\n let publicKey : string;\n\n try {\n await fs.promises.stat(publicKeyPath);\n const publicKeyBuffer = await fs.promises.readFile(publicKeyPath);\n publicKey = publicKeyBuffer.toString();\n } catch (e) {\n const publicKeyObject = createPublicKey({\n key: privateKey,\n format: options.privateKeyEncoding.format,\n type: options.publicKeyEncoding.type,\n });\n\n const stringOrBuffer = publicKeyObject.export({\n format: options.publicKeyEncoding.format,\n type: options.publicKeyEncoding.type,\n });\n if (typeof stringOrBuffer !== 'string') {\n publicKey = stringOrBuffer.toString();\n } else {\n publicKey = stringOrBuffer;\n }\n\n if (options.save) {\n await saveKeyPair({\n privateKey,\n publicKey,\n }, options);\n }\n }\n\n return {\n privateKey,\n publicKey,\n };\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { extendKeyPairOptions } from './utils';\nimport { loadKeyPair } from './load';\nimport { createKeyPair } from './create';\n\nconst keyPairCache : Record<string, KeyPair> = {};\n\nexport async function useKeyPair(value?: Partial<KeyPairOptions> | string) : Promise<KeyPair> {\n let options : KeyPairOptions;\n\n if (typeof value === 'string') {\n options = extendKeyPairOptions({\n privateName: value,\n });\n } else {\n options = extendKeyPairOptions(value || {});\n }\n\n if (Object.prototype.hasOwnProperty.call(keyPairCache, options.privateName)) {\n return keyPairCache[options.privateName];\n }\n\n let keyPair = await loadKeyPair(options);\n if (typeof keyPair === 'undefined') {\n keyPair = await createKeyPair(options);\n }\n\n keyPairCache[options.privateName] = keyPair;\n\n return keyPair;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { TokenError, hasOwnProperty } from '@authup/core';\n\nexport function handleJWTError(e: unknown) {\n if (\n e &&\n typeof e === 'object' &&\n hasOwnProperty(e, 'name')\n ) {\n switch (e.name) {\n case 'TokenExpiredError':\n throw TokenError.expired();\n case 'NotBeforeError': {\n if (\n hasOwnProperty(e, 'date') &&\n typeof e.date === 'string'\n ) {\n throw TokenError.notActiveBefore(e.date);\n }\n break;\n }\n case 'JsonWebTokenError': {\n if (\n hasOwnProperty(e, 'message') &&\n typeof e.message === 'string'\n ) {\n throw TokenError.payloadInvalid(e.message);\n }\n }\n }\n }\n\n throw new TokenError({\n previous: e as Error,\n decorateMessage: true,\n logMessage: true,\n message: 'The JWT error could not be determined.',\n });\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n Jwt,\n JwtPayload,\n} from 'jsonwebtoken';\nimport {\n decode,\n} from 'jsonwebtoken';\nimport { TokenError } from '@authup/core';\nimport type { TokenDecodeOptions } from './type';\nimport { handleJWTError } from './utils';\n\n/**\n * Decode a JWT token with no verification.\n *\n * @param token\n * @param options\n *\n * @throws TokenError\n */\nexport function decodeToken(token: string, options: TokenDecodeOptions & { complete: true }): null | Jwt;\nexport function decodeToken(token: string, options?: TokenDecodeOptions): JwtPayload | string | null;\nexport function decodeToken(\n token: string,\n options?: TokenDecodeOptions,\n): JwtPayload | string | null {\n options ??= {};\n\n try {\n return decode(token, {\n ...options,\n });\n } catch (e) {\n handleJWTError(e);\n\n throw e;\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { sign } from 'jsonwebtoken';\nimport { KeyType, TokenError } from '@authup/core';\nimport { isKeyPair, useKeyPair } from '../key-pair';\nimport type { TokenSignOptions } from './type';\n\nexport async function signToken(\n payload: string | object | Buffer | Record<string, any>,\n context: TokenSignOptions,\n): Promise<string> {\n context.expiresIn = context.expiresIn || 3600;\n\n switch (context.type) {\n case KeyType.RSA:\n case KeyType.EC: {\n const { type, keyPair, ...options } = context;\n const { privateKey } = isKeyPair(keyPair) ?\n keyPair :\n await useKeyPair(keyPair);\n\n if (type === KeyType.RSA) {\n options.algorithm = options.algorithm || 'RS256';\n } else {\n options.algorithm = options.algorithm || 'ES256';\n }\n\n return sign(payload, privateKey, options);\n }\n case KeyType.OCT: {\n const { type, secret, ...options } = context;\n options.algorithm = options.algorithm || 'HS256';\n\n return sign(payload, secret, options);\n }\n }\n\n throw new TokenError();\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Jwt, JwtPayload } from 'jsonwebtoken';\nimport { verify } from 'jsonwebtoken';\nimport { KeyType, TokenError } from '@authup/core';\nimport { isKeyPair, useKeyPair } from '../key-pair';\nimport type { TokenVerifyOptions } from './type';\nimport { handleJWTError } from './utils';\n\n/**\n * Verify JWT.\n *\n * @param token\n * @param context\n *\n * @throws TokenError\n */\nexport async function verifyToken(token: string, context: TokenVerifyOptions & { complete: true }): Promise<string | Jwt>;\nexport async function verifyToken(token: string, context: TokenVerifyOptions): Promise<JwtPayload | string>;\nexport async function verifyToken(\n token: string,\n context: TokenVerifyOptions,\n) : Promise<JwtPayload | Jwt | string> {\n try {\n switch (context.type) {\n case KeyType.RSA:\n case KeyType.EC: {\n const { type, keyPair, ...options } = context;\n const { publicKey } = isKeyPair(keyPair) ?\n keyPair :\n await useKeyPair(keyPair);\n\n if (type === KeyType.RSA) {\n options.algorithms = options.algorithms || ['RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512'];\n } else {\n options.algorithms = options.algorithms || ['ES256', 'ES384', 'ES512'];\n }\n\n return verify(token, publicKey, {\n ...options,\n });\n }\n case KeyType.OCT: {\n const { type, secret, ...options } = context;\n\n options.algorithms = options.algorithms || ['HS256', 'HS384', 'HS512'];\n\n return verify(token, secret, {\n ...options,\n });\n }\n }\n } catch (e) {\n handleJWTError(e);\n\n throw e;\n }\n\n throw new TokenError({ message: 'Invalid type.' });\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/core';\nimport type { DomainEventChannelName } from './type';\n\nexport function transformDomainEventData<T>(input: T) : T {\n if (isObject(input)) {\n const keys = Object.keys(input);\n for (let i = 0; i < keys.length; i++) {\n const value = input[keys[i]];\n if (value instanceof Date) {\n input[keys[i]] = value.toISOString();\n }\n }\n }\n\n return input;\n}\n\nexport function buildDomainEventChannelName(\n input: DomainEventChannelName,\n id?: string | number,\n) : string {\n if (typeof input === 'string') {\n return input;\n }\n\n return input(id);\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { DomainEventName } from '@authup/core';\nimport type { DomainEventContext } from '@authup/core';\nimport { hasClient, hasConfig, useClient } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport async function publishDomainRedisEvent(\n context: DomainEventContext,\n destinations: DomainEventDestinations,\n) : Promise<any> {\n if (!hasClient() && !hasConfig()) {\n return Promise.resolve();\n }\n\n context = transformDomainEventData(context);\n\n const json = JSON.stringify(context);\n\n const client = useClient();\n const pipeline = client.pipeline();\n for (let i = 0; i < destinations.length; i++) {\n const { namespace } = destinations[i];\n const keyPrefix = (namespace ? `${namespace}:` : '');\n\n let key = keyPrefix + buildDomainEventChannelName(destinations[i].channel);\n pipeline.publish(key, json);\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n key = keyPrefix + buildDomainEventChannelName(destinations[i].channel, context.data.id);\n pipeline.publish(key, json);\n }\n }\n\n return pipeline.exec();\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { Emitter } from '@socket.io/redis-emitter';\nimport { useClient } from 'redis-extension';\nimport type { SocketServerToClientEvents } from './type';\n\nlet instance : undefined | Emitter<SocketServerToClientEvents>;\n\nexport function useSocketEmitter() : Emitter<SocketServerToClientEvents> {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = new Emitter<SocketServerToClientEvents>(useClient());\n\n return instance;\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { DomainEventContext } from '@authup/core';\nimport { DomainEventName, buildDomainEventFullName } from '@authup/core';\nimport { hasClient, hasConfig } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\nimport { useSocketEmitter } from './singleton';\n\nexport function publishDomainSocketEvent(\n context: DomainEventContext,\n destinations: DomainEventDestinations,\n) {\n if (!hasClient() && !hasConfig()) {\n return;\n }\n\n context = transformDomainEventData(context);\n\n for (let i = 0; i < destinations.length; i++) {\n let emitter = useSocketEmitter();\n if (destinations[i].namespace) {\n emitter = emitter.of(destinations[i].namespace);\n }\n\n let roomName = buildDomainEventChannelName(destinations[i].channel);\n\n const fullEventName = buildDomainEventFullName(context.type, context.event);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n data: context,\n meta: {\n roomName,\n },\n });\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n roomName = buildDomainEventChannelName(destinations[i].channel, context.data.id);\n emitter\n .in(roomName)\n .emit(fullEventName, {\n data: context,\n meta: {\n roomName,\n roomId: context.data.id,\n },\n });\n }\n }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { DomainEventContext } from '@authup/core';\nimport { publishDomainRedisEvent } from './redis';\nimport { publishDomainSocketEvent } from './socket';\nimport type { DomainEventDestinations } from './type';\n\nexport async function publishDomainEvent(\n context: DomainEventContext,\n destinations: DomainEventDestinations,\n) {\n await publishDomainRedisEvent(context, destinations);\n publishDomainSocketEvent(context, destinations);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Robot } from '@authup/core';\nimport { hasConfig, useClient } from '@hapic/vault';\n\nexport async function saveRobotCredentialsToVault(entity: Pick<Robot, 'id' | 'secret' | 'name'>) {\n if (!hasConfig()) {\n return;\n }\n\n const client = useClient();\n\n await client.keyValue.save('robots', entity.name, {\n id: entity.id,\n secret: entity.secret,\n });\n}\n\nexport async function removeRobotCredentialsFromVault(entity: Pick<Robot, 'name'>) {\n if (!hasConfig()) {\n return;\n }\n\n const client = useClient();\n\n await client.keyValue.delete('robots', entity.name);\n}\n\nexport async function findRobotCredentialsInVault(\n entity: Pick<Robot, 'name'>,\n) : Promise<Pick<Robot, 'id' | 'secret'> | undefined> {\n if (!hasConfig()) {\n return undefined;\n }\n\n const client = useClient();\n\n const response = await client.keyValue.find('robots', entity.name);\n if (response && response.data) {\n return response.data as Robot;\n }\n\n return undefined;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Logger } from '../type';\n\nexport class VoidLogger implements Logger {\n error(message: any) : any;\n\n error(message: string, ...meta: any[]) : any;\n\n error(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n warn(message: any) : any;\n\n warn(message: string, ...meta: any[]) : any;\n\n warn(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n info(message: any) : any;\n\n info(message: string, ...meta: any[]) : any;\n\n info(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n http(message: any) : any;\n\n http(message: string, ...meta: any[]) : any;\n\n http(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n verbose(message: any) : any;\n\n verbose(message: string, ...meta: any[]) : any;\n\n verbose(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n debug(message: any) : any;\n\n debug(message: string, ...meta: any[]) : any;\n\n debug(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { VoidLogger } from './presets';\nimport type { Logger } from './type';\n\nlet instance: Logger | undefined;\n\nexport function useLogger() : Logger {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = new VoidLogger();\n\n return instance;\n}\n\nexport function setLogger(logger: Logger) {\n instance = logger;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport http from 'node:http';\nimport type { AgentOptions } from 'node:https';\nimport https from 'node:https';\n\nexport type ProxyClientOptions = {\n user?: string,\n password?: string,\n host: string,\n port: number\n};\n\nexport class ProxyClient {\n protected options: ProxyClientOptions;\n\n /**\n * e.g. { keepAlive: true }\n * @protected\n */\n protected agentOptions : AgentOptions;\n\n constructor(options: ProxyClientOptions, agentOptions?: AgentOptions) {\n this.options = options;\n this.agentOptions = agentOptions || {};\n }\n\n /**\n * Create a http agent for an url.\n *\n * @param input\n */\n async createAgent(input: string) {\n return new Promise((resolve, reject) => {\n const headers : Record<string, any> = { };\n\n if (\n this.options.user &&\n this.options.password\n ) {\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(`${this.options.user}:${this.options.password}`).toString('base64')}`;\n }\n\n const urlParsed = new URL(input);\n const request = http.request({\n host: this.options.host,\n port: this.options.port,\n method: 'CONNECT',\n path: `${urlParsed.hostname}:443`,\n headers,\n });\n\n request.on('connect', (res, socket) => {\n if (\n res.statusCode >= 200 &&\n res.statusCode < 300\n ) {\n resolve(new https.Agent({ socket, ...this.agentOptions }));\n } else {\n reject(new Error('Could not connect to proxy!'));\n }\n });\n\n request.on('error', (err) => {\n reject(err);\n });\n\n request.on('timeout', (err) => {\n reject(err);\n });\n\n request.end();\n });\n }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { parseProxyConnectionString } from '@authup/core';\nimport type { ClientRequestConfig } from '@hapic/vault';\nimport { getProxyForUrl } from 'proxy-from-env';\nimport { ProxyClient } from './module';\n\nexport async function buildHTTPClientConfigForProxy(\n url: string,\n) : Promise<ClientRequestConfig> {\n const connectionString = getProxyForUrl(url);\n if (connectionString) {\n const connectionDetails = parseProxyConnectionString(connectionString);\n const proxyClient = new ProxyClient({\n host: connectionDetails.host,\n port: connectionDetails.port || 3128,\n ...(connectionDetails.auth.username ? { user: connectionDetails.auth.username } : {}),\n ...(connectionDetails.auth.password ? { password: connectionDetails.auth.password } : {}),\n });\n\n const agent = await proxyClient.createAgent(url);\n\n return {\n httpAgent: agent,\n httpsAgent: agent,\n proxy: false,\n };\n }\n\n return {};\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { SmtpConfig } from '../type';\n\nlet instance : SmtpConfig | string | undefined;\n\nexport function hasSmtpConfig() {\n return !!instance;\n}\n\nexport function setSmtpConfig(value: SmtpConfig | string | undefined) {\n instance = value;\n}\n\nexport function useSmtpConfig() : SmtpConfig | string {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = {};\n\n return instance;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Transporter } from 'nodemailer';\nimport { createTransport } from 'nodemailer';\nimport type { SmtpConfig } from './type';\nimport { useLogger } from '../logger';\n\nexport function createSmtpClient(options?: SmtpConfig | string) : Transporter {\n let transport : Transporter;\n\n options = options || {};\n\n if (typeof options === 'string') {\n transport = createTransport(options);\n } else if (options.connectionString) {\n transport = createTransport(options.connectionString);\n } else {\n let auth: Record<string, any> | undefined;\n if (options.user && options.password) {\n auth = {\n type: 'login',\n user: options.user,\n pass: options.password,\n };\n }\n\n transport = createTransport({\n host: options.host,\n port: options.port,\n auth,\n secure: options.ssl,\n opportunisticTLS: options.starttls,\n tls: {\n rejectUnauthorized: false,\n },\n });\n }\n\n transport.on('error', (e) => {\n useLogger().error(e.message);\n });\n\n return transport;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Transporter } from 'nodemailer';\nimport { createTestAccount } from 'nodemailer';\nimport { createSmtpClient } from './module';\nimport { useSmtpConfig } from './config';\nimport type { SmtpConfig } from './type';\n\nlet instance : Transporter | undefined;\n\nexport async function useSMTPClient() : Promise<Transporter> {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n let options : SmtpConfig | string;\n if (process.env.NODE_ENV === 'test') {\n const testAccount = await createTestAccount();\n\n options = {\n host: 'smtp.ethereal.email',\n port: 587,\n ssl: false,\n user: testAccount.user,\n password: testAccount.pass,\n };\n } else {\n options = useSmtpConfig();\n }\n\n instance = createSmtpClient(options);\n\n return instance;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ConfigInput } from '@hapic/vault';\nimport {\n hasClient, hasConfig, setConfig, unsetClient,\n} from '@hapic/vault';\n\nexport function setVaultConfig(input: ConfigInput) {\n if (hasClient()) {\n unsetClient();\n }\n\n setConfig(input);\n}\n\nexport function hasVaultConfig() {\n return hasConfig();\n}\n"],"names":["hasProcessEnv","key","keys","Array","isArray","i","length","hasOwnProperty","process","env","readFromProcessEnv","alt","readBoolFromProcessEnv","value","readBoolOrStringFromProcessEnv","undefined","readIntFromProcessEnv","intValue","parseInt","Number","isNaN","obj","prop","Object","prototype","call","buildWorkingDirectoryPathsForConfigFile","cwd","writableDirectoryPath","path","isAbsolute","join","push","readConfigFile","context","arr","locations","locateMany","content","file","load","fileExport","getModuleExport","isObject","root","name","split","merge","compare","hashedValue","compareMethod","hash","str","saltOrRounds","hashMethod","KeyPairKind","PRIVATE","PUBLIC","isKeyPair","data","extendKeyPairOptions","options","directory","resolve","type","modulusLength","privateKeyEncoding","format","publicKeyEncoding","passphrase","cipher","buildKeyFileName","parts","privateName","privateExtension","startsWith","slice","publicName","publicExtension","decryptRSAPrivateKey","privateKey","createPrivateKey","export","Buffer","from","toString","saveKeyPair","keyPair","fs","promises","mkdir","recursive","Promise","all","publicKey","map","writeFile","createKeyPair","reject","callback","err","generateKeyPair","save","deleteKeyPair","privateKeyPath","publicKeyPath","filePath","stat","e","rm","loadKeyPair","privateKeyBuffer","readFile","publicKeyBuffer","publicKeyObject","createPublicKey","stringOrBuffer","keyPairCache","useKeyPair","handleJWTError","TokenError","expired","date","notActiveBefore","message","payloadInvalid","previous","decorateMessage","logMessage","decodeToken","token","decode","signToken","payload","expiresIn","KeyType","RSA","EC","algorithm","sign","OCT","secret","verifyToken","algorithms","verify","transformDomainEventData","input","Date","toISOString","buildDomainEventChannelName","id","publishDomainRedisEvent","destinations","hasClient","hasConfig","json","JSON","stringify","client","useClient","pipeline","namespace","keyPrefix","channel","publish","event","DomainEventName","CREATED","exec","instance","useSocketEmitter","Emitter","publishDomainSocketEvent","emitter","of","roomName","fullEventName","buildDomainEventFullName","in","emit","meta","roomId","publishDomainEvent","saveRobotCredentialsToVault","entity","keyValue","removeRobotCredentialsFromVault","delete","findRobotCredentialsInVault","response","find","VoidLogger","error","warn","info","http","verbose","debug","useLogger","setLogger","logger","ProxyClient","createAgent","headers","user","password","urlParsed","URL","request","host","port","method","hostname","on","res","socket","statusCode","https","Agent","agentOptions","Error","end","constructor","buildHTTPClientConfigForProxy","url","connectionString","getProxyForUrl","connectionDetails","parseProxyConnectionString","proxyClient","auth","username","agent","httpAgent","httpsAgent","proxy","hasSmtpConfig","setSmtpConfig","useSmtpConfig","createSmtpClient","transport","createTransport","pass","secure","ssl","opportunisticTLS","starttls","tls","rejectUnauthorized","useSMTPClient","NODE_ENV","testAccount","createTestAccount","setVaultConfig","unsetClient","setConfig","hasVaultConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/utils/env.ts","../src/utils/has-property.ts","../src/config/utils.ts","../src/config/read.ts","../src/crypto/hash/compare.ts","../src/crypto/hash/hash.ts","../src/crypto/key-pair/constants.ts","../src/crypto/key-pair/utils/check.ts","../src/crypto/key-pair/utils/options.ts","../src/crypto/key-pair/utils/file-name.ts","../src/crypto/key-pair/utils/private-key.ts","../src/crypto/key-pair/save.ts","../src/crypto/key-pair/create.ts","../src/crypto/key-pair/delete.ts","../src/crypto/key-pair/load.ts","../src/crypto/key-pair/module.ts","../src/crypto/json-web-token/utils.ts","../src/crypto/json-web-token/decode.ts","../src/crypto/json-web-token/sign.ts","../src/crypto/json-web-token/verify.ts","../src/domain-event/utils.ts","../src/domain-event/redis/publish.ts","../src/domain-event/socket/singleton.ts","../src/domain-event/socket/publish.ts","../src/domain-event/publish.ts","../src/logger/presets/void.ts","../src/logger/module.ts","../src/proxy/module.ts","../src/proxy/utils.ts","../src/smtp/config/singleton.ts","../src/smtp/module.ts","../src/smtp/singleton.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty } from '@authup/core';\nimport process from 'node:process';\n\nexport function hasProcessEnv(key: string | string[]) : boolean {\n const keys = Array.isArray(key) ? key : [key];\n for (let i = 0; i < keys.length; i++) {\n if (hasOwnProperty(process.env, keys[i])) {\n return true;\n }\n }\n return false;\n}\n\nexport function readFromProcessEnv(key: string | string[]) : string | undefined;\nexport function readFromProcessEnv<T>(key: string | string[], alt: T) : T | string;\nexport function readFromProcessEnv<T>(key: string | string[], alt?: T): any {\n const keys = Array.isArray(key) ? key : [key];\n for (let i = 0; i < keys.length; i++) {\n if (hasOwnProperty(process.env, keys[i])) {\n return process.env[keys[i]];\n }\n }\n\n return alt;\n}\n\nexport function readBoolFromProcessEnv(key: string | string[], alt?: boolean): boolean | undefined {\n const keys = Array.isArray(key) ? key : [key];\n for (let i = 0; i < keys.length; i++) {\n const value = readFromProcessEnv(keys[i], alt);\n\n switch (value) {\n case true:\n case 'true':\n case 't':\n case '1':\n return true;\n case false:\n case 'false':\n case 'f':\n case '0':\n return false;\n }\n }\n\n return alt;\n}\n\nexport function readBoolOrStringFromProcessEnv(\n key: string,\n alt?: boolean | string,\n) : boolean | string | undefined {\n if (hasProcessEnv(key)) {\n const value = readBoolFromProcessEnv(key, undefined);\n if (typeof value === 'undefined') {\n return readFromProcessEnv(key, alt);\n }\n\n return value;\n }\n\n return alt;\n}\n\nexport function readIntFromProcessEnv(\n key: string | string[],\n alt?: number,\n): number | undefined {\n const keys = Array.isArray(key) ? key : [key];\n\n for (let i = 0; i < keys.length; i++) {\n const value = readFromProcessEnv(keys[i], alt);\n const intValue = parseInt(`${value}`, 10);\n\n if (!Number.isNaN(intValue)) {\n return intValue;\n }\n }\n\n return alt;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function hasOwnProperty<X extends Record<string, any>, Y extends PropertyKey>(\n obj: X,\n prop: Y,\n): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport process from 'node:process';\nimport { hasProcessEnv, readFromProcessEnv } from '../utils';\n\nexport function buildWorkingDirectoryPathsForConfigFile() {\n const cwd : string[] = [\n process.cwd(),\n ];\n\n if (hasProcessEnv('WRITABLE_DIRECTORY_PATH')) {\n let writableDirectoryPath = readFromProcessEnv('WRITABLE_DIRECTORY_PATH');\n if (!path.isAbsolute(writableDirectoryPath)) {\n writableDirectoryPath = path.join(process.cwd(), writableDirectoryPath);\n }\n\n cwd.push(writableDirectoryPath);\n } else {\n cwd.push(path.join(process.cwd(), 'writable'));\n }\n\n return cwd;\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/core';\nimport { getModuleExport, load, locateMany } from 'locter';\nimport path from 'node:path';\nimport process from 'node:process';\nimport { merge } from 'smob';\nimport type { ConfigFileReadContext } from './type';\nimport { buildWorkingDirectoryPathsForConfigFile } from './utils';\n\nexport async function readConfigFile(context?: ConfigFileReadContext) : Promise<Record<string, any>> {\n context = context || {};\n\n const cwd : string[] = [];\n if (context.cwd) {\n const arr = Array.isArray(context.cwd) ?\n context.cwd :\n [context.cwd];\n\n for (let i = 0; i < arr.length; i++) {\n if (path.isAbsolute(arr[i])) {\n cwd.push(arr[i]);\n } else {\n cwd.push(path.join(process.cwd(), arr[i]));\n }\n }\n }\n\n if (cwd.length === 0) {\n cwd.push(...buildWorkingDirectoryPathsForConfigFile());\n }\n\n const locations = await locateMany([\n 'authup.*.{conf,js,mjs,cjs,ts,mts,mts}',\n 'authup.{conf,js,mjs,cjs,ts,mts,mts}',\n ], {\n path: cwd,\n });\n\n const content : Record<string, any> = {};\n\n for (let i = 0; i < locations.length; i++) {\n const file = await load(locations[i]);\n const fileExport = getModuleExport(file);\n\n if (!isObject(fileExport.value)) {\n continue;\n }\n\n const [root, name] = locations[i].name.split('.');\n if (root && name) {\n if (context.name === name) {\n merge(content, fileExport.value);\n } else if (!context.name) {\n content[name] = content[name] || {};\n merge(content[name], fileExport.value);\n }\n }\n\n if (root && !name) {\n if (context.name) {\n if (isObject(fileExport.value[context.name])) {\n merge(content, fileExport.value[context.name]);\n }\n } else {\n merge(content, fileExport.value);\n }\n }\n }\n\n return content;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { compare as compareMethod } from 'bcrypt';\n\nexport async function compare(value: string, hashedValue: string) : Promise<boolean> {\n return compareMethod(value, hashedValue);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hash as hashMethod } from 'bcrypt';\n\nexport async function hash(str: string, saltOrRounds: number | string = 10) : Promise<string> {\n return hashMethod(str, saltOrRounds);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum KeyPairKind {\n PRIVATE = 'private',\n PUBLIC = 'public',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/core';\nimport type { KeyPair } from '../type';\n\nexport function isKeyPair(data: unknown) : data is KeyPair {\n return isObject(data) &&\n typeof (data as KeyPair).privateKey !== 'undefined' &&\n typeof (data as KeyPair).publicKey !== 'undefined';\n}\n\nexport function isKeyPairWithPublicKey(data: unknown) : data is Omit<KeyPair, 'privateKey'> {\n return isObject(data) &&\n typeof (data as KeyPair).publicKey !== 'undefined';\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport type { KeyPairOptions } from '../type';\n\nexport function extendKeyPairOptions(\n options?: Partial<KeyPairOptions>,\n) : KeyPairOptions {\n options = options ?? {};\n\n options.directory = options.directory || process.cwd();\n options.directory = path.isAbsolute(options.directory) ?\n options.directory :\n path.resolve(process.cwd(), options.directory);\n\n options.type ??= 'rsa';\n\n if (\n options.type === 'rsa' ||\n options.type === 'rsa-pss' ||\n options.type === 'dsa'\n ) {\n options.modulusLength = 2048;\n }\n\n if (!options.privateKeyEncoding) {\n options.privateKeyEncoding = {\n type: 'pkcs8',\n format: 'pem',\n };\n }\n\n if (!options.publicKeyEncoding) {\n options.publicKeyEncoding = {\n type: 'spki',\n format: 'pem',\n };\n }\n\n if (\n options.privateKeyEncoding.passphrase &&\n !options.privateKeyEncoding.cipher\n ) {\n options.privateKeyEncoding.cipher = 'aes-256-cbc';\n }\n\n return options as KeyPairOptions;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { KeyPairKind } from '../constants';\nimport type { KeyPairOptions } from '../type';\nimport { extendKeyPairOptions } from './options';\n\nexport function buildKeyFileName(\n type: `${KeyPairKind}`,\n context?: Partial<KeyPairOptions>,\n) {\n const options = extendKeyPairOptions(context);\n\n const parts : string[] = [];\n\n switch (type) {\n case KeyPairKind.PRIVATE: {\n if (options.privateName) {\n parts.push(options.privateName);\n } else {\n parts.push(type);\n }\n\n if (options.privateExtension) {\n if (options.privateExtension.startsWith('.')) {\n options.privateExtension = options.privateExtension.slice(1);\n }\n\n parts.push(options.privateExtension);\n } else {\n parts.push('pem');\n }\n break;\n }\n case KeyPairKind.PUBLIC: {\n if (options.publicName) {\n parts.push(options.publicName);\n } else {\n parts.push(type);\n }\n\n if (options.publicExtension) {\n if (options.publicExtension.startsWith('.')) {\n options.publicExtension = options.publicExtension.slice(1);\n }\n\n parts.push(options.publicExtension);\n } else {\n parts.push('pem');\n }\n break;\n }\n }\n\n return parts.join('.');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createPrivateKey } from 'node:crypto';\nimport type { KeyPairOptions } from '../type';\n\nexport function decryptRSAPrivateKey(\n context: KeyPairOptions,\n key: string | Buffer,\n) : string {\n const privateKey = createPrivateKey({\n type: context.privateKeyEncoding.type,\n format: context.privateKeyEncoding.format,\n key,\n passphrase: context.privateKeyEncoding.passphrase || context.passphrase,\n });\n\n let content = privateKey.export({\n type: context.privateKeyEncoding.type,\n format: context.privateKeyEncoding.format,\n });\n\n if (typeof content !== 'string') {\n content = Buffer.from(content).toString('utf-8');\n }\n\n return content;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { buildKeyFileName, extendKeyPairOptions } from './utils';\nimport { KeyPairKind } from './constants';\n\nexport async function saveKeyPair(keyPair: KeyPair, context?: KeyPairOptions) : Promise<KeyPair> {\n context = extendKeyPairOptions(context);\n\n await fs.promises.mkdir(context.directory, { recursive: true });\n\n await Promise.all(\n [\n {\n path: path.resolve(context.directory, buildKeyFileName(KeyPairKind.PRIVATE, context)),\n content: keyPair.privateKey,\n },\n {\n path: path.resolve(context.directory, buildKeyFileName(KeyPairKind.PUBLIC, context)),\n content: keyPair.publicKey,\n },\n ]\n .map((file) => fs.promises.writeFile(file.path, file.content)),\n );\n\n return keyPair;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { generateKeyPair } from 'node:crypto';\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { decryptRSAPrivateKey, extendKeyPairOptions } from './utils';\nimport { saveKeyPair } from './save';\n\nexport async function createKeyPair(context?: Partial<KeyPairOptions>) : Promise<KeyPair> {\n const options = extendKeyPairOptions(context);\n\n const keyPair : KeyPair = await new Promise((resolve: (value: KeyPair) => void, reject) => {\n const callback = (err: (Error | null), publicKey: string, privateKey: string) => {\n if (err) reject(err);\n\n resolve({\n privateKey,\n publicKey,\n });\n };\n switch (options.type) {\n case 'dsa':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n case 'ec':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n case 'rsa':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n case 'rsa-pss':\n generateKeyPair(\n options.type,\n options,\n callback,\n );\n break;\n }\n });\n\n if (options.save) {\n await saveKeyPair(keyPair, options);\n }\n\n if (\n options.passphrase ||\n options.privateKeyEncoding.passphrase\n ) {\n keyPair.privateKey = decryptRSAPrivateKey(\n options,\n keyPair.privateKey,\n );\n }\n\n return keyPair;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { KeyPairOptions } from './type';\nimport { buildKeyFileName, extendKeyPairOptions } from './utils';\nimport { KeyPairKind } from './constants';\n\nexport async function deleteKeyPair(context?: Partial<KeyPairOptions>) : Promise<void> {\n const options = extendKeyPairOptions(context);\n\n const privateKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PRIVATE, options));\n const publicKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PUBLIC, options));\n\n try {\n await Promise.all([privateKeyPath, publicKeyPath]\n .map((filePath) => fs.promises.stat(filePath)));\n } catch (e) {\n return;\n }\n\n await Promise.all([\n privateKeyPath,\n publicKeyPath,\n ].map((filePath) => fs.promises.rm(filePath)));\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createPublicKey } from 'node:crypto';\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { buildKeyFileName, decryptRSAPrivateKey, extendKeyPairOptions } from './utils';\nimport { KeyPairKind } from './constants';\nimport { saveKeyPair } from './save';\n\nexport async function loadKeyPair(context?: Partial<KeyPairOptions>) : Promise<KeyPair | undefined> {\n const options = extendKeyPairOptions(context);\n\n const privateKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PRIVATE, options));\n\n try {\n await fs.promises.stat(privateKeyPath);\n } catch (e) {\n return undefined;\n }\n\n const privateKeyBuffer = await fs.promises.readFile(privateKeyPath);\n let privateKey = privateKeyBuffer.toString();\n if (\n options.passphrase ||\n options.privateKeyEncoding.passphrase\n ) {\n privateKey = decryptRSAPrivateKey(\n options,\n privateKey,\n );\n }\n\n const publicKeyPath : string = path.resolve(options.directory, buildKeyFileName(KeyPairKind.PUBLIC, options));\n\n let publicKey : string;\n\n try {\n await fs.promises.stat(publicKeyPath);\n const publicKeyBuffer = await fs.promises.readFile(publicKeyPath);\n publicKey = publicKeyBuffer.toString();\n } catch (e) {\n const publicKeyObject = createPublicKey({\n key: privateKey,\n format: options.privateKeyEncoding.format,\n type: options.publicKeyEncoding.type,\n });\n\n const stringOrBuffer = publicKeyObject.export({\n format: options.publicKeyEncoding.format,\n type: options.publicKeyEncoding.type,\n });\n if (typeof stringOrBuffer !== 'string') {\n publicKey = stringOrBuffer.toString();\n } else {\n publicKey = stringOrBuffer;\n }\n\n if (options.save) {\n await saveKeyPair({\n privateKey,\n publicKey,\n }, options);\n }\n }\n\n return {\n privateKey,\n publicKey,\n };\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\nimport type { KeyPair, KeyPairOptions } from './type';\nimport { extendKeyPairOptions } from './utils';\nimport { loadKeyPair } from './load';\nimport { createKeyPair } from './create';\n\nconst keyPairCache : Record<string, KeyPair> = {};\n\nexport async function useKeyPair(value?: Partial<KeyPairOptions> | string) : Promise<KeyPair> {\n let options : KeyPairOptions;\n\n if (typeof value === 'string') {\n options = extendKeyPairOptions({\n privateName: value,\n });\n } else {\n options = extendKeyPairOptions(value || {});\n }\n\n if (Object.prototype.hasOwnProperty.call(keyPairCache, options.privateName)) {\n return keyPairCache[options.privateName];\n }\n\n let keyPair = await loadKeyPair(options);\n if (typeof keyPair === 'undefined') {\n keyPair = await createKeyPair(options);\n }\n\n keyPairCache[options.privateName] = keyPair;\n\n return keyPair;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { TokenError, hasOwnProperty } from '@authup/core';\n\nexport function handleJWTError(e: unknown) {\n if (\n e &&\n typeof e === 'object' &&\n hasOwnProperty(e, 'name')\n ) {\n switch (e.name) {\n case 'TokenExpiredError':\n throw TokenError.expired();\n case 'NotBeforeError': {\n if (\n hasOwnProperty(e, 'date') &&\n typeof e.date === 'string'\n ) {\n throw TokenError.notActiveBefore(e.date);\n }\n break;\n }\n case 'JsonWebTokenError': {\n if (\n hasOwnProperty(e, 'message') &&\n typeof e.message === 'string'\n ) {\n throw TokenError.payloadInvalid(e.message);\n }\n }\n }\n }\n\n throw new TokenError({\n previous: e as Error,\n decorateMessage: true,\n logMessage: true,\n message: 'The JWT error could not be determined.',\n });\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n Jwt,\n JwtPayload,\n} from 'jsonwebtoken';\nimport {\n decode,\n} from 'jsonwebtoken';\nimport { TokenError } from '@authup/core';\nimport type { TokenDecodeOptions } from './type';\nimport { handleJWTError } from './utils';\n\n/**\n * Decode a JWT token with no verification.\n *\n * @param token\n * @param options\n *\n * @throws TokenError\n */\nexport function decodeToken(token: string, options: TokenDecodeOptions & { complete: true }): null | Jwt;\nexport function decodeToken(token: string, options?: TokenDecodeOptions): JwtPayload | string | null;\nexport function decodeToken(\n token: string,\n options?: TokenDecodeOptions,\n): JwtPayload | string | null {\n options ??= {};\n\n try {\n return decode(token, {\n ...options,\n });\n } catch (e) {\n handleJWTError(e);\n\n throw e;\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { sign } from 'jsonwebtoken';\nimport { KeyType, TokenError } from '@authup/core';\nimport { isKeyPair, useKeyPair } from '../key-pair';\nimport type { TokenSignOptions } from './type';\n\nexport async function signToken(\n payload: string | object | Buffer | Record<string, any>,\n context: TokenSignOptions,\n): Promise<string> {\n context.expiresIn = context.expiresIn || 3600;\n\n switch (context.type) {\n case KeyType.RSA:\n case KeyType.EC: {\n const { type, keyPair, ...options } = context;\n const { privateKey } = isKeyPair(keyPair) ?\n keyPair :\n await useKeyPair(keyPair);\n\n if (type === KeyType.RSA) {\n options.algorithm = options.algorithm || 'RS256';\n } else {\n options.algorithm = options.algorithm || 'ES256';\n }\n\n return sign(payload, privateKey, options);\n }\n case KeyType.OCT: {\n const { type, secret, ...options } = context;\n options.algorithm = options.algorithm || 'HS256';\n\n return sign(payload, secret, options);\n }\n }\n\n throw new TokenError();\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Jwt, JwtPayload } from 'jsonwebtoken';\nimport { verify } from 'jsonwebtoken';\nimport { KeyType, TokenError } from '@authup/core';\nimport { isKeyPair, isKeyPairWithPublicKey, useKeyPair } from '../key-pair';\nimport type { TokenVerifyOptions } from './type';\nimport { handleJWTError } from './utils';\n\n/**\n * Verify JWT.\n *\n * @param token\n * @param context\n *\n * @throws TokenError\n */\nexport async function verifyToken(token: string, context: TokenVerifyOptions & { complete: true }): Promise<string | Jwt>;\nexport async function verifyToken(token: string, context: TokenVerifyOptions): Promise<JwtPayload | string>;\nexport async function verifyToken(\n token: string,\n context: TokenVerifyOptions,\n) : Promise<JwtPayload | Jwt | string> {\n try {\n switch (context.type) {\n case KeyType.RSA:\n case KeyType.EC: {\n const { type, keyPair, ...options } = context;\n const { publicKey } = isKeyPairWithPublicKey(keyPair) ?\n keyPair :\n await useKeyPair(keyPair);\n\n if (type === KeyType.RSA) {\n options.algorithms = options.algorithms || ['RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512'];\n } else {\n options.algorithms = options.algorithms || ['ES256', 'ES384', 'ES512'];\n }\n\n return verify(token, publicKey, {\n ...options,\n });\n }\n case KeyType.OCT: {\n const { type, secret, ...options } = context;\n\n options.algorithms = options.algorithms || ['HS256', 'HS384', 'HS512'];\n\n return verify(token, secret, {\n ...options,\n });\n }\n }\n } catch (e) {\n handleJWTError(e);\n\n throw e;\n }\n\n throw new TokenError({ message: 'Invalid type.' });\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@authup/core';\nimport type { DomainEventChannelName } from './type';\n\nexport function transformDomainEventData<T>(input: T) : T {\n if (isObject(input)) {\n const keys = Object.keys(input);\n for (let i = 0; i < keys.length; i++) {\n const value = input[keys[i]];\n if (value instanceof Date) {\n input[keys[i]] = value.toISOString();\n }\n }\n }\n\n return input;\n}\n\nexport function buildDomainEventChannelName(\n input: DomainEventChannelName,\n id?: string | number,\n) : string {\n if (typeof input === 'string') {\n return input;\n }\n\n return input(id);\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { DomainEventName } from '@authup/core';\nimport type { DomainEventContext } from '@authup/core';\nimport { hasClient, hasConfig, useClient } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport async function publishDomainRedisEvent(\n context: DomainEventContext,\n destinations: DomainEventDestinations,\n) : Promise<any> {\n if (!hasClient() && !hasConfig()) {\n return Promise.resolve();\n }\n\n context = transformDomainEventData(context);\n\n const json = JSON.stringify(context);\n\n const client = useClient();\n const pipeline = client.pipeline();\n for (let i = 0; i < destinations.length; i++) {\n const { namespace } = destinations[i];\n const keyPrefix = (namespace ? `${namespace}:` : '');\n\n let key = keyPrefix + buildDomainEventChannelName(destinations[i].channel);\n pipeline.publish(key, json);\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n key = keyPrefix + buildDomainEventChannelName(destinations[i].channel, context.data.id);\n pipeline.publish(key, json);\n }\n }\n\n return pipeline.exec();\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { Emitter } from '@socket.io/redis-emitter';\nimport { useClient } from 'redis-extension';\nimport type { SocketServerToClientEvents } from './type';\n\nlet instance : undefined | Emitter<SocketServerToClientEvents>;\n\nexport function useSocketEmitter() : Emitter<SocketServerToClientEvents> {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = new Emitter<SocketServerToClientEvents>(useClient());\n\n return instance;\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { DomainEventContext } from '@authup/core';\nimport { DomainEventName, buildDomainEventFullName } from '@authup/core';\nimport { hasClient, hasConfig } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\nimport { useSocketEmitter } from './singleton';\n\nexport function publishDomainSocketEvent(\n context: DomainEventContext,\n destinations: DomainEventDestinations,\n) {\n if (!hasClient() && !hasConfig()) {\n return;\n }\n\n context = transformDomainEventData(context);\n\n for (let i = 0; i < destinations.length; i++) {\n let emitter = useSocketEmitter();\n if (destinations[i].namespace) {\n emitter = emitter.of(destinations[i].namespace);\n }\n\n let roomName = buildDomainEventChannelName(destinations[i].channel);\n\n const fullEventName = buildDomainEventFullName(context.type, context.event);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n data: context,\n meta: {\n roomName,\n },\n });\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n roomName = buildDomainEventChannelName(destinations[i].channel, context.data.id);\n emitter\n .in(roomName)\n .emit(fullEventName, {\n data: context,\n meta: {\n roomName,\n roomId: context.data.id,\n },\n });\n }\n }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { DomainEventContext } from '@authup/core';\nimport { publishDomainRedisEvent } from './redis';\nimport { publishDomainSocketEvent } from './socket';\nimport type { DomainEventDestinations } from './type';\n\nexport async function publishDomainEvent(\n context: DomainEventContext,\n destinations: DomainEventDestinations,\n) {\n await publishDomainRedisEvent(context, destinations);\n publishDomainSocketEvent(context, destinations);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Logger } from '../type';\n\nexport class VoidLogger implements Logger {\n error(message: any) : any;\n\n error(message: string, ...meta: any[]) : any;\n\n error(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n warn(message: any) : any;\n\n warn(message: string, ...meta: any[]) : any;\n\n warn(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n info(message: any) : any;\n\n info(message: string, ...meta: any[]) : any;\n\n info(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n http(message: any) : any;\n\n http(message: string, ...meta: any[]) : any;\n\n http(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n verbose(message: any) : any;\n\n verbose(message: string, ...meta: any[]) : any;\n\n verbose(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n\n debug(message: any) : any;\n\n debug(message: string, ...meta: any[]) : any;\n\n debug(message: any, ...meta: any[]) {\n return this;\n }\n\n // ---------------------------------------------\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { VoidLogger } from './presets';\nimport type { Logger } from './type';\n\nlet instance: Logger | undefined;\n\nexport function useLogger() : Logger {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = new VoidLogger();\n\n return instance;\n}\n\nexport function setLogger(logger: Logger) {\n instance = logger;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport http from 'node:http';\nimport type { AgentOptions } from 'node:https';\nimport https from 'node:https';\n\nexport type ProxyClientOptions = {\n user?: string,\n password?: string,\n host: string,\n port: number\n};\n\nexport class ProxyClient {\n protected options: ProxyClientOptions;\n\n /**\n * e.g. { keepAlive: true }\n * @protected\n */\n protected agentOptions : AgentOptions;\n\n constructor(options: ProxyClientOptions, agentOptions?: AgentOptions) {\n this.options = options;\n this.agentOptions = agentOptions || {};\n }\n\n /**\n * Create a http agent for an url.\n *\n * @param input\n */\n async createAgent(input: string) {\n return new Promise((resolve, reject) => {\n const headers : Record<string, any> = { };\n\n if (\n this.options.user &&\n this.options.password\n ) {\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(`${this.options.user}:${this.options.password}`).toString('base64')}`;\n }\n\n const urlParsed = new URL(input);\n const request = http.request({\n host: this.options.host,\n port: this.options.port,\n method: 'CONNECT',\n path: `${urlParsed.hostname}:443`,\n headers,\n });\n\n request.on('connect', (res, socket) => {\n if (\n res.statusCode >= 200 &&\n res.statusCode < 300\n ) {\n resolve(new https.Agent({ socket, ...this.agentOptions }));\n } else {\n reject(new Error('Could not connect to proxy!'));\n }\n });\n\n request.on('error', (err) => {\n reject(err);\n });\n\n request.on('timeout', (err) => {\n reject(err);\n });\n\n request.end();\n });\n }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { parseProxyConnectionString } from '@authup/core';\nimport type { ClientRequestConfig } from '@hapic/vault';\nimport { getProxyForUrl } from 'proxy-from-env';\nimport { ProxyClient } from './module';\n\nexport async function buildHTTPClientConfigForProxy(\n url: string,\n) : Promise<ClientRequestConfig> {\n const connectionString = getProxyForUrl(url);\n if (connectionString) {\n const connectionDetails = parseProxyConnectionString(connectionString);\n const proxyClient = new ProxyClient({\n host: connectionDetails.host,\n port: connectionDetails.port || 3128,\n ...(connectionDetails.auth.username ? { user: connectionDetails.auth.username } : {}),\n ...(connectionDetails.auth.password ? { password: connectionDetails.auth.password } : {}),\n });\n\n const agent = await proxyClient.createAgent(url);\n\n return {\n httpAgent: agent,\n httpsAgent: agent,\n proxy: false,\n };\n }\n\n return {};\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { SmtpConfig } from '../type';\n\nlet instance : SmtpConfig | string | undefined;\n\nexport function hasSmtpConfig() {\n return !!instance;\n}\n\nexport function setSmtpConfig(value: SmtpConfig | string | undefined) {\n instance = value;\n}\n\nexport function useSmtpConfig() : SmtpConfig | string {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = {};\n\n return instance;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Transporter } from 'nodemailer';\nimport { createTransport } from 'nodemailer';\nimport type { SmtpConfig } from './type';\nimport { useLogger } from '../logger';\n\nexport function createSmtpClient(options?: SmtpConfig | string) : Transporter {\n let transport : Transporter;\n\n options = options || {};\n\n if (typeof options === 'string') {\n transport = createTransport(options);\n } else if (options.connectionString) {\n transport = createTransport(options.connectionString);\n } else {\n let auth: Record<string, any> | undefined;\n if (options.user && options.password) {\n auth = {\n type: 'login',\n user: options.user,\n pass: options.password,\n };\n }\n\n transport = createTransport({\n host: options.host,\n port: options.port,\n auth,\n secure: options.ssl,\n opportunisticTLS: options.starttls,\n tls: {\n rejectUnauthorized: false,\n },\n });\n }\n\n transport.on('error', (e) => {\n useLogger().error(e.message);\n });\n\n return transport;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Transporter } from 'nodemailer';\nimport { createTestAccount } from 'nodemailer';\nimport { createSmtpClient } from './module';\nimport { useSmtpConfig } from './config';\nimport type { SmtpConfig } from './type';\n\nlet instance : Transporter | undefined;\n\nexport async function useSMTPClient() : Promise<Transporter> {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n let options : SmtpConfig | string;\n if (process.env.NODE_ENV === 'test') {\n const testAccount = await createTestAccount();\n\n options = {\n host: 'smtp.ethereal.email',\n port: 587,\n ssl: false,\n user: testAccount.user,\n password: testAccount.pass,\n };\n } else {\n options = useSmtpConfig();\n }\n\n instance = createSmtpClient(options);\n\n return instance;\n}\n"],"names":["hasProcessEnv","key","keys","Array","isArray","i","length","hasOwnProperty","process","env","readFromProcessEnv","alt","readBoolFromProcessEnv","value","readBoolOrStringFromProcessEnv","undefined","readIntFromProcessEnv","intValue","parseInt","Number","isNaN","obj","prop","Object","prototype","call","buildWorkingDirectoryPathsForConfigFile","cwd","writableDirectoryPath","path","isAbsolute","join","push","readConfigFile","context","arr","locations","locateMany","content","file","load","fileExport","getModuleExport","isObject","root","name","split","merge","compare","hashedValue","compareMethod","hash","str","saltOrRounds","hashMethod","KeyPairKind","PRIVATE","PUBLIC","isKeyPair","data","privateKey","publicKey","isKeyPairWithPublicKey","extendKeyPairOptions","options","directory","resolve","type","modulusLength","privateKeyEncoding","format","publicKeyEncoding","passphrase","cipher","buildKeyFileName","parts","privateName","privateExtension","startsWith","slice","publicName","publicExtension","decryptRSAPrivateKey","createPrivateKey","export","Buffer","from","toString","saveKeyPair","keyPair","fs","promises","mkdir","recursive","Promise","all","map","writeFile","createKeyPair","reject","callback","err","generateKeyPair","save","deleteKeyPair","privateKeyPath","publicKeyPath","filePath","stat","e","rm","loadKeyPair","privateKeyBuffer","readFile","publicKeyBuffer","publicKeyObject","createPublicKey","stringOrBuffer","keyPairCache","useKeyPair","handleJWTError","TokenError","expired","date","notActiveBefore","message","payloadInvalid","previous","decorateMessage","logMessage","decodeToken","token","decode","signToken","payload","expiresIn","KeyType","RSA","EC","algorithm","sign","OCT","secret","verifyToken","algorithms","verify","transformDomainEventData","input","Date","toISOString","buildDomainEventChannelName","id","publishDomainRedisEvent","destinations","hasClient","hasConfig","json","JSON","stringify","client","useClient","pipeline","namespace","keyPrefix","channel","publish","event","DomainEventName","CREATED","exec","instance","useSocketEmitter","Emitter","publishDomainSocketEvent","emitter","of","roomName","fullEventName","buildDomainEventFullName","in","emit","meta","roomId","publishDomainEvent","VoidLogger","error","warn","info","http","verbose","debug","useLogger","setLogger","logger","ProxyClient","createAgent","headers","user","password","urlParsed","URL","request","host","port","method","hostname","on","res","socket","statusCode","https","Agent","agentOptions","Error","end","constructor","buildHTTPClientConfigForProxy","url","connectionString","getProxyForUrl","connectionDetails","parseProxyConnectionString","proxyClient","auth","username","agent","httpAgent","httpsAgent","proxy","hasSmtpConfig","setSmtpConfig","useSmtpConfig","createSmtpClient","transport","createTransport","pass","secure","ssl","opportunisticTLS","starttls","tls","rejectUnauthorized","useSMTPClient","NODE_ENV","testAccount","createTestAccount"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@authup/server-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"description": "Common server services and utilities.",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./package.json": "./package.json",
|
|
@@ -61,19 +61,17 @@
|
|
|
61
61
|
"smob": "^1.0.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@authup/core": "^0.
|
|
65
|
-
"@hapic/vault": "^1.5.0",
|
|
64
|
+
"@authup/core": "^0.30.0",
|
|
66
65
|
"@types/bcrypt": "^5.0.0",
|
|
67
66
|
"@types/proxy-from-env": "^1.0.1",
|
|
68
67
|
"redis-extension": "^1.3.0"
|
|
69
68
|
},
|
|
70
69
|
"peerDependencies": {
|
|
71
|
-
"@authup/core": "^0.
|
|
72
|
-
"@hapic/vault": "^1.5.0",
|
|
70
|
+
"@authup/core": "^0.29.0",
|
|
73
71
|
"redis-extension": "^1.2.x"
|
|
74
72
|
},
|
|
75
73
|
"publishConfig": {
|
|
76
74
|
"access": "public"
|
|
77
75
|
},
|
|
78
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "3937982111fb884d5b9aede20d09f1bfb3720e57"
|
|
79
77
|
}
|
package/dist/domains/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domains/index.ts"],"names":[],"mappings":"AAOA,cAAc,SAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domains/robot/index.ts"],"names":[],"mappings":"AAOA,cAAc,SAAS,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { Robot } from '@authup/core';
|
|
2
|
-
export declare function saveRobotCredentialsToVault(entity: Pick<Robot, 'id' | 'secret' | 'name'>): Promise<void>;
|
|
3
|
-
export declare function removeRobotCredentialsFromVault(entity: Pick<Robot, 'name'>): Promise<void>;
|
|
4
|
-
export declare function findRobotCredentialsInVault(entity: Pick<Robot, 'name'>): Promise<Pick<Robot, 'id' | 'secret'> | undefined>;
|
|
5
|
-
//# sourceMappingURL=vault.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../../src/domains/robot/vault.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAG1C,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC,iBAW9F;AAED,wBAAsB,+BAA+B,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,iBAQhF;AAED,wBAAsB,2BAA2B,CAC7C,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,QAAQ,CAAC,GAAG,SAAS,CAAC,CAapD"}
|
package/dist/vault/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vault/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC"}
|
package/dist/vault/module.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/vault/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKhD,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,QAMhD;AAED,wBAAgB,cAAc,YAE7B"}
|