@mgarlik/datastore 0.1.9 → 0.1.11

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.cjs CHANGED
@@ -30,6 +30,26 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/index.ts
31
31
  var index_exports = {};
32
32
  __export(index_exports, {
33
+ COLOR_APP: () => COLOR_APP,
34
+ COLOR_AXIOS: () => COLOR_AXIOS,
35
+ COLOR_BLUE: () => COLOR_BLUE,
36
+ COLOR_CONTEXT: () => COLOR_CONTEXT,
37
+ COLOR_CYAN: () => COLOR_CYAN,
38
+ COLOR_DS: () => COLOR_DS,
39
+ COLOR_ERROR: () => COLOR_ERROR,
40
+ COLOR_FUNCTION: () => COLOR_FUNCTION,
41
+ COLOR_GREEN: () => COLOR_GREEN,
42
+ COLOR_MAGENTA: () => COLOR_MAGENTA,
43
+ COLOR_ORANGE: () => COLOR_ORANGE,
44
+ COLOR_PROVIDER: () => COLOR_PROVIDER,
45
+ COLOR_RED: () => COLOR_RED,
46
+ COLOR_RENDER: () => COLOR_RENDER,
47
+ COLOR_SCREEN: () => COLOR_SCREEN,
48
+ COLOR_SOCKET: () => COLOR_SOCKET,
49
+ COLOR_SOCKETS: () => COLOR_SOCKETS,
50
+ COLOR_WARNING: () => COLOR_WARNING,
51
+ COLOR_WHITE: () => COLOR_WHITE,
52
+ COLOR_YELLOW: () => COLOR_YELLOW,
33
53
  DataStoreActionsContext: () => DataStoreActionsContext,
34
54
  DataStoreContext: () => DataStoreContext,
35
55
  DataStoreDocumentsContext: () => DataStoreDocumentsContext,
@@ -723,6 +743,17 @@ var getData = async ({ id, dataSource, isPersisting, schema, SQLite, changeTime
723
743
  console.log("Stahuji data z ", buildUri({ dataSource, method: "read" }), " s parametry ", params);
724
744
  const axiosResponse = await import_axios.default.get(buildUri({ dataSource, method: "read" }), { params: serializeParams(params) });
725
745
  if (schema && !dataSource.readAllFields) {
746
+ const mapBySchema = (element) => {
747
+ const mappedRow = {};
748
+ Object.keys(schema).forEach((key) => {
749
+ const sourceKey = schema[key].source || key;
750
+ const value = typeof element === "object" && element !== null ? element[sourceKey] : element;
751
+ if (value !== void 0) {
752
+ mappedRow[key] = value;
753
+ }
754
+ });
755
+ return mappedRow;
756
+ };
726
757
  if (Array.isArray(axiosResponse.data.data)) {
727
758
  newData = [];
728
759
  axiosResponse.data.data.forEach((element) => {
@@ -730,14 +761,7 @@ var getData = async ({ id, dataSource, isPersisting, schema, SQLite, changeTime
730
761
  newData.push(element);
731
762
  return;
732
763
  }
733
- var newRow = {};
734
- Object.keys(schema).forEach((key) => {
735
- if (typeof element === "object") {
736
- newRow[key] = schema[key].source ? element[schema[key].source] : element[key];
737
- } else {
738
- newRow[key] = element;
739
- }
740
- });
764
+ const newRow = mapBySchema(element);
741
765
  if (!newRow.id && ["payments", "deliveries"].includes(id)) {
742
766
  if (element.id) {
743
767
  newRow.id = id + "-" + element.id;
@@ -748,10 +772,7 @@ var getData = async ({ id, dataSource, isPersisting, schema, SQLite, changeTime
748
772
  newData.push(newRow);
749
773
  });
750
774
  } else {
751
- newData = {};
752
- Object.keys(schema).forEach((key) => {
753
- newData[key] = schema[key].source ? axiosResponse.data.data[schema[key].source] : axiosResponse.data.data[key];
754
- });
775
+ newData = mapBySchema(axiosResponse.data.data);
755
776
  }
756
777
  } else {
757
778
  newData = axiosResponse.data.data;
@@ -781,6 +802,8 @@ var getData = async ({ id, dataSource, isPersisting, schema, SQLite, changeTime
781
802
  `getData - Polozky ${id} persisted: ${persistedData.length}, newData: ${newData.length}, vysledek: ${updatedArray.length}`
782
803
  );
783
804
  console.timeEnd("Maping");
805
+ console.log("================== NEW DATA");
806
+ console.log(newData);
784
807
  return updatedArray;
785
808
  } else {
786
809
  return newData || [];
@@ -1202,6 +1225,23 @@ var DataStoreProvider = (0, import_react.forwardRef)(
1202
1225
  actions: [...prev.actions, { action, data, callback }]
1203
1226
  }));
1204
1227
  }, []);
1228
+ const mergeWithNullDeletion = (0, import_react.useCallback)((base, patch) => {
1229
+ const isObject = (value) => !!value && typeof value === "object" && !Array.isArray(value);
1230
+ if (!isObject(patch)) return patch;
1231
+ const result = isObject(base) ? { ...base } : {};
1232
+ Object.entries(patch).forEach(([key, value]) => {
1233
+ if (value === null) {
1234
+ delete result[key];
1235
+ return;
1236
+ }
1237
+ if (isObject(value)) {
1238
+ result[key] = mergeWithNullDeletion(result[key], value);
1239
+ return;
1240
+ }
1241
+ result[key] = value;
1242
+ });
1243
+ return result;
1244
+ }, []);
1205
1245
  (0, import_react.useEffect)(() => {
1206
1246
  async function processDispatcher() {
1207
1247
  if (dispatcher.actions.length > 0) {
@@ -1295,7 +1335,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
1295
1335
  if (!newDocs[id]) {
1296
1336
  systemLog("dsp", "updateDocuments - vytvarim", id);
1297
1337
  data.push(id);
1298
- newDocs[id] = doc;
1338
+ newDocs[id] = mergeWithNullDeletion(void 0, doc);
1299
1339
  documentsToPersist.push({ id, data: newDocs[id] });
1300
1340
  } else if (doc._deleted) {
1301
1341
  systemLog("dsp", "updateDocuments - mazu", id);
@@ -1304,7 +1344,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
1304
1344
  delete newDocs[id];
1305
1345
  } else {
1306
1346
  systemLog("dsp", "updateDocuments - updatuji", id);
1307
- newDocs[id] = { ...newDocs[id], ...doc };
1347
+ newDocs[id] = mergeWithNullDeletion(newDocs[id], doc);
1308
1348
  documentsToPersist.push({ id, data: newDocs[id] });
1309
1349
  }
1310
1350
  break;
@@ -1332,7 +1372,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
1332
1372
  default:
1333
1373
  if (!newDocs[key]) {
1334
1374
  data.push(key);
1335
- newDocs[key] = uDocuments[key];
1375
+ newDocs[key] = mergeWithNullDeletion(void 0, uDocuments[key]);
1336
1376
  documentsToPersist.push({ id: key, data: newDocs[key] });
1337
1377
  break;
1338
1378
  }
@@ -1341,7 +1381,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
1341
1381
  documentIdsToDelete.push(key);
1342
1382
  delete newDocs[key];
1343
1383
  } else {
1344
- newDocs[key] = { ...newDocs[key], ...uDocuments[key] };
1384
+ newDocs[key] = mergeWithNullDeletion(newDocs[key], uDocuments[key]);
1345
1385
  documentsToPersist.push({ id: key, data: newDocs[key] });
1346
1386
  }
1347
1387
  break;
@@ -1366,7 +1406,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
1366
1406
  await Promise.all(documentIdsToDelete.map((documentId) => removePersistedDocument(documentId)));
1367
1407
  }
1368
1408
  },
1369
- [providers, setDocuments, setProviders, persistDocument, removePersistedDocument, persistenceStorage]
1409
+ [providers, setDocuments, setProviders, persistDocument, removePersistedDocument, persistenceStorage, mergeWithNullDeletion]
1370
1410
  );
1371
1411
  const updateDocument = (0, import_react.useCallback)(
1372
1412
  async ({ documentId, model, fields, data: pData }) => {
@@ -1394,6 +1434,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
1394
1434
  }
1395
1435
  if (data) {
1396
1436
  console.log("[updateDocument]:", documentId, ", model:", model);
1437
+ const documentForFilter = mergeWithNullDeletion(documents[documentId], dataWithDocumentId);
1397
1438
  var listeningProviders = 0;
1398
1439
  var isProvidersUpdated = false;
1399
1440
  const rand = uuid();
@@ -1410,7 +1451,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
1410
1451
  var socketListeners = providerNext.dataSource?.socketListeners || [];
1411
1452
  if (socketListeners.length === 0) {
1412
1453
  if (providerNext.data.includes(documentId)) {
1413
- if (!providerNext.dataSource?.filter || filterDocuments(dataWithDocumentId, providerNext.dataSource?.filter)) {
1454
+ if (!providerNext.dataSource?.filter || filterDocuments(documentForFilter, providerNext.dataSource?.filter)) {
1414
1455
  systemLog("dsp", "[updateDocument] - zustava v Provider bez Listeners:", key);
1415
1456
  listeningProviders++;
1416
1457
  providerNext.lastUpdate = {
@@ -1430,7 +1471,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
1430
1471
  }
1431
1472
  } else if (socketListeners.includes(model) || // socketListeners.includes(documentId) ||
1432
1473
  key === model) {
1433
- if (!providerNext.dataSource.filter || filterDocuments(dataWithDocumentId, providerNext.dataSource.filter)) {
1474
+ if (!providerNext.dataSource.filter || filterDocuments(documentForFilter, providerNext.dataSource.filter)) {
1434
1475
  listeningProviders++;
1435
1476
  providerNext.lastUpdate = {
1436
1477
  id: uuid(),
@@ -1470,12 +1511,12 @@ var DataStoreProvider = (0, import_react.forwardRef)(
1470
1511
  console.timeEnd("[DSP UPDATE DOCUMENTS INSIDE]");
1471
1512
  return {
1472
1513
  ...prev2,
1473
- [documentId]: { ...prev2[documentId], ...dataWithDocumentId }
1514
+ [documentId]: mergeWithNullDeletion(prev2[documentId], dataWithDocumentId)
1474
1515
  };
1475
1516
  }
1476
1517
  } else if (listeningProviders > 0) {
1477
1518
  console.timeEnd("[DSP UPDATE DOCUMENTS INSIDE]");
1478
- return { ...prev2, [documentId]: dataWithDocumentId };
1519
+ return { ...prev2, [documentId]: mergeWithNullDeletion(void 0, dataWithDocumentId) };
1479
1520
  }
1480
1521
  console.timeEnd("[DSP UPDATE DOCUMENTS INSIDE]");
1481
1522
  return prev2;
@@ -1504,7 +1545,7 @@ var DataStoreProvider = (0, import_react.forwardRef)(
1504
1545
  await persistDocument({
1505
1546
  documentId,
1506
1547
  model,
1507
- data: { ...documents[documentId], ...dataWithDocumentId }
1548
+ data: documentForFilter
1508
1549
  });
1509
1550
  } else {
1510
1551
  await removePersistedDocument(documentId);
@@ -1512,7 +1553,17 @@ var DataStoreProvider = (0, import_react.forwardRef)(
1512
1553
  }
1513
1554
  }
1514
1555
  },
1515
- [documents, providers, setDocuments, setProviders, setCounterDocuments, persistDocument, removePersistedDocument, persistenceStorage]
1556
+ [
1557
+ documents,
1558
+ providers,
1559
+ setDocuments,
1560
+ setProviders,
1561
+ setCounterDocuments,
1562
+ persistDocument,
1563
+ removePersistedDocument,
1564
+ persistenceStorage,
1565
+ mergeWithNullDeletion
1566
+ ]
1516
1567
  );
1517
1568
  const updateDataStore = (0, import_react.useCallback)(
1518
1569
  async ({ id, documentId, params, variant, data }) => {
@@ -2088,23 +2139,11 @@ var useDataProvider = (id, params, dataFilter, settings) => {
2088
2139
  };
2089
2140
  const updateItem = ({ params: params2, data, variant, documentId = void 0 }, callback) => {
2090
2141
  systemLog("usedp", "UPDATUJI:", providerId, ", variant:", variant, ", documentId: ", documentId, ", params:", params2, ", data:", data);
2091
- return new Promise((resolve, reject) => {
2092
- const wrappedCallback = (result) => {
2093
- callback?.(result);
2094
- resolve(result);
2095
- };
2096
- dispatch("updateDataStore", { id: providerId, variant, params: params2, data, documentId }, wrappedCallback);
2097
- });
2142
+ dispatch("updateDataStore", { id: providerId, variant, params: params2, data, documentId }, callback);
2098
2143
  };
2099
2144
  const deleteItem = ({ params: params2, data }, callback) => {
2100
2145
  systemLog("usedp", "DELETE FROM:", providerId, ", params:", params2, "data:", data);
2101
- return new Promise((resolve, reject) => {
2102
- const wrappedCallback = (result) => {
2103
- callback?.(result);
2104
- resolve(result);
2105
- };
2106
- dispatch("deleteProviderItem", { providerId, data, params: params2 }, wrappedCallback);
2107
- });
2146
+ dispatch("deleteProviderItem", { providerId, data, params: params2 }, callback);
2108
2147
  };
2109
2148
  const createItem = (data, callback) => {
2110
2149
  return new Promise((resolve, reject) => {
@@ -2235,22 +2274,10 @@ var useProviderActions = (providerId, data) => {
2235
2274
  dispatch("updateDataStore", { id: providerId, data: val });
2236
2275
  };
2237
2276
  const updateItem = ({ params, data: data2, variant, documentId = void 0 }, callback) => {
2238
- return new Promise((resolve, reject) => {
2239
- const wrappedCallback = (result) => {
2240
- callback?.(result);
2241
- resolve(result);
2242
- };
2243
- dispatch("updateDataStore", { id: providerId, variant, params, data: data2, documentId }, wrappedCallback);
2244
- });
2277
+ dispatch("updateDataStore", { id: providerId, variant, params, data: data2, documentId }, callback);
2245
2278
  };
2246
2279
  const deleteItem = ({ params, data: data2 }, callback) => {
2247
- return new Promise((resolve, reject) => {
2248
- const wrappedCallback = (result) => {
2249
- callback?.(result);
2250
- resolve(result);
2251
- };
2252
- dispatch("deleteProviderItem", { providerId, data: data2, params }, wrappedCallback);
2253
- });
2280
+ dispatch("deleteProviderItem", { providerId, data: data2, params }, callback);
2254
2281
  };
2255
2282
  const createItem = (data2, callback) => {
2256
2283
  systemLog("usedp", "createItem Prov. id:", providerId);
@@ -2271,6 +2298,28 @@ var useProviderActions = (providerId, data) => {
2271
2298
  };
2272
2299
  };
2273
2300
 
2301
+ // src/logColors.ts
2302
+ var COLOR_WHITE = `\x1B[37m%s\x1B[0m`;
2303
+ var COLOR_MAGENTA = `\x1B[35m%s\x1B[0m`;
2304
+ var COLOR_BLUE = `\x1B[34m%s\x1B[0m`;
2305
+ var COLOR_CYAN = `\x1B[36m%s\x1B[0m`;
2306
+ var COLOR_GREEN = `\x1B[32m%s\x1B[0m`;
2307
+ var COLOR_RED = `\x1B[31m%s\x1B[0m`;
2308
+ var COLOR_ERROR = `\x1B[31m%s\x1B[0m`;
2309
+ var COLOR_YELLOW = `\x1B[33m%s\x1B[0m`;
2310
+ var COLOR_ORANGE = `\x1B[38;5;208m%s\x1B[0m`;
2311
+ var COLOR_WARNING = `\x1B[33m%s\x1B[0m`;
2312
+ var COLOR_PROVIDER = COLOR_MAGENTA;
2313
+ var COLOR_CONTEXT = COLOR_MAGENTA;
2314
+ var COLOR_RENDER = COLOR_BLUE;
2315
+ var COLOR_FUNCTION = COLOR_CYAN;
2316
+ var COLOR_SCREEN = COLOR_GREEN;
2317
+ var COLOR_SOCKET = COLOR_CYAN;
2318
+ var COLOR_SOCKETS = COLOR_YELLOW;
2319
+ var COLOR_AXIOS = COLOR_YELLOW;
2320
+ var COLOR_APP = COLOR_BLUE;
2321
+ var COLOR_DS = COLOR_MAGENTA;
2322
+
2274
2323
  // src/debugStorage.ts
2275
2324
  async function logStorageContent(storage) {
2276
2325
  try {
@@ -2300,6 +2349,26 @@ async function logStorageContent(storage) {
2300
2349
  }
2301
2350
  // Annotate the CommonJS export names for ESM import in node:
2302
2351
  0 && (module.exports = {
2352
+ COLOR_APP,
2353
+ COLOR_AXIOS,
2354
+ COLOR_BLUE,
2355
+ COLOR_CONTEXT,
2356
+ COLOR_CYAN,
2357
+ COLOR_DS,
2358
+ COLOR_ERROR,
2359
+ COLOR_FUNCTION,
2360
+ COLOR_GREEN,
2361
+ COLOR_MAGENTA,
2362
+ COLOR_ORANGE,
2363
+ COLOR_PROVIDER,
2364
+ COLOR_RED,
2365
+ COLOR_RENDER,
2366
+ COLOR_SCREEN,
2367
+ COLOR_SOCKET,
2368
+ COLOR_SOCKETS,
2369
+ COLOR_WARNING,
2370
+ COLOR_WHITE,
2371
+ COLOR_YELLOW,
2303
2372
  DataStoreActionsContext,
2304
2373
  DataStoreContext,
2305
2374
  DataStoreDocumentsContext,