@graview/core 0.1.27 → 0.1.29
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/README.md +17 -0
- package/dist/amount-input.d.ts +21 -0
- package/dist/amount-input.d.ts.map +1 -0
- package/dist/amount-input.js +96 -0
- package/dist/amount-input.js.map +1 -0
- package/dist/answer-seen.d.ts +38 -0
- package/dist/answer-seen.d.ts.map +1 -0
- package/dist/answer-seen.js +122 -0
- package/dist/answer-seen.js.map +1 -0
- package/dist/app-places.d.ts +56 -0
- package/dist/app-places.d.ts.map +1 -0
- package/dist/app-places.js +153 -0
- package/dist/app-places.js.map +1 -0
- package/dist/arrange.d.ts +2 -2
- package/dist/arrange.d.ts.map +1 -1
- package/dist/arrange.js +2 -2
- package/dist/arrange.js.map +1 -1
- package/dist/arrangement-words.d.ts +3 -0
- package/dist/arrangement-words.d.ts.map +1 -0
- package/dist/arrangement-words.js +50 -0
- package/dist/arrangement-words.js.map +1 -0
- package/dist/arrangement.d.ts +25 -3
- package/dist/arrangement.d.ts.map +1 -1
- package/dist/arrangement.js +36 -32
- package/dist/arrangement.js.map +1 -1
- package/dist/arranging.d.ts.map +1 -1
- package/dist/arranging.js +19 -8
- package/dist/arranging.js.map +1 -1
- package/dist/bind.d.ts +3 -0
- package/dist/bind.d.ts.map +1 -1
- package/dist/bind.js.map +1 -1
- package/dist/capabilities.js +1 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/capital.d.ts +2 -0
- package/dist/capital.d.ts.map +1 -1
- package/dist/capital.js +2 -0
- package/dist/capital.js.map +1 -1
- package/dist/check.d.ts +3 -0
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +3 -0
- package/dist/check.js.map +1 -1
- package/dist/city.d.ts +58 -50
- package/dist/city.d.ts.map +1 -1
- package/dist/city.js +160 -147
- package/dist/city.js.map +1 -1
- package/dist/cli/check/brand.js +1 -1
- package/dist/cli/check/brand.js.map +1 -1
- package/dist/cli/check/clock-rules.d.ts +4 -0
- package/dist/cli/check/clock-rules.d.ts.map +1 -0
- package/dist/cli/check/clock-rules.js +26 -0
- package/dist/cli/check/clock-rules.js.map +1 -0
- package/dist/cli/check/field-sight.d.ts +11 -0
- package/dist/cli/check/field-sight.d.ts.map +1 -0
- package/dist/cli/check/field-sight.js +113 -0
- package/dist/cli/check/field-sight.js.map +1 -0
- package/dist/cli/check/index.d.ts +2 -0
- package/dist/cli/check/index.d.ts.map +1 -1
- package/dist/cli/check/index.js +2 -0
- package/dist/cli/check/index.js.map +1 -1
- package/dist/cli/check/lenses.d.ts +1 -1
- package/dist/cli/check/lenses.d.ts.map +1 -1
- package/dist/cli/check/lenses.js +43 -2
- package/dist/cli/check/lenses.js.map +1 -1
- package/dist/cli/check/relations.d.ts.map +1 -1
- package/dist/cli/check/relations.js +2 -1
- package/dist/cli/check/relations.js.map +1 -1
- package/dist/cli/check.d.ts.map +1 -1
- package/dist/cli/check.js +7 -4
- package/dist/cli/check.js.map +1 -1
- package/dist/cli/describe.d.ts.map +1 -1
- package/dist/cli/describe.js +44 -3
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/docs.d.ts.map +1 -1
- package/dist/cli/docs.js +4 -3
- package/dist/cli/docs.js.map +1 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js +10 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/clock-readers.d.ts +18 -0
- package/dist/clock-readers.d.ts.map +1 -0
- package/dist/clock-readers.js +70 -0
- package/dist/clock-readers.js.map +1 -0
- package/dist/clock.d.ts +30 -0
- package/dist/clock.d.ts.map +1 -0
- package/dist/clock.js +41 -0
- package/dist/clock.js.map +1 -0
- package/dist/columns.d.ts.map +1 -1
- package/dist/columns.js +2 -1
- package/dist/columns.js.map +1 -1
- package/dist/conformance/fixtures.d.ts.map +1 -1
- package/dist/conformance/fixtures.js +326 -43
- package/dist/conformance/fixtures.js.map +1 -1
- package/dist/days.d.ts +53 -4
- package/dist/days.d.ts.map +1 -1
- package/dist/days.js +136 -16
- package/dist/days.js.map +1 -1
- package/dist/describe.d.ts +1 -0
- package/dist/describe.d.ts.map +1 -1
- package/dist/describe.js +1 -0
- package/dist/describe.js.map +1 -1
- package/dist/document/act-findings.d.ts.map +1 -1
- package/dist/document/act-findings.js +13 -3
- package/dist/document/act-findings.js.map +1 -1
- package/dist/document/amount.d.ts +4 -0
- package/dist/document/amount.d.ts.map +1 -0
- package/dist/document/amount.js +22 -0
- package/dist/document/amount.js.map +1 -0
- package/dist/document/block-context.d.ts.map +1 -1
- package/dist/document/block-context.js +1 -0
- package/dist/document/block-context.js.map +1 -1
- package/dist/document/blocks.d.ts +13 -3
- package/dist/document/blocks.d.ts.map +1 -1
- package/dist/document/blocks.js +56 -12
- package/dist/document/blocks.js.map +1 -1
- package/dist/document/compile-checked.d.ts.map +1 -1
- package/dist/document/compile-checked.js +3 -2
- package/dist/document/compile-checked.js.map +1 -1
- package/dist/document/compile.d.ts.map +1 -1
- package/dist/document/compile.js +30 -7
- package/dist/document/compile.js.map +1 -1
- package/dist/document/compiled.d.ts +4 -2
- package/dist/document/compiled.d.ts.map +1 -1
- package/dist/document/compiled.js +52 -21
- package/dist/document/compiled.js.map +1 -1
- package/dist/document/describe-coverage.d.ts.map +1 -1
- package/dist/document/describe-coverage.js +2 -1
- package/dist/document/describe-coverage.js.map +1 -1
- package/dist/document/describe-place.d.ts +6 -2
- package/dist/document/describe-place.d.ts.map +1 -1
- package/dist/document/describe-place.js +14 -8
- package/dist/document/describe-place.js.map +1 -1
- package/dist/document/diff.d.ts +2 -0
- package/dist/document/diff.d.ts.map +1 -1
- package/dist/document/diff.js +78 -7
- package/dist/document/diff.js.map +1 -1
- package/dist/document/durations.d.ts +8 -0
- package/dist/document/durations.d.ts.map +1 -0
- package/dist/document/durations.js +82 -0
- package/dist/document/durations.js.map +1 -0
- package/dist/document/edit.d.ts +1 -1
- package/dist/document/edit.d.ts.map +1 -1
- package/dist/document/edit.js +434 -34
- package/dist/document/edit.js.map +1 -1
- package/dist/document/expr/evaluate.d.ts +1 -1
- package/dist/document/expr/evaluate.d.ts.map +1 -1
- package/dist/document/expr/evaluate.js +17 -4
- package/dist/document/expr/evaluate.js.map +1 -1
- package/dist/document/field-spec.d.ts.map +1 -1
- package/dist/document/field-spec.js +15 -1
- package/dist/document/field-spec.js.map +1 -1
- package/dist/document/format-findings.d.ts +4 -0
- package/dist/document/format-findings.d.ts.map +1 -0
- package/dist/document/format-findings.js +39 -0
- package/dist/document/format-findings.js.map +1 -0
- package/dist/document/format-rules.d.ts +8 -0
- package/dist/document/format-rules.d.ts.map +1 -0
- package/dist/document/format-rules.js +19 -0
- package/dist/document/format-rules.js.map +1 -0
- package/dist/document/format-words.d.ts +9 -0
- package/dist/document/format-words.d.ts.map +1 -0
- package/dist/document/format-words.js +29 -0
- package/dist/document/format-words.js.map +1 -0
- package/dist/document/graview-template.d.ts +2 -2
- package/dist/document/migrate.d.ts +1 -0
- package/dist/document/migrate.d.ts.map +1 -1
- package/dist/document/migrate.js +45 -1
- package/dist/document/migrate.js.map +1 -1
- package/dist/document/money.d.ts +14 -0
- package/dist/document/money.d.ts.map +1 -0
- package/dist/document/money.js +14 -0
- package/dist/document/money.js.map +1 -0
- package/dist/document/policy-words.d.ts +33 -0
- package/dist/document/policy-words.d.ts.map +1 -0
- package/dist/document/policy-words.js +69 -0
- package/dist/document/policy-words.js.map +1 -0
- package/dist/document/rule-line.d.ts.map +1 -1
- package/dist/document/rule-line.js +16 -12
- package/dist/document/rule-line.js.map +1 -1
- package/dist/document/rules.d.ts.map +1 -1
- package/dist/document/rules.js +6 -5
- package/dist/document/rules.js.map +1 -1
- package/dist/document/schema.d.ts +62 -19
- package/dist/document/schema.d.ts.map +1 -1
- package/dist/document/schema.js +30 -4
- package/dist/document/schema.js.map +1 -1
- package/dist/document/template-parse.d.ts.map +1 -1
- package/dist/document/template-parse.js +9 -2
- package/dist/document/template-parse.js.map +1 -1
- package/dist/document/template.d.ts +3 -13
- package/dist/document/template.d.ts.map +1 -1
- package/dist/document/template.js +27 -28
- package/dist/document/template.js.map +1 -1
- package/dist/document/thumbnail.d.ts.map +1 -1
- package/dist/document/thumbnail.js +4 -3
- package/dist/document/thumbnail.js.map +1 -1
- package/dist/document/to-document.d.ts +0 -1
- package/dist/document/to-document.d.ts.map +1 -1
- package/dist/document/to-document.js +19 -2
- package/dist/document/to-document.js.map +1 -1
- package/dist/document/view-specs.d.ts.map +1 -1
- package/dist/document/view-specs.js +3 -0
- package/dist/document/view-specs.js.map +1 -1
- package/dist/document/views.d.ts +2 -0
- package/dist/document/views.d.ts.map +1 -1
- package/dist/document/views.js +18 -6
- package/dist/document/views.js.map +1 -1
- package/dist/document.schema.json +63 -6
- package/dist/excerpt-of.d.ts +14 -0
- package/dist/excerpt-of.d.ts.map +1 -0
- package/dist/excerpt-of.js +120 -0
- package/dist/excerpt-of.js.map +1 -0
- package/dist/excerpt.d.ts +9 -0
- package/dist/excerpt.d.ts.map +1 -0
- package/dist/excerpt.js +43 -0
- package/dist/excerpt.js.map +1 -0
- package/dist/field-sight.d.ts +33 -0
- package/dist/field-sight.d.ts.map +1 -0
- package/dist/field-sight.js +313 -0
- package/dist/field-sight.js.map +1 -0
- package/dist/forms.d.ts +1 -0
- package/dist/forms.d.ts.map +1 -1
- package/dist/forms.js +1 -0
- package/dist/forms.js.map +1 -1
- package/dist/graph/archived.d.ts +25 -0
- package/dist/graph/archived.d.ts.map +1 -0
- package/dist/graph/archived.js +16 -0
- package/dist/graph/archived.js.map +1 -0
- package/dist/graph/diff.d.ts.map +1 -1
- package/dist/graph/diff.js +2 -1
- package/dist/graph/diff.js.map +1 -1
- package/dist/graph/graph.d.ts +37 -13
- package/dist/graph/graph.d.ts.map +1 -1
- package/dist/graph/graph.js +86 -40
- package/dist/graph/graph.js.map +1 -1
- package/dist/graph/tracked.d.ts +8 -8
- package/dist/graph/tracked.d.ts.map +1 -1
- package/dist/graph/tracked.js +15 -20
- package/dist/graph/tracked.js.map +1 -1
- package/dist/graph/types.d.ts +16 -8
- package/dist/graph/types.d.ts.map +1 -1
- package/dist/graph/types.js.map +1 -1
- package/dist/import/coerce.d.ts +45 -0
- package/dist/import/coerce.d.ts.map +1 -0
- package/dist/import/coerce.js +252 -0
- package/dist/import/coerce.js.map +1 -0
- package/dist/import/csv.d.ts +16 -0
- package/dist/import/csv.d.ts.map +1 -0
- package/dist/import/csv.js +77 -0
- package/dist/import/csv.js.map +1 -0
- package/dist/import/index.d.ts +17 -0
- package/dist/import/index.d.ts.map +1 -0
- package/dist/import/index.js +13 -0
- package/dist/import/index.js.map +1 -0
- package/dist/import/mapping.d.ts +99 -0
- package/dist/import/mapping.d.ts.map +1 -0
- package/dist/import/mapping.js +182 -0
- package/dist/import/mapping.js.map +1 -0
- package/dist/import/rows.d.ts +116 -0
- package/dist/import/rows.d.ts.map +1 -0
- package/dist/import/rows.js +584 -0
- package/dist/import/rows.js.map +1 -0
- package/dist/index.d.ts +38 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -16
- package/dist/index.js.map +1 -1
- package/dist/invariants/engine.d.ts +5 -1
- package/dist/invariants/engine.d.ts.map +1 -1
- package/dist/invariants/engine.js +4 -3
- package/dist/invariants/engine.js.map +1 -1
- package/dist/invariants/types.d.ts +18 -3
- package/dist/invariants/types.d.ts.map +1 -1
- package/dist/json-schema.d.ts +1 -0
- package/dist/json-schema.d.ts.map +1 -1
- package/dist/json-schema.js +2 -0
- package/dist/json-schema.js.map +1 -1
- package/dist/labels.d.ts.map +1 -1
- package/dist/labels.js +2 -1
- package/dist/labels.js.map +1 -1
- package/dist/lines.d.ts +1 -0
- package/dist/lines.d.ts.map +1 -1
- package/dist/lines.js +5 -3
- package/dist/lines.js.map +1 -1
- package/dist/markdown.d.ts +102 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +460 -0
- package/dist/markdown.js.map +1 -0
- package/dist/mutations/arg-shape.d.ts +95 -0
- package/dist/mutations/arg-shape.d.ts.map +1 -0
- package/dist/mutations/arg-shape.js +101 -0
- package/dist/mutations/arg-shape.js.map +1 -0
- package/dist/mutations/define-mutation.d.ts +48 -2
- package/dist/mutations/define-mutation.d.ts.map +1 -1
- package/dist/mutations/define-mutation.js +103 -36
- package/dist/mutations/define-mutation.js.map +1 -1
- package/dist/mutations/derive-edits.d.ts +16 -1
- package/dist/mutations/derive-edits.d.ts.map +1 -1
- package/dist/mutations/derive-edits.js +67 -28
- package/dist/mutations/derive-edits.js.map +1 -1
- package/dist/mutations/derive-repeats.d.ts +8 -0
- package/dist/mutations/derive-repeats.d.ts.map +1 -0
- package/dist/mutations/derive-repeats.js +118 -0
- package/dist/mutations/derive-repeats.js.map +1 -0
- package/dist/mutations/derived-names.d.ts +20 -0
- package/dist/mutations/derived-names.d.ts.map +1 -0
- package/dist/mutations/derived-names.js +19 -0
- package/dist/mutations/derived-names.js.map +1 -0
- package/dist/mutations/form.d.ts +21 -1
- package/dist/mutations/form.d.ts.map +1 -1
- package/dist/mutations/form.js +19 -2
- package/dist/mutations/form.js.map +1 -1
- package/dist/mutations/invalid-arguments.d.ts +14 -0
- package/dist/mutations/invalid-arguments.d.ts.map +1 -0
- package/dist/mutations/invalid-arguments.js +18 -0
- package/dist/mutations/invalid-arguments.js.map +1 -0
- package/dist/mutations/keep-link.d.ts +27 -0
- package/dist/mutations/keep-link.d.ts.map +1 -0
- package/dist/mutations/keep-link.js +56 -0
- package/dist/mutations/keep-link.js.map +1 -0
- package/dist/mutations/kept-arguments.d.ts +26 -0
- package/dist/mutations/kept-arguments.d.ts.map +1 -0
- package/dist/mutations/kept-arguments.js +77 -0
- package/dist/mutations/kept-arguments.js.map +1 -0
- package/dist/mutations/node-ref.d.ts +0 -80
- package/dist/mutations/node-ref.d.ts.map +1 -1
- package/dist/mutations/node-ref.js +0 -93
- package/dist/mutations/node-ref.js.map +1 -1
- package/dist/mutations/types.d.ts +17 -1
- package/dist/mutations/types.d.ts.map +1 -1
- package/dist/mutations/words.d.ts +0 -13
- package/dist/mutations/words.d.ts.map +1 -1
- package/dist/mutations/words.js +1 -12
- package/dist/mutations/words.js.map +1 -1
- package/dist/ops/kept-fields.d.ts +7 -0
- package/dist/ops/kept-fields.d.ts.map +1 -0
- package/dist/ops/kept-fields.js +24 -0
- package/dist/ops/kept-fields.js.map +1 -0
- package/dist/ops/lineage.d.ts +37 -0
- package/dist/ops/lineage.d.ts.map +1 -0
- package/dist/ops/lineage.js +26 -0
- package/dist/ops/lineage.js.map +1 -0
- package/dist/ops/log.d.ts.map +1 -1
- package/dist/ops/log.js +1 -0
- package/dist/ops/log.js.map +1 -1
- package/dist/ops/provenance.d.ts +68 -0
- package/dist/ops/provenance.d.ts.map +1 -0
- package/dist/ops/provenance.js +83 -0
- package/dist/ops/provenance.js.map +1 -0
- package/dist/ops/types.d.ts +25 -0
- package/dist/ops/types.d.ts.map +1 -1
- package/dist/ops/withheld.d.ts +25 -2
- package/dist/ops/withheld.d.ts.map +1 -1
- package/dist/ops/withheld.js +6 -15
- package/dist/ops/withheld.js.map +1 -1
- package/dist/permissions/policy.d.ts +6 -1
- package/dist/permissions/policy.d.ts.map +1 -1
- package/dist/permissions/policy.js +31 -11
- package/dist/permissions/policy.js.map +1 -1
- package/dist/permissions/sight.d.ts +40 -2
- package/dist/permissions/sight.d.ts.map +1 -1
- package/dist/permissions/sight.js +25 -2
- package/dist/permissions/sight.js.map +1 -1
- package/dist/permissions/types.d.ts +21 -0
- package/dist/permissions/types.d.ts.map +1 -1
- package/dist/permissions/types.js.map +1 -1
- package/dist/places.d.ts +0 -49
- package/dist/places.d.ts.map +1 -1
- package/dist/places.js +2 -141
- package/dist/places.js.map +1 -1
- package/dist/provenance.d.ts +14 -0
- package/dist/provenance.d.ts.map +1 -0
- package/dist/provenance.js +13 -0
- package/dist/provenance.js.map +1 -0
- package/dist/repeat-words.d.ts +13 -0
- package/dist/repeat-words.d.ts.map +1 -0
- package/dist/repeat-words.js +56 -0
- package/dist/repeat-words.js.map +1 -0
- package/dist/repeat.d.ts +59 -0
- package/dist/repeat.d.ts.map +1 -0
- package/dist/repeat.js +155 -0
- package/dist/repeat.js.map +1 -0
- package/dist/scaffold/project.d.ts.map +1 -1
- package/dist/scaffold/project.js +13 -0
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/ui.js +2 -2
- package/dist/scene-districts.d.ts +2 -1
- package/dist/scene-districts.d.ts.map +1 -1
- package/dist/scene-districts.js +2 -1
- package/dist/scene-districts.js.map +1 -1
- package/dist/scene.d.ts +4 -2
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +2 -1
- package/dist/scene.js.map +1 -1
- package/dist/schema/amount-mark.d.ts +13 -0
- package/dist/schema/amount-mark.d.ts.map +1 -0
- package/dist/schema/amount-mark.js +20 -0
- package/dist/schema/amount-mark.js.map +1 -0
- package/dist/schema/amount-words.d.ts +12 -0
- package/dist/schema/amount-words.d.ts.map +1 -0
- package/dist/schema/amount-words.js +31 -0
- package/dist/schema/amount-words.js.map +1 -0
- package/dist/schema/app-link-field.d.ts +4 -0
- package/dist/schema/app-link-field.d.ts.map +1 -0
- package/dist/schema/app-link-field.js +19 -0
- package/dist/schema/app-link-field.js.map +1 -0
- package/dist/schema/app-link.d.ts +41 -0
- package/dist/schema/app-link.d.ts.map +1 -0
- package/dist/schema/app-link.js +40 -0
- package/dist/schema/app-link.js.map +1 -0
- package/dist/schema/define-node.d.ts +25 -94
- package/dist/schema/define-node.d.ts.map +1 -1
- package/dist/schema/define-node.js +3 -247
- package/dist/schema/define-node.js.map +1 -1
- package/dist/schema/field-words.d.ts +45 -0
- package/dist/schema/field-words.d.ts.map +1 -0
- package/dist/schema/field-words.js +124 -0
- package/dist/schema/field-words.js.map +1 -0
- package/dist/schema/json-schema.d.ts +6 -1
- package/dist/schema/json-schema.d.ts.map +1 -1
- package/dist/schema/json-schema.js +83 -2
- package/dist/schema/json-schema.js.map +1 -1
- package/dist/schema/markdown-field.d.ts +4 -0
- package/dist/schema/markdown-field.d.ts.map +1 -0
- package/dist/schema/markdown-field.js +20 -0
- package/dist/schema/markdown-field.js.map +1 -0
- package/dist/schema/markdown.d.ts +6 -0
- package/dist/schema/markdown.d.ts.map +1 -0
- package/dist/schema/markdown.js +27 -0
- package/dist/schema/markdown.js.map +1 -0
- package/dist/schema/reading.d.ts +86 -0
- package/dist/schema/reading.d.ts.map +1 -0
- package/dist/schema/reading.js +270 -0
- package/dist/schema/reading.js.map +1 -0
- package/dist/schema/repeat-field.d.ts +5 -0
- package/dist/schema/repeat-field.d.ts.map +1 -0
- package/dist/schema/repeat-field.js +20 -0
- package/dist/schema/repeat-field.js.map +1 -0
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +5 -1
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/to-json-schema.d.ts +14 -0
- package/dist/schema/to-json-schema.d.ts.map +1 -0
- package/dist/schema/to-json-schema.js +616 -0
- package/dist/schema/to-json-schema.js.map +1 -0
- package/dist/schema/typed-field-builders.d.ts +8 -0
- package/dist/schema/typed-field-builders.d.ts.map +1 -0
- package/dist/schema/typed-field-builders.js +30 -0
- package/dist/schema/typed-field-builders.js.map +1 -0
- package/dist/schema/typed-field-of.d.ts +4 -0
- package/dist/schema/typed-field-of.d.ts.map +1 -0
- package/dist/schema/typed-field-of.js +14 -0
- package/dist/schema/typed-field-of.js.map +1 -0
- package/dist/schema/typed-fields.d.ts +11 -0
- package/dist/schema/typed-fields.d.ts.map +1 -0
- package/dist/schema/typed-fields.js +16 -0
- package/dist/schema/typed-fields.js.map +1 -0
- package/dist/schema/types.d.ts +14 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/value-words.d.ts +21 -0
- package/dist/schema/value-words.d.ts.map +1 -0
- package/dist/schema/value-words.js +32 -0
- package/dist/schema/value-words.js.map +1 -0
- package/dist/search.d.ts +91 -4
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +290 -59
- package/dist/search.js.map +1 -1
- package/dist/seat.d.ts +19 -0
- package/dist/seat.d.ts.map +1 -0
- package/dist/seat.js +19 -0
- package/dist/seat.js.map +1 -0
- package/dist/seen.d.ts +15 -33
- package/dist/seen.d.ts.map +1 -1
- package/dist/seen.js +44 -135
- package/dist/seen.js.map +1 -1
- package/dist/store.d.ts +46 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +121 -22
- package/dist/store.js.map +1 -1
- package/dist/theme/types.d.ts +7 -1
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/theme/types.js.map +1 -1
- package/dist/typed.d.ts +12 -3
- package/dist/typed.d.ts.map +1 -1
- package/dist/typed.js.map +1 -1
- package/dist/validate-graph.d.ts.map +1 -1
- package/dist/validate-graph.js +3 -10
- package/dist/validate-graph.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/views/types.d.ts +57 -8
- package/dist/views/types.d.ts.map +1 -1
- package/dist/views/types.js +22 -3
- package/dist/views/types.js.map +1 -1
- package/dist/village.d.ts +63 -0
- package/dist/village.d.ts.map +1 -0
- package/dist/village.js +143 -0
- package/dist/village.js.map +1 -0
- package/dist/watched.d.ts +12 -45
- package/dist/watched.d.ts.map +1 -1
- package/dist/watched.js +7 -119
- package/dist/watched.js.map +1 -1
- package/dist/words.d.ts +33 -0
- package/dist/words.d.ts.map +1 -0
- package/dist/words.js +36 -0
- package/dist/words.js.map +1 -0
- package/package.json +37 -2
package/README.md
CHANGED
|
@@ -93,6 +93,12 @@ Everything a Graview app declares, and the checker that verifies it.
|
|
|
93
93
|
(`readonly`, refused here with their `because`), links seeded from a
|
|
94
94
|
version field, and transports for Google Calendar and for a tool server
|
|
95
95
|
over MCP (`mcpClient`, `mcpDoor`, `doorClient`, `mcpRemote`).
|
|
96
|
+
- **A spreadsheet brought in** — `@graview/core/import`: `importRows(store,
|
|
97
|
+
kind, rows, mapping, { by })` reads each cell by its field's type, links a
|
|
98
|
+
cell to a record by its name, keeps every row that fits as one undoable
|
|
99
|
+
batch `via: "import"`, and says each refused row in words;
|
|
100
|
+
`previewImport` keeps nothing, `proposeMapping` offers a mapping from the
|
|
101
|
+
header row, and `parseCsv` reads a CSV or a paste (`docs/import.md`).
|
|
96
102
|
- **The city** — `@graview/core/scene`: `sceneThumbnail` draws a document
|
|
97
103
|
(or an app) as the Scene draws it from altitude — the same districts on
|
|
98
104
|
the same map, in their hues — as one SVG string, with no DOM, for a host
|
|
@@ -106,6 +112,17 @@ Everything a Graview app declares, and the checker that verifies it.
|
|
|
106
112
|
district on its block in its hue with one block on it, readable at 16
|
|
107
113
|
pixels and about a kilobyte — a standalone SVG to serve as a favicon. A kind's
|
|
108
114
|
figures are `@graview/core/figures`.
|
|
115
|
+
- **What is said, matched and listed after a page draws** (FR-179) —
|
|
116
|
+
`@graview/core/search`: the one matcher (`search`, `actsOn`,
|
|
117
|
+
`touchWeights`, `parseQuery`, `matchNode`), fetched when somebody first
|
|
118
|
+
searches. `@graview/core/words`: a record read as a person reads it
|
|
119
|
+
(`readableFields`, `pageSections`, `isLongText`, `describeNode`,
|
|
120
|
+
`tellApart`), what an argument asks for (`argShape`, `describeArg`), an
|
|
121
|
+
argument and a refusal in the record's words (`argumentWords`,
|
|
122
|
+
`failureWords`) and `viaSaid`. `@graview/core/seat`: an act's answer as
|
|
123
|
+
its seat may see it (`answerSeenBy`), every place an app has (`placesOf`,
|
|
124
|
+
`placesFrom`) and the order things are made in (`beginning`). Judging the
|
|
125
|
+
arrangement (`arrangementFindings`) is `@graview/core/check`'s.
|
|
109
126
|
- **What a page loads first** — `@graview/core` and `@graview/core/document`
|
|
110
127
|
hold only what a page draws with. The checker, the city, the figures and
|
|
111
128
|
the block resolver are on the subpaths above because a bundler places a
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { AmountMark } from "./schema/amount-mark.js";
|
|
2
|
+
/** What a box for an amount shows: the symbol before it, the unit after it, and what the empty box suggests. */
|
|
3
|
+
export interface AmountBox {
|
|
4
|
+
readonly prefix?: string;
|
|
5
|
+
readonly suffix?: string;
|
|
6
|
+
readonly placeholder: string;
|
|
7
|
+
/** The amount in words, for a label a screen reader reads: "in US dollars", "as a percent". */
|
|
8
|
+
readonly hint: string;
|
|
9
|
+
}
|
|
10
|
+
/** The box an amount is typed into: "$" before "1,250.00", "%" after "15", "min" after "90". */
|
|
11
|
+
export declare function amountBox(mark: AmountMark): AmountBox;
|
|
12
|
+
/** The text a held amount is edited as: "1,250.50" for $1,250.50, "15" for 15%, "1 h 30 min" for ninety minutes. */
|
|
13
|
+
export declare function amountInBox(value: number | undefined, mark: AmountMark): string;
|
|
14
|
+
/**
|
|
15
|
+
* THE NUMBER A PERSON'S TEXT MEANS for an amount: "$1,250.50" is 1250.5;
|
|
16
|
+
* "15%" of a percent is 0.15.
|
|
17
|
+
* Its currency's symbol or code, spaces and group separators are let be;
|
|
18
|
+
* `undefined` where it is no number at all, for the form to say so.
|
|
19
|
+
*/
|
|
20
|
+
export declare function readAmount(text: string, mark: AmountMark | undefined): number | undefined;
|
|
21
|
+
//# sourceMappingURL=amount-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amount-input.d.ts","sourceRoot":"","sources":["../src/amount-input.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAY1D,gHAAgH;AAChH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAmBD,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CASrD;AAED,oHAAoH;AACpH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAK/E;AAyBD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAczF"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { localeFor, numberAsRead } from "./days.js";
|
|
2
|
+
const currencyParts = (mark) => {
|
|
3
|
+
if (!mark.currency)
|
|
4
|
+
return { before: true };
|
|
5
|
+
try {
|
|
6
|
+
const locale = localeFor(mark.locale);
|
|
7
|
+
const parts = new Intl.NumberFormat(locale, { style: "currency", currency: mark.currency }).formatToParts(1);
|
|
8
|
+
const at = parts.findIndex((part) => part.type === "currency");
|
|
9
|
+
const integer = parts.findIndex((part) => part.type === "integer");
|
|
10
|
+
let name;
|
|
11
|
+
try {
|
|
12
|
+
name = new Intl.DisplayNames([locale], { type: "currency" }).of(mark.currency);
|
|
13
|
+
}
|
|
14
|
+
catch { }
|
|
15
|
+
return { ...(at >= 0 ? { symbol: parts[at].value } : {}), before: at < integer, ...(name ? { name } : {}) };
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return { symbol: mark.currency, before: true };
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
/** The box an amount is typed into: "$" before "1,250.00", "%" after "15", "min" after "90". */
|
|
22
|
+
export function amountBox(mark) {
|
|
23
|
+
const locale = mark.locale;
|
|
24
|
+
if (mark.format === "money") {
|
|
25
|
+
const { symbol, before, name } = currencyParts(mark);
|
|
26
|
+
const placeholder = numberAsRead(1250, locale, { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
|
27
|
+
return { ...(symbol ? (before ? { prefix: symbol } : { suffix: symbol }) : {}), placeholder, hint: name ? `in ${name}` : mark.currency ? `in ${mark.currency}` : "an amount of money" };
|
|
28
|
+
}
|
|
29
|
+
if (mark.format === "percent")
|
|
30
|
+
return { suffix: "%", placeholder: numberAsRead(15, locale), hint: "as a percent" };
|
|
31
|
+
return { ...(mark.unit ? { suffix: mark.unit } : {}), placeholder: "", hint: mark.unit ? `in ${mark.unit}` : "a number" };
|
|
32
|
+
}
|
|
33
|
+
/** The text a held amount is edited as: "1,250.50" for $1,250.50, "15" for 15%, "1 h 30 min" for ninety minutes. */
|
|
34
|
+
export function amountInBox(value, mark) {
|
|
35
|
+
if (value === undefined || !Number.isFinite(value))
|
|
36
|
+
return "";
|
|
37
|
+
if (mark.format === "money")
|
|
38
|
+
return numberAsRead(value, mark.locale, Number.isInteger(value) ? { maximumFractionDigits: 0 } : { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
|
39
|
+
if (mark.format === "percent")
|
|
40
|
+
return numberAsRead(value * 100, mark.locale, { maximumFractionDigits: 4 });
|
|
41
|
+
return numberAsRead(value, mark.locale, { maximumFractionDigits: 6 });
|
|
42
|
+
}
|
|
43
|
+
/** The separators a locale writes numbers with: "," and "." in en-US, "." and "," in de-DE. */
|
|
44
|
+
function separators(locale) {
|
|
45
|
+
try {
|
|
46
|
+
const parts = new Intl.NumberFormat(localeFor(locale)).formatToParts(12345.6);
|
|
47
|
+
return { group: parts.find((part) => part.type === "group")?.value ?? ",", decimal: parts.find((part) => part.type === "decimal")?.value ?? "." };
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return { group: ",", decimal: "." };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** A plain number in a person's writing, in a locale: "1,250.50", "1.250,50", "1 250,5", "-3". */
|
|
54
|
+
function plainNumber(text, locale) {
|
|
55
|
+
const { group, decimal } = separators(locale);
|
|
56
|
+
let t = text.replace(/[\s ']/g, "").replace(/[−–]/g, "-");
|
|
57
|
+
// A decimal point where the locale writes a comma, typed as most keyboards do ("12.5" in de-DE), is read as a point.
|
|
58
|
+
if (decimal !== "." && !t.includes(decimal) && /^-?\d+\.\d{1,2}$/.test(t))
|
|
59
|
+
return Number(t);
|
|
60
|
+
if (group)
|
|
61
|
+
t = t.split(group).join("");
|
|
62
|
+
if (decimal !== ".")
|
|
63
|
+
t = t.replace(decimal, ".");
|
|
64
|
+
if (!/^-?(\d+\.?\d*|\.\d+)$/.test(t))
|
|
65
|
+
return undefined;
|
|
66
|
+
const n = Number(t);
|
|
67
|
+
return Number.isFinite(n) ? n : undefined;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* THE NUMBER A PERSON'S TEXT MEANS for an amount: "$1,250.50" is 1250.5;
|
|
71
|
+
* "15%" of a percent is 0.15.
|
|
72
|
+
* Its currency's symbol or code, spaces and group separators are let be;
|
|
73
|
+
* `undefined` where it is no number at all, for the form to say so.
|
|
74
|
+
*/
|
|
75
|
+
export function readAmount(text, mark) {
|
|
76
|
+
const raw = text.trim();
|
|
77
|
+
if (raw === "")
|
|
78
|
+
return undefined;
|
|
79
|
+
const symbol = mark?.format === "money" && mark.currency ? currencyParts(mark).symbol : undefined;
|
|
80
|
+
let t = raw;
|
|
81
|
+
if (symbol)
|
|
82
|
+
t = t.split(symbol).join("");
|
|
83
|
+
if (mark?.currency)
|
|
84
|
+
t = t.replace(new RegExp(mark.currency, "gi"), "");
|
|
85
|
+
t = t.replace(/^[$€£¥₹]|[$€£¥₹]$/g, "");
|
|
86
|
+
const percent = /%\s*$/.test(t);
|
|
87
|
+
if (percent)
|
|
88
|
+
t = t.replace(/%\s*$/, "");
|
|
89
|
+
if (mark?.unit && mark.format !== "money")
|
|
90
|
+
t = t.replace(new RegExp(`\\s*${mark.unit.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\s*$`), "");
|
|
91
|
+
const n = plainNumber(t, mark?.locale);
|
|
92
|
+
if (n === undefined)
|
|
93
|
+
return undefined;
|
|
94
|
+
return mark?.format === "percent" ? n / 100 : n;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=amount-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amount-input.js","sourceRoot":"","sources":["../src/amount-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAsBpD,MAAM,aAAa,GAAG,CAAC,IAAgB,EAAuD,EAAE;IAC9F,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC7G,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACnE,IAAI,IAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjF,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;AACH,CAAC,CAAC;AAEF,gGAAgG;AAChG,MAAM,UAAU,SAAS,CAAC,IAAgB;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;QACvG,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC;IAC1L,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IACnH,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AAC5H,CAAC;AAED,oHAAoH;AACpH,MAAM,UAAU,WAAW,CAAC,KAAyB,EAAE,IAAgB;IACrE,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;IACtL,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,KAAK,GAAG,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3G,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,+FAA+F;AAC/F,SAAS,UAAU,CAAC,MAA0B;IAC5C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9E,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE,CAAC;IACpJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACtC,CAAC;AACH,CAAC;AAED,kGAAkG;AAClG,SAAS,WAAW,CAAC,IAAY,EAAE,MAA0B;IAC3D,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3D,qHAAqH;IACrH,IAAI,OAAO,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5F,IAAI,KAAK;QAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,GAAG;QAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACvD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAA4B;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,IAAI,CAAC,GAAG,GAAG,CAAC;IACZ,IAAI,MAAM;QAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,IAAI,EAAE,QAAQ;QAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,OAAO;QAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;QAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IACzI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtC,OAAO,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { GraphDiff } from "./graph/diff.js";
|
|
2
|
+
import type { Primitive } from "./graph/primitives.js";
|
|
3
|
+
import type { GraphNodeBase } from "./graph/types.js";
|
|
4
|
+
import type { InvariantDefinition, Violation } from "./invariants/types.js";
|
|
5
|
+
import type { Operation } from "./ops/types.js";
|
|
6
|
+
import type { Principal } from "./permissions/types.js";
|
|
7
|
+
import type { AnySchema } from "./schema/schema.js";
|
|
8
|
+
import { type Judged } from "./seen.js";
|
|
9
|
+
import type { Store } from "./store.js";
|
|
10
|
+
/**
|
|
11
|
+
* A CHANGE'S ANSWER AS ONE SEAT MAY BE TOLD IT (FR-55) — the diff, the
|
|
12
|
+
* primitives, the ops and the rules it would break or mend of a preview,
|
|
13
|
+
* an apply or an undo, for a surface that hands a seat what its own act
|
|
14
|
+
* did: an act may touch what its own seat may not see. Records and edges
|
|
15
|
+
* it is not served go, a field naming one it may not see is cleared as
|
|
16
|
+
* the view clears it, the ops are redacted as its log is, and a sentence
|
|
17
|
+
* that names what it may not see says only that a change it cannot see
|
|
18
|
+
* happened. With nothing kept from the seat, the answer as it is.
|
|
19
|
+
*/
|
|
20
|
+
export declare function answerSeenBy<A extends {
|
|
21
|
+
readonly diff?: GraphDiff<GraphNodeBase>;
|
|
22
|
+
readonly primitives?: readonly unknown[];
|
|
23
|
+
readonly reads?: readonly string[];
|
|
24
|
+
readonly writes?: readonly string[];
|
|
25
|
+
readonly intent?: string;
|
|
26
|
+
readonly introduces?: readonly Violation[];
|
|
27
|
+
readonly resolves?: readonly Violation[];
|
|
28
|
+
readonly violationsAfter?: readonly Violation[];
|
|
29
|
+
readonly ops?: readonly Operation[];
|
|
30
|
+
}>(store: Judged & {
|
|
31
|
+
allInvariants(): readonly InvariantDefinition[];
|
|
32
|
+
}, principal: Principal, answer: A): A;
|
|
33
|
+
/** A change's problems as a seat judges them over its own world: `@graview/core/lines` hands it over as it loads. */
|
|
34
|
+
type SeatJudged = (store: Store<AnySchema>, seat: Store<AnySchema>, made: boolean, served: readonly Primitive[]) => Record<"introduces" | "resolves" | "violationsAfter", Violation[]>;
|
|
35
|
+
/** Hands `answerSeenBy` what judges a change's problems over a seat's world. */
|
|
36
|
+
export declare const answersJudgedWith: (judge: SeatJudged) => void;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=answer-seen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-seen.d.ts","sourceRoot":"","sources":["../src/answer-seen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAA2B,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAOhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAA+B,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAQxC;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,CAAC,SAAS;IACR,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAChD,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CACrC,EACD,KAAK,EAAE,MAAM,GAAG;IAAE,aAAa,IAAI,SAAS,mBAAmB,EAAE,CAAA;CAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAwFzG;AAED,qHAAqH;AACrH,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,KAAK,MAAM,CAAC,YAAY,GAAG,UAAU,GAAG,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC;AAGvL,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,GAAI,OAAO,UAAU,KAAG,IAAqC,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { servePrimitives } from "./ops/served.js";
|
|
2
|
+
import { writersOf } from "./ops/writers.js";
|
|
3
|
+
import { withoutKeptFields } from "./ops/kept-fields.js";
|
|
4
|
+
import { namesUnseen, redact, WITHHELD_INTENT } from "./ops/withheld.js";
|
|
5
|
+
import { actingAs } from "./permissions/policy.js";
|
|
6
|
+
import { recordsOf } from "./permissions/sight.js";
|
|
7
|
+
import { hidesFrom, seatLens, seenBy } from "./seen.js";
|
|
8
|
+
/*
|
|
9
|
+
* A file of its own (FR-179): what a seat's tools hand back after an act is
|
|
10
|
+
* fetched with those tools (`@graview/core/seat`), and a page that only
|
|
11
|
+
* draws what its seat sees (`./seen.ts`) carries none of it up front.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* A CHANGE'S ANSWER AS ONE SEAT MAY BE TOLD IT (FR-55) — the diff, the
|
|
15
|
+
* primitives, the ops and the rules it would break or mend of a preview,
|
|
16
|
+
* an apply or an undo, for a surface that hands a seat what its own act
|
|
17
|
+
* did: an act may touch what its own seat may not see. Records and edges
|
|
18
|
+
* it is not served go, a field naming one it may not see is cleared as
|
|
19
|
+
* the view clears it, the ops are redacted as its log is, and a sentence
|
|
20
|
+
* that names what it may not see says only that a change it cannot see
|
|
21
|
+
* happened. With nothing kept from the seat, the answer as it is.
|
|
22
|
+
*/
|
|
23
|
+
export function answerSeenBy(store, principal, answer) {
|
|
24
|
+
if (!hidesFrom(store, principal))
|
|
25
|
+
return answer;
|
|
26
|
+
const lens = seatLens(store, principal);
|
|
27
|
+
const has = (id) => store.graph.getNode(id) !== undefined || recordsOf(store.log).kindOf(id) !== undefined;
|
|
28
|
+
const out = { ...answer };
|
|
29
|
+
if (answer.diff) {
|
|
30
|
+
const diff = answer.diff;
|
|
31
|
+
/*
|
|
32
|
+
* EACH SIDE AS WHO WROTE IT THEN (FR-55): the seat's own words are served
|
|
33
|
+
* as written, and the words a change replaced were somebody's before it.
|
|
34
|
+
* Before is judged as of the first op the answer made (now, for a
|
|
35
|
+
* preview); after as of now — and, for a preview, what it would write
|
|
36
|
+
* is the caller's.
|
|
37
|
+
*/
|
|
38
|
+
const writers = writersOf(store.log);
|
|
39
|
+
const end = store.log.length ?? store.log.all().length;
|
|
40
|
+
const first = answer.ops?.[0]?.seq ?? end;
|
|
41
|
+
const actor = actingAs(principal).id;
|
|
42
|
+
const wroteAt = (id, seq) => (field) => writers.writerAt(id, field, seq);
|
|
43
|
+
const node = (one, writer) => (lens.shows(one.id) ? lens.servedWith(one, writer) : undefined);
|
|
44
|
+
const nodes = (all, writer) => all.flatMap((one) => node(one, writer(one.id)) ?? []);
|
|
45
|
+
const edge = (one) => lens.shows(one.from) && lens.shows(one.to) && !namesUnseen(one, lens.sees);
|
|
46
|
+
const madeBy = (id, fields) => answer.ops ? wroteAt(id, end) : (field) => (fields === undefined || fields.includes(field) ? actor : writers.writerAt(id, field, end));
|
|
47
|
+
const changed = diff.changedNodes.flatMap((change) => {
|
|
48
|
+
const before = node(change.before, wroteAt(change.before.id, first));
|
|
49
|
+
const after = node(change.after, madeBy(change.after.id, change.fields));
|
|
50
|
+
return before && after ? [{ before, after, fields: change.fields.filter((field) => field in before || field in after) }] : [];
|
|
51
|
+
});
|
|
52
|
+
/*
|
|
53
|
+
* A WRITE THAT CHANGED NOTHING BUT WHOSE WORDS THEY ARE. A seat that
|
|
54
|
+
* wrote the value a field already held, naming what it may not see, made
|
|
55
|
+
* those words its own (FR-55): the store's graph did not move, and the
|
|
56
|
+
* seat's view of the record did. Said as a change, so the answer reads
|
|
57
|
+
* as it would had the field held anything else.
|
|
58
|
+
*/
|
|
59
|
+
const listed = new Set(diff.changedNodes.map((change) => change.after.id));
|
|
60
|
+
const patched = new Map();
|
|
61
|
+
for (const primitive of (answer.ops?.flatMap((op) => op.primitives) ?? answer.primitives ?? [])) {
|
|
62
|
+
if (primitive.op !== "patch-node" || listed.has(primitive.id))
|
|
63
|
+
continue;
|
|
64
|
+
patched.set(primitive.id, [...(patched.get(primitive.id) ?? []), ...Object.keys(primitive.after)]);
|
|
65
|
+
}
|
|
66
|
+
const kept = () => [...patched].flatMap(([id, fields]) => {
|
|
67
|
+
const held = store.graph.getNode(id);
|
|
68
|
+
if (!held)
|
|
69
|
+
return [];
|
|
70
|
+
const before = node(held, wroteAt(id, first));
|
|
71
|
+
const after = node(held, madeBy(id, fields));
|
|
72
|
+
return before && after && JSON.stringify(before) !== JSON.stringify(after) ? [{ before, after, fields }] : [];
|
|
73
|
+
});
|
|
74
|
+
const madeTheirs = kept();
|
|
75
|
+
out["diff"] = {
|
|
76
|
+
addedNodes: nodes(diff.addedNodes, (id) => madeBy(id)),
|
|
77
|
+
removedNodes: nodes(diff.removedNodes, (id) => wroteAt(id, first)),
|
|
78
|
+
changedNodes: [...changed, ...madeTheirs],
|
|
79
|
+
addedEdges: diff.addedEdges.filter(edge),
|
|
80
|
+
removedEdges: diff.removedEdges.filter(edge),
|
|
81
|
+
touched: [...diff.touched.filter(lens.shows), ...[...patched.keys()].filter((id) => lens.shows(id) && !diff.touched.includes(id))],
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (answer.ops)
|
|
85
|
+
out["ops"] = redact(answer.ops, lens);
|
|
86
|
+
if (answer.primitives) {
|
|
87
|
+
// An apply's primitives are its ops'; a preview's are not in the log yet, and are judged from the graph as it stands.
|
|
88
|
+
const ops = out["ops"];
|
|
89
|
+
out["primitives"] = ops
|
|
90
|
+
? ops.flatMap((op) => op.primitives)
|
|
91
|
+
: lens.timeline
|
|
92
|
+
? servePrimitives(answer.primitives, lens.timeline, { served: (node, writer) => lens.servedWith(node, writer), edgeClean: (edge) => !namesUnseen(edge, lens.sees), sees: lens.sees }, actingAs(principal).id)
|
|
93
|
+
: redact([{ id: "", seq: 0, batch: "", author: { kind: "system" }, intent: "", mutation: null, primitives: answer.primitives, inverse: [], reads: [], writes: [], at: "" }], lens)[0].primitives;
|
|
94
|
+
}
|
|
95
|
+
// What a change wrote of a field the seat may not see is no part of what it is told (Roadmap f-field-sight).
|
|
96
|
+
if (lens.kept && out["primitives"])
|
|
97
|
+
out["primitives"] = withoutKeptFields(out["primitives"], lens);
|
|
98
|
+
// Records the seat is served, and no id that names nothing: a hidden record and an absent one are left out alike (FR-55).
|
|
99
|
+
if (answer.reads)
|
|
100
|
+
out["reads"] = answer.reads.filter((id) => lens.shows(id) && has(id));
|
|
101
|
+
if (answer.writes)
|
|
102
|
+
out["writes"] = answer.writes.filter(lens.shows);
|
|
103
|
+
if (answer.intent !== undefined && namesUnseen(answer.intent, lens.sees))
|
|
104
|
+
out["intent"] = WITHHELD_INTENT;
|
|
105
|
+
/*
|
|
106
|
+
* THE RULES IT BROKE OR MENDED, AS THE SEAT JUDGES THEM (FR-55). Judged
|
|
107
|
+
* over the whole graph, whether a rule that counts, sweeps or walks was
|
|
108
|
+
* broken or mended depends on records this seat may not see, and its
|
|
109
|
+
* title alone says so. So they are judged again over the seat's own
|
|
110
|
+
* world: what it is served now, and that world with the change it is
|
|
111
|
+
* served taken back — or, for a preview, put on. The judging is
|
|
112
|
+
* `@graview/core/lines`', which a seat's tools load before they answer;
|
|
113
|
+
* without it, nothing judged over the whole graph is said.
|
|
114
|
+
*/
|
|
115
|
+
if (answer.violationsAfter)
|
|
116
|
+
Object.assign(out, judgedForASeat ? judgedForASeat(store, seenBy(store, principal), !!answer.ops, (out["primitives"] ?? [])) : { introduces: [], resolves: [], violationsAfter: [] });
|
|
117
|
+
return out;
|
|
118
|
+
}
|
|
119
|
+
let judgedForASeat;
|
|
120
|
+
/** Hands `answerSeenBy` what judges a change's problems over a seat's world. */
|
|
121
|
+
export const answersJudgedWith = (judge) => void (judgedForASeat = judge);
|
|
122
|
+
//# sourceMappingURL=answer-seen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-seen.js","sourceRoot":"","sources":["../src/answer-seen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { GraviewApp } from "./app.js";
|
|
2
|
+
import { type PlaceFinding, type ShippedLensName } from "./places.js";
|
|
3
|
+
import type { AnySchema } from "./schema/schema.js";
|
|
4
|
+
import { type PagesArrangement, type Place } from "./views/types.js";
|
|
5
|
+
/** What the arrangement asks that the declaration cannot honor: kinds and places that do not exist. */
|
|
6
|
+
export declare function arrangementFindings<S extends AnySchema>(app: GraviewApp<S>, places?: readonly Place[]): readonly PlaceFinding[];
|
|
7
|
+
/**
|
|
8
|
+
* ONE OF AN APP'S NAMED PLACES, as a host lists them (FR-79, FR-80): what it
|
|
9
|
+
* is called, what it is over, and its address on each face — `address` on
|
|
10
|
+
* the routed face, `stop` in the scene's fragment.
|
|
11
|
+
*/
|
|
12
|
+
export interface AppPlace {
|
|
13
|
+
/** The address word: a place's `as`, a kind's plural, or `home`. */
|
|
14
|
+
readonly slug: string;
|
|
15
|
+
readonly title: string;
|
|
16
|
+
/** The kind it is over; null for the home. A picture over several kinds is listed once, under the first. */
|
|
17
|
+
readonly kind: string | null;
|
|
18
|
+
/** Every kind a picture over several is over — the timetable of talks and workshops — each one's district going in to it. */
|
|
19
|
+
readonly over?: readonly string[];
|
|
20
|
+
readonly cardinality: "many";
|
|
21
|
+
/** Its path on the routed face: `/`, `/<plural>`, `/places/<as>`. */
|
|
22
|
+
readonly address: string;
|
|
23
|
+
/** Its stop in the scene: `#view=<as>`, `#focus=aggregate:<kind>`, or `#`. */
|
|
24
|
+
readonly stop: string;
|
|
25
|
+
/** Which shipped lens draws it, when a declared lens does. */
|
|
26
|
+
readonly lens?: ShippedLensName;
|
|
27
|
+
/** Left off the home by `pages.hide`; still reachable at its address. */
|
|
28
|
+
readonly hidden?: boolean;
|
|
29
|
+
/** Where the app opens (`pages.first`). */
|
|
30
|
+
readonly first?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* EVERY PLACE AN APP HAS, by name: the home, each declared lens that draws
|
|
34
|
+
* (and each place its registered views name, when the app carries them),
|
|
35
|
+
* and each kind — in the arrangement's order. What Graview Cloud's
|
|
36
|
+
* connector lists when an app is opened, and what a chat can send somebody
|
|
37
|
+
* to.
|
|
38
|
+
*/
|
|
39
|
+
export declare function placesOf<S extends AnySchema>(app: GraviewApp<S>): readonly AppPlace[];
|
|
40
|
+
/**
|
|
41
|
+
* THE SAME LIST FROM WHAT A FACE HOLDS: the schema, the places its view
|
|
42
|
+
* registry names, and the arrangement — what `placesOf` makes from the
|
|
43
|
+
* declaration, for a seat handed a store and its views rather than the app.
|
|
44
|
+
* One builder, so the two can never name, address or order a place
|
|
45
|
+
* differently.
|
|
46
|
+
*/
|
|
47
|
+
export declare function placesFrom(schema: AnySchema, lensPlaces: readonly Place[], options?: {
|
|
48
|
+
readonly pages?: PagesArrangement;
|
|
49
|
+
readonly lenses?: readonly {
|
|
50
|
+
readonly as: string;
|
|
51
|
+
readonly kinds: readonly string[];
|
|
52
|
+
readonly lens: ShippedLensName;
|
|
53
|
+
}[];
|
|
54
|
+
readonly home?: boolean;
|
|
55
|
+
}): readonly AppPlace[];
|
|
56
|
+
//# sourceMappingURL=app-places.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-places.d.ts","sourceRoot":"","sources":["../src/app-places.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAA8G,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAClL,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAqD,KAAK,gBAAgB,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAYxH,uGAAuG;AACvG,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,GAAE,SAAS,KAAK,EAAwB,GAAG,SAAS,YAAY,EAAE,CAiEpJ;AAeD;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4GAA4G;IAC5G,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,6HAA6H;IAC7H,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,QAAQ,EAAE,CAErF;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,SAAS,KAAK,EAAE,EAC5B,OAAO,GAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;KAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GACpM,SAAS,QAAQ,EAAE,CA0CrB"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { declaredLenses, MOST_STANDING, openingOf, orderKinds, OVERVIEW_PATH, OVERVIEW_SLUG, pagesTitle, sceneTitle } from "./places.js";
|
|
2
|
+
import { pluralLabel } from "./schema/define-node.js";
|
|
3
|
+
import { kindPath, onePerPicture, placePath, sharesItsName } from "./views/types.js";
|
|
4
|
+
/*
|
|
5
|
+
* EVERY PLACE AN APP HAS, AND WHAT ITS ARRANGEMENT ASKS THAT IT CANNOT
|
|
6
|
+
* HONOR. A file of its own (FR-179): the seat lists the places an ask can
|
|
7
|
+
* go to, a host lists them when an app is opened and the checker judges
|
|
8
|
+
* the arrangement — none of it before a page draws its bar, which reads
|
|
9
|
+
* the places that stand from `./places.ts` (`@graview/core/seat`,
|
|
10
|
+
* `@graview/core/check`).
|
|
11
|
+
*/
|
|
12
|
+
/** What the arrangement asks that the declaration cannot honor: kinds and places that do not exist. */
|
|
13
|
+
export function arrangementFindings(app, places = placesOfLenses(app)) {
|
|
14
|
+
const pages = app.pages;
|
|
15
|
+
const findings = [];
|
|
16
|
+
const taken = places.find((place) => place.as === OVERVIEW_SLUG);
|
|
17
|
+
if (taken) {
|
|
18
|
+
findings.push({
|
|
19
|
+
severity: "warning",
|
|
20
|
+
code: "pages-overview-taken",
|
|
21
|
+
path: "pages",
|
|
22
|
+
message: `The place "${taken.title}" has the address the scene keeps (${OVERVIEW_PATH}), so the bar's "${sceneTitle(pages)}" and it cannot both be reached there.`,
|
|
23
|
+
fix: `Give "${taken.title}" another title (or another "as"): the scene keeps ${OVERVIEW_PATH} whatever the declaration calls it.`,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (!pages)
|
|
27
|
+
return findings;
|
|
28
|
+
if (sceneTitle(pages).toLowerCase() === pagesTitle(pages).toLowerCase()) {
|
|
29
|
+
findings.push({
|
|
30
|
+
severity: "warning",
|
|
31
|
+
code: "pages-faces-alike",
|
|
32
|
+
path: "pages",
|
|
33
|
+
message: `The bar's switch would call both the scene and the pages "${sceneTitle(pages)}", so a reader could not tell its two buttons apart.`,
|
|
34
|
+
fix: `Give pages.scene and pages.pages two different words (unsaid, they are "Scene" and "Pages").`,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const kinds = app.schema.kinds;
|
|
38
|
+
for (const part of ["order", "hide"]) {
|
|
39
|
+
(pages[part] ?? []).forEach((kind, index) => {
|
|
40
|
+
if (!kinds.includes(kind)) {
|
|
41
|
+
findings.push({ severity: "warning", code: "pages-kind-unknown", path: `pages.${part}.${index}`, message: `pages.${part} names "${kind}", which is not a kind, so it is passed over.`, fix: `Use one of: ${kinds.join(", ")}.` });
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
(pages.primary ?? []).forEach((word, index) => {
|
|
46
|
+
const opening = openingOf(word, app.schema, places);
|
|
47
|
+
if (opening === undefined || opening.to === "home") {
|
|
48
|
+
findings.push({
|
|
49
|
+
severity: "warning",
|
|
50
|
+
code: "pages-primary-unknown",
|
|
51
|
+
path: `pages.primary.${index}`,
|
|
52
|
+
message: opening?.to === "home"
|
|
53
|
+
? `pages.primary names "${word}", but Home always stands on the bar, so it is passed over.`
|
|
54
|
+
: `pages.primary names "${word}", which is not a kind or a place, so it is passed over.`,
|
|
55
|
+
fix: `Name a kind (${kinds.join(", ")}) or a place (${places.map((place) => `"${place.title}"`).join(", ") || "none is declared"}).`,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
if ((pages.primary?.length ?? 0) > MOST_STANDING - 1) {
|
|
60
|
+
findings.push({
|
|
61
|
+
severity: "warning",
|
|
62
|
+
code: "pages-primary-many",
|
|
63
|
+
path: "pages.primary",
|
|
64
|
+
message: `pages.primary names ${pages.primary.length} places, and at most ${MOST_STANDING - 1} stand beside Home: the rest fold into "More" anyway.`,
|
|
65
|
+
fix: `Name the ${MOST_STANDING - 1} a person reaches for most.`,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (pages.first !== undefined && openingOf(pages.first, app.schema, places) === undefined) {
|
|
69
|
+
findings.push({
|
|
70
|
+
severity: "warning",
|
|
71
|
+
code: "pages-first-unknown",
|
|
72
|
+
path: "pages.first",
|
|
73
|
+
message: `pages.first is "${pages.first}", which is not a place, a kind or "home", so the app opens at its home.`,
|
|
74
|
+
fix: `Name a place (${places.map((place) => `"${place.title}"`).join(", ") || "none is declared"}), a kind, or "home".`,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return findings;
|
|
78
|
+
}
|
|
79
|
+
/** The places a declaration's lenses make, with any its registered views name. */
|
|
80
|
+
function placesOfLenses(app) {
|
|
81
|
+
const out = [];
|
|
82
|
+
for (const lens of declaredLenses(app).drawn) {
|
|
83
|
+
// One picture over several kinds is a place on each, and says so (`over`): every list names it once.
|
|
84
|
+
for (const kind of lens.kinds)
|
|
85
|
+
out.push({ kind, title: lens.title, as: lens.as, ...(lens.across ? { across: lens.across } : {}), ...(lens.kinds.length > 1 ? { over: lens.kinds } : {}) });
|
|
86
|
+
}
|
|
87
|
+
for (const place of app.views?.places?.() ?? []) {
|
|
88
|
+
if (!out.some((held) => held.kind === place.kind && held.as === place.as))
|
|
89
|
+
out.push(place);
|
|
90
|
+
}
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* EVERY PLACE AN APP HAS, by name: the home, each declared lens that draws
|
|
95
|
+
* (and each place its registered views name, when the app carries them),
|
|
96
|
+
* and each kind — in the arrangement's order. What Graview Cloud's
|
|
97
|
+
* connector lists when an app is opened, and what a chat can send somebody
|
|
98
|
+
* to.
|
|
99
|
+
*/
|
|
100
|
+
export function placesOf(app) {
|
|
101
|
+
return placesFrom(app.schema, placesOfLenses(app), { ...(app.pages ? { pages: app.pages } : {}), lenses: declaredLenses(app).drawn, home: (app.home?.length ?? 0) > 0 });
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* THE SAME LIST FROM WHAT A FACE HOLDS: the schema, the places its view
|
|
105
|
+
* registry names, and the arrangement — what `placesOf` makes from the
|
|
106
|
+
* declaration, for a seat handed a store and its views rather than the app.
|
|
107
|
+
* One builder, so the two can never name, address or order a place
|
|
108
|
+
* differently.
|
|
109
|
+
*/
|
|
110
|
+
export function placesFrom(schema, lensPlaces, options = {}) {
|
|
111
|
+
const { pages } = options;
|
|
112
|
+
const kindsDeclared = schema.kinds;
|
|
113
|
+
const places = lensPlaces.filter((place) => kindsDeclared.includes(place.kind));
|
|
114
|
+
const opening = openingOf(pages?.first, schema, places);
|
|
115
|
+
const hidden = new Set(pages?.hide ?? []);
|
|
116
|
+
const kinds = orderKinds(kindsDeclared, pages?.order);
|
|
117
|
+
const out = [
|
|
118
|
+
{ slug: "home", title: "Home", kind: null, cardinality: "many", address: "/", stop: "#", ...(opening?.to === "home" || (opening === undefined && options.home) ? { first: true } : {}) },
|
|
119
|
+
// The scene, a place like the others (FR-132): its stop rides on its address.
|
|
120
|
+
{ slug: OVERVIEW_SLUG, title: sceneTitle(pages), kind: null, cardinality: "many", address: OVERVIEW_PATH, stop: "#" },
|
|
121
|
+
];
|
|
122
|
+
// A picture over several kinds once, under the first of them in the arrangement's order.
|
|
123
|
+
const byKind = onePerPicture([...places].sort((a, b) => kinds.indexOf(a.kind) - kinds.indexOf(b.kind)));
|
|
124
|
+
for (const place of byKind) {
|
|
125
|
+
const lens = options.lenses?.find((one) => one.as === place.as && one.kinds.includes(place.kind));
|
|
126
|
+
const shared = sharesItsName(place, places);
|
|
127
|
+
out.push({
|
|
128
|
+
slug: place.as,
|
|
129
|
+
title: place.title,
|
|
130
|
+
kind: place.kind,
|
|
131
|
+
...(place.over ? { over: place.over.filter((kind) => kindsDeclared.includes(kind)) } : {}),
|
|
132
|
+
cardinality: "many",
|
|
133
|
+
address: placePath(place.as, shared ? kindPath(schema, place.kind).slice(1) : undefined),
|
|
134
|
+
stop: shared ? `#focus=aggregate:${place.kind}&in.view=${encodeURIComponent(place.as)}` : `#view=${encodeURIComponent(place.as)}`,
|
|
135
|
+
...(lens ? { lens: lens.lens } : {}),
|
|
136
|
+
...(opening?.to === "place" && opening.place.as === place.as && (opening.place.kind === place.kind || place.over?.includes(opening.place.kind)) ? { first: true } : {}),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
for (const kind of kinds) {
|
|
140
|
+
out.push({
|
|
141
|
+
slug: kindPath(schema, kind).slice(1),
|
|
142
|
+
title: pluralLabel(schema, kind),
|
|
143
|
+
kind,
|
|
144
|
+
cardinality: "many",
|
|
145
|
+
address: kindPath(schema, kind),
|
|
146
|
+
stop: `#focus=aggregate:${kind}`,
|
|
147
|
+
...(hidden.has(kind) ? { hidden: true } : {}),
|
|
148
|
+
...(opening?.to === "kind" && opening.kind === kind ? { first: true } : {}),
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return out;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=app-places.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-places.js","sourceRoot":"","sources":["../src/app-places.ts"],"names":[],"mappings":"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"}
|
package/dist/arrange.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* arranging. The types stay on `@graview/core`, where a declaration names
|
|
11
11
|
* them.
|
|
12
12
|
*/
|
|
13
|
-
export { arrangeable, asksForThePast, conditionHolds, edgesOf, NO_ARRANGEMENT, parseArrangement } from "./arrangement.js";
|
|
14
|
-
export { admitArrangement, arrange, arrangeAllows, bucketStart, formatArrangement, matches } from "./arranging.js";
|
|
13
|
+
export { arrangeable, asksForThePast, conditionHolds, edgesOf, NO_ARRANGEMENT, parseArrangement, throughEdges } from "./arrangement.js";
|
|
14
|
+
export { admitArrangement, arrange, arrangeAllows, bucketStart, formatArrangement, matches, } from "./arranging.js";
|
|
15
15
|
export type { Arrangeable, ArrangeContext, Arranged, ArrangeGraph, ArrangedGroup, Arrangement, ArrangementWords, ArrangeNode, ArrangeOffer, ArrangeOption, Condition, DateBucket, Grouping, OfferType, Sort, SortDirection, } from "./arrangement.js";
|
|
16
16
|
//# sourceMappingURL=arrange.d.ts.map
|
package/dist/arrange.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrange.d.ts","sourceRoot":"","sources":["../src/arrange.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"arrange.d.ts","sourceRoot":"","sources":["../src/arrange.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACxI,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,OAAO,GACR,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,WAAW,EACX,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,aAAa,GACd,MAAM,kBAAkB,CAAC"}
|
package/dist/arrange.js
CHANGED
|
@@ -10,6 +10,6 @@
|
|
|
10
10
|
* arranging. The types stay on `@graview/core`, where a declaration names
|
|
11
11
|
* them.
|
|
12
12
|
*/
|
|
13
|
-
export { arrangeable, asksForThePast, conditionHolds, edgesOf, NO_ARRANGEMENT, parseArrangement } from "./arrangement.js";
|
|
14
|
-
export { admitArrangement, arrange, arrangeAllows, bucketStart, formatArrangement, matches } from "./arranging.js";
|
|
13
|
+
export { arrangeable, asksForThePast, conditionHolds, edgesOf, NO_ARRANGEMENT, parseArrangement, throughEdges } from "./arrangement.js";
|
|
14
|
+
export { admitArrangement, arrange, arrangeAllows, bucketStart, formatArrangement, matches, } from "./arranging.js";
|
|
15
15
|
//# sourceMappingURL=arrange.js.map
|
package/dist/arrange.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrange.js","sourceRoot":"","sources":["../src/arrange.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"arrange.js","sourceRoot":"","sources":["../src/arrange.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACxI,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,OAAO,GACR,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrangement-words.d.ts","sourceRoot":"","sources":["../src/arrangement-words.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAyC,MAAM,kBAAkB,CAAC;AAqB7G,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAwBrE"}
|