@amalgm/live 0.2.81-main.41421531763 → 0.2.81-main.41442331400
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/history/rule.d.ts +2 -1
- package/dist/history/rule.d.ts.map +1 -1
- package/dist/history/rule.js +8 -5
- package/dist/history/rule.js.map +1 -1
- package/dist/records/receive-pages.d.ts +5 -2
- package/dist/records/receive-pages.d.ts.map +1 -1
- package/dist/records/receive-pages.js +8 -4
- package/dist/records/receive-pages.js.map +1 -1
- package/dist-cjs/history/rule.js +8 -5
- package/dist-cjs/history/rule.js.map +1 -1
- package/dist-cjs/records/receive-pages.js +8 -4
- package/dist-cjs/records/receive-pages.js.map +1 -1
- package/package.json +4 -4
package/dist/history/rule.d.ts
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* goes.
|
|
8
8
|
*
|
|
9
9
|
* The current version is always kept. A permanent deletion keeps no history:
|
|
10
|
-
* every version before it goes when it is accepted.
|
|
10
|
+
* every version before it goes when it is accepted. A secret keeps none either:
|
|
11
|
+
* an old value someone replaced must not stay readable.
|
|
11
12
|
*
|
|
12
13
|
* Time is the authority's acceptance time, never a device clock. Because a
|
|
13
14
|
* version's end depends only on the versions after it, accepting version `k`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../src/history/rule.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../src/history/rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIzE,2DAA2D;AAC3D,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,QAAc,CAAC;AAE5C,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,QAAc,CAAC;AAc5C;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,GACvD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CASzB;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,CAmBvF"}
|
package/dist/history/rule.js
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* goes.
|
|
8
8
|
*
|
|
9
9
|
* The current version is always kept. A permanent deletion keeps no history:
|
|
10
|
-
* every version before it goes when it is accepted.
|
|
10
|
+
* every version before it goes when it is accepted. A secret keeps none either:
|
|
11
|
+
* an old value someone replaced must not stay readable.
|
|
11
12
|
*
|
|
12
13
|
* Time is the authority's acceptance time, never a device clock. Because a
|
|
13
14
|
* version's end depends only on the versions after it, accepting version `k`
|
|
@@ -29,6 +30,8 @@ export const VERSION_TRASH_MS = 30 * DAY_MS;
|
|
|
29
30
|
function keptUntil(next, tenth) {
|
|
30
31
|
return Math.max(next.acceptedAt + KEEP_REPLACED_MS, tenth.acceptedAt);
|
|
31
32
|
}
|
|
33
|
+
/** Accepting this version ends every version before it, at once. */
|
|
34
|
+
const endsHistory = (version) => version.deleted || version.type === 'secret';
|
|
32
35
|
/**
|
|
33
36
|
* The one release accepting `version` fixes, or null when it fixes none yet.
|
|
34
37
|
* `versionAt` reads an earlier version of the same entity; only the one that
|
|
@@ -36,7 +39,7 @@ function keptUntil(next, tenth) {
|
|
|
36
39
|
*/
|
|
37
40
|
export async function releaseFixedBy(version, versionAt) {
|
|
38
41
|
const { entityId, sequence, acceptedAt } = version;
|
|
39
|
-
if (version
|
|
42
|
+
if (endsHistory(version)) {
|
|
40
43
|
return sequence > 1 ? { entityId, through: sequence - 1, dueAt: acceptedAt } : null;
|
|
41
44
|
}
|
|
42
45
|
const leaving = sequence - KEEP_NEWEST;
|
|
@@ -54,12 +57,12 @@ export async function releaseFixedBy(version, versionAt) {
|
|
|
54
57
|
export function judge(versions, now) {
|
|
55
58
|
const count = versions.length;
|
|
56
59
|
const last = versions[count - 1];
|
|
57
|
-
const
|
|
60
|
+
const endedAt = last !== undefined && endsHistory(last) ? last.acceptedAt : null;
|
|
58
61
|
return versions.map((version, index) => {
|
|
59
62
|
if (index === count - 1)
|
|
60
63
|
return { ...version, state: 'current', trashedAt: null, goneAt: null };
|
|
61
|
-
if (
|
|
62
|
-
return { ...version, state: 'gone', trashedAt:
|
|
64
|
+
if (endedAt !== null) {
|
|
65
|
+
return { ...version, state: 'gone', trashedAt: endedAt, goneAt: endedAt };
|
|
63
66
|
}
|
|
64
67
|
const next = versions[index + 1];
|
|
65
68
|
const tenth = versions[index + KEEP_NEWEST];
|
package/dist/history/rule.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/history/rule.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/history/rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,10 @@ export interface ReceivePagePorts {
|
|
|
24
24
|
* caught up at no position. */
|
|
25
25
|
export declare function receiveTailPage(ports: ReceivePagePorts, authorityId: string, observe: (cursor: number) => void): Promise<boolean>;
|
|
26
26
|
/** One page of one entity's channel: its own dense history. The cursor is
|
|
27
|
-
* the Inbox cursor, a page after it can never gap
|
|
28
|
-
*
|
|
27
|
+
* the Inbox cursor, so a page after it can never gap. An entity that is its
|
|
28
|
+
* own authority, a construct, is that authority's whole history, so its page
|
|
29
|
+
* is also the authority's complete delivery prefix and Apply's line starts
|
|
30
|
+
* there. Any other entity is one among many, and its page moves no authority
|
|
31
|
+
* position. */
|
|
29
32
|
export declare function receiveEntityPage(ports: ReceivePagePorts, entityId: string, observe: (cursor: number) => void): Promise<boolean>;
|
|
30
33
|
//# sourceMappingURL=receive-pages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receive-pages.d.ts","sourceRoot":"","sources":["../../src/records/receive-pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEtG,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,gEAAgE;IAChE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/D,4DAA4D;IAC5D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CACvC;AAED;;;+BAG+B;AAC/B,wBAAsB,eAAe,CACnC,KAAK,EAAE,gBAAgB,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,OAAO,CAAC,CAoClB;AAED
|
|
1
|
+
{"version":3,"file":"receive-pages.d.ts","sourceRoot":"","sources":["../../src/records/receive-pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEtG,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,gEAAgE;IAChE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/D,4DAA4D;IAC5D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CACvC;AAED;;;+BAG+B;AAC/B,wBAAsB,eAAe,CACnC,KAAK,EAAE,gBAAgB,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,OAAO,CAAC,CAoClB;AAED;;;;;eAKe;AACf,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAChC,OAAO,CAAC,OAAO,CAAC,CAyBlB"}
|
|
@@ -53,8 +53,11 @@ export async function receiveTailPage(ports, authorityId, observe) {
|
|
|
53
53
|
return deliveries.length === ENTITY_RECORD_DELIVERY_LIMIT;
|
|
54
54
|
}
|
|
55
55
|
/** One page of one entity's channel: its own dense history. The cursor is
|
|
56
|
-
* the Inbox cursor, a page after it can never gap
|
|
57
|
-
*
|
|
56
|
+
* the Inbox cursor, so a page after it can never gap. An entity that is its
|
|
57
|
+
* own authority, a construct, is that authority's whole history, so its page
|
|
58
|
+
* is also the authority's complete delivery prefix and Apply's line starts
|
|
59
|
+
* there. Any other entity is one among many, and its page moves no authority
|
|
60
|
+
* position. */
|
|
58
61
|
export async function receiveEntityPage(ports, entityId, observe) {
|
|
59
62
|
const { store, authority, run } = ports;
|
|
60
63
|
const after = await run(() => store.readEntityCursor(entityId));
|
|
@@ -69,10 +72,11 @@ export async function receiveEntityPage(ports, entityId, observe) {
|
|
|
69
72
|
if (deliveries.some((delivery) => delivery.record.entityId !== entityId)) {
|
|
70
73
|
throw new Error(`entity channel ${entityId} delivered another entity's record`);
|
|
71
74
|
}
|
|
75
|
+
const { authorityId } = deliveries[0].record;
|
|
72
76
|
const stored = await run(() => store.receive({
|
|
73
|
-
authorityId
|
|
77
|
+
authorityId,
|
|
74
78
|
deliveries,
|
|
75
|
-
advanceDeliveryCursor:
|
|
79
|
+
advanceDeliveryCursor: authorityId === entityId,
|
|
76
80
|
}));
|
|
77
81
|
if (stored.kind === 'gap') {
|
|
78
82
|
throw new Error(`entity ${entityId} is missing sequence ${stored.gap.after + 1}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receive-pages.js","sourceRoot":"","sources":["../../src/records/receive-pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAWhD;;;+BAG+B;AAC/B,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAuB,EACvB,WAAmB,EACnB,OAAiC;IAEjC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,CAAC,KAAK,CAAC,CAAC;IACf,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;QACrD,WAAW;QACX,qBAAqB,EAAE,KAAK;QAC5B,KAAK,EAAE,4BAA4B;KACpC,CAAC,CAAC,CAAC;IACJ,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtG,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC;YACjD,WAAW;YACX,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,mBAAmB,EAAE,GAAG,CAAC,KAAK;YAC9B,qBAAqB,EAAE,GAAG,CAAC,QAAQ;SACpC,CAAC,CAAC,CAAC;QACJ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,QAAQ,wBAAwB,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpH,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,CAAC,GAAG,CAAC,QAAQ,yCAAyC,CAAC,CAAC;QAC5F,CAAC;QACD,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzB,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAClG,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,QAAQ,0BAA0B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC/B,KAAK,CAAC,gBAAgB,EAAE,CAAC;IACzB,OAAO,UAAU,CAAC,MAAM,KAAK,4BAA4B,CAAC;AAC5D,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"receive-pages.js","sourceRoot":"","sources":["../../src/records/receive-pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAWhD;;;+BAG+B;AAC/B,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAuB,EACvB,WAAmB,EACnB,OAAiC;IAEjC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,CAAC,KAAK,CAAC,CAAC;IACf,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;QACrD,WAAW;QACX,qBAAqB,EAAE,KAAK;QAC5B,KAAK,EAAE,4BAA4B;KACpC,CAAC,CAAC,CAAC;IACJ,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtG,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC;YACjD,WAAW;YACX,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,mBAAmB,EAAE,GAAG,CAAC,KAAK;YAC9B,qBAAqB,EAAE,GAAG,CAAC,QAAQ;SACpC,CAAC,CAAC,CAAC;QACJ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,QAAQ,wBAAwB,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpH,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,CAAC,GAAG,CAAC,QAAQ,yCAAyC,CAAC,CAAC;QAC5F,CAAC;QACD,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzB,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAClG,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,QAAQ,0BAA0B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC/B,KAAK,CAAC,gBAAgB,EAAE,CAAC;IACzB,OAAO,UAAU,CAAC,MAAM,KAAK,4BAA4B,CAAC;AAC5D,CAAC;AAED;;;;;eAKe;AACf,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAuB,EACvB,QAAgB,EAChB,OAAiC;IAEjC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,KAAK,CAAC,CAAC;IACf,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC;QAC3D,QAAQ;QACR,mBAAmB,EAAE,KAAK;QAC1B,KAAK,EAAE,4BAA4B;KACpC,CAAC,CAAC,CAAC;IACJ,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,oCAAoC,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3C,WAAW;QACX,UAAU;QACV,qBAAqB,EAAE,WAAW,KAAK,QAAQ;KAChD,CAAC,CAAC,CAAC;IACJ,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,wBAAwB,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAClE,KAAK,CAAC,gBAAgB,EAAE,CAAC;IACzB,OAAO,UAAU,CAAC,MAAM,KAAK,4BAA4B,CAAC;AAC5D,CAAC"}
|
package/dist-cjs/history/rule.js
CHANGED
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* goes.
|
|
9
9
|
*
|
|
10
10
|
* The current version is always kept. A permanent deletion keeps no history:
|
|
11
|
-
* every version before it goes when it is accepted.
|
|
11
|
+
* every version before it goes when it is accepted. A secret keeps none either:
|
|
12
|
+
* an old value someone replaced must not stay readable.
|
|
12
13
|
*
|
|
13
14
|
* Time is the authority's acceptance time, never a device clock. Because a
|
|
14
15
|
* version's end depends only on the versions after it, accepting version `k`
|
|
@@ -34,6 +35,8 @@ exports.VERSION_TRASH_MS = 30 * DAY_MS;
|
|
|
34
35
|
function keptUntil(next, tenth) {
|
|
35
36
|
return Math.max(next.acceptedAt + exports.KEEP_REPLACED_MS, tenth.acceptedAt);
|
|
36
37
|
}
|
|
38
|
+
/** Accepting this version ends every version before it, at once. */
|
|
39
|
+
const endsHistory = (version) => version.deleted || version.type === 'secret';
|
|
37
40
|
/**
|
|
38
41
|
* The one release accepting `version` fixes, or null when it fixes none yet.
|
|
39
42
|
* `versionAt` reads an earlier version of the same entity; only the one that
|
|
@@ -41,7 +44,7 @@ function keptUntil(next, tenth) {
|
|
|
41
44
|
*/
|
|
42
45
|
async function releaseFixedBy(version, versionAt) {
|
|
43
46
|
const { entityId, sequence, acceptedAt } = version;
|
|
44
|
-
if (version
|
|
47
|
+
if (endsHistory(version)) {
|
|
45
48
|
return sequence > 1 ? { entityId, through: sequence - 1, dueAt: acceptedAt } : null;
|
|
46
49
|
}
|
|
47
50
|
const leaving = sequence - exports.KEEP_NEWEST;
|
|
@@ -59,12 +62,12 @@ async function releaseFixedBy(version, versionAt) {
|
|
|
59
62
|
function judge(versions, now) {
|
|
60
63
|
const count = versions.length;
|
|
61
64
|
const last = versions[count - 1];
|
|
62
|
-
const
|
|
65
|
+
const endedAt = last !== undefined && endsHistory(last) ? last.acceptedAt : null;
|
|
63
66
|
return versions.map((version, index) => {
|
|
64
67
|
if (index === count - 1)
|
|
65
68
|
return { ...version, state: 'current', trashedAt: null, goneAt: null };
|
|
66
|
-
if (
|
|
67
|
-
return { ...version, state: 'gone', trashedAt:
|
|
69
|
+
if (endedAt !== null) {
|
|
70
|
+
return { ...version, state: 'gone', trashedAt: endedAt, goneAt: endedAt };
|
|
68
71
|
}
|
|
69
72
|
const next = versions[index + 1];
|
|
70
73
|
const tenth = versions[index + exports.KEEP_NEWEST];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/history/rule.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/history/rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,8 +58,11 @@ async function receiveTailPage(ports, authorityId, observe) {
|
|
|
58
58
|
return deliveries.length === exports.ENTITY_RECORD_DELIVERY_LIMIT;
|
|
59
59
|
}
|
|
60
60
|
/** One page of one entity's channel: its own dense history. The cursor is
|
|
61
|
-
* the Inbox cursor, a page after it can never gap
|
|
62
|
-
*
|
|
61
|
+
* the Inbox cursor, so a page after it can never gap. An entity that is its
|
|
62
|
+
* own authority, a construct, is that authority's whole history, so its page
|
|
63
|
+
* is also the authority's complete delivery prefix and Apply's line starts
|
|
64
|
+
* there. Any other entity is one among many, and its page moves no authority
|
|
65
|
+
* position. */
|
|
63
66
|
async function receiveEntityPage(ports, entityId, observe) {
|
|
64
67
|
const { store, authority, run } = ports;
|
|
65
68
|
const after = await run(() => store.readEntityCursor(entityId));
|
|
@@ -74,10 +77,11 @@ async function receiveEntityPage(ports, entityId, observe) {
|
|
|
74
77
|
if (deliveries.some((delivery) => delivery.record.entityId !== entityId)) {
|
|
75
78
|
throw new Error(`entity channel ${entityId} delivered another entity's record`);
|
|
76
79
|
}
|
|
80
|
+
const { authorityId } = deliveries[0].record;
|
|
77
81
|
const stored = await run(() => store.receive({
|
|
78
|
-
authorityId
|
|
82
|
+
authorityId,
|
|
79
83
|
deliveries,
|
|
80
|
-
advanceDeliveryCursor:
|
|
84
|
+
advanceDeliveryCursor: authorityId === entityId,
|
|
81
85
|
}));
|
|
82
86
|
if (stored.kind === 'gap') {
|
|
83
87
|
throw new Error(`entity ${entityId} is missing sequence ${stored.gap.after + 1}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receive-pages.js","sourceRoot":"","sources":["../../src/records/receive-pages.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAmBH,0CAwCC;
|
|
1
|
+
{"version":3,"file":"receive-pages.js","sourceRoot":"","sources":["../../src/records/receive-pages.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amalgm/live",
|
|
3
|
-
"version": "0.2.81-main.
|
|
3
|
+
"version": "0.2.81-main.41442331400",
|
|
4
4
|
"description": "Portable realtime SDK for Amalgm — wire contracts, mutation discipline, and delivery state machines behind host-injected adapters.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist-cjs/index.js",
|
|
@@ -143,11 +143,11 @@
|
|
|
143
143
|
"dependencies": {
|
|
144
144
|
"@amalgm/core": "0.5.1-main.41264319540"
|
|
145
145
|
},
|
|
146
|
-
"gitHead": "
|
|
146
|
+
"gitHead": "7d7b4f997eace310fdcd23b4d3df42ec373060c8",
|
|
147
147
|
"amalgmSource": {
|
|
148
148
|
"repository": "amalgm-inc/amalgm-live",
|
|
149
149
|
"branch": "main",
|
|
150
|
-
"commit": "
|
|
151
|
-
"occurrence": "
|
|
150
|
+
"commit": "7d7b4f997eace310fdcd23b4d3df42ec373060c8",
|
|
151
|
+
"occurrence": "41442331400"
|
|
152
152
|
}
|
|
153
153
|
}
|