@graview/core 0.1.53 → 0.1.54
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/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/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.js +2 -2
- package/dist/document/compile-checked.js.map +1 -1
- package/dist/document/diff.js +1 -1
- package/dist/document/diff.js.map +1 -1
- package/dist/document/edit.d.ts.map +1 -1
- package/dist/document/edit.js +24 -2
- package/dist/document/edit.js.map +1 -1
- package/dist/document/schema.d.ts +8 -0
- package/dist/document/schema.d.ts.map +1 -1
- package/dist/document/schema.js +14 -0
- package/dist/document/schema.js.map +1 -1
- package/dist/document.schema.json +24 -2
- 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 +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- 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/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 +4 -2
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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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Ground } from "../theme/ground.js";
|
|
1
2
|
import { type Finding } from "./findings.js";
|
|
2
3
|
import type { BrandSpec } from "./schema.js";
|
|
3
4
|
export interface BrandCheckOptions {
|
|
@@ -14,6 +15,8 @@ export declare function emojiSentence(emoji: unknown, problem: string): string;
|
|
|
14
15
|
export declare function subtitleSentence(drawn: boolean): string;
|
|
15
16
|
/** What setting an emoji icon does, said the same by an edit and by the preview of a change. */
|
|
16
17
|
export declare function emojiIconSentence(emoji: string, hasLogo: boolean): string;
|
|
18
|
+
/** What setting a page background does, said the same by an edit and by the preview of a change. */
|
|
19
|
+
export declare function groundWords(ground: Ground): string;
|
|
17
20
|
export declare const EMOJI_FIX = "say { \"favicon\": { \"emoji\": \"\uD83C\uDFE1\" } } with one standard emoji; a skin tone, a flag or a joined emoji like \uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF3E counts as one";
|
|
18
21
|
export declare function brandFindings(brand: Partial<BrandSpec> | undefined, options?: BrandCheckOptions): Finding[];
|
|
19
22
|
//# sourceMappingURL=brand-check.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand-check.d.ts","sourceRoot":"","sources":["../../src/document/brand-check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"brand-check.d.ts","sourceRoot":"","sources":["../../src/document/brand-check.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAW7C,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qFAAqF;AACrF,eAAO,MAAM,oBAAoB,wFAAwF,CAAC;AAE1H,4GAA4G;AAC5G,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AACD,qHAAqH;AACrH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEvD;AACD,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAEzE;AACD,oGAAoG;AACpG,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIlD;AACD,eAAO,MAAM,SAAS,sLAAmI,CAAC;AAE1J,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,EAAE,CA6C/G"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { TIME_ZONE_FIX, timeZoneProblem } from "../days.js";
|
|
2
2
|
import { accentProblem, documentSchemes } from "../theme/accent.js";
|
|
3
|
+
import { groundProblem } from "../theme/ground-check.js";
|
|
3
4
|
import { fontProblem } from "../theme/fonts.js";
|
|
4
5
|
import { emojiProblem, markProblem } from "../theme/marks.js";
|
|
5
6
|
import { error, warning } from "./findings.js";
|
|
@@ -18,6 +19,13 @@ export function subtitleSentence(drawn) {
|
|
|
18
19
|
export function emojiIconSentence(emoji, hasLogo) {
|
|
19
20
|
return hasLogo ? `The app's page icon becomes ${emoji}.` : `The app's page icon and mark become ${emoji}.`;
|
|
20
21
|
}
|
|
22
|
+
/** What setting a page background does, said the same by an edit and by the preview of a change. */
|
|
23
|
+
export function groundWords(ground) {
|
|
24
|
+
const given = typeof ground === "string" ? { light: ground } : ground;
|
|
25
|
+
if (given.light && given.dark)
|
|
26
|
+
return `The app's page background becomes ${given.light}, and ${given.dark} in the dark.`;
|
|
27
|
+
return given.light ? `The app's page background becomes ${given.light}.` : `The app's page background in the dark becomes ${given.dark}.`;
|
|
28
|
+
}
|
|
21
29
|
export const EMOJI_FIX = 'say { "favicon": { "emoji": "🏡" } } with one standard emoji; a skin tone, a flag or a joined emoji like 👩🏽🌾 counts as one';
|
|
22
30
|
export function brandFindings(brand, options = {}) {
|
|
23
31
|
const out = [];
|
|
@@ -51,10 +59,21 @@ export function brandFindings(brand, options = {}) {
|
|
|
51
59
|
const unzoned = typeof brand.timeZone === "string" ? timeZoneProblem(brand.timeZone) : undefined;
|
|
52
60
|
if (unzoned)
|
|
53
61
|
out.push(error("brand-time-zone", `${at}.timeZone`, unzoned, TIME_ZONE_FIX));
|
|
62
|
+
/*
|
|
63
|
+
* A page background (Roadmap f-brand-ground) is judged as an accent is:
|
|
64
|
+
* the pair that would not read, its ratio, and a shade that would. A
|
|
65
|
+
* ground refused leaves the accent judged on Graview's.
|
|
66
|
+
*/
|
|
67
|
+
const ground = brand.ground ? groundProblem(brand.ground, brand.accent) : null;
|
|
68
|
+
if (brand.ground && ground) {
|
|
69
|
+
const fix = ground.suggestion ? `say { "ground": ${typeof brand.ground === "string" ? `"${ground.suggestion}"` : JSON.stringify({ ...brand.ground, [ground.scheme]: ground.suggestion }).replace(/,/g, ", ").replace(/:/g, ": ")} }` : "pick another color";
|
|
70
|
+
out.push(warning("brand-ground", `${at}.ground`, `${ground.sentence} The app keeps Graview's page background.`, fix));
|
|
71
|
+
}
|
|
72
|
+
const on = brand.ground && !ground ? brand.ground : undefined;
|
|
54
73
|
if (brand.accent) {
|
|
55
|
-
const refused = accentProblem(brand.accent);
|
|
74
|
+
const refused = accentProblem(brand.accent, on);
|
|
56
75
|
if (refused) {
|
|
57
|
-
const drawn = documentSchemes(brand.accent).ok ? "The app draws a shade it moved to read, not the color given." : "The app keeps Graview's colors.";
|
|
76
|
+
const drawn = documentSchemes(brand.accent, on).ok ? "The app draws a shade it moved to read, not the color given." : "The app keeps Graview's colors.";
|
|
58
77
|
out.push(warning("brand-accent", `${at}.accent`, `${refused.sentence} ${drawn}`, refused.suggestion ? `say { "accent": "${refused.suggestion}" }` : "pick another color"));
|
|
59
78
|
}
|
|
60
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand-check.js","sourceRoot":"","sources":["../../src/document/brand-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAgB,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAiBtC,qFAAqF;AACrF,MAAM,CAAC,MAAM,oBAAoB,GAAG,qFAAqF,CAAC;AAE1H,4GAA4G;AAC5G,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,OAAe;IAC3D,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,sCAAsC,OAAO,EAAE,CAAC;AAC7I,CAAC;AACD,qHAAqH;AACrH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,KAAK,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,gGAAgG,CAAC;AACvL,CAAC;AACD,gGAAgG;AAChG,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,OAAgB;IAC/D,OAAO,OAAO,CAAC,CAAC,CAAC,+BAA+B,KAAK,GAAG,CAAC,CAAC,CAAC,uCAAuC,KAAK,GAAG,CAAC;AAC7G,CAAC;AACD,MAAM,CAAC,MAAM,SAAS,GAAG,gIAAgI,CAAC;AAE1J,MAAM,UAAU,aAAa,CAAC,KAAqC,EAAE,UAA6B,EAAE;IAClG,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC;IACvB,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC;IACjC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,GAA2C;QACpD,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;QACjH,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;QAC/C,CAAC,WAAW,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC;KACxF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,OAAO,IAAI,sCAAsC,OAAO,EAAE,EAAE,wJAAwJ,CAAC,CAAC,CAAC;IACpR,CAAC;IACD,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,4FAA4F,CAAC,CAAC,CAAC;IAChP,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE,gBAAgB,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7H,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QACnE,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,eAAe,IAAI,EAAE,EAAE,OAAO,IAAI,yBAAyB,OAAO,EAAE,EAAE,2EAA2E,CAAC,CAAC,CAAC;IACrM,CAAC;IACD,oFAAoF;IACpF,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,IAAI,OAAO;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAC1F,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"brand-check.js","sourceRoot":"","sources":["../../src/document/brand-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/document/brand.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/document/brand.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAYnD,wBAAgB,OAAO,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAsC7E;AAED,qJAAqJ;AACrJ,wBAAgB,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAG5G"}
|
package/dist/document/brand.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SCHEMES } from "../theme/palettes.js";
|
|
2
2
|
import { documentSchemes } from "../theme/accent.js";
|
|
3
|
+
import { groundFailure, groundSchemes } from "../theme/ground.js";
|
|
3
4
|
import { stackOf } from "../theme/fonts.js";
|
|
4
5
|
import { warning } from "./findings.js";
|
|
5
6
|
import { logoParts } from "./logo.js";
|
|
@@ -15,7 +16,14 @@ import { logoParts } from "./logo.js";
|
|
|
15
16
|
*/
|
|
16
17
|
export function brandOf(document, findings) {
|
|
17
18
|
const spec = document.brand ?? {};
|
|
18
|
-
|
|
19
|
+
// A page background words would not read on is left off, as an unreadable accent is (Roadmap f-brand-ground).
|
|
20
|
+
let ground = spec.ground;
|
|
21
|
+
let derived = spec.accent ? documentSchemes(spec.accent, ground) : undefined;
|
|
22
|
+
if (ground && groundFailure(derived?.ok ? derived.schemes : groundSchemes(ground), spec.accent)) {
|
|
23
|
+
findings.push(warning("brand", "brand.ground", "words would not read on that page background, so the app keeps Graview's", "pick a lighter ground for the light scheme, a darker one for the dark"));
|
|
24
|
+
ground = undefined;
|
|
25
|
+
derived = spec.accent ? documentSchemes(spec.accent) : undefined;
|
|
26
|
+
}
|
|
19
27
|
// A color that cannot be read is not a reason to refuse an app: it wears the default colors and says why.
|
|
20
28
|
// The checker says which pair, its ratio and a shade that would pass (brand-check.ts, FR-126); a page says only this.
|
|
21
29
|
if (derived && !derived.ok)
|
|
@@ -30,7 +38,7 @@ export function brandOf(document, findings) {
|
|
|
30
38
|
: undefined;
|
|
31
39
|
return {
|
|
32
40
|
name,
|
|
33
|
-
schemes: derived?.ok ? derived.schemes : SCHEMES,
|
|
41
|
+
schemes: derived?.ok ? derived.schemes : ground ? groundSchemes(ground) : SCHEMES,
|
|
34
42
|
...(spec.currency ? { currency: spec.currency } : {}),
|
|
35
43
|
...(spec.locale ? { locale: spec.locale } : {}),
|
|
36
44
|
...(spec.timeZone ? { timeZone: spec.timeZone } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/document/brand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAgB,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAC,QAAyB,EAAE,QAAmB;IACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/document/brand.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,8 +40,8 @@ export function compileDocument(raw, options = {}) {
|
|
|
40
40
|
if (hasErrors(own))
|
|
41
41
|
return { ok: false, findings: [...compiled.findings, ...own] };
|
|
42
42
|
// Braces in a block's plain words (FR-99): asked here, with the checker, and not of a page that compiles without it.
|
|
43
|
-
// The checker's sentence for an accent (FR-126) says what the compile's did, and more: once is enough.
|
|
44
|
-
const said =
|
|
43
|
+
// The checker's sentence for an accent (FR-126) or a ground says what the compile's did, and more: once is enough.
|
|
44
|
+
const said = compiled.findings.filter((f) => !(f.code === "brand" && ((f.path === "brand.accent" && own.some((o) => o.code === "brand-accent")) || (f.path === "brand.ground" && own.some((o) => o.code === "brand-ground")))));
|
|
45
45
|
const findings = [...said, ...own, ...viewBraces(document.views, "views", undefined, document.lenses)];
|
|
46
46
|
const check = checkApp(app, options.views ? { views: options.views } : {});
|
|
47
47
|
for (const f of check.findings) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-checked.js","sourceRoot":"","sources":["../../src/document/compile-checked.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,YAAY,EAAoE,MAAM,cAAc,CAAC;AAC5J,OAAO,EAAE,SAAS,EAAgB,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;GAMG;AACH;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY,EAAE,UAA0B,EAAE;IACxE,MAAM,QAAQ,GAAG,2BAA2B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,oHAAoH;QACpH,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACxC,wFAAwF;QACxF,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACrD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1O,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IACnC,6FAA6F;IAC7F,sEAAsE;IACtE,2FAA2F;IAC3F,MAAM,GAAG,GAAG,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,kBAAkB,CAAC,QAAQ,EAAE,GAAY,CAAC,CAAC,CAAC;IACxX,IAAI,SAAS,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;IACnF,qHAAqH;IACrH,
|
|
1
|
+
{"version":3,"file":"compile-checked.js","sourceRoot":"","sources":["../../src/document/compile-checked.ts"],"names":[],"mappings":"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"}
|
package/dist/document/diff.js
CHANGED
|
@@ -180,7 +180,7 @@ export function diffDocuments(stored, proposed) {
|
|
|
180
180
|
sentences.push(`The ${noun} "${b[n].title ?? n}" changes.`);
|
|
181
181
|
}
|
|
182
182
|
sentences.push(...policySentences(before, after));
|
|
183
|
-
if (!same(before.brand?.accent, after.brand?.accent))
|
|
183
|
+
if (!same(before.brand?.accent, after.brand?.accent) || !same(before.brand?.ground, after.brand?.ground))
|
|
184
184
|
sentences.push("The app's colors change.");
|
|
185
185
|
sentences.push(...brandSentences(before.brand ?? {}, after.brand ?? {}, after.name));
|
|
186
186
|
// The app's money (FR-100) and its locale (FR-178), said apart from its colors.
|