@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 +120 -51
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +37 -6
- package/dist/index.d.ts +37 -6
- package/dist/index.js +100 -51
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
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] =
|
|
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] =
|
|
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(
|
|
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(
|
|
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]:
|
|
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:
|
|
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
|
-
[
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|