@graview/core 0.1.61 → 0.1.63
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 +13 -1
- package/dist/app-places.d.ts.map +1 -1
- package/dist/app-places.js +2 -2
- package/dist/app-places.js.map +1 -1
- package/dist/app.d.ts +22 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js.map +1 -1
- package/dist/arranging.js +2 -2
- package/dist/arranging.js.map +1 -1
- package/dist/capabilities.js +1 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/cli/check/hidden-reads.d.ts.map +1 -1
- package/dist/cli/check/hidden-reads.js +26 -0
- package/dist/cli/check/hidden-reads.js.map +1 -1
- package/dist/cli/check/index.d.ts +2 -0
- package/dist/cli/check/index.d.ts.map +1 -1
- package/dist/cli/check/index.js +2 -0
- package/dist/cli/check/index.js.map +1 -1
- package/dist/cli/check/tidying.d.ts +14 -0
- package/dist/cli/check/tidying.d.ts.map +1 -0
- package/dist/cli/check/tidying.js +24 -0
- package/dist/cli/check/tidying.js.map +1 -0
- package/dist/cli/check/workflows.d.ts +11 -0
- package/dist/cli/check/workflows.d.ts.map +1 -0
- package/dist/cli/check/workflows.js +20 -0
- package/dist/cli/check/workflows.js.map +1 -0
- package/dist/cli/check.d.ts.map +1 -1
- package/dist/cli/check.js +3 -1
- package/dist/cli/check.js.map +1 -1
- package/dist/cli/describe.d.ts.map +1 -1
- package/dist/cli/describe.js +45 -2
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/document-schema.d.ts.map +1 -1
- package/dist/cli/document-schema.js +15 -2
- package/dist/cli/document-schema.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/compose.d.ts +11 -3
- package/dist/compose.d.ts.map +1 -1
- package/dist/compose.js +12 -2
- package/dist/compose.js.map +1 -1
- package/dist/css/sanitize.d.ts +125 -0
- package/dist/css/sanitize.d.ts.map +1 -0
- package/dist/css/sanitize.js +989 -0
- package/dist/css/sanitize.js.map +1 -0
- package/dist/css/tables.d.ts +55 -0
- package/dist/css/tables.d.ts.map +1 -0
- package/dist/css/tables.js +137 -0
- package/dist/css/tables.js.map +1 -0
- package/dist/css.d.ts +20 -0
- package/dist/css.d.ts.map +1 -0
- package/dist/css.js +19 -0
- package/dist/css.js.map +1 -0
- package/dist/days.d.ts +15 -0
- package/dist/days.d.ts.map +1 -1
- package/dist/days.js +21 -0
- package/dist/days.js.map +1 -1
- package/dist/describe.d.ts +1 -1
- package/dist/describe.d.ts.map +1 -1
- package/dist/document/act-findings.d.ts.map +1 -1
- package/dist/document/act-findings.js +80 -1
- package/dist/document/act-findings.js.map +1 -1
- package/dist/document/amount.d.ts +1 -1
- package/dist/document/amount.d.ts.map +1 -1
- package/dist/document/amount.js +2 -2
- package/dist/document/amount.js.map +1 -1
- package/dist/document/blocks.d.ts.map +1 -1
- package/dist/document/blocks.js +17 -1
- package/dist/document/blocks.js.map +1 -1
- package/dist/document/brand-check.d.ts +15 -1
- package/dist/document/brand-check.d.ts.map +1 -1
- package/dist/document/brand-check.js +80 -0
- package/dist/document/brand-check.js.map +1 -1
- package/dist/document/brand.d.ts.map +1 -1
- package/dist/document/brand.js +2 -0
- package/dist/document/brand.js.map +1 -1
- package/dist/document/compile-checked.d.ts.map +1 -1
- package/dist/document/compile-checked.js +5 -2
- package/dist/document/compile-checked.js.map +1 -1
- package/dist/document/compile.d.ts.map +1 -1
- package/dist/document/compile.js +96 -16
- package/dist/document/compile.js.map +1 -1
- package/dist/document/compiled.d.ts +32 -3
- package/dist/document/compiled.d.ts.map +1 -1
- package/dist/document/compiled.js +123 -12
- package/dist/document/compiled.js.map +1 -1
- package/dist/document/connection-findings.js +165 -22
- package/dist/document/connection-findings.js.map +1 -1
- package/dist/document/connection-spec.d.ts +38 -1
- package/dist/document/connection-spec.d.ts.map +1 -1
- package/dist/document/connection-spec.js +71 -7
- package/dist/document/connection-spec.js.map +1 -1
- package/dist/document/covers.d.ts +48 -0
- package/dist/document/covers.d.ts.map +1 -0
- package/dist/document/covers.js +90 -0
- package/dist/document/covers.js.map +1 -0
- package/dist/document/derives-findings.d.ts +4 -0
- package/dist/document/derives-findings.d.ts.map +1 -0
- package/dist/document/derives-findings.js +68 -0
- package/dist/document/derives-findings.js.map +1 -0
- package/dist/document/describe-forms.js +2 -2
- package/dist/document/describe-forms.js.map +1 -1
- package/dist/document/describe-place.d.ts +3 -0
- package/dist/document/describe-place.d.ts.map +1 -1
- package/dist/document/describe-place.js +11 -0
- package/dist/document/describe-place.js.map +1 -1
- package/dist/document/described.d.ts +28 -0
- package/dist/document/described.d.ts.map +1 -1
- package/dist/document/diff.d.ts +6 -0
- package/dist/document/diff.d.ts.map +1 -1
- package/dist/document/diff.js +53 -2
- package/dist/document/diff.js.map +1 -1
- package/dist/document/edit.d.ts +1 -1
- package/dist/document/edit.d.ts.map +1 -1
- package/dist/document/edit.js +366 -29
- package/dist/document/edit.js.map +1 -1
- package/dist/document/expr/evaluate.d.ts +17 -1
- package/dist/document/expr/evaluate.d.ts.map +1 -1
- package/dist/document/expr/evaluate.js +110 -2
- package/dist/document/expr/evaluate.js.map +1 -1
- package/dist/document/expr/index.d.ts +1 -0
- package/dist/document/expr/index.d.ts.map +1 -1
- package/dist/document/expr/index.js +2 -0
- package/dist/document/expr/index.js.map +1 -1
- package/dist/document/expr/typing.d.ts +24 -0
- package/dist/document/expr/typing.d.ts.map +1 -0
- package/dist/document/expr/typing.js +219 -0
- package/dist/document/expr/typing.js.map +1 -0
- package/dist/document/expr/when.d.ts +52 -0
- package/dist/document/expr/when.d.ts.map +1 -0
- package/dist/document/expr/when.js +215 -0
- package/dist/document/expr/when.js.map +1 -0
- package/dist/document/expr-type-findings.d.ts +5 -0
- package/dist/document/expr-type-findings.d.ts.map +1 -0
- package/dist/document/expr-type-findings.js +90 -0
- package/dist/document/expr-type-findings.js.map +1 -0
- package/dist/document/format-words.d.ts +1 -0
- package/dist/document/format-words.d.ts.map +1 -1
- package/dist/document/format-words.js +2 -2
- package/dist/document/format-words.js.map +1 -1
- package/dist/document/index.d.ts +6 -3
- package/dist/document/index.d.ts.map +1 -1
- package/dist/document/index.js +5 -2
- package/dist/document/index.js.map +1 -1
- package/dist/document/kept-in-step-with.d.ts +20 -0
- package/dist/document/kept-in-step-with.d.ts.map +1 -0
- package/dist/document/kept-in-step-with.js +38 -0
- package/dist/document/kept-in-step-with.js.map +1 -0
- package/dist/document/kept-in-step.d.ts.map +1 -1
- package/dist/document/kept-in-step.js +3 -1
- package/dist/document/kept-in-step.js.map +1 -1
- package/dist/document/linked-findings.js +1 -1
- package/dist/document/linked-findings.js.map +1 -1
- package/dist/document/money.d.ts +10 -2
- package/dist/document/money.d.ts.map +1 -1
- package/dist/document/money.js +14 -5
- package/dist/document/money.js.map +1 -1
- package/dist/document/policy-words.d.ts +2 -0
- package/dist/document/policy-words.d.ts.map +1 -1
- package/dist/document/policy-words.js +11 -1
- package/dist/document/policy-words.js.map +1 -1
- package/dist/document/rule-line.d.ts +7 -3
- package/dist/document/rule-line.d.ts.map +1 -1
- package/dist/document/rule-line.js +17 -2
- package/dist/document/rule-line.js.map +1 -1
- package/dist/document/rule-reads.d.ts.map +1 -1
- package/dist/document/rule-reads.js +3 -1
- package/dist/document/rule-reads.js.map +1 -1
- package/dist/document/rules.d.ts +30 -0
- package/dist/document/rules.d.ts.map +1 -1
- package/dist/document/rules.js +74 -0
- package/dist/document/rules.js.map +1 -1
- package/dist/document/schema.d.ts +110 -2
- package/dist/document/schema.d.ts.map +1 -1
- package/dist/document/schema.js +125 -10
- package/dist/document/schema.js.map +1 -1
- package/dist/document/template-parse.d.ts.map +1 -1
- package/dist/document/template-parse.js +7 -1
- package/dist/document/template-parse.js.map +1 -1
- package/dist/document/template.d.ts +2 -0
- package/dist/document/template.d.ts.map +1 -1
- package/dist/document/template.js +10 -1
- package/dist/document/template.js.map +1 -1
- package/dist/document/to-document.d.ts.map +1 -1
- package/dist/document/to-document.js +5 -3
- package/dist/document/to-document.js.map +1 -1
- package/dist/document/workflow-spec.d.ts +72 -0
- package/dist/document/workflow-spec.d.ts.map +1 -0
- package/dist/document/workflow-spec.js +45 -0
- package/dist/document/workflow-spec.js.map +1 -0
- package/dist/document.schema.json +1143 -50
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +2 -0
- package/dist/history.js.map +1 -1
- package/dist/index.d.ts +11 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/installation.d.ts +1 -1
- package/dist/invariants/types.d.ts +7 -2
- package/dist/invariants/types.d.ts.map +1 -1
- package/dist/job-findings.d.ts +5 -0
- package/dist/job-findings.d.ts.map +1 -1
- package/dist/job-findings.js +9 -3
- package/dist/job-findings.js.map +1 -1
- package/dist/keep-linked.d.ts +45 -0
- package/dist/keep-linked.d.ts.map +1 -0
- package/dist/keep-linked.js +188 -0
- package/dist/keep-linked.js.map +1 -0
- package/dist/lines.d.ts.map +1 -1
- package/dist/lines.js +6 -2
- package/dist/lines.js.map +1 -1
- package/dist/mutations/derive-edits.js +2 -2
- package/dist/mutations/propose-changes.d.ts +24 -0
- package/dist/mutations/propose-changes.d.ts.map +1 -0
- package/dist/mutations/propose-changes.js +30 -0
- package/dist/mutations/propose-changes.js.map +1 -0
- package/dist/mutations/types.d.ts +9 -0
- package/dist/mutations/types.d.ts.map +1 -1
- package/dist/mutations/vote-suggestion.d.ts +97 -0
- package/dist/mutations/vote-suggestion.d.ts.map +1 -0
- package/dist/mutations/vote-suggestion.js +59 -0
- package/dist/mutations/vote-suggestion.js.map +1 -0
- package/dist/mutations/words.js +3 -3
- package/dist/navigate.d.ts +7 -3
- package/dist/navigate.d.ts.map +1 -1
- package/dist/navigate.js +7 -3
- package/dist/navigate.js.map +1 -1
- package/dist/ops/digest.d.ts +3 -1
- package/dist/ops/digest.d.ts.map +1 -1
- package/dist/ops/digest.js +7 -2
- package/dist/ops/digest.js.map +1 -1
- package/dist/ops/lineage.d.ts +29 -2
- package/dist/ops/lineage.d.ts.map +1 -1
- package/dist/ops/lineage.js +12 -4
- package/dist/ops/lineage.js.map +1 -1
- package/dist/ops/log.d.ts.map +1 -1
- package/dist/ops/log.js +13 -2
- package/dist/ops/log.js.map +1 -1
- package/dist/ops/suggestions.d.ts +75 -1
- package/dist/ops/suggestions.d.ts.map +1 -1
- package/dist/ops/suggestions.js +123 -6
- package/dist/ops/suggestions.js.map +1 -1
- package/dist/ops/tidying.d.ts.map +1 -1
- package/dist/ops/tidying.js +6 -1
- package/dist/ops/tidying.js.map +1 -1
- package/dist/ops/types.d.ts +41 -0
- package/dist/ops/types.d.ts.map +1 -1
- package/dist/ops/types.js.map +1 -1
- package/dist/ops/undo.d.ts.map +1 -1
- package/dist/ops/undo.js +17 -0
- package/dist/ops/undo.js.map +1 -1
- package/dist/permissions/policy.d.ts +7 -0
- package/dist/permissions/policy.d.ts.map +1 -1
- package/dist/permissions/policy.js +12 -0
- package/dist/permissions/policy.js.map +1 -1
- package/dist/permissions/types.d.ts +27 -0
- package/dist/permissions/types.d.ts.map +1 -1
- package/dist/permissions/types.js.map +1 -1
- package/dist/place-names.d.ts +42 -0
- package/dist/place-names.d.ts.map +1 -0
- package/dist/place-names.js +43 -0
- package/dist/place-names.js.map +1 -0
- package/dist/places.d.ts +12 -0
- package/dist/places.d.ts.map +1 -1
- package/dist/places.js +37 -1
- package/dist/places.js.map +1 -1
- package/dist/scene.d.ts +2 -0
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +2 -0
- package/dist/scene.js.map +1 -1
- package/dist/schema/amount-mark.d.ts +2 -0
- package/dist/schema/amount-mark.d.ts.map +1 -1
- package/dist/schema/amount-mark.js.map +1 -1
- package/dist/schema/amount-words.js +2 -2
- package/dist/schema/amount-words.js.map +1 -1
- package/dist/schema/choice-words.js +2 -2
- package/dist/schema/define-node.d.ts +8 -2
- package/dist/schema/define-node.d.ts.map +1 -1
- package/dist/schema/define-node.js +2 -2
- package/dist/schema/define-node.js.map +1 -1
- package/dist/schema/humanize.d.ts +17 -0
- package/dist/schema/humanize.d.ts.map +1 -1
- package/dist/schema/humanize.js +28 -1
- package/dist/schema/humanize.js.map +1 -1
- package/dist/schema/reading.d.ts +8 -0
- package/dist/schema/reading.d.ts.map +1 -1
- package/dist/schema/reading.js +16 -2
- package/dist/schema/reading.js.map +1 -1
- package/dist/schema/types.d.ts +8 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/value-words.js +2 -2
- package/dist/schema/value-words.js.map +1 -1
- package/dist/starting-document.d.ts +47 -2
- package/dist/starting-document.d.ts.map +1 -1
- package/dist/starting-document.js +66 -8
- package/dist/starting-document.js.map +1 -1
- package/dist/store.d.ts +75 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +305 -29
- package/dist/store.js.map +1 -1
- package/dist/sync/connection.d.ts +35 -6
- package/dist/sync/connection.d.ts.map +1 -1
- package/dist/sync/connection.js +252 -47
- package/dist/sync/connection.js.map +1 -1
- package/dist/sync/engine.d.ts +83 -0
- package/dist/sync/engine.d.ts.map +1 -1
- package/dist/sync/engine.js +157 -4
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync/google-calendar.d.ts +8 -0
- package/dist/sync/google-calendar.d.ts.map +1 -1
- package/dist/sync/google-calendar.js +30 -3
- package/dist/sync/google-calendar.js.map +1 -1
- package/dist/sync/guest-words.d.ts +9 -0
- package/dist/sync/guest-words.d.ts.map +1 -0
- package/dist/sync/guest-words.js +41 -0
- package/dist/sync/guest-words.js.map +1 -0
- package/dist/sync/guests.d.ts +44 -0
- package/dist/sync/guests.d.ts.map +1 -0
- package/dist/sync/guests.js +57 -0
- package/dist/sync/guests.js.map +1 -0
- package/dist/sync/index.d.ts +8 -5
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +2 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/notion-stub.d.ts +4 -1
- package/dist/sync/notion-stub.d.ts.map +1 -1
- package/dist/sync/notion-stub.js +40 -0
- package/dist/sync/notion-stub.js.map +1 -1
- package/dist/sync/notion.d.ts +43 -2
- package/dist/sync/notion.d.ts.map +1 -1
- package/dist/sync/notion.js +274 -140
- package/dist/sync/notion.js.map +1 -1
- package/dist/sync/status.d.ts +43 -0
- package/dist/sync/status.d.ts.map +1 -0
- package/dist/sync/status.js +45 -0
- package/dist/sync/status.js.map +1 -0
- package/dist/sync/types.d.ts +64 -0
- package/dist/sync/types.d.ts.map +1 -1
- package/dist/sync/types.js.map +1 -1
- package/dist/testing.js +1 -1
- package/dist/testing.js.map +1 -1
- package/dist/theme/contrast.d.ts +2 -0
- package/dist/theme/contrast.d.ts.map +1 -1
- package/dist/theme/contrast.js +4 -0
- package/dist/theme/contrast.js.map +1 -1
- package/dist/theme/ground.d.ts +1 -2
- package/dist/theme/ground.d.ts.map +1 -1
- package/dist/theme/ground.js +2 -5
- package/dist/theme/ground.js.map +1 -1
- package/dist/theme/marks.d.ts +14 -2
- package/dist/theme/marks.d.ts.map +1 -1
- package/dist/theme/marks.js +20 -3
- package/dist/theme/marks.js.map +1 -1
- package/dist/theme/types.d.ts +22 -0
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/theme/types.js.map +1 -1
- package/dist/tidying.d.ts +79 -4
- package/dist/tidying.d.ts.map +1 -1
- package/dist/tidying.js +216 -9
- package/dist/tidying.js.map +1 -1
- package/dist/trait-vocabulary.d.ts +17 -0
- package/dist/trait-vocabulary.d.ts.map +1 -0
- package/dist/trait-vocabulary.js +16 -0
- package/dist/trait-vocabulary.js.map +1 -0
- package/dist/traits.d.ts +14 -7
- package/dist/traits.d.ts.map +1 -1
- package/dist/traits.js +33 -12
- package/dist/traits.js.map +1 -1
- package/dist/validate-graph.d.ts +2 -1
- package/dist/validate-graph.d.ts.map +1 -1
- package/dist/validate-graph.js +32 -1
- package/dist/validate-graph.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/words.d.ts +4 -1
- package/dist/words.d.ts.map +1 -1
- package/dist/words.js +4 -1
- package/dist/words.js.map +1 -1
- package/dist/workflow-shape.d.ts +217 -0
- package/dist/workflow-shape.d.ts.map +1 -0
- package/dist/workflow-shape.js +31 -0
- package/dist/workflow-shape.js.map +1 -0
- package/dist/workflows/findings.d.ts +13 -0
- package/dist/workflows/findings.d.ts.map +1 -0
- package/dist/workflows/findings.js +157 -0
- package/dist/workflows/findings.js.map +1 -0
- package/dist/workflows/generate-words.d.ts +12 -0
- package/dist/workflows/generate-words.d.ts.map +1 -0
- package/dist/workflows/generate-words.js +25 -0
- package/dist/workflows/generate-words.js.map +1 -0
- package/dist/workflows/generate.d.ts +59 -0
- package/dist/workflows/generate.d.ts.map +1 -0
- package/dist/workflows/generate.js +165 -0
- package/dist/workflows/generate.js.map +1 -0
- package/dist/workflows/judging.d.ts +17 -0
- package/dist/workflows/judging.d.ts.map +1 -0
- package/dist/workflows/judging.js +11 -0
- package/dist/workflows/judging.js.map +1 -0
- package/dist/workflows/next.d.ts +18 -0
- package/dist/workflows/next.d.ts.map +1 -0
- package/dist/workflows/next.js +75 -0
- package/dist/workflows/next.js.map +1 -0
- package/dist/workflows/on-the-map.d.ts +70 -0
- package/dist/workflows/on-the-map.d.ts.map +1 -0
- package/dist/workflows/on-the-map.js +94 -0
- package/dist/workflows/on-the-map.js.map +1 -0
- package/dist/workflows/policies.d.ts +39 -0
- package/dist/workflows/policies.d.ts.map +1 -0
- package/dist/workflows/policies.js +95 -0
- package/dist/workflows/policies.js.map +1 -0
- package/dist/workflows/resolve.d.ts +55 -0
- package/dist/workflows/resolve.d.ts.map +1 -0
- package/dist/workflows/resolve.js +57 -0
- package/dist/workflows/resolve.js.map +1 -0
- package/dist/workflows/schedule.d.ts +28 -0
- package/dist/workflows/schedule.d.ts.map +1 -0
- package/dist/workflows/schedule.js +160 -0
- package/dist/workflows/schedule.js.map +1 -0
- package/dist/workflows/step-act.d.ts +6 -0
- package/dist/workflows/step-act.d.ts.map +1 -0
- package/dist/workflows/step-act.js +79 -0
- package/dist/workflows/step-act.js.map +1 -0
- package/dist/workflows/step-agent.d.ts +4 -0
- package/dist/workflows/step-agent.d.ts.map +1 -0
- package/dist/workflows/step-agent.js +55 -0
- package/dist/workflows/step-agent.js.map +1 -0
- package/dist/workflows/step-archive.d.ts +8 -0
- package/dist/workflows/step-archive.d.ts.map +1 -0
- package/dist/workflows/step-archive.js +74 -0
- package/dist/workflows/step-archive.js.map +1 -0
- package/dist/workflows/step-classify.d.ts +23 -0
- package/dist/workflows/step-classify.d.ts.map +1 -0
- package/dist/workflows/step-classify.js +143 -0
- package/dist/workflows/step-classify.js.map +1 -0
- package/dist/workflows/step-generate.d.ts +7 -0
- package/dist/workflows/step-generate.d.ts.map +1 -0
- package/dist/workflows/step-generate.js +185 -0
- package/dist/workflows/step-generate.js.map +1 -0
- package/dist/workflows/steps.d.ts +75 -0
- package/dist/workflows/steps.d.ts.map +1 -0
- package/dist/workflows/steps.js +40 -0
- package/dist/workflows/steps.js.map +1 -0
- package/dist/workflows/triggered.d.ts +22 -0
- package/dist/workflows/triggered.d.ts.map +1 -0
- package/dist/workflows/triggered.js +52 -0
- package/dist/workflows/triggered.js.map +1 -0
- package/dist/workflows/values.d.ts +28 -0
- package/dist/workflows/values.d.ts.map +1 -0
- package/dist/workflows/values.js +75 -0
- package/dist/workflows/values.js.map +1 -0
- package/dist/workflows/words.d.ts +10 -0
- package/dist/workflows/words.d.ts.map +1 -0
- package/dist/workflows/words.js +30 -0
- package/dist/workflows/words.js.map +1 -0
- package/dist/workflows/world.d.ts +23 -0
- package/dist/workflows/world.d.ts.map +1 -0
- package/dist/workflows/world.js +50 -0
- package/dist/workflows/world.js.map +1 -0
- package/dist/workflows.d.ts +35 -0
- package/dist/workflows.d.ts.map +1 -0
- package/dist/workflows.js +20 -0
- package/dist/workflows.js.map +1 -0
- package/package.json +18 -2
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { ARCHIVED, isArchived } from "./graph/archived.js";
|
|
2
|
+
const FOLLOWERS = new WeakMap();
|
|
3
|
+
function followersOf(schema) {
|
|
4
|
+
let found = FOLLOWERS.get(schema);
|
|
5
|
+
if (found)
|
|
6
|
+
return found;
|
|
7
|
+
const bySource = new Map();
|
|
8
|
+
const byKind = new Map();
|
|
9
|
+
for (const definition of schema.definitions) {
|
|
10
|
+
const derives = definition.derives;
|
|
11
|
+
if (!derives)
|
|
12
|
+
continue;
|
|
13
|
+
byKind.set(definition.kind, derives);
|
|
14
|
+
bySource.set(derives.from, [...(bySource.get(derives.from) ?? []), [definition.kind, derives]]);
|
|
15
|
+
}
|
|
16
|
+
FOLLOWERS.set(schema, (found = { bySource, byKind }));
|
|
17
|
+
return found;
|
|
18
|
+
}
|
|
19
|
+
/** Whether any kind of the app follows another: a store with none does no more work than before. */
|
|
20
|
+
export const keepsLinked = (schema) => followersOf(schema).byKind.size > 0;
|
|
21
|
+
/** The records a derived record follows, through its declaration's relation. */
|
|
22
|
+
export function sourcesOf(graph, derives, derived) {
|
|
23
|
+
const options = { archived: "all" };
|
|
24
|
+
return (derives.sourceEnd === "to" ? graph.out(derived, derives.via, options) : graph.in(derived, derives.via, options)).filter((node) => node.kind === derives.from);
|
|
25
|
+
}
|
|
26
|
+
/** The records of a kind that follow a source record. */
|
|
27
|
+
function derivedOf(graph, kind, derives, source) {
|
|
28
|
+
const options = { archived: "all" };
|
|
29
|
+
return (derives.sourceEnd === "to" ? graph.in(source, derives.via, options) : graph.out(source, derives.via, options)).filter((node) => node.kind === kind);
|
|
30
|
+
}
|
|
31
|
+
const same = (a, b) => JSON.stringify(a ?? null) === JSON.stringify(b ?? null);
|
|
32
|
+
/** A patch that moves a record to `fields`, saying only what changes; undefined when nothing does. */
|
|
33
|
+
function patchTo(node, fields) {
|
|
34
|
+
const before = {};
|
|
35
|
+
const after = {};
|
|
36
|
+
for (const [field, value] of Object.entries(fields)) {
|
|
37
|
+
const current = node[field];
|
|
38
|
+
if (same(current, value))
|
|
39
|
+
continue;
|
|
40
|
+
before[field] = current;
|
|
41
|
+
after[field] = value;
|
|
42
|
+
}
|
|
43
|
+
return Object.keys(after).length > 0 ? { op: "patch-node", id: node.id, before, after } : undefined;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* THE CHANGES THAT KEEP DERIVED RECORDS IN STEP WITH `made`, a change just
|
|
47
|
+
* applied to `graph`: applied to it here, one at a time, and returned, for
|
|
48
|
+
* the store to keep in the same operation. Nothing when no kind derives.
|
|
49
|
+
*/
|
|
50
|
+
export function keepLinked(schema, graph, made, options = {}) {
|
|
51
|
+
const { bySource, byKind } = followersOf(schema);
|
|
52
|
+
if (byKind.size === 0)
|
|
53
|
+
return [];
|
|
54
|
+
const out = [];
|
|
55
|
+
const apply = (primitive) => {
|
|
56
|
+
if (!primitive)
|
|
57
|
+
return;
|
|
58
|
+
graph.applyPrimitives([primitive]);
|
|
59
|
+
out.push(primitive);
|
|
60
|
+
};
|
|
61
|
+
const kindOf = (id) => graph.getNode(id)?.kind;
|
|
62
|
+
// Each source to hand its values on, with whether its archived mark moved in this change.
|
|
63
|
+
const touched = new Map();
|
|
64
|
+
const touch = (id, archivedMoved = false) => touched.set(id, (touched.get(id) ?? false) || archivedMoved);
|
|
65
|
+
const removed = new Set(made.flatMap((p) => (p.op === "remove-node" ? [p.node.id] : [])));
|
|
66
|
+
// What the change set on a source itself: that wins over the same field changed on a derived record in it.
|
|
67
|
+
const setOnSource = new Map();
|
|
68
|
+
// And what it set on a derived record: kept, unless its source was changed itself.
|
|
69
|
+
const setOnDerived = new Map();
|
|
70
|
+
for (const p of made) {
|
|
71
|
+
if (p.op === "patch-node" && byKind.has(kindOf(p.id) ?? ""))
|
|
72
|
+
setOnDerived.set(p.id, new Set([...(setOnDerived.get(p.id) ?? []), ...Object.keys(p.after)]));
|
|
73
|
+
if (p.op === "add-node" && bySource.has(p.node.kind))
|
|
74
|
+
touch(p.node.id);
|
|
75
|
+
else if (p.op === "patch-node") {
|
|
76
|
+
const kind = kindOf(p.id);
|
|
77
|
+
if (kind && bySource.has(kind)) {
|
|
78
|
+
touch(p.id, ARCHIVED in p.after);
|
|
79
|
+
setOnSource.set(p.id, new Set([...(setOnSource.get(p.id) ?? []), ...Object.keys(p.after)]));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else if (p.op === "add-edge") {
|
|
83
|
+
// A link made between a source and a record that follows it: the record takes the source's values now.
|
|
84
|
+
const from = graph.getNode(p.edge.from);
|
|
85
|
+
const to = graph.getNode(p.edge.to);
|
|
86
|
+
for (const [source, derived] of [
|
|
87
|
+
[from, to],
|
|
88
|
+
[to, from],
|
|
89
|
+
]) {
|
|
90
|
+
const derives = derived ? byKind.get(derived.kind) : undefined;
|
|
91
|
+
if (source && derives && derives.via === p.edge.kind && derives.from === source.kind)
|
|
92
|
+
touch(source.id);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else if (p.op === "remove-edge" && (removed.has(p.edge.from) || removed.has(p.edge.to))) {
|
|
96
|
+
// A source removed: the records that followed it are archived, and kept.
|
|
97
|
+
const gone = removed.has(p.edge.from) ? p.edge.from : p.edge.to;
|
|
98
|
+
const other = graph.getNode(gone === p.edge.from ? p.edge.to : p.edge.from);
|
|
99
|
+
const derives = other ? byKind.get(other.kind) : undefined;
|
|
100
|
+
const goneKind = made.find((q) => q.op === "remove-node" && q.node.id === gone)?.node.kind;
|
|
101
|
+
if (other && derives && derives.via === p.edge.kind && derives.from === goneKind && !isArchived(other))
|
|
102
|
+
apply(patchTo(other, { [ARCHIVED]: true }));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Back: a field set from the source's own field, changed on the derived side.
|
|
106
|
+
for (const p of made) {
|
|
107
|
+
if (p.op !== "patch-node")
|
|
108
|
+
continue;
|
|
109
|
+
const derived = graph.getNode(p.id);
|
|
110
|
+
const derives = derived ? byKind.get(derived.kind) : undefined;
|
|
111
|
+
if (!derived || !derives)
|
|
112
|
+
continue;
|
|
113
|
+
const fields = Object.keys(p.after).filter((field) => Object.hasOwn(derives.back, field));
|
|
114
|
+
if (fields.length === 0)
|
|
115
|
+
continue;
|
|
116
|
+
const sources = sourcesOf(graph, derives, derived.id);
|
|
117
|
+
if (sources.length !== 1)
|
|
118
|
+
continue;
|
|
119
|
+
const source = sources[0];
|
|
120
|
+
const patch = {};
|
|
121
|
+
for (const field of fields) {
|
|
122
|
+
const theirs = derives.back[field];
|
|
123
|
+
if (setOnSource.get(source.id)?.has(theirs))
|
|
124
|
+
continue;
|
|
125
|
+
const value = derived[field];
|
|
126
|
+
// A field the source says never changes once set stays as it is; so does one whoever changed this may not change there.
|
|
127
|
+
if (schema.tryDefinition(source.kind)?.fixed?.[theirs] !== undefined)
|
|
128
|
+
continue;
|
|
129
|
+
if (options.mayWriteBack && !options.mayWriteBack(source, theirs, value))
|
|
130
|
+
continue;
|
|
131
|
+
patch[theirs] = value;
|
|
132
|
+
}
|
|
133
|
+
const back = patchTo(source, patch);
|
|
134
|
+
if (back) {
|
|
135
|
+
apply(back);
|
|
136
|
+
touch(source.id);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Forward, through every kind that follows each source — and on, where a derived record is itself followed.
|
|
140
|
+
const done = new Set();
|
|
141
|
+
for (const [id, archivedMoved] of touched) {
|
|
142
|
+
if (done.has(id))
|
|
143
|
+
continue;
|
|
144
|
+
done.add(id);
|
|
145
|
+
const source = graph.getNode(id);
|
|
146
|
+
if (!source)
|
|
147
|
+
continue;
|
|
148
|
+
for (const [kind, derives] of bySource.get(source.kind) ?? []) {
|
|
149
|
+
for (const derived of derivedOf(graph, kind, derives, source.id)) {
|
|
150
|
+
const fields = { ...derives.values(graph, source, derived) };
|
|
151
|
+
if (!setOnSource.has(source.id))
|
|
152
|
+
for (const field of setOnDerived.get(derived.id) ?? [])
|
|
153
|
+
delete fields[field];
|
|
154
|
+
if (archivedMoved)
|
|
155
|
+
fields[ARCHIVED] = isArchived(source) ? true : undefined;
|
|
156
|
+
const patch = patchTo(derived, fields);
|
|
157
|
+
if (!patch)
|
|
158
|
+
continue;
|
|
159
|
+
apply(patch);
|
|
160
|
+
if (bySource.has(kind))
|
|
161
|
+
touched.set(derived.id, archivedMoved);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return out;
|
|
166
|
+
}
|
|
167
|
+
/** Every field of a derived record that says other than what its source works out (`derived-out-of-step`). */
|
|
168
|
+
export function outOfStep(schema, graph, nodes) {
|
|
169
|
+
const { byKind } = followersOf(schema);
|
|
170
|
+
if (byKind.size === 0)
|
|
171
|
+
return [];
|
|
172
|
+
const out = [];
|
|
173
|
+
for (const node of nodes) {
|
|
174
|
+
const derives = byKind.get(node.kind);
|
|
175
|
+
if (!derives)
|
|
176
|
+
continue;
|
|
177
|
+
const sources = sourcesOf(graph, derives, node.id);
|
|
178
|
+
if (sources.length !== 1)
|
|
179
|
+
continue;
|
|
180
|
+
for (const [field, value] of Object.entries(derives.values(graph, sources[0], node))) {
|
|
181
|
+
const holds = node[field];
|
|
182
|
+
if (!same(holds, value))
|
|
183
|
+
out.push({ id: node.id, source: sources[0].id, field, holds, follows: value });
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return out;
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=keep-linked.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keep-linked.js","sourceRoot":"","sources":["../src/keep-linked.ts"],"names":[],"mappings":"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"}
|
package/dist/lines.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lines.d.ts","sourceRoot":"","sources":["../src/lines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAmB,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAMrD,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACtG,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,YAAY,CAAC;AAoBpB,oFAAoF;AACpF,wBAAgB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAE/G;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,EAC3C,MAAM,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,aAAa,IAAI,SAAS,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAAC,KAAK,CAAC,IAAI,MAAM,GAAG,SAAS,CAAA;CAAE,EAC1K,UAAU,EAAE,SAAS,CAAC,EAAE,GACvB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"lines.d.ts","sourceRoot":"","sources":["../src/lines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAmB,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAMrD,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACtG,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,YAAY,CAAC;AAoBpB,oFAAoF;AACpF,wBAAgB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAE/G;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,EAC3C,MAAM,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,aAAa,IAAI,SAAS,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAAC,KAAK,CAAC,IAAI,MAAM,GAAG,SAAS,CAAA;CAAE,EAC1K,UAAU,EAAE,SAAS,CAAC,EAAE,GACvB,CAAC,EAAE,CA2BL;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAAC,YAAY,GAAG,UAAU,GAAG,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAe/L;AAED,oGAAoG;AACpG,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAK5D"}
|
package/dist/lines.js
CHANGED
|
@@ -64,8 +64,12 @@ export function withLines(source, violations) {
|
|
|
64
64
|
try {
|
|
65
65
|
// The store's day first, when it has one (pinned or ticked, FR-176): the day the rule was judged on.
|
|
66
66
|
const today = source.today?.() ?? shape.today?.() ?? isoToday();
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
// A coverage rule's problem names the pair: the record it does not reach is the line's.
|
|
68
|
+
const farId = shape.covers ? violation.nodeIds.find((id) => id !== violation.subjectId) : undefined;
|
|
69
|
+
const far = farId ? source.graph.getNode(farId) : undefined;
|
|
70
|
+
const line = brokenLineOf(shape, wordsOf(shape, source.schema), { graph: source.graph, subject: subject ?? null, kinds, today }, far);
|
|
71
|
+
// A rule's own sentence is left as written; so is a coverage pair's message, which names the record it does not reach already.
|
|
72
|
+
return { ...violation, line, ...(shape.says || shape.covers ? {} : { message: `${violation.message} — ${line.text}` }) };
|
|
69
73
|
}
|
|
70
74
|
catch {
|
|
71
75
|
return violation;
|
package/dist/lines.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lines.js","sourceRoot":"","sources":["../src/lines.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lines.js","sourceRoot":"","sources":["../src/lines.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { DATE_VALUE, dayAsRead, ISO_MOMENT, momentAsRead } from "../days.js";
|
|
|
7
7
|
import { typedFieldOf } from "../schema/typed-field-of.js";
|
|
8
8
|
import { labelOf } from "../schema/define-node.js";
|
|
9
9
|
import { LEFT_ALONE } from "../graph/archived.js";
|
|
10
|
-
import { fieldWords,
|
|
10
|
+
import { fieldWords, humanizeValue, nounOf } from "../schema/define-node.js";
|
|
11
11
|
import { linkedRelationOf } from "../schema/linked.js";
|
|
12
12
|
import { repeatedBy } from "../repeat.js";
|
|
13
13
|
import { nodeRefArgs, refTo } from "./node-ref.js";
|
|
@@ -274,7 +274,7 @@ function valueSaid(definition, schema, field, value) {
|
|
|
274
274
|
// A choice by its option's words; anything else written, by its start (FR-180) and in quotes.
|
|
275
275
|
for (let def = z.defOf(schema); def; def = z.defOf(def.innerType)) {
|
|
276
276
|
if (def.type === "enum")
|
|
277
|
-
return
|
|
277
|
+
return humanizeValue(value);
|
|
278
278
|
}
|
|
279
279
|
return `“${excerpt(value, 60)}”`;
|
|
280
280
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AnySchema } from "../schema/schema.js";
|
|
2
|
+
import type { AnyMutationDefinition, MutationCall } from "./types.js";
|
|
3
|
+
/** The name of the act that proposes changes for review (Roadmap f-proposals-for-review). */
|
|
4
|
+
export declare const PROPOSE_CHANGES = "propose-changes";
|
|
5
|
+
/** The most calls one proposal holds, as a suggestion's items are bounded. */
|
|
6
|
+
export declare const MOST_PROPOSED = 500;
|
|
7
|
+
/** What "Propose changes" takes: the calls proposed, and the proposal said in the person's own words. */
|
|
8
|
+
export interface ProposeChangesArgs {
|
|
9
|
+
readonly calls: readonly MutationCall[];
|
|
10
|
+
readonly intent?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* "PROPOSE CHANGES" (Roadmap f-proposals-for-review): what a seat sends
|
|
14
|
+
* when it may propose an act and may not run it — a grant's `propose` —
|
|
15
|
+
* and what an act's form sends when its button reads "Propose". Its op is
|
|
16
|
+
* a suggestion (`suggests`) with the person as its author and a lineage
|
|
17
|
+
* naming them (`proposedBy`): no primitives, waiting in the Suggested tray
|
|
18
|
+
* until somebody who may run its calls accepts it, as themselves, or
|
|
19
|
+
* declines it. Every store answers to it and no list offers it. It goes
|
|
20
|
+
* over the wire like any call; the store makes its op itself, each call
|
|
21
|
+
* judged as the store would judge it but for the grant to run it.
|
|
22
|
+
*/
|
|
23
|
+
export declare function proposeChangesMutation<S extends AnySchema>(): AnyMutationDefinition<S>;
|
|
24
|
+
//# sourceMappingURL=propose-changes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-changes.d.ts","sourceRoot":"","sources":["../../src/mutations/propose-changes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtE,6FAA6F;AAC7F,eAAO,MAAM,eAAe,oBAAoB,CAAC;AAEjD,8EAA8E;AAC9E,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,yGAAyG;AACzG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,SAAS,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAYtF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as z from "../schema/zod.js";
|
|
2
|
+
/** The name of the act that proposes changes for review (Roadmap f-proposals-for-review). */
|
|
3
|
+
export const PROPOSE_CHANGES = "propose-changes";
|
|
4
|
+
/** The most calls one proposal holds, as a suggestion's items are bounded. */
|
|
5
|
+
export const MOST_PROPOSED = 500;
|
|
6
|
+
/**
|
|
7
|
+
* "PROPOSE CHANGES" (Roadmap f-proposals-for-review): what a seat sends
|
|
8
|
+
* when it may propose an act and may not run it — a grant's `propose` —
|
|
9
|
+
* and what an act's form sends when its button reads "Propose". Its op is
|
|
10
|
+
* a suggestion (`suggests`) with the person as its author and a lineage
|
|
11
|
+
* naming them (`proposedBy`): no primitives, waiting in the Suggested tray
|
|
12
|
+
* until somebody who may run its calls accepts it, as themselves, or
|
|
13
|
+
* declines it. Every store answers to it and no list offers it. It goes
|
|
14
|
+
* over the wire like any call; the store makes its op itself, each call
|
|
15
|
+
* judged as the store would judge it but for the grant to run it.
|
|
16
|
+
*/
|
|
17
|
+
export function proposeChangesMutation() {
|
|
18
|
+
return {
|
|
19
|
+
name: PROPOSE_CHANGES,
|
|
20
|
+
title: "Propose changes",
|
|
21
|
+
input: z.object({
|
|
22
|
+
calls: z.array(z.object({ name: z.string(), args: z.unknown() })),
|
|
23
|
+
intent: z.optional(z.string()),
|
|
24
|
+
}),
|
|
25
|
+
apply() {
|
|
26
|
+
// The store makes the op (`VOTING.propose`); nothing of the graph changes until it is accepted.
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=propose-changes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose-changes.js","sourceRoot":"","sources":["../../src/mutations/propose-changes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AAItC,6FAA6F;AAC7F,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAEjD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAQjC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACjE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SAC/B,CAAU;QACX,KAAK;YACH,gGAAgG;QAClG,CAAC;KAC0B,CAAC;AAChC,CAAC"}
|
|
@@ -142,6 +142,15 @@ export interface MutationDefinitionSpec<S extends AnySchema, I extends z.ZodType
|
|
|
142
142
|
* (`fieldWriters` counts these).
|
|
143
143
|
*/
|
|
144
144
|
readonly writesOther?: Readonly<Record<string, readonly string[]>>;
|
|
145
|
+
/**
|
|
146
|
+
* Fields this mutation carries to the records its subject is already
|
|
147
|
+
* linked to, by relation: a document act's `setsLinked` (Roadmap
|
|
148
|
+
* f-acts-update-linked). The store judges each far record's own edit
|
|
149
|
+
* before the act runs, and refuses the act naming the first record the
|
|
150
|
+
* principal may not change. The far kind's own edit still offers the
|
|
151
|
+
* field: the act carries a value to it, which is not a named step.
|
|
152
|
+
*/
|
|
153
|
+
readonly writesLinked?: Readonly<Record<string, readonly string[]>>;
|
|
145
154
|
/**
|
|
146
155
|
* Fields of its subject this act does not take because another act
|
|
147
156
|
* writes them, by field: the acts that do. A derived edit carries it, so
|
|
@@ -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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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { Lineage } from "../ops/lineage.js";
|
|
2
|
+
import type { Operation } from "../ops/types.js";
|
|
3
|
+
import type { Principal } from "../permissions/types.js";
|
|
4
|
+
import type { AnySchema } from "../schema/schema.js";
|
|
5
|
+
import type { AnyMutationDefinition, MutationCall } from "./types.js";
|
|
6
|
+
/** The name of the act that votes on a suggestion (Roadmap f-suggestion-votes). */
|
|
7
|
+
export declare const VOTE_SUGGESTION = "vote-suggestion";
|
|
8
|
+
/** A vote on a suggestion: for it, against it, or none (a vote withdrawn). */
|
|
9
|
+
export type Vote = "for" | "against" | null;
|
|
10
|
+
/** What a vote's op keeps (`Operation.vote`): which suggestion, and which way. */
|
|
11
|
+
export interface SuggestionVote {
|
|
12
|
+
/** The id of the suggestion's op. */
|
|
13
|
+
readonly suggestion: string;
|
|
14
|
+
readonly vote: Vote;
|
|
15
|
+
/**
|
|
16
|
+
* AN ADVISORY VOTE (Roadmap f-votes-shared-seat): one cast from a shared
|
|
17
|
+
* or signed-out seat where the host let such votes be kept
|
|
18
|
+
* (`StoreOptions.votes`). Counted apart, in `tally.advisory`, and never
|
|
19
|
+
* toward `autoAcceptAt`.
|
|
20
|
+
*/
|
|
21
|
+
readonly advisory?: true;
|
|
22
|
+
/** Whose advisory vote it is: the host's key for the visitor behind the seat (`Principal.visitorKey`), not the shared seat's id. */
|
|
23
|
+
readonly voter?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* WHAT A HOST SAYS OF VOTES ON SUGGESTIONS (Roadmap f-votes-shared-seat),
|
|
27
|
+
* on the store as the policy is. `advisory: "visitors"` keeps a vote from a
|
|
28
|
+
* shared or signed-out seat (`Principal.shared`, or a `visitor`) as
|
|
29
|
+
* advisory — shown in the tally apart, never counted toward `autoAcceptAt`
|
|
30
|
+
* — as long as the seat says which visitor it is (`visitorKey`). Unsaid,
|
|
31
|
+
* such a vote is refused.
|
|
32
|
+
*/
|
|
33
|
+
export interface VotesOptions {
|
|
34
|
+
readonly advisory?: "visitors";
|
|
35
|
+
}
|
|
36
|
+
/** What a vote from a shared or signed-out seat is refused with, where the host keeps no advisory votes. */
|
|
37
|
+
export declare const SIGN_IN_TO_VOTE = "Sign in to vote on this suggestion.";
|
|
38
|
+
/**
|
|
39
|
+
* WHETHER THIS SEAT IS NOBODY IN PARTICULAR (Roadmap f-votes-shared-seat):
|
|
40
|
+
* one the host serves every signed-out visitor as (`shared`), or a
|
|
41
|
+
* `visitor` — or an agent acting for one of those.
|
|
42
|
+
*/
|
|
43
|
+
export declare function signedOutSeat(principal: Principal | undefined): boolean;
|
|
44
|
+
/** The key an advisory vote from this seat is kept under: the host's for its visitor, else a form visitor's own id; undefined when it names nobody. */
|
|
45
|
+
export declare function advisoryVoterOf(principal: Principal | undefined): string | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* WHAT THE DECLARATION SAYS OF SUGGESTIONS AS A WHOLE (`tidying` at the
|
|
48
|
+
* top of a document, Roadmap f-suggestion-votes): `autoAcceptAt`, the
|
|
49
|
+
* number of votes for a suggestion at which the app's own actor makes it
|
|
50
|
+
* without waiting for someone who may. Absent, a suggestion waits until
|
|
51
|
+
* one of them decides, however many voted. Handed to the store
|
|
52
|
+
* (`StoreOptions.tidying`), which is where it is honored.
|
|
53
|
+
*/
|
|
54
|
+
export interface AppTidying {
|
|
55
|
+
readonly autoAcceptAt?: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* "VOTE ON A SUGGESTION" (Roadmap f-suggestion-votes): what Accept and
|
|
59
|
+
* Decline do from a seat that may see a suggestion and may not make the
|
|
60
|
+
* change — a reader, a visitor by link — so the person is heard rather
|
|
61
|
+
* than refused. Its arguments are the suggestion's id and the vote: `for`,
|
|
62
|
+
* `against`, or `null` to withdraw one. One standing vote per person: a
|
|
63
|
+
* later one replaces it.
|
|
64
|
+
*
|
|
65
|
+
* Every store answers to it and no list offers it: it is not one of the
|
|
66
|
+
* app's acts, and the tray offers it as Accept and Decline. It goes over
|
|
67
|
+
* the wire like any call, and is permitted to whoever may see the
|
|
68
|
+
* suggestion. The store makes its op itself (`VOTING.op`, filled in by
|
|
69
|
+
* `@graview/core/tidying`): no primitives, the vote on the op, so it folds
|
|
70
|
+
* to nothing and a build before it reads it as a change that touched
|
|
71
|
+
* nothing.
|
|
72
|
+
*/
|
|
73
|
+
export declare function voteSuggestionMutation<S extends AnySchema>(): AnyMutationDefinition<S>;
|
|
74
|
+
/** What `@graview/core/tidying` teaches the store about votes when it is loaded, as `PUBLISHING` does for a publish. */
|
|
75
|
+
export interface VotingServed {
|
|
76
|
+
/** The vote's op, judged as the voter sees the suggestion: a sentence when it is not waiting for them. */
|
|
77
|
+
op?: (store: object, made: {
|
|
78
|
+
readonly id: string;
|
|
79
|
+
readonly at: string;
|
|
80
|
+
}, call: MutationCall, batch: string, author: Principal, options: {
|
|
81
|
+
readonly via?: unknown;
|
|
82
|
+
}) => Operation;
|
|
83
|
+
/**
|
|
84
|
+
* What the vote just kept has the app's own actor make, when the
|
|
85
|
+
* declaration says a suggestion is made at `autoAcceptAt` votes for and
|
|
86
|
+
* this one reached it: the suggestion's calls, the actor, and a lineage
|
|
87
|
+
* naming the suggestion and its voters. Undefined when nothing is to be
|
|
88
|
+
* made.
|
|
89
|
+
*/
|
|
90
|
+
accepting?: (store: object, vote: Operation) => {
|
|
91
|
+
readonly calls: readonly MutationCall[];
|
|
92
|
+
readonly author: Principal;
|
|
93
|
+
readonly lineage: Lineage;
|
|
94
|
+
} | undefined;
|
|
95
|
+
}
|
|
96
|
+
export declare const VOTING: VotingServed;
|
|
97
|
+
//# sourceMappingURL=vote-suggestion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vote-suggestion.d.ts","sourceRoot":"","sources":["../../src/mutations/vote-suggestion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtE,mFAAmF;AACnF,eAAO,MAAM,eAAe,oBAAoB,CAAC;AAEjD,8EAA8E;AAC9E,MAAM,MAAM,IAAI,GAAG,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC;AAE5C,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IACzB,oIAAoI;IACpI,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;CAChC;AAED,4GAA4G;AAC5G,eAAO,MAAM,eAAe,wCAAwC,CAAC;AAErE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAIvE;AAED,uJAAuJ;AACvJ,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKpF;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,SAAS,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAStF;AAED,wHAAwH;AACxH,MAAM,WAAW,YAAY;IAC3B,0GAA0G;IAC1G,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,SAAS,CAAC;IACjL;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK;QAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;CAChK;AAMD,eAAO,MAAM,MAAM,EAAE,YAAoH,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as z from "../schema/zod.js";
|
|
2
|
+
/** The name of the act that votes on a suggestion (Roadmap f-suggestion-votes). */
|
|
3
|
+
export const VOTE_SUGGESTION = "vote-suggestion";
|
|
4
|
+
/** What a vote from a shared or signed-out seat is refused with, where the host keeps no advisory votes. */
|
|
5
|
+
export const SIGN_IN_TO_VOTE = "Sign in to vote on this suggestion.";
|
|
6
|
+
/**
|
|
7
|
+
* WHETHER THIS SEAT IS NOBODY IN PARTICULAR (Roadmap f-votes-shared-seat):
|
|
8
|
+
* one the host serves every signed-out visitor as (`shared`), or a
|
|
9
|
+
* `visitor` — or an agent acting for one of those.
|
|
10
|
+
*/
|
|
11
|
+
export function signedOutSeat(principal) {
|
|
12
|
+
if (!principal)
|
|
13
|
+
return false;
|
|
14
|
+
if (principal.shared === true || principal.kind === "visitor")
|
|
15
|
+
return true;
|
|
16
|
+
return signedOutSeat(principal.onBehalfOf);
|
|
17
|
+
}
|
|
18
|
+
/** The key an advisory vote from this seat is kept under: the host's for its visitor, else a form visitor's own id; undefined when it names nobody. */
|
|
19
|
+
export function advisoryVoterOf(principal) {
|
|
20
|
+
if (!principal)
|
|
21
|
+
return undefined;
|
|
22
|
+
if (principal.shared !== true && principal.kind !== "visitor")
|
|
23
|
+
return advisoryVoterOf(principal.onBehalfOf);
|
|
24
|
+
const key = principal.visitorKey ?? (principal.shared === true ? undefined : principal.id);
|
|
25
|
+
return key ? key : undefined;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* "VOTE ON A SUGGESTION" (Roadmap f-suggestion-votes): what Accept and
|
|
29
|
+
* Decline do from a seat that may see a suggestion and may not make the
|
|
30
|
+
* change — a reader, a visitor by link — so the person is heard rather
|
|
31
|
+
* than refused. Its arguments are the suggestion's id and the vote: `for`,
|
|
32
|
+
* `against`, or `null` to withdraw one. One standing vote per person: a
|
|
33
|
+
* later one replaces it.
|
|
34
|
+
*
|
|
35
|
+
* Every store answers to it and no list offers it: it is not one of the
|
|
36
|
+
* app's acts, and the tray offers it as Accept and Decline. It goes over
|
|
37
|
+
* the wire like any call, and is permitted to whoever may see the
|
|
38
|
+
* suggestion. The store makes its op itself (`VOTING.op`, filled in by
|
|
39
|
+
* `@graview/core/tidying`): no primitives, the vote on the op, so it folds
|
|
40
|
+
* to nothing and a build before it reads it as a change that touched
|
|
41
|
+
* nothing.
|
|
42
|
+
*/
|
|
43
|
+
export function voteSuggestionMutation() {
|
|
44
|
+
return {
|
|
45
|
+
name: VOTE_SUGGESTION,
|
|
46
|
+
title: "Vote on a suggestion",
|
|
47
|
+
input: z.object({ suggestion: z.string(), vote: z.union([z.literal("for"), z.literal("against"), z.null()]) }),
|
|
48
|
+
apply() {
|
|
49
|
+
// The store makes the op (`VOTING.op`); nothing of the graph changes.
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/*
|
|
54
|
+
* One object for the store and `@graview/core/tidying`, found by a key
|
|
55
|
+
* every copy agrees on, as the seat view and publishing are: the module a
|
|
56
|
+
* page fetches to draw the tray imports nothing of what it loaded first.
|
|
57
|
+
*/
|
|
58
|
+
export const VOTING = (globalThis[Symbol.for("@graview/core:voting")] ??= {});
|
|
59
|
+
//# sourceMappingURL=vote-suggestion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vote-suggestion.js","sourceRoot":"","sources":["../../src/mutations/vote-suggestion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AAOtC,mFAAmF;AACnF,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAiCjD,4GAA4G;AAC5G,MAAM,CAAC,MAAM,eAAe,GAAG,qCAAqC,CAAC;AAErE;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,SAAgC;IAC5D,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC3E,OAAO,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,uJAAuJ;AACvJ,MAAM,UAAU,eAAe,CAAC,SAAgC;IAC9D,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5G,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3F,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/B,CAAC;AAcD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAU;QACvH,KAAK;YACH,sEAAsE;QACxE,CAAC;KAC0B,CAAC;AAChC,CAAC;AAeD;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAiB,CAAE,UAAuD,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC"}
|
package/dist/mutations/words.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { lowerFirst } from "../capital.js";
|
|
2
2
|
import { InvalidArguments } from "./invalid-arguments.js";
|
|
3
|
-
import { fieldWords,
|
|
3
|
+
import { fieldWords, humanizeValue } from "../schema/define-node.js";
|
|
4
4
|
/**
|
|
5
5
|
* AN ARGUMENT ASKED FOR IN THE RECORD'S OWN WORDS.
|
|
6
6
|
*
|
|
@@ -23,10 +23,10 @@ export function argumentWords(schema, mutation, name) {
|
|
|
23
23
|
return {
|
|
24
24
|
// A kind's `label` is its name: "Label *" is the field's key, not a word for it.
|
|
25
25
|
label: declared ?? fieldWords(definition, name),
|
|
26
|
-
option: (value) => (format ? format(value) :
|
|
26
|
+
option: (value) => (format ? format(value) : humanizeValue(value)),
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
-
return { label: fieldWords(undefined, name), option: (value) =>
|
|
29
|
+
return { label: fieldWords(undefined, name), option: (value) => humanizeValue(value) };
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* WHY A PRESS DID NOT TAKE, in a person's words.
|
package/dist/navigate.d.ts
CHANGED
|
@@ -5,9 +5,13 @@
|
|
|
5
5
|
* section: "Shipping soon" })` arrives at a path narrowed and to a section
|
|
6
6
|
* (`narrowedPath`, `/features?filter=stage%3Abuilding#shipping-soon`), the
|
|
7
7
|
* filter in the words a list's arranging line writes and the section as
|
|
8
|
-
* the address says it (`sectionSlug`).
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* the address says it (`sectionSlug`). What a view may name at all —
|
|
9
|
+
* `overview`, `home`, a kind's list, a titled place — is one vocabulary
|
|
10
|
+
* (`placeNamesOf` from the declaration, `placeNamesFrom` from what a face
|
|
11
|
+
* holds; FR-235), so the headless check and the live host agree. Off the
|
|
12
|
+
* main entry: only the routed face's way of going and a worker view's
|
|
13
|
+
* host reach it, each fetched as it is drawn.
|
|
11
14
|
*/
|
|
12
15
|
export { narrowedPath, sectionSlug } from "./views/address.js";
|
|
16
|
+
export { placeNamesFrom, placeNamesOf, type PlaceName, type PlaceNameIs, type PlaceNamesOptions } from "./place-names.js";
|
|
13
17
|
//# sourceMappingURL=navigate.d.ts.map
|
package/dist/navigate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../src/navigate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../src/navigate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/navigate.js
CHANGED
|
@@ -5,9 +5,13 @@
|
|
|
5
5
|
* section: "Shipping soon" })` arrives at a path narrowed and to a section
|
|
6
6
|
* (`narrowedPath`, `/features?filter=stage%3Abuilding#shipping-soon`), the
|
|
7
7
|
* filter in the words a list's arranging line writes and the section as
|
|
8
|
-
* the address says it (`sectionSlug`).
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* the address says it (`sectionSlug`). What a view may name at all —
|
|
9
|
+
* `overview`, `home`, a kind's list, a titled place — is one vocabulary
|
|
10
|
+
* (`placeNamesOf` from the declaration, `placeNamesFrom` from what a face
|
|
11
|
+
* holds; FR-235), so the headless check and the live host agree. Off the
|
|
12
|
+
* main entry: only the routed face's way of going and a worker view's
|
|
13
|
+
* host reach it, each fetched as it is drawn.
|
|
11
14
|
*/
|
|
12
15
|
export { narrowedPath, sectionSlug } from "./views/address.js";
|
|
16
|
+
export { placeNamesFrom, placeNamesOf } from "./place-names.js";
|
|
13
17
|
//# sourceMappingURL=navigate.js.map
|
package/dist/navigate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigate.js","sourceRoot":"","sources":["../src/navigate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"navigate.js","sourceRoot":"","sources":["../src/navigate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,YAAY,EAA4D,MAAM,kBAAkB,CAAC"}
|