@nivinjoseph/n-sec 5.0.4 → 6.0.1
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 +13 -4
- package/.vscode/settings.json +103 -0
- package/.yarn/releases/yarn-4.0.2.cjs +893 -0
- package/.yarnrc.yml +3 -0
- package/dist/api-security/alg-type.d.ts +1 -0
- package/dist/api-security/alg-type.d.ts.map +1 -0
- package/dist/api-security/alg-type.js +2 -5
- package/dist/api-security/alg-type.js.map +1 -1
- package/dist/api-security/claim.d.ts +1 -0
- package/dist/api-security/claim.d.ts.map +1 -0
- package/dist/api-security/claim.js +5 -9
- package/dist/api-security/claim.js.map +1 -1
- package/dist/api-security/claims-identity.d.ts +2 -1
- package/dist/api-security/claims-identity.d.ts.map +1 -0
- package/dist/api-security/claims-identity.js +4 -8
- package/dist/api-security/claims-identity.js.map +1 -1
- package/dist/api-security/expired-token-exception.d.ts +1 -0
- package/dist/api-security/expired-token-exception.d.ts.map +1 -0
- package/dist/api-security/expired-token-exception.js +5 -9
- package/dist/api-security/expired-token-exception.js.map +1 -1
- package/dist/api-security/invalid-token-exception.d.ts +1 -0
- package/dist/api-security/invalid-token-exception.d.ts.map +1 -0
- package/dist/api-security/invalid-token-exception.js +7 -11
- package/dist/api-security/invalid-token-exception.js.map +1 -1
- package/dist/api-security/json-web-token.d.ts +3 -2
- package/dist/api-security/json-web-token.d.ts.map +1 -0
- package/dist/api-security/json-web-token.js +39 -43
- package/dist/api-security/json-web-token.js.map +1 -1
- package/dist/api-security/security-token.d.ts +1 -0
- package/dist/api-security/security-token.d.ts.map +1 -0
- package/dist/api-security/security-token.js +6 -10
- package/dist/api-security/security-token.js.map +1 -1
- package/dist/bin.d.ts +1 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +15 -20
- package/dist/bin.js.map +1 -1
- package/dist/crypto/asymmetric-encryption.d.ts +2 -0
- package/dist/crypto/asymmetric-encryption.d.ts.map +1 -0
- package/dist/crypto/asymmetric-encryption.js +1 -1
- package/dist/crypto/asymmetric-encryption.js.map +1 -1
- package/dist/crypto/crypto-exception.d.ts +1 -0
- package/dist/crypto/crypto-exception.d.ts.map +1 -0
- package/dist/crypto/crypto-exception.js +2 -6
- package/dist/crypto/crypto-exception.js.map +1 -1
- package/dist/crypto/digital-signature.d.ts +2 -0
- package/dist/crypto/digital-signature.d.ts.map +1 -0
- package/dist/crypto/digital-signature.js +1 -1
- package/dist/crypto/digital-signature.js.map +1 -1
- package/dist/crypto/hash.d.ts +1 -0
- package/dist/crypto/hash.d.ts.map +1 -0
- package/dist/crypto/hash.js +9 -12
- package/dist/crypto/hash.js.map +1 -1
- package/dist/crypto/hmac.d.ts +1 -0
- package/dist/crypto/hmac.d.ts.map +1 -0
- package/dist/crypto/hmac.js +6 -10
- package/dist/crypto/hmac.js.map +1 -1
- package/dist/crypto/symmetric-encryption.d.ts +1 -0
- package/dist/crypto/symmetric-encryption.d.ts.map +1 -0
- package/dist/crypto/symmetric-encryption.js +13 -17
- package/dist/crypto/symmetric-encryption.js.map +1 -1
- package/dist/index.d.ts +14 -12
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -27
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.json +2 -1
- package/package.json +23 -24
- package/src/api-security/claims-identity.ts +1 -1
- package/src/api-security/json-web-token.ts +21 -21
- package/src/bin.ts +1 -1
- package/src/crypto/hash.ts +11 -9
- package/src/crypto/hmac.ts +7 -7
- package/src/crypto/symmetric-encryption.ts +11 -11
- package/src/index.ts +19 -18
- package/test/asymmetric-encryption.test.ts +37 -37
- package/test/digital-signature.test.ts +22 -22
- package/test/hash.test.ts +120 -105
- package/test/hmac.test.ts +56 -55
- package/test/json-web-token.test.ts +95 -95
- package/test/other.test.ts +8 -7
- package/test/symmetric-encryption.test.ts +49 -48
- package/tsconfig.json +8 -5
package/.yarnrc.yml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alg-type.d.ts","sourceRoot":"","sources":["../../src/api-security/alg-type.ts"],"names":[],"mappings":"AACA,oBAAY,OAAO;IAEf,IAAI,IAAI;CAEX"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AlgType = void 0;
|
|
4
1
|
// public
|
|
5
|
-
var AlgType;
|
|
2
|
+
export var AlgType;
|
|
6
3
|
(function (AlgType) {
|
|
7
4
|
AlgType[AlgType["hmac"] = 1] = "hmac";
|
|
8
5
|
// dsig = 2
|
|
9
|
-
})(AlgType
|
|
6
|
+
})(AlgType || (AlgType = {}));
|
|
10
7
|
//# sourceMappingURL=alg-type.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alg-type.js","sourceRoot":"","sources":["../../src/api-security/alg-type.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"alg-type.js","sourceRoot":"","sources":["../../src/api-security/alg-type.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,MAAM,CAAN,IAAY,OAIX;AAJD,WAAY,OAAO;IAEf,qCAAQ,CAAA;IACR,WAAW;AACf,CAAC,EAJW,OAAO,KAAP,OAAO,QAIlB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../../src/api-security/claim.ts"],"names":[],"mappings":"AAIA,qBAAa,KAAK;IAEd,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAGjC,IAAW,IAAI,IAAI,MAAM,CAAuB;IAChD,IAAW,KAAK,IAAI,OAAO,CAAwB;gBAGhC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IASxC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;CAWvC"}
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Claim = void 0;
|
|
4
|
-
const n_defensive_1 = require("@nivinjoseph/n-defensive");
|
|
1
|
+
import { given } from "@nivinjoseph/n-defensive";
|
|
5
2
|
// public
|
|
6
|
-
class Claim {
|
|
3
|
+
export class Claim {
|
|
4
|
+
get type() { return this._type; }
|
|
5
|
+
get value() { return this._value; }
|
|
7
6
|
constructor(type, value) {
|
|
8
|
-
|
|
7
|
+
given(type, "type").ensureHasValue().ensureIsString();
|
|
9
8
|
this._type = type.trim();
|
|
10
9
|
this._value = value;
|
|
11
10
|
}
|
|
12
|
-
get type() { return this._type; }
|
|
13
|
-
get value() { return this._value; }
|
|
14
11
|
equals(claim) {
|
|
15
12
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
16
13
|
if (claim == null)
|
|
@@ -20,5 +17,4 @@ class Claim {
|
|
|
20
17
|
return this.type === claim.type && this.value === claim.value;
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
|
-
exports.Claim = Claim;
|
|
24
20
|
//# sourceMappingURL=claim.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim.js","sourceRoot":"","sources":["../../src/api-security/claim.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claim.js","sourceRoot":"","sources":["../../src/api-security/claim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGjD,SAAS;AACT,MAAM,OAAO,KAAK;IAMd,IAAW,IAAI,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,IAAW,KAAK,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAGnD,YAAmB,IAAY,EAAE,KAAc;QAE3C,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,CAAC;QAEtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAGM,MAAM,CAAC,KAAY;QAEtB,uEAAuE;QACvE,IAAI,KAAK,IAAI,IAAI;YACb,OAAO,KAAK,CAAC;QAEjB,IAAI,KAAK,KAAK,IAAI;YACd,OAAO,IAAI,CAAC;QAEhB,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;IAClE,CAAC;CACJ"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Claim } from "./claim";
|
|
1
|
+
import { Claim } from "./claim.js";
|
|
2
2
|
export declare class ClaimsIdentity {
|
|
3
3
|
private readonly _claims;
|
|
4
4
|
get claims(): ReadonlyArray<Claim>;
|
|
5
5
|
constructor(claims: ReadonlyArray<Claim>);
|
|
6
6
|
hasClaim(claim: Claim): boolean;
|
|
7
7
|
}
|
|
8
|
+
//# sourceMappingURL=claims-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claims-identity.d.ts","sourceRoot":"","sources":["../../src/api-security/claims-identity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAInC,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAGvC,IAAW,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,CAAyB;gBAG/C,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;IAQxC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;CAIzC"}
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ClaimsIdentity = void 0;
|
|
4
|
-
const n_defensive_1 = require("@nivinjoseph/n-defensive");
|
|
1
|
+
import { given } from "@nivinjoseph/n-defensive";
|
|
5
2
|
// public
|
|
6
|
-
class ClaimsIdentity {
|
|
3
|
+
export class ClaimsIdentity {
|
|
4
|
+
get claims() { return this._claims; }
|
|
7
5
|
constructor(claims) {
|
|
8
|
-
|
|
6
|
+
given(claims, "claims").ensureHasValue().ensureIsArray();
|
|
9
7
|
this._claims = [...claims];
|
|
10
8
|
}
|
|
11
|
-
get claims() { return this._claims; }
|
|
12
9
|
hasClaim(claim) {
|
|
13
10
|
return this._claims.some(t => t.equals(claim));
|
|
14
11
|
}
|
|
15
12
|
}
|
|
16
|
-
exports.ClaimsIdentity = ClaimsIdentity;
|
|
17
13
|
//# sourceMappingURL=claims-identity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims-identity.js","sourceRoot":"","sources":["../../src/api-security/claims-identity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claims-identity.js","sourceRoot":"","sources":["../../src/api-security/claims-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAIjD,SAAS;AACT,MAAM,OAAO,cAAc;IAKvB,IAAW,MAAM,KAA2B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAGlE,YAAmB,MAA4B;QAE3C,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,cAAc,EAAE,CAAC,aAAa,EAAE,CAAC;QAEzD,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC/B,CAAC;IAGM,QAAQ,CAAC,KAAY;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expired-token-exception.d.ts","sourceRoot":"","sources":["../../src/api-security/expired-token-exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAKrD,qBAAa,qBAAsB,SAAQ,SAAS;IAEhD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAGhC,IAAW,KAAK,IAAI,MAAM,CAAwB;gBAG/B,KAAK,EAAE,MAAM;CAOnC"}
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.ExpiredTokenException = void 0;
|
|
4
|
-
const n_exception_1 = require("@nivinjoseph/n-exception");
|
|
5
|
-
const n_defensive_1 = require("@nivinjoseph/n-defensive");
|
|
1
|
+
import { Exception } from "@nivinjoseph/n-exception";
|
|
2
|
+
import { given } from "@nivinjoseph/n-defensive";
|
|
6
3
|
// public
|
|
7
|
-
class ExpiredTokenException extends
|
|
4
|
+
export class ExpiredTokenException extends Exception {
|
|
5
|
+
get token() { return this._token; }
|
|
8
6
|
constructor(token) {
|
|
9
|
-
|
|
7
|
+
given(token, "token").ensureHasValue().ensureIsString();
|
|
10
8
|
token = token.trim();
|
|
11
9
|
super(`Token '${token}' is expired.`);
|
|
12
10
|
this._token = token;
|
|
13
11
|
}
|
|
14
|
-
get token() { return this._token; }
|
|
15
12
|
}
|
|
16
|
-
exports.ExpiredTokenException = ExpiredTokenException;
|
|
17
13
|
//# sourceMappingURL=expired-token-exception.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expired-token-exception.js","sourceRoot":"","sources":["../../src/api-security/expired-token-exception.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"expired-token-exception.js","sourceRoot":"","sources":["../../src/api-security/expired-token-exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGjD,SAAS;AACT,MAAM,OAAO,qBAAsB,SAAQ,SAAS;IAKhD,IAAW,KAAK,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAGlD,YAAmB,KAAa;QAE5B,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,CAAC;QACxD,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,CAAC,UAAU,KAAK,eAAe,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalid-token-exception.d.ts","sourceRoot":"","sources":["../../src/api-security/invalid-token-exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAKrD,qBAAa,qBAAsB,SAAQ,SAAS;IAEhD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAGjC,IAAW,KAAK,IAAI,MAAM,CAAwB;IAClD,IAAW,MAAM,IAAI,MAAM,CAAyB;gBAGjC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAUnD"}
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.InvalidTokenException = void 0;
|
|
4
|
-
const n_exception_1 = require("@nivinjoseph/n-exception");
|
|
5
|
-
const n_defensive_1 = require("@nivinjoseph/n-defensive");
|
|
1
|
+
import { Exception } from "@nivinjoseph/n-exception";
|
|
2
|
+
import { given } from "@nivinjoseph/n-defensive";
|
|
6
3
|
// public
|
|
7
|
-
class InvalidTokenException extends
|
|
4
|
+
export class InvalidTokenException extends Exception {
|
|
5
|
+
get token() { return this._token; }
|
|
6
|
+
get reason() { return this._reason; }
|
|
8
7
|
constructor(token, reason) {
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
given(token, "token").ensureHasValue().ensureIsString();
|
|
9
|
+
given(reason, "reason").ensureHasValue().ensureIsString();
|
|
11
10
|
token = token.trim();
|
|
12
11
|
super(`Token '${token}' is invalid because ${reason}.`);
|
|
13
12
|
this._token = token;
|
|
14
13
|
this._reason = reason;
|
|
15
14
|
}
|
|
16
|
-
get token() { return this._token; }
|
|
17
|
-
get reason() { return this._reason; }
|
|
18
15
|
}
|
|
19
|
-
exports.InvalidTokenException = InvalidTokenException;
|
|
20
16
|
//# sourceMappingURL=invalid-token-exception.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalid-token-exception.js","sourceRoot":"","sources":["../../src/api-security/invalid-token-exception.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invalid-token-exception.js","sourceRoot":"","sources":["../../src/api-security/invalid-token-exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGjD,SAAS;AACT,MAAM,OAAO,qBAAsB,SAAQ,SAAS;IAMhD,IAAW,KAAK,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,IAAW,MAAM,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAGpD,YAAmB,KAAa,EAAE,MAAc;QAE5C,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,CAAC;QACxD,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,CAAC;QAE1D,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,CAAC,UAAU,KAAK,wBAAwB,MAAM,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;CACJ"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { AlgType } from "./alg-type.js";
|
|
2
|
+
import { Claim } from "./claim.js";
|
|
3
3
|
export declare class JsonWebToken {
|
|
4
4
|
private readonly _issuer;
|
|
5
5
|
private readonly _algType;
|
|
@@ -21,3 +21,4 @@ export declare class JsonWebToken {
|
|
|
21
21
|
generateToken(): string;
|
|
22
22
|
private _toHex;
|
|
23
23
|
}
|
|
24
|
+
//# sourceMappingURL=json-web-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-web-token.d.ts","sourceRoot":"","sources":["../../src/api-security/json-web-token.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAOnC,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAGvC,IAAW,MAAM,IAAI,MAAM,CAAyB;IACpD,IAAW,OAAO,IAAI,OAAO,CAA0B;IACvD,IAAW,GAAG,IAAI,MAAM,CAAsB;IAC9C,IAAW,gBAAgB,IAAI,OAAO,CAA4B;IAClE,IAAW,MAAM,IAAI,MAAM,CAAyB;IACpD,IAAW,SAAS,IAAI,OAAO,CAAuC;IACtE,IAAW,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,CAAyB;IAGlE,OAAO;WAmBO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAClF,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,YAAY;WAKzB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY;IAyEnG,OAAO,CAAC,MAAM,CAAC,SAAS;IAOjB,aAAa,IAAI,MAAM;IA0B9B,OAAO,CAAC,MAAM;CAMjB"}
|
|
@@ -1,23 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const hmac_1 = require("./../crypto/hmac");
|
|
10
|
-
// import { DigitalSignature } from "./../crypto/digital-signature";
|
|
11
|
-
const expired_token_exception_1 = require("./expired-token-exception");
|
|
1
|
+
import { given } from "@nivinjoseph/n-defensive";
|
|
2
|
+
import { InvalidOperationException } from "@nivinjoseph/n-exception";
|
|
3
|
+
import { Hmac } from "./../crypto/hmac.js";
|
|
4
|
+
import { AlgType } from "./alg-type.js";
|
|
5
|
+
import { Claim } from "./claim.js";
|
|
6
|
+
import { InvalidTokenException } from "./invalid-token-exception.js";
|
|
7
|
+
// import { DigitalSignature } from "./../crypto/digital-signature.js";
|
|
8
|
+
import { ExpiredTokenException } from "./expired-token-exception.js";
|
|
12
9
|
// public
|
|
13
|
-
class JsonWebToken {
|
|
10
|
+
export class JsonWebToken {
|
|
11
|
+
get issuer() { return this._issuer; }
|
|
12
|
+
get algType() { return this._algType; }
|
|
13
|
+
get key() { return this._key; }
|
|
14
|
+
get canGenerateToken() { return this._isfullKey; }
|
|
15
|
+
get expiry() { return this._expiry; }
|
|
16
|
+
get isExpired() { return this._expiry <= Date.now(); }
|
|
17
|
+
get claims() { return this._claims; }
|
|
14
18
|
constructor(issuer, algType, key, isFullKey, expiry, claims) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
given(issuer, "issuer").ensureHasValue().ensureIsString();
|
|
20
|
+
given(algType, "algType").ensureHasValue().ensureIsEnum(AlgType);
|
|
21
|
+
given(key, "key").ensureHasValue().ensureIsString();
|
|
22
|
+
given(isFullKey, "isFullKey").ensureHasValue().ensureIsBoolean();
|
|
23
|
+
given(expiry, "expiry").ensureHasValue().ensureIsNumber();
|
|
24
|
+
given(claims, "claims").ensureHasValue().ensureIsArray()
|
|
21
25
|
.ensure(t => t.isNotEmpty, "cannot be empty");
|
|
22
26
|
this._issuer = issuer.trim();
|
|
23
27
|
this._algType = algType;
|
|
@@ -26,27 +30,20 @@ class JsonWebToken {
|
|
|
26
30
|
this._expiry = expiry;
|
|
27
31
|
this._claims = [...claims];
|
|
28
32
|
}
|
|
29
|
-
get issuer() { return this._issuer; }
|
|
30
|
-
get algType() { return this._algType; }
|
|
31
|
-
get key() { return this._key; }
|
|
32
|
-
get canGenerateToken() { return this._isfullKey; }
|
|
33
|
-
get expiry() { return this._expiry; }
|
|
34
|
-
get isExpired() { return this._expiry <= Date.now(); }
|
|
35
|
-
get claims() { return this._claims; }
|
|
36
33
|
static fromClaims(issuer, algType, key, expiry, claims) {
|
|
37
34
|
return new JsonWebToken(issuer, algType, key, true, expiry, claims);
|
|
38
35
|
}
|
|
39
36
|
static fromToken(issuer, algType, key, token) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
given(issuer, "issuer").ensureHasValue();
|
|
38
|
+
given(algType, "algType").ensureHasValue().ensureIsEnum(AlgType);
|
|
39
|
+
given(key, "key").ensureHasValue();
|
|
40
|
+
given(token, "token").ensureHasValue();
|
|
44
41
|
issuer = issuer.trim();
|
|
45
42
|
key = key.trim();
|
|
46
43
|
token = token.trim();
|
|
47
44
|
const tokenSplitted = token.split(".");
|
|
48
45
|
if (tokenSplitted.length !== 3)
|
|
49
|
-
throw new
|
|
46
|
+
throw new InvalidTokenException(token, "format is incorrect");
|
|
50
47
|
const headerString = tokenSplitted[0];
|
|
51
48
|
const bodyString = tokenSplitted[1];
|
|
52
49
|
const signature = tokenSplitted[2];
|
|
@@ -54,22 +51,22 @@ class JsonWebToken {
|
|
|
54
51
|
const body = JsonWebToken._toObject(bodyString);
|
|
55
52
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
56
53
|
if (header.iss === undefined || header.iss === null)
|
|
57
|
-
throw new
|
|
54
|
+
throw new InvalidTokenException(token, "iss was not present");
|
|
58
55
|
if (header.iss !== issuer)
|
|
59
|
-
throw new
|
|
56
|
+
throw new InvalidTokenException(token, `iss was expected to be '${issuer}' but instead was '${header.iss}'`);
|
|
60
57
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
61
58
|
if (header.alg === undefined || header.alg === null)
|
|
62
|
-
throw new
|
|
59
|
+
throw new InvalidTokenException(token, "alg was not present");
|
|
63
60
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
64
61
|
if (header.alg !== algType)
|
|
65
|
-
throw new
|
|
62
|
+
throw new InvalidTokenException(token, `alg was expected to be '${algType}' but instead was '${header.alg}'`);
|
|
66
63
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
67
64
|
if (header.exp === undefined || header.exp === null)
|
|
68
|
-
throw new
|
|
65
|
+
throw new InvalidTokenException(token, "exp was not present");
|
|
69
66
|
if (typeof header.exp !== "number")
|
|
70
|
-
throw new
|
|
67
|
+
throw new InvalidTokenException(token, `exp value '${header.exp}' is invalid`);
|
|
71
68
|
if (header.exp <= Date.now())
|
|
72
|
-
throw new
|
|
69
|
+
throw new ExpiredTokenException(token);
|
|
73
70
|
// if (algType === AlgType.hmac)
|
|
74
71
|
// {
|
|
75
72
|
// let computedSignature = await Hmac.create(key, headerString + "." + bodyString);
|
|
@@ -82,12 +79,12 @@ class JsonWebToken {
|
|
|
82
79
|
// if (!verification)
|
|
83
80
|
// throw new InvalidTokenException(token, "signature could not be verified");
|
|
84
81
|
// }
|
|
85
|
-
const computedSignature =
|
|
82
|
+
const computedSignature = Hmac.create(key, headerString + "." + bodyString);
|
|
86
83
|
if (computedSignature !== signature)
|
|
87
|
-
throw new
|
|
84
|
+
throw new InvalidTokenException(token, "signature could not be verified");
|
|
88
85
|
const claims = new Array();
|
|
89
86
|
for (const item in body)
|
|
90
|
-
claims.push(new
|
|
87
|
+
claims.push(new Claim(item, body[item]));
|
|
91
88
|
return new JsonWebToken(issuer, algType, key, false, header.exp, claims);
|
|
92
89
|
}
|
|
93
90
|
static _toObject(hex) {
|
|
@@ -97,7 +94,7 @@ class JsonWebToken {
|
|
|
97
94
|
}
|
|
98
95
|
generateToken() {
|
|
99
96
|
if (!this._isfullKey)
|
|
100
|
-
throw new
|
|
97
|
+
throw new InvalidOperationException("generating token using an instance created from token");
|
|
101
98
|
const header = {
|
|
102
99
|
iss: this._issuer,
|
|
103
100
|
alg: this._algType,
|
|
@@ -109,7 +106,7 @@ class JsonWebToken {
|
|
|
109
106
|
// let signature = this._algType === AlgType.hmac
|
|
110
107
|
// ? await Hmac.create(this._key, headerAndBody)
|
|
111
108
|
// : await DigitalSignature.sign(this._key, headerAndBody);
|
|
112
|
-
const signature =
|
|
109
|
+
const signature = Hmac.create(this._key, headerAndBody);
|
|
113
110
|
const token = headerAndBody + "." + signature;
|
|
114
111
|
return token;
|
|
115
112
|
}
|
|
@@ -119,5 +116,4 @@ class JsonWebToken {
|
|
|
119
116
|
return hex.toUpperCase();
|
|
120
117
|
}
|
|
121
118
|
}
|
|
122
|
-
exports.JsonWebToken = JsonWebToken;
|
|
123
119
|
//# sourceMappingURL=json-web-token.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-web-token.js","sourceRoot":"","sources":["../../src/api-security/json-web-token.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json-web-token.js","sourceRoot":"","sources":["../../src/api-security/json-web-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-token.d.ts","sourceRoot":"","sources":["../../src/api-security/security-token.ts"],"names":[],"mappings":"AAEA,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAGhC,IAAW,MAAM,IAAI,MAAM,CAAyB;IACpD,IAAW,KAAK,IAAI,MAAM,CAAwB;gBAG/B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAYzC,QAAQ,IAAI,MAAM;CAI5B"}
|
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class SecurityToken {
|
|
1
|
+
import { given } from "@nivinjoseph/n-defensive";
|
|
2
|
+
export class SecurityToken {
|
|
3
|
+
get scheme() { return this._scheme; }
|
|
4
|
+
get token() { return this._token; }
|
|
6
5
|
constructor(scheme, token) {
|
|
7
|
-
|
|
6
|
+
given(scheme, "scheme").ensureHasValue().ensureIsString()
|
|
8
7
|
.ensure(t => !t.contains(" "), "cannot contain space");
|
|
9
8
|
this._scheme = scheme;
|
|
10
|
-
|
|
9
|
+
given(token, "token").ensureHasValue().ensureIsString()
|
|
11
10
|
.ensure(t => !t.contains(" "), "cannot contain space");
|
|
12
11
|
this._token = token;
|
|
13
12
|
}
|
|
14
|
-
get scheme() { return this._scheme; }
|
|
15
|
-
get token() { return this._token; }
|
|
16
13
|
toString() {
|
|
17
14
|
return `${this._scheme} ${this._token}`;
|
|
18
15
|
}
|
|
19
16
|
}
|
|
20
|
-
exports.SecurityToken = SecurityToken;
|
|
21
17
|
//# sourceMappingURL=security-token.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-token.js","sourceRoot":"","sources":["../../src/api-security/security-token.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"security-token.js","sourceRoot":"","sources":["../../src/api-security/security-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD,MAAM,OAAO,aAAa;IAMtB,IAAW,MAAM,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,IAAW,KAAK,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAGlD,YAAmB,MAAc,EAAE,KAAa;QAE5C,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE;aACpD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE;aAClD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAGM,QAAQ;QAEX,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;CACJ"}
|
package/dist/bin.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
CHANGED
|
@@ -1,29 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
2
|
// import { given } from "@nivinjoseph/n-defensive";
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
import { TypeHelper } from "@nivinjoseph/n-util";
|
|
4
|
+
import { SymmetricEncryption } from "./crypto/symmetric-encryption.js";
|
|
8
5
|
var SupportedCommands;
|
|
9
6
|
(function (SupportedCommands) {
|
|
10
7
|
SupportedCommands["generateSymmetricKey"] = "generate-symmetric-key";
|
|
11
8
|
})(SupportedCommands || (SupportedCommands = {}));
|
|
12
|
-
const supportedCommandsString = JSON.stringify(
|
|
13
|
-
function executeCommand(command) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
});
|
|
9
|
+
const supportedCommandsString = JSON.stringify(TypeHelper.enumTypeToTuples(SupportedCommands).map(t => t[1]));
|
|
10
|
+
async function executeCommand(command) {
|
|
11
|
+
// given(command, "command").ensureHasValue().ensureIsString();
|
|
12
|
+
switch (command) {
|
|
13
|
+
case SupportedCommands.generateSymmetricKey:
|
|
14
|
+
{
|
|
15
|
+
const key = await SymmetricEncryption.generateKey();
|
|
16
|
+
console.log("SYMMETRIC KEY => ", key);
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
default:
|
|
20
|
+
console.error(`Unknown command '${command}'. Supported commands are ${supportedCommandsString}.`);
|
|
21
|
+
}
|
|
27
22
|
}
|
|
28
23
|
const args = process.argv.slice(2);
|
|
29
24
|
if (args.length !== 1) {
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA,oDAAoD;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,IAAK,iBAGJ;AAHD,WAAK,iBAAiB;IAElB,oEAA+C,CAAA;AACnD,CAAC,EAHI,iBAAiB,KAAjB,iBAAiB,QAGrB;AAED,MAAM,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9G,KAAK,UAAU,cAAc,CAAC,OAA0B;IAEpD,+DAA+D;IAE/D,QAAQ,OAAO,EACf,CAAC;QACG,KAAK,iBAAiB,CAAC,oBAAoB;YACvC,CAAC;gBACG,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;gBACtC,MAAM;YACV,CAAC;QACL;YACI,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,6BAA6B,uBAAuB,GAAG,CAAC,CAAC;IAC1G,CAAC;AACL,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EACrB,CAAC;IACG,OAAO,CAAC,KAAK,CAAC,yDAAyD,uBAAuB,GAAG,CAAC,CAAC;IACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;AACxC,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAsB,CAAC;AAE7C,cAAc,CAAC,OAAO,CAAC;KAClB,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC3B,KAAK,CAAC,CAAC,CAAC,EAAE;IAEP,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asymmetric-encryption.d.ts","sourceRoot":"","sources":["../../src/crypto/asymmetric-encryption.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asymmetric-encryption.js","sourceRoot":"","sources":["../../src/crypto/asymmetric-encryption.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"asymmetric-encryption.js","sourceRoot":"","sources":["../../src/crypto/asymmetric-encryption.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,oDAAoD;AACpD,+BAA+B;;AAG/B,YAAY;AACZ,oCAAoC;AACpC,IAAI;AACJ,gCAAgC;AAGhC,uDAAuD;AACvD,QAAQ;AACR,iDAAiD;AACjD,oFAAoF;AACpF,QAAQ;AAER,mEAAmE;AACnE,QAAQ;AACR,6GAA6G;AAE7G,oCAAoC;AAEpC,0EAA0E;AAC1E,mFAAmF;AACnF,QAAQ;AAER,wFAAwF;AACxF,QAAQ;AACR,mIAAmI;AACnI,yGAAyG;AAEzG,0DAA0D;AAC1D,gCAAgC;AAEhC,kEAAkE;AAClE,mBAAmB;AACnB,eAAe;AACf,YAAY;AACZ,+CAA+C;AAC/C,YAAY;AACZ,wBAAwB;AACxB,YAAY;AACZ,gDAAgD;AAChD,YAAY;AACZ,4GAA4G;AAC5G,2DAA2D;AAC3D,QAAQ;AAER,6EAA6E;AAC7E,QAAQ;AACR,6GAA6G;AAC7G,yGAAyG;AAEzG,oCAAoC;AACpC,gCAAgC;AAEhC,0EAA0E;AAC1E,4GAA4G;AAC5G,6CAA6C;AAC7C,QAAQ;AACR,IAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-exception.d.ts","sourceRoot":"","sources":["../../src/crypto/crypto-exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAIrD,qBAAa,eAAgB,SAAQ,SAAS;CAC3C"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CryptoException = void 0;
|
|
4
|
-
const n_exception_1 = require("@nivinjoseph/n-exception");
|
|
1
|
+
import { Exception } from "@nivinjoseph/n-exception";
|
|
5
2
|
// public
|
|
6
|
-
class CryptoException extends
|
|
3
|
+
export class CryptoException extends Exception {
|
|
7
4
|
}
|
|
8
|
-
exports.CryptoException = CryptoException;
|
|
9
5
|
//# sourceMappingURL=crypto-exception.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto-exception.js","sourceRoot":"","sources":["../../src/crypto/crypto-exception.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"crypto-exception.js","sourceRoot":"","sources":["../../src/crypto/crypto-exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,SAAS;AACT,MAAM,OAAO,eAAgB,SAAQ,SAAS;CAC3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digital-signature.d.ts","sourceRoot":"","sources":["../../src/crypto/digital-signature.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digital-signature.js","sourceRoot":"","sources":["../../src/crypto/digital-signature.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"digital-signature.js","sourceRoot":"","sources":["../../src/crypto/digital-signature.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,oDAAoD;AACpD,+BAA+B;AAC/B,oCAAoC;;AAGpC,YAAY;AACZ,gCAAgC;AAChC,IAAI;AACJ,gCAAgC;AAGhC,0EAA0E;AAC1E,QAAQ;AACR,6GAA6G;AAC7G,yGAAyG;AAEzG,oCAAoC;AACpC,gCAAgC;AAEhC,oDAAoD;AACpD,sCAAsC;AAEtC,0EAA0E;AAC1E,4EAA4E;AAC5E,2DAA2D;AAC3D,QAAQ;AAER,iHAAiH;AACjH,QAAQ;AACR,mIAAmI;AACnI,yGAAyG;AACzG,iHAAiH;AAEjH,0DAA0D;AAC1D,gCAAgC;AAChC,wCAAwC;AAExC,oDAAoD;AACpD,sCAAsC;AAEtC,eAAe;AACf,YAAY;AACZ,kEAAkE;AAClE,uBAAuB;AACvB,mBAAmB;AACnB,gBAAgB;AAChB,mDAAmD;AACnD,gBAAgB;AAChB,4BAA4B;AAC5B,gBAAgB;AAChB,oDAAoD;AACpD,gBAAgB;AAEhB,iGAAiG;AACjG,8CAA8C;AAC9C,YAAY;AACZ,wBAAwB;AACxB,YAAY;AACZ,6CAA6C;AAC7C,YAAY;AACZ,QAAQ;AACR,IAAI"}
|