@takagaki/cortex-decisions-viewer 0.12.153 → 0.12.155
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/render.js +15 -2
- package/package.json +1 -1
package/dist/render.js
CHANGED
|
@@ -20051,6 +20051,7 @@ ${story_1.splitByNameLinks.toString()}
|
|
|
20051
20051
|
* 「作ったはずのものが出てこない」状態が永久に続く(破棄の条件は applyDeleteTombstones)。
|
|
20052
20052
|
*/
|
|
20053
20053
|
function deletedStoreKey() { return "cortex-deleted:" + REPO_SLUG; }
|
|
20054
|
+
var TOMBSTONE_TTL_MS = 24 * 60 * 60 * 1000;
|
|
20054
20055
|
// 「削除より後に始まったビルドか」を判断するときの余裕は PENDING_OPS_MARGIN_MS(30分)。
|
|
20055
20056
|
// **同じ性質の待ちなので定数も1つ**(#391)——別に持つと片方だけ直したときに割れる
|
|
20056
20057
|
|
|
@@ -20093,8 +20094,19 @@ ${story_1.splitByNameLinks.toString()}
|
|
|
20093
20094
|
* クライアントの時計が大きく狂っていても機能が丸ごとは死なない(進んだ時計なら
|
|
20094
20095
|
* 再表示が遅れるだけ)。
|
|
20095
20096
|
*/
|
|
20096
|
-
function tombstoneStale(t, nowMs) {
|
|
20097
|
+
function tombstoneStale(t, nowMs, clockMs) {
|
|
20097
20098
|
if (!t) return false;
|
|
20099
|
+
// 読めない時刻の印は捨てる(壊れた値が隠し続ける側に倒れない)
|
|
20100
|
+
if (typeof t.at !== "number" || !isFinite(t.at)) return true;
|
|
20101
|
+
// 期限切れ(24 時間)。クライアントの時計は注入できる(テスト用 window.__cortexNowMs)
|
|
20102
|
+
if (clockMs - t.at > TOMBSTONE_TTL_MS) return true;
|
|
20103
|
+
// 画面の世代が、削除した画面の世代(gen0)より新しくなった=新しい世代に記録が居るなら、
|
|
20104
|
+
// 戻された(または作り直された)もの。余裕は取らない(取ると、戻した直後の世代で
|
|
20105
|
+
// 消した本人にだけ記録が出ない)。代わりに、削除前の状態から始まったビルドが削除後に
|
|
20106
|
+
// 完成した場合は、次のビルドまで本人にだけ一時的に戻って見える(発注書で了解済みの取捨選択)
|
|
20107
|
+
var g = pendingSiteTimeMs(t.gen0);
|
|
20108
|
+
if (!isNaN(nowMs) && !isNaN(g) && nowMs > g) return true;
|
|
20109
|
+
// gen0 が読めない古い形式は、削除時刻だけで見る(後方互換)
|
|
20098
20110
|
return pendingStale(t.at, t.gen0, nowMs);
|
|
20099
20111
|
}
|
|
20100
20112
|
/** トゥームストーンの相手を SITE から探す(id で引き、無ければパスで照合) */
|
|
@@ -20121,13 +20133,14 @@ ${story_1.splitByNameLinks.toString()}
|
|
|
20121
20133
|
var list = readTombstones();
|
|
20122
20134
|
if (!list.length) return;
|
|
20123
20135
|
var nowMs = pendingSiteTimeMs(SITE.generatedAt);
|
|
20136
|
+
var clockMs = typeof window.__cortexNowMs === "number" ? window.__cortexNowMs : Date.now();
|
|
20124
20137
|
var kept = [];
|
|
20125
20138
|
for (var i = 0; i < list.length; i++) {
|
|
20126
20139
|
var t = list[i];
|
|
20127
20140
|
if (!t || typeof t.path !== "string" || !t.path) continue;
|
|
20128
20141
|
var rec = findTombstoned(t);
|
|
20129
20142
|
if (!rec) continue;
|
|
20130
|
-
if (tombstoneStale(t, nowMs)) continue;
|
|
20143
|
+
if (tombstoneStale(t, nowMs, clockMs)) continue;
|
|
20131
20144
|
rec.deleted = true;
|
|
20132
20145
|
kept.push(t);
|
|
20133
20146
|
}
|
package/package.json
CHANGED