@graview/core 0.1.29 → 0.1.30
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/app-places.d.ts +2 -2
- package/dist/app-places.d.ts.map +1 -1
- package/dist/app-places.js +53 -3
- package/dist/app-places.js.map +1 -1
- package/dist/app.d.ts +16 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js.map +1 -1
- package/dist/arrange.d.ts +3 -1
- package/dist/arrange.d.ts.map +1 -1
- package/dist/arrange.js +3 -1
- package/dist/arrange.js.map +1 -1
- package/dist/arrangement.d.ts +18 -0
- package/dist/arrangement.d.ts.map +1 -1
- package/dist/arrangement.js +34 -0
- package/dist/arrangement.js.map +1 -1
- package/dist/arranging.d.ts.map +1 -1
- package/dist/arranging.js +17 -6
- package/dist/arranging.js.map +1 -1
- package/dist/blocks.d.ts +1 -1
- package/dist/blocks.d.ts.map +1 -1
- package/dist/cli/check/brand.d.ts.map +1 -1
- package/dist/cli/check/brand.js +29 -1
- package/dist/cli/check/brand.js.map +1 -1
- package/dist/cli/check/lenses.d.ts.map +1 -1
- package/dist/cli/check/lenses.js +6 -1
- package/dist/cli/check/lenses.js.map +1 -1
- package/dist/cli/check/relations.d.ts +23 -0
- package/dist/cli/check/relations.d.ts.map +1 -1
- package/dist/cli/check/relations.js +53 -3
- package/dist/cli/check/relations.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +32 -0
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/describe.d.ts.map +1 -1
- package/dist/cli/describe.js +27 -4
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/doctor.d.ts +18 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +58 -5
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/document-schema.d.ts +2 -0
- package/dist/cli/document-schema.d.ts.map +1 -1
- package/dist/cli/document-schema.js +154 -5
- package/dist/cli/document-schema.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js +6 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/conformance/fixtures.d.ts.map +1 -1
- package/dist/conformance/fixtures.js +165 -0
- package/dist/conformance/fixtures.js.map +1 -1
- package/dist/coverage-words.d.ts +18 -0
- package/dist/coverage-words.d.ts.map +1 -0
- package/dist/coverage-words.js +18 -0
- package/dist/coverage-words.js.map +1 -0
- package/dist/document/act-findings.d.ts.map +1 -1
- package/dist/document/act-findings.js +21 -3
- package/dist/document/act-findings.js.map +1 -1
- package/dist/document/blocks.d.ts +20 -7
- package/dist/document/blocks.d.ts.map +1 -1
- package/dist/document/blocks.js +85 -15
- package/dist/document/blocks.js.map +1 -1
- package/dist/document/brand-check.d.ts +5 -0
- package/dist/document/brand-check.d.ts.map +1 -1
- package/dist/document/brand-check.js +16 -2
- package/dist/document/brand-check.js.map +1 -1
- package/dist/document/compile-checked.d.ts.map +1 -1
- package/dist/document/compile-checked.js +11 -4
- package/dist/document/compile-checked.js.map +1 -1
- package/dist/document/compile.d.ts +0 -2
- package/dist/document/compile.d.ts.map +1 -1
- package/dist/document/compile.js +19 -17
- package/dist/document/compile.js.map +1 -1
- package/dist/document/compiled.d.ts +2 -0
- package/dist/document/compiled.d.ts.map +1 -1
- package/dist/document/compiled.js +49 -12
- package/dist/document/compiled.js.map +1 -1
- package/dist/document/computed-values.d.ts +3 -0
- package/dist/document/computed-values.d.ts.map +1 -1
- package/dist/document/computed-values.js +12 -2
- package/dist/document/computed-values.js.map +1 -1
- package/dist/document/describe-coverage.d.ts +3 -0
- package/dist/document/describe-coverage.d.ts.map +1 -1
- package/dist/document/describe-coverage.js +12 -5
- package/dist/document/describe-coverage.js.map +1 -1
- package/dist/document/describe-place.d.ts.map +1 -1
- package/dist/document/describe-place.js +3 -1
- package/dist/document/describe-place.js.map +1 -1
- package/dist/document/diff.d.ts.map +1 -1
- package/dist/document/diff.js +39 -8
- 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 +251 -15
- package/dist/document/edit.js.map +1 -1
- package/dist/document/expr/evaluate.d.ts +25 -0
- package/dist/document/expr/evaluate.d.ts.map +1 -1
- package/dist/document/expr/evaluate.js +38 -0
- package/dist/document/expr/evaluate.js.map +1 -1
- package/dist/document/format-words.d.ts +1 -1
- package/dist/document/format-words.d.ts.map +1 -1
- package/dist/document/format-words.js +3 -1
- package/dist/document/format-words.js.map +1 -1
- package/dist/document/framework-path.d.ts +11 -0
- package/dist/document/framework-path.d.ts.map +1 -0
- package/dist/document/framework-path.js +122 -0
- package/dist/document/framework-path.js.map +1 -0
- package/dist/document/index.d.ts +2 -2
- package/dist/document/index.d.ts.map +1 -1
- package/dist/document/index.js +1 -1
- package/dist/document/index.js.map +1 -1
- package/dist/document/linked-findings.d.ts +5 -0
- package/dist/document/linked-findings.d.ts.map +1 -0
- package/dist/document/linked-findings.js +100 -0
- package/dist/document/linked-findings.js.map +1 -0
- package/dist/document/migrate.d.ts.map +1 -1
- package/dist/document/migrate.js +4 -1
- package/dist/document/migrate.js.map +1 -1
- package/dist/document/policy-words.d.ts +2 -0
- package/dist/document/policy-words.d.ts.map +1 -1
- package/dist/document/policy-words.js +16 -1
- package/dist/document/policy-words.js.map +1 -1
- package/dist/document/right-names.d.ts +10 -0
- package/dist/document/right-names.d.ts.map +1 -0
- package/dist/document/right-names.js +57 -0
- package/dist/document/right-names.js.map +1 -0
- package/dist/document/rules.d.ts.map +1 -1
- package/dist/document/rules.js +13 -5
- package/dist/document/rules.js.map +1 -1
- package/dist/document/schema.d.ts +80 -3
- package/dist/document/schema.d.ts.map +1 -1
- package/dist/document/schema.js +57 -7
- package/dist/document/schema.js.map +1 -1
- package/dist/document/template-parse.d.ts.map +1 -1
- package/dist/document/template-parse.js +36 -3
- package/dist/document/template-parse.js.map +1 -1
- package/dist/document/template.d.ts +13 -1
- package/dist/document/template.d.ts.map +1 -1
- package/dist/document/template.js +29 -9
- package/dist/document/template.js.map +1 -1
- package/dist/document/to-document.d.ts.map +1 -1
- package/dist/document/to-document.js +11 -0
- package/dist/document/to-document.js.map +1 -1
- package/dist/document/views.d.ts +36 -4
- package/dist/document/views.d.ts.map +1 -1
- package/dist/document/views.js +64 -21
- package/dist/document/views.js.map +1 -1
- package/dist/document.schema.json +1037 -51
- package/dist/field-sight.js +2 -2
- package/dist/field-sight.js.map +1 -1
- package/dist/forms.d.ts +1 -0
- package/dist/forms.d.ts.map +1 -1
- package/dist/forms.js +2 -0
- package/dist/forms.js.map +1 -1
- package/dist/graph/archived.d.ts +9 -0
- package/dist/graph/archived.d.ts.map +1 -1
- package/dist/graph/archived.js +9 -0
- package/dist/graph/archived.js.map +1 -1
- package/dist/graph/diff.d.ts +16 -0
- package/dist/graph/diff.d.ts.map +1 -1
- package/dist/graph/diff.js +18 -0
- package/dist/graph/diff.js.map +1 -1
- package/dist/graph/graph.d.ts.map +1 -1
- package/dist/graph/graph.js +5 -8
- package/dist/graph/graph.js.map +1 -1
- package/dist/grid-sort.d.ts +20 -0
- package/dist/grid-sort.d.ts.map +1 -0
- package/dist/grid-sort.js +58 -0
- package/dist/grid-sort.js.map +1 -0
- package/dist/history.d.ts +88 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +146 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +16 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -3
- package/dist/index.js.map +1 -1
- package/dist/kind-list.d.ts +78 -0
- package/dist/kind-list.d.ts.map +1 -0
- package/dist/kind-list.js +176 -0
- package/dist/kind-list.js.map +1 -0
- package/dist/linked.d.ts +95 -0
- package/dist/linked.d.ts.map +1 -0
- package/dist/linked.js +181 -0
- package/dist/linked.js.map +1 -0
- package/dist/mutations/derive-edits.d.ts.map +1 -1
- package/dist/mutations/derive-edits.js +89 -38
- package/dist/mutations/derive-edits.js.map +1 -1
- package/dist/mutations/derived-names.d.ts +3 -1
- package/dist/mutations/derived-names.d.ts.map +1 -1
- package/dist/mutations/derived-names.js +5 -3
- package/dist/mutations/derived-names.js.map +1 -1
- package/dist/mutations/edit-start.d.ts +28 -0
- package/dist/mutations/edit-start.d.ts.map +1 -0
- package/dist/mutations/edit-start.js +24 -0
- package/dist/mutations/edit-start.js.map +1 -0
- package/dist/mutations/form.d.ts +12 -0
- package/dist/mutations/form.d.ts.map +1 -1
- package/dist/mutations/form.js +4 -0
- package/dist/mutations/form.js.map +1 -1
- package/dist/mutations/kept-arguments.js +2 -2
- package/dist/mutations/kept-arguments.js.map +1 -1
- package/dist/mutations/types.d.ts +1 -1
- package/dist/mutations/types.d.ts.map +1 -1
- package/dist/navigate.d.ts +13 -0
- package/dist/navigate.d.ts.map +1 -0
- package/dist/navigate.js +13 -0
- package/dist/navigate.js.map +1 -0
- package/dist/ops/digest.d.ts +33 -0
- package/dist/ops/digest.d.ts.map +1 -0
- package/dist/ops/digest.js +47 -0
- package/dist/ops/digest.js.map +1 -0
- package/dist/ops/lineage.d.ts +6 -0
- package/dist/ops/lineage.d.ts.map +1 -1
- package/dist/ops/lineage.js +5 -4
- package/dist/ops/lineage.js.map +1 -1
- package/dist/ops/log.d.ts +6 -0
- package/dist/ops/log.d.ts.map +1 -1
- package/dist/ops/log.js +19 -12
- package/dist/ops/log.js.map +1 -1
- package/dist/ops/suggestions.d.ts +26 -0
- package/dist/ops/suggestions.d.ts.map +1 -0
- package/dist/ops/suggestions.js +21 -0
- package/dist/ops/suggestions.js.map +1 -0
- package/dist/ops/tidying.d.ts +48 -0
- package/dist/ops/tidying.d.ts.map +1 -0
- package/dist/ops/tidying.js +84 -0
- package/dist/ops/tidying.js.map +1 -0
- package/dist/ops/types.d.ts +17 -0
- package/dist/ops/types.d.ts.map +1 -1
- package/dist/ops/undo.d.ts.map +1 -1
- package/dist/ops/undo.js +10 -0
- package/dist/ops/undo.js.map +1 -1
- package/dist/past.d.ts +35 -0
- package/dist/past.d.ts.map +1 -0
- package/dist/past.js +173 -0
- package/dist/past.js.map +1 -0
- package/dist/permissions/policy.d.ts +8 -1
- package/dist/permissions/policy.d.ts.map +1 -1
- package/dist/permissions/policy.js +20 -5
- package/dist/permissions/policy.js.map +1 -1
- package/dist/places.d.ts +6 -2
- package/dist/places.d.ts.map +1 -1
- package/dist/places.js +48 -3
- package/dist/places.js.map +1 -1
- package/dist/scaffold/agents.d.ts.map +1 -1
- package/dist/scaffold/agents.js +13 -0
- package/dist/scaffold/agents.js.map +1 -1
- package/dist/scaffold/project.d.ts.map +1 -1
- package/dist/scaffold/project.js +5 -0
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/ui.d.ts.map +1 -1
- package/dist/scaffold/ui.js +15 -5
- package/dist/scaffold/ui.js.map +1 -1
- package/dist/schema/app-address.d.ts +5 -0
- package/dist/schema/app-address.d.ts.map +1 -0
- package/dist/schema/app-address.js +10 -0
- package/dist/schema/app-address.js.map +1 -0
- package/dist/schema/app-link.d.ts +1 -4
- package/dist/schema/app-link.d.ts.map +1 -1
- package/dist/schema/app-link.js +5 -7
- package/dist/schema/app-link.js.map +1 -1
- package/dist/schema/define-node.d.ts +16 -0
- package/dist/schema/define-node.d.ts.map +1 -1
- package/dist/schema/define-node.js +6 -0
- package/dist/schema/define-node.js.map +1 -1
- package/dist/schema/files.d.ts +8 -0
- package/dist/schema/files.d.ts.map +1 -1
- package/dist/schema/files.js.map +1 -1
- package/dist/schema/json-schema.d.ts.map +1 -1
- package/dist/schema/json-schema.js +19 -1
- package/dist/schema/json-schema.js.map +1 -1
- package/dist/schema/linked-field.d.ts +6 -0
- package/dist/schema/linked-field.d.ts.map +1 -0
- package/dist/schema/linked-field.js +34 -0
- package/dist/schema/linked-field.js.map +1 -0
- package/dist/schema/linked-reads.d.ts +20 -0
- package/dist/schema/linked-reads.d.ts.map +1 -0
- package/dist/schema/linked-reads.js +69 -0
- package/dist/schema/linked-reads.js.map +1 -0
- package/dist/schema/linked-schema.d.ts +5 -0
- package/dist/schema/linked-schema.d.ts.map +1 -0
- package/dist/schema/linked-schema.js +9 -0
- package/dist/schema/linked-schema.js.map +1 -0
- package/dist/schema/linked.d.ts +147 -0
- package/dist/schema/linked.d.ts.map +1 -0
- package/dist/schema/linked.js +151 -0
- package/dist/schema/linked.js.map +1 -0
- package/dist/schema/reading.d.ts.map +1 -1
- package/dist/schema/reading.js +82 -27
- package/dist/schema/reading.js.map +1 -1
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +11 -4
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/types.d.ts +17 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +30 -2
- package/dist/search.js.map +1 -1
- package/dist/seat-of.d.ts +9 -0
- package/dist/seat-of.d.ts.map +1 -0
- package/dist/seat-of.js +14 -0
- package/dist/seat-of.js.map +1 -0
- package/dist/seen.d.ts +0 -12
- package/dist/seen.d.ts.map +1 -1
- package/dist/seen.js +5 -0
- package/dist/seen.js.map +1 -1
- package/dist/store.d.ts +58 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +96 -11
- package/dist/store.js.map +1 -1
- package/dist/theme/derive.d.ts +16 -0
- package/dist/theme/derive.d.ts.map +1 -1
- package/dist/theme/derive.js +14 -0
- package/dist/theme/derive.js.map +1 -1
- package/dist/theme/marks.d.ts +19 -2
- package/dist/theme/marks.d.ts.map +1 -1
- package/dist/theme/marks.js +67 -2
- package/dist/theme/marks.js.map +1 -1
- package/dist/theme/types.d.ts +7 -2
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/theme/types.js.map +1 -1
- package/dist/tidying.d.ts +62 -0
- package/dist/tidying.d.ts.map +1 -0
- package/dist/tidying.js +131 -0
- package/dist/tidying.js.map +1 -0
- package/dist/typed.d.ts +1 -1
- package/dist/typed.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/via.d.ts.map +1 -1
- package/dist/via.js +2 -1
- package/dist/via.js.map +1 -1
- package/dist/views/address.d.ts +13 -0
- package/dist/views/address.d.ts.map +1 -0
- package/dist/views/address.js +29 -0
- package/dist/views/address.js.map +1 -0
- package/dist/views/types.d.ts +52 -3
- package/dist/views/types.d.ts.map +1 -1
- package/dist/views/types.js +4 -3
- package/dist/views/types.js.map +1 -1
- package/package.json +21 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Primitive } from "../graph/primitives.js";
|
|
2
|
+
import type { MutationCall } from "../mutations/types.js";
|
|
3
|
+
import type { AnySchema } from "../schema/schema.js";
|
|
4
|
+
import type { Author, Operation } from "./types.js";
|
|
5
|
+
type Reads = {
|
|
6
|
+
getNode(id: string): unknown;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* WHETHER AN AUTHOR IS THE APP'S OWN ACTOR: a `system` or `agent` author
|
|
10
|
+
* that says `automated: true`. A person never is, whatever they say.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isAutomated(author: Pick<Author, "kind" | "automated"> | undefined): boolean;
|
|
13
|
+
/** Whether a record, as read, carries the leave-alone mark. */
|
|
14
|
+
export declare const leftAlone: (node: unknown) => boolean;
|
|
15
|
+
/**
|
|
16
|
+
* WHETHER A PERSON SAID TO LEAVE THIS RECORD ALONE: the mark
|
|
17
|
+
* `leave-alone-<kind>` sets and `allow-tidying-<kind>` clears. Read off a
|
|
18
|
+
* store or a graph; a record that is not there is not left alone.
|
|
19
|
+
*/
|
|
20
|
+
export declare const isLeftAlone: (from: {
|
|
21
|
+
readonly graph: Reads;
|
|
22
|
+
} | Reads, id: string) => boolean;
|
|
23
|
+
/** What the declaration says the actor may do to a kind's records, or to one relation of it, on its own. */
|
|
24
|
+
export declare function tidyingOf(schema: AnySchema, kind: string, relation?: string): "never" | "no-links" | undefined;
|
|
25
|
+
/** WHO A SUGGESTION IS, whoever made it and on whatever basis: its calls, in order, each its act and arguments, keys in order. */
|
|
26
|
+
export declare const suggestionKey: (calls: readonly MutationCall[]) => string;
|
|
27
|
+
/**
|
|
28
|
+
* THE OP THAT DECLINED THESE CALLS — the whole suggestion, or any one of
|
|
29
|
+
* them on its own — or undefined: a live undo of a suggestion, or of a
|
|
30
|
+
* change made with a lineage (an actor's confident change a person took
|
|
31
|
+
* back). "Do not make this again."
|
|
32
|
+
*/
|
|
33
|
+
export declare function declinedIn(ops: readonly Operation[], calls: readonly MutationCall[]): Operation | undefined;
|
|
34
|
+
/** Every decline in a log, keyed by the whole suggestion and by each of its calls alone (`suggestionKey`). */
|
|
35
|
+
export declare function declinesIn(ops: readonly Operation[]): ReadonlyMap<string, Operation>;
|
|
36
|
+
/**
|
|
37
|
+
* WHY THE APP'S OWN ACTOR MAY NOT MAKE THESE PRIMITIVES, in a sentence, or
|
|
38
|
+
* undefined when it may: a record a person said to leave alone, a kind the
|
|
39
|
+
* declaration says is never tidied (or never linked), a relation it says is
|
|
40
|
+
* never made or broken on its own. `declaration: false` asks only about
|
|
41
|
+
* what a person said — a suggestion may name a kind the actor may not
|
|
42
|
+
* change on its own, since a person decides it.
|
|
43
|
+
*/
|
|
44
|
+
export declare function tidyingRefusal(schema: AnySchema, graph: Reads, primitives: readonly Primitive[], who: string, options?: {
|
|
45
|
+
readonly declaration?: boolean;
|
|
46
|
+
}): string | undefined;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=tidying.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tidying.d.ts","sourceRoot":"","sources":["../../src/ops/tidying.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoBpD,KAAK,KAAK,GAAG;IAAE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,SAAS,GAAG,OAAO,CAE3F;AAED,+DAA+D;AAC/D,eAAO,MAAM,SAAS,GAAI,MAAM,OAAO,KAAG,OAA+E,CAAC;AAE1H;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,KAAK,EAAE,IAAI,MAAM,KAAG,OAAuE,CAAC;AAE1J,4GAA4G;AAC5G,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAG9G;AAED,kIAAkI;AAClI,eAAO,MAAM,aAAa,GAAI,OAAO,SAAS,YAAY,EAAE,KAAG,MAI5D,CAAC;AAEJ;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,GAAG,SAAS,CAG3G;AAED,8GAA8G;AAC9G,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAUpF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,GAAG,SAAS,CAoBnL"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { LEFT_ALONE } from "../graph/archived.js";
|
|
2
|
+
import { labelOf, pluralOf } from "../schema/define-node.js";
|
|
3
|
+
import { undoneIn } from "./log.js";
|
|
4
|
+
/**
|
|
5
|
+
* WHETHER AN AUTHOR IS THE APP'S OWN ACTOR: a `system` or `agent` author
|
|
6
|
+
* that says `automated: true`. A person never is, whatever they say.
|
|
7
|
+
*/
|
|
8
|
+
export function isAutomated(author) {
|
|
9
|
+
return author?.automated === true && author.kind !== "human" && author.kind !== "rule";
|
|
10
|
+
}
|
|
11
|
+
/** Whether a record, as read, carries the leave-alone mark. */
|
|
12
|
+
export const leftAlone = (node) => node?.[LEFT_ALONE] === true;
|
|
13
|
+
/**
|
|
14
|
+
* WHETHER A PERSON SAID TO LEAVE THIS RECORD ALONE: the mark
|
|
15
|
+
* `leave-alone-<kind>` sets and `allow-tidying-<kind>` clears. Read off a
|
|
16
|
+
* store or a graph; a record that is not there is not left alone.
|
|
17
|
+
*/
|
|
18
|
+
export const isLeftAlone = (from, id) => leftAlone(("graph" in from ? from.graph : from).getNode(id));
|
|
19
|
+
/** What the declaration says the actor may do to a kind's records, or to one relation of it, on its own. */
|
|
20
|
+
export function tidyingOf(schema, kind, relation) {
|
|
21
|
+
const definition = schema.tryDefinition(kind);
|
|
22
|
+
return relation === undefined ? definition?.tidying : definition?.edges?.[relation]?.tidying;
|
|
23
|
+
}
|
|
24
|
+
/** WHO A SUGGESTION IS, whoever made it and on whatever basis: its calls, in order, each its act and arguments, keys in order. */
|
|
25
|
+
export const suggestionKey = (calls) => JSON.stringify(calls.map((call) => [call.name, call.args]), (_, value) => (value && typeof value === "object" && !Array.isArray(value) ? Object.fromEntries(Object.entries(value).sort()) : value));
|
|
26
|
+
/**
|
|
27
|
+
* THE OP THAT DECLINED THESE CALLS — the whole suggestion, or any one of
|
|
28
|
+
* them on its own — or undefined: a live undo of a suggestion, or of a
|
|
29
|
+
* change made with a lineage (an actor's confident change a person took
|
|
30
|
+
* back). "Do not make this again."
|
|
31
|
+
*/
|
|
32
|
+
export function declinedIn(ops, calls) {
|
|
33
|
+
const declines = declinesIn(ops);
|
|
34
|
+
return [calls, ...calls.map((call) => [call])].map((asked) => declines.get(suggestionKey(asked))).find(Boolean);
|
|
35
|
+
}
|
|
36
|
+
/** Every decline in a log, keyed by the whole suggestion and by each of its calls alone (`suggestionKey`). */
|
|
37
|
+
export function declinesIn(ops) {
|
|
38
|
+
const undone = undoneIn(ops);
|
|
39
|
+
const byId = new Map(ops.map((op) => [op.id, op]));
|
|
40
|
+
const declines = new Map();
|
|
41
|
+
for (const op of ops) {
|
|
42
|
+
const target = op.undoes !== undefined && !undone.has(op.id) && !op.withheld ? byId.get(op.undoes) : undefined;
|
|
43
|
+
const calls = target?.suggests ?? (target?.mutation && (target.lineage || op.undoneLineage) ? [target.mutation] : []);
|
|
44
|
+
if (calls.length > 0)
|
|
45
|
+
for (const key of [calls, ...calls.map((call) => [call])])
|
|
46
|
+
declines.set(suggestionKey(key), op);
|
|
47
|
+
}
|
|
48
|
+
return declines;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* WHY THE APP'S OWN ACTOR MAY NOT MAKE THESE PRIMITIVES, in a sentence, or
|
|
52
|
+
* undefined when it may: a record a person said to leave alone, a kind the
|
|
53
|
+
* declaration says is never tidied (or never linked), a relation it says is
|
|
54
|
+
* never made or broken on its own. `declaration: false` asks only about
|
|
55
|
+
* what a person said — a suggestion may name a kind the actor may not
|
|
56
|
+
* change on its own, since a person decides it.
|
|
57
|
+
*/
|
|
58
|
+
export function tidyingRefusal(schema, graph, primitives, who, options = {}) {
|
|
59
|
+
const declaration = options.declaration !== false;
|
|
60
|
+
const may = (what, why) => `${who} may not ${what}: ${why}.`;
|
|
61
|
+
for (const primitive of primitives) {
|
|
62
|
+
const edge = "edge" in primitive ? primitive.edge : undefined;
|
|
63
|
+
// The records it touches, as they stand: a new one as it would be made.
|
|
64
|
+
const nodes = (edge ? [edge.from, edge.to] : ["id" in primitive ? primitive.id : primitive.node.id]).map((id) => (graph.getNode(id) ?? ("node" in primitive ? primitive.node : undefined)));
|
|
65
|
+
for (const node of nodes) {
|
|
66
|
+
if (!node)
|
|
67
|
+
continue;
|
|
68
|
+
if (leftAlone(node))
|
|
69
|
+
return may(`change “${labelOf(schema.tryDefinition(node.kind), node)}”`, "a person said to leave it alone");
|
|
70
|
+
if (!declaration)
|
|
71
|
+
continue;
|
|
72
|
+
const said = tidyingOf(schema, node.kind);
|
|
73
|
+
if (said === "never")
|
|
74
|
+
return may(`change ${pluralOf(schema, node.kind)} on its own`, "the app says they are never tidied");
|
|
75
|
+
if (edge && said === "no-links")
|
|
76
|
+
return may(`link or unlink ${pluralOf(schema, node.kind)} on its own`, "the app says they are never linked automatically");
|
|
77
|
+
}
|
|
78
|
+
if (edge && declaration && nodes[0] && tidyingOf(schema, nodes[0].kind, edge.kind) === "never") {
|
|
79
|
+
return may(`${primitive.op === "add-edge" ? "make" : "break"} a “${edge.kind}” link on its own`, "the app says that relation is never tidied");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=tidying.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tidying.js","sourceRoot":"","sources":["../../src/ops/tidying.ts"],"names":[],"mappings":"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"}
|
package/dist/ops/types.d.ts
CHANGED
|
@@ -27,6 +27,14 @@ export interface Author {
|
|
|
27
27
|
* (FR-06).
|
|
28
28
|
*/
|
|
29
29
|
readonly onBehalfOf?: Author;
|
|
30
|
+
/**
|
|
31
|
+
* THE APP'S OWN ACTOR (`@graview/core/tidying`): set by a `system` or
|
|
32
|
+
* `agent` author that changes the graph on its own — "Graview, tidying".
|
|
33
|
+
* It is held to what a person said to leave alone and to the
|
|
34
|
+
* declaration's `tidying`, refused what was declined, and its consecutive
|
|
35
|
+
* batches fold into one row of Activity. Ignored on a human author.
|
|
36
|
+
*/
|
|
37
|
+
readonly automated?: true;
|
|
30
38
|
}
|
|
31
39
|
/**
|
|
32
40
|
* THE CHANNEL an op came through: `web` (a person at the interface),
|
|
@@ -118,6 +126,15 @@ export interface Operation {
|
|
|
118
126
|
* target, which a compacted log may no longer hold.
|
|
119
127
|
*/
|
|
120
128
|
readonly undoneLineage?: Lineage;
|
|
129
|
+
/**
|
|
130
|
+
* A SUGGESTION THAT WAITS (`suggest`, `@graview/core/tidying`): the calls it proposes, which
|
|
131
|
+
* it does not apply. The op has no primitives and changes nothing; its
|
|
132
|
+
* `lineage` says why and how sure. Accepting it applies the calls as the
|
|
133
|
+
* person, their lineage naming it (`lineage.suggestion`); declining it is
|
|
134
|
+
* an undo of it, which carries its lineage as `undoneLineage`. Withheld
|
|
135
|
+
* whole from a seat that may not see a record it names.
|
|
136
|
+
*/
|
|
137
|
+
readonly suggests?: readonly MutationCall[];
|
|
121
138
|
}
|
|
122
139
|
export interface Batch {
|
|
123
140
|
readonly id: string;
|
package/dist/ops/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ops/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,MAAM;IACrB;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ops/types.ts"],"names":[],"mappings":"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"}
|
package/dist/ops/undo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undo.d.ts","sourceRoot":"","sources":["../../src/ops/undo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,MAAM,WAAW,SAAS;IACxB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,GACzD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;IACzC,sEAAsE;IACtE,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;CAC3C,CAAC;AAEN,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAErE;;;;;;;;;GASG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAClC,QAAQ,CAAC,KAAK,EAAE,WAAW;gBAAlB,KAAK,EAAE,WAAW;IAKvC,6EAA6E;IAC7E,IAAI,SAAS,IAAI,SAAS,SAAS,EAAE,CAEpC;CACF;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,SAAS,
|
|
1
|
+
{"version":3,"file":"undo.d.ts","sourceRoot":"","sources":["../../src/ops/undo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,MAAM,WAAW,SAAS;IACxB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,GACzD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;IACzC,sEAAsE;IACtE,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;CAC3C,CAAC;AAEN,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAErE;;;;;;;;;GASG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAClC,QAAQ,CAAC,KAAK,EAAE,WAAW;gBAAlB,KAAK,EAAE,WAAW;IAKvC,6EAA6E;IAC7E,IAAI,SAAS,IAAI,SAAS,SAAS,EAAE,CAEpC;CACF;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,SAAS,CAmJX;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,qCAEvD"}
|
package/dist/ops/undo.js
CHANGED
|
@@ -121,6 +121,14 @@ export function checkUndo(log, batchIds) {
|
|
|
121
121
|
message: `Cannot undo "${before.intent}": ${before.intent === crossed.change ? "it changed the declaration" : `it was done before the declaration changed (${crossed.change})`}, and undo does not reach back across that change.`,
|
|
122
122
|
};
|
|
123
123
|
}
|
|
124
|
+
/*
|
|
125
|
+
* A CHANGE TAKEN BACK SINCE STANDS IN NOBODY'S WAY (Roadmap f-playback):
|
|
126
|
+
* an undo whose target also came after the earliest op here puts back
|
|
127
|
+
* what its target found, so the two leave the graph as if neither was
|
|
128
|
+
* made. Bringing the undo along would put its target back, which is why
|
|
129
|
+
* it is never offered as a batch to include; it simply does not block.
|
|
130
|
+
*/
|
|
131
|
+
const seqOf = new Map(log.all().map((op) => [op.id, op.seq]));
|
|
124
132
|
const blockedBy = [];
|
|
125
133
|
for (const op of log.all()) {
|
|
126
134
|
if (op.seq <= earliest)
|
|
@@ -129,6 +137,8 @@ export function checkUndo(log, batchIds) {
|
|
|
129
137
|
continue;
|
|
130
138
|
if (undone.has(op.id))
|
|
131
139
|
continue;
|
|
140
|
+
if (op.undoes !== undefined && (seqOf.get(op.undoes) ?? -1) > earliest)
|
|
141
|
+
continue;
|
|
132
142
|
const overlap = op.reads.filter((id) => writes.has(id));
|
|
133
143
|
if (overlap.length > 0)
|
|
134
144
|
blockedBy.push({ op, overlap });
|
package/dist/ops/undo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/ops/undo.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/ops/undo.ts"],"names":[],"mappings":"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"}
|
package/dist/past.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { DeclarationMark, HistoryHost } from "./history.js";
|
|
2
|
+
import type { AnySchema } from "./schema/schema.js";
|
|
3
|
+
import type { PastDeclaration, Store } from "./store.js";
|
|
4
|
+
/** The declaration a moment was made under: the last mark at or before `seq` that carries one. Absent, the store's own. */
|
|
5
|
+
export declare function declarationAt(marks: readonly DeclarationMark[] | undefined, seq: number): PastDeclaration | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* THE SEQ A TIME FALLS AT (Roadmap f-playback): every op made at or
|
|
8
|
+
* before `when` is before it. Before the first op the log holds, its
|
|
9
|
+
* horizon; after the last, its length.
|
|
10
|
+
*/
|
|
11
|
+
export declare function seqAt(store: Pick<Store<AnySchema>, "log">, when: string | Date): number;
|
|
12
|
+
/**
|
|
13
|
+
* THE APP AS IT STOOD (Roadmap f-playback): a store read, never changed,
|
|
14
|
+
* holding the graph and the log as they were before `when` — a seq (the
|
|
15
|
+
* ops before it are in, none after), or a time (every op made at or
|
|
16
|
+
* before it). Its graph, its log, its problems and its sight are the
|
|
17
|
+
* past's own: `seenBy` on it serves a seat what that seat could see then,
|
|
18
|
+
* and asked of a seat's view (`seenBy`) it is the past as that seat could
|
|
19
|
+
* see it, never the whole store's. It offers no act — not one declared or
|
|
20
|
+
* derived — and refuses every change (`PastError`).
|
|
21
|
+
*
|
|
22
|
+
* A seek folds from the nearest point it can: an epoch at or before
|
|
23
|
+
* `when`, or a point kept in memory for this store every `pastEvery` ops
|
|
24
|
+
* (`StoreOptions`, default 64) as an earlier seek passed it — never the
|
|
25
|
+
* whole log twice. `declaration` is the one the moment was made under,
|
|
26
|
+
* when a host knows it was another (`pastAt` reads it from the host's
|
|
27
|
+
* marks); absent, the store's own. A seq behind the undo horizon (FR-23)
|
|
28
|
+
* is in the archive, not here, and is refused.
|
|
29
|
+
*/
|
|
30
|
+
export declare function pastOf<S extends AnySchema>(store: Store<S>, when: number | string | Date, options?: {
|
|
31
|
+
readonly declaration?: PastDeclaration | undefined;
|
|
32
|
+
}): Store<S>;
|
|
33
|
+
/** The app as it stood at `when`, under the declaration the host says it was made under: `pastOf` with the host's marks read. */
|
|
34
|
+
export declare function pastAt<S extends AnySchema>(store: Store<S>, when: number | string | Date, host?: HistoryHost): Store<S>;
|
|
35
|
+
//# sourceMappingURL=past.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"past.d.ts","sourceRoot":"","sources":["../src/past.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKjE,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAgB,MAAM,YAAY,CAAC;AAEvE,2HAA2H;AAC3H,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAOrH;AAyBD;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMvF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;CAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAqEzK;AA+BD,iIAAiI;AACjI,wBAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,IAAI,GAAE,WAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAG3H"}
|
package/dist/past.js
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { seatOf } from "./seat-of.js";
|
|
2
|
+
/** The declaration a moment was made under: the last mark at or before `seq` that carries one. Absent, the store's own. */
|
|
3
|
+
export function declarationAt(marks, seq) {
|
|
4
|
+
let found;
|
|
5
|
+
for (const mark of [...(marks ?? [])].sort((a, b) => a.seq - b.seq)) {
|
|
6
|
+
if (mark.seq > seq)
|
|
7
|
+
break;
|
|
8
|
+
if (mark.declaration)
|
|
9
|
+
found = mark.declaration;
|
|
10
|
+
}
|
|
11
|
+
return found;
|
|
12
|
+
}
|
|
13
|
+
const openedOf = (store) => store;
|
|
14
|
+
/** The points each store's past is folded from, oldest first, kept in memory as seeks pass them. */
|
|
15
|
+
const MARKS = new WeakMap();
|
|
16
|
+
/** The graph where each store's log begins, when no epoch says it, with the id of its first op. */
|
|
17
|
+
const REWOUND = new WeakMap();
|
|
18
|
+
/**
|
|
19
|
+
* THE SEQ A TIME FALLS AT (Roadmap f-playback): every op made at or
|
|
20
|
+
* before `when` is before it. Before the first op the log holds, its
|
|
21
|
+
* horizon; after the last, its length.
|
|
22
|
+
*/
|
|
23
|
+
export function seqAt(store, when) {
|
|
24
|
+
const time = typeof when === "string" ? Date.parse(when) : when.getTime();
|
|
25
|
+
if (Number.isNaN(time))
|
|
26
|
+
throw new RangeError(`“${String(when)}” is not a time`);
|
|
27
|
+
const ops = store.log.all();
|
|
28
|
+
const after = ops.findIndex((op) => Date.parse(op.at) > time);
|
|
29
|
+
return after === -1 ? store.log.length : store.log.horizon + after;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* THE APP AS IT STOOD (Roadmap f-playback): a store read, never changed,
|
|
33
|
+
* holding the graph and the log as they were before `when` — a seq (the
|
|
34
|
+
* ops before it are in, none after), or a time (every op made at or
|
|
35
|
+
* before it). Its graph, its log, its problems and its sight are the
|
|
36
|
+
* past's own: `seenBy` on it serves a seat what that seat could see then,
|
|
37
|
+
* and asked of a seat's view (`seenBy`) it is the past as that seat could
|
|
38
|
+
* see it, never the whole store's. It offers no act — not one declared or
|
|
39
|
+
* derived — and refuses every change (`PastError`).
|
|
40
|
+
*
|
|
41
|
+
* A seek folds from the nearest point it can: an epoch at or before
|
|
42
|
+
* `when`, or a point kept in memory for this store every `pastEvery` ops
|
|
43
|
+
* (`StoreOptions`, default 64) as an earlier seek passed it — never the
|
|
44
|
+
* whole log twice. `declaration` is the one the moment was made under,
|
|
45
|
+
* when a host knows it was another (`pastAt` reads it from the host's
|
|
46
|
+
* marks); absent, the store's own. A seq behind the undo horizon (FR-23)
|
|
47
|
+
* is in the archive, not here, and is refused.
|
|
48
|
+
*/
|
|
49
|
+
export function pastOf(store, when, options = {}) {
|
|
50
|
+
const seat = seatOf(store);
|
|
51
|
+
if (seat)
|
|
52
|
+
return pastOf(seat.store, when, options).seenBy(seat.principal);
|
|
53
|
+
const inside = openedOf(store);
|
|
54
|
+
const log = store.log;
|
|
55
|
+
const first = log.horizon;
|
|
56
|
+
const seq = typeof when === "number" ? when : seqAt(store, when);
|
|
57
|
+
if (!Number.isInteger(seq) || seq < first || seq > log.length) {
|
|
58
|
+
throw new RangeError(`No moment at seq ${seq}: this store holds seqs ${first} to ${log.length}${first > 0 ? "; what is before its horizon is in the archive" : ""}`);
|
|
59
|
+
}
|
|
60
|
+
const ops = log.all();
|
|
61
|
+
const declared = options.declaration;
|
|
62
|
+
const schema = (declared?.schema ?? store.schema);
|
|
63
|
+
const epochs = log.epochs().filter((epoch) => epoch.seq <= seq);
|
|
64
|
+
const epoch = epochs.at(-1);
|
|
65
|
+
const start = epoch?.seq ?? first;
|
|
66
|
+
// A kept point is trusted while the op before it is the one it was taken after.
|
|
67
|
+
const idBefore = (at) => (at > first ? ops[at - 1 - first]?.id : undefined);
|
|
68
|
+
const marks = (MARKS.get(store) ?? []).filter((mark) => mark.seq <= log.length && idBefore(mark.seq) === mark.id);
|
|
69
|
+
MARKS.set(store, marks);
|
|
70
|
+
const mark = [...marks].reverse().find((one) => one.seq >= start && one.seq <= seq);
|
|
71
|
+
const from = mark?.seq ?? start;
|
|
72
|
+
const base = (mark?.base ?? epoch?.base ?? rewound(store));
|
|
73
|
+
// Judged as the store judges, so a default filled in on the way in is filled in again; a base the declaration no longer fits is held as written.
|
|
74
|
+
const Graphs = store.graph.constructor;
|
|
75
|
+
let graph;
|
|
76
|
+
try {
|
|
77
|
+
graph = Graphs.from(schema, base, { validate: inside.validate });
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
graph = Graphs.from(schema, base, { validate: false });
|
|
81
|
+
}
|
|
82
|
+
const every = store.pastEvery;
|
|
83
|
+
const keep = (after, id) => {
|
|
84
|
+
if (marks.some((one) => one.seq === after))
|
|
85
|
+
return;
|
|
86
|
+
marks.push({ seq: after, id, base: graph.snapshot() });
|
|
87
|
+
marks.sort((a, b) => a.seq - b.seq);
|
|
88
|
+
};
|
|
89
|
+
for (let next = from; next < seq; next++) {
|
|
90
|
+
const op = ops[next - first];
|
|
91
|
+
try {
|
|
92
|
+
fold(graph, op);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// An op that lands on nothing under this declaration is passed over: the past is shown, never refused.
|
|
96
|
+
}
|
|
97
|
+
if ((next + 1) % every === 0 && next + 1 < seq)
|
|
98
|
+
keep(next + 1, op.id);
|
|
99
|
+
}
|
|
100
|
+
// A long fold keeps where it ended too, so scrubbing about here folds little.
|
|
101
|
+
if (seq - from >= every)
|
|
102
|
+
keep(seq, idBefore(seq));
|
|
103
|
+
const at = ops[seq - 1 - first]?.at ?? epoch?.at;
|
|
104
|
+
const given = (key, value) => (value === undefined ? {} : { [key]: value });
|
|
105
|
+
// The store's own class, so this entry imports none of it (`seat-of.ts` says why).
|
|
106
|
+
const Made = store.constructor;
|
|
107
|
+
return new Made({
|
|
108
|
+
schema,
|
|
109
|
+
invariants: (declared?.invariants ?? inside.invariants),
|
|
110
|
+
invariantOptions: inside.invariantOptions,
|
|
111
|
+
...given("policy", declared ? declared.policy : store.policy),
|
|
112
|
+
...given("modules", declared?.modules ?? inside.declaredModules),
|
|
113
|
+
...given("enabledModules", inside.startingModules),
|
|
114
|
+
intelligence: store.intelligence,
|
|
115
|
+
principal: inside.by,
|
|
116
|
+
log: ops.slice(0, seq - first),
|
|
117
|
+
epochs,
|
|
118
|
+
...(first > 0 && !epochs.some((one) => one.horizon) ? { horizon: first } : {}),
|
|
119
|
+
snapshot: graph.snapshot(),
|
|
120
|
+
validate: false,
|
|
121
|
+
now: inside.now,
|
|
122
|
+
past: { seq, ...given("at", at), foldedFrom: from, folded: seq - from },
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* THE GRAPH WHERE THE LOG BEGINS, when no epoch says it (Roadmap
|
|
127
|
+
* f-playback): a store reopened with its log and its graph but not the
|
|
128
|
+
* epoch its seed began (a page's browser adapter keeps none) did not
|
|
129
|
+
* begin empty, so the past is not folded from empty. It is the graph
|
|
130
|
+
* after the log — the first epoch past it, else the graph held — with
|
|
131
|
+
* each op's inverse put back, newest first. Kept while the log begins
|
|
132
|
+
* with the same op.
|
|
133
|
+
*/
|
|
134
|
+
function rewound(store) {
|
|
135
|
+
const ops = store.log.all();
|
|
136
|
+
const first = store.log.horizon;
|
|
137
|
+
const firstId = ops[0]?.id;
|
|
138
|
+
const kept = REWOUND.get(store);
|
|
139
|
+
if (kept && kept.firstId === firstId)
|
|
140
|
+
return kept.base;
|
|
141
|
+
const later = store.log.epochs().find((epoch) => epoch.seq > first);
|
|
142
|
+
const graph = store.graph.constructor.from(store.schema, (later?.base ?? store.graph.snapshot()), { validate: false });
|
|
143
|
+
for (let at = (later?.seq ?? store.log.length) - 1; at >= first; at--) {
|
|
144
|
+
try {
|
|
145
|
+
graph.applyPrimitives(ops[at - first].inverse, { restoring: true });
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// An inverse that lands on nothing is passed over, as a fold passes over an op that does.
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const base = graph.snapshot();
|
|
152
|
+
REWOUND.set(store, { firstId, base });
|
|
153
|
+
return base;
|
|
154
|
+
}
|
|
155
|
+
/** The app as it stood at `when`, under the declaration the host says it was made under: `pastOf` with the host's marks read. */
|
|
156
|
+
export function pastAt(store, when, host = {}) {
|
|
157
|
+
const seq = typeof when === "number" ? when : seqAt(store, when);
|
|
158
|
+
return pastOf(store, seq, { declaration: declarationAt(host.declarations, seq) });
|
|
159
|
+
}
|
|
160
|
+
/** One op folded onto a graph as `OperationLog.fold` lands each (`foldOp`): an undo puts back what was there, and a write an older declaration accepted and this one does not is held as written. */
|
|
161
|
+
function fold(graph, op) {
|
|
162
|
+
if (op.undoes !== undefined) {
|
|
163
|
+
graph.applyPrimitives(op.primitives, { restoring: true });
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
try {
|
|
167
|
+
graph.applyPrimitives(op.primitives);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
graph.applyPrimitives(op.primitives, { restoring: true });
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=past.js.map
|
package/dist/past.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"past.js","sourceRoot":"","sources":["../src/past.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,7 +57,14 @@ ends?: () => readonly unknown[],
|
|
|
57
57
|
* Who made the record a derived act is about. Riding only a grant to
|
|
58
58
|
* every role, the act reaches what this principal made (W-201).
|
|
59
59
|
*/
|
|
60
|
-
madeBy?: () => string | undefined
|
|
60
|
+
madeBy?: () => string | undefined,
|
|
61
|
+
/**
|
|
62
|
+
* Whether the derived act takes a record out or folds it away — remove,
|
|
63
|
+
* archive, bring back or merge — rather than changing what it says. Riding
|
|
64
|
+
* the acts that make the kind, such an act reaches only what this principal
|
|
65
|
+
* made, whoever's grant it rides (W-201).
|
|
66
|
+
*/
|
|
67
|
+
unmakes?: boolean): {
|
|
61
68
|
readonly ok: true;
|
|
62
69
|
} | {
|
|
63
70
|
readonly ok: false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/permissions/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKpE;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAMxD;AAED;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,WAAW,SAAS,KAAG,OAA4E,CAAC;AAE7H,0FAA0F;AAC1F,eAAO,MAAM,QAAQ,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,WAAW,SAAS,KAAG,OACc,CAAC;AAE5F;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAOD;;;;;;GAMG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM;AACb;;;;;GAKG;AACH,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE;AACvB;;;GAGG;AACH,SAAS,CAAC,EAAE,MAAM;AAClB,qFAAqF;AACrF,KAAK,GAAE,WAAgB;AACvB,sIAAsI;AACtI,IAAI,CAAC,EAAE,MAAM,SAAS,OAAO,EAAE;AAC/B;;;GAGG;AACH,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/permissions/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKpE;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAMxD;AAED;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,WAAW,SAAS,KAAG,OAA4E,CAAC;AAE7H,0FAA0F;AAC1F,eAAO,MAAM,QAAQ,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,WAAW,SAAS,KAAG,OACc,CAAC;AAE5F;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAOD;;;;;;GAMG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM;AACb;;;;;GAKG;AACH,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE;AACvB;;;GAGG;AACH,SAAS,CAAC,EAAE,MAAM;AAClB,qFAAqF;AACrF,KAAK,GAAE,WAAgB;AACvB,sIAAsI;AACtI,IAAI,CAAC,EAAE,MAAM,SAAS,OAAO,EAAE;AAC/B;;;GAGG;AACH,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS;AACjC;;;;;GAKG;AACH,OAAO,CAAC,EAAE,OAAO,GAChB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CA8F3E;AAwBD;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEzF;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,GACZ,SAAS,MAAM,EAAE,CAInB;AAED,yEAAyE;AACzE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAQzD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,SAAS,EACpD,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAC7C,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAWrC;AAED,4FAA4F;AAC5F,eAAO,MAAM,YAAY,GAAI,UAAU,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,KAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EACN,CAAC"}
|
|
@@ -57,7 +57,14 @@ ends,
|
|
|
57
57
|
* Who made the record a derived act is about. Riding only a grant to
|
|
58
58
|
* every role, the act reaches what this principal made (W-201).
|
|
59
59
|
*/
|
|
60
|
-
madeBy
|
|
60
|
+
madeBy,
|
|
61
|
+
/**
|
|
62
|
+
* Whether the derived act takes a record out or folds it away — remove,
|
|
63
|
+
* archive, bring back or merge — rather than changing what it says. Riding
|
|
64
|
+
* the acts that make the kind, such an act reaches only what this principal
|
|
65
|
+
* made, whoever's grant it rides (W-201).
|
|
66
|
+
*/
|
|
67
|
+
unmakes) {
|
|
61
68
|
// No policy means permission is not a concern in this installation.
|
|
62
69
|
if (!policy)
|
|
63
70
|
return { ok: true };
|
|
@@ -80,11 +87,19 @@ madeBy) {
|
|
|
80
87
|
* co-op, and anybody at all archive or merge any member they could see:
|
|
81
88
|
* the grant that lets everybody make a record is not a grant over every
|
|
82
89
|
* record of its kind. Riding only a grant to every role, a derived
|
|
83
|
-
* edit
|
|
84
|
-
*
|
|
85
|
-
*
|
|
90
|
+
* edit reaches the records this principal made; a role's own grant on
|
|
91
|
+
* the acts it rides, or one that names the act or says `*`, reaches
|
|
92
|
+
* the rest.
|
|
93
|
+
*
|
|
94
|
+
* AND A ROLE'S DOOR IS NOT A KEY EITHER, to take a record out. A
|
|
95
|
+
* member who may log an inspection could remove, archive or merge
|
|
96
|
+
* anybody's: the grant to make a kind is a grant to make one, not to
|
|
97
|
+
* unmake the rest. Riding the acts that make the kind — whoever's
|
|
98
|
+
* grant — a derived remove, archive, bring-back or merge reaches only
|
|
99
|
+
* what this principal made; over the rest the policy names the act,
|
|
100
|
+
* or says `*` (decided by Nick, 2026-10-14).
|
|
86
101
|
*/
|
|
87
|
-
if (!madeBy || subjectId === undefined || (principal.id !== undefined && madeBy() === principal.id) || policy.grants.some((grant) => grant.roles !== "*" && grantsTo(grant, principal) && via.some((name) => matches(grant.mutations, name))))
|
|
102
|
+
if (!madeBy || subjectId === undefined || (principal.id !== undefined && madeBy() === principal.id) || (!unmakes && policy.grants.some((grant) => grant.roles !== "*" && grantsTo(grant, principal) && via.some((name) => matches(grant.mutations, name)))))
|
|
88
103
|
return { ok: true };
|
|
89
104
|
ridden = true;
|
|
90
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/permissions/policy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,MAAM,OAAO,GAAG,CAAC,OAAgC,EAAE,KAAa,EAAW,EAAE,CAC3E,OAAO,KAAK,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAoB;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;IACpC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/G,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AACxF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAoB,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC;AAE7H,0FAA0F;AAC1F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAA2B,EAAE,SAAoB,EAAW,EAAE,CACrF,KAAK,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAc5F,6DAA6D;AAC7D,SAAS,SAAS,CAAC,KAAwB;IACzC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CACrB,MAA0B,EAC1B,SAAoB,EACpB,QAAgB,EAChB,IAAa;AACb;;;;;GAKG;AACH,GAAuB;AACvB;;;GAGG;AACH,SAAkB;AAClB,qFAAqF;AACrF,QAAqB,EAAE;AACvB,sIAAsI;AACtI,IAA+B;AAC/B;;;GAGG;AACH,MAAiC;
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/permissions/policy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,MAAM,OAAO,GAAG,CAAC,OAAgC,EAAE,KAAa,EAAW,EAAE,CAC3E,OAAO,KAAK,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAoB;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;IACpC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/G,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AACxF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAoB,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC;AAE7H,0FAA0F;AAC1F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAA2B,EAAE,SAAoB,EAAW,EAAE,CACrF,KAAK,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAc5F,6DAA6D;AAC7D,SAAS,SAAS,CAAC,KAAwB;IACzC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CACrB,MAA0B,EAC1B,SAAoB,EACpB,QAAgB,EAChB,IAAa;AACb;;;;;GAKG;AACH,GAAuB;AACvB;;;GAGG;AACH,SAAkB;AAClB,qFAAqF;AACrF,QAAqB,EAAE;AACvB,sIAAsI;AACtI,IAA+B;AAC/B;;;GAGG;AACH,MAAiC;AACjC;;;;;GAKG;AACH,OAAiB;IAEjB,oEAAoE;IACpE,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,IAAI,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAC7C,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEhC;;;;OAIG;IACH,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,IAAI,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC7F,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACxF;;;;;;;;;;;;;;;;;eAiBG;YACH,IAAI,CAAC,MAAM,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,SAAS,IAAI,MAAM,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACjR,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QACD;;;;;;WAMG;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG;YAChB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;SACvE,CAAC,IAAI,EAAE,CAAC;QACT,MAAM,GAAG,GACP,CAAC,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBACrB,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;oBAChB,CAAC,CAAC,uDAAuD;oBACzD,CAAC,CAAC,aAAa;gBACjB,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE;gBACP,QAAQ;gBACR,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBACvC,SAAS;gBACT,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;aAC/C;SACF,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,SAAS;QAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC;YAAE,SAAS;QAClD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;YACrD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,SAAS;QAClE,CAAC;QACD,uEAAuE;QACvE,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,EAAE,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC;YAAE,SAAS;QAClH,2FAA2F;QAC3F,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YACzD,MAAM,GAAG,IAAI,CAAC;YACd,SAAS;QACX,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;IACjI,OAAO;QACL,EAAE,EAAE,KAAK;QACT,OAAO,EAAE;YACP,QAAQ;YACR,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvC,SAAS;YACT,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;SACpD;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,IAAI,CACX,MAAc,EACd,KAAwB,EACxB,IAAwB,EACxB,GAAW,EACX,KAAkB;IAElB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IACnC,OAAO,CACL,kBAAkB,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG;QACxH,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACpD,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,MAAM,CAAC,MAAc,EAAE,QAAgB,EAAE,IAAa;IACpE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,sFAAsF;AACtF,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,IAAa,EAAoB,EAAE,CACrF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnI;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,QAAgB,EAChB,IAAa;IAEb,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,6FAA6F;IAC7F,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACxH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,OAAO,CAAC,MAAc;IACpC,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG;YAAE,SAAS;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAA0B,EAC1B,SAAoB,EACpB,SAA8C;IAE9C,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;QACnC,0EAA0E;QAC1E,+DAA+D;QAC/D,wEAAwE;QACxE,sEAAsE;QACtE,gHAAgH;QAChH,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACtJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4FAA4F;AAC5F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAA2D,EAAmC,EAAE,CAC3H,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAE,QAAQ,CAAC,OAAO,CAAC,KAA2B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC"}
|
package/dist/places.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export declare const SHIPPED_LENSES: {
|
|
|
29
29
|
readonly coverage: {
|
|
30
30
|
readonly binds: "entities";
|
|
31
31
|
readonly requiredRoles: readonly ["rows", "columns", "link"];
|
|
32
|
-
readonly options: readonly ["rowRef", "rowGroup", "groupOrder", "requiredGroups", "requiredVia", "badge", "columnGroup"];
|
|
32
|
+
readonly options: readonly ["rowRef", "rowGroup", "groupOrder", "requiredGroups", "requiredVia", "badge", "columnGroup", "sort", "columnSort"];
|
|
33
33
|
};
|
|
34
34
|
readonly board: {
|
|
35
35
|
readonly binds: "entities";
|
|
@@ -67,7 +67,7 @@ export declare const SHIPPED_LENSES: {
|
|
|
67
67
|
readonly columns: {
|
|
68
68
|
readonly binds: "fields";
|
|
69
69
|
readonly requiredRoles: readonly ["column"];
|
|
70
|
-
readonly options: readonly [];
|
|
70
|
+
readonly options: readonly ["sort"];
|
|
71
71
|
};
|
|
72
72
|
};
|
|
73
73
|
export type ShippedLensName = keyof typeof SHIPPED_LENSES;
|
|
@@ -97,6 +97,10 @@ export interface DrawnLens {
|
|
|
97
97
|
readonly across?: string;
|
|
98
98
|
/** What the factory is handed, as data. */
|
|
99
99
|
readonly options: Readonly<Record<string, unknown>>;
|
|
100
|
+
/** Kept off the lists (`LensDeclaration.hidden`): reached by its address, a link or `navigate`. */
|
|
101
|
+
readonly hidden?: boolean;
|
|
102
|
+
/** `false`: its page leaves off the forms that begin its kind (`LensDeclaration.create`). */
|
|
103
|
+
readonly create?: false;
|
|
100
104
|
}
|
|
101
105
|
/** A declared lens that does not draw, and why — what `describe` says and `check` explains. */
|
|
102
106
|
export interface UndrawnLens {
|