@tstdl/base 0.83.0 → 0.83.2
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/.eslintrc.cjs +1 -0
- package/api/server/gateway.js +3 -4
- package/authentication/server/authentication.service.js +4 -5
- package/http/server/node/node-http-server.js +3 -4
- package/key-value-store/mongo/mongo-key-value.repository.js +3 -4
- package/mail/mail.service.js +3 -4
- package/migration/migrator.js +3 -4
- package/migration/mongo/migration-state-repository.js +3 -4
- package/openid-connect/mongo-oidc-state.repository.js +3 -4
- package/package.json +2 -2
- package/types.d.ts +2 -2
- package/utils/cryptography.d.ts +11 -0
- package/utils/cryptography.js +7 -0
package/.eslintrc.cjs
CHANGED
package/api/server/gateway.js
CHANGED
|
@@ -61,9 +61,8 @@ var __param = function(paramIndex, decorator) {
|
|
|
61
61
|
decorator(target, key, paramIndex);
|
|
62
62
|
};
|
|
63
63
|
};
|
|
64
|
-
var ApiGateway_1;
|
|
65
64
|
const defaultMaxBytes = 10 * import_units.mebibyte;
|
|
66
|
-
let ApiGateway =
|
|
65
|
+
let ApiGateway = class ApiGateway2 {
|
|
67
66
|
requestTokenProvider;
|
|
68
67
|
logger;
|
|
69
68
|
prefix;
|
|
@@ -221,11 +220,11 @@ let ApiGateway = ApiGateway_1 = class ApiGateway2 {
|
|
|
221
220
|
return import_schema.Schema.parse(schema, body);
|
|
222
221
|
}
|
|
223
222
|
};
|
|
224
|
-
ApiGateway =
|
|
223
|
+
ApiGateway = __decorate([
|
|
225
224
|
(0, import_container.singleton)({
|
|
226
225
|
defaultArgumentProvider: (context) => context.resolve(import_tokens.API_MODULE_OPTIONS).gatewayOptions
|
|
227
226
|
}),
|
|
228
|
-
__param(1, (0, import_container.resolveArg)(
|
|
227
|
+
__param(1, (0, import_container.resolveArg)("ApiGateway")),
|
|
229
228
|
__param(2, (0, import_container.injectArg)()),
|
|
230
229
|
__metadata("design:paramtypes", [import_api_request_token_provider.ApiRequestTokenProvider, import_logger.Logger, Object])
|
|
231
230
|
], ApiGateway);
|
|
@@ -271,11 +271,10 @@ let AuthenticationService = class AuthenticationService2 {
|
|
|
271
271
|
}
|
|
272
272
|
async deriveSigningSecrets() {
|
|
273
273
|
const key = await (0, import_cryptography.importPbkdf2Key)(this.secret);
|
|
274
|
-
const
|
|
275
|
-
|
|
276
|
-
this.
|
|
277
|
-
this.
|
|
278
|
-
this.derivedSecretResetTokenSigningSecret = new Uint8Array(hash.slice(bufferSize * 2));
|
|
274
|
+
const [derivedTokenSigningSecret, derivedRefreshTokenSigningSecret, derivedSecretResetTokenSigningSecret] = await (0, import_cryptography.deriveBytesMultiple)(3, SIGNING_SECRETS_LENGTH / 8, { name: "PBKDF2", hash: "SHA-512", iterations: 5e5, salt: new Uint8Array() }, key);
|
|
275
|
+
this.derivedTokenSigningSecret = derivedTokenSigningSecret;
|
|
276
|
+
this.derivedRefreshTokenSigningSecret = derivedRefreshTokenSigningSecret;
|
|
277
|
+
this.derivedSecretResetTokenSigningSecret = derivedSecretResetTokenSigningSecret;
|
|
279
278
|
}
|
|
280
279
|
async getHash(secret, salt) {
|
|
281
280
|
const key = await (0, import_cryptography.importPbkdf2Key)(secret);
|
|
@@ -67,8 +67,7 @@ var __param = function(paramIndex, decorator) {
|
|
|
67
67
|
decorator(target, key, paramIndex);
|
|
68
68
|
};
|
|
69
69
|
};
|
|
70
|
-
|
|
71
|
-
let NodeHttpServer = NodeHttpServer_1 = class NodeHttpServer2 extends import_http_server.HttpServer {
|
|
70
|
+
let NodeHttpServer = class NodeHttpServer2 extends import_http_server.HttpServer {
|
|
72
71
|
httpServer;
|
|
73
72
|
sockets;
|
|
74
73
|
requestIterable;
|
|
@@ -170,9 +169,9 @@ let NodeHttpServer = NodeHttpServer_1 = class NodeHttpServer2 extends import_htt
|
|
|
170
169
|
return item;
|
|
171
170
|
}
|
|
172
171
|
};
|
|
173
|
-
NodeHttpServer =
|
|
172
|
+
NodeHttpServer = __decorate([
|
|
174
173
|
(0, import_container.singleton)(),
|
|
175
|
-
__param(0, (0, import_container.resolveArg)(
|
|
174
|
+
__param(0, (0, import_container.resolveArg)("NodeHttpServer")),
|
|
176
175
|
__metadata("design:paramtypes", [import_logger.Logger])
|
|
177
176
|
], NodeHttpServer);
|
|
178
177
|
function getResponder(httpResponse) {
|
|
@@ -44,18 +44,17 @@ var __param = function(paramIndex, decorator) {
|
|
|
44
44
|
decorator(target, key, paramIndex);
|
|
45
45
|
};
|
|
46
46
|
};
|
|
47
|
-
var MongoKeyValueRepository_1;
|
|
48
47
|
const indexes = [
|
|
49
48
|
{ key: { module: 1, key: 1 }, unique: true }
|
|
50
49
|
];
|
|
51
|
-
let MongoKeyValueRepository =
|
|
50
|
+
let MongoKeyValueRepository = class MongoKeyValueRepository2 extends import_mongo.MongoEntityRepository {
|
|
52
51
|
constructor(collection, logger) {
|
|
53
52
|
super(collection, import_mongo.noopTransformer, { logger, indexes });
|
|
54
53
|
}
|
|
55
54
|
};
|
|
56
|
-
MongoKeyValueRepository =
|
|
55
|
+
MongoKeyValueRepository = __decorate([
|
|
57
56
|
(0, import_container.singleton)({ defaultArgumentProvider: (context) => context.resolve(import_tokens.DEFAULT_KEY_VALUE_REPOSITORY_CONFIG) }),
|
|
58
57
|
__param(0, (0, import_container.forwardArg)()),
|
|
59
|
-
__param(1, (0, import_container.resolveArg)(
|
|
58
|
+
__param(1, (0, import_container.resolveArg)("MongoKeyValueRepository")),
|
|
60
59
|
__metadata("design:paramtypes", [import_mongo.Collection, import_logger.Logger])
|
|
61
60
|
], MongoKeyValueRepository);
|
package/mail/mail.service.js
CHANGED
|
@@ -49,8 +49,7 @@ var __param = function(paramIndex, decorator) {
|
|
|
49
49
|
decorator(target, key, paramIndex);
|
|
50
50
|
};
|
|
51
51
|
};
|
|
52
|
-
|
|
53
|
-
let MailService = MailService_1 = class MailService2 {
|
|
52
|
+
let MailService = class MailService2 {
|
|
54
53
|
mailClient;
|
|
55
54
|
templateService;
|
|
56
55
|
mailLogRepository;
|
|
@@ -99,11 +98,11 @@ let MailService = MailService_1 = class MailService2 {
|
|
|
99
98
|
return this.send(fullMailData, name);
|
|
100
99
|
}
|
|
101
100
|
};
|
|
102
|
-
MailService =
|
|
101
|
+
MailService = __decorate([
|
|
103
102
|
(0, import_container.singleton)(),
|
|
104
103
|
__param(2, (0, import_container.inject)(import_mail_log_repository.MailLogRepository)),
|
|
105
104
|
__param(2, (0, import_container.optional)()),
|
|
106
|
-
__param(3, (0, import_container.resolveArg)(
|
|
105
|
+
__param(3, (0, import_container.resolveArg)("MailService")),
|
|
107
106
|
__param(4, (0, import_container.inject)(import_tokens.MAIL_DEFAULT_DATA)),
|
|
108
107
|
__param(4, (0, import_container.optional)()),
|
|
109
108
|
__metadata("design:paramtypes", [
|
package/migration/migrator.js
CHANGED
|
@@ -50,8 +50,7 @@ var __param = function(paramIndex, decorator) {
|
|
|
50
50
|
decorator(target, key, paramIndex);
|
|
51
51
|
};
|
|
52
52
|
};
|
|
53
|
-
|
|
54
|
-
let Migrator = Migrator_1 = class Migrator2 {
|
|
53
|
+
let Migrator = class Migrator2 {
|
|
55
54
|
migrationStateRepository;
|
|
56
55
|
lockProvider;
|
|
57
56
|
logger;
|
|
@@ -109,9 +108,9 @@ let Migrator = Migrator_1 = class Migrator2 {
|
|
|
109
108
|
return result;
|
|
110
109
|
}
|
|
111
110
|
};
|
|
112
|
-
Migrator =
|
|
111
|
+
Migrator = __decorate([
|
|
113
112
|
(0, import_container.singleton)(),
|
|
114
113
|
__param(1, (0, import_container.resolveArg)("migrator:")),
|
|
115
|
-
__param(2, (0, import_container.resolveArg)(
|
|
114
|
+
__param(2, (0, import_container.resolveArg)("Migrator")),
|
|
116
115
|
__metadata("design:paramtypes", [import_migration_state_repository.MigrationStateRepository, import_lock.LockProvider, import_logger.Logger])
|
|
117
116
|
], Migrator);
|
|
@@ -45,18 +45,17 @@ var __param = function(paramIndex, decorator) {
|
|
|
45
45
|
decorator(target, key, paramIndex);
|
|
46
46
|
};
|
|
47
47
|
};
|
|
48
|
-
var MongoMigrationStateRepository_1;
|
|
49
48
|
const indexes = [
|
|
50
49
|
{ key: { name: 1 }, unique: true }
|
|
51
50
|
];
|
|
52
|
-
let MongoMigrationStateRepository =
|
|
51
|
+
let MongoMigrationStateRepository = class MongoMigrationStateRepository2 extends import_mongo_entity_repository.MongoEntityRepository {
|
|
53
52
|
constructor(collection, logger) {
|
|
54
53
|
super(collection, import_mongo_entity_repository.noopTransformer, { logger, indexes });
|
|
55
54
|
}
|
|
56
55
|
};
|
|
57
|
-
MongoMigrationStateRepository =
|
|
56
|
+
MongoMigrationStateRepository = __decorate([
|
|
58
57
|
(0, import_container.singleton)({ defaultArgumentProvider: () => import_module.mongoMigrationStateRepositoryModuleConfig.defaultMigrationStateRepositoryConfig }),
|
|
59
58
|
__param(0, (0, import_container.forwardArg)()),
|
|
60
|
-
__param(1, (0, import_container.resolveArg)(
|
|
59
|
+
__param(1, (0, import_container.resolveArg)("MongoMigrationStateRepository")),
|
|
61
60
|
__metadata("design:paramtypes", [import_classes.Collection, import_logger.Logger])
|
|
62
61
|
], MongoMigrationStateRepository);
|
|
@@ -45,7 +45,6 @@ var __param = function(paramIndex, decorator) {
|
|
|
45
45
|
decorator(target, key, paramIndex);
|
|
46
46
|
};
|
|
47
47
|
};
|
|
48
|
-
var MongoOidcStateRepository_1;
|
|
49
48
|
let repositoryConfig;
|
|
50
49
|
const indexes = [
|
|
51
50
|
{ key: { value: 1 }, unique: true },
|
|
@@ -58,15 +57,15 @@ const transformer = {
|
|
|
58
57
|
expiration: (0, import_mongo.mapTo)("expiration", (timestamp) => new Date(timestamp))
|
|
59
58
|
}
|
|
60
59
|
};
|
|
61
|
-
let MongoOidcStateRepository =
|
|
60
|
+
let MongoOidcStateRepository = class MongoOidcStateRepository2 extends import_mongo.MongoEntityRepository {
|
|
62
61
|
constructor(collection, logger) {
|
|
63
62
|
super(collection, transformer, { logger, indexes });
|
|
64
63
|
}
|
|
65
64
|
};
|
|
66
|
-
MongoOidcStateRepository =
|
|
65
|
+
MongoOidcStateRepository = __decorate([
|
|
67
66
|
(0, import_container.singleton)({ defaultArgumentProvider: () => repositoryConfig }),
|
|
68
67
|
__param(0, (0, import_container.forwardArg)()),
|
|
69
|
-
__param(1, (0, import_container.resolveArg)(
|
|
68
|
+
__param(1, (0, import_container.resolveArg)("MongoOidcStateRepository")),
|
|
70
69
|
__metadata("design:paramtypes", [import_mongo.Collection, import_logger.Logger])
|
|
71
70
|
], MongoOidcStateRepository);
|
|
72
71
|
function configureMongoOidcStateRepository(mongoOidcStateRepositoryConfig, register = true) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tstdl/base",
|
|
3
|
-
"version": "0.83.
|
|
3
|
+
"version": "0.83.2",
|
|
4
4
|
"author": "Patrick Hein",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"@elastic/elasticsearch": "^8.6",
|
|
46
46
|
"@koa/router": "^12.0",
|
|
47
|
-
"@tstdl/angular": "^0.
|
|
47
|
+
"@tstdl/angular": "^0.83",
|
|
48
48
|
"@zxcvbn-ts/core": "2.2",
|
|
49
49
|
"@zxcvbn-ts/language-common": "2.0",
|
|
50
50
|
"@zxcvbn-ts/language-de": "2.1",
|
package/types.d.ts
CHANGED
|
@@ -83,10 +83,10 @@ type FromEntriesEntryValue<T extends readonly (readonly [any, any])[], K> = Extr
|
|
|
83
83
|
export type FromEntries<T> = T extends readonly (readonly [infer Key, any])[] ? {
|
|
84
84
|
[K in Cast<Key, PropertyKey>]: Fallback<FromEntriesEntryValue<T, K>, T[number][1]>;
|
|
85
85
|
} : never;
|
|
86
|
-
export type Writable<T> = {
|
|
86
|
+
export type Writable<T> = T extends readonly (infer U)[] ? U[] : {
|
|
87
87
|
-readonly [P in keyof T]: T[P];
|
|
88
88
|
};
|
|
89
|
-
export type DeepWritable<T> = {
|
|
89
|
+
export type DeepWritable<T> = T extends readonly (infer U)[] ? DeepWritable<U>[] : {
|
|
90
90
|
-readonly [P in keyof T]: DeepWritable<T[P]>;
|
|
91
91
|
};
|
|
92
92
|
export type RequiredKeys<T> = {
|
package/utils/cryptography.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { BinaryData, TypedExtract } from '../types.js';
|
|
2
|
+
import type { ReadonlyTuple } from 'type-fest';
|
|
2
3
|
export type AesMode = 'CBC' | 'CTR' | 'GCM' | 'KW';
|
|
3
4
|
export type EcdsaCurve = 'P-256' | 'P-384' | 'P-521';
|
|
4
5
|
export type HashAlgorithm = 'SHA-1' | 'SHA-256' | 'SHA-384' | 'SHA-512';
|
|
@@ -104,3 +105,13 @@ export declare function generateEcdsaKey(curve: EcdsaCurve, extractable?: boolea
|
|
|
104
105
|
* @param extractable whether the key can be used for exportKey
|
|
105
106
|
*/
|
|
106
107
|
export declare function generatePbkdf2Key(extractable?: boolean): Promise<CryptoKey>;
|
|
108
|
+
type AlgorithmParameter = Parameters<typeof globalThis.crypto.subtle.deriveBits>['0'];
|
|
109
|
+
/**
|
|
110
|
+
* derive multiply byte arrays
|
|
111
|
+
* @param count how many Uint8Arrays to dervice
|
|
112
|
+
* @param length length of each Uint8Array in bytes
|
|
113
|
+
* @param algorithm algorithm to derive with
|
|
114
|
+
* @param baseKey key to derive from
|
|
115
|
+
*/
|
|
116
|
+
export declare function deriveBytesMultiple<C extends number>(count: C, length: number, algorithm: AlgorithmParameter, baseKey: CryptoKey): Promise<ReadonlyTuple<Uint8Array, C>>;
|
|
117
|
+
export {};
|
package/utils/cryptography.js
CHANGED
|
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var cryptography_exports = {};
|
|
20
20
|
__export(cryptography_exports, {
|
|
21
21
|
decrypt: () => decrypt,
|
|
22
|
+
deriveBytesMultiple: () => deriveBytesMultiple,
|
|
22
23
|
digest: () => digest,
|
|
23
24
|
encrypt: () => encrypt,
|
|
24
25
|
generateEcdsaKey: () => generateEcdsaKey,
|
|
@@ -31,6 +32,7 @@ __export(cryptography_exports, {
|
|
|
31
32
|
verify: () => verify
|
|
32
33
|
});
|
|
33
34
|
module.exports = __toCommonJS(cryptography_exports);
|
|
35
|
+
var import_array = require("./array/array.js");
|
|
34
36
|
var import_base64 = require("./base64.js");
|
|
35
37
|
var import_encoding = require("./encoding.js");
|
|
36
38
|
var import_random = require("./random.js");
|
|
@@ -120,6 +122,11 @@ async function generatePbkdf2Key(extractable = false) {
|
|
|
120
122
|
const key = (0, import_random.getRandomBytes)(16);
|
|
121
123
|
return importPbkdf2Key(key, extractable);
|
|
122
124
|
}
|
|
125
|
+
async function deriveBytesMultiple(count, length, algorithm, baseKey) {
|
|
126
|
+
const totalBits = count * length * 8;
|
|
127
|
+
const bytes = await globalThis.crypto.subtle.deriveBits(algorithm, baseKey, totalBits);
|
|
128
|
+
return (0, import_array.createArray)(count, (index) => new Uint8Array(bytes.slice(index * length, index * length + length)));
|
|
129
|
+
}
|
|
123
130
|
function isBinaryKey(key) {
|
|
124
131
|
return (0, import_type_guards.isDefined)(key.byteLength);
|
|
125
132
|
}
|