@aifabrix/miso-client 3.9.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1148 -1052
- package/dist/api/encryption.api.d.ts +31 -0
- package/dist/api/encryption.api.d.ts.map +1 -0
- package/dist/api/encryption.api.js +61 -0
- package/dist/api/encryption.api.js.map +1 -0
- package/dist/api/index.d.ts +5 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/types/encryption.types.d.ts +47 -0
- package/dist/api/types/encryption.types.d.ts.map +1 -0
- package/dist/api/types/encryption.types.js +7 -0
- package/dist/api/types/encryption.types.js.map +1 -0
- package/dist/express/index.d.ts +0 -1
- package/dist/express/index.d.ts.map +1 -1
- package/dist/express/index.js +1 -4
- package/dist/express/index.js.map +1 -1
- package/dist/index.d.ts +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -4
- package/dist/index.js.map +1 -1
- package/dist/services/encryption.service.d.ts +59 -0
- package/dist/services/encryption.service.d.ts.map +1 -0
- package/dist/services/encryption.service.js +83 -0
- package/dist/services/encryption.service.js.map +1 -0
- package/dist/services/permission.service.d.ts +0 -4
- package/dist/services/permission.service.d.ts.map +1 -1
- package/dist/services/permission.service.js +2 -23
- package/dist/services/permission.service.js.map +1 -1
- package/dist/services/role.service.d.ts +0 -4
- package/dist/services/role.service.d.ts.map +1 -1
- package/dist/services/role.service.js +2 -23
- package/dist/services/role.service.js.map +1 -1
- package/dist/types/config.types.d.ts +1 -1
- package/dist/types/config.types.d.ts.map +1 -1
- package/dist/types/config.types.js.map +1 -1
- package/dist/utils/config-loader.js +4 -4
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/data-client-request.d.ts.map +1 -1
- package/dist/utils/data-client-request.js +8 -0
- package/dist/utils/data-client-request.js.map +1 -1
- package/dist/utils/encryption-error.d.ts +24 -0
- package/dist/utils/encryption-error.d.ts.map +1 -0
- package/dist/utils/encryption-error.js +31 -0
- package/dist/utils/encryption-error.js.map +1 -0
- package/package.json +84 -84
- package/dist/express/encryption.d.ts +0 -29
- package/dist/express/encryption.d.ts.map +0 -1
- package/dist/express/encryption.js +0 -95
- package/dist/express/encryption.js.map +0 -1
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Encryption Utility
|
|
4
|
-
* AES-256-GCM encryption for sensitive database fields
|
|
5
|
-
*/
|
|
6
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
-
};
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.EncryptionUtil = void 0;
|
|
11
|
-
const crypto_1 = __importDefault(require("crypto"));
|
|
12
|
-
class EncryptionUtil {
|
|
13
|
-
/**
|
|
14
|
-
* Initialize encryption with key from environment
|
|
15
|
-
* Must be called before encrypt/decrypt operations
|
|
16
|
-
*/
|
|
17
|
-
static initialize() {
|
|
18
|
-
if (this.initialized) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
const encryptionKey = process.env["ENCRYPTION_KEY"];
|
|
22
|
-
if (!encryptionKey) {
|
|
23
|
-
throw new Error("ENCRYPTION_KEY environment variable not configured");
|
|
24
|
-
}
|
|
25
|
-
// Validate key length (should be 64 hex characters = 32 bytes)
|
|
26
|
-
if (encryptionKey.length !== 64) {
|
|
27
|
-
throw new Error("ENCRYPTION_KEY must be 64 hex characters (32 bytes)");
|
|
28
|
-
}
|
|
29
|
-
try {
|
|
30
|
-
this.key = Buffer.from(encryptionKey, "hex");
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
throw new Error("ENCRYPTION_KEY must be valid hex string");
|
|
34
|
-
}
|
|
35
|
-
this.initialized = true;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Encrypt a string value
|
|
39
|
-
* Returns: iv:authTag:encryptedData (all in hex)
|
|
40
|
-
*/
|
|
41
|
-
static encrypt(text) {
|
|
42
|
-
if (!this.initialized) {
|
|
43
|
-
throw new Error("EncryptionUtil not initialized. Call initialize() first.");
|
|
44
|
-
}
|
|
45
|
-
if (!text) {
|
|
46
|
-
throw new Error("Cannot encrypt empty text");
|
|
47
|
-
}
|
|
48
|
-
const iv = crypto_1.default.randomBytes(16);
|
|
49
|
-
const cipher = crypto_1.default.createCipheriv(this.algorithm, this.key, iv);
|
|
50
|
-
let encrypted = cipher.update(text, "utf8", "hex");
|
|
51
|
-
encrypted += cipher.final("hex");
|
|
52
|
-
const authTag = cipher.getAuthTag();
|
|
53
|
-
// Format: iv:authTag:encryptedData
|
|
54
|
-
return `${iv.toString("hex")}:${authTag.toString("hex")}:${encrypted}`;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Decrypt an encrypted string
|
|
58
|
-
* Expects format: iv:authTag:encryptedData (all in hex)
|
|
59
|
-
*/
|
|
60
|
-
static decrypt(encryptedText) {
|
|
61
|
-
if (!this.initialized) {
|
|
62
|
-
throw new Error("EncryptionUtil not initialized. Call initialize() first.");
|
|
63
|
-
}
|
|
64
|
-
if (!encryptedText) {
|
|
65
|
-
throw new Error("Cannot decrypt empty text");
|
|
66
|
-
}
|
|
67
|
-
try {
|
|
68
|
-
const parts = encryptedText.split(":");
|
|
69
|
-
if (parts.length !== 3) {
|
|
70
|
-
throw new Error("Invalid encrypted text format");
|
|
71
|
-
}
|
|
72
|
-
const iv = Buffer.from(parts[0] || "", "hex");
|
|
73
|
-
const authTag = Buffer.from(parts[1] || "", "hex");
|
|
74
|
-
const encrypted = parts[2] || "";
|
|
75
|
-
const decipher = crypto_1.default.createDecipheriv(this.algorithm, this.key, iv);
|
|
76
|
-
decipher.setAuthTag(authTag);
|
|
77
|
-
let decrypted = decipher.update(encrypted, "hex", "utf8");
|
|
78
|
-
decrypted += decipher.final("utf8");
|
|
79
|
-
return decrypted;
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
throw new Error(`Decryption failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Generate a new encryption key (for setup/documentation)
|
|
87
|
-
*/
|
|
88
|
-
static generateKey() {
|
|
89
|
-
return crypto_1.default.randomBytes(32).toString("hex");
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
exports.EncryptionUtil = EncryptionUtil;
|
|
93
|
-
EncryptionUtil.algorithm = "aes-256-gcm";
|
|
94
|
-
EncryptionUtil.initialized = false;
|
|
95
|
-
//# sourceMappingURL=encryption.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../src/express/encryption.ts"],"names":[],"mappings":"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"}
|