@maka/maka-cli 5.90.0 → 5.92.0
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/bundle/typescript/package.json +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +9 -9
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.d.ts +54 -3
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.js +987 -53
- package/bundle/typescript/src/commands/game/sideQuest/augmentations.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.d.ts +0 -14
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js +23 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.d.ts +10 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js +11 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js +14 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +30 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +10 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js +8 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/initiate.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/inv.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/mark.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +55 -17
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/persuade.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/project.js +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/project.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/reload.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +14 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +3 -3
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +109 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js +62 -16
- package/bundle/typescript/src/commands/game/sideQuest/factories/chargen-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +26 -3
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +95 -3
- package/bundle/typescript/src/commands/game/sideQuest/game.js +237 -15
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/inventory.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js +45 -2
- package/bundle/typescript/src/commands/game/sideQuest/models/inventory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +65 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js +83 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +153 -3
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +197 -12
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +73 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +97 -3
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/qualities.d.ts +33 -1
- package/bundle/typescript/src/commands/game/sideQuest/qualities.js +80 -2
- package/bundle/typescript/src/commands/game/sideQuest/qualities.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +4 -4
- package/bundle/typescript/src/commands/game/sideQuest/skill-groups.d.ts +120 -0
- package/bundle/typescript/src/commands/game/sideQuest/skill-groups.js +135 -0
- package/bundle/typescript/src/commands/game/sideQuest/skill-groups.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +34 -2
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +36 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/alarmed-staff.d.ts +116 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/alarmed-staff.js +127 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/alarmed-staff.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js +123 -2
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.d.ts +131 -2
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js +170 -12
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/cloud-saves.d.ts +139 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/cloud-saves.js +307 -5
- package/bundle/typescript/src/commands/game/sideQuest/utilities/cloud-saves.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.d.ts +41 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.js +41 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/input-history.d.ts +98 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/input-history.js +137 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/input-history.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/perception.js +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/perception.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.d.ts +38 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +106 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-lock.js +19 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/session-lock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/sin.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/sin.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +2 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.d.ts +22 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.js +27 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +79 -44
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,11 +6,33 @@ import * as https from 'https';
|
|
|
6
6
|
import { Logger } from './logger.js';
|
|
7
7
|
import { saveSlug, readSave, writeSaveAtomic, tombstonePathFor } from './persistence.js';
|
|
8
8
|
/**
|
|
9
|
-
* CLOUD
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* CLOUD STORAGE for the save slots, and the header this file carried
|
|
10
|
+
* for most of its life is no longer true of half its callers.
|
|
11
|
+
*
|
|
12
|
+
* IT SAID "LOCAL-FIRST -- the local file is always written and always
|
|
13
|
+
* authoritative for play; the cloud is a mirror". That still describes
|
|
14
|
+
* an ANONYMOUS runner exactly, and anonymous is deliberately untouched
|
|
15
|
+
* by all of this. It does NOT describe a BOUND one: the user's ruling
|
|
16
|
+
* is that an account-bound character lives ONLY on the server, because
|
|
17
|
+
* storing them twice produced a class of real bugs -- a deleted
|
|
18
|
+
* character resurrected from the cloud copy, a shared run loading a
|
|
19
|
+
* stale snapshot because the push was never awaited, and silent
|
|
20
|
+
* newest-wins resolution of divergences nobody was told about.
|
|
21
|
+
*
|
|
22
|
+
* So the model is now split, and every branch gates on bound:
|
|
23
|
+
*
|
|
24
|
+
* ANONYMOUS -- local file, authoritative, never leaves the machine.
|
|
25
|
+
* BOUND -- the server is the save. A synchronous local SPILL
|
|
26
|
+
* (persistence.spillPathFor) is a crash journal, not a
|
|
27
|
+
* second home: it exists only between a beat and its
|
|
28
|
+
* confirmed upload, and the next launch uploads and
|
|
29
|
+
* deletes it. Bound is online-only by ruling; an outage
|
|
30
|
+
* mid-session degrades to the spill rather than ending
|
|
31
|
+
* the session.
|
|
32
|
+
*
|
|
33
|
+
* PR1 NOTE: bound runners still write `<slug>.json` as well, so this
|
|
34
|
+
* change is a revert-trivial superset of the old behaviour. PR2 removes
|
|
35
|
+
* that write once the server contract is deployed.
|
|
14
36
|
*
|
|
15
37
|
* Auth rides the same rails as login/logout: the Meteor resume token
|
|
16
38
|
* from global-config.json's `token` property, sent as `x-auth-token`.
|
|
@@ -127,6 +149,15 @@ export async function pushSave(saveFilePath, save) {
|
|
|
127
149
|
noteUnauthorized();
|
|
128
150
|
return 'unauthorized';
|
|
129
151
|
}
|
|
152
|
+
// THE MONOTONIC GUARD (§8): the stored save is newer than ours, so
|
|
153
|
+
// this push would move the runner BACKWARDS. Reported distinctly
|
|
154
|
+
// because retrying it is exactly the wrong response -- see
|
|
155
|
+
// CloudResult. An equal savedAt is idempotent and answers 200, so a
|
|
156
|
+
// 409 always means genuinely behind.
|
|
157
|
+
if (res.statusCode === 409) {
|
|
158
|
+
logger.write(`Cloud sync: push refused as stale (server copy is newer than ${save.savedAt}).`);
|
|
159
|
+
return 'stale';
|
|
160
|
+
}
|
|
130
161
|
logger.write(`Cloud sync: push got ${res.statusCode} -- staying local.`);
|
|
131
162
|
return 'offline';
|
|
132
163
|
}
|
|
@@ -275,4 +306,275 @@ export function reconcile(local, cloud) {
|
|
|
275
306
|
return 'pull-cloud';
|
|
276
307
|
return 'diverged';
|
|
277
308
|
}
|
|
309
|
+
let pending;
|
|
310
|
+
let inFlight = false;
|
|
311
|
+
let retryTimer;
|
|
312
|
+
/** One notice per OUTAGE, not per failed beat -- see noteOutage. */
|
|
313
|
+
let outageAnnounced = false;
|
|
314
|
+
/** Set when a 409 says the server holds something newer than us. */
|
|
315
|
+
let staleAnnounced = false;
|
|
316
|
+
/** Retry cadence when the grid is down. Unref'd: a pending retry must
|
|
317
|
+
* never hold the process open at exit. */
|
|
318
|
+
const RETRY_MS = 60_000;
|
|
319
|
+
function noteOutage() {
|
|
320
|
+
if (outageAnnounced)
|
|
321
|
+
return;
|
|
322
|
+
outageAnnounced = true;
|
|
323
|
+
const logger = Logger.getInstance();
|
|
324
|
+
const line = `The grid dropped -- your progress is recording locally and will upload automatically next launch.`;
|
|
325
|
+
if (logger.hasScreen())
|
|
326
|
+
logger.logWithColor(line, 'yellow');
|
|
327
|
+
else
|
|
328
|
+
logger.write(`Cloud sync: outage -- ${line}`);
|
|
329
|
+
}
|
|
330
|
+
function noteRecovered() {
|
|
331
|
+
if (!outageAnnounced)
|
|
332
|
+
return;
|
|
333
|
+
outageAnnounced = false;
|
|
334
|
+
const logger = Logger.getInstance();
|
|
335
|
+
const line = `The grid's back -- your progress is synced.`;
|
|
336
|
+
if (logger.hasScreen())
|
|
337
|
+
logger.logWithColor(line, 'green');
|
|
338
|
+
else
|
|
339
|
+
logger.write('Cloud sync: recovered.');
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* A 409 means the SERVER is ahead of us: another machine pushed a newer
|
|
343
|
+
* save for this runner. Never overwrite play state from here -- this
|
|
344
|
+
* process is mid-session and its player is looking at the world it
|
|
345
|
+
* believes in. The spill survives, the warning fires once, and the
|
|
346
|
+
* launcher reconciles at the next launch where a human can be asked.
|
|
347
|
+
*/
|
|
348
|
+
function noteStale() {
|
|
349
|
+
if (staleAnnounced)
|
|
350
|
+
return;
|
|
351
|
+
staleAnnounced = true;
|
|
352
|
+
const logger = Logger.getInstance();
|
|
353
|
+
const line = `This runner was saved from somewhere else more recently. Your progress is being kept locally -- sort it out at the next launch.`;
|
|
354
|
+
if (logger.hasScreen())
|
|
355
|
+
logger.logWithColor(line, 'yellow');
|
|
356
|
+
else
|
|
357
|
+
logger.write('Cloud sync: 409 stale -- server copy is newer.');
|
|
358
|
+
}
|
|
359
|
+
/** Test seam: the queue is module state, and a suite that ran two cases
|
|
360
|
+
* against one dirty queue would be testing the previous test. */
|
|
361
|
+
export function _resetPushQueue() {
|
|
362
|
+
pending = undefined;
|
|
363
|
+
inFlight = false;
|
|
364
|
+
if (retryTimer)
|
|
365
|
+
clearTimeout(retryTimer);
|
|
366
|
+
retryTimer = undefined;
|
|
367
|
+
outageAnnounced = false;
|
|
368
|
+
staleAnnounced = false;
|
|
369
|
+
}
|
|
370
|
+
function armRetry() {
|
|
371
|
+
if (retryTimer || !pending)
|
|
372
|
+
return;
|
|
373
|
+
retryTimer = setTimeout(() => {
|
|
374
|
+
retryTimer = undefined;
|
|
375
|
+
void drainQueue();
|
|
376
|
+
}, RETRY_MS);
|
|
377
|
+
// A save waiting to retry must not keep the game alive at exit; the
|
|
378
|
+
// spill on disk is the guarantee, not this timer.
|
|
379
|
+
retryTimer.unref?.();
|
|
380
|
+
}
|
|
381
|
+
async function drainQueue() {
|
|
382
|
+
if (inFlight)
|
|
383
|
+
return;
|
|
384
|
+
const next = pending;
|
|
385
|
+
if (!next)
|
|
386
|
+
return;
|
|
387
|
+
pending = undefined;
|
|
388
|
+
inFlight = true;
|
|
389
|
+
try {
|
|
390
|
+
const res = await next.push(next.saveFilePath, next.save);
|
|
391
|
+
if (res === 'ok') {
|
|
392
|
+
noteRecovered();
|
|
393
|
+
// THE SPILL DIES ONLY ON A CONFIRMED PUSH OF THIS EXACT SAVE.
|
|
394
|
+
// Deleting it on any 200 would drop a NEWER beat's journal when an
|
|
395
|
+
// older push confirmed late -- the out-of-order case single-flight
|
|
396
|
+
// mostly prevents and this makes impossible.
|
|
397
|
+
if (next.spillPath && !pending)
|
|
398
|
+
clearSpill(next.spillPath, next.save.savedAt);
|
|
399
|
+
}
|
|
400
|
+
else if (res === 'stale') {
|
|
401
|
+
noteStale();
|
|
402
|
+
}
|
|
403
|
+
else if (res !== 'unauthorized') {
|
|
404
|
+
noteOutage();
|
|
405
|
+
// Put it back ONLY if nothing newer arrived while we were away.
|
|
406
|
+
if (!pending)
|
|
407
|
+
pending = next;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
finally {
|
|
411
|
+
inFlight = false;
|
|
412
|
+
}
|
|
413
|
+
if (pending) {
|
|
414
|
+
if (outageAnnounced || staleAnnounced)
|
|
415
|
+
armRetry();
|
|
416
|
+
else
|
|
417
|
+
await drainQueue();
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Enqueue a bound save. Returns immediately -- requestSave's contract is
|
|
422
|
+
* synchronous (game.ts) and the spill has already been written by the
|
|
423
|
+
* time this is called, so nothing here is allowed to block a beat.
|
|
424
|
+
*/
|
|
425
|
+
export function enqueueBoundPush(saveFilePath, save, spillPath, push = pushSave) {
|
|
426
|
+
pending = { saveFilePath, save, spillPath, push };
|
|
427
|
+
void drainQueue();
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Drain to completion -- the QUIT SEAL and the job-accept handoff.
|
|
431
|
+
*
|
|
432
|
+
* These are the two places where "eventually" is not good enough: quit
|
|
433
|
+
* ends the process (nothing later will retry), and accepting a job hands
|
|
434
|
+
* this character to a shared run that loads it from the SERVER, so an
|
|
435
|
+
* unpushed beat is a stale snapshot the whole table then plays against.
|
|
436
|
+
* That race exists today and this is what closes it.
|
|
437
|
+
*
|
|
438
|
+
* Resolves true when the server has the newest save. False means the
|
|
439
|
+
* spill stands and the next launch will carry it.
|
|
440
|
+
*/
|
|
441
|
+
export async function flushPushQueue() {
|
|
442
|
+
if (retryTimer) {
|
|
443
|
+
clearTimeout(retryTimer);
|
|
444
|
+
retryTimer = undefined;
|
|
445
|
+
}
|
|
446
|
+
// Bounded: each pass either lands the newest save or fails, and a
|
|
447
|
+
// failure stops the loop rather than spinning on a dead link.
|
|
448
|
+
for (let i = 0; i < 3 && pending; i++) {
|
|
449
|
+
const before = pending;
|
|
450
|
+
await drainQueue();
|
|
451
|
+
if (pending === before)
|
|
452
|
+
break;
|
|
453
|
+
}
|
|
454
|
+
return pending === undefined;
|
|
455
|
+
}
|
|
456
|
+
/** True while a bound save has not reached the server. */
|
|
457
|
+
export function hasPendingPush() {
|
|
458
|
+
return pending !== undefined;
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Remove a spill whose contents the server has confirmed. Guarded on
|
|
462
|
+
* savedAt: a spill rewritten by a newer beat between the push and the
|
|
463
|
+
* confirmation is NOT the file we just uploaded, and deleting it would
|
|
464
|
+
* throw away the only copy of that beat.
|
|
465
|
+
*/
|
|
466
|
+
export function clearSpill(spillPath, confirmedSavedAt) {
|
|
467
|
+
try {
|
|
468
|
+
if (!fs.existsSync(spillPath))
|
|
469
|
+
return;
|
|
470
|
+
const onDisk = readSave(spillPath);
|
|
471
|
+
if (onDisk.ok && onDisk.save.savedAt !== confirmedSavedAt)
|
|
472
|
+
return;
|
|
473
|
+
fs.rmSync(spillPath, { force: true });
|
|
474
|
+
Logger.getInstance().write(`Cloud sync: spill cleared (${confirmedSavedAt}).`);
|
|
475
|
+
}
|
|
476
|
+
catch (err) {
|
|
477
|
+
// A spill we cannot delete is a spill that gets uploaded again next
|
|
478
|
+
// launch and found to be identical -- harmless. Never fatal.
|
|
479
|
+
Logger.getInstance().write(`Cloud sync: could not clear spill -- ${err.message ?? err}`);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Write the spill, SYNCHRONOUSLY, and never throw.
|
|
484
|
+
*
|
|
485
|
+
* requestSave's signature is synchronous and that is load-bearing: it is
|
|
486
|
+
* called from `process.on('exit')`, where nothing asynchronous can run
|
|
487
|
+
* at all. For a bound runner the spill write IS the durability
|
|
488
|
+
* guarantee at that moment -- the push is best-effort and the process is
|
|
489
|
+
* already leaving.
|
|
490
|
+
*
|
|
491
|
+
* SWALLOWS ITS ERRORS ON PURPOSE, and this is the one place where that
|
|
492
|
+
* is right rather than lazy: a full disk or a permissions fault during
|
|
493
|
+
* the exit hook must not turn a clean quit into a crash on the way out.
|
|
494
|
+
* The player would lose the beat either way; throwing loses the exit
|
|
495
|
+
* too, and prints a stack trace over their last screen.
|
|
496
|
+
*/
|
|
497
|
+
export function writeSpill(spillPath, save) {
|
|
498
|
+
try {
|
|
499
|
+
writeSaveAtomic(spillPath, save);
|
|
500
|
+
return true;
|
|
501
|
+
}
|
|
502
|
+
catch (err) {
|
|
503
|
+
Logger.getInstance().write(`Cloud sync: spill write FAILED (${err.message ?? err}).`);
|
|
504
|
+
return false;
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
async function leaseCall(slug, sessionId, action) {
|
|
508
|
+
const token = authToken();
|
|
509
|
+
if (!token)
|
|
510
|
+
return { ok: false, reason: 'unauthorized' };
|
|
511
|
+
try {
|
|
512
|
+
const res = await request('POST', `/${API_BASE}/${slug}/lease`, token, { sessionId, action });
|
|
513
|
+
if (res.statusCode === 200) {
|
|
514
|
+
const body = parseLease(res.data);
|
|
515
|
+
return { ok: true, ttlMs: body?.ttlMs };
|
|
516
|
+
}
|
|
517
|
+
if (res.statusCode === 401) {
|
|
518
|
+
noteUnauthorized();
|
|
519
|
+
return { ok: false, reason: 'unauthorized' };
|
|
520
|
+
}
|
|
521
|
+
if (res.statusCode === 409) {
|
|
522
|
+
const body = parseLease(res.data);
|
|
523
|
+
return { ok: false, reason: 'held', heldBy: body?.heldBy, since: body?.since };
|
|
524
|
+
}
|
|
525
|
+
// See the transitional note above: an unimplemented endpoint is not
|
|
526
|
+
// a free lease and is not an outage either.
|
|
527
|
+
if (res.statusCode === 404) {
|
|
528
|
+
Logger.getInstance().write(`Lease: server has no lease endpoint -- proceeding without cross-machine locking.`);
|
|
529
|
+
return { ok: false, reason: 'unsupported' };
|
|
530
|
+
}
|
|
531
|
+
return { ok: false, reason: 'offline' };
|
|
532
|
+
}
|
|
533
|
+
catch {
|
|
534
|
+
return { ok: false, reason: 'offline' };
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
function parseLease(raw) {
|
|
538
|
+
try {
|
|
539
|
+
const parsed = JSON.parse(raw);
|
|
540
|
+
const body = (parsed?.data ?? parsed);
|
|
541
|
+
return body;
|
|
542
|
+
}
|
|
543
|
+
catch {
|
|
544
|
+
return undefined;
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
export const acquireLease = (slug, sessionId) => leaseCall(slug, sessionId, 'acquire');
|
|
548
|
+
export const releaseLease = (slug, sessionId) => leaseCall(slug, sessionId, 'release');
|
|
549
|
+
/**
|
|
550
|
+
* Whether a lease failure should STOP the boot.
|
|
551
|
+
*
|
|
552
|
+
* ONLY a held lease does. Offline, unauthorized and unsupported all mean
|
|
553
|
+
* "we could not ask", and refusing to play because the lock server was
|
|
554
|
+
* unreachable would turn every outage into a lockout -- which is the
|
|
555
|
+
* opposite of ruling 2 (an outage degrades to the spill, it does not end
|
|
556
|
+
* the session). A HELD lease is the one case where we know the answer
|
|
557
|
+
* and the answer is no.
|
|
558
|
+
*/
|
|
559
|
+
export function leaseRefusesBoot(result) {
|
|
560
|
+
return result.ok === false && result.reason === 'held';
|
|
561
|
+
}
|
|
562
|
+
let renewTimer;
|
|
563
|
+
/**
|
|
564
|
+
* Keep the lease alive while playing. Renewal FAILURES ARE TOLERATED:
|
|
565
|
+
* a dropped renew during an outage must not kill a live session -- the
|
|
566
|
+
* server's TTL expires it on its own, and a crash is exactly what the
|
|
567
|
+
* TTL is for.
|
|
568
|
+
*/
|
|
569
|
+
export function startLeaseRenewal(slug, sessionId, everyMs = 30_000) {
|
|
570
|
+
stopLeaseRenewal();
|
|
571
|
+
renewTimer = setInterval(() => { void leaseCall(slug, sessionId, 'renew'); }, everyMs);
|
|
572
|
+
// Never hold the process open for a lock we are about to release.
|
|
573
|
+
renewTimer.unref?.();
|
|
574
|
+
}
|
|
575
|
+
export function stopLeaseRenewal() {
|
|
576
|
+
if (renewTimer)
|
|
577
|
+
clearInterval(renewTimer);
|
|
578
|
+
renewTimer = undefined;
|
|
579
|
+
}
|
|
278
580
|
//# sourceMappingURL=cloud-saves.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-saves.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/cloud-saves.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzF;;;;;;;;;;;;;GAaG;AAEH,sEAAsE;AACtE,qEAAqE;AACrE,oEAAoE;AACpE,gEAAgE;AAChE,kDAAkD;AAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;AAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC;AACxD,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACnE,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AACrC,sEAAsE;AACtE,+DAA+D;AAC/D,MAAM,UAAU,GAAG,KAAK,CAAC;AAIzB,SAAS,OAAO,CAAC,MAAsB,EAAE,OAAe,EAAE,KAAa,EAAE,IAAc;IACrF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;YACtB,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,OAAO;YACb,MAAM;YACN,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,cAAc,EAAE,KAAK;gBACrB,GAAG,CAAC,OAAO,KAAK,SAAS;oBACvB,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;oBACtF,CAAC,CAAC,EAAE,CAAC;aACR;SACF,EAAE,GAAG,CAAC,EAAE;YACP,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACnE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,OAAO,KAAK,SAAS;YAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;AAE7F,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC;QACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;wDAEwD;AACxD,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;QACpE,MAAM,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;QAC9B,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,IAAI,qBAAqB,GAAG,KAAK,CAAC;AAClC,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB,SAAS,gBAAgB;IACvB,YAAY,GAAG,IAAI,CAAC;IACpB,IAAI,qBAAqB;QAAE,OAAO;IAClC,qBAAqB,GAAG,IAAI,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;QACvB,MAAM,CAAC,YAAY,CAAC,qGAAqG,EAAE,QAAQ,CAAC,CAAC;IACvI,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAYD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,YAAoB,EAAE,IAAiB;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI,YAAY;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5F,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAC3B,kEAAkE;YAClE,qEAAqE;YACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvD,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAC3B,gBAAgB,EAAE,CAAC;YACnB,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAC,UAAU,oBAAoB,CAAC,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,4BAA6B,GAAa,CAAC,OAAO,IAAI,GAAG,qBAAqB,CAAC,CAAC;QAC7F,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI,YAAY;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,QAAQ,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAoB,EAAE,CAAC;QACvE,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAC3B,gBAAgB,EAAE,CAAC;YACnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI,YAAY;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,QAAQ,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QAChE,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAC3B,gBAAgB,EAAE,CAAC;YACnB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,MAAM,EAAE,IAA+B,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,QAAQ,IAAI,IAAI,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5E,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACxC,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YAC3B,gBAAgB,EAAE,CAAC;YACnB,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAAoB,EAAE,UAAkB;IACvE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,6CAA6C,GAAG,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,KAAK,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACvD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAA4C,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,YAAoB,EAAE,UAAkB;IACnF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/F,CAAC;IAAC,MAAM,CAAC,CAAC,qCAAqC,CAAC,CAAC;IACjD,IAAI,CAAC;QAAC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC9E,IAAI,CAAC;QAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC7G,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC;YAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAMD;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CACvB,KAAiE,EACjE,KAAsC;IAEtC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,YAAY,CAAC;IAChC,IAAI,CAAC,KAAK;QAAE,OAAO,YAAY,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACtD,IAAI,KAAK,CAAC,gBAAgB,KAAK,KAAK,CAAC,OAAO;QAAE,OAAO,YAAY,CAAC;IAClE,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,gBAAgB;QAAE,OAAO,YAAY,CAAC;IAClE,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
1
|
+
{"version":3,"file":"cloud-saves.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/cloud-saves.ts"],"names":[],"mappings":"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"}
|
|
@@ -137,6 +137,47 @@ export declare function despawnEphemerals(host: IEphemeralHost, opts: {
|
|
|
137
137
|
/** Ends everything regardless of scope (scene teardown). */
|
|
138
138
|
all?: boolean;
|
|
139
139
|
}): string[];
|
|
140
|
+
/**
|
|
141
|
+
* IS THIS BODY ONE OF MINE? The question every OTHER driver has to ask,
|
|
142
|
+
* given one home so there is only ever one answer.
|
|
143
|
+
*
|
|
144
|
+
* THE OVERLAP IS REAL, and it is not obvious from either side.
|
|
145
|
+
* spawnEphemeral calls `scene.addActor`, which writes into the same Map
|
|
146
|
+
* that `Scene.allActors` enumerates -- so every ephemeral is in the
|
|
147
|
+
* scene's actor list right now. Any driver that walks the scene and
|
|
148
|
+
* filters `instanceof NPC` picks up the officer, the gangers and the
|
|
149
|
+
* bystanders along with the cast.
|
|
150
|
+
*
|
|
151
|
+
* WHOSE GUARD, stated as a rule rather than a preference (agreed with
|
|
152
|
+
* backlog-session-2 for the alarm driver, TRqb): this governor iterates
|
|
153
|
+
* the REGISTRY and can never reach a scene NPC, so a narrow enumerator
|
|
154
|
+
* needs no guard. A BROAD enumerator can reach mine. The guard belongs
|
|
155
|
+
* to whoever holds the superset, because that is the only side where
|
|
156
|
+
* the mistake is possible -- and the mistake is one body taking two
|
|
157
|
+
* beats per player action, which nothing visibly fails on.
|
|
158
|
+
*
|
|
159
|
+
* EXPORTED RATHER THAN LEFT AS `if (npc.ephemeral)` AT EACH CALLER, for
|
|
160
|
+
* the reason that decides most of this file: if the marking ever moves
|
|
161
|
+
* off that field, one place changes instead of N, and the ones that did
|
|
162
|
+
* not change would fail SILENTLY. A hand-rolled copy of a one-line
|
|
163
|
+
* predicate is exactly the shape that survives a refactor while
|
|
164
|
+
* quietly meaning nothing.
|
|
165
|
+
*/
|
|
166
|
+
/**
|
|
167
|
+
* THE UNION IS DELIBERATE and cost a build to learn. Typed only as
|
|
168
|
+
* `{ ephemeral?: unknown }`, TypeScript's WEAK TYPE check rejects
|
|
169
|
+
* `isEphemeral(player)` outright -- "Player has no properties in common"
|
|
170
|
+
* -- because every property of that shape is optional and Player carries
|
|
171
|
+
* none of them. A predicate a caller cannot pass a Player to is useless
|
|
172
|
+
* to the exact driver it was written for, since walking the scene hands
|
|
173
|
+
* you `Player | NPC`. Naming both members makes each an exact match and
|
|
174
|
+
* leaves the structural form for anything else.
|
|
175
|
+
*
|
|
176
|
+
* Jest was green on this; only `npm run build` caught it.
|
|
177
|
+
*/
|
|
178
|
+
export declare function isEphemeral(actor: Player | NPC | {
|
|
179
|
+
ephemeral?: unknown;
|
|
180
|
+
} | undefined | null): boolean;
|
|
140
181
|
/**
|
|
141
182
|
* THE ONE NAMING PATH, for the same reason there is one spawn path: two
|
|
142
183
|
* naming helpers is how two of them end up called Ravi.
|
|
@@ -72,6 +72,47 @@ export function despawnEphemerals(host, opts) {
|
|
|
72
72
|
}
|
|
73
73
|
return removed;
|
|
74
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* IS THIS BODY ONE OF MINE? The question every OTHER driver has to ask,
|
|
77
|
+
* given one home so there is only ever one answer.
|
|
78
|
+
*
|
|
79
|
+
* THE OVERLAP IS REAL, and it is not obvious from either side.
|
|
80
|
+
* spawnEphemeral calls `scene.addActor`, which writes into the same Map
|
|
81
|
+
* that `Scene.allActors` enumerates -- so every ephemeral is in the
|
|
82
|
+
* scene's actor list right now. Any driver that walks the scene and
|
|
83
|
+
* filters `instanceof NPC` picks up the officer, the gangers and the
|
|
84
|
+
* bystanders along with the cast.
|
|
85
|
+
*
|
|
86
|
+
* WHOSE GUARD, stated as a rule rather than a preference (agreed with
|
|
87
|
+
* backlog-session-2 for the alarm driver, TRqb): this governor iterates
|
|
88
|
+
* the REGISTRY and can never reach a scene NPC, so a narrow enumerator
|
|
89
|
+
* needs no guard. A BROAD enumerator can reach mine. The guard belongs
|
|
90
|
+
* to whoever holds the superset, because that is the only side where
|
|
91
|
+
* the mistake is possible -- and the mistake is one body taking two
|
|
92
|
+
* beats per player action, which nothing visibly fails on.
|
|
93
|
+
*
|
|
94
|
+
* EXPORTED RATHER THAN LEFT AS `if (npc.ephemeral)` AT EACH CALLER, for
|
|
95
|
+
* the reason that decides most of this file: if the marking ever moves
|
|
96
|
+
* off that field, one place changes instead of N, and the ones that did
|
|
97
|
+
* not change would fail SILENTLY. A hand-rolled copy of a one-line
|
|
98
|
+
* predicate is exactly the shape that survives a refactor while
|
|
99
|
+
* quietly meaning nothing.
|
|
100
|
+
*/
|
|
101
|
+
/**
|
|
102
|
+
* THE UNION IS DELIBERATE and cost a build to learn. Typed only as
|
|
103
|
+
* `{ ephemeral?: unknown }`, TypeScript's WEAK TYPE check rejects
|
|
104
|
+
* `isEphemeral(player)` outright -- "Player has no properties in common"
|
|
105
|
+
* -- because every property of that shape is optional and Player carries
|
|
106
|
+
* none of them. A predicate a caller cannot pass a Player to is useless
|
|
107
|
+
* to the exact driver it was written for, since walking the scene hands
|
|
108
|
+
* you `Player | NPC`. Naming both members makes each an exact match and
|
|
109
|
+
* leaves the structural form for anything else.
|
|
110
|
+
*
|
|
111
|
+
* Jest was green on this; only `npm run build` caught it.
|
|
112
|
+
*/
|
|
113
|
+
export function isEphemeral(actor) {
|
|
114
|
+
return actor?.ephemeral != null;
|
|
115
|
+
}
|
|
75
116
|
/**
|
|
76
117
|
* THE ONE NAMING PATH, for the same reason there is one spawn path: two
|
|
77
118
|
* naming helpers is how two of them end up called Ravi.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ephemeral.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/ephemeral.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ephemeral.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/ephemeral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAGvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAa,eAAe,EAAE,MAAM,gBAAgB,CAAC;AA2G5D;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAoB,EAAE,IAOpD;IACC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,IAAI,iCAAiC,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;QAClB,MAAM,EAAE,EAAE;QACV,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,uBAAuB,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;KAClG,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC;IACnB,oEAAoE;IACpE,kEAAkE;IAClE,oCAAoC;IACpC,GAAG,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC3F,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9C,mEAAmE;IACnE,kEAAkE;IAClE,kEAAkE;IAClE,qBAAqB;IACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACxH,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAoB,EAAE,IAOvD;IACC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG;YACpB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO;gBACtB,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK;gBAC5B,4DAA4D;gBAC5D,oDAAoD;gBACpD,CAAC,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,QAAQ,CAAC;QACjF,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG;YAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,yBAAyB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CACzB,KAAgE;IAEhE,OAAQ,KAAoD,EAAE,SAAS,IAAI,IAAI,CAAC;AAClF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoB,EAAE,IAAuB,EAAE,MAAM,GAAG,CAAC;IAC1F,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9B,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,IAAI,IAAI,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,KAAK,CAAC,IAAY,EAAE,IAAY;IACvC,IAAI,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AACrC,CAAC;AAED,mEAAmE;AACnE,SAAS,SAAS,CAAC,GAAQ;IACzB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,cAAc,CAAC,IAAoB,EAAE,MAAc;IACjE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE;YAAE,SAAS;QAC7D,iEAAiE;QACjE,oEAAoE;QACpE,mEAAmE;QACnE,+CAA+C;QAC/C,IAAI,GAAG,CAAC,eAAe,KAAK,IAAI;YAAE,SAAS;QAC3C,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAEhB,iEAAiE;QACjE,4DAA4D;QAC5D,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAEvE,8DAA8D;QAC9D,iEAAiE;QACjE,gEAAgE;QAChE,kEAAkE;QAClE,mDAAmD;QACnD,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;YAAE,SAAS;QAE7B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAClG,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,QAAQ,CAAC,IAAU,EAAE,GAAQ,EAAE,IAAoB;IAC1D,qEAAqE;IACrE,oEAAoE;IACpE,mEAAmE;IACnE,uDAAuD;IACvD,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,IAAI,CAAC,QAAQ;QAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChD,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,OAAO,CAAC,IAAU,EAAE,GAAQ,EAAE,MAAc;IACnD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACtC,IAAI,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,eAAe;QAAE,OAAO,SAAS,CAAC;IAEhF,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;IACvC,MAAM,GAAG,GAAc;QACrB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAClC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAClC,CAAC,EAAE,KAAK,CAAC,CAAC;KACX,CAAC;IACF,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAwB,CAAC,CAAC;IACnE,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IAClB,OAAO,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,eAAe;QAC9D,CAAC,CAAC,cAAc,GAAG,CAAC,IAAI,wEAAwE;QAChG,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,MAAM,CAAC,IAAU,EAAE,GAAQ,EAAE,IAAoB;IACxD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,mEAAmE;IACnE,oEAAoE;IACpE,0BAA0B;IAC1B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO;IAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,GAAwB,CAAC,CAAC;IAC7G,GAAG,CAAC,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO;qEAC4D,IAAI;;;;;;;;;;;;;gEAaT,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* COMMAND HISTORY FOR THE INPUT BOX (gcCNQShcTSa9zyPGd: "better text
|
|
3
|
+
* input -- Up arrow for previous submissions").
|
|
4
|
+
*
|
|
5
|
+
* PURE ON PURPOSE, and that is the whole design decision here. Keystroke
|
|
6
|
+
* handling is the one thing a headless test cannot see -- blessed's
|
|
7
|
+
* reader, focus, and the terminal are all in the way -- so everything
|
|
8
|
+
* that can be decided WITHOUT a terminal is decided here, where it can
|
|
9
|
+
* be tested properly. What is left in ui.ts is three lines of wiring
|
|
10
|
+
* that a human verifies by pressing the key.
|
|
11
|
+
*
|
|
12
|
+
* SHELL SEMANTICS, because that is what the request means by "like a
|
|
13
|
+
* shell" and because anything else is a surprise:
|
|
14
|
+
*
|
|
15
|
+
* - Up walks BACKWARD through submissions, newest first, and stops at
|
|
16
|
+
* the oldest rather than wrapping. Wrapping puts your oldest command
|
|
17
|
+
* in the box when you meant to keep going back, and you cannot tell
|
|
18
|
+
* it happened.
|
|
19
|
+
* - Down walks forward and, past the newest, returns to what you were
|
|
20
|
+
* TYPING. That draft is the thing people lose: type half a command,
|
|
21
|
+
* glance back at an earlier one, come down again -- a shell gives
|
|
22
|
+
* the half-typed line back, and losing it is the bug report.
|
|
23
|
+
* - A consecutive repeat is not recorded twice. Pressing Up should
|
|
24
|
+
* step through what you DID, not count how many times you did it.
|
|
25
|
+
* - Blank submissions are not history. The box is cleared and
|
|
26
|
+
* re-submitted often (a nervous Enter is already a no-op upstream).
|
|
27
|
+
*/
|
|
28
|
+
/** How much to keep. A session is a few hundred commands at most, and
|
|
29
|
+
* the whole point of a cap is that this lives for the process. */
|
|
30
|
+
export declare const HISTORY_LIMIT = 200;
|
|
31
|
+
export declare class InputHistory {
|
|
32
|
+
private readonly limit;
|
|
33
|
+
/** Oldest first, so `push` is the cheap end and index 0 is the start. */
|
|
34
|
+
private entries;
|
|
35
|
+
/**
|
|
36
|
+
* Where Up/Down currently sit. `entries.length` means "not browsing --
|
|
37
|
+
* the box holds live text", which is why it is an index one PAST the
|
|
38
|
+
* end rather than -1: every other value indexes an entry directly, and
|
|
39
|
+
* the arithmetic below never needs a special case.
|
|
40
|
+
*/
|
|
41
|
+
private cursor;
|
|
42
|
+
/** What was in the box when browsing started, restored on the way back
|
|
43
|
+
* down. Undefined while not browsing. */
|
|
44
|
+
private draft?;
|
|
45
|
+
constructor(limit?: number);
|
|
46
|
+
/** Everything remembered, oldest first. For tests and for a future
|
|
47
|
+
* "history" verb; nothing in the UI needs it. */
|
|
48
|
+
get all(): readonly string[];
|
|
49
|
+
get browsing(): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Record a submitted command and leave browsing mode.
|
|
52
|
+
*
|
|
53
|
+
* Called on EVERY submit, including ones this refuses to store, so the
|
|
54
|
+
* cursor and draft are reset either way -- a blank Enter should still
|
|
55
|
+
* put you back at the live line.
|
|
56
|
+
*/
|
|
57
|
+
remember(command: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* One step back. `current` is what the box holds right now, captured
|
|
60
|
+
* so the draft can be handed back on the way down.
|
|
61
|
+
*
|
|
62
|
+
* Returns the text to put in the box, or undefined when there is
|
|
63
|
+
* nothing to go back to -- the caller leaves the box untouched, which
|
|
64
|
+
* is what makes the oldest entry a floor rather than a wrap.
|
|
65
|
+
*/
|
|
66
|
+
up(current: string): string | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* One step forward. Past the newest entry this returns the draft (or
|
|
69
|
+
* '' if there was none) and leaves browsing mode.
|
|
70
|
+
*
|
|
71
|
+
* Returns undefined only when not browsing at all -- pressing Down on
|
|
72
|
+
* a live line does nothing, rather than clearing what you typed.
|
|
73
|
+
*/
|
|
74
|
+
down(): string | undefined;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* THE WIRING, exported so the TEST DRIVES IT rather than a copy of it.
|
|
78
|
+
*
|
|
79
|
+
* This began as three lines inline in ui.ts, on the assumption that
|
|
80
|
+
* keystroke handling is the part a headless test cannot reach. That
|
|
81
|
+
* assumption is FALSE and was worth checking before designing around
|
|
82
|
+
* it: blessed runs perfectly well against a pair of PassThrough streams
|
|
83
|
+
* with `isTTY` set, and a `keypress` emitted on `screen.program.input`
|
|
84
|
+
* reaches an element's `key()` handler exactly as a real terminal's
|
|
85
|
+
* would. So the binding is testable end to end, and inline wiring would
|
|
86
|
+
* have meant the test re-implementing it -- which is how a mutation
|
|
87
|
+
* ends up accusing the wrong file.
|
|
88
|
+
*
|
|
89
|
+
* `render` is passed rather than the screen so this file never imports
|
|
90
|
+
* blessed: it needs `key`, `getValue` and `setValue`, and naming exactly
|
|
91
|
+
* those keeps the seam honest about what it touches.
|
|
92
|
+
*/
|
|
93
|
+
export interface IHistoryBox {
|
|
94
|
+
key(keys: string[], handler: () => void): void;
|
|
95
|
+
getValue(): string;
|
|
96
|
+
setValue(value: string): void;
|
|
97
|
+
}
|
|
98
|
+
export declare function attachInputHistory(box: IHistoryBox, render: () => void, history?: InputHistory): InputHistory;
|