lmcs-db 1.0.1 → 1.0.3
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/README.md +19 -21
- package/dist/LmcsDB.d.ts +1 -0
- package/dist/LmcsDB.js +24 -3
- package/dist/LmcsDB.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +8 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/storage/BinaryStorage.d.ts +2 -1
- package/dist/storage/BinaryStorage.js +15 -5
- package/dist/storage/BinaryStorage.js.map +1 -1
- package/dist/storage/JsonStorage.d.ts +1 -1
- package/dist/storage/JsonStorage.js +3 -2
- package/dist/storage/JsonStorage.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,11 +22,9 @@
|
|
|
22
22
|
npm install lmcs-db
|
|
23
23
|
# ou
|
|
24
24
|
yarn add lmcs-db
|
|
25
|
+
|
|
25
26
|
🚀 Exemplo de uso
|
|
26
|
-
|
|
27
|
-
Copiar
|
|
28
|
-
Editar
|
|
29
|
-
import DatabaseFactory from 'lmcs-db';
|
|
27
|
+
import { DatabaseFactory, DatabaseStorageType } from 'lmcs-db';
|
|
30
28
|
|
|
31
29
|
interface User {
|
|
32
30
|
_id: string;
|
|
@@ -38,8 +36,9 @@ interface User {
|
|
|
38
36
|
|
|
39
37
|
async function main() {
|
|
40
38
|
const db = await DatabaseFactory.create({
|
|
41
|
-
storageType:
|
|
39
|
+
storageType: DatabaseStorageType.Binary,
|
|
42
40
|
databaseName: 'secure-db',
|
|
41
|
+
customPath: `${process.cwd()}/data`,
|
|
43
42
|
encryptionKey: 'my-secret-key-123'
|
|
44
43
|
});
|
|
45
44
|
|
|
@@ -64,36 +63,35 @@ main();
|
|
|
64
63
|
|
|
65
64
|
|
|
66
65
|
## 📘 API
|
|
67
|
-
DatabaseFactory.create(options)
|
|
68
|
-
Cria uma instância do banco de dados.
|
|
66
|
+
- DatabaseFactory.create(options): Cria uma instância do banco de dados.
|
|
69
67
|
|
|
70
68
|
Parâmetros:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
- storageType: Memory, Json ou Binary para Define o formato de armazenamento
|
|
70
|
+
- databaseName: string Nome do arquivo base do banco
|
|
71
|
+
- encryptionKey: string (opcional) Chave usada para criptografia AES
|
|
72
|
+
- customPath: string (opcional) Path de onde será criado o arquivo de armazenamento
|
|
75
73
|
|
|
76
74
|
db.collection<T>(name)
|
|
77
75
|
Obtém uma coleção tipada com suporte a:
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
### delete
|
|
76
|
+
- insert
|
|
77
|
+
- find
|
|
78
|
+
- findAll
|
|
79
|
+
- update
|
|
80
|
+
- delete
|
|
81
|
+
- count
|
|
86
82
|
|
|
87
83
|
entre outros métodos utilitários
|
|
88
84
|
|
|
89
85
|
📂 Estrutura esperada
|
|
90
|
-
Os dados são armazenados em um único arquivo .
|
|
86
|
+
Os dados são armazenados em um único arquivo .db, conforme o tipo de armazenamento escolhido.
|
|
91
87
|
A persistência é automática após alterações, garantindo integridade dos dados em disco.
|
|
92
88
|
|
|
93
89
|
🔒 Criptografia
|
|
94
90
|
O sistema utiliza o algoritmo AES-256-CBC com vetor de inicialização (IV) dinâmico.
|
|
95
91
|
Se um banco for carregado com uma chave incorreta, ele será reiniciado como vazio, com um aviso exibido no console.
|
|
96
92
|
|
|
93
|
+
O fornato binário do arquiv é ofuscado usando xorBuffer para que mesmo que não esteja usando criptografia o arquivo não legivel a humanos e tenha um desenpenho melhor para arquivos maiores.
|
|
94
|
+
|
|
97
95
|
✅ Testes
|
|
98
96
|
Para executar os testes de demonstração:
|
|
99
97
|
|
|
@@ -101,4 +99,4 @@ Para executar os testes de demonstração:
|
|
|
101
99
|
MIT
|
|
102
100
|
|
|
103
101
|
✍️ Autor
|
|
104
|
-
Desenvolvido por Leandro da Silva.
|
|
102
|
+
Desenvolvido por Leandro A da Silva.
|
package/dist/LmcsDB.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ declare class LmcsDB {
|
|
|
13
13
|
findAll: (options?: FindOptions<T>) => Promise<T[]>;
|
|
14
14
|
update: (id: string, update: Partial<T>) => Promise<T | null>;
|
|
15
15
|
delete: (id: string) => Promise<boolean>;
|
|
16
|
+
count: (options?: FindOptions<T>) => Promise<number>;
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
19
|
export default LmcsDB;
|
package/dist/LmcsDB.js
CHANGED
|
@@ -18,10 +18,10 @@ class LmcsDB {
|
|
|
18
18
|
this.storage = new InMemoryStorage_1.default();
|
|
19
19
|
break;
|
|
20
20
|
case 'json':
|
|
21
|
-
this.storage = new JsonStorage_1.default(config.databaseName || 'default');
|
|
21
|
+
this.storage = new JsonStorage_1.default(config.databaseName || 'default', config.customPath);
|
|
22
22
|
break;
|
|
23
23
|
case 'binary':
|
|
24
|
-
this.storage = new BinaryStorage_1.default(config.databaseName || 'default');
|
|
24
|
+
this.storage = new BinaryStorage_1.default(config.databaseName || 'default', config.customPath);
|
|
25
25
|
break;
|
|
26
26
|
default:
|
|
27
27
|
throw new Error('Invalid storage type');
|
|
@@ -34,7 +34,7 @@ class LmcsDB {
|
|
|
34
34
|
async initialize() {
|
|
35
35
|
let rawData = await this.storage.load();
|
|
36
36
|
// Decriptografar dados se necessário
|
|
37
|
-
if (this.encryptionService && rawData && rawData.trim() !== '') {
|
|
37
|
+
if (this.encryptionService && rawData && rawData.trim() !== '' && rawData !== '{}') {
|
|
38
38
|
try {
|
|
39
39
|
rawData = this.encryptionService.decrypt(rawData);
|
|
40
40
|
}
|
|
@@ -104,6 +104,20 @@ class LmcsDB {
|
|
|
104
104
|
return false;
|
|
105
105
|
if (operators.$in !== undefined && !operators.$in.includes(doc[key]))
|
|
106
106
|
return false;
|
|
107
|
+
if (operators.$nin !== undefined && operators.$nin.includes(doc[key]))
|
|
108
|
+
return false;
|
|
109
|
+
if (operators.$contains !== undefined && !doc[key].includes(operators.$contains))
|
|
110
|
+
return false;
|
|
111
|
+
if (operators.$regex !== undefined && !new RegExp(operators.$regex).test(doc[key]))
|
|
112
|
+
return false;
|
|
113
|
+
if (operators.$exists !== undefined && doc[key] === undefined)
|
|
114
|
+
return false;
|
|
115
|
+
if (operators.$startsWith !== undefined && !doc[key].startsWith(operators.$startsWith))
|
|
116
|
+
return false;
|
|
117
|
+
if (operators.$endsWith !== undefined && !doc[key].endsWith(operators.$endsWith))
|
|
118
|
+
return false;
|
|
119
|
+
if (operators.$between !== undefined && (doc[key] < operators.$between[0] || doc[key] > operators.$between[1]))
|
|
120
|
+
return false;
|
|
107
121
|
return true;
|
|
108
122
|
}
|
|
109
123
|
return doc[key] === value;
|
|
@@ -153,6 +167,13 @@ class LmcsDB {
|
|
|
153
167
|
}
|
|
154
168
|
await this.save();
|
|
155
169
|
return true;
|
|
170
|
+
},
|
|
171
|
+
count: async (options) => {
|
|
172
|
+
if (options) {
|
|
173
|
+
return (await this.collection(name).findAll(options)).length;
|
|
174
|
+
}
|
|
175
|
+
const collection = this.schema.collections[name];
|
|
176
|
+
return collection ? Object.keys(collection.documents).length : 0;
|
|
156
177
|
}
|
|
157
178
|
};
|
|
158
179
|
}
|
package/dist/LmcsDB.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LmcsDB.js","sourceRoot":"","sources":["../src/LmcsDB.ts"],"names":[],"mappings":";;;;;AAAA,+BAAoC;AACpC,4EAAoD;AACpD,gFAAwD;AACxD,wEAAgD;AAChD,4EAAoD;AAGpD,MAAM,MAAM;IAMV,YAAY,MAAsB;QAJ1B,WAAM,GAAmB,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAKnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,2BAA2B;QAC3B,QAAQ,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3B,KAAK,QAAQ;gBACX,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAe,EAAE,CAAC;gBACrC,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAW,CAAC,MAAM,CAAC,YAAY,IAAI,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"LmcsDB.js","sourceRoot":"","sources":["../src/LmcsDB.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,2 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DatabaseStorageType = exports.DatabaseFactory = void 0;
|
|
7
|
+
var DatabaseFactory_1 = require("./DatabaseFactory");
|
|
8
|
+
Object.defineProperty(exports, "DatabaseFactory", { enumerable: true, get: function () { return __importDefault(DatabaseFactory_1).default; } });
|
|
9
|
+
var interfaces_1 = require("./interfaces");
|
|
10
|
+
Object.defineProperty(exports, "DatabaseStorageType", { enumerable: true, get: function () { return interfaces_1.DatabaseStorageType; } });
|
|
2
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,qDAA+D;AAAtD,mIAAA,OAAO,OAAmB;AACnC,2CAAmD;AAA1C,iHAAA,mBAAmB,OAAA"}
|
package/dist/interfaces.d.ts
CHANGED
|
@@ -23,6 +23,13 @@ interface FindOptions<T> {
|
|
|
23
23
|
$gt?: T[key];
|
|
24
24
|
$lt?: T[key];
|
|
25
25
|
$in?: T[key][];
|
|
26
|
+
$nin?: T[key][];
|
|
27
|
+
$contains?: T[key];
|
|
28
|
+
$regex?: RegExp;
|
|
29
|
+
$exists?: boolean;
|
|
30
|
+
$startsWith?: string;
|
|
31
|
+
$endsWith?: string;
|
|
32
|
+
$between?: [T[key], T[key]];
|
|
26
33
|
};
|
|
27
34
|
};
|
|
28
35
|
limit?: number;
|
|
@@ -34,6 +41,7 @@ interface DatabaseConfig {
|
|
|
34
41
|
encryptionKey?: string;
|
|
35
42
|
storageType: 'memory' | 'json' | 'binary';
|
|
36
43
|
databaseName?: string;
|
|
44
|
+
customPath?: string;
|
|
37
45
|
}
|
|
38
46
|
declare enum DatabaseStorageType {
|
|
39
47
|
Memory = "memory",
|
package/dist/interfaces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;;AAmDA,IAAK,mBAIJ;AAJD,WAAK,mBAAmB;IACtB,wCAAiB,CAAA;IACjB,oCAAa,CAAA;IACb,wCAAiB,CAAA;AACnB,CAAC,EAJI,mBAAmB,mCAAnB,mBAAmB,QAIvB"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { IDatabaseStorage } from '../interfaces';
|
|
2
2
|
declare class BinaryStorage implements IDatabaseStorage {
|
|
3
3
|
private filePath;
|
|
4
|
-
constructor(databaseName: string);
|
|
4
|
+
constructor(databaseName: string, customPath?: string);
|
|
5
|
+
private xorBuffer;
|
|
5
6
|
save(data: string): Promise<void>;
|
|
6
7
|
load(): Promise<string>;
|
|
7
8
|
}
|
|
@@ -6,17 +6,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const fs_1 = __importDefault(require("fs"));
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
class BinaryStorage {
|
|
9
|
-
constructor(databaseName) {
|
|
10
|
-
|
|
9
|
+
constructor(databaseName, customPath) {
|
|
10
|
+
const basePath = customPath ?? process.cwd();
|
|
11
|
+
this.filePath = path_1.default.resolve(basePath, `${databaseName}.db`);
|
|
12
|
+
}
|
|
13
|
+
xorBuffer(buffer, key = 0xAA) {
|
|
14
|
+
const result = Buffer.alloc(buffer.length);
|
|
15
|
+
for (let i = 0; i < buffer.length; i++) {
|
|
16
|
+
result[i] = buffer[i] ^ key;
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
11
19
|
}
|
|
12
20
|
async save(data) {
|
|
13
|
-
const
|
|
14
|
-
|
|
21
|
+
const raw = Buffer.from(data, 'utf-8');
|
|
22
|
+
const obfuscated = this.xorBuffer(raw);
|
|
23
|
+
await fs_1.default.promises.writeFile(this.filePath, obfuscated);
|
|
15
24
|
}
|
|
16
25
|
async load() {
|
|
17
26
|
try {
|
|
18
27
|
const buffer = await fs_1.default.promises.readFile(this.filePath);
|
|
19
|
-
|
|
28
|
+
const deobfuscated = this.xorBuffer(buffer);
|
|
29
|
+
return deobfuscated.toString('utf-8');
|
|
20
30
|
}
|
|
21
31
|
catch (error) {
|
|
22
32
|
if (error.code === 'ENOENT') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinaryStorage.js","sourceRoot":"","sources":["../../src/storage/BinaryStorage.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAGxB,MAAM,aAAa;IAGjB,YAAY,YAAoB;
|
|
1
|
+
{"version":3,"file":"BinaryStorage.js","sourceRoot":"","sources":["../../src/storage/BinaryStorage.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAGxB,MAAM,aAAa;IAGjB,YAAY,YAAoB,EAAE,UAAmB;QACnD,MAAM,QAAQ,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEO,SAAS,CAAC,MAAc,EAAE,MAAc,IAAI;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5C,OAAO,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED,kBAAe,aAAa,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IDatabaseStorage } from '../interfaces';
|
|
2
2
|
declare class JsonStorage implements IDatabaseStorage {
|
|
3
3
|
private filePath;
|
|
4
|
-
constructor(databaseName: string);
|
|
4
|
+
constructor(databaseName: string, customPath?: string);
|
|
5
5
|
save(data: string): Promise<void>;
|
|
6
6
|
load(): Promise<string>;
|
|
7
7
|
}
|
|
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const path_1 = __importDefault(require("path"));
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
class JsonStorage {
|
|
9
|
-
constructor(databaseName) {
|
|
10
|
-
|
|
9
|
+
constructor(databaseName, customPath) {
|
|
10
|
+
const basePath = customPath ?? process.cwd();
|
|
11
|
+
this.filePath = path_1.default.resolve(basePath, `${databaseName}.db`);
|
|
11
12
|
}
|
|
12
13
|
async save(data) {
|
|
13
14
|
await fs_1.default.promises.writeFile(this.filePath, data, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonStorage.js","sourceRoot":"","sources":["../../src/storage/JsonStorage.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,4CAAoB;AAGpB,MAAM,WAAW;IAGf,YAAY,YAAoB;
|
|
1
|
+
{"version":3,"file":"JsonStorage.js","sourceRoot":"","sources":["../../src/storage/JsonStorage.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,4CAAoB;AAGpB,MAAM,WAAW;IAGf,YAAY,YAAoB,EAAE,UAAmB;QACnD,MAAM,QAAQ,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,OAAO,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED,kBAAe,WAAW,CAAC"}
|