@authup/server-kit 1.0.0-beta.30 → 1.0.0-beta.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/crypto/key/asymmetric/module.d.ts.map +1 -1
- package/dist/crypto/key/symmetric/normalize.d.ts.map +1 -1
- package/dist/domain-event/socket/module.d.ts.map +1 -1
- package/dist/index.mjs +37 -13
- package/dist/index.mjs.map +1 -1
- package/dist/services/cache/adapters/memory.d.ts +1 -0
- package/dist/services/cache/adapters/memory.d.ts.map +1 -1
- package/dist/services/cache/adapters/redis.d.ts +1 -0
- package/dist/services/cache/adapters/redis.d.ts.map +1 -1
- package/dist/services/cache/types.d.ts +1 -0
- package/dist/services/cache/types.d.ts.map +1 -1
- package/dist/services/logger/module.d.ts +1 -0
- package/dist/services/logger/module.d.ts.map +1 -1
- package/dist/services/logger/singleton.d.ts.map +1 -1
- package/dist/services/logger/types.d.ts +1 -1
- package/dist/services/logger/types.d.ts.map +1 -1
- package/dist/services/redis/factory.d.ts.map +1 -1
- package/dist/services/redis/module.d.ts +1 -1
- package/dist/services/redis/module.d.ts.map +1 -1
- package/dist/services/vault/singleton.d.ts.map +1 -1
- package/package.json +19 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/crypto/key/asymmetric/module.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/crypto/key/asymmetric/module.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAU1D,qBAAa,aAAc,SAAQ,OAAO;IAChC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;WAgBjB,OAAO,CAAC,GAAG,EAAE,0BAA0B,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;WAaxE,UAAU,CACnB,GAAG,EAAE,0BAA0B,CAAC,MAAM,CAAC,GACvC,OAAO,CAAC,aAAa,CAAC;WASb,eAAe,CACxB,GAAG,EAAE,0BAA0B,CAAC,WAAW,CAAC,GAC5C,OAAO,CAAC,aAAa,CAAC;IAgB1B,MAAM,CAAC,iCAAiC,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE;;;;;;;;;CA6ClE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../src/crypto/key/symmetric/normalize.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACR,yBAAyB,
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../src/crypto/key/symmetric/normalize.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACR,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EACjC,MAAM,SAAS,CAAC;AAEjB,wBAAgB,kCAAkC,CAC9C,KAAK,EAAE,8BAA8B,GACrC,yBAAyB,CAY5B;AAED,wBAAgB,kCAAkC,CAC9C,KAAK,EAAE,8BAA8B,GACrC,yBAAyB,CAS5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/domain-event/socket/module.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAGhF,qBAAa,0BAA2B,YAAW,qBAAqB;IACpE,SAAS,CAAC,MAAM,EAAG,OAAO,CAAC;gBAEf,KAAK,EAAE,sBAAsB;IAKnC,OAAO,CAAC,GAAG,EAAE,yBAAyB,GAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/domain-event/socket/module.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAGhF,qBAAa,0BAA2B,YAAW,qBAAqB;IACpE,SAAS,CAAC,MAAM,EAAG,OAAO,CAAC;gBAEf,KAAK,EAAE,sBAAsB;IAKnC,OAAO,CAAC,GAAG,EAAE,yBAAyB,GAAI,OAAO,CAAC,IAAI,CAAC;CAwChE"}
|
package/dist/index.mjs
CHANGED
|
@@ -277,7 +277,7 @@ class AsymmetricKey extends BaseKey {
|
|
|
277
277
|
}
|
|
278
278
|
|
|
279
279
|
function isAsymmetricAlgorithm(input) {
|
|
280
|
-
return Object.values(CryptoAsymmetricAlgorithm).
|
|
280
|
+
return Object.values(CryptoAsymmetricAlgorithm).includes(input);
|
|
281
281
|
}
|
|
282
282
|
|
|
283
283
|
async function createAsymmetricKeyPair(options) {
|
|
@@ -299,7 +299,7 @@ async function createAsymmetricKeyPair(options) {
|
|
|
299
299
|
}({});
|
|
300
300
|
|
|
301
301
|
function isSymmetricAlgorithm(input) {
|
|
302
|
-
return Object.values(SymmetricAlgorithm).
|
|
302
|
+
return Object.values(SymmetricAlgorithm).includes(input);
|
|
303
303
|
}
|
|
304
304
|
|
|
305
305
|
function getKeyUsagesForSymmetricAlgorithm(name) {
|
|
@@ -410,7 +410,7 @@ async function createSymmetricKey(input) {
|
|
|
410
410
|
x5t: header.x5CertThumbprint,
|
|
411
411
|
'x5t#S256': header.x5TS256CertThumbprint,
|
|
412
412
|
};
|
|
413
|
-
*/ } catch
|
|
413
|
+
*/ } catch {
|
|
414
414
|
throw JWTError.headerInvalid('The token header could not be extracted.');
|
|
415
415
|
}
|
|
416
416
|
}
|
|
@@ -427,7 +427,7 @@ async function createSymmetricKey(input) {
|
|
|
427
427
|
try {
|
|
428
428
|
const payload = atob(payloadBase64);
|
|
429
429
|
return JSON.parse(payload);
|
|
430
|
-
} catch
|
|
430
|
+
} catch {
|
|
431
431
|
throw JWTError.payloadInvalid('The token payload could not be extracted.');
|
|
432
432
|
}
|
|
433
433
|
}
|
|
@@ -688,6 +688,14 @@ class MemoryCache {
|
|
|
688
688
|
...options || {}
|
|
689
689
|
});
|
|
690
690
|
}
|
|
691
|
+
async pop(key) {
|
|
692
|
+
if (this.instance.has(key)) {
|
|
693
|
+
const output = this.instance.get(key);
|
|
694
|
+
this.instance.delete(key);
|
|
695
|
+
return output;
|
|
696
|
+
}
|
|
697
|
+
return null;
|
|
698
|
+
}
|
|
691
699
|
async has(key) {
|
|
692
700
|
return this.instance.has(key);
|
|
693
701
|
}
|
|
@@ -707,8 +715,8 @@ class MemoryCache {
|
|
|
707
715
|
this.instance.delete(key);
|
|
708
716
|
}
|
|
709
717
|
async dropMany(keys) {
|
|
710
|
-
for(
|
|
711
|
-
this.instance.delete(
|
|
718
|
+
for (const key of keys){
|
|
719
|
+
this.instance.delete(key);
|
|
712
720
|
}
|
|
713
721
|
}
|
|
714
722
|
async clear(options = {}) {
|
|
@@ -767,6 +775,17 @@ class RedisCache {
|
|
|
767
775
|
}
|
|
768
776
|
return null;
|
|
769
777
|
}
|
|
778
|
+
async pop(key) {
|
|
779
|
+
const raw = await this.client.getdel(key);
|
|
780
|
+
if (!raw) {
|
|
781
|
+
return null;
|
|
782
|
+
}
|
|
783
|
+
try {
|
|
784
|
+
return JSON.parse(raw);
|
|
785
|
+
} catch {
|
|
786
|
+
return null;
|
|
787
|
+
}
|
|
788
|
+
}
|
|
770
789
|
async has(key) {
|
|
771
790
|
const output = await this.get(key);
|
|
772
791
|
return !!output;
|
|
@@ -781,8 +800,8 @@ class RedisCache {
|
|
|
781
800
|
}
|
|
782
801
|
async dropMany(keys) {
|
|
783
802
|
const pipeline = this.client.pipeline();
|
|
784
|
-
for(
|
|
785
|
-
pipeline.del(
|
|
803
|
+
for (const key of keys){
|
|
804
|
+
pipeline.del(key);
|
|
786
805
|
}
|
|
787
806
|
await pipeline.exec();
|
|
788
807
|
}
|
|
@@ -790,8 +809,8 @@ class RedisCache {
|
|
|
790
809
|
if (options.prefix) {
|
|
791
810
|
const pipeline = this.client.pipeline();
|
|
792
811
|
const keys = await this.client.keys(`${options.prefix}*`);
|
|
793
|
-
for(
|
|
794
|
-
pipeline.del(
|
|
812
|
+
for (const key of keys){
|
|
813
|
+
pipeline.del(key);
|
|
795
814
|
}
|
|
796
815
|
await pipeline.exec();
|
|
797
816
|
return;
|
|
@@ -804,6 +823,11 @@ function buildCacheKey(options) {
|
|
|
804
823
|
return buildKeyPath(options);
|
|
805
824
|
}
|
|
806
825
|
|
|
826
|
+
function createNoopLogger() {
|
|
827
|
+
return createLogger$1({
|
|
828
|
+
silent: true
|
|
829
|
+
});
|
|
830
|
+
}
|
|
807
831
|
function createLogger(context) {
|
|
808
832
|
let items;
|
|
809
833
|
const cwd = context.directory || process.cwd();
|
|
@@ -872,8 +896,8 @@ function useVaultClient() {
|
|
|
872
896
|
|
|
873
897
|
function transformDomainEventData(input) {
|
|
874
898
|
const keys = Object.keys(input);
|
|
875
|
-
for(
|
|
876
|
-
const key =
|
|
899
|
+
for (const key_ of keys){
|
|
900
|
+
const key = key_;
|
|
877
901
|
const value = input[key];
|
|
878
902
|
if (!isObject$1(value)) {
|
|
879
903
|
continue;
|
|
@@ -960,5 +984,5 @@ class DomainEventSocketPublisher {
|
|
|
960
984
|
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
961
985
|
}
|
|
962
986
|
|
|
963
|
-
export { AsymmetricKey, BaseKey, CryptoAsymmetricAlgorithm, DomainEventPublisher, DomainEventRedisPublisher, DomainEventSocketPublisher, MemoryCache, RedisCache, SymmetricAlgorithm, SymmetricKey, buildCacheKey, compare, createAsymmetricKeyPair, createLogger, createRedisClient, createSymmetricKey, decodePemToPKCS8, decodePemToSpki, encodePKCS8ToPEM, encodeSPKIToPem, extractTokenHeader, extractTokenPayload, getKeyUsagesForAsymmetricAlgorithm, getKeyUsagesForSymmetricAlgorithm, hasOwnProperty, hash, isAsymmetricAlgorithm, isLoggerUsable, isRedisClient, isSymmetricAlgorithm, isVaultClientUsable, normalizeAsymmetricKeyImportOptions, normalizeAsymmetricKeyPairCreateOptions, setLogger, setLoggerFactory, setVaultFactory, signToken, useLogger, useVaultClient, verifyToken };
|
|
987
|
+
export { AsymmetricKey, BaseKey, CryptoAsymmetricAlgorithm, DomainEventPublisher, DomainEventRedisPublisher, DomainEventSocketPublisher, MemoryCache, RedisCache, SymmetricAlgorithm, SymmetricKey, buildCacheKey, compare, createAsymmetricKeyPair, createLogger, createNoopLogger, createRedisClient, createSymmetricKey, decodePemToPKCS8, decodePemToSpki, encodePKCS8ToPEM, encodeSPKIToPem, extractTokenHeader, extractTokenPayload, getKeyUsagesForAsymmetricAlgorithm, getKeyUsagesForSymmetricAlgorithm, hasOwnProperty, hash, isAsymmetricAlgorithm, isLoggerUsable, isRedisClient, isSymmetricAlgorithm, isVaultClientUsable, normalizeAsymmetricKeyImportOptions, normalizeAsymmetricKeyPairCreateOptions, setLogger, setLoggerFactory, setVaultFactory, signToken, useLogger, useVaultClient, verifyToken };
|
|
964
988
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/crypto/hash/compare.ts","../src/crypto/hash/hash.ts","../src/crypto/key/asymmetric/constants.ts","../src/crypto/key/base.ts","../src/crypto/key/asymmetric/helpers/wrap.ts","../src/crypto/key/asymmetric/key-usages.ts","../src/crypto/key/asymmetric/normalize.ts","../src/crypto/key/asymmetric/module.ts","../src/crypto/key/asymmetric/check.ts","../src/crypto/key/asymmetric/create.ts","../src/crypto/key/symmetric/constants.ts","../src/crypto/key/symmetric/check.ts","../src/crypto/key/symmetric/key-usages.ts","../src/crypto/key/symmetric/normalize.ts","../src/crypto/key/symmetric/module.ts","../src/crypto/key/symmetric/create.ts","../src/crypto/json-web-token/extract.ts","../src/crypto/json-web-token/utils.ts","../src/crypto/json-web-token/sign/module.ts","../src/crypto/json-web-token/verify/module.ts","../src/domain-event/module.ts","../src/services/cache/adapters/memory.ts","../src/services/redis/check.ts","../src/services/redis/factory.ts","../src/services/cache/adapters/redis.ts","../src/services/cache/helper.ts","../src/services/logger/module.ts","../src/services/logger/singleton.ts","../src/services/vault/singleton.ts","../src/domain-event/utils.ts","../src/domain-event/redis/module.ts","../src/domain-event/socket/module.ts","../src/utils/has-property.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\n * Author 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 '@node-rs/bcrypt';\n\nexport async function compare(value: string, hashedValue: string) : Promise<boolean> {\n return compareMethod(value, hashedValue);\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 '@node-rs/bcrypt';\n\nexport async function hash(str: string, rounds: number = 10) : Promise<string> {\n return hashMethod(str, rounds);\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 CryptoAsymmetricAlgorithm {\n RSA_PSS = 'RSA-PSS',\n RSASSA_PKCS1_V1_5 = 'RSASSA-PKCS1-v1_5',\n RSA_OAEP = 'RSA-OAEP',\n ECDSA = 'ECDSA',\n ECDH = 'ECDH',\n}\n","/*\n * Copyright (c) 2025.\n * Author 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 { arrayBufferToBase64 } from '@authup/kit';\nimport { subtle } from 'uncrypto';\n\nexport abstract class BaseKey {\n protected key : CryptoKey;\n\n // ----------------------------------------------\n\n constructor(cryptoKey : CryptoKey) {\n this.key = cryptoKey;\n }\n\n // ----------------------------------------------\n\n async toArrayBuffer(): Promise<ArrayBuffer> {\n if (this.key.type === 'private') {\n return subtle.exportKey('pkcs8', this.key);\n }\n\n if (this.key.type === 'public') {\n return subtle.exportKey('spki', this.key);\n }\n\n return subtle.exportKey('raw', this.key);\n }\n\n async toUint8Array(): Promise<Uint8Array> {\n const arrayBuffer = await this.toArrayBuffer();\n return new Uint8Array(arrayBuffer);\n }\n\n async toBase64() : Promise<string> {\n const arrayBuffer = await this.toArrayBuffer();\n return arrayBufferToBase64(arrayBuffer);\n }\n\n async toJWK() : Promise<JsonWebKey> {\n return subtle.exportKey('jwk', this.key);\n }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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\nfunction enc(\n type: 'PRIVATE KEY' | 'PUBLIC KEY',\n input: string,\n) {\n return `-----BEGIN ${type}-----\\n${input}\\n-----END ${type}-----`;\n}\n\nexport function encodePKCS8ToPEM(base64: string) {\n return enc('PRIVATE KEY', base64);\n}\n\nexport function encodeSPKIToPem(input: string) {\n return enc('PUBLIC KEY', input);\n}\n\n// ------------------------------------------------------------\n\nfunction dec(\n type: 'PRIVATE KEY' | 'PUBLIC KEY',\n input: string,\n) {\n input = input.replace(`-----BEGIN ${type}-----\\n`, '');\n\n input = input.replace(`\\n-----END ${type}-----\\n`, '');\n input = input.replace(`-----END ${type}-----\\n`, '');\n input = input.replace(`\\n-----END ${type}-----`, '');\n\n return input;\n}\n\nexport function decodePemToPKCS8(input: string) {\n return dec('PRIVATE KEY', input);\n}\n\nexport function decodePemToSpki(input: string) {\n return dec('PUBLIC KEY', input);\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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 { CryptoAsymmetricAlgorithm } from './constants';\n\n/**\n * @see https://nodejs.org/api/webcrypto.html#cryptokeyusages\n */\nexport function getKeyUsagesForAsymmetricAlgorithm(\n name: string,\n format?: Exclude<KeyFormat, 'jwk'>,\n) : KeyUsage[] {\n if (\n name === CryptoAsymmetricAlgorithm.RSA_PSS ||\n name === CryptoAsymmetricAlgorithm.ECDSA ||\n name === CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5\n ) {\n if (format === 'spki') {\n return ['verify'];\n } if (format === 'pkcs8') {\n return ['sign'];\n }\n\n return ['sign', 'verify'];\n }\n\n if (name === CryptoAsymmetricAlgorithm.ECDH) {\n if (format === 'spki') {\n return [];\n }\n\n return [\n 'deriveKey',\n 'deriveBits',\n ];\n }\n\n if (name === CryptoAsymmetricAlgorithm.RSA_OAEP) {\n if (format === 'spki') {\n return ['encrypt'];\n } if (format === 'pkcs8') {\n return ['decrypt'];\n }\n\n return ['encrypt', 'decrypt'];\n }\n\n throw new SyntaxError(`Key usages can not be determined for asymmetric algorithm: ${name}`);\n}\n","/*\n * Copyright (c) 2024.\n * Author 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 { CryptoAsymmetricAlgorithm } from './constants';\nimport type {\n AsymmetricKeyImportOptionsInput,\n AsymmetricKeyPairCreateOptions,\n AsymmetricKeyPairCreateOptionsInput,\n AsymmetricKeyPairImportOptions,\n} from './types';\n\nexport function normalizeAsymmetricKeyPairCreateOptions(\n options: AsymmetricKeyPairCreateOptionsInput,\n) : AsymmetricKeyPairCreateOptions {\n let optionsNormalized : AsymmetricKeyPairCreateOptions;\n switch (options.name) {\n case CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5:\n case CryptoAsymmetricAlgorithm.RSA_PSS:\n case CryptoAsymmetricAlgorithm.RSA_OAEP: {\n optionsNormalized = {\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: 'SHA-256',\n ...options,\n };\n break;\n }\n case CryptoAsymmetricAlgorithm.ECDSA:\n case CryptoAsymmetricAlgorithm.ECDH: {\n optionsNormalized = {\n namedCurve: 'P-256',\n ...options,\n };\n }\n }\n\n return optionsNormalized;\n}\n\nexport function normalizeAsymmetricKeyImportOptions(\n options: AsymmetricKeyImportOptionsInput,\n) : AsymmetricKeyPairImportOptions {\n let optionsNormalized : AsymmetricKeyPairImportOptions;\n switch (options.name) {\n case CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5:\n case CryptoAsymmetricAlgorithm.RSA_PSS:\n case CryptoAsymmetricAlgorithm.RSA_OAEP: {\n optionsNormalized = {\n hash: 'SHA-256',\n ...options,\n };\n break;\n }\n case CryptoAsymmetricAlgorithm.ECDSA:\n case CryptoAsymmetricAlgorithm.ECDH: {\n optionsNormalized = {\n namedCurve: 'P-256',\n ...options,\n };\n }\n }\n\n return optionsNormalized;\n}\n","/*\n * Copyright (c) 2025.\n * Author 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 { base64ToArrayBuffer } from '@authup/kit';\nimport { JWTAlgorithm } from '@authup/specs';\nimport { subtle } from 'uncrypto';\nimport { BaseKey } from '../base';\nimport { CryptoAsymmetricAlgorithm } from './constants';\nimport type { AsymmetricKeyImportContext } from './types';\nimport {\n decodePemToPKCS8, decodePemToSpki, encodePKCS8ToPEM, encodeSPKIToPem,\n} from './helpers';\nimport { getKeyUsagesForAsymmetricAlgorithm } from './key-usages';\nimport { normalizeAsymmetricKeyImportOptions } from './normalize';\n\nexport class AsymmetricKey extends BaseKey {\n async toPem(): Promise<string> {\n const base64 = await this.toBase64();\n\n if (this.key.type === 'public') {\n return encodeSPKIToPem(base64);\n }\n\n if (this.key.type === 'private') {\n return encodePKCS8ToPEM(base64);\n }\n\n throw new Error(`${this.key.type} can not be converted to pem.`);\n }\n\n // ----------------------------------------------------------------\n\n static async fromPem(ctx: AsymmetricKeyImportContext<string>): Promise<AsymmetricKey> {\n if (ctx.format === 'pkcs8') {\n return AsymmetricKey.fromBase64({ ...ctx, key: decodePemToPKCS8(ctx.key) });\n }\n return AsymmetricKey.fromBase64({ ...ctx, key: decodePemToSpki(ctx.key) });\n }\n\n static async fromBase64(\n ctx: AsymmetricKeyImportContext<string>,\n ) : Promise<AsymmetricKey> {\n const arrayBuffer = base64ToArrayBuffer(ctx.key);\n\n return AsymmetricKey.fromArrayBuffer({\n ...ctx,\n key: arrayBuffer,\n });\n }\n\n static async fromArrayBuffer(\n ctx: AsymmetricKeyImportContext<ArrayBuffer>,\n ) : Promise<AsymmetricKey> {\n const normalizedOptions = normalizeAsymmetricKeyImportOptions(ctx.options);\n\n const cryptoKey = await subtle.importKey(\n ctx.format,\n ctx.key,\n normalizedOptions,\n true,\n getKeyUsagesForAsymmetricAlgorithm(normalizedOptions.name, ctx.format),\n );\n\n return new AsymmetricKey(cryptoKey);\n }\n\n // ----------------------------------------------------------------\n\n static buildImportOptionsForJWTAlgorithm(alg: `${JWTAlgorithm}`) {\n if (alg === JWTAlgorithm.RS256) {\n return {\n name: CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5,\n hash: 'SHA-256',\n };\n }\n\n if (alg === JWTAlgorithm.RS384) {\n return {\n name: CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5,\n hash: 'SHA-384',\n };\n }\n\n if (alg === JWTAlgorithm.RS512) {\n return {\n name: CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5,\n hash: 'SHA-512',\n };\n }\n\n if (alg === JWTAlgorithm.ES256) {\n return {\n name: CryptoAsymmetricAlgorithm.ECDSA,\n namedCurve: 'P-256',\n };\n }\n\n if (alg === JWTAlgorithm.ES384) {\n return {\n name: CryptoAsymmetricAlgorithm.ECDSA,\n namedCurve: 'P-384',\n };\n }\n\n if (alg === JWTAlgorithm.ES512) {\n return {\n name: CryptoAsymmetricAlgorithm.ECDSA,\n namedCurve: 'P-521',\n };\n }\n\n throw new Error(`Signature algorithm ${alg} is not supported.`);\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author 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 { CryptoAsymmetricAlgorithm } from './constants';\n\nexport function isAsymmetricAlgorithm(input: string) : input is CryptoAsymmetricAlgorithm {\n return (Object.values(CryptoAsymmetricAlgorithm) as string[]).indexOf(input) !== -1;\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { subtle } from 'uncrypto';\nimport { getKeyUsagesForAsymmetricAlgorithm } from './key-usages';\nimport { normalizeAsymmetricKeyPairCreateOptions } from './normalize';\nimport type { AsymmetricKeyPairCreateOptionsInput } from './types';\n\nexport async function createAsymmetricKeyPair(options: AsymmetricKeyPairCreateOptionsInput) : Promise<CryptoKeyPair> {\n const optionsNormalized = normalizeAsymmetricKeyPairCreateOptions(options);\n return subtle.generateKey(\n optionsNormalized,\n true,\n getKeyUsagesForAsymmetricAlgorithm(optionsNormalized.name),\n );\n}\n","/*\n * Copyright (c) 2024.\n * Author 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 SymmetricAlgorithm {\n HMAC = 'HMAC',\n AES_CTR = 'AES-CTR',\n AES_CBC = 'AES-CBC',\n AES_GCM = 'AES-GCM',\n}\n","/*\n * Copyright (c) 2024.\n * Author 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 { SymmetricAlgorithm } from './constants';\n\nexport function isSymmetricAlgorithm(input: string) : input is SymmetricAlgorithm {\n return (Object.values(SymmetricAlgorithm) as string[]).indexOf(input) !== -1;\n}\n","/*\n * Copyright (c) 2024.\n * Author 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 { SymmetricAlgorithm } from './constants';\n\nexport function getKeyUsagesForSymmetricAlgorithm(name: string) : KeyUsage[] {\n /**\n * @see https://nodejs.org/api/webcrypto.html#cryptokeyusages\n */\n if (name === SymmetricAlgorithm.HMAC) {\n return [\n 'sign',\n 'verify',\n ];\n }\n\n if (\n name === SymmetricAlgorithm.AES_CBC ||\n name === SymmetricAlgorithm.AES_GCM ||\n name === SymmetricAlgorithm.AES_CTR\n ) {\n return [\n 'encrypt',\n 'decrypt',\n ];\n }\n\n throw new SyntaxError(`Key usages can not be determined for symmetric algorithm: ${name}`);\n}\n","/*\n * Copyright (c) 2024.\n * Author 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 { SymmetricAlgorithm } from './constants';\nimport type {\n SymmetricKeyCreateOptions, SymmetricKeyCreateOptionsInput, SymmetricKeyImportOptions, SymmetricKeyImportOptionsInput,\n} from './types';\n\nexport function normalizeSymmetricKeyCreateOptions(\n input: SymmetricKeyCreateOptionsInput,\n) : SymmetricKeyCreateOptions {\n if (input.name === SymmetricAlgorithm.HMAC) {\n return {\n hash: 'SHA-256',\n ...input,\n };\n }\n\n return {\n length: 256,\n name: input.name,\n };\n}\n\nexport function normalizeSymmetricKeyImportOptions(\n input: SymmetricKeyImportOptionsInput,\n) : SymmetricKeyImportOptions {\n if (input.name === SymmetricAlgorithm.HMAC) {\n return {\n hash: 'SHA-256',\n ...input,\n };\n }\n\n return input;\n}\n","/*\n * Copyright (c) 2025.\n * Author 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 { base64ToArrayBuffer } from '@authup/kit';\nimport { JWTAlgorithm } from '@authup/specs';\nimport { subtle } from 'uncrypto';\nimport { BaseKey } from '../base';\nimport { SymmetricAlgorithm } from './constants';\nimport { getKeyUsagesForSymmetricAlgorithm } from './key-usages';\nimport { normalizeSymmetricKeyImportOptions } from './normalize';\nimport type { SymmetricKeyImportContext, SymmetricKeyImportOptions } from './types';\n\nexport class SymmetricKey extends BaseKey {\n static async fromBase64(\n ctx: SymmetricKeyImportContext<string>,\n ) : Promise<SymmetricKey> {\n const arrayBuffer = base64ToArrayBuffer(ctx.key);\n\n return SymmetricKey.fromArrayBuffer({\n ...ctx,\n key: arrayBuffer,\n });\n }\n\n static async fromArrayBuffer(\n ctx: SymmetricKeyImportContext<ArrayBuffer>,\n ) : Promise<SymmetricKey> {\n const normalizedOptions : SymmetricKeyImportOptions = normalizeSymmetricKeyImportOptions(ctx.options);\n\n const cryptoKey = await subtle.importKey(\n ctx.format,\n ctx.key,\n normalizedOptions,\n true,\n getKeyUsagesForSymmetricAlgorithm(normalizedOptions.name),\n );\n\n return new SymmetricKey(cryptoKey);\n }\n\n static buildImportOptionsForJWTAlgorithm(alg: `${JWTAlgorithm}`) {\n if (alg === JWTAlgorithm.HS256) {\n return {\n name: SymmetricAlgorithm.HMAC,\n hash: 'SHA-256',\n };\n }\n\n if (alg === JWTAlgorithm.HS384) {\n return {\n name: SymmetricAlgorithm.HMAC,\n hash: 'SHA-384',\n };\n }\n\n if (alg === JWTAlgorithm.HS512) {\n return {\n name: SymmetricAlgorithm.HMAC,\n hash: 'SHA-512',\n };\n }\n\n throw new Error(`Signature algorithm ${alg} is not supported.`);\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { subtle } from 'uncrypto';\nimport { getKeyUsagesForSymmetricAlgorithm } from './key-usages';\nimport { normalizeSymmetricKeyCreateOptions } from './normalize';\nimport type { SymmetricKeyCreateOptionsInput } from './types';\n\nexport async function createSymmetricKey(input: SymmetricKeyCreateOptionsInput) : Promise<CryptoKey> {\n const optionsNormalized = normalizeSymmetricKeyCreateOptions(input);\n\n return subtle.generateKey(\n optionsNormalized,\n true,\n getKeyUsagesForSymmetricAlgorithm(optionsNormalized.name),\n );\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { JWTClaims, JWTHeader } from '@authup/specs';\nimport { JWTError } from '@authup/specs';\n\n/**\n * Decode a JWT token with no verification.\n *\n * @param token\n *\n * @throws JWTError\n */\nexport function extractTokenHeader(\n token: string,\n) : JWTHeader {\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw JWTError.invalid();\n }\n\n const [headerBase64] = parts;\n\n try {\n const payload = atob(headerBase64);\n\n return JSON.parse(payload);\n\n /*\n return {\n typ: 'JWT',\n alg: transformInternalToJWTAlgorithm(header.algorithm),\n cty: header.contentType,\n jku: header.jsonKeyUrl,\n kid: header.keyId,\n x5u: header.x5Url,\n x5c: header.x5CertChain,\n x5t: header.x5CertThumbprint,\n 'x5t#S256': header.x5TS256CertThumbprint,\n };\n */\n } catch (e) {\n throw JWTError.headerInvalid('The token header could not be extracted.');\n }\n}\n\n/**\n * @param token\n *\n * @throws JWTError\n */\nexport function extractTokenPayload(\n token: string,\n) : JWTClaims {\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw JWTError.invalid();\n }\n\n const [, payloadBase64] = parts;\n\n try {\n const payload = atob(payloadBase64);\n\n return JSON.parse(payload);\n } catch (e) {\n throw JWTError.payloadInvalid('The token payload could not be extracted.');\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { JWTAlgorithm, JWTError } from '@authup/specs';\nimport { Algorithm } from '@node-rs/jsonwebtoken';\nimport { isObject } from 'smob';\n\nexport function createErrorForJWTError(e: unknown) : JWTError {\n if (isObject(e)) {\n if (typeof e.name === 'string') {\n switch (e.name) {\n case 'TokenExpiredError': {\n return JWTError.expired();\n }\n case 'NotBeforeError': {\n if (typeof e.date === 'string' || e.date instanceof Date) {\n return JWTError.notActiveBefore(e.date);\n }\n break;\n }\n case 'JsonWebTokenError': {\n if (typeof e.message === 'string') {\n return JWTError.payloadInvalid(e.message);\n }\n\n break;\n }\n }\n }\n\n // @see https://github.com/Keats/jsonwebtoken/blob/master/src/errors.rs\n switch (e.message) {\n case 'ExpiredSignature': {\n return JWTError.expired();\n }\n case 'ImmatureSignature': {\n return JWTError.notActiveBefore();\n }\n case 'InvalidToken':\n case 'InvalidSignature': {\n return JWTError.payloadInvalid();\n }\n }\n }\n\n return new JWTError({\n cause: e as Error,\n logMessage: true,\n message: 'The JWT error could not be determined.',\n });\n}\n\nexport function transformJWTAlgorithmToInternal(algorithm: `${JWTAlgorithm}`) : Algorithm {\n switch (algorithm) {\n case JWTAlgorithm.HS256: {\n return Algorithm.HS256;\n }\n case JWTAlgorithm.HS384: {\n return Algorithm.HS384;\n }\n case JWTAlgorithm.HS512: {\n return Algorithm.HS512;\n }\n case JWTAlgorithm.RS256: {\n return Algorithm.RS256;\n }\n case JWTAlgorithm.RS384: {\n return Algorithm.RS384;\n }\n case JWTAlgorithm.RS512: {\n return Algorithm.RS512;\n }\n case JWTAlgorithm.ES256: {\n return Algorithm.ES256;\n }\n case JWTAlgorithm.ES384: {\n return Algorithm.ES384;\n }\n case JWTAlgorithm.PS256: {\n return Algorithm.PS256;\n }\n case JWTAlgorithm.PS384: {\n return Algorithm.PS384;\n }\n case JWTAlgorithm.PS512: {\n return Algorithm.PS512;\n }\n }\n\n throw new Error(`The algorithm ${algorithm} is not supported.`);\n}\n\nexport function transformInternalToJWTAlgorithm(input: Algorithm) : JWTAlgorithm {\n switch (input) {\n case Algorithm.HS256:\n return JWTAlgorithm.HS256;\n case Algorithm.HS384:\n return JWTAlgorithm.HS384;\n case Algorithm.HS512:\n return JWTAlgorithm.HS512;\n case Algorithm.RS256:\n return JWTAlgorithm.RS256;\n case Algorithm.RS384:\n return JWTAlgorithm.RS384;\n case Algorithm.RS512:\n return JWTAlgorithm.RS512;\n case Algorithm.ES256:\n return JWTAlgorithm.ES256;\n case Algorithm.ES384:\n return JWTAlgorithm.ES384;\n case Algorithm.PS256:\n return JWTAlgorithm.PS256;\n case Algorithm.PS384:\n return JWTAlgorithm.PS384;\n case Algorithm.PS512:\n return JWTAlgorithm.PS512;\n }\n\n throw new SyntaxError(`The algorithm ${input} is not supported.`);\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { JWKType, JWTError } from '@authup/specs';\nimport type { JWTClaims } from '@authup/specs';\nimport { Algorithm, sign } from '@node-rs/jsonwebtoken';\nimport { AsymmetricKey, SymmetricKey, encodePKCS8ToPEM } from '../../key';\nimport { transformJWTAlgorithmToInternal } from '../utils';\nimport type { TokenSignOptions } from './types';\n\nconst getUtcTimestamp = () => Math.floor(new Date().getTime() / 1000);\n\nexport async function signToken(claims: JWTClaims, context: TokenSignOptions): Promise<string> {\n if (typeof claims.exp !== 'number') {\n claims.exp = getUtcTimestamp() + 3600;\n }\n if (typeof claims.iat !== 'number') {\n claims.iat = getUtcTimestamp();\n }\n\n switch (context.type) {\n case JWKType.RSA:\n case JWKType.EC: {\n let algorithm : Algorithm;\n\n let key : string;\n if (typeof context.key === 'string') {\n key = encodePKCS8ToPEM(context.key);\n } else {\n const keyContainer = new AsymmetricKey(context.key);\n key = await keyContainer.toPem();\n }\n\n if (context.type === JWKType.RSA) {\n algorithm = context.algorithm ?\n transformJWTAlgorithmToInternal(context.algorithm) :\n Algorithm.RS256;\n } else {\n algorithm = context.algorithm ?\n transformJWTAlgorithmToInternal(context.algorithm) :\n Algorithm.ES256;\n }\n\n return sign(claims, key, {\n algorithm,\n keyId: context.keyId,\n });\n }\n case JWKType.OCT: {\n const algorithm : Algorithm = context.algorithm ?\n transformJWTAlgorithmToInternal(context.algorithm) :\n Algorithm.HS256;\n\n let key : string | Uint8Array;\n if (typeof context.key === 'string') {\n key = context.key;\n } else {\n const keyContainer = new SymmetricKey(context.key);\n key = await keyContainer.toUint8Array();\n }\n\n return sign(claims, key, {\n algorithm,\n keyId: context.keyId,\n });\n }\n }\n\n throw new JWTError();\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { JWKType, JWTError } from '@authup/specs';\nimport type { JWTClaims, OAuth2TokenPayload } from '@authup/specs';\nimport { Algorithm, verify } from '@node-rs/jsonwebtoken';\nimport { AsymmetricKey, SymmetricKey, encodeSPKIToPem } from '../../key';\nimport { createErrorForJWTError, transformJWTAlgorithmToInternal } from '../utils';\nimport type { TokenVerifyOptions } from './types';\n\n/**\n * Verify JWT.\n *\n * @param token\n * @param context\n *\n * @throws OAuth2Error\n */\nexport async function verifyToken(\n token: string,\n context: TokenVerifyOptions,\n) : Promise<OAuth2TokenPayload> {\n let promise : Promise<JWTClaims> | undefined;\n\n let output : JWTClaims | undefined;\n\n try {\n switch (context.type) {\n case JWKType.RSA:\n case JWKType.EC: {\n let algorithms : Algorithm[];\n\n if (context.type === JWKType.RSA) {\n algorithms = context.algorithms ?\n context.algorithms.map((algorithm) => transformJWTAlgorithmToInternal(algorithm)) :\n [\n Algorithm.RS256,\n Algorithm.RS384,\n Algorithm.RS512,\n Algorithm.PS256,\n Algorithm.PS384,\n Algorithm.PS512,\n ];\n } else {\n algorithms = context.algorithms ?\n context.algorithms.map((algorithm) => transformJWTAlgorithmToInternal(algorithm)) :\n [\n Algorithm.ES256,\n Algorithm.ES384,\n ];\n }\n\n let key : string;\n if (typeof context.key === 'string') {\n key = encodeSPKIToPem(context.key);\n } else {\n const keyContainer = new AsymmetricKey(context.key);\n key = await keyContainer.toPem();\n }\n\n promise = verify(token, key, {\n algorithms,\n validateNbf: true,\n });\n break;\n }\n case JWKType.OCT: {\n const algorithms : Algorithm[] = context.algorithms ?\n context.algorithms.map((algorithm) => transformJWTAlgorithmToInternal(algorithm)) :\n [\n Algorithm.HS256,\n Algorithm.HS384,\n Algorithm.HS512,\n ];\n\n let key : string | Uint8Array;\n if (typeof context.key === 'string') {\n key = context.key;\n } else {\n const keyContainer = new SymmetricKey(context.key);\n key = await keyContainer.toUint8Array();\n }\n\n promise = verify(token, key, {\n algorithms,\n validateNbf: true,\n });\n }\n }\n\n if (promise) {\n output = await promise;\n }\n } catch (e) {\n throw createErrorForJWTError(e);\n }\n\n if (!output) {\n throw new JWTError();\n }\n\n return output as OAuth2TokenPayload;\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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 { EventPayload } from '@authup/core-realtime-kit';\nimport type { DomainEventPublishContext, IDomainEventPublisher } from './type';\n\nexport class DomainEventPublisher implements IDomainEventPublisher {\n protected publishers : Set<IDomainEventPublisher>;\n\n constructor() {\n this.publishers = new Set<IDomainEventPublisher>();\n }\n\n mount(publisher: IDomainEventPublisher): void {\n this.publishers.add(publisher);\n }\n\n async publish<T extends EventPayload>(\n ctx: DomainEventPublishContext<T>,\n ) : Promise<void> {\n const publishers = this.publishers.values();\n while (true) {\n const it = publishers.next();\n if (it.done) {\n return;\n }\n\n await it.value.publish(ctx);\n }\n }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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 { TTLCacheOptions } from '@isaacs/ttlcache';\nimport { TTLCache } from '@isaacs/ttlcache';\nimport type { CacheClearOptions, CacheSetOptions, ICache } from '../types';\n\nexport class MemoryCache implements ICache {\n protected instance : TTLCache<string, unknown>;\n\n constructor(options: TTLCacheOptions<string, unknown> = {}) {\n this.instance = new TTLCache<string, unknown>({\n checkAgeOnGet: true,\n ttl: Infinity,\n ...(options || {}),\n });\n }\n\n async has(key: string) : Promise<boolean> {\n return this.instance.has(key);\n }\n\n async get<T =unknown>(key: string): Promise<T | null> {\n const output = await this.instance.get(key);\n if (output) {\n return output as T;\n }\n\n return null;\n }\n\n async set(key: string, value: unknown, options: CacheSetOptions): Promise<void> {\n this.instance.set(key, value, {\n ttl: options.ttl,\n });\n }\n\n async drop(key: string): Promise<void> {\n this.instance.delete(key);\n }\n\n async dropMany(keys: string[]) : Promise<void> {\n for (let i = 0; i < keys.length; i++) {\n this.instance.delete(keys[i]);\n }\n }\n\n async clear(options: CacheClearOptions = {}) : Promise<void> {\n if (options.prefix) {\n const keys = this.instance.keys();\n let iterator = keys.next();\n while (!iterator.done) {\n if (typeof iterator.value !== 'string') {\n continue;\n }\n\n if (iterator.value.startsWith(options.prefix)) {\n this.instance.delete(iterator.value);\n }\n\n iterator = keys.next();\n }\n\n return;\n }\n\n this.instance.clear();\n }\n}\n","/*\n * Copyright (c) 2025.\n * Author 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 'smob';\nimport type { RedisClient } from './module';\n\nexport function isRedisClient(data: unknown) : data is RedisClient {\n return isObject(data) &&\n typeof data.connect === 'function' &&\n typeof data.disconnect === 'function';\n}\n","/*\n * Copyright (c) 2025.\n * Author 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 { createClient } from 'redis-extension';\nimport { isRedisClient } from './check';\nimport type { RedisClient, RedisClientOptions } from './module';\n\nexport type RedisClientCreateInput = string | boolean | RedisClient | RedisClientOptions;\n\nexport function createRedisClient(input: RedisClientCreateInput) {\n if (typeof input === 'boolean') {\n return createClient({\n connectionString: 'redis://127.0.0.1',\n });\n }\n\n if (typeof input === 'string') {\n return createClient({\n connectionString: input,\n });\n }\n\n if (!isRedisClient(input)) {\n return createClient({\n options: input,\n });\n }\n\n return input;\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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 { Client } from 'redis-extension';\nimport { JsonAdapter } from 'redis-extension';\nimport type { RedisClient, RedisClientOptions } from '../../redis';\nimport { createRedisClient } from '../../redis';\nimport type { CacheClearOptions, CacheSetOptions, ICache } from '../types';\n\nexport class RedisCache implements ICache {\n protected client : Client;\n\n protected jsonAdapter : JsonAdapter;\n\n constructor(input: string | boolean | RedisClient | RedisClientOptions) {\n this.client = createRedisClient(input);\n this.jsonAdapter = new JsonAdapter(this.client);\n }\n\n async get(key: string): Promise<any> {\n const output = await this.jsonAdapter.get(key);\n if (output) {\n return output;\n }\n\n return null;\n }\n\n async has(key: string) : Promise<boolean> {\n const output = await this.get(key);\n\n return !!output;\n }\n\n async set(key: string, value: any, options: CacheSetOptions): Promise<void> {\n await this.jsonAdapter.set(key, value, {\n milliseconds: options.ttl,\n });\n }\n\n async drop(key: string): Promise<void> {\n await this.jsonAdapter.drop(key);\n }\n\n async dropMany(keys: string[]) : Promise<void> {\n const pipeline = this.client.pipeline();\n\n for (let i = 0; i < keys.length; i++) {\n pipeline.del(keys[i]);\n }\n\n await pipeline.exec();\n }\n\n async clear(options: CacheClearOptions = {}) : Promise<void> {\n if (options.prefix) {\n const pipeline = this.client.pipeline();\n\n const keys = await this.client.keys(`${options.prefix}*`);\n for (let i = 0; i < keys.length; i++) {\n pipeline.del(keys[i]);\n }\n\n await pipeline.exec();\n\n return;\n }\n await this.client.flushdb();\n }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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 { buildRedisKeyPath } from '../redis';\nimport type { CacheKeyBuildOptions } from './types';\n\nexport function buildCacheKey(options: CacheKeyBuildOptions) {\n return buildRedisKeyPath(options);\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 type { LoggerOptions } from 'winston';\nimport {\n createLogger as create, format, transports,\n} from 'winston';\nimport type { Logger, LoggerCreateContext } from './types';\n\nexport function createLogger(context: LoggerCreateContext) : Logger {\n let items : LoggerOptions['transports'];\n\n const cwd = context.directory || process.cwd();\n\n if (context.env === 'production') {\n items = [\n new transports.Console({\n level: 'info',\n }),\n new transports.File({\n filename: path.join(cwd, 'http.log'),\n level: 'http',\n maxsize: 10 * 1024 * 1024, // 10MB\n maxFiles: 5,\n }),\n new transports.File({\n filename: path.join(cwd, 'error.log'),\n level: 'warn',\n maxsize: 10 * 1024 * 1024, // 10MB\n maxFiles: 5,\n }),\n ];\n } else {\n items = [\n new transports.Console({\n level: 'debug',\n }),\n ];\n }\n\n // @see https://github.com/winstonjs/triple-beam/blob/master/config/npm.js\n return create({\n format: format.combine(\n format.errors({ stack: true }),\n format.timestamp(),\n format.colorize(),\n format.simple(),\n ),\n transports: items,\n });\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author 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 Factory, singa } from 'singa';\nimport type { Logger } from 'winston';\n\nconst instance = singa<Logger>({\n name: 'logger',\n});\n\nexport function setLoggerFactory(factory: Factory<Logger>) {\n instance.setFactory(factory);\n}\n\nexport function isLoggerUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function setLogger(input: Logger) {\n instance.set(input);\n}\n\nexport function useLogger() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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 { Factory } from 'singa';\nimport { singa } from 'singa';\nimport type { VaultClient } from '@hapic/vault';\n\nconst instance = singa<VaultClient>({\n name: 'vault',\n});\n\nexport function setVaultFactory(factory: Factory<VaultClient>) {\n instance.setFactory(factory);\n}\n\nexport function isVaultClientUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function useVaultClient() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author 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 { ObjectLiteral } from '@authup/kit';\nimport { isObject } from '@authup/kit';\nimport type { DomainEventChannelName } from './type';\n\nexport function transformDomainEventData<T extends ObjectLiteral>(input: T) : T {\n const keys = Object.keys(input);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i] as keyof T;\n\n const value = input[key] as T[keyof T];\n if (!isObject(value)) {\n continue;\n }\n\n if ((value as Record<string, any>) instanceof Date) {\n input[key] = value.toISOString() as T[keyof T];\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-2024.\n * Author 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 { Client } from 'redis-extension';\nimport type { RedisClientCreateInput } from '../../services';\nimport { createRedisClient } from '../../services';\nimport type { DomainEventPublishContext, IDomainEventPublisher } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport class DomainEventRedisPublisher implements IDomainEventPublisher {\n protected driver : Client;\n\n constructor(input: RedisClientCreateInput) {\n this.driver = createRedisClient(input);\n }\n\n async publish(ctx: DomainEventPublishContext) : Promise<void> {\n const data = JSON.stringify(transformDomainEventData(ctx.content));\n\n const pipeline = this.driver.pipeline();\n for (let i = 0; i < ctx.destinations.length; i++) {\n const { namespace } = ctx.destinations[i];\n const keyPrefix = (namespace ? `${namespace}:` : '');\n\n let key = keyPrefix + buildDomainEventChannelName(ctx.destinations[i].channel);\n pipeline.publish(key, data);\n\n if (typeof ctx.destinations[i].channel === 'function') {\n key = keyPrefix + buildDomainEventChannelName(ctx.destinations[i].channel, ctx.content.data.id);\n pipeline.publish(key, data);\n }\n }\n\n await pipeline.exec();\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { buildEventFullName } from '@authup/core-realtime-kit';\nimport { Emitter } from '@socket.io/redis-emitter';\nimport type { RedisClientCreateInput } from '../../services';\nimport { createRedisClient } from '../../services';\nimport type { DomainEventPublishContext, IDomainEventPublisher } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport class DomainEventSocketPublisher implements IDomainEventPublisher {\n protected driver : Emitter;\n\n constructor(input: RedisClientCreateInput) {\n const client = createRedisClient(input);\n this.driver = new Emitter(client);\n }\n\n async publish(ctx: DomainEventPublishContext) : Promise<void> {\n ctx.content = transformDomainEventData(ctx.content);\n\n for (let i = 0; i < ctx.destinations.length; i++) {\n const destination = ctx.destinations[i];\n\n let emitter : Emitter;\n\n if (destination.namespace) {\n emitter = this.driver.of(destination.namespace);\n } else {\n emitter = this.driver;\n }\n\n let roomName = buildDomainEventChannelName(destination.channel);\n\n const fullEventName = buildEventFullName(ctx.content.type, ctx.content.event);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n ...ctx.content,\n meta: {\n roomName,\n },\n });\n\n if (typeof destination.channel === 'function') {\n roomName = buildDomainEventChannelName(destination.channel, ctx.content.data.id);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n ...ctx.content,\n meta: {\n roomName,\n roomId: ctx.content.data.id,\n },\n });\n }\n }\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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"],"names":["compare","value","hashedValue","compareMethod","hash","str","rounds","hashMethod","CryptoAsymmetricAlgorithm","BaseKey","key","cryptoKey","toArrayBuffer","type","subtle","exportKey","toUint8Array","arrayBuffer","Uint8Array","toBase64","arrayBufferToBase64","toJWK","enc","input","encodePKCS8ToPEM","base64","encodeSPKIToPem","dec","replace","decodePemToPKCS8","decodePemToSpki","getKeyUsagesForAsymmetricAlgorithm","name","format","RSA_PSS","ECDSA","RSASSA_PKCS1_V1_5","ECDH","RSA_OAEP","SyntaxError","normalizeAsymmetricKeyPairCreateOptions","options","optionsNormalized","modulusLength","publicExponent","namedCurve","normalizeAsymmetricKeyImportOptions","AsymmetricKey","toPem","Error","fromPem","ctx","fromBase64","base64ToArrayBuffer","fromArrayBuffer","normalizedOptions","importKey","buildImportOptionsForJWTAlgorithm","alg","JWTAlgorithm","RS256","RS384","RS512","ES256","ES384","ES512","isAsymmetricAlgorithm","Object","values","indexOf","createAsymmetricKeyPair","generateKey","SymmetricAlgorithm","isSymmetricAlgorithm","getKeyUsagesForSymmetricAlgorithm","HMAC","AES_CBC","AES_GCM","AES_CTR","normalizeSymmetricKeyCreateOptions","length","normalizeSymmetricKeyImportOptions","SymmetricKey","HS256","HS384","HS512","createSymmetricKey","extractTokenHeader","token","parts","split","JWTError","invalid","headerBase64","payload","atob","JSON","parse","e","headerInvalid","extractTokenPayload","payloadBase64","payloadInvalid","createErrorForJWTError","isObject","expired","date","Date","notActiveBefore","message","cause","logMessage","transformJWTAlgorithmToInternal","algorithm","Algorithm","PS256","PS384","PS512","getUtcTimestamp","Math","floor","getTime","signToken","claims","context","exp","iat","JWKType","RSA","EC","keyContainer","sign","keyId","OCT","verifyToken","promise","output","algorithms","map","verify","validateNbf","DomainEventPublisher","publishers","Set","mount","publisher","add","publish","it","next","done","MemoryCache","instance","TTLCache","checkAgeOnGet","ttl","Infinity","has","get","set","drop","delete","dropMany","keys","i","clear","prefix","iterator","startsWith","isRedisClient","data","connect","disconnect","createRedisClient","createClient","connectionString","RedisCache","client","jsonAdapter","JsonAdapter","milliseconds","pipeline","del","exec","flushdb","buildCacheKey","buildRedisKeyPath","createLogger","items","cwd","directory","process","env","transports","Console","level","File","filename","path","join","maxsize","maxFiles","create","combine","errors","stack","timestamp","colorize","simple","singa","setLoggerFactory","factory","setFactory","isLoggerUsable","hasFactory","setLogger","useLogger","use","setVaultFactory","isVaultClientUsable","useVaultClient","transformDomainEventData","toISOString","buildDomainEventChannelName","id","DomainEventRedisPublisher","driver","stringify","content","destinations","namespace","keyPrefix","channel","DomainEventSocketPublisher","Emitter","destination","emitter","of","roomName","fullEventName","buildEventFullName","event","in","emit","meta","roomId","hasOwnProperty","obj","prop","prototype","call"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/crypto/hash/compare.ts","../src/crypto/hash/hash.ts","../src/crypto/key/asymmetric/constants.ts","../src/crypto/key/base.ts","../src/crypto/key/asymmetric/helpers/wrap.ts","../src/crypto/key/asymmetric/key-usages.ts","../src/crypto/key/asymmetric/normalize.ts","../src/crypto/key/asymmetric/module.ts","../src/crypto/key/asymmetric/check.ts","../src/crypto/key/asymmetric/create.ts","../src/crypto/key/symmetric/constants.ts","../src/crypto/key/symmetric/check.ts","../src/crypto/key/symmetric/key-usages.ts","../src/crypto/key/symmetric/normalize.ts","../src/crypto/key/symmetric/module.ts","../src/crypto/key/symmetric/create.ts","../src/crypto/json-web-token/extract.ts","../src/crypto/json-web-token/utils.ts","../src/crypto/json-web-token/sign/module.ts","../src/crypto/json-web-token/verify/module.ts","../src/domain-event/module.ts","../src/services/cache/adapters/memory.ts","../src/services/redis/check.ts","../src/services/redis/factory.ts","../src/services/cache/adapters/redis.ts","../src/services/cache/helper.ts","../src/services/logger/module.ts","../src/services/logger/singleton.ts","../src/services/vault/singleton.ts","../src/domain-event/utils.ts","../src/domain-event/redis/module.ts","../src/domain-event/socket/module.ts","../src/utils/has-property.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\n * Author 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 '@node-rs/bcrypt';\n\nexport async function compare(value: string, hashedValue: string) : Promise<boolean> {\n return compareMethod(value, hashedValue);\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 '@node-rs/bcrypt';\n\nexport async function hash(str: string, rounds: number = 10) : Promise<string> {\n return hashMethod(str, rounds);\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 CryptoAsymmetricAlgorithm {\n RSA_PSS = 'RSA-PSS',\n RSASSA_PKCS1_V1_5 = 'RSASSA-PKCS1-v1_5',\n RSA_OAEP = 'RSA-OAEP',\n ECDSA = 'ECDSA',\n ECDH = 'ECDH',\n}\n","/*\n * Copyright (c) 2025.\n * Author 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 { arrayBufferToBase64 } from '@authup/kit';\nimport { subtle } from 'uncrypto';\n\nexport abstract class BaseKey {\n protected key : CryptoKey;\n\n // ----------------------------------------------\n\n constructor(cryptoKey : CryptoKey) {\n this.key = cryptoKey;\n }\n\n // ----------------------------------------------\n\n async toArrayBuffer(): Promise<ArrayBuffer> {\n if (this.key.type === 'private') {\n return subtle.exportKey('pkcs8', this.key);\n }\n\n if (this.key.type === 'public') {\n return subtle.exportKey('spki', this.key);\n }\n\n return subtle.exportKey('raw', this.key);\n }\n\n async toUint8Array(): Promise<Uint8Array> {\n const arrayBuffer = await this.toArrayBuffer();\n return new Uint8Array(arrayBuffer);\n }\n\n async toBase64() : Promise<string> {\n const arrayBuffer = await this.toArrayBuffer();\n return arrayBufferToBase64(arrayBuffer);\n }\n\n async toJWK() : Promise<JsonWebKey> {\n return subtle.exportKey('jwk', this.key);\n }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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\nfunction enc(\n type: 'PRIVATE KEY' | 'PUBLIC KEY',\n input: string,\n) {\n return `-----BEGIN ${type}-----\\n${input}\\n-----END ${type}-----`;\n}\n\nexport function encodePKCS8ToPEM(base64: string) {\n return enc('PRIVATE KEY', base64);\n}\n\nexport function encodeSPKIToPem(input: string) {\n return enc('PUBLIC KEY', input);\n}\n\n// ------------------------------------------------------------\n\nfunction dec(\n type: 'PRIVATE KEY' | 'PUBLIC KEY',\n input: string,\n) {\n input = input.replace(`-----BEGIN ${type}-----\\n`, '');\n\n input = input.replace(`\\n-----END ${type}-----\\n`, '');\n input = input.replace(`-----END ${type}-----\\n`, '');\n input = input.replace(`\\n-----END ${type}-----`, '');\n\n return input;\n}\n\nexport function decodePemToPKCS8(input: string) {\n return dec('PRIVATE KEY', input);\n}\n\nexport function decodePemToSpki(input: string) {\n return dec('PUBLIC KEY', input);\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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 { CryptoAsymmetricAlgorithm } from './constants';\n\n/**\n * @see https://nodejs.org/api/webcrypto.html#cryptokeyusages\n */\nexport function getKeyUsagesForAsymmetricAlgorithm(\n name: string,\n format?: Exclude<KeyFormat, 'jwk'>,\n) : KeyUsage[] {\n if (\n name === CryptoAsymmetricAlgorithm.RSA_PSS ||\n name === CryptoAsymmetricAlgorithm.ECDSA ||\n name === CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5\n ) {\n if (format === 'spki') {\n return ['verify'];\n } if (format === 'pkcs8') {\n return ['sign'];\n }\n\n return ['sign', 'verify'];\n }\n\n if (name === CryptoAsymmetricAlgorithm.ECDH) {\n if (format === 'spki') {\n return [];\n }\n\n return [\n 'deriveKey',\n 'deriveBits',\n ];\n }\n\n if (name === CryptoAsymmetricAlgorithm.RSA_OAEP) {\n if (format === 'spki') {\n return ['encrypt'];\n } if (format === 'pkcs8') {\n return ['decrypt'];\n }\n\n return ['encrypt', 'decrypt'];\n }\n\n throw new SyntaxError(`Key usages can not be determined for asymmetric algorithm: ${name}`);\n}\n","/*\n * Copyright (c) 2024.\n * Author 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 { CryptoAsymmetricAlgorithm } from './constants';\nimport type {\n AsymmetricKeyImportOptionsInput,\n AsymmetricKeyPairCreateOptions,\n AsymmetricKeyPairCreateOptionsInput,\n AsymmetricKeyPairImportOptions,\n} from './types';\n\nexport function normalizeAsymmetricKeyPairCreateOptions(\n options: AsymmetricKeyPairCreateOptionsInput,\n) : AsymmetricKeyPairCreateOptions {\n let optionsNormalized : AsymmetricKeyPairCreateOptions;\n switch (options.name) {\n case CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5:\n case CryptoAsymmetricAlgorithm.RSA_PSS:\n case CryptoAsymmetricAlgorithm.RSA_OAEP: {\n optionsNormalized = {\n modulusLength: 2048,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: 'SHA-256',\n ...options,\n };\n break;\n }\n case CryptoAsymmetricAlgorithm.ECDSA:\n case CryptoAsymmetricAlgorithm.ECDH: {\n optionsNormalized = {\n namedCurve: 'P-256',\n ...options,\n };\n }\n }\n\n return optionsNormalized;\n}\n\nexport function normalizeAsymmetricKeyImportOptions(\n options: AsymmetricKeyImportOptionsInput,\n) : AsymmetricKeyPairImportOptions {\n let optionsNormalized : AsymmetricKeyPairImportOptions;\n switch (options.name) {\n case CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5:\n case CryptoAsymmetricAlgorithm.RSA_PSS:\n case CryptoAsymmetricAlgorithm.RSA_OAEP: {\n optionsNormalized = {\n hash: 'SHA-256',\n ...options,\n };\n break;\n }\n case CryptoAsymmetricAlgorithm.ECDSA:\n case CryptoAsymmetricAlgorithm.ECDH: {\n optionsNormalized = {\n namedCurve: 'P-256',\n ...options,\n };\n }\n }\n\n return optionsNormalized;\n}\n","/*\n * Copyright (c) 2025.\n * Author 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 { base64ToArrayBuffer } from '@authup/kit';\nimport { JWTAlgorithm } from '@authup/specs';\nimport { subtle } from 'uncrypto';\nimport { BaseKey } from '../base';\nimport { CryptoAsymmetricAlgorithm } from './constants';\nimport type { AsymmetricKeyImportContext } from './types';\nimport {\n decodePemToPKCS8, \n decodePemToSpki, \n encodePKCS8ToPEM, \n encodeSPKIToPem,\n} from './helpers';\nimport { getKeyUsagesForAsymmetricAlgorithm } from './key-usages';\nimport { normalizeAsymmetricKeyImportOptions } from './normalize';\n\nexport class AsymmetricKey extends BaseKey {\n async toPem(): Promise<string> {\n const base64 = await this.toBase64();\n\n if (this.key.type === 'public') {\n return encodeSPKIToPem(base64);\n }\n\n if (this.key.type === 'private') {\n return encodePKCS8ToPEM(base64);\n }\n\n throw new Error(`${this.key.type} can not be converted to pem.`);\n }\n\n // ----------------------------------------------------------------\n\n static async fromPem(ctx: AsymmetricKeyImportContext<string>): Promise<AsymmetricKey> {\n if (ctx.format === 'pkcs8') {\n return AsymmetricKey.fromBase64({\n ...ctx,\n key: decodePemToPKCS8(ctx.key), \n });\n }\n return AsymmetricKey.fromBase64({\n ...ctx,\n key: decodePemToSpki(ctx.key), \n });\n }\n\n static async fromBase64(\n ctx: AsymmetricKeyImportContext<string>,\n ) : Promise<AsymmetricKey> {\n const arrayBuffer = base64ToArrayBuffer(ctx.key);\n\n return AsymmetricKey.fromArrayBuffer({\n ...ctx,\n key: arrayBuffer,\n });\n }\n\n static async fromArrayBuffer(\n ctx: AsymmetricKeyImportContext<ArrayBuffer>,\n ) : Promise<AsymmetricKey> {\n const normalizedOptions = normalizeAsymmetricKeyImportOptions(ctx.options);\n\n const cryptoKey = await subtle.importKey(\n ctx.format,\n ctx.key,\n normalizedOptions,\n true,\n getKeyUsagesForAsymmetricAlgorithm(normalizedOptions.name, ctx.format),\n );\n\n return new AsymmetricKey(cryptoKey);\n }\n\n // ----------------------------------------------------------------\n\n static buildImportOptionsForJWTAlgorithm(alg: `${JWTAlgorithm}`) {\n if (alg === JWTAlgorithm.RS256) {\n return {\n name: CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5,\n hash: 'SHA-256',\n };\n }\n\n if (alg === JWTAlgorithm.RS384) {\n return {\n name: CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5,\n hash: 'SHA-384',\n };\n }\n\n if (alg === JWTAlgorithm.RS512) {\n return {\n name: CryptoAsymmetricAlgorithm.RSASSA_PKCS1_V1_5,\n hash: 'SHA-512',\n };\n }\n\n if (alg === JWTAlgorithm.ES256) {\n return {\n name: CryptoAsymmetricAlgorithm.ECDSA,\n namedCurve: 'P-256',\n };\n }\n\n if (alg === JWTAlgorithm.ES384) {\n return {\n name: CryptoAsymmetricAlgorithm.ECDSA,\n namedCurve: 'P-384',\n };\n }\n\n if (alg === JWTAlgorithm.ES512) {\n return {\n name: CryptoAsymmetricAlgorithm.ECDSA,\n namedCurve: 'P-521',\n };\n }\n\n throw new Error(`Signature algorithm ${alg} is not supported.`);\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author 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 { CryptoAsymmetricAlgorithm } from './constants';\n\nexport function isAsymmetricAlgorithm(input: string) : input is CryptoAsymmetricAlgorithm {\n return (Object.values(CryptoAsymmetricAlgorithm) as string[]).includes(input);\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { subtle } from 'uncrypto';\nimport { getKeyUsagesForAsymmetricAlgorithm } from './key-usages';\nimport { normalizeAsymmetricKeyPairCreateOptions } from './normalize';\nimport type { AsymmetricKeyPairCreateOptionsInput } from './types';\n\nexport async function createAsymmetricKeyPair(options: AsymmetricKeyPairCreateOptionsInput) : Promise<CryptoKeyPair> {\n const optionsNormalized = normalizeAsymmetricKeyPairCreateOptions(options);\n return subtle.generateKey(\n optionsNormalized,\n true,\n getKeyUsagesForAsymmetricAlgorithm(optionsNormalized.name),\n );\n}\n","/*\n * Copyright (c) 2024.\n * Author 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 SymmetricAlgorithm {\n HMAC = 'HMAC',\n AES_CTR = 'AES-CTR',\n AES_CBC = 'AES-CBC',\n AES_GCM = 'AES-GCM',\n}\n","/*\n * Copyright (c) 2024.\n * Author 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 { SymmetricAlgorithm } from './constants';\n\nexport function isSymmetricAlgorithm(input: string) : input is SymmetricAlgorithm {\n return (Object.values(SymmetricAlgorithm) as string[]).includes(input);\n}\n","/*\n * Copyright (c) 2024.\n * Author 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 { SymmetricAlgorithm } from './constants';\n\nexport function getKeyUsagesForSymmetricAlgorithm(name: string) : KeyUsage[] {\n /**\n * @see https://nodejs.org/api/webcrypto.html#cryptokeyusages\n */\n if (name === SymmetricAlgorithm.HMAC) {\n return [\n 'sign',\n 'verify',\n ];\n }\n\n if (\n name === SymmetricAlgorithm.AES_CBC ||\n name === SymmetricAlgorithm.AES_GCM ||\n name === SymmetricAlgorithm.AES_CTR\n ) {\n return [\n 'encrypt',\n 'decrypt',\n ];\n }\n\n throw new SyntaxError(`Key usages can not be determined for symmetric algorithm: ${name}`);\n}\n","/*\n * Copyright (c) 2024.\n * Author 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 { SymmetricAlgorithm } from './constants';\nimport type {\n SymmetricKeyCreateOptions, \n SymmetricKeyCreateOptionsInput, \n SymmetricKeyImportOptions, \n SymmetricKeyImportOptionsInput,\n} from './types';\n\nexport function normalizeSymmetricKeyCreateOptions(\n input: SymmetricKeyCreateOptionsInput,\n) : SymmetricKeyCreateOptions {\n if (input.name === SymmetricAlgorithm.HMAC) {\n return {\n hash: 'SHA-256',\n ...input,\n };\n }\n\n return {\n length: 256,\n name: input.name,\n };\n}\n\nexport function normalizeSymmetricKeyImportOptions(\n input: SymmetricKeyImportOptionsInput,\n) : SymmetricKeyImportOptions {\n if (input.name === SymmetricAlgorithm.HMAC) {\n return {\n hash: 'SHA-256',\n ...input,\n };\n }\n\n return input;\n}\n","/*\n * Copyright (c) 2025.\n * Author 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 { base64ToArrayBuffer } from '@authup/kit';\nimport { JWTAlgorithm } from '@authup/specs';\nimport { subtle } from 'uncrypto';\nimport { BaseKey } from '../base';\nimport { SymmetricAlgorithm } from './constants';\nimport { getKeyUsagesForSymmetricAlgorithm } from './key-usages';\nimport { normalizeSymmetricKeyImportOptions } from './normalize';\nimport type { SymmetricKeyImportContext, SymmetricKeyImportOptions } from './types';\n\nexport class SymmetricKey extends BaseKey {\n static async fromBase64(\n ctx: SymmetricKeyImportContext<string>,\n ) : Promise<SymmetricKey> {\n const arrayBuffer = base64ToArrayBuffer(ctx.key);\n\n return SymmetricKey.fromArrayBuffer({\n ...ctx,\n key: arrayBuffer,\n });\n }\n\n static async fromArrayBuffer(\n ctx: SymmetricKeyImportContext<ArrayBuffer>,\n ) : Promise<SymmetricKey> {\n const normalizedOptions : SymmetricKeyImportOptions = normalizeSymmetricKeyImportOptions(ctx.options);\n\n const cryptoKey = await subtle.importKey(\n ctx.format,\n ctx.key,\n normalizedOptions,\n true,\n getKeyUsagesForSymmetricAlgorithm(normalizedOptions.name),\n );\n\n return new SymmetricKey(cryptoKey);\n }\n\n static buildImportOptionsForJWTAlgorithm(alg: `${JWTAlgorithm}`) {\n if (alg === JWTAlgorithm.HS256) {\n return {\n name: SymmetricAlgorithm.HMAC,\n hash: 'SHA-256',\n };\n }\n\n if (alg === JWTAlgorithm.HS384) {\n return {\n name: SymmetricAlgorithm.HMAC,\n hash: 'SHA-384',\n };\n }\n\n if (alg === JWTAlgorithm.HS512) {\n return {\n name: SymmetricAlgorithm.HMAC,\n hash: 'SHA-512',\n };\n }\n\n throw new Error(`Signature algorithm ${alg} is not supported.`);\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { subtle } from 'uncrypto';\nimport { getKeyUsagesForSymmetricAlgorithm } from './key-usages';\nimport { normalizeSymmetricKeyCreateOptions } from './normalize';\nimport type { SymmetricKeyCreateOptionsInput } from './types';\n\nexport async function createSymmetricKey(input: SymmetricKeyCreateOptionsInput) : Promise<CryptoKey> {\n const optionsNormalized = normalizeSymmetricKeyCreateOptions(input);\n\n return subtle.generateKey(\n optionsNormalized,\n true,\n getKeyUsagesForSymmetricAlgorithm(optionsNormalized.name),\n );\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { JWTClaims, JWTHeader } from '@authup/specs';\nimport { JWTError } from '@authup/specs';\n\n/**\n * Decode a JWT token with no verification.\n *\n * @param token\n *\n * @throws JWTError\n */\nexport function extractTokenHeader(\n token: string,\n) : JWTHeader {\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw JWTError.invalid();\n }\n\n const [headerBase64] = parts;\n\n try {\n const payload = atob(headerBase64);\n\n return JSON.parse(payload);\n\n /*\n return {\n typ: 'JWT',\n alg: transformInternalToJWTAlgorithm(header.algorithm),\n cty: header.contentType,\n jku: header.jsonKeyUrl,\n kid: header.keyId,\n x5u: header.x5Url,\n x5c: header.x5CertChain,\n x5t: header.x5CertThumbprint,\n 'x5t#S256': header.x5TS256CertThumbprint,\n };\n */\n } catch {\n throw JWTError.headerInvalid('The token header could not be extracted.');\n }\n}\n\n/**\n * @param token\n *\n * @throws JWTError\n */\nexport function extractTokenPayload(\n token: string,\n) : JWTClaims {\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw JWTError.invalid();\n }\n\n const [, payloadBase64] = parts;\n\n try {\n const payload = atob(payloadBase64);\n\n return JSON.parse(payload);\n } catch {\n throw JWTError.payloadInvalid('The token payload could not be extracted.');\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { JWTAlgorithm, JWTError } from '@authup/specs';\nimport { Algorithm } from '@node-rs/jsonwebtoken';\nimport { isObject } from 'smob';\n\nexport function createErrorForJWTError(e: unknown) : JWTError {\n if (isObject(e)) {\n if (typeof e.name === 'string') {\n switch (e.name) {\n case 'TokenExpiredError': {\n return JWTError.expired();\n }\n case 'NotBeforeError': {\n if (typeof e.date === 'string' || e.date instanceof Date) {\n return JWTError.notActiveBefore(e.date);\n }\n break;\n }\n case 'JsonWebTokenError': {\n if (typeof e.message === 'string') {\n return JWTError.payloadInvalid(e.message);\n }\n\n break;\n }\n }\n }\n\n // @see https://github.com/Keats/jsonwebtoken/blob/master/src/errors.rs\n switch (e.message) {\n case 'ExpiredSignature': {\n return JWTError.expired();\n }\n case 'ImmatureSignature': {\n return JWTError.notActiveBefore();\n }\n case 'InvalidToken':\n case 'InvalidSignature': {\n return JWTError.payloadInvalid();\n }\n }\n }\n\n return new JWTError({\n cause: e as Error,\n logMessage: true,\n message: 'The JWT error could not be determined.',\n });\n}\n\nexport function transformJWTAlgorithmToInternal(algorithm: `${JWTAlgorithm}`) : Algorithm {\n switch (algorithm) {\n case JWTAlgorithm.HS256: {\n return Algorithm.HS256;\n }\n case JWTAlgorithm.HS384: {\n return Algorithm.HS384;\n }\n case JWTAlgorithm.HS512: {\n return Algorithm.HS512;\n }\n case JWTAlgorithm.RS256: {\n return Algorithm.RS256;\n }\n case JWTAlgorithm.RS384: {\n return Algorithm.RS384;\n }\n case JWTAlgorithm.RS512: {\n return Algorithm.RS512;\n }\n case JWTAlgorithm.ES256: {\n return Algorithm.ES256;\n }\n case JWTAlgorithm.ES384: {\n return Algorithm.ES384;\n }\n case JWTAlgorithm.PS256: {\n return Algorithm.PS256;\n }\n case JWTAlgorithm.PS384: {\n return Algorithm.PS384;\n }\n case JWTAlgorithm.PS512: {\n return Algorithm.PS512;\n }\n }\n\n throw new Error(`The algorithm ${algorithm} is not supported.`);\n}\n\nexport function transformInternalToJWTAlgorithm(input: Algorithm) : JWTAlgorithm {\n switch (input) {\n case Algorithm.HS256:\n return JWTAlgorithm.HS256;\n case Algorithm.HS384:\n return JWTAlgorithm.HS384;\n case Algorithm.HS512:\n return JWTAlgorithm.HS512;\n case Algorithm.RS256:\n return JWTAlgorithm.RS256;\n case Algorithm.RS384:\n return JWTAlgorithm.RS384;\n case Algorithm.RS512:\n return JWTAlgorithm.RS512;\n case Algorithm.ES256:\n return JWTAlgorithm.ES256;\n case Algorithm.ES384:\n return JWTAlgorithm.ES384;\n case Algorithm.PS256:\n return JWTAlgorithm.PS256;\n case Algorithm.PS384:\n return JWTAlgorithm.PS384;\n case Algorithm.PS512:\n return JWTAlgorithm.PS512;\n }\n\n throw new SyntaxError(`The algorithm ${input} is not supported.`);\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { JWKType, JWTError } from '@authup/specs';\nimport type { JWTClaims } from '@authup/specs';\nimport { Algorithm, sign } from '@node-rs/jsonwebtoken';\nimport { AsymmetricKey, SymmetricKey, encodePKCS8ToPEM } from '../../key';\nimport { transformJWTAlgorithmToInternal } from '../utils';\nimport type { TokenSignOptions } from './types';\n\nconst getUtcTimestamp = () => Math.floor(new Date().getTime() / 1000);\n\nexport async function signToken(claims: JWTClaims, context: TokenSignOptions): Promise<string> {\n if (typeof claims.exp !== 'number') {\n claims.exp = getUtcTimestamp() + 3600;\n }\n if (typeof claims.iat !== 'number') {\n claims.iat = getUtcTimestamp();\n }\n\n switch (context.type) {\n case JWKType.RSA:\n case JWKType.EC: {\n let algorithm : Algorithm;\n\n let key : string;\n if (typeof context.key === 'string') {\n key = encodePKCS8ToPEM(context.key);\n } else {\n const keyContainer = new AsymmetricKey(context.key);\n key = await keyContainer.toPem();\n }\n\n if (context.type === JWKType.RSA) {\n algorithm = context.algorithm ?\n transformJWTAlgorithmToInternal(context.algorithm) :\n Algorithm.RS256;\n } else {\n algorithm = context.algorithm ?\n transformJWTAlgorithmToInternal(context.algorithm) :\n Algorithm.ES256;\n }\n\n return sign(claims, key, {\n algorithm,\n keyId: context.keyId,\n });\n }\n case JWKType.OCT: {\n const algorithm : Algorithm = context.algorithm ?\n transformJWTAlgorithmToInternal(context.algorithm) :\n Algorithm.HS256;\n\n let key : string | Uint8Array;\n if (typeof context.key === 'string') {\n key = context.key;\n } else {\n const keyContainer = new SymmetricKey(context.key);\n key = await keyContainer.toUint8Array();\n }\n\n return sign(claims, key, {\n algorithm,\n keyId: context.keyId,\n });\n }\n }\n\n throw new JWTError();\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { JWKType, JWTError } from '@authup/specs';\nimport type { JWTClaims, OAuth2TokenPayload } from '@authup/specs';\nimport { Algorithm, verify } from '@node-rs/jsonwebtoken';\nimport { AsymmetricKey, SymmetricKey, encodeSPKIToPem } from '../../key';\nimport { createErrorForJWTError, transformJWTAlgorithmToInternal } from '../utils';\nimport type { TokenVerifyOptions } from './types';\n\n/**\n * Verify JWT.\n *\n * @param token\n * @param context\n *\n * @throws OAuth2Error\n */\nexport async function verifyToken(\n token: string,\n context: TokenVerifyOptions,\n) : Promise<OAuth2TokenPayload> {\n let promise : Promise<JWTClaims> | undefined;\n\n let output : JWTClaims | undefined;\n\n try {\n switch (context.type) {\n case JWKType.RSA:\n case JWKType.EC: {\n let algorithms : Algorithm[];\n\n if (context.type === JWKType.RSA) {\n algorithms = context.algorithms ?\n context.algorithms.map((algorithm) => transformJWTAlgorithmToInternal(algorithm)) :\n [\n Algorithm.RS256,\n Algorithm.RS384,\n Algorithm.RS512,\n Algorithm.PS256,\n Algorithm.PS384,\n Algorithm.PS512,\n ];\n } else {\n algorithms = context.algorithms ?\n context.algorithms.map((algorithm) => transformJWTAlgorithmToInternal(algorithm)) :\n [\n Algorithm.ES256,\n Algorithm.ES384,\n ];\n }\n\n let key : string;\n if (typeof context.key === 'string') {\n key = encodeSPKIToPem(context.key);\n } else {\n const keyContainer = new AsymmetricKey(context.key);\n key = await keyContainer.toPem();\n }\n\n promise = verify(token, key, {\n algorithms,\n validateNbf: true,\n });\n break;\n }\n case JWKType.OCT: {\n const algorithms : Algorithm[] = context.algorithms ?\n context.algorithms.map((algorithm) => transformJWTAlgorithmToInternal(algorithm)) :\n [\n Algorithm.HS256,\n Algorithm.HS384,\n Algorithm.HS512,\n ];\n\n let key : string | Uint8Array;\n if (typeof context.key === 'string') {\n key = context.key;\n } else {\n const keyContainer = new SymmetricKey(context.key);\n key = await keyContainer.toUint8Array();\n }\n\n promise = verify(token, key, {\n algorithms,\n validateNbf: true,\n });\n }\n }\n\n if (promise) {\n output = await promise;\n }\n } catch (e) {\n throw createErrorForJWTError(e);\n }\n\n if (!output) {\n throw new JWTError();\n }\n\n return output as OAuth2TokenPayload;\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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 { EventPayload } from '@authup/core-realtime-kit';\nimport type { DomainEventPublishContext, IDomainEventPublisher } from './type';\n\nexport class DomainEventPublisher implements IDomainEventPublisher {\n protected publishers : Set<IDomainEventPublisher>;\n\n constructor() {\n this.publishers = new Set<IDomainEventPublisher>();\n }\n\n mount(publisher: IDomainEventPublisher): void {\n this.publishers.add(publisher);\n }\n\n async publish<T extends EventPayload>(\n ctx: DomainEventPublishContext<T>,\n ) : Promise<void> {\n const publishers = this.publishers.values();\n while (true) {\n const it = publishers.next();\n if (it.done) {\n return;\n }\n\n await it.value.publish(ctx);\n }\n }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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 { TTLCacheOptions } from '@isaacs/ttlcache';\nimport { TTLCache } from '@isaacs/ttlcache';\nimport type { CacheClearOptions, CacheSetOptions, ICache } from '../types';\n\nexport class MemoryCache implements ICache {\n protected instance : TTLCache<string, unknown>;\n\n constructor(options: TTLCacheOptions<string, unknown> = {}) {\n this.instance = new TTLCache<string, unknown>({\n checkAgeOnGet: true,\n ttl: Infinity,\n ...(options || {}),\n });\n }\n\n async pop<T = unknown>(key: string): Promise<T | null> {\n if (this.instance.has(key)) {\n const output = this.instance.get(key);\n this.instance.delete(key);\n return output as T;\n }\n\n return null;\n }\n\n async has(key: string) : Promise<boolean> {\n return this.instance.has(key);\n }\n\n async get<T =unknown>(key: string): Promise<T | null> {\n const output = await this.instance.get(key);\n if (output) {\n return output as T;\n }\n\n return null;\n }\n\n async set(key: string, value: unknown, options: CacheSetOptions): Promise<void> {\n this.instance.set(key, value, { ttl: options.ttl });\n }\n\n async drop(key: string): Promise<void> {\n this.instance.delete(key);\n }\n\n async dropMany(keys: string[]) : Promise<void> {\n for (const key of keys) {\n this.instance.delete(key);\n }\n }\n\n async clear(options: CacheClearOptions = {}) : Promise<void> {\n if (options.prefix) {\n const keys = this.instance.keys();\n let iterator = keys.next();\n while (!iterator.done) {\n if (typeof iterator.value !== 'string') {\n continue;\n }\n\n if (iterator.value.startsWith(options.prefix)) {\n this.instance.delete(iterator.value);\n }\n\n iterator = keys.next();\n }\n\n return;\n }\n\n this.instance.clear();\n }\n}\n","/*\n * Copyright (c) 2025.\n * Author 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 'smob';\nimport type { RedisClient } from './module';\n\nexport function isRedisClient(data: unknown) : data is RedisClient {\n return isObject(data) &&\n typeof data.connect === 'function' &&\n typeof data.disconnect === 'function';\n}\n","/*\n * Copyright (c) 2025.\n * Author 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 { createClient } from 'redis-extension';\nimport { isRedisClient } from './check';\nimport type { RedisClient, RedisClientOptions } from './module';\n\nexport type RedisClientCreateInput = string | boolean | RedisClient | RedisClientOptions;\n\nexport function createRedisClient(input: RedisClientCreateInput) {\n if (typeof input === 'boolean') {\n return createClient({ connectionString: 'redis://127.0.0.1' });\n }\n\n if (typeof input === 'string') {\n return createClient({ connectionString: input });\n }\n\n if (!isRedisClient(input)) {\n return createClient({ options: input });\n }\n\n return input;\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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 { Client } from 'redis-extension';\nimport { JsonAdapter } from 'redis-extension';\nimport type { RedisClient, RedisClientOptions } from '../../redis';\nimport { createRedisClient } from '../../redis';\nimport type { CacheClearOptions, CacheSetOptions, ICache } from '../types';\n\nexport class RedisCache implements ICache {\n protected client : Client;\n\n protected jsonAdapter : JsonAdapter;\n\n constructor(input: string | boolean | RedisClient | RedisClientOptions) {\n this.client = createRedisClient(input);\n this.jsonAdapter = new JsonAdapter(this.client);\n }\n\n async get(key: string): Promise<any> {\n const output = await this.jsonAdapter.get(key);\n if (output) {\n return output;\n }\n\n return null;\n }\n\n async pop<T = unknown>(key: string): Promise<T | null> {\n const raw = await this.client.getdel(key);\n if (!raw) {\n return null;\n }\n\n try {\n return JSON.parse(raw) as T;\n } catch {\n return null;\n }\n }\n\n async has(key: string) : Promise<boolean> {\n const output = await this.get(key);\n\n return !!output;\n }\n\n async set(key: string, value: any, options: CacheSetOptions): Promise<void> {\n await this.jsonAdapter.set(key, value, { milliseconds: options.ttl });\n }\n\n async drop(key: string): Promise<void> {\n await this.jsonAdapter.drop(key);\n }\n\n async dropMany(keys: string[]) : Promise<void> {\n const pipeline = this.client.pipeline();\n\n for (const key of keys) {\n pipeline.del(key);\n }\n\n await pipeline.exec();\n }\n\n async clear(options: CacheClearOptions = {}) : Promise<void> {\n if (options.prefix) {\n const pipeline = this.client.pipeline();\n\n const keys = await this.client.keys(`${options.prefix}*`);\n for (const key of keys) {\n pipeline.del(key);\n }\n\n await pipeline.exec();\n\n return;\n }\n await this.client.flushdb();\n }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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 { buildRedisKeyPath } from '../redis';\nimport type { CacheKeyBuildOptions } from './types';\n\nexport function buildCacheKey(options: CacheKeyBuildOptions) {\n return buildRedisKeyPath(options);\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 type { LoggerOptions } from 'winston';\nimport { createLogger as create, format, transports } from 'winston';\nimport type { Logger, LoggerCreateContext } from './types';\n\nexport function createNoopLogger() : Logger {\n return create({ silent: true });\n}\n\nexport function createLogger(context: LoggerCreateContext) : Logger {\n let items : LoggerOptions['transports'];\n\n const cwd = context.directory || process.cwd();\n\n if (context.env === 'production') {\n items = [\n new transports.Console({ level: 'info' }),\n new transports.File({\n filename: path.join(cwd, 'http.log'),\n level: 'http',\n maxsize: 10 * 1024 * 1024, // 10MB\n maxFiles: 5,\n }),\n new transports.File({\n filename: path.join(cwd, 'error.log'),\n level: 'warn',\n maxsize: 10 * 1024 * 1024, // 10MB\n maxFiles: 5,\n }),\n ];\n } else {\n items = [\n new transports.Console({ level: 'debug' }),\n ];\n }\n\n // @see https://github.com/winstonjs/triple-beam/blob/master/config/npm.js\n return create({\n format: format.combine(\n format.errors({ stack: true }),\n format.timestamp(),\n format.colorize(),\n format.simple(),\n ),\n transports: items,\n });\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author 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 Factory, singa } from 'singa';\nimport type { Logger } from 'winston';\n\nconst instance = singa<Logger>({ name: 'logger' });\n\nexport function setLoggerFactory(factory: Factory<Logger>) {\n instance.setFactory(factory);\n}\n\nexport function isLoggerUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function setLogger(input: Logger) {\n instance.set(input);\n}\n\nexport function useLogger() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author 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 { Factory } from 'singa';\nimport { singa } from 'singa';\nimport type { VaultClient } from '@hapic/vault';\n\nconst instance = singa<VaultClient>({ name: 'vault' });\n\nexport function setVaultFactory(factory: Factory<VaultClient>) {\n instance.setFactory(factory);\n}\n\nexport function isVaultClientUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function useVaultClient() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author 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 { ObjectLiteral } from '@authup/kit';\nimport { isObject } from '@authup/kit';\nimport type { DomainEventChannelName } from './type';\n\nexport function transformDomainEventData<T extends ObjectLiteral>(input: T) : T {\n const keys = Object.keys(input);\n for (const key_ of keys) {\n const key = key_ as keyof T;\n\n const value = input[key] as T[keyof T];\n if (!isObject(value)) {\n continue;\n }\n\n if ((value as Record<string, any>) instanceof Date) {\n input[key] = value.toISOString() as T[keyof T];\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-2024.\n * Author 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 { Client } from 'redis-extension';\nimport type { RedisClientCreateInput } from '../../services';\nimport { createRedisClient } from '../../services';\nimport type { DomainEventPublishContext, IDomainEventPublisher } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport class DomainEventRedisPublisher implements IDomainEventPublisher {\n protected driver : Client;\n\n constructor(input: RedisClientCreateInput) {\n this.driver = createRedisClient(input);\n }\n\n async publish(ctx: DomainEventPublishContext) : Promise<void> {\n const data = JSON.stringify(transformDomainEventData(ctx.content));\n\n const pipeline = this.driver.pipeline();\n for (let i = 0; i < ctx.destinations.length; i++) {\n const { namespace } = ctx.destinations[i];\n const keyPrefix = (namespace ? `${namespace}:` : '');\n\n let key = keyPrefix + buildDomainEventChannelName(ctx.destinations[i].channel);\n pipeline.publish(key, data);\n\n if (typeof ctx.destinations[i].channel === 'function') {\n key = keyPrefix + buildDomainEventChannelName(ctx.destinations[i].channel, ctx.content.data.id);\n pipeline.publish(key, data);\n }\n }\n\n await pipeline.exec();\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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 { buildEventFullName } from '@authup/core-realtime-kit';\nimport { Emitter } from '@socket.io/redis-emitter';\nimport type { RedisClientCreateInput } from '../../services';\nimport { createRedisClient } from '../../services';\nimport type { DomainEventPublishContext, IDomainEventPublisher } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport class DomainEventSocketPublisher implements IDomainEventPublisher {\n protected driver : Emitter;\n\n constructor(input: RedisClientCreateInput) {\n const client = createRedisClient(input);\n this.driver = new Emitter(client);\n }\n\n async publish(ctx: DomainEventPublishContext) : Promise<void> {\n ctx.content = transformDomainEventData(ctx.content);\n\n for (let i = 0; i < ctx.destinations.length; i++) {\n const destination = ctx.destinations[i];\n\n let emitter : Emitter;\n\n if (destination.namespace) {\n emitter = this.driver.of(destination.namespace);\n } else {\n emitter = this.driver;\n }\n\n let roomName = buildDomainEventChannelName(destination.channel);\n\n const fullEventName = buildEventFullName(ctx.content.type, ctx.content.event);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n ...ctx.content,\n meta: { roomName },\n });\n\n if (typeof destination.channel === 'function') {\n roomName = buildDomainEventChannelName(destination.channel, ctx.content.data.id);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n ...ctx.content,\n meta: {\n roomName,\n roomId: ctx.content.data.id,\n },\n });\n }\n }\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author 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"],"names":["compare","value","hashedValue","compareMethod","hash","str","rounds","hashMethod","CryptoAsymmetricAlgorithm","BaseKey","key","cryptoKey","toArrayBuffer","type","subtle","exportKey","toUint8Array","arrayBuffer","Uint8Array","toBase64","arrayBufferToBase64","toJWK","enc","input","encodePKCS8ToPEM","base64","encodeSPKIToPem","dec","replace","decodePemToPKCS8","decodePemToSpki","getKeyUsagesForAsymmetricAlgorithm","name","format","RSA_PSS","ECDSA","RSASSA_PKCS1_V1_5","ECDH","RSA_OAEP","SyntaxError","normalizeAsymmetricKeyPairCreateOptions","options","optionsNormalized","modulusLength","publicExponent","namedCurve","normalizeAsymmetricKeyImportOptions","AsymmetricKey","toPem","Error","fromPem","ctx","fromBase64","base64ToArrayBuffer","fromArrayBuffer","normalizedOptions","importKey","buildImportOptionsForJWTAlgorithm","alg","JWTAlgorithm","RS256","RS384","RS512","ES256","ES384","ES512","isAsymmetricAlgorithm","Object","values","includes","createAsymmetricKeyPair","generateKey","SymmetricAlgorithm","isSymmetricAlgorithm","getKeyUsagesForSymmetricAlgorithm","HMAC","AES_CBC","AES_GCM","AES_CTR","normalizeSymmetricKeyCreateOptions","length","normalizeSymmetricKeyImportOptions","SymmetricKey","HS256","HS384","HS512","createSymmetricKey","extractTokenHeader","token","parts","split","JWTError","invalid","headerBase64","payload","atob","JSON","parse","headerInvalid","extractTokenPayload","payloadBase64","payloadInvalid","createErrorForJWTError","e","isObject","expired","date","Date","notActiveBefore","message","cause","logMessage","transformJWTAlgorithmToInternal","algorithm","Algorithm","PS256","PS384","PS512","getUtcTimestamp","Math","floor","getTime","signToken","claims","context","exp","iat","JWKType","RSA","EC","keyContainer","sign","keyId","OCT","verifyToken","promise","output","algorithms","map","verify","validateNbf","DomainEventPublisher","publishers","Set","mount","publisher","add","publish","it","next","done","MemoryCache","instance","TTLCache","checkAgeOnGet","ttl","Infinity","pop","has","get","delete","set","drop","dropMany","keys","clear","prefix","iterator","startsWith","isRedisClient","data","connect","disconnect","createRedisClient","createClient","connectionString","RedisCache","client","jsonAdapter","JsonAdapter","raw","getdel","milliseconds","pipeline","del","exec","flushdb","buildCacheKey","buildRedisKeyPath","createNoopLogger","create","silent","createLogger","items","cwd","directory","process","env","transports","Console","level","File","filename","path","join","maxsize","maxFiles","combine","errors","stack","timestamp","colorize","simple","singa","setLoggerFactory","factory","setFactory","isLoggerUsable","hasFactory","setLogger","useLogger","use","setVaultFactory","isVaultClientUsable","useVaultClient","transformDomainEventData","key_","toISOString","buildDomainEventChannelName","id","DomainEventRedisPublisher","driver","stringify","content","i","destinations","namespace","keyPrefix","channel","DomainEventSocketPublisher","Emitter","destination","emitter","of","roomName","fullEventName","buildEventFullName","event","in","emit","meta","roomId","hasOwnProperty","obj","prop","prototype","call"],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import type { CacheClearOptions, CacheSetOptions, ICache } from '../types';
|
|
|
4
4
|
export declare class MemoryCache implements ICache {
|
|
5
5
|
protected instance: TTLCache<string, unknown>;
|
|
6
6
|
constructor(options?: TTLCacheOptions<string, unknown>);
|
|
7
|
+
pop<T = unknown>(key: string): Promise<T | null>;
|
|
7
8
|
has(key: string): Promise<boolean>;
|
|
8
9
|
get<T = unknown>(key: string): Promise<T | null>;
|
|
9
10
|
set(key: string, value: unknown, options: CacheSetOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/services/cache/adapters/memory.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE3E,qBAAa,WAAY,YAAW,MAAM;IACtC,SAAS,CAAC,QAAQ,EAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAEnC,OAAO,GAAE,eAAe,CAAC,MAAM,EAAE,OAAO,CAAM;IAQpD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC;IAInC,GAAG,CAAC,CAAC,GAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAS/C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/services/cache/adapters/memory.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE3E,qBAAa,WAAY,YAAW,MAAM;IACtC,SAAS,CAAC,QAAQ,EAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAEnC,OAAO,GAAE,eAAe,CAAC,MAAM,EAAE,OAAO,CAAM;IAQpD,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAUhD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC;IAInC,GAAG,CAAC,CAAC,GAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAS/C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAI,OAAO,CAAC,IAAI,CAAC;IAMxC,KAAK,CAAC,OAAO,GAAE,iBAAsB,GAAI,OAAO,CAAC,IAAI,CAAC;CAqB/D"}
|
|
@@ -7,6 +7,7 @@ export declare class RedisCache implements ICache {
|
|
|
7
7
|
protected jsonAdapter: JsonAdapter;
|
|
8
8
|
constructor(input: string | boolean | RedisClient | RedisClientOptions);
|
|
9
9
|
get(key: string): Promise<any>;
|
|
10
|
+
pop<T = unknown>(key: string): Promise<T | null>;
|
|
10
11
|
has(key: string): Promise<boolean>;
|
|
11
12
|
set(key: string, value: any, options: CacheSetOptions): Promise<void>;
|
|
12
13
|
drop(key: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/services/cache/adapters/redis.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE3E,qBAAa,UAAW,YAAW,MAAM;IACrC,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;IAE1B,SAAS,CAAC,WAAW,EAAG,WAAW,CAAC;gBAExB,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,kBAAkB;IAKhE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAS9B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC;IAMnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../src/services/cache/adapters/redis.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE3E,qBAAa,UAAW,YAAW,MAAM;IACrC,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;IAE1B,SAAS,CAAC,WAAW,EAAG,WAAW,CAAC;gBAExB,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,kBAAkB;IAKhE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAS9B,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAahD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC;IAMnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAI,OAAO,CAAC,IAAI,CAAC;IAUxC,KAAK,CAAC,OAAO,GAAE,iBAAsB,GAAI,OAAO,CAAC,IAAI,CAAC;CAe/D"}
|
|
@@ -17,6 +17,7 @@ export interface ICache {
|
|
|
17
17
|
set(key: string, value: any, options?: CacheSetOptions): Promise<void>;
|
|
18
18
|
has(key: string): Promise<boolean>;
|
|
19
19
|
get<T = unknown>(key: string): Promise<T | null>;
|
|
20
|
+
pop<T = unknown>(key: string): Promise<T | null>;
|
|
20
21
|
drop(key: string): Promise<void>;
|
|
21
22
|
dropMany(keys: string[]): Promise<void>;
|
|
22
23
|
clear(options?: CacheClearOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/cache/types.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,oBAAoB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB,CAAC;AAEF,MAAM,WAAW,MAAM;IACnB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,eAAe,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEjD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC,KAAK,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/cache/types.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,oBAAoB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB,CAAC;AAEF,MAAM,WAAW,MAAM;IACnB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,eAAe,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEjD,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEjD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC,KAAK,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/logger/module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/logger/module.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE3D,wBAAgB,gBAAgB,IAAK,MAAM,CAE1C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAI,MAAM,CAqClE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../../src/services/logger/singleton.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,OAAO,EAAS,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../../src/services/logger/singleton.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,OAAO,EAAS,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAItC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,QAExD;AAED,wBAAgB,cAAc,YAE7B;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,QAEtC;AAED,wBAAgB,SAAS,WAExB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/logger/types.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/logger/types.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB,MAAM,MAAM,mBAAmB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/services/redis/factory.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEhE,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,kBAAkB,CAAC;AAEzF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/services/redis/factory.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEhE,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,kBAAkB,CAAC;AAEzF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,eAc9D"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Client as RedisClient, JsonAdapter as RedisJsonAdapter, Watcher as RedisWatcher, buildKeyPath as buildRedisKeyPath, escapeKey as escapeRedisKey, parseKeyPath as parseRedisKeyPath } from 'redis-extension';
|
|
2
2
|
import type { ClientOptions as RedisClientOptions } from 'redis-extension';
|
|
3
|
-
export type { RedisClientOptions
|
|
3
|
+
export type { RedisClientOptions };
|
|
4
4
|
export { RedisClient, RedisJsonAdapter, RedisWatcher, escapeRedisKey, buildRedisKeyPath, parseRedisKeyPath, };
|
|
5
5
|
//# sourceMappingURL=module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/redis/module.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,MAAM,IAAI,WAAW,EACrB,WAAW,IAAI,gBAAgB,EAC/B,OAAO,IAAI,YAAY,EACvB,YAAY,IAAI,iBAAiB,EAEjC,SAAS,IAAI,cAAc,EAC3B,YAAY,IAAI,iBAAiB,EACpC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/redis/module.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,MAAM,IAAI,WAAW,EACrB,WAAW,IAAI,gBAAgB,EAC/B,OAAO,IAAI,YAAY,EACvB,YAAY,IAAI,iBAAiB,EAEjC,SAAS,IAAI,cAAc,EAC3B,YAAY,IAAI,iBAAiB,EACpC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC,OAAO,EACH,WAAW,EACX,gBAAgB,EAChB,YAAY,EAEZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../../src/services/vault/singleton.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../../src/services/vault/singleton.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,QAE5D;AAED,wBAAgB,mBAAmB,YAElC;AAED,wBAAgB,cAAc,gBAE7B"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@authup/server-kit",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.33",
|
|
5
5
|
"description": "A toolkit for server-side services.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"exports": {
|
|
@@ -29,15 +29,17 @@
|
|
|
29
29
|
},
|
|
30
30
|
"keywords": [
|
|
31
31
|
"auth",
|
|
32
|
-
"
|
|
33
|
-
"utils",
|
|
32
|
+
"server",
|
|
34
33
|
"jwt",
|
|
34
|
+
"crypto",
|
|
35
|
+
"bcrypt",
|
|
36
|
+
"password-hashing",
|
|
35
37
|
"token",
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
38
|
+
"signing",
|
|
39
|
+
"key-management",
|
|
40
|
+
"redis",
|
|
41
|
+
"cache",
|
|
42
|
+
"logging"
|
|
41
43
|
],
|
|
42
44
|
"author": {
|
|
43
45
|
"name": "Peter Placzek",
|
|
@@ -59,7 +61,7 @@
|
|
|
59
61
|
"@node-rs/bcrypt": "^1.10.7",
|
|
60
62
|
"@node-rs/jsonwebtoken": "^0.5.9",
|
|
61
63
|
"@socket.io/redis-emitter": "^5.1.0",
|
|
62
|
-
"@types/nodemailer": "^
|
|
64
|
+
"@types/nodemailer": "^8.0.0",
|
|
63
65
|
"locter": "^2.2.1",
|
|
64
66
|
"uncrypto": "^0.1.3",
|
|
65
67
|
"redis-extension": "^2.0.4",
|
|
@@ -68,17 +70,17 @@
|
|
|
68
70
|
"winston": "^3.19.0"
|
|
69
71
|
},
|
|
70
72
|
"devDependencies": {
|
|
71
|
-
"@authup/core-realtime-kit": "^1.0.0-beta.
|
|
72
|
-
"@authup/kit": "^1.0.0-beta.
|
|
73
|
-
"@authup/errors": "^1.0.0-beta.
|
|
74
|
-
"@authup/specs": "^1.0.0-beta.
|
|
73
|
+
"@authup/core-realtime-kit": "^1.0.0-beta.33",
|
|
74
|
+
"@authup/kit": "^1.0.0-beta.33",
|
|
75
|
+
"@authup/errors": "^1.0.0-beta.33",
|
|
76
|
+
"@authup/specs": "^1.0.0-beta.33",
|
|
75
77
|
"vitest": "^4.0.14"
|
|
76
78
|
},
|
|
77
79
|
"peerDependencies": {
|
|
78
|
-
"@authup/core-realtime-kit": "^1.0.0-beta.
|
|
79
|
-
"@authup/kit": "^1.0.0-beta.
|
|
80
|
-
"@authup/errors": "^1.0.0-beta.
|
|
81
|
-
"@authup/specs": "^1.0.0-beta.
|
|
80
|
+
"@authup/core-realtime-kit": "^1.0.0-beta.33",
|
|
81
|
+
"@authup/kit": "^1.0.0-beta.33",
|
|
82
|
+
"@authup/errors": "^1.0.0-beta.33",
|
|
83
|
+
"@authup/specs": "^1.0.0-beta.33"
|
|
82
84
|
},
|
|
83
85
|
"publishConfig": {
|
|
84
86
|
"access": "public"
|