@keyframerdev/vitals 0.1.1 → 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/index.js +50 -20
- package/dist/types/jsLoop.d.ts +11 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
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 = {
|
|
@@ -1265,6 +1265,40 @@ function tickFieldMeter(f, t) {
|
|
|
1265
1265
|
return f.buf.length >= 90;
|
|
1266
1266
|
}
|
|
1267
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
|
+
|
|
1268
1302
|
// src/native.ts
|
|
1269
1303
|
var perf = globalThis.performance;
|
|
1270
1304
|
var now = () => perf && typeof perf.now === "function" ? perf.now() : Date.now();
|
|
@@ -1405,21 +1439,18 @@ function extendUi(ms) {
|
|
|
1405
1439
|
}, ms);
|
|
1406
1440
|
}
|
|
1407
1441
|
var jsMeter = createFieldMeter("js");
|
|
1408
|
-
var
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
else
|
|
1421
|
-
jsRunning = false;
|
|
1422
|
-
}
|
|
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
|
+
});
|
|
1423
1454
|
var uiInstalled = false;
|
|
1424
1455
|
var meters = {
|
|
1425
1456
|
install() {
|
|
@@ -1438,10 +1469,9 @@ var meters = {
|
|
|
1438
1469
|
uiInstalled = false;
|
|
1439
1470
|
},
|
|
1440
1471
|
start() {
|
|
1441
|
-
if (!
|
|
1442
|
-
jsRunning = true;
|
|
1472
|
+
if (!jsLoop.running) {
|
|
1443
1473
|
jsMeter.m.last = -1;
|
|
1444
|
-
|
|
1474
|
+
jsLoop.start();
|
|
1445
1475
|
}
|
|
1446
1476
|
},
|
|
1447
1477
|
extendUi(ms) {
|
|
@@ -1449,7 +1479,7 @@ var meters = {
|
|
|
1449
1479
|
extendUi(ms);
|
|
1450
1480
|
},
|
|
1451
1481
|
stop() {
|
|
1452
|
-
|
|
1482
|
+
jsLoop.stop();
|
|
1453
1483
|
if (uiInstalled)
|
|
1454
1484
|
stopUi();
|
|
1455
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