inibase 1.2.15 → 1.2.17

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.ts CHANGED
@@ -68,7 +68,7 @@ export default class Inibase {
68
68
  fileExtension: string;
69
69
  private databasePath;
70
70
  private uniqueMap;
71
- private totalItems;
71
+ totalItems: Map<string, number>;
72
72
  constructor(database: string, mainFolder?: string, language?: ErrorLang);
73
73
  private static errorMessages;
74
74
  createError(name: ErrorCodes, variable?: string | number | (string | number)[]): Error;
package/dist/index.js CHANGED
@@ -821,7 +821,9 @@ export default class Inibase {
821
821
  continue;
822
822
  if (!RETURN[index][field.key][_i])
823
823
  RETURN[index][field.key][_i] = {};
824
- RETURN[index][field.key][_i][key] = value[_i];
824
+ RETURN[index][field.key][_i][key] = Array.isArray(value[_i])
825
+ ? value[_i].filter(Boolean)
826
+ : value[_i];
825
827
  }
826
828
  }
827
829
  }
@@ -905,13 +907,11 @@ export default class Inibase {
905
907
  .map((column) => column.replace(`${field.key}.`, "")),
906
908
  });
907
909
  const formatLineContent = (lineContent) => Array.isArray(lineContent)
908
- ? lineContent
909
- .map((singleContent) => singleContent
910
+ ? lineContent.map((singleContent) => singleContent
910
911
  ? Array.isArray(singleContent)
911
912
  ? singleContent.map(formatLineContent)
912
913
  : items?.find(({ id }) => singleContent === id)
913
914
  : singleContent)
914
- .filter(Boolean)
915
915
  : items?.find(({ id }) => lineContent === id);
916
916
  for (const [lineNumber, lineContent] of searchableIDs.entries()) {
917
917
  if (!lineContent)
@@ -1037,8 +1037,10 @@ export default class Inibase {
1037
1037
  }
1038
1038
  if (criteriaAND && Utils.isObject(criteriaAND)) {
1039
1039
  const searchResult = await this.applyCriteria(tableName, options, criteriaAND, true, searchIn);
1040
- if (searchResult)
1040
+ if (searchResult) {
1041
+ searchIn = new Set(Object.keys(searchResult).map(Number));
1041
1042
  RETURN = Utils.deepMerge(RETURN, Object.fromEntries(Object.entries(searchResult).filter(([_k, v], _i) => Object.keys(v).filter((key) => Object.keys(criteriaAND).includes(key)).length)));
1043
+ }
1042
1044
  else
1043
1045
  return null;
1044
1046
  }
@@ -1230,8 +1232,7 @@ export default class Inibase {
1230
1232
  : Array.from({ length: options.perPage }, (_, index) => (options.page - 1) * options.perPage +
1231
1233
  index +
1232
1234
  1), options));
1233
- if (!this.totalItems.has(`${tableName}-*`))
1234
- this.totalItems.set(`${tableName}-*`, pagination[1]);
1235
+ this.totalItems.set(`${tableName}-id`, pagination[1]);
1235
1236
  }
1236
1237
  else if (((Array.isArray(where) && where.every(Utils.isNumber)) ||
1237
1238
  Utils.isNumber(where)) &&
@@ -1241,8 +1242,7 @@ export default class Inibase {
1241
1242
  let lineNumbers = where;
1242
1243
  if (!Array.isArray(lineNumbers))
1243
1244
  lineNumbers = [lineNumbers];
1244
- if (!this.totalItems.has(`${tableName}-*`))
1245
- this.totalItems.set(`${tableName}-*`, lineNumbers.length);
1245
+ this.totalItems.set(`${tableName}-id`, lineNumbers.length);
1246
1246
  // useless
1247
1247
  if (onlyLinesNumbers)
1248
1248
  return lineNumbers;
@@ -1259,11 +1259,10 @@ export default class Inibase {
1259
1259
  let Ids = where;
1260
1260
  if (!Array.isArray(Ids))
1261
1261
  Ids = [Ids];
1262
- const [lineNumbers, countItems] = await File.search(join(tablePath, `id${this.getFileExtension(tableName)}`), "[]", Ids.map((id) => Utils.isNumber(id) ? Number(id) : UtilsServer.decodeID(id)), undefined, undefined, { key: "BLABLA", type: "number" }, Ids.length, 0, !this.totalItems.has(`${tableName}-*`));
1262
+ const [lineNumbers, countItems] = await File.search(join(tablePath, `id${this.getFileExtension(tableName)}`), "[]", Ids.map((id) => Utils.isNumber(id) ? Number(id) : UtilsServer.decodeID(id)), undefined, undefined, { key: "BLABLA", type: "number" }, Ids.length, 0, !this.totalItems.has(`${tableName}-id`));
1263
1263
  if (!lineNumbers)
1264
1264
  return null;
1265
- if (!this.totalItems.has(`${tableName}-*`))
1266
- this.totalItems.set(`${tableName}-*`, countItems);
1265
+ this.totalItems.set(`${tableName}-id`, countItems);
1267
1266
  if (onlyLinesNumbers)
1268
1267
  return Object.keys(lineNumbers).length
1269
1268
  ? Object.keys(lineNumbers).map(Number)
@@ -1295,8 +1294,7 @@ export default class Inibase {
1295
1294
  }
1296
1295
  const LineNumberDataObj = await this.applyCriteria(tableName, options, structuredClone(where));
1297
1296
  if (LineNumberDataObj) {
1298
- if (!this.totalItems.has(`${tableName}-*`))
1299
- this.totalItems.set(`${tableName}-*`, Object.keys(LineNumberDataObj).length);
1297
+ this.totalItems.set(`${tableName}-*`, Object.keys(LineNumberDataObj).length);
1300
1298
  if (onlyLinesNumbers)
1301
1299
  return onlyOne
1302
1300
  ? Number(Object.keys(LineNumberDataObj)[0])
@@ -1309,7 +1307,6 @@ export default class Inibase {
1309
1307
  Utils.isFieldType(field, "table")), Object.keys(LineNumberDataObj).map(Number), options)));
1310
1308
  if (globalConfig[this.databasePath].tables.get(tableName).config.cache)
1311
1309
  await writeFile(cachedFilePath, Object.keys(LineNumberDataObj).join(","));
1312
- this.totalItems.delete(`${tableName}-*`);
1313
1310
  }
1314
1311
  }
1315
1312
  if (!RETURN ||
@@ -1324,7 +1321,9 @@ export default class Inibase {
1324
1321
  this.pageInfo[tableName] = {
1325
1322
  ...(({ columns, ...restOfOptions }) => restOfOptions)(options),
1326
1323
  perPage: Array.isArray(RETURN) ? RETURN.length : 1,
1327
- totalPages: Math.ceil(greatestTotalItems / options.perPage),
1324
+ totalPages: options.perPage < 0
1325
+ ? undefined
1326
+ : Math.ceil(greatestTotalItems / options.perPage),
1328
1327
  total: greatestTotalItems,
1329
1328
  };
1330
1329
  return onlyOne && Array.isArray(RETURN) ? RETURN[0] : RETURN;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "inibase",
3
- "version": "1.2.15",
3
+ "version": "1.2.17",
4
4
  "type": "module",
5
5
  "author": {
6
6
  "name": "Karim Amahtil",