@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.
@@ -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?: ('RS256' | 'RS384' | 'RS512' | 'PS256' | 'PS384' | 'PS512')[];
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,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,GACzC,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;IAC/B,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,UAAU,CAAC,EAAE,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;IAC7C,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,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
+ {"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,3 +1,4 @@
1
1
  import type { KeyPair } from '../type';
2
2
  export declare function isKeyPair(data: unknown): data is KeyPair;
3
+ export declare function isKeyPairWithPublicKey(data: unknown): data is Omit<KeyPair, 'privateKey'>;
3
4
  //# sourceMappingURL=check.d.ts.map
@@ -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,CAKzD"}
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 typeof data === 'object' && data !== null && core.hasOwnProperty(data, 'privateKey') && core.hasOwnProperty(data, 'publicKey');
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 } = isKeyPair(keyPair) ? keyPair : await useKeyPair(keyPair);
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;
@@ -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
@@ -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,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,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 typeof data === 'object' && data !== null && hasOwnProperty$1(data, 'privateKey') && hasOwnProperty$1(data, 'publicKey');
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 } = isKeyPair(keyPair) ? keyPair : await useKeyPair(keyPair);
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
- function setVaultConfig(input) {
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
@@ -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.29.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.29.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.x",
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": "c5eeda0799fdc4245ecbcac6fceaae33090b1c62"
76
+ "gitHead": "3937982111fb884d5b9aede20d09f1bfb3720e57"
79
77
  }
@@ -1,2 +0,0 @@
1
- export * from './robot';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domains/index.ts"],"names":[],"mappings":"AAOA,cAAc,SAAS,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './vault';
2
- //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -1,2 +0,0 @@
1
- export * from './module';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vault/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { ConfigInput } from '@hapic/vault';
2
- export declare function setVaultConfig(input: ConfigInput): void;
3
- export declare function hasVaultConfig(): boolean;
4
- //# sourceMappingURL=module.d.ts.map
@@ -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"}