@furystack/security 3.0.8 → 3.0.10
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/esm/crypto-password-hasher.js +4 -5
- package/esm/crypto-password-hasher.js.map +1 -1
- package/esm/errors/password-complexity-error.js +1 -0
- package/esm/errors/password-complexity-error.js.map +1 -1
- package/esm/models/password-credential.js +16 -0
- package/esm/models/password-credential.js.map +1 -1
- package/esm/models/password-reset-token.js +12 -0
- package/esm/models/password-reset-token.js.map +1 -1
- package/esm/password-authenticator.js +7 -6
- package/esm/password-authenticator.js.map +1 -1
- package/esm/password-hasher.js +2 -1
- package/esm/password-hasher.js.map +1 -1
- package/esm/security-policy-manager.js +3 -1
- package/esm/security-policy-manager.js.map +1 -1
- package/esm/security-policy.js +22 -23
- package/esm/security-policy.js.map +1 -1
- package/package.json +7 -7
|
@@ -6,11 +6,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { Injectable } from '@furystack/inject';
|
|
8
8
|
import { randomBytes, pbkdf2 } from 'crypto';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
this.keylen = 64;
|
|
13
|
-
}
|
|
9
|
+
let CryptoPasswordHasher = class CryptoPasswordHasher {
|
|
10
|
+
iterations = 1000;
|
|
11
|
+
keylen = 64;
|
|
14
12
|
async verifyCredential(password, { passwordHash, salt }) {
|
|
15
13
|
const newHash = await new Promise((resolve, reject) => pbkdf2(password, salt, this.iterations, this.keylen, 'sha512', (err, key) => err ? reject(err) : resolve(key.toString('hex'))));
|
|
16
14
|
if (newHash === passwordHash) {
|
|
@@ -37,4 +35,5 @@ export let CryptoPasswordHasher = class CryptoPasswordHasher {
|
|
|
37
35
|
CryptoPasswordHasher = __decorate([
|
|
38
36
|
Injectable({ lifetime: 'singleton' })
|
|
39
37
|
], CryptoPasswordHasher);
|
|
38
|
+
export { CryptoPasswordHasher };
|
|
40
39
|
//# sourceMappingURL=crypto-password-hasher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto-password-hasher.js","sourceRoot":"","sources":["../src/crypto-password-hasher.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAIrC,
|
|
1
|
+
{"version":3,"file":"crypto-password-hasher.js","sourceRoot":"","sources":["../src/crypto-password-hasher.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAIrC,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACd,UAAU,GAAG,IAAI,CAAA;IACjB,MAAM,GAAG,EAAE,CAAA;IAErB,KAAK,CAAC,gBAAgB,CAC3B,QAAgB,EAChB,EAAE,YAAY,EAAE,IAAI,EAAsB;QAE1C,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CACpD,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAC1E,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACjD,CACF,CAAA;QACD,IAAI,OAAO,KAAK,YAAY,EAAE;YAC5B,OAAO;gBACL,OAAO,EAAE,IAAI;aACd,CAAA;SACF;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,uBAAuB;SAChC,CAAA;IACH,CAAC;IACM,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,QAAgB;QAC9D,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,YAAY,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CACjE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAC1E,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACjD,CACF,CAAA;QACD,OAAO;YACL,QAAQ;YACR,IAAI;YACJ,YAAY;YACZ,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC,CAAA;IACH,CAAC;CACF,CAAA;AArCY,oBAAoB;IADhC,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,oBAAoB,CAqChC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-complexity-error.js","sourceRoot":"","sources":["../../src/errors/password-complexity-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"password-complexity-error.js","sourceRoot":"","sources":["../../src/errors/password-complexity-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAM9B;IALlB;;;OAGG;IACH,YACkB,MAAgD,EAChE,OAAgB;QAEhB,KAAK,CAAC,OAAO,CAAC,CAAA;QAHE,WAAM,GAAN,MAAM,CAA0C;IAIlE,CAAC;CACF"}
|
|
@@ -2,5 +2,21 @@
|
|
|
2
2
|
* Entry that stores credential info for password login
|
|
3
3
|
*/
|
|
4
4
|
export class PasswordCredential {
|
|
5
|
+
/**
|
|
6
|
+
* The unique name of the user
|
|
7
|
+
*/
|
|
8
|
+
userName;
|
|
9
|
+
/**
|
|
10
|
+
* The hashed password value
|
|
11
|
+
*/
|
|
12
|
+
passwordHash;
|
|
13
|
+
/**
|
|
14
|
+
* Salt value for password hashing // TODO
|
|
15
|
+
*/
|
|
16
|
+
salt;
|
|
17
|
+
/**
|
|
18
|
+
* The Creation date in ISO String format
|
|
19
|
+
*/
|
|
20
|
+
creationDate;
|
|
5
21
|
}
|
|
6
22
|
//# sourceMappingURL=password-credential.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-credential.js","sourceRoot":"","sources":["../../src/models/password-credential.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,kBAAkB;
|
|
1
|
+
{"version":3,"file":"password-credential.js","sourceRoot":"","sources":["../../src/models/password-credential.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAC7B;;OAEG;IACH,QAAQ,CAAS;IACjB;;OAEG;IACH,YAAY,CAAS;IAErB;;OAEG;IACH,IAAI,CAAS;IAEb;;OAEG;IACH,YAAY,CAAS;CACtB"}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
1
|
export class PasswordResetToken {
|
|
2
|
+
/**
|
|
3
|
+
* The related user name
|
|
4
|
+
*/
|
|
5
|
+
userName;
|
|
6
|
+
/**
|
|
7
|
+
* The Token value - should be some kind of generated UUID that can be included e.g. in URLs
|
|
8
|
+
*/
|
|
9
|
+
token;
|
|
10
|
+
/**
|
|
11
|
+
* The creation date in an ISO datetime format
|
|
12
|
+
*/
|
|
13
|
+
createdAt;
|
|
2
14
|
}
|
|
3
15
|
//# sourceMappingURL=password-reset-token.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-reset-token.js","sourceRoot":"","sources":["../../src/models/password-reset-token.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAkB;
|
|
1
|
+
{"version":3,"file":"password-reset-token.js","sourceRoot":"","sources":["../../src/models/password-reset-token.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAkB;IAC7B;;OAEG;IACH,QAAQ,CAAS;IACjB;;OAEG;IACH,KAAK,CAAS;IACd;;OAEG;IACH,SAAS,CAAS;CACnB"}
|
|
@@ -13,12 +13,10 @@ import { SecurityPolicyManager } from './security-policy-manager.js';
|
|
|
13
13
|
import { UnauthenticatedError } from './errors/index.js';
|
|
14
14
|
import { PasswordCredential, PasswordResetToken } from './models/index.js';
|
|
15
15
|
import { PasswordComplexityError } from './errors/password-complexity-error.js';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
this.getHasher = () => this.injector.getInstance(this.policyManager.policy.hasher);
|
|
21
|
-
}
|
|
16
|
+
let PasswordAuthenticator = class PasswordAuthenticator {
|
|
17
|
+
getPasswordStore = () => this.injector.getInstance(StoreManager).getStoreFor(PasswordCredential, 'userName');
|
|
18
|
+
getTokenStore = () => this.injector.getInstance(StoreManager).getStoreFor(PasswordResetToken, 'token');
|
|
19
|
+
getHasher = () => this.injector.getInstance(this.policyManager.policy.hasher);
|
|
22
20
|
/**
|
|
23
21
|
* @param userName The User's unique name
|
|
24
22
|
* @param plainPassword The plain password to check
|
|
@@ -87,6 +85,8 @@ export let PasswordAuthenticator = class PasswordAuthenticator {
|
|
|
87
85
|
existing && (await store.remove(existing.userName));
|
|
88
86
|
await store.add(newCredential);
|
|
89
87
|
}
|
|
88
|
+
injector;
|
|
89
|
+
policyManager;
|
|
90
90
|
};
|
|
91
91
|
__decorate([
|
|
92
92
|
Injected(Injector),
|
|
@@ -99,4 +99,5 @@ __decorate([
|
|
|
99
99
|
PasswordAuthenticator = __decorate([
|
|
100
100
|
Injectable({ lifetime: 'singleton' })
|
|
101
101
|
], PasswordAuthenticator);
|
|
102
|
+
export { PasswordAuthenticator };
|
|
102
103
|
//# sourceMappingURL=password-authenticator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-authenticator.js","sourceRoot":"","sources":["../src/password-authenticator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AAGxE,
|
|
1
|
+
{"version":3,"file":"password-authenticator.js","sourceRoot":"","sources":["../src/password-authenticator.ts"],"names":[],"mappings":"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"}
|
package/esm/password-hasher.js
CHANGED
|
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { Injectable } from '@furystack/inject';
|
|
8
|
-
|
|
8
|
+
let PasswordHasher = class PasswordHasher {
|
|
9
9
|
createCredential(_userName, _password) {
|
|
10
10
|
throw Error('Set up hasher - TODO');
|
|
11
11
|
}
|
|
@@ -16,4 +16,5 @@ export let PasswordHasher = class PasswordHasher {
|
|
|
16
16
|
PasswordHasher = __decorate([
|
|
17
17
|
Injectable({ lifetime: 'singleton' })
|
|
18
18
|
], PasswordHasher);
|
|
19
|
+
export { PasswordHasher };
|
|
19
20
|
//# sourceMappingURL=password-hasher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-hasher.js","sourceRoot":"","sources":["../src/password-hasher.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAIvC,
|
|
1
|
+
{"version":3,"file":"password-hasher.js","sourceRoot":"","sources":["../src/password-hasher.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAIvC,IAAM,cAAc,GAApB,MAAM,cAAc;IAClB,gBAAgB,CAAC,SAAiB,EAAE,SAAiB;QAC1D,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;IAEM,gBAAgB,CAAC,SAAiB,EAAE,WAA+B;QACxE,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;CACF,CAAA;AARY,cAAc;IAD1B,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,cAAc,CAQ1B"}
|
|
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import { Injectable, Injected } from '@furystack/inject';
|
|
11
11
|
import { SecurityPolicy } from './security-policy.js';
|
|
12
|
-
|
|
12
|
+
let SecurityPolicyManager = class SecurityPolicyManager {
|
|
13
13
|
/**
|
|
14
14
|
* @param password The Plain password string
|
|
15
15
|
* @returns if the password matches the complexity rules
|
|
@@ -45,6 +45,7 @@ export let SecurityPolicyManager = class SecurityPolicyManager {
|
|
|
45
45
|
const now = new Date();
|
|
46
46
|
return now > tokenExpiration;
|
|
47
47
|
}
|
|
48
|
+
policy;
|
|
48
49
|
};
|
|
49
50
|
__decorate([
|
|
50
51
|
Injected(SecurityPolicy),
|
|
@@ -53,4 +54,5 @@ __decorate([
|
|
|
53
54
|
SecurityPolicyManager = __decorate([
|
|
54
55
|
Injectable({ lifetime: 'singleton' })
|
|
55
56
|
], SecurityPolicyManager);
|
|
57
|
+
export { SecurityPolicyManager };
|
|
56
58
|
//# sourceMappingURL=security-policy-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-policy-manager.js","sourceRoot":"","sources":["../src/security-policy-manager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG9C,
|
|
1
|
+
{"version":3,"file":"security-policy-manager.js","sourceRoot":"","sources":["../src/security-policy-manager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG9C,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC;;;OAGG;IACI,KAAK,CAAC,4BAA4B,CAAC,QAAgB;QACxD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACzG,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAA;QACxD,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,OAAO;gBACL,KAAK,EAAE,KAAc;gBACrB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAGnF;aACH,CAAA;SACF;QAED,OAAO;YACL,KAAK,EAAE,IAAa;SACrB,CAAA;IACH,CAAC;IAEM,kBAAkB,CAAC,UAA8B;QACtD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;YACvC,OAAO,KAAK,CAAA;SACb;QACD,MAAM,oBAAoB,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAC9D,oBAAoB,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;QACjG,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,OAAO,GAAG,GAAG,oBAAoB,CAAA;IACnC,CAAC;IAEM,eAAe,CAAC,KAAyB;QAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE;YAC5C,OAAO,KAAK,CAAA;SACb;QACD,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACjD,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAA;QAClG,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,OAAO,GAAG,GAAG,eAAe,CAAA;IAC9B,CAAC;IAGe,MAAM,CAAiB;CACxC,CAAA;AADiB;IADf,QAAQ,CAAC,cAAc,CAAC;8BACA,cAAc;qDAAA;AA5C5B,qBAAqB;IADjC,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,qBAAqB,CA6CjC"}
|
package/esm/security-policy.js
CHANGED
|
@@ -6,31 +6,30 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { Injectable } from '@furystack/inject';
|
|
8
8
|
import { CryptoPasswordHasher } from './crypto-password-hasher.js';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
this.resetTokenExpirationSeconds = 15;
|
|
31
|
-
}
|
|
9
|
+
let SecurityPolicy = class SecurityPolicy {
|
|
10
|
+
/**
|
|
11
|
+
* A Hasher instance for password hash generation
|
|
12
|
+
*/
|
|
13
|
+
hasher = CryptoPasswordHasher;
|
|
14
|
+
/**
|
|
15
|
+
* Array of password complexity rules to apply
|
|
16
|
+
*/
|
|
17
|
+
passwordComplexityRules = [];
|
|
18
|
+
/**
|
|
19
|
+
* The password expiration in days
|
|
20
|
+
*/
|
|
21
|
+
passwordExpirationDays = 0;
|
|
22
|
+
/**
|
|
23
|
+
* Defines if the login needs a second factor authentication
|
|
24
|
+
*/
|
|
25
|
+
requireSecondFactor = 'never'; // TODO - Challenge based on trusted devices
|
|
26
|
+
/**
|
|
27
|
+
* The Password Reset Token expiration in seconds
|
|
28
|
+
*/
|
|
29
|
+
resetTokenExpirationSeconds = 15;
|
|
32
30
|
};
|
|
33
31
|
SecurityPolicy = __decorate([
|
|
34
32
|
Injectable({ lifetime: 'singleton' })
|
|
35
33
|
], SecurityPolicy);
|
|
34
|
+
export { SecurityPolicy };
|
|
36
35
|
//# sourceMappingURL=security-policy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-policy.js","sourceRoot":"","sources":["../src/security-policy.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAK3D,
|
|
1
|
+
{"version":3,"file":"security-policy.js","sourceRoot":"","sources":["../src/security-policy.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAK3D,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB;;OAEG;IACH,MAAM,GAAkC,oBAAoB,CAAA;IAE5D;;OAEG;IACH,uBAAuB,GAA6B,EAAE,CAAA;IAEtD;;OAEG;IACH,sBAAsB,GAAG,CAAC,CAAA;IAE1B;;OAEG;IACH,mBAAmB,GAAuB,OAAO,CAAA,CAAC,4CAA4C;IAE9F;;OAEG;IACH,2BAA2B,GAAG,EAAE,CAAA;CACjC,CAAA;AAzBY,cAAc;IAD1B,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,cAAc,CAyB1B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@furystack/security",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.10",
|
|
4
4
|
"description": "Security, password management and authorization related stuff for FuryStack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -35,14 +35,14 @@
|
|
|
35
35
|
"url": "https://github.com/furystack/furystack/issues"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@furystack/core": "^12.0.
|
|
39
|
-
"@furystack/inject": "^8.0
|
|
40
|
-
"@furystack/utils": "^4.0.
|
|
38
|
+
"@furystack/core": "^12.0.10",
|
|
39
|
+
"@furystack/inject": "^8.1.0",
|
|
40
|
+
"@furystack/utils": "^4.0.9"
|
|
41
41
|
},
|
|
42
42
|
"homepage": "https://github.com/furystack/furystack",
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@types/node": "^20.5.
|
|
45
|
-
"typescript": "^5.
|
|
46
|
-
"vitest": "^0.34.
|
|
44
|
+
"@types/node": "^20.5.6",
|
|
45
|
+
"typescript": "^5.2.2",
|
|
46
|
+
"vitest": "^0.34.3"
|
|
47
47
|
}
|
|
48
48
|
}
|