@graview/core 0.1.53 → 0.1.55
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/alias-findings.d.ts +40 -0
- package/dist/alias-findings.d.ts.map +1 -0
- package/dist/alias-findings.js +95 -0
- package/dist/alias-findings.js.map +1 -0
- package/dist/app.d.ts +13 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js.map +1 -1
- package/dist/archived-seen.d.ts +51 -15
- package/dist/archived-seen.d.ts.map +1 -1
- package/dist/archived-seen.js +123 -28
- package/dist/archived-seen.js.map +1 -1
- package/dist/capabilities.js +1 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/catalog.d.ts +32 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +17 -1
- package/dist/catalog.js.map +1 -1
- package/dist/check.d.ts +2 -0
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +2 -0
- package/dist/check.js.map +1 -1
- package/dist/cli/check/aliases.d.ts +11 -0
- package/dist/cli/check/aliases.d.ts.map +1 -0
- package/dist/cli/check/aliases.js +17 -0
- package/dist/cli/check/aliases.js.map +1 -0
- package/dist/cli/check/context.d.ts +2 -0
- package/dist/cli/check/context.d.ts.map +1 -1
- package/dist/cli/check/context.js.map +1 -1
- package/dist/cli/check/index.d.ts +2 -0
- package/dist/cli/check/index.d.ts.map +1 -1
- package/dist/cli/check/index.js +2 -0
- package/dist/cli/check/index.js.map +1 -1
- package/dist/cli/check/jobs.d.ts +12 -0
- package/dist/cli/check/jobs.d.ts.map +1 -0
- package/dist/cli/check/jobs.js +25 -0
- package/dist/cli/check/jobs.js.map +1 -0
- package/dist/cli/check.d.ts +13 -0
- package/dist/cli/check.d.ts.map +1 -1
- package/dist/cli/check.js +25 -2
- package/dist/cli/check.js.map +1 -1
- package/dist/cli/describe.d.ts.map +1 -1
- package/dist/cli/describe.js +41 -0
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/document-schema.d.ts.map +1 -1
- package/dist/cli/document-schema.js +7 -0
- package/dist/cli/document-schema.js.map +1 -1
- package/dist/compose.d.ts +99 -0
- package/dist/compose.d.ts.map +1 -0
- package/dist/compose.js +245 -0
- package/dist/compose.js.map +1 -0
- package/dist/document/brand-check.d.ts +3 -0
- package/dist/document/brand-check.d.ts.map +1 -1
- package/dist/document/brand-check.js +21 -2
- package/dist/document/brand-check.js.map +1 -1
- package/dist/document/brand.d.ts.map +1 -1
- package/dist/document/brand.js +10 -2
- package/dist/document/brand.js.map +1 -1
- package/dist/document/compile-checked.d.ts.map +1 -1
- package/dist/document/compile-checked.js +13 -7
- package/dist/document/compile-checked.js.map +1 -1
- package/dist/document/compiled.d.ts.map +1 -1
- package/dist/document/compiled.js +6 -0
- package/dist/document/compiled.js.map +1 -1
- package/dist/document/design-findings.d.ts +32 -0
- package/dist/document/design-findings.d.ts.map +1 -0
- package/dist/document/design-findings.js +593 -0
- package/dist/document/design-findings.js.map +1 -0
- package/dist/document/diff.js +1 -1
- package/dist/document/diff.js.map +1 -1
- package/dist/document/edit.d.ts +1 -1
- package/dist/document/edit.d.ts.map +1 -1
- package/dist/document/edit.js +255 -4
- package/dist/document/edit.js.map +1 -1
- package/dist/document/findings.d.ts +8 -2
- package/dist/document/findings.d.ts.map +1 -1
- package/dist/document/findings.js +4 -3
- package/dist/document/findings.js.map +1 -1
- package/dist/document/graview-template.d.ts +3 -3
- package/dist/document/purpose-spec.d.ts +37 -0
- package/dist/document/purpose-spec.d.ts.map +1 -0
- package/dist/document/purpose-spec.js +41 -0
- package/dist/document/purpose-spec.js.map +1 -0
- package/dist/document/schema.d.ts +32 -11
- package/dist/document/schema.d.ts.map +1 -1
- package/dist/document/schema.js +30 -0
- package/dist/document/schema.js.map +1 -1
- package/dist/document/to-document.d.ts.map +1 -1
- package/dist/document/to-document.js +5 -1
- package/dist/document/to-document.js.map +1 -1
- package/dist/document.schema.json +142 -2
- package/dist/friction-record.d.ts +52 -0
- package/dist/friction-record.d.ts.map +1 -0
- package/dist/friction-record.js +36 -0
- package/dist/friction-record.js.map +1 -0
- package/dist/friction.d.ts +209 -0
- package/dist/friction.d.ts.map +1 -0
- package/dist/friction.js +302 -0
- package/dist/friction.js.map +1 -0
- package/dist/graph/graph.d.ts.map +1 -1
- package/dist/graph/graph.js +20 -0
- package/dist/graph/graph.js.map +1 -1
- package/dist/history.d.ts +32 -0
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/job-findings.d.ts +39 -0
- package/dist/job-findings.d.ts.map +1 -0
- package/dist/job-findings.js +171 -0
- package/dist/job-findings.js.map +1 -0
- package/dist/job-shape.d.ts +57 -0
- package/dist/job-shape.d.ts.map +1 -0
- package/dist/job-shape.js +5 -0
- package/dist/job-shape.js.map +1 -0
- package/dist/jobs.d.ts +62 -0
- package/dist/jobs.d.ts.map +1 -0
- package/dist/jobs.js +112 -0
- package/dist/jobs.js.map +1 -0
- package/dist/learn.d.ts +151 -0
- package/dist/learn.d.ts.map +1 -0
- package/dist/learn.js +520 -0
- package/dist/learn.js.map +1 -0
- package/dist/past.d.ts +37 -2
- package/dist/past.d.ts.map +1 -1
- package/dist/past.js +73 -13
- package/dist/past.js.map +1 -1
- package/dist/schema/types.d.ts +9 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +2 -0
- package/dist/search.js.map +1 -1
- package/dist/seat.d.ts +3 -2
- package/dist/seat.d.ts.map +1 -1
- package/dist/seat.js +3 -2
- package/dist/seat.js.map +1 -1
- package/dist/subscriptions.d.ts +5 -0
- package/dist/subscriptions.d.ts.map +1 -1
- package/dist/subscriptions.js +46 -1
- package/dist/subscriptions.js.map +1 -1
- package/dist/theme/accent.d.ts +8 -6
- package/dist/theme/accent.d.ts.map +1 -1
- package/dist/theme/accent.js +29 -23
- package/dist/theme/accent.js.map +1 -1
- package/dist/theme/ground-check.d.ts +27 -0
- package/dist/theme/ground-check.d.ts.map +1 -0
- package/dist/theme/ground-check.js +81 -0
- package/dist/theme/ground-check.js.map +1 -0
- package/dist/theme/ground.d.ts +42 -0
- package/dist/theme/ground.d.ts.map +1 -0
- package/dist/theme/ground.js +101 -0
- package/dist/theme/ground.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +20 -2
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { GraviewApp } from "./app.js";
|
|
2
|
+
import type { GraviewDocument } from "./document/schema.js";
|
|
3
|
+
import { type Finding } from "./document/findings.js";
|
|
4
|
+
import type { AnySchema } from "./schema/schema.js";
|
|
5
|
+
/** A kind as its aliases are judged: what it is called, and each field's name, label and aliases. */
|
|
6
|
+
export interface AliasKind {
|
|
7
|
+
readonly kind: string;
|
|
8
|
+
readonly names: readonly string[];
|
|
9
|
+
readonly aliases: readonly string[];
|
|
10
|
+
readonly fields: readonly {
|
|
11
|
+
readonly field: string;
|
|
12
|
+
readonly names: readonly string[];
|
|
13
|
+
readonly aliases: readonly string[];
|
|
14
|
+
readonly declared: boolean;
|
|
15
|
+
}[];
|
|
16
|
+
}
|
|
17
|
+
export type AliasFindingCode = "alias-taken" | "alias-field";
|
|
18
|
+
export interface AliasFinding {
|
|
19
|
+
readonly code: AliasFindingCode;
|
|
20
|
+
readonly kind: string;
|
|
21
|
+
readonly field?: string;
|
|
22
|
+
/** Which alias, by its place in the list. */
|
|
23
|
+
readonly index?: number;
|
|
24
|
+
readonly message: string;
|
|
25
|
+
readonly fix: string;
|
|
26
|
+
}
|
|
27
|
+
/** A word as two of them are compared: lower case, whitespace folded. */
|
|
28
|
+
export declare const aliasWord: (word: string) => string;
|
|
29
|
+
export declare function aliasFindings(kinds: readonly AliasKind[]): AliasFinding[];
|
|
30
|
+
/** A document's kinds, as their aliases are judged. */
|
|
31
|
+
export declare function aliasKindsOfDocument(document: GraviewDocument): AliasKind[];
|
|
32
|
+
/** An app's kinds, as their aliases are judged: each definition's `aliases`, and its `fieldAliases` beside its fields. */
|
|
33
|
+
export declare function aliasKindsOfSchema(schema: AnySchema): AliasKind[];
|
|
34
|
+
/** A document's aliases judged, each at its path. */
|
|
35
|
+
export declare function documentAliasFindings(document: GraviewDocument): Finding[];
|
|
36
|
+
/** An app's aliases judged, each where `defineNode` says it. */
|
|
37
|
+
export declare function appAliasFindings(app: Pick<GraviewApp, "schema">): readonly (AliasFinding & {
|
|
38
|
+
readonly where: string;
|
|
39
|
+
})[];
|
|
40
|
+
//# sourceMappingURL=alias-findings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alias-findings.d.ts","sourceRoot":"","sources":["../src/alias-findings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAS,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAapD,qGAAqG;AACrG,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC5J;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,aAAa,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,yEAAyE;AACzE,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAAwD,CAAC;AAQlG,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,YAAY,EAAE,CAqCzE;AAED,uDAAuD;AACvD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,EAAE,CAO3E;AAED,0HAA0H;AAC1H,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,CAYjE;AAED,qDAAqD;AACrD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,EAAE,CAI1E;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,YAAY,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAKxH"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { error } from "./document/findings.js";
|
|
2
|
+
import { humanizeField, nounOf, pluralOf } from "./schema/define-node.js";
|
|
3
|
+
/** A word as two of them are compared: lower case, whitespace folded. */
|
|
4
|
+
export const aliasWord = (word) => word.toLowerCase().replace(/\s+/g, " ").trim();
|
|
5
|
+
/** What a kind is called: its id, as written and spoken, its noun and its plural. */
|
|
6
|
+
const kindNames = (kind, noun, plural) => [...new Set([kind, humanizeField(kind), noun, plural].map(aliasWord))];
|
|
7
|
+
/** What a field is called: its name, as written and spoken, and its label. */
|
|
8
|
+
const fieldNames = (field, label) => [...new Set([field, humanizeField(field), ...(label ? [label] : [])].map(aliasWord))];
|
|
9
|
+
export function aliasFindings(kinds) {
|
|
10
|
+
const out = [];
|
|
11
|
+
// Who each word already belongs to, across the kinds: their names first, then their aliases.
|
|
12
|
+
const owner = new Map();
|
|
13
|
+
for (const one of kinds)
|
|
14
|
+
for (const name of one.names)
|
|
15
|
+
if (!owner.has(name))
|
|
16
|
+
owner.set(name, one.kind);
|
|
17
|
+
for (const one of kinds) {
|
|
18
|
+
const seen = new Set();
|
|
19
|
+
one.aliases.forEach((raw, index) => {
|
|
20
|
+
const word = aliasWord(raw);
|
|
21
|
+
const held = owner.get(word);
|
|
22
|
+
if (seen.has(word))
|
|
23
|
+
out.push({ code: "alias-taken", kind: one.kind, index, message: `"${word}" is said twice among ${one.kind}'s aliases`, fix: "say each word once" });
|
|
24
|
+
else if (held === one.kind)
|
|
25
|
+
out.push({ code: "alias-taken", kind: one.kind, index, message: `"${word}" is already what ${one.kind} is called, so it is no other word for it`, fix: "take it out of the aliases" });
|
|
26
|
+
else if (held !== undefined)
|
|
27
|
+
out.push({ code: "alias-taken", kind: one.kind, index, message: `"${word}" is what ${held} is called, so search could not tell ${one.kind} from it`, fix: `choose a word nothing else in the app is called, or take it out of ${one.kind}'s aliases` });
|
|
28
|
+
seen.add(word);
|
|
29
|
+
if (held === undefined)
|
|
30
|
+
owner.set(word, one.kind);
|
|
31
|
+
});
|
|
32
|
+
// A field's words within its kind: another field's name, label or alias is taken.
|
|
33
|
+
const fieldOwner = new Map();
|
|
34
|
+
for (const field of one.fields)
|
|
35
|
+
for (const name of field.names)
|
|
36
|
+
if (!fieldOwner.has(name))
|
|
37
|
+
fieldOwner.set(name, field.field);
|
|
38
|
+
for (const field of one.fields) {
|
|
39
|
+
if (!field.declared) {
|
|
40
|
+
out.push({ code: "alias-field", kind: one.kind, field: field.field, message: `${one.kind} has no field "${field.field}" to give other words`, fix: `name one of its fields, or take "${field.field}" out of fieldAliases` });
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const said = new Set();
|
|
44
|
+
field.aliases.forEach((raw, index) => {
|
|
45
|
+
const word = aliasWord(raw);
|
|
46
|
+
const held = fieldOwner.get(word);
|
|
47
|
+
if (said.has(word))
|
|
48
|
+
out.push({ code: "alias-taken", kind: one.kind, field: field.field, index, message: `"${word}" is said twice among ${one.kind}'s ${field.field}'s aliases`, fix: "say each word once" });
|
|
49
|
+
else if (held === field.field)
|
|
50
|
+
out.push({ code: "alias-taken", kind: one.kind, field: field.field, index, message: `"${word}" is already what ${one.kind}'s ${field.field} is called`, fix: "take it out of the aliases" });
|
|
51
|
+
else if (held !== undefined)
|
|
52
|
+
out.push({ code: "alias-taken", kind: one.kind, field: field.field, index, message: `"${word}" is what ${one.kind}'s ${held} is called, so it cannot also mean ${field.field}`, fix: `choose a word no other field of ${one.kind} is called` });
|
|
53
|
+
said.add(word);
|
|
54
|
+
if (held === undefined)
|
|
55
|
+
fieldOwner.set(word, field.field);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return out;
|
|
60
|
+
}
|
|
61
|
+
/** A document's kinds, as their aliases are judged. */
|
|
62
|
+
export function aliasKindsOfDocument(document) {
|
|
63
|
+
return Object.entries(document.kinds).map(([kind, spec]) => ({
|
|
64
|
+
kind,
|
|
65
|
+
names: kindNames(kind, spec.noun ?? humanizeField(kind).toLowerCase(), spec.plural ?? `${kind}s`),
|
|
66
|
+
aliases: spec.aliases ?? [],
|
|
67
|
+
fields: Object.entries(spec.fields).map(([field, f]) => ({ field, names: fieldNames(field, f.label), aliases: f.aliases ?? [], declared: true })),
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
/** An app's kinds, as their aliases are judged: each definition's `aliases`, and its `fieldAliases` beside its fields. */
|
|
71
|
+
export function aliasKindsOfSchema(schema) {
|
|
72
|
+
return schema.kinds.map((kind) => {
|
|
73
|
+
const definition = schema.tryDefinition(kind);
|
|
74
|
+
const shape = Object.keys(definition?.fields?.shape ?? {}).filter((field) => field !== "id" && field !== "kind");
|
|
75
|
+
const aliased = Object.keys(definition?.fieldAliases ?? {});
|
|
76
|
+
return {
|
|
77
|
+
kind,
|
|
78
|
+
names: kindNames(kind, nounOf(definition, kind), pluralOf(schema, kind)),
|
|
79
|
+
aliases: definition?.aliases ?? [],
|
|
80
|
+
fields: [...new Set([...shape, ...aliased])].map((field) => ({ field, names: fieldNames(field, definition?.display?.labels?.[field]), aliases: definition?.fieldAliases?.[field] ?? [], declared: shape.includes(field) })),
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/** A document's aliases judged, each at its path. */
|
|
85
|
+
export function documentAliasFindings(document) {
|
|
86
|
+
return aliasFindings(aliasKindsOfDocument(document)).map((finding) => error(finding.code, `kinds.${finding.kind}${finding.field ? `.fields.${finding.field}` : ""}.aliases${finding.index === undefined ? "" : `.${finding.index}`}`, finding.message, finding.fix));
|
|
87
|
+
}
|
|
88
|
+
/** An app's aliases judged, each where `defineNode` says it. */
|
|
89
|
+
export function appAliasFindings(app) {
|
|
90
|
+
return aliasFindings(aliasKindsOfSchema(app.schema)).map((finding) => ({
|
|
91
|
+
...finding,
|
|
92
|
+
where: `defineNode("${finding.kind}").${finding.field ? `fieldAliases.${finding.field}` : "aliases"}${finding.index === undefined ? "" : `[${finding.index}]`}`,
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=alias-findings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alias-findings.js","sourceRoot":"","sources":["../src/alias-findings.ts"],"names":[],"mappings":"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"}
|
package/dist/app.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ import type { ViewRegistry } from "./views/types.js";
|
|
|
13
13
|
import type { HomeView, ViewSpecsByKind } from "./document/views.js";
|
|
14
14
|
import type { PagesArrangement } from "./views/types.js";
|
|
15
15
|
import type { VisitorFormDeclaration } from "./visitor-form-shape.js";
|
|
16
|
+
import type { AppPurpose } from "./job-shape.js";
|
|
16
17
|
/**
|
|
17
18
|
* Everything one application declares, in one object. `graview check` and
|
|
18
19
|
* the docs generator both read exactly this — an app that can be checked is
|
|
@@ -283,6 +284,18 @@ export interface GraviewApp<S extends AnySchema = AnySchema> {
|
|
|
283
284
|
* form's role (`visitor`) its act, and name it in no sight.
|
|
284
285
|
*/
|
|
285
286
|
readonly forms?: Readonly<Record<string, VisitorFormDeclaration>>;
|
|
287
|
+
/**
|
|
288
|
+
* WHO IT IS FOR AND WHAT THEY COME TO DO (Roadmap f-app-jobs): a sentence
|
|
289
|
+
* about its people, and up to twelve jobs — a question in their words,
|
|
290
|
+
* answered by the records of one kind a rule-language condition holds for
|
|
291
|
+
* (`where`, the same words a document writes; the TypeScript path reads
|
|
292
|
+
* the rule language too), in an order, with the act they usually take
|
|
293
|
+
* next. `graview check` holds each to the declaration (`job-*`);
|
|
294
|
+
* `@graview/core/jobs` answers one as a seat may see it (`answerJob`).
|
|
295
|
+
*
|
|
296
|
+
* purpose: { for: "Two people sharing chores", jobs: [{ name: "due-today", ask: "What's due today?", kind: "task", where: "not done and due <= today()", sort: "due", act: "complete" }] }
|
|
297
|
+
*/
|
|
298
|
+
readonly purpose?: AppPurpose;
|
|
286
299
|
}
|
|
287
300
|
/**
|
|
288
301
|
* One thing a reader may set for themselves.
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAkXA;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,QAA6C,EAC7C,UAAkC;IAElC,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,IAAsB;IACnD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC/B,KAAK,UAAU;YACb,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,KAAK,KAAK,CAAC;QACX,KAAK,UAAU;YACb,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxC;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,kBAAkB,CAAC,UAAkC;IACnE,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,8BAA8B,CAAC;QACxC,KAAK,QAAQ;YACX,OAAO,sDAAsD,CAAC;QAChE,KAAK,SAAS;YACZ,OAAO,0CAA0C,CAAC;QACpD;YACE,OAAO,UAAU,CAAC;IACtB,CAAC;AACH,CAAC;AA+BD,MAAM,UAAU,SAAS,CAAsB,GAAkB;IAC/D,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/archived-seen.d.ts
CHANGED
|
@@ -6,23 +6,29 @@
|
|
|
6
6
|
* the records the seat may see, the fields its sight shows of them, the
|
|
7
7
|
* links between them, and who made only those.
|
|
8
8
|
*
|
|
9
|
-
* WHY THE
|
|
10
|
-
* checkpoint and the tail: the checkpoint keeps what kind each
|
|
11
|
-
* removed behind the horizon was (FR-199), which is enough for the
|
|
12
|
-
* and the tail, but an archived op is judged at its own moment — who
|
|
13
|
-
* touched, linked and named then, and who had written each field —
|
|
14
|
-
* only the ops before it say. So the seat is judged here
|
|
15
|
-
*
|
|
16
|
-
* tail after them, every epoch, and the graph as it stands now —
|
|
17
|
-
* judgment the seat's live log is served by, so the past it folds
|
|
18
|
-
* these epochs and ops meets the present it is served.
|
|
9
|
+
* WHY FROM WHERE THE ARCHIVE BEGINS. A compacted store's seat view judges
|
|
10
|
+
* from the checkpoint and the tail: the checkpoint keeps what kind each
|
|
11
|
+
* record removed behind the horizon was (FR-199), which is enough for the
|
|
12
|
+
* graph and the tail, but an archived op is judged at its own moment — who
|
|
13
|
+
* it touched, linked and named then, and who had written each field —
|
|
14
|
+
* which only the ops before it say. So the seat is judged here over a
|
|
15
|
+
* store of everything the archive holds: its ops from where it begins, the
|
|
16
|
+
* store's tail after them, every epoch, and the graph as it stands now —
|
|
17
|
+
* the same judgment the seat's live log is served by, so the past it folds
|
|
18
|
+
* from these epochs and ops meets the present it is served.
|
|
19
|
+
*
|
|
20
|
+
* An archive begins at seq 0, or AT AN EPOCH (FR-214) that keeps what was
|
|
21
|
+
* removed behind it and who wrote what (`removed`, `writers`): a host that
|
|
22
|
+
* keeps a plan's window of history makes one where the window begins
|
|
23
|
+
* (`archiveFrom`), deletes what lies behind it and keeps the one epoch, and
|
|
24
|
+
* the ops after it are judged as a compacted store judges its tail.
|
|
19
25
|
*
|
|
20
26
|
* Apart from the store and the page: a host's server reads it, so it is on
|
|
21
27
|
* `@graview/core/seat`, and imports nothing of the store's or the seat
|
|
22
28
|
* view's modules — it makes the whole store with the store's own class.
|
|
23
29
|
*/
|
|
24
30
|
import type { ArchivedOps } from "./history.js";
|
|
25
|
-
import type { Epoch } from "./ops/log.js";
|
|
31
|
+
import type { Epoch, LogArchive } from "./ops/log.js";
|
|
26
32
|
import type { Operation } from "./ops/types.js";
|
|
27
33
|
import type { Principal } from "./permissions/types.js";
|
|
28
34
|
import type { AnySchema } from "./schema/schema.js";
|
|
@@ -33,13 +39,21 @@ export interface ArchivedSeen {
|
|
|
33
39
|
readonly ops: readonly Operation[];
|
|
34
40
|
/** The epochs whose seq is in the range, each with its graph as the seat is served it. */
|
|
35
41
|
readonly epochs: readonly Epoch[];
|
|
42
|
+
/**
|
|
43
|
+
* WHERE THE ARCHIVE BEGINS, when the range reaches behind it (FR-214):
|
|
44
|
+
* the seq of the epoch it begins at, before which it holds no op — the
|
|
45
|
+
* answer's `ArchivedOps.keptFrom`, so playback steps the past behind it
|
|
46
|
+
* by the epochs it kept rather than say it was refused.
|
|
47
|
+
*/
|
|
48
|
+
readonly keptFrom?: number;
|
|
36
49
|
}
|
|
37
50
|
/**
|
|
38
51
|
* THE ARCHIVE OF A RANGE AS ONE SEAT MAY SEE IT (FR-198): for seqs `from`
|
|
39
52
|
* up to but not including `to`, the ops and the epochs `archive` holds —
|
|
40
53
|
* what `store.compact` returned, every compaction's together, with its ops
|
|
41
|
-
* from seq 0
|
|
42
|
-
* store's policy and modules as
|
|
54
|
+
* from seq 0 (or from the epoch it begins at, FR-214) to the store's
|
|
55
|
+
* horizon — judged for `principal` under the store's policy and modules as
|
|
56
|
+
* its view of the whole history judges:
|
|
43
57
|
*
|
|
44
58
|
* - every op of the range at its seq, one that touched what the seat may
|
|
45
59
|
* not see withheld and none naming such a record anywhere (FR-16,
|
|
@@ -54,11 +68,33 @@ export interface ArchivedSeen {
|
|
|
54
68
|
* The answer is a `HistoryHost.archived` answer, and a seat's playback
|
|
55
69
|
* folding from its epochs draws only what the seat may see. `store` is the
|
|
56
70
|
* app as it stands, compacted or not (a seat's view is read as the store
|
|
57
|
-
* behind it).
|
|
58
|
-
*
|
|
71
|
+
* behind it). A range that reaches behind the epoch an archive begins at
|
|
72
|
+
* is answered with no op there and `keptFrom`, the epoch's seq, with the
|
|
73
|
+
* epochs before it that keep what was removed behind them, each judged on
|
|
74
|
+
* its own. An archive with a gap and no such epoch after it is refused,
|
|
75
|
+
* since what the gap held could not be judged.
|
|
59
76
|
*/
|
|
60
77
|
export declare function archivedSeenBy<S extends AnySchema>(store: Store<S>, archive: ArchivedOps, principal: Principal, range: {
|
|
61
78
|
readonly from: number;
|
|
62
79
|
readonly to: number;
|
|
63
80
|
}): ArchivedSeen;
|
|
81
|
+
/**
|
|
82
|
+
* THE ARCHIVE FROM AN EPOCH AT `seq` (FR-214): what a host keeps when it
|
|
83
|
+
* keeps a plan's window of history — the epoch the app stood at there,
|
|
84
|
+
* keeping who made each record behind it, what each record removed behind
|
|
85
|
+
* it was and who wrote each field naming a record (`creators`, `removed`,
|
|
86
|
+
* `writers`, FR-199), then the ops and the epochs `archive` holds from it
|
|
87
|
+
* to the store's horizon. Everything behind it can be deleted: an archive
|
|
88
|
+
* that begins at the epoch serves a seat every range after it as the whole
|
|
89
|
+
* one did (`archivedSeenBy`), and makes the same epoch again later.
|
|
90
|
+
*
|
|
91
|
+
* `seq` is any seq from where `archive` begins to the store's horizon,
|
|
92
|
+
* moved back to the start of the gesture it would split, as a checkpoint
|
|
93
|
+
* is (`store.checkpoint`); the epoch says where it landed. At the horizon
|
|
94
|
+
* it is the store's own checkpoint made again from the archive — how a
|
|
95
|
+
* host mends a checkpoint written before it kept `removed` and `writers`.
|
|
96
|
+
* Before the epoch an archive begins at, what made the records is gone,
|
|
97
|
+
* and it is refused.
|
|
98
|
+
*/
|
|
99
|
+
export declare function archiveFrom<S extends AnySchema>(store: Store<S>, archive: ArchivedOps, seq: number): LogArchive;
|
|
64
100
|
//# sourceMappingURL=archived-seen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archived-seen.d.ts","sourceRoot":"","sources":["../src/archived-seen.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"archived-seen.d.ts","sourceRoot":"","sources":["../src/archived-seen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAU,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAgB,MAAM,YAAY,CAAC;AAEtD,0JAA0J;AAC1J,MAAM,WAAW,YAAY;IAC3B,+HAA+H;IAC/H,QAAQ,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,CAAC;IACnC,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AA8HD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAgBpL;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAmB/G"}
|
package/dist/archived-seen.js
CHANGED
|
@@ -9,12 +9,39 @@ const unmarked = (epoch) => {
|
|
|
9
9
|
return rest;
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* WHERE AN ARCHIVE BEGINS (FR-214): seq 0 when its ops reach back there
|
|
13
|
+
* without a gap; else the earliest epoch it holds that keeps what was
|
|
14
|
+
* removed behind it (`removed`, FR-199) and from which its ops reach the
|
|
15
|
+
* horizon without one. An archive with neither is refused, naming the
|
|
16
|
+
* newest change missing: a record made and removed there would be judged
|
|
17
|
+
* by nothing.
|
|
16
18
|
*/
|
|
17
|
-
function
|
|
19
|
+
function beginningOf(archive, horizon) {
|
|
20
|
+
const behind = new Map();
|
|
21
|
+
for (const op of archive.ops)
|
|
22
|
+
if (Number.isInteger(op?.seq) && op.seq >= 0 && op.seq < horizon && !behind.has(op.seq))
|
|
23
|
+
behind.set(op.seq, op);
|
|
24
|
+
let reached = horizon;
|
|
25
|
+
while (reached > 0 && behind.has(reached - 1))
|
|
26
|
+
reached--;
|
|
27
|
+
if (reached === 0)
|
|
28
|
+
return { seq: 0, epoch: undefined, behind };
|
|
29
|
+
const epoch = (archive.epochs ?? [])
|
|
30
|
+
.filter((one) => Number.isInteger(one?.seq) && one.seq >= reached && one.seq <= horizon && one.base && one.removed !== undefined)
|
|
31
|
+
.sort((a, b) => a.seq - b.seq)[0];
|
|
32
|
+
if (!epoch) {
|
|
33
|
+
throw new RangeError(`The archive is missing the change at seq ${reached - 1}, and no epoch after it keeps what was removed behind it: a seat's view of the archive is judged from where it begins, and without it a record made and removed there could be named to a seat that may not see it`);
|
|
34
|
+
}
|
|
35
|
+
return { seq: epoch.seq, epoch, behind };
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* THE STORE OF EVERYTHING THE ARCHIVE HOLDS: its ops from where it begins
|
|
39
|
+
* — seq 0, or the epoch that keeps what lay behind it, which the store
|
|
40
|
+
* begins at as a compacted store begins at its checkpoint — then the
|
|
41
|
+
* store's tail, every epoch after the beginning, and the graph the store
|
|
42
|
+
* holds now.
|
|
43
|
+
*/
|
|
44
|
+
function wholeOf(store, archive, validate = false) {
|
|
18
45
|
const log = store.log;
|
|
19
46
|
const horizon = log.horizon;
|
|
20
47
|
const tail = log.all();
|
|
@@ -22,27 +49,23 @@ function wholeOf(store, archive) {
|
|
|
22
49
|
if (!kept)
|
|
23
50
|
WHOLE.set(archive, (kept = new WeakMap()));
|
|
24
51
|
const held = kept.get(store);
|
|
25
|
-
if (held && held.length === log.length && held.horizon === horizon && held.last === tail.at(-1))
|
|
52
|
+
if (held && held.length === log.length && held.horizon === horizon && held.last === tail.at(-1) && held.validate === validate)
|
|
26
53
|
return held.store;
|
|
27
|
-
const
|
|
28
|
-
for (const op of archive.ops)
|
|
29
|
-
if (Number.isInteger(op?.seq) && op.seq >= 0 && op.seq < horizon && !behind.has(op.seq))
|
|
30
|
-
behind.set(op.seq, op);
|
|
54
|
+
const begins = beginningOf(archive, horizon);
|
|
31
55
|
const ops = [];
|
|
32
|
-
for (let seq =
|
|
33
|
-
|
|
34
|
-
if (!op) {
|
|
35
|
-
throw new RangeError(`The archive is missing the change at seq ${seq}: a seat's view of the archive is judged from the whole history, and without it a record made and removed there could be named to a seat that may not see it`);
|
|
36
|
-
}
|
|
37
|
-
ops.push(op);
|
|
38
|
-
}
|
|
56
|
+
for (let seq = begins.seq; seq < horizon; seq++)
|
|
57
|
+
ops.push(begins.behind.get(seq));
|
|
39
58
|
ops.push(...tail);
|
|
40
59
|
const epochs = new Map();
|
|
60
|
+
// The epoch it begins at is its checkpoint, as a compacted store's is: what was removed and written behind it is judged by.
|
|
61
|
+
if (begins.epoch)
|
|
62
|
+
epochs.set(begins.seq, { ...begins.epoch, horizon: true });
|
|
41
63
|
for (const epoch of archive.epochs ?? [])
|
|
42
|
-
if (Number.isInteger(epoch?.seq) && epoch.seq < horizon && epoch.base && !epochs.has(epoch.seq))
|
|
64
|
+
if (Number.isInteger(epoch?.seq) && epoch.seq >= begins.seq && epoch.seq < horizon && epoch.base && !epochs.has(epoch.seq))
|
|
43
65
|
epochs.set(epoch.seq, unmarked(epoch));
|
|
44
66
|
for (const epoch of log.epochs())
|
|
45
|
-
|
|
67
|
+
if (!begins.epoch || epoch.seq > begins.seq)
|
|
68
|
+
epochs.set(epoch.seq, unmarked(epoch));
|
|
46
69
|
const inside = store;
|
|
47
70
|
// The store's own class, so this module imports none of it (`seat-of.ts` says why).
|
|
48
71
|
const Made = store.constructor;
|
|
@@ -58,18 +81,39 @@ function wholeOf(store, archive) {
|
|
|
58
81
|
log: ops,
|
|
59
82
|
epochs: [...epochs.values()].sort((a, b) => a.seq - b.seq),
|
|
60
83
|
snapshot: store.graph.snapshot(),
|
|
61
|
-
validate
|
|
84
|
+
validate,
|
|
62
85
|
now: inside.now,
|
|
63
86
|
});
|
|
64
|
-
kept.set(store, { length: log.length, horizon, last: tail.at(-1), store: whole });
|
|
87
|
+
kept.set(store, { length: log.length, horizon, last: tail.at(-1), validate, store: whole });
|
|
65
88
|
return whole;
|
|
66
89
|
}
|
|
90
|
+
/** An epoch behind where the archive begins, as the seat is served it: judged on its own, as a store opened on it alone judges it. One that keeps no `removed` cannot be, and is left out. */
|
|
91
|
+
function servedAlone(store, epoch, principal) {
|
|
92
|
+
if (epoch.removed === undefined)
|
|
93
|
+
return undefined;
|
|
94
|
+
const inside = store;
|
|
95
|
+
const Made = store.constructor;
|
|
96
|
+
const alone = new Made({
|
|
97
|
+
schema: store.schema,
|
|
98
|
+
...given("policy", store.policy),
|
|
99
|
+
...given("modules", inside.declaredModules),
|
|
100
|
+
...given("enabledModules", inside.startingModules),
|
|
101
|
+
principal: inside.by,
|
|
102
|
+
log: [],
|
|
103
|
+
epochs: [{ ...epoch, horizon: true }],
|
|
104
|
+
snapshot: epoch.base,
|
|
105
|
+
validate: false,
|
|
106
|
+
now: inside.now,
|
|
107
|
+
});
|
|
108
|
+
return unmarked(alone.seenBy(principal).log.epochs()[0]);
|
|
109
|
+
}
|
|
67
110
|
/**
|
|
68
111
|
* THE ARCHIVE OF A RANGE AS ONE SEAT MAY SEE IT (FR-198): for seqs `from`
|
|
69
112
|
* up to but not including `to`, the ops and the epochs `archive` holds —
|
|
70
113
|
* what `store.compact` returned, every compaction's together, with its ops
|
|
71
|
-
* from seq 0
|
|
72
|
-
* store's policy and modules as
|
|
114
|
+
* from seq 0 (or from the epoch it begins at, FR-214) to the store's
|
|
115
|
+
* horizon — judged for `principal` under the store's policy and modules as
|
|
116
|
+
* its view of the whole history judges:
|
|
73
117
|
*
|
|
74
118
|
* - every op of the range at its seq, one that touched what the seat may
|
|
75
119
|
* not see withheld and none naming such a record anywhere (FR-16,
|
|
@@ -84,8 +128,11 @@ function wholeOf(store, archive) {
|
|
|
84
128
|
* The answer is a `HistoryHost.archived` answer, and a seat's playback
|
|
85
129
|
* folding from its epochs draws only what the seat may see. `store` is the
|
|
86
130
|
* app as it stands, compacted or not (a seat's view is read as the store
|
|
87
|
-
* behind it).
|
|
88
|
-
*
|
|
131
|
+
* behind it). A range that reaches behind the epoch an archive begins at
|
|
132
|
+
* is answered with no op there and `keptFrom`, the epoch's seq, with the
|
|
133
|
+
* epochs before it that keep what was removed behind them, each judged on
|
|
134
|
+
* its own. An archive with a gap and no such epoch after it is refused,
|
|
135
|
+
* since what the gap held could not be judged.
|
|
89
136
|
*/
|
|
90
137
|
export function archivedSeenBy(store, archive, principal, range) {
|
|
91
138
|
const seat = seatOf(store);
|
|
@@ -95,10 +142,58 @@ export function archivedSeenBy(store, archive, principal, range) {
|
|
|
95
142
|
if (!Number.isInteger(from) || !Number.isInteger(to) || from < 0 || to < from)
|
|
96
143
|
throw new RangeError(`No range from seq ${from} to seq ${to}`);
|
|
97
144
|
const view = wholeOf(store, archive).seenBy(principal);
|
|
145
|
+
const begins = view.log.horizon;
|
|
98
146
|
const ops = view.log.all();
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
147
|
+
const at = (seq) => Math.min(Math.max(seq - begins, 0), ops.length);
|
|
148
|
+
const epochs = view.log.epochs().filter((epoch) => epoch.seq >= from && epoch.seq < to);
|
|
149
|
+
if (from >= begins)
|
|
150
|
+
return { ops: ops.slice(at(from), at(to)), epochs };
|
|
151
|
+
const earlier = (archive.epochs ?? [])
|
|
152
|
+
.filter((epoch) => Number.isInteger(epoch?.seq) && epoch.seq >= from && epoch.seq < Math.min(to, begins) && epoch.base)
|
|
153
|
+
.sort((a, b) => a.seq - b.seq)
|
|
154
|
+
.flatMap((epoch) => servedAlone(store, epoch, principal) ?? []);
|
|
155
|
+
return { ops: ops.slice(at(from), at(to)), epochs: [...earlier, ...epochs], keptFrom: begins };
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* THE ARCHIVE FROM AN EPOCH AT `seq` (FR-214): what a host keeps when it
|
|
159
|
+
* keeps a plan's window of history — the epoch the app stood at there,
|
|
160
|
+
* keeping who made each record behind it, what each record removed behind
|
|
161
|
+
* it was and who wrote each field naming a record (`creators`, `removed`,
|
|
162
|
+
* `writers`, FR-199), then the ops and the epochs `archive` holds from it
|
|
163
|
+
* to the store's horizon. Everything behind it can be deleted: an archive
|
|
164
|
+
* that begins at the epoch serves a seat every range after it as the whole
|
|
165
|
+
* one did (`archivedSeenBy`), and makes the same epoch again later.
|
|
166
|
+
*
|
|
167
|
+
* `seq` is any seq from where `archive` begins to the store's horizon,
|
|
168
|
+
* moved back to the start of the gesture it would split, as a checkpoint
|
|
169
|
+
* is (`store.checkpoint`); the epoch says where it landed. At the horizon
|
|
170
|
+
* it is the store's own checkpoint made again from the archive — how a
|
|
171
|
+
* host mends a checkpoint written before it kept `removed` and `writers`.
|
|
172
|
+
* Before the epoch an archive begins at, what made the records is gone,
|
|
173
|
+
* and it is refused.
|
|
174
|
+
*/
|
|
175
|
+
export function archiveFrom(store, archive, seq) {
|
|
176
|
+
const seat = seatOf(store);
|
|
177
|
+
if (seat)
|
|
178
|
+
return archiveFrom(seat.store, archive, seq);
|
|
179
|
+
const horizon = store.log.horizon;
|
|
180
|
+
if (!Number.isInteger(seq) || seq < 0 || seq > horizon)
|
|
181
|
+
throw new RangeError(`No epoch at seq ${seq}: an archive holds the seqs before the horizon at seq ${horizon}`);
|
|
182
|
+
// Folded as the store folds a checkpoint it makes, so a default filled in on the way in is in the epoch.
|
|
183
|
+
const whole = wholeOf(store, archive, store.validate);
|
|
184
|
+
const begins = whole.log.horizon;
|
|
185
|
+
if (seq < begins)
|
|
186
|
+
throw new RangeError(`The archive begins at seq ${begins}: no epoch before it can be made, since what made the records there is gone`);
|
|
187
|
+
// Where the archive begins is its own beginning: the epoch that keeps all it must, or the app before anything was made.
|
|
188
|
+
const beginning = () => {
|
|
189
|
+
if (begins > 0)
|
|
190
|
+
return whole.log.epochs()[0];
|
|
191
|
+
const { creators: _creators, removed: _removed, writers: _writers, ...start } = whole.log.checkpointAt(whole.schema, 0, { validate: store.validate });
|
|
192
|
+
return { ...start, removed: {} };
|
|
102
193
|
};
|
|
194
|
+
const epoch = (seq > begins ? whole.checkpoint({ seq }) : undefined) ?? beginning();
|
|
195
|
+
const ops = [...beginningOf(archive, horizon).behind.values()].filter((op) => op.seq >= epoch.seq).sort((a, b) => a.seq - b.seq);
|
|
196
|
+
const epochs = (archive.epochs ?? []).filter((one) => Number.isInteger(one?.seq) && one.seq > epoch.seq && one.seq < horizon && one.base).sort((a, b) => a.seq - b.seq);
|
|
197
|
+
return { ops, epochs: [epoch, ...epochs] };
|
|
103
198
|
}
|
|
104
199
|
//# sourceMappingURL=archived-seen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archived-seen.js","sourceRoot":"","sources":["../src/archived-seen.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"archived-seen.js","sourceRoot":"","sources":["../src/archived-seen.ts"],"names":[],"mappings":"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"}
|
package/dist/capabilities.js
CHANGED
|
@@ -17,7 +17,7 @@ export const WIRE_PROTOCOL = 1;
|
|
|
17
17
|
* id is named in the changeset that shipped it; `capabilities.test.ts`
|
|
18
18
|
* holds the two lists to each other.
|
|
19
19
|
*/
|
|
20
|
-
const SHIPPED = ["FR-01", "FR-02", "FR-03", "FR-04", "FR-05", "FR-06", "FR-07", "FR-08", "FR-09", "FR-10", "FR-11", "FR-12", "FR-13", "FR-15", "FR-16", "FR-17", "FR-18", "FR-19", "FR-20", "FR-21", "FR-22", "FR-23", "FR-24", "FR-25", "FR-26", "FR-27", "FR-28", "FR-29", "FR-30", "FR-31", "FR-32", "FR-33", "FR-34", "FR-35", "FR-36", "FR-37", "FR-38", "FR-39", "FR-40", "FR-41", "FR-42", "FR-43", "FR-44", "FR-45", "FR-46", "FR-47", "FR-49", "FR-50", "FR-51", "FR-52", "FR-53", "FR-54", "FR-55", "FR-56", "FR-57", "FR-58", "FR-59", "FR-60", "FR-61", "FR-62", "FR-63", "FR-64", "FR-65", "FR-66", "FR-67", "FR-68", "FR-69", "FR-70", "FR-71", "FR-72", "FR-73", "FR-74", "FR-75", "FR-76", "FR-77", "FR-78", "FR-79", "FR-80", "FR-81", "FR-82", "FR-83", "FR-84", "FR-85", "FR-86", "FR-87", "FR-88", "FR-89", "FR-90", "FR-91", "FR-92", "FR-93", "FR-94", "FR-95", "FR-96", "FR-97", "FR-99", "FR-100", "FR-101", "FR-102", "FR-103", "FR-104", "FR-105", "FR-106", "FR-107", "FR-108", "FR-109", "FR-110", "FR-111", "FR-112", "FR-113", "FR-114", "FR-115", "FR-116", "FR-117", "FR-118", "FR-119", "FR-120", "FR-121", "FR-122", "FR-123", "FR-124", "FR-125", "FR-126", "FR-127", "FR-128", "FR-129", "FR-130", "FR-131", "FR-132", "FR-133", "FR-134", "FR-136", "FR-137", "FR-138", "FR-139", "FR-140", "FR-141", "FR-142", "FR-143", "FR-144", "FR-145", "FR-146", "FR-147", "FR-148", "FR-149", "FR-150", "FR-151", "FR-152", "FR-153", "FR-154", "FR-155", "FR-156", "FR-157", "FR-158", "FR-159", "FR-160", "FR-161", "FR-162", "FR-163", "FR-164", "FR-165", "FR-166", "FR-167", "FR-168", "FR-169", "FR-170", "FR-171", "FR-172", "FR-173", "FR-174", "FR-175", "FR-176", "FR-177", "FR-178", "FR-179", "FR-180", "FR-181", "FR-182", "FR-183", "FR-184", "FR-185", "FR-186", "FR-187", "FR-188", "FR-189", "FR-190", "FR-191", "FR-192", "FR-193", "FR-194", "FR-195", "FR-196", "FR-197", "FR-198", "FR-199", "FR-200", "FR-201", "FR-202", "FR-204"];
|
|
20
|
+
const SHIPPED = ["FR-01", "FR-02", "FR-03", "FR-04", "FR-05", "FR-06", "FR-07", "FR-08", "FR-09", "FR-10", "FR-11", "FR-12", "FR-13", "FR-15", "FR-16", "FR-17", "FR-18", "FR-19", "FR-20", "FR-21", "FR-22", "FR-23", "FR-24", "FR-25", "FR-26", "FR-27", "FR-28", "FR-29", "FR-30", "FR-31", "FR-32", "FR-33", "FR-34", "FR-35", "FR-36", "FR-37", "FR-38", "FR-39", "FR-40", "FR-41", "FR-42", "FR-43", "FR-44", "FR-45", "FR-46", "FR-47", "FR-49", "FR-50", "FR-51", "FR-52", "FR-53", "FR-54", "FR-55", "FR-56", "FR-57", "FR-58", "FR-59", "FR-60", "FR-61", "FR-62", "FR-63", "FR-64", "FR-65", "FR-66", "FR-67", "FR-68", "FR-69", "FR-70", "FR-71", "FR-72", "FR-73", "FR-74", "FR-75", "FR-76", "FR-77", "FR-78", "FR-79", "FR-80", "FR-81", "FR-82", "FR-83", "FR-84", "FR-85", "FR-86", "FR-87", "FR-88", "FR-89", "FR-90", "FR-91", "FR-92", "FR-93", "FR-94", "FR-95", "FR-96", "FR-97", "FR-99", "FR-100", "FR-101", "FR-102", "FR-103", "FR-104", "FR-105", "FR-106", "FR-107", "FR-108", "FR-109", "FR-110", "FR-111", "FR-112", "FR-113", "FR-114", "FR-115", "FR-116", "FR-117", "FR-118", "FR-119", "FR-120", "FR-121", "FR-122", "FR-123", "FR-124", "FR-125", "FR-126", "FR-127", "FR-128", "FR-129", "FR-130", "FR-131", "FR-132", "FR-133", "FR-134", "FR-136", "FR-137", "FR-138", "FR-139", "FR-140", "FR-141", "FR-142", "FR-143", "FR-144", "FR-145", "FR-146", "FR-147", "FR-148", "FR-149", "FR-150", "FR-151", "FR-152", "FR-153", "FR-154", "FR-155", "FR-156", "FR-157", "FR-158", "FR-159", "FR-160", "FR-161", "FR-162", "FR-163", "FR-164", "FR-165", "FR-166", "FR-167", "FR-168", "FR-169", "FR-170", "FR-171", "FR-172", "FR-173", "FR-174", "FR-175", "FR-176", "FR-177", "FR-178", "FR-179", "FR-180", "FR-181", "FR-182", "FR-183", "FR-184", "FR-185", "FR-186", "FR-187", "FR-188", "FR-189", "FR-190", "FR-191", "FR-192", "FR-193", "FR-194", "FR-195", "FR-196", "FR-197", "FR-198", "FR-199", "FR-200", "FR-201", "FR-202", "FR-204", "FR-205", "FR-206", "FR-207", "FR-209", "FR-210", "FR-211", "FR-212", "FR-213", "FR-214"];
|
|
21
21
|
/**
|
|
22
22
|
* The declaration-document formats `@graview/core/document` parses, as
|
|
23
23
|
* `<format>@<version>`. Said here rather than imported, so the main entry
|
package/dist/capabilities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"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"}
|