blackcat.js-database 1.0.5 → 1.0.6

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/dist/index.d.mts CHANGED
@@ -113,7 +113,32 @@ interface DatabaseConfiguration {
113
113
  */
114
114
  type Maybe<T> = Exclude<T | null, undefined>;
115
115
  /**
116
+ * Utility type dùng để trích xuất kiểu phần tử bên trong một mảng.
117
+ * @hidden
118
+ *
119
+ * Nếu `T` là một mảng (`U[]`) thì kiểu trả về sẽ là `U` (kiểu phần tử).
120
+ * Nếu `T` không phải là mảng thì kiểu trả về chính là `T`.
121
+ *
122
+ * Thường được sử dụng trong các generic type để làm việc
123
+ * với kiểu dữ liệu của phần tử trong mảng một cách an toàn.
124
+ *
125
+ * @typeParam T - Kiểu dữ liệu đầu vào, có thể là mảng hoặc bất kỳ kiểu nào.
126
+ *
127
+ * @example
128
+ * type A = ArrayElement<string[]>;
129
+ * // Kết quả: string
130
+ *
131
+ * @example
132
+ * type B = ArrayElement<number[]>;
133
+ * // Kết quả: number
134
+ *
135
+ * @example
136
+ * type C = ArrayElement<string>;
137
+ * // Kết quả: string
116
138
  *
139
+ * @example
140
+ * type D = ArrayElement<(number | string)[]>;
141
+ * // Kết quả: number | string
117
142
  */
118
143
  type ArrayElement<T> = T extends (infer U)[] ? U : T;
119
144
  /**
@@ -310,26 +335,6 @@ type IsAny<T> = 0 extends (1 & T) ? true : false;
310
335
  * const c: Status = "custom"; // vẫn hợp lệ
311
336
  */
312
337
  type AutocompletableString<S extends string> = S | (string & {});
313
- /**
314
- * Trích xuất **key đầu tiên** từ một object path dạng chuỗi.
315
- * @hidden
316
- *
317
- * Ví dụ với path `"member.user.id"` thì key đầu tiên sẽ là `"member"`.
318
- *
319
- * Type này thường được dùng để xác định **object cấp cao nhất**
320
- * khi làm việc với các path dạng `dot notation`.
321
- *
322
- * @typeParam TKey - Object path cần trích xuất key đầu tiên.
323
- *
324
- * @example
325
- * type A = FirstObjectKey<"user.profile.name">;
326
- * // Kết quả: "user"
327
- *
328
- * @example
329
- * type B = FirstObjectKey<"settings">;
330
- * // Kết quả: "settings"
331
- */
332
- type FirstObjectKey<TKey extends ObjectPath<string, any>> = TKey extends `${infer Key}.${infer _Rest}` ? Key : TKey extends string ? TKey : never;
333
338
  /**
334
339
  * Đại diện cho **đường dẫn (path)** tới một thuộc tính trong object,
335
340
  * hỗ trợ truy cập các property lồng nhau bằng `dot notation`.
@@ -401,7 +406,7 @@ type ObjectPath<T, TKey extends keyof T = keyof T> = IsAny<T> extends true ? str
401
406
  * type C = ObjectValue<User, "profile">;
402
407
  * // Kết quả: { name: string; age: number }
403
408
  */
404
- type ObjectValue<T, P extends ObjectPath<T> | AutocompletableString<ObjectPath<T>>> = T extends AutocompletableString<P> | string | number | boolean | symbol ? T : P extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? Rest extends ObjectPath<T[Key]> ? ObjectValue<T[Key], Rest> : null : never : P extends keyof T ? T[P] : T;
409
+ type ObjectValue<T, P extends ObjectPath<T> | AutocompletableString<ObjectPath<T>>> = T extends string | number | boolean | bigint | symbol | null | undefined | Date | Function ? T : T extends (infer U)[] ? ObjectValue<U, P>[] : P extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? ObjectValue<T[Key], Rest> : never : P extends keyof T ? T[P] : never;
405
410
 
406
411
  /**
407
412
  * Class Database cung cấp API thao tác dữ liệu dạng key-path
@@ -481,7 +486,7 @@ declare class Database<V = any> {
481
486
  * console.log(data.users);
482
487
  * ```
483
488
  */
484
- all<T extends Record<string, any> = Record<string, any>>(): Promise<T>;
489
+ all(): Promise<V>;
485
490
  /**
486
491
  * Lấy giá trị từ database theo key-path.
487
492
  *
@@ -510,7 +515,7 @@ declare class Database<V = any> {
510
515
  * const all = await db.get();
511
516
  * ```
512
517
  */
513
- get<P extends AutocompletableString<ObjectPath<V>>>(key?: AutocompletableString<P>): Promise<Maybe<ObjectValue<V, P>> | V>;
518
+ get<P extends AutocompletableString<ObjectPath<V>>>(key?: AutocompletableString<P>): Promise<Maybe<ObjectValue<V, P>>>;
514
519
  /**
515
520
  * Tìm và trả về một bản ghi đầu tiên khớp với điều kiện trong database.
516
521
  *
@@ -547,7 +552,7 @@ declare class Database<V = any> {
547
552
  * });
548
553
  * ```
549
554
  */
550
- findOne<P extends AutocompletableString<ObjectPath<V>>>(key?: AutocompletableString<P>, query?: Partial<ArrayElement<ObjectValue<V, P>>>): Promise<Maybe<ObjectValue<V, P>> | V>;
555
+ findOne<P extends AutocompletableString<ObjectPath<V>>>(key?: AutocompletableString<P>, query?: Partial<ArrayElement<ObjectValue<V, P>>>): Promise<Maybe<ObjectValue<V, P>>>;
551
556
  /**
552
557
  * Kiểm tra một key-path có tồn tại trong database hay không.
553
558
  *
@@ -576,7 +581,7 @@ declare class Database<V = any> {
576
581
  * @param {AutocompletableString<P>} key Đường dẫn dữ liệu cần gán giá trị.
577
582
  * @param {ObjectValue<V, P>} value Giá trị mới.
578
583
  *
579
- * @returns {Promise<If<IsObject<V>, ObjectValue<V, FirstObjectKey<P>>, V>>} Giá trị vừa được set hoặc object root nếu value là object.
584
+ * @returns {void} Giá trị vừa được set hoặc object root nếu value là object.
580
585
  *
581
586
  * @example
582
587
  * ```ts
@@ -588,7 +593,7 @@ declare class Database<V = any> {
588
593
  * await db.set("config.prefix", "!");
589
594
  * ```
590
595
  */
591
- set<P extends AutocompletableString<ObjectPath<V>>>(key: AutocompletableString<P>, value: ObjectValue<V, P>): Promise<If<IsObject<V>, ObjectValue<V, FirstObjectKey<P>>, V>>;
596
+ set<P extends AutocompletableString<ObjectPath<V>>>(key: AutocompletableString<P>, value: ObjectValue<V, P>): Promise<void>;
592
597
  /**
593
598
  * Xóa một key khỏi database.
594
599
  *
@@ -717,7 +722,7 @@ declare class Database<V = any> {
717
722
  * - `REQUIRED_PARAMETER_MISSING` nếu key không được cung cấp
718
723
  * - `INVALID_TYPE` nếu key không phải string
719
724
  */
720
- update<P extends AutocompletableString<ObjectPath<V>>>(key: AutocompletableString<P>, value: ObjectValue<V, P>): Promise<If<IsObject<V>, ObjectValue<V, FirstObjectKey<P>>, V>>;
725
+ update<P extends AutocompletableString<ObjectPath<V>>>(key: AutocompletableString<P>, value: ObjectValue<V, P>): Promise<If<IsObject<V>, ObjectValue<V, P>>>;
721
726
  /**
722
727
  * Cộng thêm giá trị vào một key dạng number.
723
728
  *
@@ -1519,4 +1524,4 @@ declare class MongoDriver implements DatabaseDriver {
1519
1524
  delete(): Promise<boolean>;
1520
1525
  }
1521
1526
 
1522
- export { Database, JSONDriver, MemoryDriver, MongoDriver, SQLiteDriver };
1527
+ export { Database, type DatabaseDriver, JSONDriver, MemoryDriver, MongoDriver, SQLiteDriver };
package/dist/index.d.ts CHANGED
@@ -113,7 +113,32 @@ interface DatabaseConfiguration {
113
113
  */
114
114
  type Maybe<T> = Exclude<T | null, undefined>;
115
115
  /**
116
+ * Utility type dùng để trích xuất kiểu phần tử bên trong một mảng.
117
+ * @hidden
118
+ *
119
+ * Nếu `T` là một mảng (`U[]`) thì kiểu trả về sẽ là `U` (kiểu phần tử).
120
+ * Nếu `T` không phải là mảng thì kiểu trả về chính là `T`.
121
+ *
122
+ * Thường được sử dụng trong các generic type để làm việc
123
+ * với kiểu dữ liệu của phần tử trong mảng một cách an toàn.
124
+ *
125
+ * @typeParam T - Kiểu dữ liệu đầu vào, có thể là mảng hoặc bất kỳ kiểu nào.
126
+ *
127
+ * @example
128
+ * type A = ArrayElement<string[]>;
129
+ * // Kết quả: string
130
+ *
131
+ * @example
132
+ * type B = ArrayElement<number[]>;
133
+ * // Kết quả: number
134
+ *
135
+ * @example
136
+ * type C = ArrayElement<string>;
137
+ * // Kết quả: string
116
138
  *
139
+ * @example
140
+ * type D = ArrayElement<(number | string)[]>;
141
+ * // Kết quả: number | string
117
142
  */
118
143
  type ArrayElement<T> = T extends (infer U)[] ? U : T;
119
144
  /**
@@ -310,26 +335,6 @@ type IsAny<T> = 0 extends (1 & T) ? true : false;
310
335
  * const c: Status = "custom"; // vẫn hợp lệ
311
336
  */
312
337
  type AutocompletableString<S extends string> = S | (string & {});
313
- /**
314
- * Trích xuất **key đầu tiên** từ một object path dạng chuỗi.
315
- * @hidden
316
- *
317
- * Ví dụ với path `"member.user.id"` thì key đầu tiên sẽ là `"member"`.
318
- *
319
- * Type này thường được dùng để xác định **object cấp cao nhất**
320
- * khi làm việc với các path dạng `dot notation`.
321
- *
322
- * @typeParam TKey - Object path cần trích xuất key đầu tiên.
323
- *
324
- * @example
325
- * type A = FirstObjectKey<"user.profile.name">;
326
- * // Kết quả: "user"
327
- *
328
- * @example
329
- * type B = FirstObjectKey<"settings">;
330
- * // Kết quả: "settings"
331
- */
332
- type FirstObjectKey<TKey extends ObjectPath<string, any>> = TKey extends `${infer Key}.${infer _Rest}` ? Key : TKey extends string ? TKey : never;
333
338
  /**
334
339
  * Đại diện cho **đường dẫn (path)** tới một thuộc tính trong object,
335
340
  * hỗ trợ truy cập các property lồng nhau bằng `dot notation`.
@@ -401,7 +406,7 @@ type ObjectPath<T, TKey extends keyof T = keyof T> = IsAny<T> extends true ? str
401
406
  * type C = ObjectValue<User, "profile">;
402
407
  * // Kết quả: { name: string; age: number }
403
408
  */
404
- type ObjectValue<T, P extends ObjectPath<T> | AutocompletableString<ObjectPath<T>>> = T extends AutocompletableString<P> | string | number | boolean | symbol ? T : P extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? Rest extends ObjectPath<T[Key]> ? ObjectValue<T[Key], Rest> : null : never : P extends keyof T ? T[P] : T;
409
+ type ObjectValue<T, P extends ObjectPath<T> | AutocompletableString<ObjectPath<T>>> = T extends string | number | boolean | bigint | symbol | null | undefined | Date | Function ? T : T extends (infer U)[] ? ObjectValue<U, P>[] : P extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? ObjectValue<T[Key], Rest> : never : P extends keyof T ? T[P] : never;
405
410
 
406
411
  /**
407
412
  * Class Database cung cấp API thao tác dữ liệu dạng key-path
@@ -481,7 +486,7 @@ declare class Database<V = any> {
481
486
  * console.log(data.users);
482
487
  * ```
483
488
  */
484
- all<T extends Record<string, any> = Record<string, any>>(): Promise<T>;
489
+ all(): Promise<V>;
485
490
  /**
486
491
  * Lấy giá trị từ database theo key-path.
487
492
  *
@@ -510,7 +515,7 @@ declare class Database<V = any> {
510
515
  * const all = await db.get();
511
516
  * ```
512
517
  */
513
- get<P extends AutocompletableString<ObjectPath<V>>>(key?: AutocompletableString<P>): Promise<Maybe<ObjectValue<V, P>> | V>;
518
+ get<P extends AutocompletableString<ObjectPath<V>>>(key?: AutocompletableString<P>): Promise<Maybe<ObjectValue<V, P>>>;
514
519
  /**
515
520
  * Tìm và trả về một bản ghi đầu tiên khớp với điều kiện trong database.
516
521
  *
@@ -547,7 +552,7 @@ declare class Database<V = any> {
547
552
  * });
548
553
  * ```
549
554
  */
550
- findOne<P extends AutocompletableString<ObjectPath<V>>>(key?: AutocompletableString<P>, query?: Partial<ArrayElement<ObjectValue<V, P>>>): Promise<Maybe<ObjectValue<V, P>> | V>;
555
+ findOne<P extends AutocompletableString<ObjectPath<V>>>(key?: AutocompletableString<P>, query?: Partial<ArrayElement<ObjectValue<V, P>>>): Promise<Maybe<ObjectValue<V, P>>>;
551
556
  /**
552
557
  * Kiểm tra một key-path có tồn tại trong database hay không.
553
558
  *
@@ -576,7 +581,7 @@ declare class Database<V = any> {
576
581
  * @param {AutocompletableString<P>} key Đường dẫn dữ liệu cần gán giá trị.
577
582
  * @param {ObjectValue<V, P>} value Giá trị mới.
578
583
  *
579
- * @returns {Promise<If<IsObject<V>, ObjectValue<V, FirstObjectKey<P>>, V>>} Giá trị vừa được set hoặc object root nếu value là object.
584
+ * @returns {void} Giá trị vừa được set hoặc object root nếu value là object.
580
585
  *
581
586
  * @example
582
587
  * ```ts
@@ -588,7 +593,7 @@ declare class Database<V = any> {
588
593
  * await db.set("config.prefix", "!");
589
594
  * ```
590
595
  */
591
- set<P extends AutocompletableString<ObjectPath<V>>>(key: AutocompletableString<P>, value: ObjectValue<V, P>): Promise<If<IsObject<V>, ObjectValue<V, FirstObjectKey<P>>, V>>;
596
+ set<P extends AutocompletableString<ObjectPath<V>>>(key: AutocompletableString<P>, value: ObjectValue<V, P>): Promise<void>;
592
597
  /**
593
598
  * Xóa một key khỏi database.
594
599
  *
@@ -717,7 +722,7 @@ declare class Database<V = any> {
717
722
  * - `REQUIRED_PARAMETER_MISSING` nếu key không được cung cấp
718
723
  * - `INVALID_TYPE` nếu key không phải string
719
724
  */
720
- update<P extends AutocompletableString<ObjectPath<V>>>(key: AutocompletableString<P>, value: ObjectValue<V, P>): Promise<If<IsObject<V>, ObjectValue<V, FirstObjectKey<P>>, V>>;
725
+ update<P extends AutocompletableString<ObjectPath<V>>>(key: AutocompletableString<P>, value: ObjectValue<V, P>): Promise<If<IsObject<V>, ObjectValue<V, P>>>;
721
726
  /**
722
727
  * Cộng thêm giá trị vào một key dạng number.
723
728
  *
@@ -1519,4 +1524,4 @@ declare class MongoDriver implements DatabaseDriver {
1519
1524
  delete(): Promise<boolean>;
1520
1525
  }
1521
1526
 
1522
- export { Database, JSONDriver, MemoryDriver, MongoDriver, SQLiteDriver };
1527
+ export { Database, type DatabaseDriver, JSONDriver, MemoryDriver, MongoDriver, SQLiteDriver };
package/dist/index.mjs CHANGED
@@ -1,7 +1,5 @@
1
1
  var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
3
 
6
4
  // src/utils/isObject.function.ts
7
5
  var isObject = /* @__PURE__ */ __name((item) => !Array.isArray(item) && item !== null && typeof item === "object", "isObject");
@@ -30,7 +28,10 @@ var errors = {
30
28
  INVALID_KEY: "{1}"
31
29
  };
32
30
  var createTypesArray = /* @__PURE__ */ __name((...elements) => `[${elements.map((element) => typeOf(element))}]`, "createTypesArray");
33
- var _BlackCatError = class _BlackCatError extends Error {
31
+ var BlackCatError = class extends Error {
32
+ static {
33
+ __name(this, "BlackCatError");
34
+ }
34
35
  /**
35
36
  * Creates a BlackCatError instance.
36
37
  * @param {string} errorCode Quick Mongo error code.
@@ -47,11 +48,12 @@ var _BlackCatError = class _BlackCatError extends Error {
47
48
  this.name = `BlackCatError [${code}]`;
48
49
  }
49
50
  };
50
- __name(_BlackCatError, "BlackCatError");
51
- var BlackCatError = _BlackCatError;
52
51
 
53
52
  // src/utils/TypedObject.ts
54
- var _TypedObject = class _TypedObject {
53
+ var TypedObject = class {
54
+ static {
55
+ __name(this, "TypedObject");
56
+ }
55
57
  /**
56
58
  * Lấy danh sách key của object với type chính xác.
57
59
  *
@@ -159,11 +161,25 @@ var _TypedObject = class _TypedObject {
159
161
  return Object.entries(obj || {});
160
162
  }
161
163
  };
162
- __name(_TypedObject, "TypedObject");
163
- var TypedObject = _TypedObject;
164
164
 
165
165
  // src/Database.ts
166
- var _Database = class _Database {
166
+ var Database = class {
167
+ static {
168
+ __name(this, "Database");
169
+ }
170
+ /**
171
+ * Storage driver được sử dụng để đọc và ghi dữ liệu database.
172
+ *
173
+ * Driver phải implement interface `DatabaseDriver`.
174
+ *
175
+ * Ví dụ:
176
+ * ```ts
177
+ * const db = new Database({
178
+ * driver: new JSONDriver({ filePath: "./database.json" }),
179
+ * })
180
+ * ```
181
+ */
182
+ driver;
167
183
  /**
168
184
  * Khởi tạo Database instance.
169
185
  *
@@ -189,19 +205,6 @@ var _Database = class _Database {
189
205
  * ```
190
206
  */
191
207
  constructor(options) {
192
- /**
193
- * Storage driver được sử dụng để đọc và ghi dữ liệu database.
194
- *
195
- * Driver phải implement interface `DatabaseDriver`.
196
- *
197
- * Ví dụ:
198
- * ```ts
199
- * const db = new Database({
200
- * driver: new JSONDriver({ filePath: "./database.json" }),
201
- * })
202
- * ```
203
- */
204
- __publicField(this, "driver");
205
208
  this.driver = options.driver;
206
209
  }
207
210
  /**
@@ -250,7 +253,6 @@ var _Database = class _Database {
250
253
  */
251
254
  async get(key) {
252
255
  const data = await this.all();
253
- if (key === void 0) return data;
254
256
  if (typeof key !== "string") {
255
257
  throw new BlackCatError("INVALID_TYPE", "key", "string", typeOf(key));
256
258
  }
@@ -339,7 +341,7 @@ var _Database = class _Database {
339
341
  * @param {AutocompletableString<P>} key Đường dẫn dữ liệu cần gán giá trị.
340
342
  * @param {ObjectValue<V, P>} value Giá trị mới.
341
343
  *
342
- * @returns {Promise<If<IsObject<V>, ObjectValue<V, FirstObjectKey<P>>, V>>} Giá trị vừa được set hoặc object root nếu value là object.
344
+ * @returns {void} Giá trị vừa được set hoặc object root nếu value là object.
343
345
  *
344
346
  * @example
345
347
  * ```ts
@@ -374,7 +376,6 @@ var _Database = class _Database {
374
376
  }
375
377
  ;
376
378
  await this.driver.set(allDatabase);
377
- return typeof value == "object" && value !== null ? await this.get(keys[0]) : value;
378
379
  }
379
380
  /**
380
381
  * Xóa một key khỏi database.
@@ -591,7 +592,8 @@ var _Database = class _Database {
591
592
  if (!isNumber(numberToAdd)) {
592
593
  throw new BlackCatError("INVALID_TYPE", "numberToAdd", "number", typeOf(numberToAdd));
593
594
  }
594
- return await this.set(key, targetNumber + numberToAdd);
595
+ await this.set(key, targetNumber + numberToAdd);
596
+ return targetNumber + numberToAdd;
595
597
  }
596
598
  /**
597
599
  * Trừ giá trị khỏi một key dạng number.
@@ -621,7 +623,8 @@ var _Database = class _Database {
621
623
  if (!isNumber(numberToSubtract)) {
622
624
  throw new BlackCatError("INVALID_TYPE", "numberToSubtract", "number", typeOf(numberToSubtract));
623
625
  }
624
- return await this.set(key, targetNumber - numberToSubtract);
626
+ await this.set(key, targetNumber - numberToSubtract);
627
+ return targetNumber - numberToSubtract;
625
628
  }
626
629
  /**
627
630
  * Thêm một hoặc nhiều phần tử vào cuối array tại key-path.
@@ -839,7 +842,8 @@ var _Database = class _Database {
839
842
  * const userKeys = await db.keys("user");
840
843
  */
841
844
  async keys(key) {
842
- if (!key) return TypedObject.keys(await this.all());
845
+ const all = await this.all();
846
+ if (!key) return TypedObject.keys(all);
843
847
  const data = await this.get(key);
844
848
  return TypedObject.keys(data).filter((key2) => data[key2] !== void 0 && data[key2] !== null);
845
849
  }
@@ -873,7 +877,8 @@ var _Database = class _Database {
873
877
  * const userValues = await db.values("users");
874
878
  */
875
879
  async values(key) {
876
- if (!key) return TypedObject.values(await this.all());
880
+ const all = await this.all();
881
+ if (!key) return TypedObject.values(all);
877
882
  const data = await this.get(key);
878
883
  return TypedObject.values(data);
879
884
  }
@@ -998,12 +1003,21 @@ var _Database = class _Database {
998
1003
  return values.every(queryFunction);
999
1004
  }
1000
1005
  };
1001
- __name(_Database, "Database");
1002
- var Database = _Database;
1003
1006
 
1004
1007
  // src/drivers/JSONDriver.ts
1005
1008
  import { promises as fs } from "fs";
1006
- var _JSONDriver = class _JSONDriver {
1009
+ var JSONDriver = class {
1010
+ static {
1011
+ __name(this, "JSONDriver");
1012
+ }
1013
+ /**
1014
+ * Đường dẫn tới file database JSON.
1015
+ */
1016
+ filePath;
1017
+ /**
1018
+ * Cho biết có minify JSON khi ghi file hay không.
1019
+ */
1020
+ minifyJSON;
1007
1021
  /**
1008
1022
  * Khởi tạo một instance mới của {@link JSONDriver}.
1009
1023
  *
@@ -1025,14 +1039,6 @@ var _JSONDriver = class _JSONDriver {
1025
1039
  * ```
1026
1040
  */
1027
1041
  constructor(options) {
1028
- /**
1029
- * Đường dẫn tới file database JSON.
1030
- */
1031
- __publicField(this, "filePath");
1032
- /**
1033
- * Cho biết có minify JSON khi ghi file hay không.
1034
- */
1035
- __publicField(this, "minifyJSON");
1036
1042
  this.filePath = options.filePath || "database.json";
1037
1043
  this.minifyJSON = options.minifyJSON || false;
1038
1044
  }
@@ -1093,11 +1099,16 @@ var _JSONDriver = class _JSONDriver {
1093
1099
  return true;
1094
1100
  }
1095
1101
  };
1096
- __name(_JSONDriver, "JSONDriver");
1097
- var JSONDriver = _JSONDriver;
1098
1102
 
1099
1103
  // src/drivers/MemoryDriver.ts
1100
- var _MemoryDriver = class _MemoryDriver {
1104
+ var MemoryDriver = class {
1105
+ static {
1106
+ __name(this, "MemoryDriver");
1107
+ }
1108
+ /**
1109
+ * Object chứa toàn bộ dữ liệu database trong RAM.
1110
+ */
1111
+ store;
1101
1112
  /**
1102
1113
  * Khởi tạo MemoryDriver.
1103
1114
  *
@@ -1124,10 +1135,6 @@ var _MemoryDriver = class _MemoryDriver {
1124
1135
  * ```
1125
1136
  */
1126
1137
  constructor(initialData = {}) {
1127
- /**
1128
- * Object chứa toàn bộ dữ liệu database trong RAM.
1129
- */
1130
- __publicField(this, "store");
1131
1138
  this.store = initialData;
1132
1139
  }
1133
1140
  /**
@@ -1158,12 +1165,21 @@ var _MemoryDriver = class _MemoryDriver {
1158
1165
  return true;
1159
1166
  }
1160
1167
  };
1161
- __name(_MemoryDriver, "MemoryDriver");
1162
- var MemoryDriver = _MemoryDriver;
1163
1168
 
1164
1169
  // src/drivers/SQLiteDriver.ts
1165
1170
  import SQLite from "better-sqlite3";
1166
- var _SQLiteDriver = class _SQLiteDriver {
1171
+ var SQLiteDriver = class {
1172
+ static {
1173
+ __name(this, "SQLiteDriver");
1174
+ }
1175
+ /**
1176
+ * SQLite database instance.
1177
+ */
1178
+ db;
1179
+ /**
1180
+ * Tên table lưu trữ dữ liệu JSON.
1181
+ */
1182
+ table;
1167
1183
  /**
1168
1184
  * Khởi tạo SQLiteDriver.
1169
1185
  *
@@ -1180,14 +1196,6 @@ var _SQLiteDriver = class _SQLiteDriver {
1180
1196
  * ```
1181
1197
  */
1182
1198
  constructor(options = {}) {
1183
- /**
1184
- * SQLite database instance.
1185
- */
1186
- __publicField(this, "db");
1187
- /**
1188
- * Tên table lưu trữ dữ liệu JSON.
1189
- */
1190
- __publicField(this, "table");
1191
1199
  this.db = new SQLite(options.filePath ?? "database.sqlite");
1192
1200
  this.table = options.table ?? "json_store";
1193
1201
  this.db.prepare(`CREATE TABLE IF NOT EXISTS ${this.table} (id INTEGER PRIMARY KEY, data TEXT)`).run();
@@ -1225,12 +1233,45 @@ var _SQLiteDriver = class _SQLiteDriver {
1225
1233
  return true;
1226
1234
  }
1227
1235
  };
1228
- __name(_SQLiteDriver, "SQLiteDriver");
1229
- var SQLiteDriver = _SQLiteDriver;
1230
1236
 
1231
1237
  // src/drivers/MongoDriver.ts
1232
1238
  import { MongoClient } from "mongodb";
1233
- var _MongoDriver = class _MongoDriver {
1239
+ var MongoDriver = class {
1240
+ static {
1241
+ __name(this, "MongoDriver");
1242
+ }
1243
+ /**
1244
+ * MongoDB client instance.
1245
+ */
1246
+ client;
1247
+ /**
1248
+ * MongoDB database instance.
1249
+ */
1250
+ db;
1251
+ /**
1252
+ * Collection lưu dữ liệu JSON.
1253
+ */
1254
+ collection;
1255
+ /**
1256
+ * Tên database MongoDB.
1257
+ */
1258
+ databaseName;
1259
+ /**
1260
+ * Tên collection MongoDB.
1261
+ */
1262
+ collectionName;
1263
+ /**
1264
+ * Callback khi kết nối thành công.
1265
+ */
1266
+ onLoad;
1267
+ /**
1268
+ * Callback khi xảy ra lỗi.
1269
+ */
1270
+ onError;
1271
+ /**
1272
+ * Trạng thái đã gọi onLoad chưa (tránh spam)
1273
+ */
1274
+ isLoaded = false;
1234
1275
  /**
1235
1276
  * Khởi tạo MongoDriver.
1236
1277
  *
@@ -1257,38 +1298,6 @@ var _MongoDriver = class _MongoDriver {
1257
1298
  * });
1258
1299
  */
1259
1300
  constructor(options = {}) {
1260
- /**
1261
- * MongoDB client instance.
1262
- */
1263
- __publicField(this, "client");
1264
- /**
1265
- * MongoDB database instance.
1266
- */
1267
- __publicField(this, "db");
1268
- /**
1269
- * Collection lưu dữ liệu JSON.
1270
- */
1271
- __publicField(this, "collection");
1272
- /**
1273
- * Tên database MongoDB.
1274
- */
1275
- __publicField(this, "databaseName");
1276
- /**
1277
- * Tên collection MongoDB.
1278
- */
1279
- __publicField(this, "collectionName");
1280
- /**
1281
- * Callback khi kết nối thành công.
1282
- */
1283
- __publicField(this, "onLoad");
1284
- /**
1285
- * Callback khi xảy ra lỗi.
1286
- */
1287
- __publicField(this, "onError");
1288
- /**
1289
- * Trạng thái đã gọi onLoad chưa (tránh spam)
1290
- */
1291
- __publicField(this, "isLoaded", false);
1292
1301
  const {
1293
1302
  mongourl = "mongodb://localhost:27017",
1294
1303
  databaseName = "database",
@@ -1372,8 +1381,6 @@ var _MongoDriver = class _MongoDriver {
1372
1381
  return true;
1373
1382
  }
1374
1383
  };
1375
- __name(_MongoDriver, "MongoDriver");
1376
- var MongoDriver = _MongoDriver;
1377
1384
  export {
1378
1385
  Database,
1379
1386
  JSONDriver,