@keyframerdev/vitals 0.1.0 → 0.1.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/babel.cjs +8 -2
- package/dist/index.js +52 -21
- package/dist/types/jsLoop.d.ts +11 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/babel.cjs
CHANGED
|
@@ -319,10 +319,16 @@ ${key}`)}`, fn, component: null, prop: null });
|
|
|
319
319
|
const value = (a) => a?.value?.type === "JSXExpressionContainer" && a.value.expression.type !== "JSXEmptyExpression" ? a.value.expression : null;
|
|
320
320
|
const setAttr = (n, expr) => {
|
|
321
321
|
const a = attr(n);
|
|
322
|
-
if (a)
|
|
322
|
+
if (a) {
|
|
323
323
|
a.value = t.jsxExpressionContainer(expr);
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
const added = t.jsxAttribute(t.jsxIdentifier(n), t.jsxExpressionContainer(expr));
|
|
327
|
+
const spread = el.attributes.findIndex((x) => x.type === "JSXSpreadAttribute");
|
|
328
|
+
if (spread >= 0)
|
|
329
|
+
el.attributes.splice(spread, 0, added);
|
|
324
330
|
else
|
|
325
|
-
el.attributes.push(
|
|
331
|
+
el.attributes.push(added);
|
|
326
332
|
};
|
|
327
333
|
const loc = el.loc;
|
|
328
334
|
if (loc) {
|
package/dist/index.js
CHANGED
|
@@ -620,7 +620,7 @@ function slimArg(a, idOf) {
|
|
|
620
620
|
|
|
621
621
|
// src/version.ts
|
|
622
622
|
var SDK_NAME = "@keyframerdev/vitals";
|
|
623
|
-
var SDK_VERSION = "0.1.
|
|
623
|
+
var SDK_VERSION = "0.1.2";
|
|
624
624
|
|
|
625
625
|
// src/controller.ts
|
|
626
626
|
var STORAGE_KEYS = {
|
|
@@ -1114,7 +1114,8 @@ class VitalsController {
|
|
|
1114
1114
|
}
|
|
1115
1115
|
if (res.status === 429 || res.status >= 500)
|
|
1116
1116
|
return "retry";
|
|
1117
|
-
|
|
1117
|
+
const why = (await res.json().catch(() => null))?.error;
|
|
1118
|
+
this.log(`report refused (${res.status})${why ? `: ${why}` : ""}`);
|
|
1118
1119
|
return "done";
|
|
1119
1120
|
} catch {
|
|
1120
1121
|
return "retry";
|
|
@@ -1264,6 +1265,40 @@ function tickFieldMeter(f, t) {
|
|
|
1264
1265
|
return f.buf.length >= 90;
|
|
1265
1266
|
}
|
|
1266
1267
|
|
|
1268
|
+
// src/jsLoop.ts
|
|
1269
|
+
function createJsLoop({ raf, frame }) {
|
|
1270
|
+
let running = false;
|
|
1271
|
+
let gen = 0;
|
|
1272
|
+
const chain = (mine) => {
|
|
1273
|
+
const tick = () => {
|
|
1274
|
+
if (!running || mine !== gen)
|
|
1275
|
+
return;
|
|
1276
|
+
if (frame())
|
|
1277
|
+
raf(tick);
|
|
1278
|
+
else
|
|
1279
|
+
running = false;
|
|
1280
|
+
};
|
|
1281
|
+
return tick;
|
|
1282
|
+
};
|
|
1283
|
+
return {
|
|
1284
|
+
get running() {
|
|
1285
|
+
return running;
|
|
1286
|
+
},
|
|
1287
|
+
start() {
|
|
1288
|
+
if (running)
|
|
1289
|
+
return false;
|
|
1290
|
+
running = true;
|
|
1291
|
+
gen++;
|
|
1292
|
+
raf(chain(gen));
|
|
1293
|
+
return true;
|
|
1294
|
+
},
|
|
1295
|
+
stop() {
|
|
1296
|
+
running = false;
|
|
1297
|
+
gen++;
|
|
1298
|
+
}
|
|
1299
|
+
};
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1267
1302
|
// src/native.ts
|
|
1268
1303
|
var perf = globalThis.performance;
|
|
1269
1304
|
var now = () => perf && typeof perf.now === "function" ? perf.now() : Date.now();
|
|
@@ -1404,21 +1439,18 @@ function extendUi(ms) {
|
|
|
1404
1439
|
}, ms);
|
|
1405
1440
|
}
|
|
1406
1441
|
var jsMeter = createFieldMeter("js");
|
|
1407
|
-
var
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
else
|
|
1420
|
-
jsRunning = false;
|
|
1421
|
-
}
|
|
1442
|
+
var jsLoop = createJsLoop({
|
|
1443
|
+
raf: (cb) => requestAnimationFrame(cb),
|
|
1444
|
+
frame: () => {
|
|
1445
|
+
const t = now();
|
|
1446
|
+
const last = jsMeter.m.last;
|
|
1447
|
+
const interval = jsMeter.m.interval;
|
|
1448
|
+
tickFrameMeter(jsMeter.m, t);
|
|
1449
|
+
jsMeter.m.stats.length = 0;
|
|
1450
|
+
jsMeter.m.drops.length = 0;
|
|
1451
|
+
return controller.jsFrame(t, last >= 0 ? t - last : 0, interval);
|
|
1452
|
+
}
|
|
1453
|
+
});
|
|
1422
1454
|
var uiInstalled = false;
|
|
1423
1455
|
var meters = {
|
|
1424
1456
|
install() {
|
|
@@ -1437,10 +1469,9 @@ var meters = {
|
|
|
1437
1469
|
uiInstalled = false;
|
|
1438
1470
|
},
|
|
1439
1471
|
start() {
|
|
1440
|
-
if (!
|
|
1441
|
-
jsRunning = true;
|
|
1472
|
+
if (!jsLoop.running) {
|
|
1442
1473
|
jsMeter.m.last = -1;
|
|
1443
|
-
|
|
1474
|
+
jsLoop.start();
|
|
1444
1475
|
}
|
|
1445
1476
|
},
|
|
1446
1477
|
extendUi(ms) {
|
|
@@ -1448,7 +1479,7 @@ var meters = {
|
|
|
1448
1479
|
extendUi(ms);
|
|
1449
1480
|
},
|
|
1450
1481
|
stop() {
|
|
1451
|
-
|
|
1482
|
+
jsLoop.stop();
|
|
1452
1483
|
if (uiInstalled)
|
|
1453
1484
|
stopUi();
|
|
1454
1485
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type JsLoopDeps = {
|
|
2
|
+
raf: (cb: () => void) => unknown;
|
|
3
|
+
/** One frame: return false to end the loop (the motion window closed). */
|
|
4
|
+
frame: () => boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare function createJsLoop({ raf, frame }: JsLoopDeps): {
|
|
7
|
+
readonly running: boolean;
|
|
8
|
+
/** Starts the loop unless it is already running. Returns true when it started a new chain. */
|
|
9
|
+
start(): boolean;
|
|
10
|
+
stop(): void;
|
|
11
|
+
};
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/** This package's version: sent in every report's `sdk`, and compared with the config's `minSdk`. Keep it in step with package.json. */
|
|
2
2
|
export declare const SDK_NAME = "@keyframerdev/vitals";
|
|
3
|
-
export declare const SDK_VERSION = "0.1.
|
|
3
|
+
export declare const SDK_VERSION = "0.1.2";
|
package/package.json
CHANGED