@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keep-link.d.ts","sourceRoot":"","sources":["../../src/mutations/keep-link.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,oEAAoE;AACpE,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CA2BzF;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,EAAE,WAAW,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,OAAO,KAAG,SAAS,MAAM,EACoE,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as z from "../schema/zod.js";
|
|
2
|
+
import { MissingRecordError } from "../graph/graph.js";
|
|
3
|
+
import { edgeId } from "../graph/types.js";
|
|
4
|
+
import { labelOf } from "../schema/define-node.js";
|
|
5
|
+
/** The name of the act that accepts a provisional link (FR-172). */
|
|
6
|
+
export const KEEP_LINK = "keep-link";
|
|
7
|
+
/**
|
|
8
|
+
* "KEEP THIS LINK" (FR-172): a person accepting a link something less sure
|
|
9
|
+
* made. It takes the link away and puts it back in one op — the graph is as
|
|
10
|
+
* it was — so the log holds a person's op naming it, which is what makes a
|
|
11
|
+
* provisional link ordinary (`linkProvenances`); undone, the link is
|
|
12
|
+
* provisional again. Its arguments are the link: `{ kind, from, to }`.
|
|
13
|
+
*
|
|
14
|
+
* Every store answers to it and no list offers it: it is not one of the
|
|
15
|
+
* app's acts, and a face offers it beside the link it would keep (a line's
|
|
16
|
+
* acts, a record page's mark). It goes over the wire like any call, and is
|
|
17
|
+
* permitted to whoever may make or break links of its relation
|
|
18
|
+
* (`keepLinkVia`).
|
|
19
|
+
*/
|
|
20
|
+
export function keepLinkMutation(schema) {
|
|
21
|
+
const name = (graph, id) => {
|
|
22
|
+
const node = graph.getNode(id);
|
|
23
|
+
return node ? labelOf(schema.tryDefinition(node.kind), node) : id;
|
|
24
|
+
};
|
|
25
|
+
return {
|
|
26
|
+
name: KEEP_LINK,
|
|
27
|
+
title: "Keep this link",
|
|
28
|
+
input: z.object({ kind: z.string(), from: z.string(), to: z.string() }),
|
|
29
|
+
describe: (args, graph) => `Keep the link from ${name(graph, args.from)} to ${name(graph, args.to)}`,
|
|
30
|
+
// A link that is not there is refused by the graph itself, as missing.
|
|
31
|
+
apply(ctx, args) {
|
|
32
|
+
const { kind, from, to } = args;
|
|
33
|
+
/*
|
|
34
|
+
* AND ONE TO A RECORD THE SEAT MAY NOT SEE IS NOT THERE FOR IT (FR-55):
|
|
35
|
+
* its ends are plain ids, which a seat can guess, so it is refused in
|
|
36
|
+
* the graph's own words, alike whether the hidden record holds the
|
|
37
|
+
* link or nothing does. `ctx.graph` is what the seat is served.
|
|
38
|
+
*/
|
|
39
|
+
if (!ctx.graph.getNode(from) || !ctx.graph.getNode(to)) {
|
|
40
|
+
const id = edgeId({ kind, from, to });
|
|
41
|
+
throw new MissingRecordError(id, `Cannot remove missing edge ${id}`);
|
|
42
|
+
}
|
|
43
|
+
ctx.removeEdge({ kind, from, to });
|
|
44
|
+
ctx.addEdge({ kind, from, to });
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Who may keep a link of a relation: whoever may run a declared act that
|
|
50
|
+
* makes or breaks links of THAT relation — the policy's own grants, read
|
|
51
|
+
* again. A seat that may link a lease to its property may keep such a link,
|
|
52
|
+
* and is not thereby the judge of a link between two people; a link of a
|
|
53
|
+
* relation no act makes or breaks is kept by nobody a policy names.
|
|
54
|
+
*/
|
|
55
|
+
export const keepLinkVia = (mutations, relation) => [...mutations].filter((one) => !one.derived && one.name !== KEEP_LINK && typeof relation === "string" && (one.connects?.includes(relation) || one.severs?.includes(relation))).map((one) => one.name);
|
|
56
|
+
//# sourceMappingURL=keep-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keep-link.js","sourceRoot":"","sources":["../../src/mutations/keep-link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,oEAAoE;AACpE,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AAErC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAsB,MAAS;IAC7D,MAAM,IAAI,GAAG,CAAC,KAAuC,EAAE,EAAU,EAAE,EAAE;QACnE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAyE,CAAC;QACvG,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC,CAAC;IACF,OAAO;QACL,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAU;QAChF,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,sBAAsB,IAAI,CAAC,KAAK,EAAG,IAAyB,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAG,IAAuB,CAAC,EAAE,CAAC,EAAE;QAC9I,uEAAuE;QACvE,KAAK,CAAC,GAAG,EAAE,IAAI;YACb,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAkD,CAAC;YAC9E;;;;;eAKG;YACH,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;gBACvD,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtC,MAAM,IAAI,kBAAkB,CAAC,EAAE,EAAE,8BAA8B,EAAE,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACnC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;KAC0B,CAAC;AAChC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAsB,SAA6C,EAAE,QAAiB,EAAqB,EAAE,CACtI,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Policy, Principal } from "../permissions/types.js";
|
|
2
|
+
import type { AnySchema } from "../schema/schema.js";
|
|
3
|
+
import type { Judged } from "../seen.js";
|
|
4
|
+
import type { AnyMutationDefinition } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* THE ARGUMENTS OF AN ACT A SEAT IS NOT ASKED FOR (Roadmap f-field-sight):
|
|
7
|
+
* the ones that write a field its sight keeps from it — on the record it
|
|
8
|
+
* acts on, or on one it makes (judged as its own, as the store judges it).
|
|
9
|
+
* The store refuses such a write as an argument the act does not take, so
|
|
10
|
+
* a form that offered it would offer a refusal.
|
|
11
|
+
*/
|
|
12
|
+
export declare function keptArguments<S extends AnySchema>(store: Judged & {
|
|
13
|
+
readonly schema: S;
|
|
14
|
+
}, principal: Principal, mutation: AnyMutationDefinition<S>, subject?: string): ReadonlySet<string>;
|
|
15
|
+
/**
|
|
16
|
+
* THE ARGUMENTS OF AN ACT NO RECORD WOULD LET A SEAT WRITE, read off the
|
|
17
|
+
* declaration alone (Roadmap f-field-sight): each writes a field that no
|
|
18
|
+
* sight granting the seat that kind shows — on the kind the act makes, or
|
|
19
|
+
* every kind its subject takes. An agent's tool for the act lists none of
|
|
20
|
+
* them, so its schema never names a field the seat may not see; a field
|
|
21
|
+
* the seat sees on some records (its own child's phone) stays, and the
|
|
22
|
+
* store refuses the write on the rest, as `keptArguments` says per record.
|
|
23
|
+
* Judged as the policy says it whether or not field sight is loaded.
|
|
24
|
+
*/
|
|
25
|
+
export declare function argumentsNeverShown<S extends AnySchema>(schema: S, policy: Policy | undefined, principal: Principal, mutation: AnyMutationDefinition<S>): ReadonlySet<string>;
|
|
26
|
+
//# sourceMappingURL=kept-arguments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kept-arguments.d.ts","sourceRoot":"","sources":["../../src/mutations/kept-arguments.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,SAAS,EAC/C,KAAK,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;CAAE,EACtC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAClC,OAAO,CAAC,EAAE,MAAM,GACf,WAAW,CAAC,MAAM,CAAC,CAcrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,SAAS,EACrD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACjC,WAAW,CAAC,MAAM,CAAC,CAwBrB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { ARCHIVED } from "../graph/archived.js";
|
|
2
|
+
import { actingAs, grantsTo, isSystem } from "../permissions/policy.js";
|
|
3
|
+
import { FIELD_SIGHT, partialSight } from "../permissions/sight.js";
|
|
4
|
+
import { fieldsWrittenBy, subjectKindsOf } from "./derive-edits.js";
|
|
5
|
+
/**
|
|
6
|
+
* THE ARGUMENTS OF AN ACT A SEAT IS NOT ASKED FOR (Roadmap f-field-sight):
|
|
7
|
+
* the ones that write a field its sight keeps from it — on the record it
|
|
8
|
+
* acts on, or on one it makes (judged as its own, as the store judges it).
|
|
9
|
+
* The store refuses such a write as an argument the act does not take, so
|
|
10
|
+
* a form that offered it would offer a refusal.
|
|
11
|
+
*/
|
|
12
|
+
export function keptArguments(store, principal, mutation, subject) {
|
|
13
|
+
const kept = FIELD_SIGHT.keptFrom?.(store, principal);
|
|
14
|
+
const out = new Set();
|
|
15
|
+
if (!kept)
|
|
16
|
+
return out;
|
|
17
|
+
const shape = Object.keys(mutation.input.shape ?? {});
|
|
18
|
+
for (const kind of mutation.creates ?? []) {
|
|
19
|
+
const fields = kept({ id: "\u0000new", kind });
|
|
20
|
+
for (const name of shape)
|
|
21
|
+
if (fields?.(name))
|
|
22
|
+
out.add(name);
|
|
23
|
+
}
|
|
24
|
+
const node = subject === undefined ? undefined : store.graph.getNode(subject);
|
|
25
|
+
const definition = node && store.schema.tryDefinition(node.kind);
|
|
26
|
+
const fields = node && kept(node);
|
|
27
|
+
if (definition && fields)
|
|
28
|
+
for (const name of fieldsWrittenBy(mutation, definition))
|
|
29
|
+
if (fields(name) && shape.includes(name))
|
|
30
|
+
out.add(name);
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* THE ARGUMENTS OF AN ACT NO RECORD WOULD LET A SEAT WRITE, read off the
|
|
35
|
+
* declaration alone (Roadmap f-field-sight): each writes a field that no
|
|
36
|
+
* sight granting the seat that kind shows — on the kind the act makes, or
|
|
37
|
+
* every kind its subject takes. An agent's tool for the act lists none of
|
|
38
|
+
* them, so its schema never names a field the seat may not see; a field
|
|
39
|
+
* the seat sees on some records (its own child's phone) stays, and the
|
|
40
|
+
* store refuses the write on the rest, as `keptArguments` says per record.
|
|
41
|
+
* Judged as the policy says it whether or not field sight is loaded.
|
|
42
|
+
*/
|
|
43
|
+
export function argumentsNeverShown(schema, policy, principal, mutation) {
|
|
44
|
+
const out = new Set();
|
|
45
|
+
const sights = policy?.sees ?? [];
|
|
46
|
+
if (isSystem(principal) || !sights.some(partialSight))
|
|
47
|
+
return out;
|
|
48
|
+
const acting = actingAs(principal);
|
|
49
|
+
/** Whether a seat is shown a kind's field on some record: a sight granting it the kind shows it. */
|
|
50
|
+
const shown = (kind, field) => {
|
|
51
|
+
const granted = sights.filter((sight) => sight.kinds.includes(kind) && grantsTo(sight, acting));
|
|
52
|
+
if (!granted.some(partialSight))
|
|
53
|
+
return true;
|
|
54
|
+
return field === ARCHIVED || granted.some((sight) => !partialSight(sight) || ((sight.fields === undefined || sight.fields.includes(field)) && !sight.hide?.includes(field)));
|
|
55
|
+
};
|
|
56
|
+
const shape = Object.keys(mutation.input.shape ?? {});
|
|
57
|
+
const written = new Map();
|
|
58
|
+
const write = (field, seen) => written.set(field, written.get(field) === true || seen);
|
|
59
|
+
for (const kind of mutation.creates ?? []) {
|
|
60
|
+
const declared = Object.keys((schema.tryDefinition(kind)?.fields.shape ?? {}));
|
|
61
|
+
for (const name of shape)
|
|
62
|
+
if (declared.includes(name))
|
|
63
|
+
write(name, shown(kind, name));
|
|
64
|
+
}
|
|
65
|
+
for (const kind of subjectKindsOf(schema, mutation)) {
|
|
66
|
+
const definition = schema.tryDefinition(kind);
|
|
67
|
+
if (definition)
|
|
68
|
+
for (const name of fieldsWrittenBy(mutation, definition))
|
|
69
|
+
if (shape.includes(name))
|
|
70
|
+
write(name, shown(kind, name));
|
|
71
|
+
}
|
|
72
|
+
for (const [name, seen] of written)
|
|
73
|
+
if (!seen)
|
|
74
|
+
out.add(name);
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=kept-arguments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kept-arguments.js","sourceRoot":"","sources":["../../src/mutations/kept-arguments.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,84 +28,4 @@ export declare function nodeRefArgs(input: unknown): {
|
|
|
28
28
|
kinds: readonly string[];
|
|
29
29
|
optional: boolean;
|
|
30
30
|
}[];
|
|
31
|
-
/**
|
|
32
|
-
* What sort of answer an argument wants, read off its own declaration.
|
|
33
|
-
*
|
|
34
|
-
* The affordance layer could already say "this needs a `label`" and offer
|
|
35
|
-
* candidate ids for a node reference — but for a plain string or a date it
|
|
36
|
-
* offered a list of nothing, so half the actions in an interface were dead
|
|
37
|
-
* ends that looked live. The mutation's schema knows perfectly well that
|
|
38
|
-
* `label` is a non-empty string and `date` is `YYYY-MM-DD`; nothing had
|
|
39
|
-
* asked it.
|
|
40
|
-
*/
|
|
41
|
-
export type ArgShape =
|
|
42
|
-
/** Words; `long` where the field allows more than 500 characters — prose, asked for in a text area (FR-147). */
|
|
43
|
-
{
|
|
44
|
-
readonly type: "text";
|
|
45
|
-
readonly long?: true;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* A DATE, AND WITH `time` A TIME OF DAY IN IT. A workshop's start is
|
|
49
|
-
* `YYYY-MM-DDTHH:MM`; read as a plain date it got a date picker, whose
|
|
50
|
-
* `YYYY-MM-DD` the act's own pattern refused — on every face, so the
|
|
51
|
-
* workshop could not be made and the talk could not be given its slot.
|
|
52
|
-
*/
|
|
53
|
-
| {
|
|
54
|
-
readonly type: "date";
|
|
55
|
-
readonly time?: true;
|
|
56
|
-
}
|
|
57
|
-
/** A number, and its range where it says one: `step` is what its values are whole multiples of (FR-114), 1 for a whole number. */
|
|
58
|
-
| {
|
|
59
|
-
readonly type: "number";
|
|
60
|
-
readonly min?: number;
|
|
61
|
-
readonly max?: number;
|
|
62
|
-
readonly step?: number;
|
|
63
|
-
} | {
|
|
64
|
-
readonly type: "choice";
|
|
65
|
-
readonly options: readonly string[];
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* YES OR NO — an argument that takes a boolean.
|
|
69
|
-
*
|
|
70
|
-
* Undescribable until now, for the same reason a list was: an interface
|
|
71
|
-
* can only offer what it can ask for, so "Add a field" — whose `required`
|
|
72
|
-
* is a plain boolean — was derived NOWHERE. The studio's central act, in
|
|
73
|
-
* the studio, unreachable, because nothing could ask one question.
|
|
74
|
-
*/
|
|
75
|
-
| {
|
|
76
|
-
readonly type: "boolean";
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* SEVERAL OF A THING — an argument that takes a list.
|
|
80
|
-
*
|
|
81
|
-
* "Invite somebody as coordinator and gardener" is one act with two roles
|
|
82
|
-
* in one argument, and without this shape it described itself as `unknown`:
|
|
83
|
-
* an interface can only offer what it can ask for, so the act was offered
|
|
84
|
-
* NOWHERE. Not hidden behind a refusal — simply never derived, in every
|
|
85
|
-
* installation the framework ships.
|
|
86
|
-
*/
|
|
87
|
-
| {
|
|
88
|
-
readonly type: "several";
|
|
89
|
-
readonly of: ArgShape;
|
|
90
|
-
}
|
|
91
|
-
/** A picture or a document the host stores (FR-162), put on the record by its upload (FR-163); `image` where only a picture will do. */
|
|
92
|
-
| {
|
|
93
|
-
readonly type: "file";
|
|
94
|
-
readonly image?: true;
|
|
95
|
-
} | {
|
|
96
|
-
readonly type: "unknown";
|
|
97
|
-
};
|
|
98
|
-
/** Unwraps optional/default/nullable so a wrapped field still describes itself. */
|
|
99
|
-
export declare function unwrap(schema: unknown): unknown;
|
|
100
|
-
/**
|
|
101
|
-
* Zod 4 keeps the primitive type on `_def.type` and the refinements a UI
|
|
102
|
-
* actually needs — bounds, patterns — as the checks on its definition. Read
|
|
103
|
-
* from the checks themselves, not from `_zod.bag`, which zod 4.6 stopped
|
|
104
|
-
* filling as it builds a schema: the bounds and the date pattern read there
|
|
105
|
-
* vanished with a minor version. Reading them here, in one place, keeps
|
|
106
|
-
* every other layer free of zod internals.
|
|
107
|
-
*/
|
|
108
|
-
export declare function describeArg(schema: unknown): ArgShape;
|
|
109
|
-
/** The declared shape of one named argument of a mutation input object. */
|
|
110
|
-
export declare function argShape(input: unknown, name: string): ArgShape;
|
|
111
31
|
//# sourceMappingURL=node-ref.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-ref.d.ts","sourceRoot":"","sources":["../../src/mutations/node-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,IAAI,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"node-ref.d.ts","sourceRoot":"","sources":["../../src/mutations/node-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,IAAI,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AAqBtC;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAC5C,KAAK,GAAE,SAAS,CAAC,EAAE,GAAG,GAAS,GAC9B,OAAO,CAAC,SAAS,CAEnB;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,GAAE,SAAS,MAAM,EAAE,GAAG,GAAS,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAEnF;AAmBD,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAW3E;AAED,kHAAkH;AAClH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CACzB,KAAK,EAAE,OAAO,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,EAAE,CAUjE"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { z as classic } from "zod";
|
|
2
2
|
import * as z from "../schema/zod.js";
|
|
3
3
|
import { defOf } from "../schema/zod.js";
|
|
4
|
-
import { fileKindOf } from "../schema/files.js";
|
|
5
4
|
/**
|
|
6
5
|
* WHERE A NODE REFERENCE KEEPS ITS KINDS: on the schema itself, under a
|
|
7
6
|
* registry symbol.
|
|
@@ -80,96 +79,4 @@ export function nodeRefArgs(input) {
|
|
|
80
79
|
}
|
|
81
80
|
return args;
|
|
82
81
|
}
|
|
83
|
-
/** Unwraps optional/default/nullable so a wrapped field still describes itself. */
|
|
84
|
-
export function unwrap(schema) {
|
|
85
|
-
const inner = defOf(schema)?.innerType;
|
|
86
|
-
return inner === undefined ? schema : unwrap(inner);
|
|
87
|
-
}
|
|
88
|
-
/** What a number's declared format bounds it to, as zod's own `int()`, `int32()` … say. */
|
|
89
|
-
const NUMBER_FORMAT_RANGES = {
|
|
90
|
-
safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],
|
|
91
|
-
int32: [-2147483648, 2147483647],
|
|
92
|
-
uint32: [0, 4294967295],
|
|
93
|
-
float32: [-3.4028234663852886e38, 3.4028234663852886e38],
|
|
94
|
-
float64: [-Number.MAX_VALUE, Number.MAX_VALUE],
|
|
95
|
-
};
|
|
96
|
-
const checksOf = (field) => ((field?._zod?.def?.checks ?? []).map((check) => check._zod?.def).filter((def) => def !== undefined));
|
|
97
|
-
/**
|
|
98
|
-
* Zod 4 keeps the primitive type on `_def.type` and the refinements a UI
|
|
99
|
-
* actually needs — bounds, patterns — as the checks on its definition. Read
|
|
100
|
-
* from the checks themselves, not from `_zod.bag`, which zod 4.6 stopped
|
|
101
|
-
* filling as it builds a schema: the bounds and the date pattern read there
|
|
102
|
-
* vanished with a minor version. Reading them here, in one place, keeps
|
|
103
|
-
* every other layer free of zod internals.
|
|
104
|
-
*/
|
|
105
|
-
export function describeArg(schema) {
|
|
106
|
-
const field = unwrap(schema);
|
|
107
|
-
const def = defOf(field);
|
|
108
|
-
const type = def?.type;
|
|
109
|
-
const checks = checksOf(field);
|
|
110
|
-
if (type === "enum")
|
|
111
|
-
return { type: "choice", options: Object.keys(def?.entries ?? {}) };
|
|
112
|
-
const file = fileKindOf(field);
|
|
113
|
-
if (file)
|
|
114
|
-
return file === "image" ? { type: "file", image: true } : { type: "file" };
|
|
115
|
-
if (type === "boolean")
|
|
116
|
-
return { type: "boolean" };
|
|
117
|
-
/*
|
|
118
|
-
* A list describes itself through what it holds. An array of something
|
|
119
|
-
* nothing can describe is still unknown — saying "several unknowns" would
|
|
120
|
-
* make an unaskable argument look askable, which is the failure this whole
|
|
121
|
-
* shape exists to prevent.
|
|
122
|
-
*/
|
|
123
|
-
if (type === "array") {
|
|
124
|
-
const of = describeArg(def?.element);
|
|
125
|
-
return of.type === "unknown" ? { type: "unknown" } : { type: "several", of };
|
|
126
|
-
}
|
|
127
|
-
if (type === "number") {
|
|
128
|
-
let min;
|
|
129
|
-
let max;
|
|
130
|
-
let step;
|
|
131
|
-
for (const check of checks) {
|
|
132
|
-
if (check.check === "multiple_of" && typeof check.value === "number")
|
|
133
|
-
step = check.value;
|
|
134
|
-
else if (check.check === "number_format" && (check.format === "safeint" || check.format === "int32" || check.format === "uint32"))
|
|
135
|
-
step ??= 1;
|
|
136
|
-
const range = check.check === "number_format" && check.format ? NUMBER_FORMAT_RANGES[check.format] : undefined;
|
|
137
|
-
const low = range ? range[0] : check.check === "greater_than" && check.inclusive && typeof check.value === "number" ? check.value : undefined;
|
|
138
|
-
const high = range ? range[1] : check.check === "less_than" && check.inclusive && typeof check.value === "number" ? check.value : undefined;
|
|
139
|
-
if (low !== undefined)
|
|
140
|
-
min = min === undefined ? low : Math.max(min, low);
|
|
141
|
-
if (high !== undefined)
|
|
142
|
-
max = max === undefined ? high : Math.min(max, high);
|
|
143
|
-
}
|
|
144
|
-
return {
|
|
145
|
-
type: "number",
|
|
146
|
-
...(min === undefined ? {} : { min }),
|
|
147
|
-
...(max === undefined ? {} : { max }),
|
|
148
|
-
...(step === undefined ? {} : { step }),
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
if (type === "string") {
|
|
152
|
-
// A date is a string with a date-shaped pattern. Recognizing it means
|
|
153
|
-
// the interface offers a date picker instead of a free text box, which
|
|
154
|
-
// is the difference between an action anyone can run and one only its
|
|
155
|
-
// author knows the format for.
|
|
156
|
-
const own = def?.pattern;
|
|
157
|
-
const sources = [own, ...checks.map((check) => check.pattern)].filter((pattern) => pattern instanceof RegExp).map((pattern) => pattern.source);
|
|
158
|
-
if (sources.some((source) => source.includes("\\d{4}"))) {
|
|
159
|
-
// A time of day in the pattern as well: `T\d{2}:\d{2}`, or a space before it.
|
|
160
|
-
return sources.some((source) => source.includes("\\d{2}:\\d{2}")) ? { type: "date", time: true } : { type: "date" };
|
|
161
|
-
}
|
|
162
|
-
// Prose: more than 500 characters allowed — a document's `text` (FR-147), asked for in a text area.
|
|
163
|
-
const long = checks.some((check) => check.check === "max_length" && typeof check.maximum === "number" && check.maximum > 500);
|
|
164
|
-
return long ? { type: "text", long: true } : { type: "text" };
|
|
165
|
-
}
|
|
166
|
-
return { type: "unknown" };
|
|
167
|
-
}
|
|
168
|
-
/** The declared shape of one named argument of a mutation input object. */
|
|
169
|
-
export function argShape(input, name) {
|
|
170
|
-
const shape = input?.shape;
|
|
171
|
-
if (!shape || !(name in shape))
|
|
172
|
-
return { type: "unknown" };
|
|
173
|
-
return describeArg(shape[name]);
|
|
174
|
-
}
|
|
175
82
|
//# sourceMappingURL=node-ref.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-ref.js","sourceRoot":"","sources":["../../src/mutations/node-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,IAAI,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"node-ref.js","sourceRoot":"","sources":["../../src/mutations/node-ref.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,20 @@ export interface MutationContext<S extends AnySchema> {
|
|
|
19
19
|
/** Removes a node together with every edge touching it. */
|
|
20
20
|
removeNode(id: string): void;
|
|
21
21
|
patchNode(id: string, fields: Record<string, unknown>): void;
|
|
22
|
+
/**
|
|
23
|
+
* Sets a record aside (FR-173): its fields, links and history kept, and
|
|
24
|
+
* it out of lists, the Scene, counts, computed fields and rules. Nothing
|
|
25
|
+
* when it is archived already.
|
|
26
|
+
*/
|
|
27
|
+
archiveNode(id: string): void;
|
|
28
|
+
/** Brings an archived record back. Nothing when it is not archived. */
|
|
29
|
+
unarchiveNode(id: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* Merges two records that are one thing (FR-173): the kept one (`into`)
|
|
32
|
+
* takes the duplicate's links, and the duplicate is archived, its op
|
|
33
|
+
* saying `mergedInto`. Undone as one, like any act.
|
|
34
|
+
*/
|
|
35
|
+
mergeNode(duplicate: string, into: string): void;
|
|
22
36
|
addEdge(edge: GraphEdge): void;
|
|
23
37
|
removeEdge(edge: GraphEdge): void;
|
|
24
38
|
/** Replaces every `kind` edge arriving at `to` with one from `from`. */
|
|
@@ -166,9 +180,11 @@ export interface MutationDefinition<S extends AnySchema = AnySchema, Name extend
|
|
|
166
180
|
*/
|
|
167
181
|
readonly derived?: {
|
|
168
182
|
readonly kind: string;
|
|
169
|
-
readonly act:
|
|
183
|
+
readonly act: DerivedAct;
|
|
170
184
|
};
|
|
171
185
|
}
|
|
186
|
+
/** The acts the framework gives every kind: edit and remove, and archive, unarchive and merge (FR-173). */
|
|
187
|
+
export type DerivedAct = "edit" | "remove" | "archive" | "unarchive" | "merge" | "skip" | "detach" | "split";
|
|
172
188
|
export type AnyMutationDefinition<S extends AnySchema = AnySchema> = MutationDefinition<S, string, z.ZodType>;
|
|
173
189
|
/** A concrete, ready-to-apply mutation: a name plus validated arguments. */
|
|
174
190
|
export interface MutationCall<Name extends string = string> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mutations/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mutations/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { GraphError } from "../graph/graph.js";
|
|
2
1
|
import type { AnySchema } from "../schema/schema.js";
|
|
3
2
|
/** The parts of a mutation that say which kinds its arguments fill. */
|
|
4
3
|
interface Filling {
|
|
@@ -23,18 +22,6 @@ export declare function argumentWords(schema: AnySchema, mutation: Filling | und
|
|
|
23
22
|
readonly label: string;
|
|
24
23
|
readonly option: (value: string) => string;
|
|
25
24
|
};
|
|
26
|
-
/** Arguments a mutation refused, each with where it was and what was wrong. */
|
|
27
|
-
export declare class InvalidArguments extends GraphError {
|
|
28
|
-
readonly mutation: string;
|
|
29
|
-
readonly issues: readonly {
|
|
30
|
-
readonly path: readonly PropertyKey[];
|
|
31
|
-
readonly message: string;
|
|
32
|
-
}[];
|
|
33
|
-
constructor(mutation: string, issues: readonly {
|
|
34
|
-
readonly path: readonly PropertyKey[];
|
|
35
|
-
readonly message: string;
|
|
36
|
-
}[]);
|
|
37
|
-
}
|
|
38
25
|
/**
|
|
39
26
|
* WHY A PRESS DID NOT TAKE, in a person's words.
|
|
40
27
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../../src/mutations/words.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../../src/mutations/words.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,uEAAuE;AACvE,UAAU,OAAO;IACf,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACtF;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,IAAI,EAAE,MAAM,GACX;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,CAexE;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,OAAO,EAAE,EAC7B,KAAK,EAAE,OAAO,GACb,MAAM,CAUR"}
|
package/dist/mutations/words.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InvalidArguments } from "./invalid-arguments.js";
|
|
2
2
|
import { fieldWords, humanizeField } from "../schema/define-node.js";
|
|
3
3
|
/**
|
|
4
4
|
* AN ARGUMENT ASKED FOR IN THE RECORD'S OWN WORDS.
|
|
@@ -27,17 +27,6 @@ export function argumentWords(schema, mutation, name) {
|
|
|
27
27
|
}
|
|
28
28
|
return { label: fieldWords(undefined, name), option: (value) => humanizeField(value) };
|
|
29
29
|
}
|
|
30
|
-
/** Arguments a mutation refused, each with where it was and what was wrong. */
|
|
31
|
-
export class InvalidArguments extends GraphError {
|
|
32
|
-
mutation;
|
|
33
|
-
issues;
|
|
34
|
-
constructor(mutation, issues) {
|
|
35
|
-
super(`Invalid arguments for mutation "${mutation}"`, issues.map((issue) => `${issue.path.map(String).join(".") || "(root)"}: ${issue.message}`).join("; "));
|
|
36
|
-
this.mutation = mutation;
|
|
37
|
-
this.issues = issues;
|
|
38
|
-
this.name = "InvalidArguments";
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
30
|
/**
|
|
42
31
|
* WHY A PRESS DID NOT TAKE, in a person's words.
|
|
43
32
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"words.js","sourceRoot":"","sources":["../../src/mutations/words.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"words.js","sourceRoot":"","sources":["../../src/mutations/words.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AASrE;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAiB,EACjB,QAA6B,EAC7B,IAAY;IAEZ,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,CAAE,UAAU,EAAE,MAA0D,EAAE,KAAK,IAAI,EAAE,CAA4B,CAAC;QAChI,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC;YAAE,SAAS;QAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO;YACL,iFAAiF;YACjF,KAAK,EAAE,QAAQ,IAAI,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;YAC/C,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACnE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;AACzF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAiB,EACjB,SAA6B,EAC7B,KAAc;IAEd,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/G,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAC7G,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Primitive } from "../graph/primitives.js";
|
|
2
|
+
import type { SeatLens } from "./withheld.js";
|
|
3
|
+
/** The fields of a record a lens keeps, when it keeps any. */
|
|
4
|
+
export declare const keptOf: (lens: SeatLens, id: string) => ((field: string) => boolean) | undefined;
|
|
5
|
+
/** Primitives as the seat receives them: what a patch wrote of a field kept from it is no part of them. */
|
|
6
|
+
export declare function withoutKeptFields(primitives: readonly Primitive[], lens: SeatLens): Primitive[];
|
|
7
|
+
//# sourceMappingURL=kept-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kept-fields.d.ts","sourceRoot":"","sources":["../../src/ops/kept-fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQ9C,8DAA8D;AAC9D,eAAO,MAAM,MAAM,GAAI,MAAM,QAAQ,EAAE,IAAI,MAAM,KAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAGlF,CAAC;AAEF,2GAA2G;AAC3G,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,CAS/F"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* What a seat's lens keeps of a record's fields (Roadmap f-field-sight),
|
|
3
|
+
* read where an answer is served: apart from `@graview/core/field-sight`,
|
|
4
|
+
* so a page that answers its seat carries none of the judging.
|
|
5
|
+
*/
|
|
6
|
+
/** The fields of a record a lens keeps, when it keeps any. */
|
|
7
|
+
export const keptOf = (lens, id) => {
|
|
8
|
+
const kind = lens.kindOf(id);
|
|
9
|
+
return kind === undefined ? undefined : lens.kept?.({ id, kind });
|
|
10
|
+
};
|
|
11
|
+
/** Primitives as the seat receives them: what a patch wrote of a field kept from it is no part of them. */
|
|
12
|
+
export function withoutKeptFields(primitives, lens) {
|
|
13
|
+
return primitives.flatMap((primitive) => {
|
|
14
|
+
if (primitive.op !== "patch-node")
|
|
15
|
+
return [primitive];
|
|
16
|
+
const kept = keptOf(lens, primitive.id);
|
|
17
|
+
if (!kept || !Object.keys(primitive.after).some(kept))
|
|
18
|
+
return [primitive];
|
|
19
|
+
const keep = (side) => Object.fromEntries(Object.entries(side).filter(([field]) => !kept(field)));
|
|
20
|
+
const after = keep(primitive.after);
|
|
21
|
+
return Object.keys(after).length === 0 ? [] : [{ op: "patch-node", id: primitive.id, before: keep(primitive.before), after }];
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=kept-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kept-fields.js","sourceRoot":"","sources":["../../src/ops/kept-fields.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAc,EAAE,EAAU,EAA4C,EAAE;IAC7F,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7B,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,2GAA2G;AAC3G,MAAM,UAAU,iBAAiB,CAAC,UAAgC,EAAE,IAAc;IAChF,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAe,EAAE;QACnD,IAAI,SAAS,CAAC,EAAE,KAAK,YAAY;YAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,CAAC,IAAuC,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrI,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChI,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WHAT A CHANGE WAS BASED ON, AND HOW SURE ITS MAKER WAS (FR-172).
|
|
3
|
+
*
|
|
4
|
+
* An author says who moved; it is the same for every change a seat makes,
|
|
5
|
+
* so it cannot say why THIS one was made. A background actor that links
|
|
6
|
+
* and prunes on its own ("Graview, tidying") owes the reader a reason per
|
|
7
|
+
* change — "both name the Harbor Street lease" — and a measure of how far
|
|
8
|
+
* to trust it. Lineage is that, kept on the op beside its author: in the
|
|
9
|
+
* log, on the wire, on the history line and the record's page.
|
|
10
|
+
*
|
|
11
|
+
* `confidence` is 0 to 1; one below 1 makes what the op links PROVISIONAL
|
|
12
|
+
* until a person touches it (`linkProvenance`). Absent, the maker did not
|
|
13
|
+
* say, and nothing is drawn quieter for it. `model` names what judged it,
|
|
14
|
+
* when a model did. The framework records, draws and explains; it never
|
|
15
|
+
* decides what to link.
|
|
16
|
+
*
|
|
17
|
+
* What draws a link or a history line reads `provenance.ts`; only the check
|
|
18
|
+
* every change is held to lives here, so a page carries the rest when it
|
|
19
|
+
* draws.
|
|
20
|
+
*/
|
|
21
|
+
export interface Lineage {
|
|
22
|
+
readonly basis: string;
|
|
23
|
+
readonly confidence?: number;
|
|
24
|
+
readonly model?: string;
|
|
25
|
+
}
|
|
26
|
+
/** The longest basis an op keeps: a reason, not a transcript. */
|
|
27
|
+
export declare const LINEAGE_BASIS_LIMIT = 500;
|
|
28
|
+
/** The longest model name an op keeps. */
|
|
29
|
+
export declare const LINEAGE_MODEL_LIMIT = 120;
|
|
30
|
+
/**
|
|
31
|
+
* A lineage as an op keeps it — the basis trimmed, keys it does not know
|
|
32
|
+
* dropped — or a GraphError: a basis of 1–500 characters, a confidence
|
|
33
|
+
* from 0 to 1, a model name of 1–120. Asked before anything is kept;
|
|
34
|
+
* nothing said is no lineage.
|
|
35
|
+
*/
|
|
36
|
+
export declare function lineageOf(value: unknown): Lineage | undefined;
|
|
37
|
+
//# sourceMappingURL=lineage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineage.d.ts","sourceRoot":"","sources":["../../src/ops/lineage.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,0CAA0C;AAC1C,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAc7D"}
|