@fctc/interface-logic 4.3.0 → 4.3.2
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/hooks.d.mts +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +94 -60
- package/dist/hooks.mjs +94 -59
- package/dist/provider.js +94 -60
- package/dist/provider.mjs +94 -59
- package/dist/services.d.mts +1 -1
- package/dist/services.d.ts +1 -1
- package/dist/services.js +94 -60
- package/dist/services.mjs +94 -59
- package/package.json +1 -1
package/dist/hooks.d.mts
CHANGED
|
@@ -660,7 +660,7 @@ declare const useHandleClosingSession: () => _tanstack_react_query.UseMutationRe
|
|
|
660
660
|
xNode?: string;
|
|
661
661
|
}, unknown>;
|
|
662
662
|
|
|
663
|
-
declare const useLoadDataPosSession: () => _tanstack_react_query.UseMutationResult<
|
|
663
|
+
declare const useLoadDataPosSession: () => _tanstack_react_query.UseMutationResult<any, Error, {
|
|
664
664
|
model: string;
|
|
665
665
|
ids: any;
|
|
666
666
|
service?: string;
|
package/dist/hooks.d.ts
CHANGED
|
@@ -660,7 +660,7 @@ declare const useHandleClosingSession: () => _tanstack_react_query.UseMutationRe
|
|
|
660
660
|
xNode?: string;
|
|
661
661
|
}, unknown>;
|
|
662
662
|
|
|
663
|
-
declare const useLoadDataPosSession: () => _tanstack_react_query.UseMutationResult<
|
|
663
|
+
declare const useLoadDataPosSession: () => _tanstack_react_query.UseMutationResult<any, Error, {
|
|
664
664
|
model: string;
|
|
665
665
|
ids: any;
|
|
666
666
|
service?: string;
|
package/dist/hooks.js
CHANGED
|
@@ -1764,9 +1764,9 @@ function applyBinaryOp(ast, context) {
|
|
|
1764
1764
|
var DICT = {
|
|
1765
1765
|
get(...args) {
|
|
1766
1766
|
const { key, defValue } = parseArgs(args, ["key", "defValue"]);
|
|
1767
|
-
const
|
|
1768
|
-
if (key in
|
|
1769
|
-
return
|
|
1767
|
+
const self = this;
|
|
1768
|
+
if (key in self) {
|
|
1769
|
+
return self[key];
|
|
1770
1770
|
} else if (defValue !== void 0) {
|
|
1771
1771
|
return defValue;
|
|
1772
1772
|
}
|
|
@@ -6042,26 +6042,30 @@ var fileService = {
|
|
|
6042
6042
|
};
|
|
6043
6043
|
|
|
6044
6044
|
// src/services/filesystem-service/json-worker.ts
|
|
6045
|
-
|
|
6046
|
-
|
|
6047
|
-
|
|
6048
|
-
|
|
6049
|
-
|
|
6050
|
-
|
|
6051
|
-
|
|
6052
|
-
|
|
6053
|
-
|
|
6054
|
-
|
|
6055
|
-
|
|
6056
|
-
|
|
6057
|
-
|
|
6058
|
-
|
|
6059
|
-
}
|
|
6045
|
+
function createWorkerBlob() {
|
|
6046
|
+
const workerCode = `
|
|
6047
|
+
self.addEventListener("message", async (ev) => {
|
|
6048
|
+
const { id, cmd, payload } = ev.data;
|
|
6049
|
+
try {
|
|
6050
|
+
if (cmd === "parse") {
|
|
6051
|
+
const parsed = JSON.parse(payload);
|
|
6052
|
+
self.postMessage({ id, ok: true, result: parsed });
|
|
6053
|
+
} else if (cmd === "stringify") {
|
|
6054
|
+
const str = JSON.stringify(payload);
|
|
6055
|
+
self.postMessage({ id, ok: true, result: str });
|
|
6056
|
+
}
|
|
6057
|
+
} catch (err) {
|
|
6058
|
+
self.postMessage({ id, ok: false, error: err?.message || String(err) });
|
|
6059
|
+
}
|
|
6060
|
+
});
|
|
6061
|
+
`;
|
|
6062
|
+
const blob = new Blob([workerCode], { type: "application/javascript" });
|
|
6063
|
+
return URL.createObjectURL(blob);
|
|
6064
|
+
}
|
|
6060
6065
|
function spawnParseWorker(raw) {
|
|
6061
6066
|
return new Promise((resolve, reject) => {
|
|
6062
|
-
const
|
|
6063
|
-
|
|
6064
|
-
});
|
|
6067
|
+
const workerUrl = createWorkerBlob();
|
|
6068
|
+
const worker = new Worker(workerUrl);
|
|
6065
6069
|
const id = Math.random().toString(36).slice(2);
|
|
6066
6070
|
worker.onmessage = (ev) => {
|
|
6067
6071
|
const { ok, result, error } = ev.data;
|
|
@@ -6070,6 +6074,12 @@ function spawnParseWorker(raw) {
|
|
|
6070
6074
|
} else {
|
|
6071
6075
|
reject(new Error(error));
|
|
6072
6076
|
}
|
|
6077
|
+
URL.revokeObjectURL(workerUrl);
|
|
6078
|
+
worker.terminate();
|
|
6079
|
+
};
|
|
6080
|
+
worker.onerror = (err) => {
|
|
6081
|
+
reject(err);
|
|
6082
|
+
URL.revokeObjectURL(workerUrl);
|
|
6073
6083
|
worker.terminate();
|
|
6074
6084
|
};
|
|
6075
6085
|
worker.postMessage({ id, cmd: "parse", payload: raw });
|
|
@@ -6077,13 +6087,18 @@ function spawnParseWorker(raw) {
|
|
|
6077
6087
|
}
|
|
6078
6088
|
function spawnStringifyWorker(obj) {
|
|
6079
6089
|
return new Promise((resolve, reject) => {
|
|
6080
|
-
const
|
|
6081
|
-
|
|
6082
|
-
});
|
|
6090
|
+
const workerUrl = createWorkerBlob();
|
|
6091
|
+
const worker = new Worker(workerUrl);
|
|
6083
6092
|
worker.onmessage = (ev) => {
|
|
6084
6093
|
const { ok, result, error } = ev.data;
|
|
6085
6094
|
if (ok) resolve(result);
|
|
6086
6095
|
else reject(new Error(error));
|
|
6096
|
+
URL.revokeObjectURL(workerUrl);
|
|
6097
|
+
worker.terminate();
|
|
6098
|
+
};
|
|
6099
|
+
worker.onerror = (err) => {
|
|
6100
|
+
reject(err);
|
|
6101
|
+
URL.revokeObjectURL(workerUrl);
|
|
6087
6102
|
worker.terminate();
|
|
6088
6103
|
};
|
|
6089
6104
|
worker.postMessage({ cmd: "stringify", payload: obj });
|
|
@@ -6118,50 +6133,67 @@ var memoryCache = new MemoryCache();
|
|
|
6118
6133
|
var MODELS_DIR = "pos/models";
|
|
6119
6134
|
var MODELS_META_DIR = "pos/models_meta";
|
|
6120
6135
|
async function loadData(includeMeta = true) {
|
|
6121
|
-
|
|
6122
|
-
|
|
6123
|
-
|
|
6124
|
-
|
|
6125
|
-
|
|
6126
|
-
|
|
6127
|
-
|
|
6128
|
-
if (!file.name.endsWith(".json")) continue;
|
|
6129
|
-
const fileName = file.name;
|
|
6130
|
-
const modelName = fileName.replace(/\.json$/, "");
|
|
6131
|
-
const dataPath = `${MODELS_DIR}/${fileName}`;
|
|
6132
|
-
const metaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
6133
|
-
modelName
|
|
6134
|
-
)}.meta.json`;
|
|
6135
|
-
const rawData = await fileService.read(dataPath);
|
|
6136
|
-
if (!rawData) continue;
|
|
6137
|
-
const parsedData = await spawnParseWorker(rawData);
|
|
6138
|
-
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
6139
|
-
if (!includeMeta) {
|
|
6140
|
-
result[modelName] = { data };
|
|
6141
|
-
continue;
|
|
6136
|
+
console.log("\u{1F50D} loadData START");
|
|
6137
|
+
try {
|
|
6138
|
+
const listResult = await fileService.list(MODELS_DIR);
|
|
6139
|
+
console.log("\u{1F4CB} listResult:", listResult);
|
|
6140
|
+
if (!listResult || !Array.isArray(listResult.files)) {
|
|
6141
|
+
console.log("\u26A0\uFE0F No files found");
|
|
6142
|
+
return {};
|
|
6142
6143
|
}
|
|
6143
|
-
const
|
|
6144
|
-
|
|
6145
|
-
|
|
6146
|
-
|
|
6147
|
-
|
|
6148
|
-
|
|
6149
|
-
|
|
6144
|
+
const result = {};
|
|
6145
|
+
for (const file of listResult.files) {
|
|
6146
|
+
console.log("\u{1F4C4} Processing file:", file.name);
|
|
6147
|
+
if (file.type !== "file") continue;
|
|
6148
|
+
if (!file.name.endsWith(".json")) continue;
|
|
6149
|
+
const fileName = file.name;
|
|
6150
|
+
const modelName = fileName.replace(/\.json$/, "");
|
|
6151
|
+
const dataPath = `${MODELS_DIR}/${fileName}`;
|
|
6152
|
+
console.log("\u{1F4C2} Reading data from:", dataPath);
|
|
6153
|
+
const rawData = await fileService.read(dataPath);
|
|
6154
|
+
console.log("\u2705 Data read, length:", rawData?.length);
|
|
6155
|
+
if (!rawData) continue;
|
|
6156
|
+
console.log("\u{1F504} Parsing data...");
|
|
6157
|
+
const parsedData = await spawnParseWorker(rawData);
|
|
6158
|
+
console.log("\u2705 Data parsed");
|
|
6159
|
+
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
6160
|
+
if (!includeMeta) {
|
|
6161
|
+
result[modelName] = { data };
|
|
6162
|
+
continue;
|
|
6163
|
+
}
|
|
6164
|
+
const metaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
6165
|
+
modelName
|
|
6166
|
+
)}.meta.json`;
|
|
6167
|
+
console.log("\u{1F4C2} Reading meta from:", metaPath);
|
|
6168
|
+
const rawMeta = await fileService.read(metaPath);
|
|
6169
|
+
let fields = [];
|
|
6170
|
+
let relations = {};
|
|
6171
|
+
if (rawMeta) {
|
|
6172
|
+
console.log("\u{1F504} Parsing meta...");
|
|
6173
|
+
const parsedMeta = await spawnParseWorker(rawMeta);
|
|
6174
|
+
fields = parsedMeta?.fields ?? [];
|
|
6175
|
+
relations = parsedMeta?.relations ?? {};
|
|
6176
|
+
console.log("\u2705 Meta parsed");
|
|
6177
|
+
}
|
|
6178
|
+
result[modelName] = {
|
|
6179
|
+
data,
|
|
6180
|
+
fields,
|
|
6181
|
+
relations
|
|
6182
|
+
};
|
|
6150
6183
|
}
|
|
6151
|
-
|
|
6152
|
-
|
|
6153
|
-
|
|
6154
|
-
|
|
6155
|
-
|
|
6184
|
+
console.log("\u2705 loadData COMPLETE:", Object.keys(result));
|
|
6185
|
+
return result;
|
|
6186
|
+
} catch (error) {
|
|
6187
|
+
console.error("\u274C loadData ERROR:", error);
|
|
6188
|
+
throw error;
|
|
6156
6189
|
}
|
|
6157
|
-
return result;
|
|
6158
6190
|
}
|
|
6159
6191
|
|
|
6160
6192
|
// src/services/pos-service/load-data-pos-session.ts
|
|
6161
6193
|
var loadDataPosSessionService = (env) => {
|
|
6162
6194
|
const isLocalMode = env?.isLocalMode;
|
|
6163
6195
|
const loadDataPosSession = (0, import_react37.useCallback)(
|
|
6164
|
-
({
|
|
6196
|
+
async ({
|
|
6165
6197
|
model,
|
|
6166
6198
|
ids,
|
|
6167
6199
|
xNode,
|
|
@@ -6172,7 +6204,9 @@ var loadDataPosSessionService = (env) => {
|
|
|
6172
6204
|
}) => {
|
|
6173
6205
|
console.log("isLocalMode", isLocalMode);
|
|
6174
6206
|
if (isLocalMode) {
|
|
6175
|
-
|
|
6207
|
+
const data = await loadData();
|
|
6208
|
+
console.log("\u2705 loadData resolved:", data);
|
|
6209
|
+
return data;
|
|
6176
6210
|
}
|
|
6177
6211
|
const jsonData = {
|
|
6178
6212
|
model,
|
package/dist/hooks.mjs
CHANGED
|
@@ -1616,9 +1616,9 @@ function applyBinaryOp(ast, context) {
|
|
|
1616
1616
|
var DICT = {
|
|
1617
1617
|
get(...args) {
|
|
1618
1618
|
const { key, defValue } = parseArgs(args, ["key", "defValue"]);
|
|
1619
|
-
const
|
|
1620
|
-
if (key in
|
|
1621
|
-
return
|
|
1619
|
+
const self = this;
|
|
1620
|
+
if (key in self) {
|
|
1621
|
+
return self[key];
|
|
1622
1622
|
} else if (defValue !== void 0) {
|
|
1623
1623
|
return defValue;
|
|
1624
1624
|
}
|
|
@@ -5894,25 +5894,30 @@ var fileService = {
|
|
|
5894
5894
|
};
|
|
5895
5895
|
|
|
5896
5896
|
// src/services/filesystem-service/json-worker.ts
|
|
5897
|
-
|
|
5898
|
-
const
|
|
5899
|
-
|
|
5900
|
-
|
|
5901
|
-
|
|
5902
|
-
|
|
5903
|
-
|
|
5904
|
-
|
|
5905
|
-
|
|
5906
|
-
|
|
5907
|
-
|
|
5908
|
-
|
|
5909
|
-
|
|
5910
|
-
});
|
|
5897
|
+
function createWorkerBlob() {
|
|
5898
|
+
const workerCode = `
|
|
5899
|
+
self.addEventListener("message", async (ev) => {
|
|
5900
|
+
const { id, cmd, payload } = ev.data;
|
|
5901
|
+
try {
|
|
5902
|
+
if (cmd === "parse") {
|
|
5903
|
+
const parsed = JSON.parse(payload);
|
|
5904
|
+
self.postMessage({ id, ok: true, result: parsed });
|
|
5905
|
+
} else if (cmd === "stringify") {
|
|
5906
|
+
const str = JSON.stringify(payload);
|
|
5907
|
+
self.postMessage({ id, ok: true, result: str });
|
|
5908
|
+
}
|
|
5909
|
+
} catch (err) {
|
|
5910
|
+
self.postMessage({ id, ok: false, error: err?.message || String(err) });
|
|
5911
|
+
}
|
|
5912
|
+
});
|
|
5913
|
+
`;
|
|
5914
|
+
const blob = new Blob([workerCode], { type: "application/javascript" });
|
|
5915
|
+
return URL.createObjectURL(blob);
|
|
5916
|
+
}
|
|
5911
5917
|
function spawnParseWorker(raw) {
|
|
5912
5918
|
return new Promise((resolve, reject) => {
|
|
5913
|
-
const
|
|
5914
|
-
|
|
5915
|
-
});
|
|
5919
|
+
const workerUrl = createWorkerBlob();
|
|
5920
|
+
const worker = new Worker(workerUrl);
|
|
5916
5921
|
const id = Math.random().toString(36).slice(2);
|
|
5917
5922
|
worker.onmessage = (ev) => {
|
|
5918
5923
|
const { ok, result, error } = ev.data;
|
|
@@ -5921,6 +5926,12 @@ function spawnParseWorker(raw) {
|
|
|
5921
5926
|
} else {
|
|
5922
5927
|
reject(new Error(error));
|
|
5923
5928
|
}
|
|
5929
|
+
URL.revokeObjectURL(workerUrl);
|
|
5930
|
+
worker.terminate();
|
|
5931
|
+
};
|
|
5932
|
+
worker.onerror = (err) => {
|
|
5933
|
+
reject(err);
|
|
5934
|
+
URL.revokeObjectURL(workerUrl);
|
|
5924
5935
|
worker.terminate();
|
|
5925
5936
|
};
|
|
5926
5937
|
worker.postMessage({ id, cmd: "parse", payload: raw });
|
|
@@ -5928,13 +5939,18 @@ function spawnParseWorker(raw) {
|
|
|
5928
5939
|
}
|
|
5929
5940
|
function spawnStringifyWorker(obj) {
|
|
5930
5941
|
return new Promise((resolve, reject) => {
|
|
5931
|
-
const
|
|
5932
|
-
|
|
5933
|
-
});
|
|
5942
|
+
const workerUrl = createWorkerBlob();
|
|
5943
|
+
const worker = new Worker(workerUrl);
|
|
5934
5944
|
worker.onmessage = (ev) => {
|
|
5935
5945
|
const { ok, result, error } = ev.data;
|
|
5936
5946
|
if (ok) resolve(result);
|
|
5937
5947
|
else reject(new Error(error));
|
|
5948
|
+
URL.revokeObjectURL(workerUrl);
|
|
5949
|
+
worker.terminate();
|
|
5950
|
+
};
|
|
5951
|
+
worker.onerror = (err) => {
|
|
5952
|
+
reject(err);
|
|
5953
|
+
URL.revokeObjectURL(workerUrl);
|
|
5938
5954
|
worker.terminate();
|
|
5939
5955
|
};
|
|
5940
5956
|
worker.postMessage({ cmd: "stringify", payload: obj });
|
|
@@ -5969,50 +5985,67 @@ var memoryCache = new MemoryCache();
|
|
|
5969
5985
|
var MODELS_DIR = "pos/models";
|
|
5970
5986
|
var MODELS_META_DIR = "pos/models_meta";
|
|
5971
5987
|
async function loadData(includeMeta = true) {
|
|
5972
|
-
|
|
5973
|
-
|
|
5974
|
-
|
|
5975
|
-
|
|
5976
|
-
|
|
5977
|
-
|
|
5978
|
-
|
|
5979
|
-
if (!file.name.endsWith(".json")) continue;
|
|
5980
|
-
const fileName = file.name;
|
|
5981
|
-
const modelName = fileName.replace(/\.json$/, "");
|
|
5982
|
-
const dataPath = `${MODELS_DIR}/${fileName}`;
|
|
5983
|
-
const metaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
5984
|
-
modelName
|
|
5985
|
-
)}.meta.json`;
|
|
5986
|
-
const rawData = await fileService.read(dataPath);
|
|
5987
|
-
if (!rawData) continue;
|
|
5988
|
-
const parsedData = await spawnParseWorker(rawData);
|
|
5989
|
-
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
5990
|
-
if (!includeMeta) {
|
|
5991
|
-
result[modelName] = { data };
|
|
5992
|
-
continue;
|
|
5988
|
+
console.log("\u{1F50D} loadData START");
|
|
5989
|
+
try {
|
|
5990
|
+
const listResult = await fileService.list(MODELS_DIR);
|
|
5991
|
+
console.log("\u{1F4CB} listResult:", listResult);
|
|
5992
|
+
if (!listResult || !Array.isArray(listResult.files)) {
|
|
5993
|
+
console.log("\u26A0\uFE0F No files found");
|
|
5994
|
+
return {};
|
|
5993
5995
|
}
|
|
5994
|
-
const
|
|
5995
|
-
|
|
5996
|
-
|
|
5997
|
-
|
|
5998
|
-
|
|
5999
|
-
|
|
6000
|
-
|
|
5996
|
+
const result = {};
|
|
5997
|
+
for (const file of listResult.files) {
|
|
5998
|
+
console.log("\u{1F4C4} Processing file:", file.name);
|
|
5999
|
+
if (file.type !== "file") continue;
|
|
6000
|
+
if (!file.name.endsWith(".json")) continue;
|
|
6001
|
+
const fileName = file.name;
|
|
6002
|
+
const modelName = fileName.replace(/\.json$/, "");
|
|
6003
|
+
const dataPath = `${MODELS_DIR}/${fileName}`;
|
|
6004
|
+
console.log("\u{1F4C2} Reading data from:", dataPath);
|
|
6005
|
+
const rawData = await fileService.read(dataPath);
|
|
6006
|
+
console.log("\u2705 Data read, length:", rawData?.length);
|
|
6007
|
+
if (!rawData) continue;
|
|
6008
|
+
console.log("\u{1F504} Parsing data...");
|
|
6009
|
+
const parsedData = await spawnParseWorker(rawData);
|
|
6010
|
+
console.log("\u2705 Data parsed");
|
|
6011
|
+
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
6012
|
+
if (!includeMeta) {
|
|
6013
|
+
result[modelName] = { data };
|
|
6014
|
+
continue;
|
|
6015
|
+
}
|
|
6016
|
+
const metaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
6017
|
+
modelName
|
|
6018
|
+
)}.meta.json`;
|
|
6019
|
+
console.log("\u{1F4C2} Reading meta from:", metaPath);
|
|
6020
|
+
const rawMeta = await fileService.read(metaPath);
|
|
6021
|
+
let fields = [];
|
|
6022
|
+
let relations = {};
|
|
6023
|
+
if (rawMeta) {
|
|
6024
|
+
console.log("\u{1F504} Parsing meta...");
|
|
6025
|
+
const parsedMeta = await spawnParseWorker(rawMeta);
|
|
6026
|
+
fields = parsedMeta?.fields ?? [];
|
|
6027
|
+
relations = parsedMeta?.relations ?? {};
|
|
6028
|
+
console.log("\u2705 Meta parsed");
|
|
6029
|
+
}
|
|
6030
|
+
result[modelName] = {
|
|
6031
|
+
data,
|
|
6032
|
+
fields,
|
|
6033
|
+
relations
|
|
6034
|
+
};
|
|
6001
6035
|
}
|
|
6002
|
-
|
|
6003
|
-
|
|
6004
|
-
|
|
6005
|
-
|
|
6006
|
-
|
|
6036
|
+
console.log("\u2705 loadData COMPLETE:", Object.keys(result));
|
|
6037
|
+
return result;
|
|
6038
|
+
} catch (error) {
|
|
6039
|
+
console.error("\u274C loadData ERROR:", error);
|
|
6040
|
+
throw error;
|
|
6007
6041
|
}
|
|
6008
|
-
return result;
|
|
6009
6042
|
}
|
|
6010
6043
|
|
|
6011
6044
|
// src/services/pos-service/load-data-pos-session.ts
|
|
6012
6045
|
var loadDataPosSessionService = (env) => {
|
|
6013
6046
|
const isLocalMode = env?.isLocalMode;
|
|
6014
6047
|
const loadDataPosSession = useCallback32(
|
|
6015
|
-
({
|
|
6048
|
+
async ({
|
|
6016
6049
|
model,
|
|
6017
6050
|
ids,
|
|
6018
6051
|
xNode,
|
|
@@ -6023,7 +6056,9 @@ var loadDataPosSessionService = (env) => {
|
|
|
6023
6056
|
}) => {
|
|
6024
6057
|
console.log("isLocalMode", isLocalMode);
|
|
6025
6058
|
if (isLocalMode) {
|
|
6026
|
-
|
|
6059
|
+
const data = await loadData();
|
|
6060
|
+
console.log("\u2705 loadData resolved:", data);
|
|
6061
|
+
return data;
|
|
6027
6062
|
}
|
|
6028
6063
|
const jsonData = {
|
|
6029
6064
|
model,
|
package/dist/provider.js
CHANGED
|
@@ -2316,9 +2316,9 @@ function applyBinaryOp(ast, context) {
|
|
|
2316
2316
|
var DICT = {
|
|
2317
2317
|
get(...args) {
|
|
2318
2318
|
const { key, defValue } = parseArgs(args, ["key", "defValue"]);
|
|
2319
|
-
const
|
|
2320
|
-
if (key in
|
|
2321
|
-
return
|
|
2319
|
+
const self = this;
|
|
2320
|
+
if (key in self) {
|
|
2321
|
+
return self[key];
|
|
2322
2322
|
} else if (defValue !== void 0) {
|
|
2323
2323
|
return defValue;
|
|
2324
2324
|
}
|
|
@@ -6024,26 +6024,30 @@ var fileService = {
|
|
|
6024
6024
|
};
|
|
6025
6025
|
|
|
6026
6026
|
// src/services/filesystem-service/json-worker.ts
|
|
6027
|
-
|
|
6028
|
-
|
|
6029
|
-
|
|
6030
|
-
|
|
6031
|
-
|
|
6032
|
-
|
|
6033
|
-
|
|
6034
|
-
|
|
6035
|
-
|
|
6036
|
-
|
|
6037
|
-
|
|
6038
|
-
|
|
6039
|
-
|
|
6040
|
-
|
|
6041
|
-
}
|
|
6027
|
+
function createWorkerBlob() {
|
|
6028
|
+
const workerCode = `
|
|
6029
|
+
self.addEventListener("message", async (ev) => {
|
|
6030
|
+
const { id, cmd, payload } = ev.data;
|
|
6031
|
+
try {
|
|
6032
|
+
if (cmd === "parse") {
|
|
6033
|
+
const parsed = JSON.parse(payload);
|
|
6034
|
+
self.postMessage({ id, ok: true, result: parsed });
|
|
6035
|
+
} else if (cmd === "stringify") {
|
|
6036
|
+
const str = JSON.stringify(payload);
|
|
6037
|
+
self.postMessage({ id, ok: true, result: str });
|
|
6038
|
+
}
|
|
6039
|
+
} catch (err) {
|
|
6040
|
+
self.postMessage({ id, ok: false, error: err?.message || String(err) });
|
|
6041
|
+
}
|
|
6042
|
+
});
|
|
6043
|
+
`;
|
|
6044
|
+
const blob = new Blob([workerCode], { type: "application/javascript" });
|
|
6045
|
+
return URL.createObjectURL(blob);
|
|
6046
|
+
}
|
|
6042
6047
|
function spawnParseWorker(raw) {
|
|
6043
6048
|
return new Promise((resolve, reject) => {
|
|
6044
|
-
const
|
|
6045
|
-
|
|
6046
|
-
});
|
|
6049
|
+
const workerUrl = createWorkerBlob();
|
|
6050
|
+
const worker = new Worker(workerUrl);
|
|
6047
6051
|
const id = Math.random().toString(36).slice(2);
|
|
6048
6052
|
worker.onmessage = (ev) => {
|
|
6049
6053
|
const { ok, result, error } = ev.data;
|
|
@@ -6052,6 +6056,12 @@ function spawnParseWorker(raw) {
|
|
|
6052
6056
|
} else {
|
|
6053
6057
|
reject(new Error(error));
|
|
6054
6058
|
}
|
|
6059
|
+
URL.revokeObjectURL(workerUrl);
|
|
6060
|
+
worker.terminate();
|
|
6061
|
+
};
|
|
6062
|
+
worker.onerror = (err) => {
|
|
6063
|
+
reject(err);
|
|
6064
|
+
URL.revokeObjectURL(workerUrl);
|
|
6055
6065
|
worker.terminate();
|
|
6056
6066
|
};
|
|
6057
6067
|
worker.postMessage({ id, cmd: "parse", payload: raw });
|
|
@@ -6059,13 +6069,18 @@ function spawnParseWorker(raw) {
|
|
|
6059
6069
|
}
|
|
6060
6070
|
function spawnStringifyWorker(obj) {
|
|
6061
6071
|
return new Promise((resolve, reject) => {
|
|
6062
|
-
const
|
|
6063
|
-
|
|
6064
|
-
});
|
|
6072
|
+
const workerUrl = createWorkerBlob();
|
|
6073
|
+
const worker = new Worker(workerUrl);
|
|
6065
6074
|
worker.onmessage = (ev) => {
|
|
6066
6075
|
const { ok, result, error } = ev.data;
|
|
6067
6076
|
if (ok) resolve(result);
|
|
6068
6077
|
else reject(new Error(error));
|
|
6078
|
+
URL.revokeObjectURL(workerUrl);
|
|
6079
|
+
worker.terminate();
|
|
6080
|
+
};
|
|
6081
|
+
worker.onerror = (err) => {
|
|
6082
|
+
reject(err);
|
|
6083
|
+
URL.revokeObjectURL(workerUrl);
|
|
6069
6084
|
worker.terminate();
|
|
6070
6085
|
};
|
|
6071
6086
|
worker.postMessage({ cmd: "stringify", payload: obj });
|
|
@@ -6100,50 +6115,67 @@ var memoryCache = new MemoryCache();
|
|
|
6100
6115
|
var MODELS_DIR = "pos/models";
|
|
6101
6116
|
var MODELS_META_DIR = "pos/models_meta";
|
|
6102
6117
|
async function loadData(includeMeta = true) {
|
|
6103
|
-
|
|
6104
|
-
|
|
6105
|
-
|
|
6106
|
-
|
|
6107
|
-
|
|
6108
|
-
|
|
6109
|
-
|
|
6110
|
-
if (!file.name.endsWith(".json")) continue;
|
|
6111
|
-
const fileName = file.name;
|
|
6112
|
-
const modelName = fileName.replace(/\.json$/, "");
|
|
6113
|
-
const dataPath = `${MODELS_DIR}/${fileName}`;
|
|
6114
|
-
const metaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
6115
|
-
modelName
|
|
6116
|
-
)}.meta.json`;
|
|
6117
|
-
const rawData = await fileService.read(dataPath);
|
|
6118
|
-
if (!rawData) continue;
|
|
6119
|
-
const parsedData = await spawnParseWorker(rawData);
|
|
6120
|
-
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
6121
|
-
if (!includeMeta) {
|
|
6122
|
-
result[modelName] = { data };
|
|
6123
|
-
continue;
|
|
6118
|
+
console.log("\u{1F50D} loadData START");
|
|
6119
|
+
try {
|
|
6120
|
+
const listResult = await fileService.list(MODELS_DIR);
|
|
6121
|
+
console.log("\u{1F4CB} listResult:", listResult);
|
|
6122
|
+
if (!listResult || !Array.isArray(listResult.files)) {
|
|
6123
|
+
console.log("\u26A0\uFE0F No files found");
|
|
6124
|
+
return {};
|
|
6124
6125
|
}
|
|
6125
|
-
const
|
|
6126
|
-
|
|
6127
|
-
|
|
6128
|
-
|
|
6129
|
-
|
|
6130
|
-
|
|
6131
|
-
|
|
6126
|
+
const result = {};
|
|
6127
|
+
for (const file of listResult.files) {
|
|
6128
|
+
console.log("\u{1F4C4} Processing file:", file.name);
|
|
6129
|
+
if (file.type !== "file") continue;
|
|
6130
|
+
if (!file.name.endsWith(".json")) continue;
|
|
6131
|
+
const fileName = file.name;
|
|
6132
|
+
const modelName = fileName.replace(/\.json$/, "");
|
|
6133
|
+
const dataPath = `${MODELS_DIR}/${fileName}`;
|
|
6134
|
+
console.log("\u{1F4C2} Reading data from:", dataPath);
|
|
6135
|
+
const rawData = await fileService.read(dataPath);
|
|
6136
|
+
console.log("\u2705 Data read, length:", rawData?.length);
|
|
6137
|
+
if (!rawData) continue;
|
|
6138
|
+
console.log("\u{1F504} Parsing data...");
|
|
6139
|
+
const parsedData = await spawnParseWorker(rawData);
|
|
6140
|
+
console.log("\u2705 Data parsed");
|
|
6141
|
+
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
6142
|
+
if (!includeMeta) {
|
|
6143
|
+
result[modelName] = { data };
|
|
6144
|
+
continue;
|
|
6145
|
+
}
|
|
6146
|
+
const metaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
6147
|
+
modelName
|
|
6148
|
+
)}.meta.json`;
|
|
6149
|
+
console.log("\u{1F4C2} Reading meta from:", metaPath);
|
|
6150
|
+
const rawMeta = await fileService.read(metaPath);
|
|
6151
|
+
let fields = [];
|
|
6152
|
+
let relations = {};
|
|
6153
|
+
if (rawMeta) {
|
|
6154
|
+
console.log("\u{1F504} Parsing meta...");
|
|
6155
|
+
const parsedMeta = await spawnParseWorker(rawMeta);
|
|
6156
|
+
fields = parsedMeta?.fields ?? [];
|
|
6157
|
+
relations = parsedMeta?.relations ?? {};
|
|
6158
|
+
console.log("\u2705 Meta parsed");
|
|
6159
|
+
}
|
|
6160
|
+
result[modelName] = {
|
|
6161
|
+
data,
|
|
6162
|
+
fields,
|
|
6163
|
+
relations
|
|
6164
|
+
};
|
|
6132
6165
|
}
|
|
6133
|
-
|
|
6134
|
-
|
|
6135
|
-
|
|
6136
|
-
|
|
6137
|
-
|
|
6166
|
+
console.log("\u2705 loadData COMPLETE:", Object.keys(result));
|
|
6167
|
+
return result;
|
|
6168
|
+
} catch (error) {
|
|
6169
|
+
console.error("\u274C loadData ERROR:", error);
|
|
6170
|
+
throw error;
|
|
6138
6171
|
}
|
|
6139
|
-
return result;
|
|
6140
6172
|
}
|
|
6141
6173
|
|
|
6142
6174
|
// src/services/pos-service/load-data-pos-session.ts
|
|
6143
6175
|
var loadDataPosSessionService = (env) => {
|
|
6144
6176
|
const isLocalMode = env?.isLocalMode;
|
|
6145
6177
|
const loadDataPosSession = (0, import_react33.useCallback)(
|
|
6146
|
-
({
|
|
6178
|
+
async ({
|
|
6147
6179
|
model,
|
|
6148
6180
|
ids,
|
|
6149
6181
|
xNode,
|
|
@@ -6154,7 +6186,9 @@ var loadDataPosSessionService = (env) => {
|
|
|
6154
6186
|
}) => {
|
|
6155
6187
|
console.log("isLocalMode", isLocalMode);
|
|
6156
6188
|
if (isLocalMode) {
|
|
6157
|
-
|
|
6189
|
+
const data = await loadData();
|
|
6190
|
+
console.log("\u2705 loadData resolved:", data);
|
|
6191
|
+
return data;
|
|
6158
6192
|
}
|
|
6159
6193
|
const jsonData = {
|
|
6160
6194
|
model,
|
package/dist/provider.mjs
CHANGED
|
@@ -2273,9 +2273,9 @@ function applyBinaryOp(ast, context) {
|
|
|
2273
2273
|
var DICT = {
|
|
2274
2274
|
get(...args) {
|
|
2275
2275
|
const { key, defValue } = parseArgs(args, ["key", "defValue"]);
|
|
2276
|
-
const
|
|
2277
|
-
if (key in
|
|
2278
|
-
return
|
|
2276
|
+
const self = this;
|
|
2277
|
+
if (key in self) {
|
|
2278
|
+
return self[key];
|
|
2279
2279
|
} else if (defValue !== void 0) {
|
|
2280
2280
|
return defValue;
|
|
2281
2281
|
}
|
|
@@ -5981,25 +5981,30 @@ var fileService = {
|
|
|
5981
5981
|
};
|
|
5982
5982
|
|
|
5983
5983
|
// src/services/filesystem-service/json-worker.ts
|
|
5984
|
-
|
|
5985
|
-
const
|
|
5986
|
-
|
|
5987
|
-
|
|
5988
|
-
|
|
5989
|
-
|
|
5990
|
-
|
|
5991
|
-
|
|
5992
|
-
|
|
5993
|
-
|
|
5994
|
-
|
|
5995
|
-
|
|
5996
|
-
|
|
5997
|
-
});
|
|
5984
|
+
function createWorkerBlob() {
|
|
5985
|
+
const workerCode = `
|
|
5986
|
+
self.addEventListener("message", async (ev) => {
|
|
5987
|
+
const { id, cmd, payload } = ev.data;
|
|
5988
|
+
try {
|
|
5989
|
+
if (cmd === "parse") {
|
|
5990
|
+
const parsed = JSON.parse(payload);
|
|
5991
|
+
self.postMessage({ id, ok: true, result: parsed });
|
|
5992
|
+
} else if (cmd === "stringify") {
|
|
5993
|
+
const str = JSON.stringify(payload);
|
|
5994
|
+
self.postMessage({ id, ok: true, result: str });
|
|
5995
|
+
}
|
|
5996
|
+
} catch (err) {
|
|
5997
|
+
self.postMessage({ id, ok: false, error: err?.message || String(err) });
|
|
5998
|
+
}
|
|
5999
|
+
});
|
|
6000
|
+
`;
|
|
6001
|
+
const blob = new Blob([workerCode], { type: "application/javascript" });
|
|
6002
|
+
return URL.createObjectURL(blob);
|
|
6003
|
+
}
|
|
5998
6004
|
function spawnParseWorker(raw) {
|
|
5999
6005
|
return new Promise((resolve, reject) => {
|
|
6000
|
-
const
|
|
6001
|
-
|
|
6002
|
-
});
|
|
6006
|
+
const workerUrl = createWorkerBlob();
|
|
6007
|
+
const worker = new Worker(workerUrl);
|
|
6003
6008
|
const id = Math.random().toString(36).slice(2);
|
|
6004
6009
|
worker.onmessage = (ev) => {
|
|
6005
6010
|
const { ok, result, error } = ev.data;
|
|
@@ -6008,6 +6013,12 @@ function spawnParseWorker(raw) {
|
|
|
6008
6013
|
} else {
|
|
6009
6014
|
reject(new Error(error));
|
|
6010
6015
|
}
|
|
6016
|
+
URL.revokeObjectURL(workerUrl);
|
|
6017
|
+
worker.terminate();
|
|
6018
|
+
};
|
|
6019
|
+
worker.onerror = (err) => {
|
|
6020
|
+
reject(err);
|
|
6021
|
+
URL.revokeObjectURL(workerUrl);
|
|
6011
6022
|
worker.terminate();
|
|
6012
6023
|
};
|
|
6013
6024
|
worker.postMessage({ id, cmd: "parse", payload: raw });
|
|
@@ -6015,13 +6026,18 @@ function spawnParseWorker(raw) {
|
|
|
6015
6026
|
}
|
|
6016
6027
|
function spawnStringifyWorker(obj) {
|
|
6017
6028
|
return new Promise((resolve, reject) => {
|
|
6018
|
-
const
|
|
6019
|
-
|
|
6020
|
-
});
|
|
6029
|
+
const workerUrl = createWorkerBlob();
|
|
6030
|
+
const worker = new Worker(workerUrl);
|
|
6021
6031
|
worker.onmessage = (ev) => {
|
|
6022
6032
|
const { ok, result, error } = ev.data;
|
|
6023
6033
|
if (ok) resolve(result);
|
|
6024
6034
|
else reject(new Error(error));
|
|
6035
|
+
URL.revokeObjectURL(workerUrl);
|
|
6036
|
+
worker.terminate();
|
|
6037
|
+
};
|
|
6038
|
+
worker.onerror = (err) => {
|
|
6039
|
+
reject(err);
|
|
6040
|
+
URL.revokeObjectURL(workerUrl);
|
|
6025
6041
|
worker.terminate();
|
|
6026
6042
|
};
|
|
6027
6043
|
worker.postMessage({ cmd: "stringify", payload: obj });
|
|
@@ -6056,50 +6072,67 @@ var memoryCache = new MemoryCache();
|
|
|
6056
6072
|
var MODELS_DIR = "pos/models";
|
|
6057
6073
|
var MODELS_META_DIR = "pos/models_meta";
|
|
6058
6074
|
async function loadData(includeMeta = true) {
|
|
6059
|
-
|
|
6060
|
-
|
|
6061
|
-
|
|
6062
|
-
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
if (!file.name.endsWith(".json")) continue;
|
|
6067
|
-
const fileName = file.name;
|
|
6068
|
-
const modelName = fileName.replace(/\.json$/, "");
|
|
6069
|
-
const dataPath = `${MODELS_DIR}/${fileName}`;
|
|
6070
|
-
const metaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
6071
|
-
modelName
|
|
6072
|
-
)}.meta.json`;
|
|
6073
|
-
const rawData = await fileService.read(dataPath);
|
|
6074
|
-
if (!rawData) continue;
|
|
6075
|
-
const parsedData = await spawnParseWorker(rawData);
|
|
6076
|
-
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
6077
|
-
if (!includeMeta) {
|
|
6078
|
-
result[modelName] = { data };
|
|
6079
|
-
continue;
|
|
6075
|
+
console.log("\u{1F50D} loadData START");
|
|
6076
|
+
try {
|
|
6077
|
+
const listResult = await fileService.list(MODELS_DIR);
|
|
6078
|
+
console.log("\u{1F4CB} listResult:", listResult);
|
|
6079
|
+
if (!listResult || !Array.isArray(listResult.files)) {
|
|
6080
|
+
console.log("\u26A0\uFE0F No files found");
|
|
6081
|
+
return {};
|
|
6080
6082
|
}
|
|
6081
|
-
const
|
|
6082
|
-
|
|
6083
|
-
|
|
6084
|
-
|
|
6085
|
-
|
|
6086
|
-
|
|
6087
|
-
|
|
6083
|
+
const result = {};
|
|
6084
|
+
for (const file of listResult.files) {
|
|
6085
|
+
console.log("\u{1F4C4} Processing file:", file.name);
|
|
6086
|
+
if (file.type !== "file") continue;
|
|
6087
|
+
if (!file.name.endsWith(".json")) continue;
|
|
6088
|
+
const fileName = file.name;
|
|
6089
|
+
const modelName = fileName.replace(/\.json$/, "");
|
|
6090
|
+
const dataPath = `${MODELS_DIR}/${fileName}`;
|
|
6091
|
+
console.log("\u{1F4C2} Reading data from:", dataPath);
|
|
6092
|
+
const rawData = await fileService.read(dataPath);
|
|
6093
|
+
console.log("\u2705 Data read, length:", rawData?.length);
|
|
6094
|
+
if (!rawData) continue;
|
|
6095
|
+
console.log("\u{1F504} Parsing data...");
|
|
6096
|
+
const parsedData = await spawnParseWorker(rawData);
|
|
6097
|
+
console.log("\u2705 Data parsed");
|
|
6098
|
+
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
6099
|
+
if (!includeMeta) {
|
|
6100
|
+
result[modelName] = { data };
|
|
6101
|
+
continue;
|
|
6102
|
+
}
|
|
6103
|
+
const metaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
6104
|
+
modelName
|
|
6105
|
+
)}.meta.json`;
|
|
6106
|
+
console.log("\u{1F4C2} Reading meta from:", metaPath);
|
|
6107
|
+
const rawMeta = await fileService.read(metaPath);
|
|
6108
|
+
let fields = [];
|
|
6109
|
+
let relations = {};
|
|
6110
|
+
if (rawMeta) {
|
|
6111
|
+
console.log("\u{1F504} Parsing meta...");
|
|
6112
|
+
const parsedMeta = await spawnParseWorker(rawMeta);
|
|
6113
|
+
fields = parsedMeta?.fields ?? [];
|
|
6114
|
+
relations = parsedMeta?.relations ?? {};
|
|
6115
|
+
console.log("\u2705 Meta parsed");
|
|
6116
|
+
}
|
|
6117
|
+
result[modelName] = {
|
|
6118
|
+
data,
|
|
6119
|
+
fields,
|
|
6120
|
+
relations
|
|
6121
|
+
};
|
|
6088
6122
|
}
|
|
6089
|
-
|
|
6090
|
-
|
|
6091
|
-
|
|
6092
|
-
|
|
6093
|
-
|
|
6123
|
+
console.log("\u2705 loadData COMPLETE:", Object.keys(result));
|
|
6124
|
+
return result;
|
|
6125
|
+
} catch (error) {
|
|
6126
|
+
console.error("\u274C loadData ERROR:", error);
|
|
6127
|
+
throw error;
|
|
6094
6128
|
}
|
|
6095
|
-
return result;
|
|
6096
6129
|
}
|
|
6097
6130
|
|
|
6098
6131
|
// src/services/pos-service/load-data-pos-session.ts
|
|
6099
6132
|
var loadDataPosSessionService = (env) => {
|
|
6100
6133
|
const isLocalMode = env?.isLocalMode;
|
|
6101
6134
|
const loadDataPosSession = useCallback31(
|
|
6102
|
-
({
|
|
6135
|
+
async ({
|
|
6103
6136
|
model,
|
|
6104
6137
|
ids,
|
|
6105
6138
|
xNode,
|
|
@@ -6110,7 +6143,9 @@ var loadDataPosSessionService = (env) => {
|
|
|
6110
6143
|
}) => {
|
|
6111
6144
|
console.log("isLocalMode", isLocalMode);
|
|
6112
6145
|
if (isLocalMode) {
|
|
6113
|
-
|
|
6146
|
+
const data = await loadData();
|
|
6147
|
+
console.log("\u2705 loadData resolved:", data);
|
|
6148
|
+
return data;
|
|
6114
6149
|
}
|
|
6115
6150
|
const jsonData = {
|
|
6116
6151
|
model,
|
package/dist/services.d.mts
CHANGED
|
@@ -540,7 +540,7 @@ declare const serviceFactories: readonly [(env: any) => {
|
|
|
540
540
|
withContext?: any;
|
|
541
541
|
modelsToLoad?: any;
|
|
542
542
|
searchParams?: Record<string, string | number | boolean>;
|
|
543
|
-
}) => any
|
|
543
|
+
}) => Promise<any>;
|
|
544
544
|
}, (env: any) => {
|
|
545
545
|
manageOnChange: ({ model, ids, args, xNode, service, }: {
|
|
546
546
|
model: string;
|
package/dist/services.d.ts
CHANGED
|
@@ -540,7 +540,7 @@ declare const serviceFactories: readonly [(env: any) => {
|
|
|
540
540
|
withContext?: any;
|
|
541
541
|
modelsToLoad?: any;
|
|
542
542
|
searchParams?: Record<string, string | number | boolean>;
|
|
543
|
-
}) => any
|
|
543
|
+
}) => Promise<any>;
|
|
544
544
|
}, (env: any) => {
|
|
545
545
|
manageOnChange: ({ model, ids, args, xNode, service, }: {
|
|
546
546
|
model: string;
|
package/dist/services.js
CHANGED
|
@@ -1653,9 +1653,9 @@ function applyBinaryOp(ast, context) {
|
|
|
1653
1653
|
var DICT = {
|
|
1654
1654
|
get(...args) {
|
|
1655
1655
|
const { key, defValue } = parseArgs(args, ["key", "defValue"]);
|
|
1656
|
-
const
|
|
1657
|
-
if (key in
|
|
1658
|
-
return
|
|
1656
|
+
const self = this;
|
|
1657
|
+
if (key in self) {
|
|
1658
|
+
return self[key];
|
|
1659
1659
|
} else if (defValue !== void 0) {
|
|
1660
1660
|
return defValue;
|
|
1661
1661
|
}
|
|
@@ -4004,26 +4004,30 @@ var fileService = {
|
|
|
4004
4004
|
};
|
|
4005
4005
|
|
|
4006
4006
|
// src/services/filesystem-service/json-worker.ts
|
|
4007
|
-
|
|
4008
|
-
|
|
4009
|
-
|
|
4010
|
-
|
|
4011
|
-
|
|
4012
|
-
|
|
4013
|
-
|
|
4014
|
-
|
|
4015
|
-
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
|
|
4021
|
-
}
|
|
4007
|
+
function createWorkerBlob() {
|
|
4008
|
+
const workerCode = `
|
|
4009
|
+
self.addEventListener("message", async (ev) => {
|
|
4010
|
+
const { id, cmd, payload } = ev.data;
|
|
4011
|
+
try {
|
|
4012
|
+
if (cmd === "parse") {
|
|
4013
|
+
const parsed = JSON.parse(payload);
|
|
4014
|
+
self.postMessage({ id, ok: true, result: parsed });
|
|
4015
|
+
} else if (cmd === "stringify") {
|
|
4016
|
+
const str = JSON.stringify(payload);
|
|
4017
|
+
self.postMessage({ id, ok: true, result: str });
|
|
4018
|
+
}
|
|
4019
|
+
} catch (err) {
|
|
4020
|
+
self.postMessage({ id, ok: false, error: err?.message || String(err) });
|
|
4021
|
+
}
|
|
4022
|
+
});
|
|
4023
|
+
`;
|
|
4024
|
+
const blob = new Blob([workerCode], { type: "application/javascript" });
|
|
4025
|
+
return URL.createObjectURL(blob);
|
|
4026
|
+
}
|
|
4022
4027
|
function spawnParseWorker(raw) {
|
|
4023
4028
|
return new Promise((resolve, reject) => {
|
|
4024
|
-
const
|
|
4025
|
-
|
|
4026
|
-
});
|
|
4029
|
+
const workerUrl = createWorkerBlob();
|
|
4030
|
+
const worker = new Worker(workerUrl);
|
|
4027
4031
|
const id = Math.random().toString(36).slice(2);
|
|
4028
4032
|
worker.onmessage = (ev) => {
|
|
4029
4033
|
const { ok, result, error } = ev.data;
|
|
@@ -4032,6 +4036,12 @@ function spawnParseWorker(raw) {
|
|
|
4032
4036
|
} else {
|
|
4033
4037
|
reject(new Error(error));
|
|
4034
4038
|
}
|
|
4039
|
+
URL.revokeObjectURL(workerUrl);
|
|
4040
|
+
worker.terminate();
|
|
4041
|
+
};
|
|
4042
|
+
worker.onerror = (err) => {
|
|
4043
|
+
reject(err);
|
|
4044
|
+
URL.revokeObjectURL(workerUrl);
|
|
4035
4045
|
worker.terminate();
|
|
4036
4046
|
};
|
|
4037
4047
|
worker.postMessage({ id, cmd: "parse", payload: raw });
|
|
@@ -4039,13 +4049,18 @@ function spawnParseWorker(raw) {
|
|
|
4039
4049
|
}
|
|
4040
4050
|
function spawnStringifyWorker(obj) {
|
|
4041
4051
|
return new Promise((resolve, reject) => {
|
|
4042
|
-
const
|
|
4043
|
-
|
|
4044
|
-
});
|
|
4052
|
+
const workerUrl = createWorkerBlob();
|
|
4053
|
+
const worker = new Worker(workerUrl);
|
|
4045
4054
|
worker.onmessage = (ev) => {
|
|
4046
4055
|
const { ok, result, error } = ev.data;
|
|
4047
4056
|
if (ok) resolve(result);
|
|
4048
4057
|
else reject(new Error(error));
|
|
4058
|
+
URL.revokeObjectURL(workerUrl);
|
|
4059
|
+
worker.terminate();
|
|
4060
|
+
};
|
|
4061
|
+
worker.onerror = (err) => {
|
|
4062
|
+
reject(err);
|
|
4063
|
+
URL.revokeObjectURL(workerUrl);
|
|
4049
4064
|
worker.terminate();
|
|
4050
4065
|
};
|
|
4051
4066
|
worker.postMessage({ cmd: "stringify", payload: obj });
|
|
@@ -4080,50 +4095,67 @@ var memoryCache = new MemoryCache();
|
|
|
4080
4095
|
var MODELS_DIR = "pos/models";
|
|
4081
4096
|
var MODELS_META_DIR = "pos/models_meta";
|
|
4082
4097
|
async function loadData(includeMeta = true) {
|
|
4083
|
-
|
|
4084
|
-
|
|
4085
|
-
|
|
4086
|
-
|
|
4087
|
-
|
|
4088
|
-
|
|
4089
|
-
|
|
4090
|
-
if (!file.name.endsWith(".json")) continue;
|
|
4091
|
-
const fileName = file.name;
|
|
4092
|
-
const modelName = fileName.replace(/\.json$/, "");
|
|
4093
|
-
const dataPath = `${MODELS_DIR}/${fileName}`;
|
|
4094
|
-
const metaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
4095
|
-
modelName
|
|
4096
|
-
)}.meta.json`;
|
|
4097
|
-
const rawData = await fileService.read(dataPath);
|
|
4098
|
-
if (!rawData) continue;
|
|
4099
|
-
const parsedData = await spawnParseWorker(rawData);
|
|
4100
|
-
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
4101
|
-
if (!includeMeta) {
|
|
4102
|
-
result[modelName] = { data };
|
|
4103
|
-
continue;
|
|
4098
|
+
console.log("\u{1F50D} loadData START");
|
|
4099
|
+
try {
|
|
4100
|
+
const listResult = await fileService.list(MODELS_DIR);
|
|
4101
|
+
console.log("\u{1F4CB} listResult:", listResult);
|
|
4102
|
+
if (!listResult || !Array.isArray(listResult.files)) {
|
|
4103
|
+
console.log("\u26A0\uFE0F No files found");
|
|
4104
|
+
return {};
|
|
4104
4105
|
}
|
|
4105
|
-
const
|
|
4106
|
-
|
|
4107
|
-
|
|
4108
|
-
|
|
4109
|
-
|
|
4110
|
-
|
|
4111
|
-
|
|
4106
|
+
const result = {};
|
|
4107
|
+
for (const file of listResult.files) {
|
|
4108
|
+
console.log("\u{1F4C4} Processing file:", file.name);
|
|
4109
|
+
if (file.type !== "file") continue;
|
|
4110
|
+
if (!file.name.endsWith(".json")) continue;
|
|
4111
|
+
const fileName = file.name;
|
|
4112
|
+
const modelName = fileName.replace(/\.json$/, "");
|
|
4113
|
+
const dataPath = `${MODELS_DIR}/${fileName}`;
|
|
4114
|
+
console.log("\u{1F4C2} Reading data from:", dataPath);
|
|
4115
|
+
const rawData = await fileService.read(dataPath);
|
|
4116
|
+
console.log("\u2705 Data read, length:", rawData?.length);
|
|
4117
|
+
if (!rawData) continue;
|
|
4118
|
+
console.log("\u{1F504} Parsing data...");
|
|
4119
|
+
const parsedData = await spawnParseWorker(rawData);
|
|
4120
|
+
console.log("\u2705 Data parsed");
|
|
4121
|
+
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
4122
|
+
if (!includeMeta) {
|
|
4123
|
+
result[modelName] = { data };
|
|
4124
|
+
continue;
|
|
4125
|
+
}
|
|
4126
|
+
const metaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
4127
|
+
modelName
|
|
4128
|
+
)}.meta.json`;
|
|
4129
|
+
console.log("\u{1F4C2} Reading meta from:", metaPath);
|
|
4130
|
+
const rawMeta = await fileService.read(metaPath);
|
|
4131
|
+
let fields = [];
|
|
4132
|
+
let relations = {};
|
|
4133
|
+
if (rawMeta) {
|
|
4134
|
+
console.log("\u{1F504} Parsing meta...");
|
|
4135
|
+
const parsedMeta = await spawnParseWorker(rawMeta);
|
|
4136
|
+
fields = parsedMeta?.fields ?? [];
|
|
4137
|
+
relations = parsedMeta?.relations ?? {};
|
|
4138
|
+
console.log("\u2705 Meta parsed");
|
|
4139
|
+
}
|
|
4140
|
+
result[modelName] = {
|
|
4141
|
+
data,
|
|
4142
|
+
fields,
|
|
4143
|
+
relations
|
|
4144
|
+
};
|
|
4112
4145
|
}
|
|
4113
|
-
|
|
4114
|
-
|
|
4115
|
-
|
|
4116
|
-
|
|
4117
|
-
|
|
4146
|
+
console.log("\u2705 loadData COMPLETE:", Object.keys(result));
|
|
4147
|
+
return result;
|
|
4148
|
+
} catch (error) {
|
|
4149
|
+
console.error("\u274C loadData ERROR:", error);
|
|
4150
|
+
throw error;
|
|
4118
4151
|
}
|
|
4119
|
-
return result;
|
|
4120
4152
|
}
|
|
4121
4153
|
|
|
4122
4154
|
// src/services/pos-service/load-data-pos-session.ts
|
|
4123
4155
|
var loadDataPosSessionService = (env) => {
|
|
4124
4156
|
const isLocalMode = env?.isLocalMode;
|
|
4125
4157
|
const loadDataPosSession = (0, import_react26.useCallback)(
|
|
4126
|
-
({
|
|
4158
|
+
async ({
|
|
4127
4159
|
model,
|
|
4128
4160
|
ids,
|
|
4129
4161
|
xNode,
|
|
@@ -4134,7 +4166,9 @@ var loadDataPosSessionService = (env) => {
|
|
|
4134
4166
|
}) => {
|
|
4135
4167
|
console.log("isLocalMode", isLocalMode);
|
|
4136
4168
|
if (isLocalMode) {
|
|
4137
|
-
|
|
4169
|
+
const data = await loadData();
|
|
4170
|
+
console.log("\u2705 loadData resolved:", data);
|
|
4171
|
+
return data;
|
|
4138
4172
|
}
|
|
4139
4173
|
const jsonData = {
|
|
4140
4174
|
model,
|
package/dist/services.mjs
CHANGED
|
@@ -1606,9 +1606,9 @@ function applyBinaryOp(ast, context) {
|
|
|
1606
1606
|
var DICT = {
|
|
1607
1607
|
get(...args) {
|
|
1608
1608
|
const { key, defValue } = parseArgs(args, ["key", "defValue"]);
|
|
1609
|
-
const
|
|
1610
|
-
if (key in
|
|
1611
|
-
return
|
|
1609
|
+
const self = this;
|
|
1610
|
+
if (key in self) {
|
|
1611
|
+
return self[key];
|
|
1612
1612
|
} else if (defValue !== void 0) {
|
|
1613
1613
|
return defValue;
|
|
1614
1614
|
}
|
|
@@ -3957,25 +3957,30 @@ var fileService = {
|
|
|
3957
3957
|
};
|
|
3958
3958
|
|
|
3959
3959
|
// src/services/filesystem-service/json-worker.ts
|
|
3960
|
-
|
|
3961
|
-
const
|
|
3962
|
-
|
|
3963
|
-
|
|
3964
|
-
|
|
3965
|
-
|
|
3966
|
-
|
|
3967
|
-
|
|
3968
|
-
|
|
3969
|
-
|
|
3970
|
-
|
|
3971
|
-
|
|
3972
|
-
|
|
3973
|
-
});
|
|
3960
|
+
function createWorkerBlob() {
|
|
3961
|
+
const workerCode = `
|
|
3962
|
+
self.addEventListener("message", async (ev) => {
|
|
3963
|
+
const { id, cmd, payload } = ev.data;
|
|
3964
|
+
try {
|
|
3965
|
+
if (cmd === "parse") {
|
|
3966
|
+
const parsed = JSON.parse(payload);
|
|
3967
|
+
self.postMessage({ id, ok: true, result: parsed });
|
|
3968
|
+
} else if (cmd === "stringify") {
|
|
3969
|
+
const str = JSON.stringify(payload);
|
|
3970
|
+
self.postMessage({ id, ok: true, result: str });
|
|
3971
|
+
}
|
|
3972
|
+
} catch (err) {
|
|
3973
|
+
self.postMessage({ id, ok: false, error: err?.message || String(err) });
|
|
3974
|
+
}
|
|
3975
|
+
});
|
|
3976
|
+
`;
|
|
3977
|
+
const blob = new Blob([workerCode], { type: "application/javascript" });
|
|
3978
|
+
return URL.createObjectURL(blob);
|
|
3979
|
+
}
|
|
3974
3980
|
function spawnParseWorker(raw) {
|
|
3975
3981
|
return new Promise((resolve, reject) => {
|
|
3976
|
-
const
|
|
3977
|
-
|
|
3978
|
-
});
|
|
3982
|
+
const workerUrl = createWorkerBlob();
|
|
3983
|
+
const worker = new Worker(workerUrl);
|
|
3979
3984
|
const id = Math.random().toString(36).slice(2);
|
|
3980
3985
|
worker.onmessage = (ev) => {
|
|
3981
3986
|
const { ok, result, error } = ev.data;
|
|
@@ -3984,6 +3989,12 @@ function spawnParseWorker(raw) {
|
|
|
3984
3989
|
} else {
|
|
3985
3990
|
reject(new Error(error));
|
|
3986
3991
|
}
|
|
3992
|
+
URL.revokeObjectURL(workerUrl);
|
|
3993
|
+
worker.terminate();
|
|
3994
|
+
};
|
|
3995
|
+
worker.onerror = (err) => {
|
|
3996
|
+
reject(err);
|
|
3997
|
+
URL.revokeObjectURL(workerUrl);
|
|
3987
3998
|
worker.terminate();
|
|
3988
3999
|
};
|
|
3989
4000
|
worker.postMessage({ id, cmd: "parse", payload: raw });
|
|
@@ -3991,13 +4002,18 @@ function spawnParseWorker(raw) {
|
|
|
3991
4002
|
}
|
|
3992
4003
|
function spawnStringifyWorker(obj) {
|
|
3993
4004
|
return new Promise((resolve, reject) => {
|
|
3994
|
-
const
|
|
3995
|
-
|
|
3996
|
-
});
|
|
4005
|
+
const workerUrl = createWorkerBlob();
|
|
4006
|
+
const worker = new Worker(workerUrl);
|
|
3997
4007
|
worker.onmessage = (ev) => {
|
|
3998
4008
|
const { ok, result, error } = ev.data;
|
|
3999
4009
|
if (ok) resolve(result);
|
|
4000
4010
|
else reject(new Error(error));
|
|
4011
|
+
URL.revokeObjectURL(workerUrl);
|
|
4012
|
+
worker.terminate();
|
|
4013
|
+
};
|
|
4014
|
+
worker.onerror = (err) => {
|
|
4015
|
+
reject(err);
|
|
4016
|
+
URL.revokeObjectURL(workerUrl);
|
|
4001
4017
|
worker.terminate();
|
|
4002
4018
|
};
|
|
4003
4019
|
worker.postMessage({ cmd: "stringify", payload: obj });
|
|
@@ -4032,50 +4048,67 @@ var memoryCache = new MemoryCache();
|
|
|
4032
4048
|
var MODELS_DIR = "pos/models";
|
|
4033
4049
|
var MODELS_META_DIR = "pos/models_meta";
|
|
4034
4050
|
async function loadData(includeMeta = true) {
|
|
4035
|
-
|
|
4036
|
-
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
if (!file.name.endsWith(".json")) continue;
|
|
4043
|
-
const fileName = file.name;
|
|
4044
|
-
const modelName = fileName.replace(/\.json$/, "");
|
|
4045
|
-
const dataPath = `${MODELS_DIR}/${fileName}`;
|
|
4046
|
-
const metaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
4047
|
-
modelName
|
|
4048
|
-
)}.meta.json`;
|
|
4049
|
-
const rawData = await fileService.read(dataPath);
|
|
4050
|
-
if (!rawData) continue;
|
|
4051
|
-
const parsedData = await spawnParseWorker(rawData);
|
|
4052
|
-
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
4053
|
-
if (!includeMeta) {
|
|
4054
|
-
result[modelName] = { data };
|
|
4055
|
-
continue;
|
|
4051
|
+
console.log("\u{1F50D} loadData START");
|
|
4052
|
+
try {
|
|
4053
|
+
const listResult = await fileService.list(MODELS_DIR);
|
|
4054
|
+
console.log("\u{1F4CB} listResult:", listResult);
|
|
4055
|
+
if (!listResult || !Array.isArray(listResult.files)) {
|
|
4056
|
+
console.log("\u26A0\uFE0F No files found");
|
|
4057
|
+
return {};
|
|
4056
4058
|
}
|
|
4057
|
-
const
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
4059
|
+
const result = {};
|
|
4060
|
+
for (const file of listResult.files) {
|
|
4061
|
+
console.log("\u{1F4C4} Processing file:", file.name);
|
|
4062
|
+
if (file.type !== "file") continue;
|
|
4063
|
+
if (!file.name.endsWith(".json")) continue;
|
|
4064
|
+
const fileName = file.name;
|
|
4065
|
+
const modelName = fileName.replace(/\.json$/, "");
|
|
4066
|
+
const dataPath = `${MODELS_DIR}/${fileName}`;
|
|
4067
|
+
console.log("\u{1F4C2} Reading data from:", dataPath);
|
|
4068
|
+
const rawData = await fileService.read(dataPath);
|
|
4069
|
+
console.log("\u2705 Data read, length:", rawData?.length);
|
|
4070
|
+
if (!rawData) continue;
|
|
4071
|
+
console.log("\u{1F504} Parsing data...");
|
|
4072
|
+
const parsedData = await spawnParseWorker(rawData);
|
|
4073
|
+
console.log("\u2705 Data parsed");
|
|
4074
|
+
const data = Array.isArray(parsedData) ? parsedData : [];
|
|
4075
|
+
if (!includeMeta) {
|
|
4076
|
+
result[modelName] = { data };
|
|
4077
|
+
continue;
|
|
4078
|
+
}
|
|
4079
|
+
const metaPath = `${MODELS_META_DIR}/${encodeURIComponent(
|
|
4080
|
+
modelName
|
|
4081
|
+
)}.meta.json`;
|
|
4082
|
+
console.log("\u{1F4C2} Reading meta from:", metaPath);
|
|
4083
|
+
const rawMeta = await fileService.read(metaPath);
|
|
4084
|
+
let fields = [];
|
|
4085
|
+
let relations = {};
|
|
4086
|
+
if (rawMeta) {
|
|
4087
|
+
console.log("\u{1F504} Parsing meta...");
|
|
4088
|
+
const parsedMeta = await spawnParseWorker(rawMeta);
|
|
4089
|
+
fields = parsedMeta?.fields ?? [];
|
|
4090
|
+
relations = parsedMeta?.relations ?? {};
|
|
4091
|
+
console.log("\u2705 Meta parsed");
|
|
4092
|
+
}
|
|
4093
|
+
result[modelName] = {
|
|
4094
|
+
data,
|
|
4095
|
+
fields,
|
|
4096
|
+
relations
|
|
4097
|
+
};
|
|
4064
4098
|
}
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4099
|
+
console.log("\u2705 loadData COMPLETE:", Object.keys(result));
|
|
4100
|
+
return result;
|
|
4101
|
+
} catch (error) {
|
|
4102
|
+
console.error("\u274C loadData ERROR:", error);
|
|
4103
|
+
throw error;
|
|
4070
4104
|
}
|
|
4071
|
-
return result;
|
|
4072
4105
|
}
|
|
4073
4106
|
|
|
4074
4107
|
// src/services/pos-service/load-data-pos-session.ts
|
|
4075
4108
|
var loadDataPosSessionService = (env) => {
|
|
4076
4109
|
const isLocalMode = env?.isLocalMode;
|
|
4077
4110
|
const loadDataPosSession = useCallback23(
|
|
4078
|
-
({
|
|
4111
|
+
async ({
|
|
4079
4112
|
model,
|
|
4080
4113
|
ids,
|
|
4081
4114
|
xNode,
|
|
@@ -4086,7 +4119,9 @@ var loadDataPosSessionService = (env) => {
|
|
|
4086
4119
|
}) => {
|
|
4087
4120
|
console.log("isLocalMode", isLocalMode);
|
|
4088
4121
|
if (isLocalMode) {
|
|
4089
|
-
|
|
4122
|
+
const data = await loadData();
|
|
4123
|
+
console.log("\u2705 loadData resolved:", data);
|
|
4124
|
+
return data;
|
|
4090
4125
|
}
|
|
4091
4126
|
const jsonData = {
|
|
4092
4127
|
model,
|