@lotics/app-sdk 0.123.2 → 0.123.4
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/{chunk-WM76DHGT.js → chunk-COWN73CO.js} +103 -8
- package/dist/index.js +7824 -27150
- package/dist/router.js +1 -1
- package/dist/rpc.d.ts +4 -1
- package/dist/shared_types.d.ts +2 -1
- package/dist/written.d.ts +1 -1
- package/docs/runtime.md +9 -0
- package/package.json +1 -1
|
@@ -181,10 +181,75 @@ function telemetryErrorMessage(status, parsed) {
|
|
|
181
181
|
return code ?? gatewayErrorMessage(status);
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
-
// ../shared/src/
|
|
185
|
-
|
|
186
|
-
|
|
184
|
+
// ../shared/src/diacritics.ts
|
|
185
|
+
var COMBINING_MARKS = /[̀-ͯ]/g;
|
|
186
|
+
function foldDiacritics(value) {
|
|
187
|
+
return value.normalize("NFD").replace(COMBINING_MARKS, "").replace(/[đĐ]/g, (c) => c === "\u0111" ? "d" : "D");
|
|
188
|
+
}
|
|
189
|
+
function foldSearchText(value) {
|
|
190
|
+
return foldDiacritics(value).toLowerCase();
|
|
191
|
+
}
|
|
192
|
+
function searchWords(value) {
|
|
193
|
+
return (typeof value === "string" ? [value] : value).map((word) => word.trim()).filter((word) => foldSearchText(word).trim() !== "");
|
|
187
194
|
}
|
|
195
|
+
|
|
196
|
+
// ../../node_modules/nanoid/index.browser.js
|
|
197
|
+
var random = (bytes) => crypto.getRandomValues(new Uint8Array(bytes));
|
|
198
|
+
var customRandom = (alphabet, defaultSize, getRandom) => {
|
|
199
|
+
let safeByteCutoff = 256 - 256 % alphabet.length;
|
|
200
|
+
if (safeByteCutoff === 256) {
|
|
201
|
+
let mask = alphabet.length - 1;
|
|
202
|
+
return (size = defaultSize) => {
|
|
203
|
+
if (!size) return "";
|
|
204
|
+
let id = "";
|
|
205
|
+
while (true) {
|
|
206
|
+
let bytes = getRandom(size);
|
|
207
|
+
let j = size;
|
|
208
|
+
while (j--) {
|
|
209
|
+
id += alphabet[bytes[j] & mask];
|
|
210
|
+
if (id.length >= size) return id;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
let step = Math.ceil(1.6 * 256 * defaultSize / safeByteCutoff);
|
|
216
|
+
return (size = defaultSize) => {
|
|
217
|
+
if (!size) return "";
|
|
218
|
+
let id = "";
|
|
219
|
+
while (true) {
|
|
220
|
+
let bytes = getRandom(step);
|
|
221
|
+
let j = step;
|
|
222
|
+
while (j--) {
|
|
223
|
+
if (bytes[j] < safeByteCutoff) {
|
|
224
|
+
id += alphabet[bytes[j] % alphabet.length];
|
|
225
|
+
if (id.length >= size) return id;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
};
|
|
231
|
+
var customAlphabet = (alphabet, size = 21) => customRandom(alphabet, size | 0, random);
|
|
232
|
+
|
|
233
|
+
// ../shared/src/id.ts
|
|
234
|
+
var ID_ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
|
235
|
+
var ID_LENGTH = 12;
|
|
236
|
+
var nanoid = customAlphabet(ID_ALPHABET, ID_LENGTH);
|
|
237
|
+
var RECORD_ID_PATTERN = new RegExp(`^rec_[${ID_ALPHABET}]{${ID_LENGTH}}$`);
|
|
238
|
+
var FILE_ID_PATTERN = new RegExp(`^fil_[${ID_ALPHABET}]{${ID_LENGTH}}$`);
|
|
239
|
+
var TABLE_ID_PATTERN = new RegExp(
|
|
240
|
+
`^tbl_[${ID_ALPHABET}]+$|^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$`,
|
|
241
|
+
"i"
|
|
242
|
+
);
|
|
243
|
+
var PREFIXED_ID_PATTERN = new RegExp(`^[a-z]{3}_[${ID_ALPHABET}]{${ID_LENGTH}}$`);
|
|
244
|
+
|
|
245
|
+
// ../shared/src/table_field_keys.ts
|
|
246
|
+
var nanoid2 = customAlphabet(ID_ALPHABET, 6);
|
|
247
|
+
var FIELD_KEY_PREFIX = "fld_";
|
|
248
|
+
function isFieldKey(value) {
|
|
249
|
+
return value.startsWith(FIELD_KEY_PREFIX);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// ../shared/src/schemas/app_spec_rules.ts
|
|
188
253
|
var bandKey = (band) => `${band.min ?? ""}..${band.max ?? ""}`;
|
|
189
254
|
function bandOf(tiers, figure) {
|
|
190
255
|
const above = tiers.findIndex((tier) => figure < tier);
|
|
@@ -1333,6 +1398,7 @@ function ensureListener() {
|
|
|
1333
1398
|
pending.delete(msg.id);
|
|
1334
1399
|
if (msg.type === "result") handler.resolve(msg.data);
|
|
1335
1400
|
else handler.reject(new Error(msg.message ?? "RPC failed"));
|
|
1401
|
+
if (pending.size === 0) scheduleDrawn(event.origin);
|
|
1336
1402
|
return;
|
|
1337
1403
|
}
|
|
1338
1404
|
const stream = streaming.get(msg.id);
|
|
@@ -1350,15 +1416,40 @@ function ensureListener() {
|
|
|
1350
1416
|
}
|
|
1351
1417
|
});
|
|
1352
1418
|
}
|
|
1353
|
-
var
|
|
1419
|
+
var firstRequestSent = false;
|
|
1420
|
+
var requestsSent = 0;
|
|
1421
|
+
var drawnPosted = false;
|
|
1422
|
+
var drawnScheduled = false;
|
|
1423
|
+
function scheduleDrawn(host) {
|
|
1424
|
+
if (drawnPosted || drawnScheduled) return;
|
|
1425
|
+
drawnScheduled = true;
|
|
1426
|
+
const sentAtStart = requestsSent;
|
|
1427
|
+
requestAnimationFrame(
|
|
1428
|
+
() => requestAnimationFrame(() => {
|
|
1429
|
+
drawnScheduled = false;
|
|
1430
|
+
if (pending.size === 0 && requestsSent === sentAtStart) {
|
|
1431
|
+
drawnPosted = true;
|
|
1432
|
+
window.parent.postMessage({ type: "drawn" }, host);
|
|
1433
|
+
} else if (pending.size === 0) {
|
|
1434
|
+
scheduleDrawn(host);
|
|
1435
|
+
}
|
|
1436
|
+
})
|
|
1437
|
+
);
|
|
1438
|
+
}
|
|
1354
1439
|
function rpcBridged(op, payload, host) {
|
|
1355
1440
|
ensureListener();
|
|
1356
1441
|
return new Promise((resolve, reject) => {
|
|
1357
1442
|
const id = nextRpcId++;
|
|
1358
1443
|
pending.set(id, { resolve, reject });
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1444
|
+
requestsSent += 1;
|
|
1445
|
+
if (firstRequestSent) {
|
|
1446
|
+
window.parent.postMessage({ id, op, payload }, host);
|
|
1447
|
+
return;
|
|
1448
|
+
}
|
|
1449
|
+
firstRequestSent = true;
|
|
1450
|
+
const load = measureLoadTiming(performance.now());
|
|
1451
|
+
const first2 = { id, op, payload, reportsDrawn: true };
|
|
1452
|
+
window.parent.postMessage(Object.keys(load).length === 0 ? first2 : { ...first2, load }, host);
|
|
1362
1453
|
});
|
|
1363
1454
|
}
|
|
1364
1455
|
function rpcAgentRun(payload, onText, onRunId) {
|
|
@@ -1904,7 +1995,11 @@ async function standaloneUpload(file, fidelity, place) {
|
|
|
1904
1995
|
|
|
1905
1996
|
export {
|
|
1906
1997
|
__export,
|
|
1907
|
-
|
|
1998
|
+
foldDiacritics,
|
|
1999
|
+
foldSearchText,
|
|
2000
|
+
searchWords,
|
|
2001
|
+
customAlphabet,
|
|
2002
|
+
isFieldKey,
|
|
1908
2003
|
bandKey,
|
|
1909
2004
|
bandOf,
|
|
1910
2005
|
addDecimal,
|