@ifc-lite/ids-authoring 0.0.0-stage → 0.2.1
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/LICENSE +373 -0
- package/README.md +469 -2
- package/dist/bsdd/cache.d.ts +37 -0
- package/dist/bsdd/cache.d.ts.map +1 -0
- package/dist/bsdd/cache.js +116 -0
- package/dist/bsdd/cache.js.map +1 -0
- package/dist/bsdd/contract.d.ts +31 -0
- package/dist/bsdd/contract.d.ts.map +1 -0
- package/dist/bsdd/contract.js +185 -0
- package/dist/bsdd/contract.js.map +1 -0
- package/dist/bsdd/dictionary.d.ts +42 -0
- package/dist/bsdd/dictionary.d.ts.map +1 -0
- package/dist/bsdd/dictionary.js +115 -0
- package/dist/bsdd/dictionary.js.map +1 -0
- package/dist/bsdd/generator.d.ts +82 -0
- package/dist/bsdd/generator.d.ts.map +1 -0
- package/dist/bsdd/generator.js +155 -0
- package/dist/bsdd/generator.js.map +1 -0
- package/dist/bsdd/http-source.d.ts +15 -0
- package/dist/bsdd/http-source.d.ts.map +1 -0
- package/dist/bsdd/http-source.js +196 -0
- package/dist/bsdd/http-source.js.map +1 -0
- package/dist/bsdd/idb-store.d.ts +16 -0
- package/dist/bsdd/idb-store.d.ts.map +1 -0
- package/dist/bsdd/idb-store.js +58 -0
- package/dist/bsdd/idb-store.js.map +1 -0
- package/dist/bsdd/insert.d.ts +55 -0
- package/dist/bsdd/insert.d.ts.map +1 -0
- package/dist/bsdd/insert.js +105 -0
- package/dist/bsdd/insert.js.map +1 -0
- package/dist/bsdd/mapping.d.ts +62 -0
- package/dist/bsdd/mapping.d.ts.map +1 -0
- package/dist/bsdd/mapping.js +163 -0
- package/dist/bsdd/mapping.js.map +1 -0
- package/dist/bsdd/picker.d.ts +91 -0
- package/dist/bsdd/picker.d.ts.map +1 -0
- package/dist/bsdd/picker.js +151 -0
- package/dist/bsdd/picker.js.map +1 -0
- package/dist/bsdd/types.d.ts +162 -0
- package/dist/bsdd/types.d.ts.map +1 -0
- package/dist/bsdd/types.js +26 -0
- package/dist/bsdd/types.js.map +1 -0
- package/dist/bsdd/uri-health.d.ts +65 -0
- package/dist/bsdd/uri-health.d.ts.map +1 -0
- package/dist/bsdd/uri-health.js +110 -0
- package/dist/bsdd/uri-health.js.map +1 -0
- package/dist/canonical-json.d.ts +7 -0
- package/dist/canonical-json.d.ts.map +1 -0
- package/dist/canonical-json.js +20 -0
- package/dist/canonical-json.js.map +1 -0
- package/dist/comments/view.d.ts +37 -0
- package/dist/comments/view.d.ts.map +1 -0
- package/dist/comments/view.js +61 -0
- package/dist/comments/view.js.map +1 -0
- package/dist/compound/expand.d.ts +5 -0
- package/dist/compound/expand.d.ts.map +1 -0
- package/dist/compound/expand.js +135 -0
- package/dist/compound/expand.js.map +1 -0
- package/dist/compound/from-bsdd.d.ts +9 -0
- package/dist/compound/from-bsdd.d.ts.map +1 -0
- package/dist/compound/from-bsdd.js +166 -0
- package/dist/compound/from-bsdd.js.map +1 -0
- package/dist/diff/align.d.ts +42 -0
- package/dist/diff/align.d.ts.map +1 -0
- package/dist/diff/align.js +78 -0
- package/dist/diff/align.js.map +1 -0
- package/dist/diff/changelog-text.d.ts +39 -0
- package/dist/diff/changelog-text.d.ts.map +1 -0
- package/dist/diff/changelog-text.js +120 -0
- package/dist/diff/changelog-text.js.map +1 -0
- package/dist/diff/changelog.d.ts +28 -0
- package/dist/diff/changelog.d.ts.map +1 -0
- package/dist/diff/changelog.js +173 -0
- package/dist/diff/changelog.js.map +1 -0
- package/dist/diff/compare.d.ts +25 -0
- package/dist/diff/compare.d.ts.map +1 -0
- package/dist/diff/compare.js +150 -0
- package/dist/diff/compare.js.map +1 -0
- package/dist/diff/diff.d.ts +13 -0
- package/dist/diff/diff.d.ts.map +1 -0
- package/dist/diff/diff.js +140 -0
- package/dist/diff/diff.js.map +1 -0
- package/dist/diff/index.d.ts +5 -0
- package/dist/diff/index.d.ts.map +1 -0
- package/dist/diff/index.js +7 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/diff/patch.d.ts +10 -0
- package/dist/diff/patch.d.ts.map +1 -0
- package/dist/diff/patch.js +177 -0
- package/dist/diff/patch.js.map +1 -0
- package/dist/diff/types.d.ts +201 -0
- package/dist/diff/types.d.ts.map +1 -0
- package/dist/diff/types.js +5 -0
- package/dist/diff/types.js.map +1 -0
- package/dist/document/fields.d.ts +33 -0
- package/dist/document/fields.d.ts.map +1 -0
- package/dist/document/fields.js +117 -0
- package/dist/document/fields.js.map +1 -0
- package/dist/document/from-ids.d.ts +32 -0
- package/dist/document/from-ids.d.ts.map +1 -0
- package/dist/document/from-ids.js +47 -0
- package/dist/document/from-ids.js.map +1 -0
- package/dist/document/node-index.d.ts +32 -0
- package/dist/document/node-index.d.ts.map +1 -0
- package/dist/document/node-index.js +127 -0
- package/dist/document/node-index.js.map +1 -0
- package/dist/document/types.d.ts +170 -0
- package/dist/document/types.d.ts.map +1 -0
- package/dist/document/types.js +19 -0
- package/dist/document/types.js.map +1 -0
- package/dist/gate/bsdd.d.ts +12 -0
- package/dist/gate/bsdd.d.ts.map +1 -0
- package/dist/gate/bsdd.js +17 -0
- package/dist/gate/bsdd.js.map +1 -0
- package/dist/gate/check.d.ts +6 -0
- package/dist/gate/check.d.ts.map +1 -0
- package/dist/gate/check.js +125 -0
- package/dist/gate/check.js.map +1 -0
- package/dist/gate/context.d.ts +51 -0
- package/dist/gate/context.d.ts.map +1 -0
- package/dist/gate/context.js +74 -0
- package/dist/gate/context.js.map +1 -0
- package/dist/gate/grounding-pset.d.ts +5 -0
- package/dist/gate/grounding-pset.d.ts.map +1 -0
- package/dist/gate/grounding-pset.js +179 -0
- package/dist/gate/grounding-pset.js.map +1 -0
- package/dist/gate/grounding.d.ts +48 -0
- package/dist/gate/grounding.d.ts.map +1 -0
- package/dist/gate/grounding.js +146 -0
- package/dist/gate/grounding.js.map +1 -0
- package/dist/gate/rank.d.ts +28 -0
- package/dist/gate/rank.d.ts.map +1 -0
- package/dist/gate/rank.js +68 -0
- package/dist/gate/rank.js.map +1 -0
- package/dist/gate/structural.d.ts +43 -0
- package/dist/gate/structural.d.ts.map +1 -0
- package/dist/gate/structural.js +175 -0
- package/dist/gate/structural.js.map +1 -0
- package/dist/gate/types.d.ts +45 -0
- package/dist/gate/types.d.ts.map +1 -0
- package/dist/gate/types.js +5 -0
- package/dist/gate/types.js.map +1 -0
- package/dist/gate/values.d.ts +19 -0
- package/dist/gate/values.d.ts.map +1 -0
- package/dist/gate/values.js +124 -0
- package/dist/gate/values.js.map +1 -0
- package/dist/headless/apply-gated.d.ts +32 -0
- package/dist/headless/apply-gated.d.ts.map +1 -0
- package/dist/headless/apply-gated.js +26 -0
- package/dist/headless/apply-gated.js.map +1 -0
- package/dist/headless/diff.d.ts +41 -0
- package/dist/headless/diff.d.ts.map +1 -0
- package/dist/headless/diff.js +116 -0
- package/dist/headless/diff.js.map +1 -0
- package/dist/headless/node-path.d.ts +10 -0
- package/dist/headless/node-path.d.ts.map +1 -0
- package/dist/headless/node-path.js +24 -0
- package/dist/headless/node-path.js.map +1 -0
- package/dist/headless/read.d.ts +26 -0
- package/dist/headless/read.d.ts.map +1 -0
- package/dist/headless/read.js +78 -0
- package/dist/headless/read.js.map +1 -0
- package/dist/headless/schema-lookup.d.ts +52 -0
- package/dist/headless/schema-lookup.d.ts.map +1 -0
- package/dist/headless/schema-lookup.js +77 -0
- package/dist/headless/schema-lookup.js.map +1 -0
- package/dist/headless/write.d.ts +46 -0
- package/dist/headless/write.d.ts.map +1 -0
- package/dist/headless/write.js +103 -0
- package/dist/headless/write.js.map +1 -0
- package/dist/history/history.d.ts +90 -0
- package/dist/history/history.d.ts.map +1 -0
- package/dist/history/history.js +86 -0
- package/dist/history/history.js.map +1 -0
- package/dist/history/persistence.d.ts +33 -0
- package/dist/history/persistence.d.ts.map +1 -0
- package/dist/history/persistence.js +71 -0
- package/dist/history/persistence.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +75 -0
- package/dist/index.js.map +1 -0
- package/dist/lint/context.d.ts +15 -0
- package/dist/lint/context.d.ts.map +1 -0
- package/dist/lint/context.js +24 -0
- package/dist/lint/context.js.map +1 -0
- package/dist/lint/docs.d.ts +18 -0
- package/dist/lint/docs.d.ts.map +1 -0
- package/dist/lint/docs.js +117 -0
- package/dist/lint/docs.js.map +1 -0
- package/dist/lint/engine.d.ts +21 -0
- package/dist/lint/engine.d.ts.map +1 -0
- package/dist/lint/engine.js +123 -0
- package/dist/lint/engine.js.map +1 -0
- package/dist/lint/fix.d.ts +27 -0
- package/dist/lint/fix.d.ts.map +1 -0
- package/dist/lint/fix.js +22 -0
- package/dist/lint/fix.js.map +1 -0
- package/dist/lint/precision.d.ts +51 -0
- package/dist/lint/precision.d.ts.map +1 -0
- package/dist/lint/precision.js +64 -0
- package/dist/lint/precision.js.map +1 -0
- package/dist/lint/rules/bsdd.d.ts +5 -0
- package/dist/lint/rules/bsdd.d.ts.map +1 -0
- package/dist/lint/rules/bsdd.js +123 -0
- package/dist/lint/rules/bsdd.js.map +1 -0
- package/dist/lint/rules/card.d.ts +10 -0
- package/dist/lint/rules/card.d.ts.map +1 -0
- package/dist/lint/rules/card.js +140 -0
- package/dist/lint/rules/card.js.map +1 -0
- package/dist/lint/rules/doc-ver-part.d.ts +7 -0
- package/dist/lint/rules/doc-ver-part.d.ts.map +1 -0
- package/dist/lint/rules/doc-ver-part.js +155 -0
- package/dist/lint/rules/doc-ver-part.js.map +1 -0
- package/dist/lint/rules/entity.d.ts +12 -0
- package/dist/lint/rules/entity.d.ts.map +1 -0
- package/dist/lint/rules/entity.js +215 -0
- package/dist/lint/rules/entity.js.map +1 -0
- package/dist/lint/rules/index.d.ts +4 -0
- package/dist/lint/rules/index.d.ts.map +1 -0
- package/dist/lint/rules/index.js +63 -0
- package/dist/lint/rules/index.js.map +1 -0
- package/dist/lint/rules/pdt-att.d.ts +7 -0
- package/dist/lint/rules/pdt-att.d.ts.map +1 -0
- package/dist/lint/rules/pdt-att.js +209 -0
- package/dist/lint/rules/pdt-att.js.map +1 -0
- package/dist/lint/rules/pset.d.ts +12 -0
- package/dist/lint/rules/pset.d.ts.map +1 -0
- package/dist/lint/rules/pset.js +263 -0
- package/dist/lint/rules/pset.js.map +1 -0
- package/dist/lint/rules/regex.d.ts +6 -0
- package/dist/lint/rules/regex.d.ts.map +1 -0
- package/dist/lint/rules/regex.js +184 -0
- package/dist/lint/rules/regex.js.map +1 -0
- package/dist/lint/rules/spec-doc.d.ts +5 -0
- package/dist/lint/rules/spec-doc.d.ts.map +1 -0
- package/dist/lint/rules/spec-doc.js +132 -0
- package/dist/lint/rules/spec-doc.js.map +1 -0
- package/dist/lint/rules/spec.d.ts +24 -0
- package/dist/lint/rules/spec.d.ts.map +1 -0
- package/dist/lint/rules/spec.js +162 -0
- package/dist/lint/rules/spec.js.map +1 -0
- package/dist/lint/rules/units.d.ts +4 -0
- package/dist/lint/rules/units.d.ts.map +1 -0
- package/dist/lint/rules/units.js +101 -0
- package/dist/lint/rules/units.js.map +1 -0
- package/dist/lint/rules/util.d.ts +37 -0
- package/dist/lint/rules/util.d.ts.map +1 -0
- package/dist/lint/rules/util.js +117 -0
- package/dist/lint/rules/util.js.map +1 -0
- package/dist/lint/rules/value-sites.d.ts +28 -0
- package/dist/lint/rules/value-sites.d.ts.map +1 -0
- package/dist/lint/rules/value-sites.js +81 -0
- package/dist/lint/rules/value-sites.js.map +1 -0
- package/dist/lint/rules/values.d.ts +22 -0
- package/dist/lint/rules/values.d.ts.map +1 -0
- package/dist/lint/rules/values.js +237 -0
- package/dist/lint/rules/values.js.map +1 -0
- package/dist/lint/rules/xsd-regex.d.ts +34 -0
- package/dist/lint/rules/xsd-regex.d.ts.map +1 -0
- package/dist/lint/rules/xsd-regex.js +149 -0
- package/dist/lint/rules/xsd-regex.js.map +1 -0
- package/dist/lint/solver/sample.d.ts +3 -0
- package/dist/lint/solver/sample.d.ts.map +1 -0
- package/dist/lint/solver/sample.js +134 -0
- package/dist/lint/solver/sample.js.map +1 -0
- package/dist/lint/solver/solver.d.ts +39 -0
- package/dist/lint/solver/solver.d.ts.map +1 -0
- package/dist/lint/solver/solver.js +126 -0
- package/dist/lint/solver/solver.js.map +1 -0
- package/dist/lint/suppress.d.ts +12 -0
- package/dist/lint/suppress.d.ts.map +1 -0
- package/dist/lint/suppress.js +56 -0
- package/dist/lint/suppress.js.map +1 -0
- package/dist/lint/types.d.ts +162 -0
- package/dist/lint/types.d.ts.map +1 -0
- package/dist/lint/types.js +5 -0
- package/dist/lint/types.js.map +1 -0
- package/dist/lint/walk.d.ts +20 -0
- package/dist/lint/walk.d.ts.map +1 -0
- package/dist/lint/walk.js +47 -0
- package/dist/lint/walk.js.map +1 -0
- package/dist/match/cascade.d.ts +53 -0
- package/dist/match/cascade.d.ts.map +1 -0
- package/dist/match/cascade.js +135 -0
- package/dist/match/cascade.js.map +1 -0
- package/dist/match/reidentify.d.ts +46 -0
- package/dist/match/reidentify.d.ts.map +1 -0
- package/dist/match/reidentify.js +67 -0
- package/dist/match/reidentify.js.map +1 -0
- package/dist/merge/comments.d.ts +13 -0
- package/dist/merge/comments.d.ts.map +1 -0
- package/dist/merge/comments.js +61 -0
- package/dist/merge/comments.js.map +1 -0
- package/dist/merge/index.d.ts +4 -0
- package/dist/merge/index.d.ts.map +1 -0
- package/dist/merge/index.js +6 -0
- package/dist/merge/index.js.map +1 -0
- package/dist/merge/keys.d.ts +22 -0
- package/dist/merge/keys.d.ts.map +1 -0
- package/dist/merge/keys.js +54 -0
- package/dist/merge/keys.js.map +1 -0
- package/dist/merge/merge.d.ts +8 -0
- package/dist/merge/merge.d.ts.map +1 -0
- package/dist/merge/merge.js +206 -0
- package/dist/merge/merge.js.map +1 -0
- package/dist/merge/order.d.ts +11 -0
- package/dist/merge/order.d.ts.map +1 -0
- package/dist/merge/order.js +117 -0
- package/dist/merge/order.js.map +1 -0
- package/dist/merge/sidecar.d.ts +12 -0
- package/dist/merge/sidecar.d.ts.map +1 -0
- package/dist/merge/sidecar.js +64 -0
- package/dist/merge/sidecar.js.map +1 -0
- package/dist/merge/types.d.ts +50 -0
- package/dist/merge/types.d.ts.map +1 -0
- package/dist/merge/types.js +5 -0
- package/dist/merge/types.js.map +1 -0
- package/dist/merge/view.d.ts +28 -0
- package/dist/merge/view.d.ts.map +1 -0
- package/dist/merge/view.js +35 -0
- package/dist/merge/view.js.map +1 -0
- package/dist/ops/draft.d.ts +33 -0
- package/dist/ops/draft.d.ts.map +1 -0
- package/dist/ops/draft.js +253 -0
- package/dist/ops/draft.js.map +1 -0
- package/dist/ops/json-schema-lite.d.ts +41 -0
- package/dist/ops/json-schema-lite.d.ts.map +1 -0
- package/dist/ops/json-schema-lite.js +119 -0
- package/dist/ops/json-schema-lite.js.map +1 -0
- package/dist/ops/schema-values.d.ts +5 -0
- package/dist/ops/schema-values.d.ts.map +1 -0
- package/dist/ops/schema-values.js +233 -0
- package/dist/ops/schema-values.js.map +1 -0
- package/dist/ops/schema.d.ts +27 -0
- package/dist/ops/schema.d.ts.map +1 -0
- package/dist/ops/schema.js +258 -0
- package/dist/ops/schema.js.map +1 -0
- package/dist/ops/sidecar-ops.d.ts +85 -0
- package/dist/ops/sidecar-ops.d.ts.map +1 -0
- package/dist/ops/sidecar-ops.js +5 -0
- package/dist/ops/sidecar-ops.js.map +1 -0
- package/dist/ops/types.d.ts +400 -0
- package/dist/ops/types.d.ts.map +1 -0
- package/dist/ops/types.js +5 -0
- package/dist/ops/types.js.map +1 -0
- package/dist/ops/units.d.ts +4 -0
- package/dist/ops/units.d.ts.map +1 -0
- package/dist/ops/units.js +75 -0
- package/dist/ops/units.js.map +1 -0
- package/dist/reducer/apply.d.ts +33 -0
- package/dist/reducer/apply.d.ts.map +1 -0
- package/dist/reducer/apply.js +123 -0
- package/dist/reducer/apply.js.map +1 -0
- package/dist/reducer/comment-ops.d.ts +18 -0
- package/dist/reducer/comment-ops.d.ts.map +1 -0
- package/dist/reducer/comment-ops.js +104 -0
- package/dist/reducer/comment-ops.js.map +1 -0
- package/dist/reducer/edit.d.ts +38 -0
- package/dist/reducer/edit.d.ts.map +1 -0
- package/dist/reducer/edit.js +126 -0
- package/dist/reducer/edit.js.map +1 -0
- package/dist/reducer/facet-ops.d.ts +20 -0
- package/dist/reducer/facet-ops.d.ts.map +1 -0
- package/dist/reducer/facet-ops.js +184 -0
- package/dist/reducer/facet-ops.js.map +1 -0
- package/dist/reducer/meta-ops.d.ts +20 -0
- package/dist/reducer/meta-ops.d.ts.map +1 -0
- package/dist/reducer/meta-ops.js +52 -0
- package/dist/reducer/meta-ops.js.map +1 -0
- package/dist/reducer/spec-ops.d.ts +29 -0
- package/dist/reducer/spec-ops.d.ts.map +1 -0
- package/dist/reducer/spec-ops.js +181 -0
- package/dist/reducer/spec-ops.js.map +1 -0
- package/dist/reducer/test-ops.d.ts +15 -0
- package/dist/reducer/test-ops.d.ts.map +1 -0
- package/dist/reducer/test-ops.js +90 -0
- package/dist/reducer/test-ops.js.map +1 -0
- package/dist/reducer/value-ops.d.ts +26 -0
- package/dist/reducer/value-ops.d.ts.map +1 -0
- package/dist/reducer/value-ops.js +173 -0
- package/dist/reducer/value-ops.js.map +1 -0
- package/dist/render/describe.d.ts +20 -0
- package/dist/render/describe.d.ts.map +1 -0
- package/dist/render/describe.js +47 -0
- package/dist/render/describe.js.map +1 -0
- package/dist/revision/index.d.ts +4 -0
- package/dist/revision/index.d.ts.map +1 -0
- package/dist/revision/index.js +7 -0
- package/dist/revision/index.js.map +1 -0
- package/dist/revision/revision.d.ts +79 -0
- package/dist/revision/revision.d.ts.map +1 -0
- package/dist/revision/revision.js +120 -0
- package/dist/revision/revision.js.map +1 -0
- package/dist/revision/sha256.d.ts +3 -0
- package/dist/revision/sha256.d.ts.map +1 -0
- package/dist/revision/sha256.js +69 -0
- package/dist/revision/sha256.js.map +1 -0
- package/dist/revision/verify.d.ts +21 -0
- package/dist/revision/verify.d.ts.map +1 -0
- package/dist/revision/verify.js +51 -0
- package/dist/revision/verify.js.map +1 -0
- package/dist/revision/view.d.ts +36 -0
- package/dist/revision/view.d.ts.map +1 -0
- package/dist/revision/view.js +32 -0
- package/dist/revision/view.js.map +1 -0
- package/dist/sidecar/idsz.d.ts +14 -0
- package/dist/sidecar/idsz.d.ts.map +1 -0
- package/dist/sidecar/idsz.js +58 -0
- package/dist/sidecar/idsz.js.map +1 -0
- package/dist/sidecar/sidecar-schema.d.ts +4 -0
- package/dist/sidecar/sidecar-schema.d.ts.map +1 -0
- package/dist/sidecar/sidecar-schema.js +69 -0
- package/dist/sidecar/sidecar-schema.js.map +1 -0
- package/dist/sidecar/sidecar.d.ts +102 -0
- package/dist/sidecar/sidecar.d.ts.map +1 -0
- package/dist/sidecar/sidecar.js +160 -0
- package/dist/sidecar/sidecar.js.map +1 -0
- package/dist/testing/index.d.ts +6 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +8 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/junit.d.ts +10 -0
- package/dist/testing/junit.d.ts.map +1 -0
- package/dist/testing/junit.js +51 -0
- package/dist/testing/junit.js.map +1 -0
- package/dist/testing/outcome.d.ts +10 -0
- package/dist/testing/outcome.d.ts.map +1 -0
- package/dist/testing/outcome.js +22 -0
- package/dist/testing/outcome.js.map +1 -0
- package/dist/testing/runner.d.ts +72 -0
- package/dist/testing/runner.d.ts.map +1 -0
- package/dist/testing/runner.js +60 -0
- package/dist/testing/runner.js.map +1 -0
- package/dist/testing/types.d.ts +60 -0
- package/dist/testing/types.d.ts.map +1 -0
- package/dist/testing/types.js +5 -0
- package/dist/testing/types.js.map +1 -0
- package/dist/testing/view.d.ts +31 -0
- package/dist/testing/view.d.ts.map +1 -0
- package/dist/testing/view.js +30 -0
- package/dist/testing/view.js.map +1 -0
- package/dist/uuid.d.ts +39 -0
- package/dist/uuid.d.ts.map +1 -0
- package/dist/uuid.js +84 -0
- package/dist/uuid.js.map +1 -0
- package/package.json +56 -3
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { expandCompound } from '../compound/expand.js';
|
|
5
|
+
import { applyCommentAdd, applyCommentRemoveReply, applyCommentRemoveThread, applyCommentReply, applyCommentResolve, applyCommentRestoreThread, } from './comment-ops.js';
|
|
6
|
+
import { OpApplyError } from './edit.js';
|
|
7
|
+
import { applySuppress, applyUnsuppress } from './meta-ops.js';
|
|
8
|
+
import { applyTestAdd, applyTestRemove, applyTestRestore, applyTestSetExpectation } from './test-ops.js';
|
|
9
|
+
import { applyFacetAdd, applyFacetMove, applyFacetPatch, applyFacetRemove, applyFacetReplace, applyFacetRestore, } from './facet-ops.js';
|
|
10
|
+
import { applyDocSetInfo, applySpecAdd, applySpecDuplicate, applySpecMove, applySpecPatch, applySpecRemove, applySpecRestore, cardinalityPatch, } from './spec-ops.js';
|
|
11
|
+
import { applyAddEnumValue, applyDeclarePset, applyDeclareUserDefinedType, applyRemoveEnumValue, applyRemovePset, applyRemoveUserDefinedType, applySetField, } from './value-ops.js';
|
|
12
|
+
/** Apply one primitive op. */
|
|
13
|
+
export function applyPrimitive(doc, op) {
|
|
14
|
+
switch (op.kind) {
|
|
15
|
+
case 'doc.setInfo':
|
|
16
|
+
return applyDocSetInfo(doc, op);
|
|
17
|
+
case 'spec.add':
|
|
18
|
+
return applySpecAdd(doc, op);
|
|
19
|
+
case 'spec.remove':
|
|
20
|
+
return applySpecRemove(doc, op);
|
|
21
|
+
case 'spec.duplicate':
|
|
22
|
+
return applySpecDuplicate(doc, op);
|
|
23
|
+
case 'spec.move':
|
|
24
|
+
return applySpecMove(doc, op);
|
|
25
|
+
case 'spec.set':
|
|
26
|
+
return applySpecPatch(doc, op, op.payload.specId, { [op.payload.field]: op.payload.value });
|
|
27
|
+
case 'spec.setCardinality':
|
|
28
|
+
return applySpecPatch(doc, op, op.payload.specId, cardinalityPatch(op.payload.cardinality));
|
|
29
|
+
case 'spec.setIfcVersions':
|
|
30
|
+
return applySpecPatch(doc, op, op.payload.specId, { ifcVersions: op.payload.versions, ifcVersionRaw: null });
|
|
31
|
+
case 'spec.restore':
|
|
32
|
+
return applySpecRestore(doc, op);
|
|
33
|
+
case 'spec.patch':
|
|
34
|
+
return applySpecPatch(doc, op, op.payload.specId, op.payload.set);
|
|
35
|
+
case 'facet.add':
|
|
36
|
+
return applyFacetAdd(doc, op);
|
|
37
|
+
case 'facet.remove':
|
|
38
|
+
return applyFacetRemove(doc, op);
|
|
39
|
+
case 'facet.move':
|
|
40
|
+
return applyFacetMove(doc, op);
|
|
41
|
+
case 'facet.replace':
|
|
42
|
+
return applyFacetReplace(doc, op);
|
|
43
|
+
case 'facet.setField':
|
|
44
|
+
return applySetField(doc, op, op.payload.facetId, op.payload.field, op.payload.value, op.payload.constraintId);
|
|
45
|
+
case 'value.set':
|
|
46
|
+
return applySetField(doc, op, op.payload.facetId, op.payload.field, op.payload.value, op.payload.constraintId);
|
|
47
|
+
case 'facet.setRelation':
|
|
48
|
+
return applyFacetPatch(doc, op, op.payload.facetId, { relation: op.payload.relation, rawRelation: null });
|
|
49
|
+
case 'facet.setUri':
|
|
50
|
+
return applyFacetPatch(doc, op, op.payload.facetId, { uri: op.payload.uri });
|
|
51
|
+
case 'facet.restore':
|
|
52
|
+
return applyFacetRestore(doc, op);
|
|
53
|
+
case 'facet.patch':
|
|
54
|
+
return applyFacetPatch(doc, op, op.payload.facetId, op.payload.set);
|
|
55
|
+
case 'requirement.setOptionality':
|
|
56
|
+
return applyFacetPatch(doc, op, op.payload.facetId, { optionality: op.payload.optionality, cardinalityRaw: null });
|
|
57
|
+
case 'requirement.set':
|
|
58
|
+
return applyFacetPatch(doc, op, op.payload.facetId, { [op.payload.field]: op.payload.value });
|
|
59
|
+
case 'value.addEnumValue':
|
|
60
|
+
return applyAddEnumValue(doc, op);
|
|
61
|
+
case 'value.removeEnumValue':
|
|
62
|
+
return applyRemoveEnumValue(doc, op);
|
|
63
|
+
case 'meta.custom.declarePset':
|
|
64
|
+
return applyDeclarePset(doc, op);
|
|
65
|
+
case 'meta.custom.removePset':
|
|
66
|
+
return applyRemovePset(doc, op);
|
|
67
|
+
case 'meta.custom.declareUserDefinedType':
|
|
68
|
+
return applyDeclareUserDefinedType(doc, op);
|
|
69
|
+
case 'meta.custom.removeUserDefinedType':
|
|
70
|
+
return applyRemoveUserDefinedType(doc, op);
|
|
71
|
+
case 'meta.comment.add':
|
|
72
|
+
return applyCommentAdd(doc, op);
|
|
73
|
+
case 'meta.comment.reply':
|
|
74
|
+
return applyCommentReply(doc, op);
|
|
75
|
+
case 'meta.comment.removeReply':
|
|
76
|
+
return applyCommentRemoveReply(doc, op);
|
|
77
|
+
case 'meta.comment.resolve':
|
|
78
|
+
return applyCommentResolve(doc, op);
|
|
79
|
+
case 'meta.comment.removeThread':
|
|
80
|
+
return applyCommentRemoveThread(doc, op);
|
|
81
|
+
case 'meta.comment.restoreThread':
|
|
82
|
+
return applyCommentRestoreThread(doc, op);
|
|
83
|
+
case 'meta.test.add':
|
|
84
|
+
return applyTestAdd(doc, op);
|
|
85
|
+
case 'meta.test.remove':
|
|
86
|
+
return applyTestRemove(doc, op);
|
|
87
|
+
case 'meta.test.restore':
|
|
88
|
+
return applyTestRestore(doc, op);
|
|
89
|
+
case 'meta.test.setExpectation':
|
|
90
|
+
return applyTestSetExpectation(doc, op);
|
|
91
|
+
case 'meta.suppress':
|
|
92
|
+
return applySuppress(doc, op);
|
|
93
|
+
case 'meta.unsuppress':
|
|
94
|
+
return applyUnsuppress(doc, op);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function isPrimitive(op) {
|
|
98
|
+
return !op.kind.startsWith('bulk.');
|
|
99
|
+
}
|
|
100
|
+
/** Apply `ops` in order. Throws `OpApplyError` without partial effects. */
|
|
101
|
+
export function apply(doc, ops) {
|
|
102
|
+
let current = doc;
|
|
103
|
+
const undoSteps = [];
|
|
104
|
+
const touched = new Set();
|
|
105
|
+
const expanded = [];
|
|
106
|
+
for (const op of ops) {
|
|
107
|
+
const primitives = isPrimitive(op) ? [op] : expandCompound(current, op);
|
|
108
|
+
for (const p of primitives) {
|
|
109
|
+
const step = applyPrimitive(current, p);
|
|
110
|
+
current = step.doc;
|
|
111
|
+
undoSteps.push(step.inverse);
|
|
112
|
+
for (const id of step.touched)
|
|
113
|
+
touched.add(id);
|
|
114
|
+
expanded.push(p);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const inverses = [];
|
|
118
|
+
for (let i = undoSteps.length - 1; i >= 0; i--)
|
|
119
|
+
inverses.push(...undoSteps[i]);
|
|
120
|
+
return { doc: current, inverses, touched, expanded };
|
|
121
|
+
}
|
|
122
|
+
export { OpApplyError };
|
|
123
|
+
//# sourceMappingURL=apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/reducer/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CommentThread, StudioDocument } from '../document/types.js';
|
|
2
|
+
import type { MetaCommentAddOp, MetaCommentRemoveReplyOp, MetaCommentRemoveThreadOp, MetaCommentReplyOp, MetaCommentResolveOp, MetaCommentRestoreThreadOp } from '../ops/types.js';
|
|
3
|
+
import type { Uuid } from '../uuid.js';
|
|
4
|
+
import { type StepResult } from './spec-ops.js';
|
|
5
|
+
interface ThreadSite {
|
|
6
|
+
nodeId: Uuid;
|
|
7
|
+
index: number;
|
|
8
|
+
thread: CommentThread;
|
|
9
|
+
}
|
|
10
|
+
export declare function findThread(doc: StudioDocument, threadId: Uuid): ThreadSite | undefined;
|
|
11
|
+
export declare function applyCommentAdd(doc: StudioDocument, op: MetaCommentAddOp): StepResult;
|
|
12
|
+
export declare function applyCommentReply(doc: StudioDocument, op: MetaCommentReplyOp): StepResult;
|
|
13
|
+
export declare function applyCommentRemoveReply(doc: StudioDocument, op: MetaCommentRemoveReplyOp): StepResult;
|
|
14
|
+
export declare function applyCommentResolve(doc: StudioDocument, op: MetaCommentResolveOp): StepResult;
|
|
15
|
+
export declare function applyCommentRemoveThread(doc: StudioDocument, op: MetaCommentRemoveThreadOp): StepResult;
|
|
16
|
+
export declare function applyCommentRestoreThread(doc: StudioDocument, op: MetaCommentRestoreThreadOp): StepResult;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=comment-ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comment-ops.d.ts","sourceRoot":"","sources":["../../src/reducer/comment-ops.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EACV,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAO,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAErD,UAAU,UAAU;IAClB,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,GAAG,UAAU,GAAG,SAAS,CAMtF;AAmBD,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,gBAAgB,GAAG,UAAU,CAWrF;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,GAAG,UAAU,CAQzF;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,wBAAwB,GAAG,UAAU,CAUrG;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,oBAAoB,GAAG,UAAU,CAO7F;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,yBAAyB,GAAG,UAAU,CAOvG;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,0BAA0B,GAAG,UAAU,CAYzG"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* Reducers for `meta.comment.*` (sidecar only; IDS content is untouched).
|
|
6
|
+
* Threads live in `meta.comments[nodeId]` and are addressed by thread id.
|
|
7
|
+
* A thread can only be opened on a live node, but it outlives its node:
|
|
8
|
+
* removing a specification leaves its threads in place, so the discussion
|
|
9
|
+
* survives undo and re-identification.
|
|
10
|
+
*/
|
|
11
|
+
import { locateNode } from '../document/node-index.js';
|
|
12
|
+
import { insertAt, OpApplyError, removeAt, replaceAt } from './edit.js';
|
|
13
|
+
import { inv } from './spec-ops.js';
|
|
14
|
+
export function findThread(doc, threadId) {
|
|
15
|
+
for (const [nodeId, threads] of Object.entries(doc.meta.comments)) {
|
|
16
|
+
const index = threads.findIndex((t) => t.id === threadId);
|
|
17
|
+
if (index >= 0)
|
|
18
|
+
return { nodeId, index, thread: threads[index] };
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
function requireThread(doc, threadId) {
|
|
23
|
+
const site = findThread(doc, threadId);
|
|
24
|
+
if (!site)
|
|
25
|
+
throw new OpApplyError('GATE-STR-001', `unknown comment thread ${threadId}`);
|
|
26
|
+
return site;
|
|
27
|
+
}
|
|
28
|
+
function withThreads(doc, nodeId, threads) {
|
|
29
|
+
const comments = { ...doc.meta.comments };
|
|
30
|
+
if (threads.length)
|
|
31
|
+
comments[nodeId] = threads;
|
|
32
|
+
else
|
|
33
|
+
delete comments[nodeId];
|
|
34
|
+
return { ...doc, meta: { ...doc.meta, comments } };
|
|
35
|
+
}
|
|
36
|
+
function setThread(doc, site, thread) {
|
|
37
|
+
return withThreads(doc, site.nodeId, replaceAt(doc.meta.comments[site.nodeId], site.index, thread));
|
|
38
|
+
}
|
|
39
|
+
export function applyCommentAdd(doc, op) {
|
|
40
|
+
const { nodeId, threadId, author, at, text } = op.payload;
|
|
41
|
+
if (!locateNode(doc, nodeId))
|
|
42
|
+
throw new OpApplyError('GATE-STR-001', `unknown node ${nodeId}`);
|
|
43
|
+
if (findThread(doc, threadId))
|
|
44
|
+
throw new OpApplyError('GATE-STR-001', `comment thread ${threadId} already exists`);
|
|
45
|
+
const threads = doc.meta.comments[nodeId] ?? [];
|
|
46
|
+
const thread = { id: threadId, resolved: false, comments: [{ author, at, text }] };
|
|
47
|
+
return {
|
|
48
|
+
doc: withThreads(doc, nodeId, [...threads, thread]),
|
|
49
|
+
inverse: [inv(op, 0, 'meta.comment.removeThread', { threadId })],
|
|
50
|
+
touched: [nodeId],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export function applyCommentReply(doc, op) {
|
|
54
|
+
const { threadId, author, at, text } = op.payload;
|
|
55
|
+
const site = requireThread(doc, threadId);
|
|
56
|
+
return {
|
|
57
|
+
doc: setThread(doc, site, { ...site.thread, comments: [...site.thread.comments, { author, at, text }] }),
|
|
58
|
+
inverse: [inv(op, 0, 'meta.comment.removeReply', { threadId })],
|
|
59
|
+
touched: [site.nodeId],
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export function applyCommentRemoveReply(doc, op) {
|
|
63
|
+
const site = requireThread(doc, op.payload.threadId);
|
|
64
|
+
const { comments } = site.thread;
|
|
65
|
+
if (comments.length < 2)
|
|
66
|
+
throw new OpApplyError('GATE-STR-006', 'the opening comment is removed with its thread (meta.comment.removeThread)');
|
|
67
|
+
const last = comments[comments.length - 1];
|
|
68
|
+
return {
|
|
69
|
+
doc: setThread(doc, site, { ...site.thread, comments: comments.slice(0, -1) }),
|
|
70
|
+
inverse: [inv(op, 0, 'meta.comment.reply', { threadId: op.payload.threadId, ...last })],
|
|
71
|
+
touched: [site.nodeId],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export function applyCommentResolve(doc, op) {
|
|
75
|
+
const site = requireThread(doc, op.payload.threadId);
|
|
76
|
+
return {
|
|
77
|
+
doc: setThread(doc, site, { ...site.thread, resolved: op.payload.resolved }),
|
|
78
|
+
inverse: [inv(op, 0, 'meta.comment.resolve', { threadId: op.payload.threadId, resolved: site.thread.resolved })],
|
|
79
|
+
touched: [site.nodeId],
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export function applyCommentRemoveThread(doc, op) {
|
|
83
|
+
const site = requireThread(doc, op.payload.threadId);
|
|
84
|
+
return {
|
|
85
|
+
doc: withThreads(doc, site.nodeId, removeAt(doc.meta.comments[site.nodeId], site.index)),
|
|
86
|
+
inverse: [inv(op, 0, 'meta.comment.restoreThread', { nodeId: site.nodeId, index: site.index, thread: site.thread })],
|
|
87
|
+
touched: [site.nodeId],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export function applyCommentRestoreThread(doc, op) {
|
|
91
|
+
const { nodeId, index, thread } = op.payload;
|
|
92
|
+
if (findThread(doc, thread.id))
|
|
93
|
+
throw new OpApplyError('GATE-STR-001', `comment thread ${thread.id} already exists`);
|
|
94
|
+
const threads = doc.meta.comments[nodeId] ?? [];
|
|
95
|
+
if (!Number.isInteger(index) || index < 0 || index > threads.length) {
|
|
96
|
+
throw new OpApplyError('GATE-STR-006', `thread index ${index} is out of range 0..${threads.length}`);
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
doc: withThreads(doc, nodeId, insertAt(threads, index, thread)),
|
|
100
|
+
inverse: [inv(op, 0, 'meta.comment.removeThread', { threadId: thread.id })],
|
|
101
|
+
touched: [nodeId],
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=comment-ops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comment-ops.js","sourceRoot":"","sources":["../../src/reducer/comment-ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural-sharing helpers for the reducer. Every helper returns new
|
|
3
|
+
* objects along the changed path only; untouched specs, facets and node
|
|
4
|
+
* records are shared with the previous document.
|
|
5
|
+
*/
|
|
6
|
+
import type { IDSFacet, IDSRequirement, IDSSpecification } from '@ifc-lite/ids';
|
|
7
|
+
import { type FacetLocation } from '../document/node-index.js';
|
|
8
|
+
import type { FacetNodes, Section, SpecNodes, StudioDocument } from '../document/types.js';
|
|
9
|
+
import type { Uuid } from '../uuid.js';
|
|
10
|
+
/** Raised when an op cannot be applied. The gate should have refused it. */
|
|
11
|
+
export declare class OpApplyError extends Error {
|
|
12
|
+
readonly code: string;
|
|
13
|
+
constructor(code: string, message: string);
|
|
14
|
+
}
|
|
15
|
+
export declare function insertAt<T>(list: readonly T[], index: number, item: T): T[];
|
|
16
|
+
export declare function removeAt<T>(list: readonly T[], index: number): T[];
|
|
17
|
+
export declare function replaceAt<T>(list: readonly T[], index: number, item: T): T[];
|
|
18
|
+
/** Copy of `obj` with `key` set, or removed when `value` is undefined/null. */
|
|
19
|
+
export declare function withKey<T extends object, K extends keyof T>(obj: T, key: K, value: T[K] | null | undefined): T;
|
|
20
|
+
export declare function requireSpec(doc: StudioDocument, specId: Uuid): number;
|
|
21
|
+
export declare function requireFacet(doc: StudioDocument, facetId: Uuid): FacetLocation;
|
|
22
|
+
export declare function requireIndex(index: number, max: number, what: string): void;
|
|
23
|
+
export declare function setSpec(doc: StudioDocument, index: number, spec: IDSSpecification, nodes: SpecNodes): StudioDocument;
|
|
24
|
+
export declare function insertSpec(doc: StudioDocument, index: number, spec: IDSSpecification, nodes: SpecNodes): StudioDocument;
|
|
25
|
+
export declare function removeSpec(doc: StudioDocument, index: number): StudioDocument;
|
|
26
|
+
/** One entry of a section: the facet, its nodes and (requirements only) the requirement. */
|
|
27
|
+
export interface SectionItem {
|
|
28
|
+
facet: IDSFacet;
|
|
29
|
+
nodes: FacetNodes;
|
|
30
|
+
requirement?: IDSRequirement;
|
|
31
|
+
}
|
|
32
|
+
export declare function itemAt(doc: StudioDocument, loc: FacetLocation): SectionItem;
|
|
33
|
+
export declare function insertItem(doc: StudioDocument, specIndex: number, section: Section, index: number, item: SectionItem): StudioDocument;
|
|
34
|
+
export declare function replaceItem(doc: StudioDocument, loc: FacetLocation, item: SectionItem): StudioDocument;
|
|
35
|
+
export declare function removeItem(doc: StudioDocument, loc: FacetLocation): StudioDocument;
|
|
36
|
+
export declare function moveItemWithin(doc: StudioDocument, loc: FacetLocation, toIndex: number): StudioDocument;
|
|
37
|
+
export declare function sectionLength(doc: StudioDocument, specIndex: number, section: Section): number;
|
|
38
|
+
//# sourceMappingURL=edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/reducer/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { facetAt, facetNodesAt, locateFacet, locateSpec } from '../document/node-index.js';
|
|
5
|
+
/** Raised when an op cannot be applied. The gate should have refused it. */
|
|
6
|
+
export class OpApplyError extends Error {
|
|
7
|
+
code;
|
|
8
|
+
constructor(code, message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.code = code;
|
|
11
|
+
this.name = 'OpApplyError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function insertAt(list, index, item) {
|
|
15
|
+
const out = list.slice();
|
|
16
|
+
out.splice(index, 0, item);
|
|
17
|
+
return out;
|
|
18
|
+
}
|
|
19
|
+
export function removeAt(list, index) {
|
|
20
|
+
const out = list.slice();
|
|
21
|
+
out.splice(index, 1);
|
|
22
|
+
return out;
|
|
23
|
+
}
|
|
24
|
+
export function replaceAt(list, index, item) {
|
|
25
|
+
const out = list.slice();
|
|
26
|
+
out[index] = item;
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
/** Copy of `obj` with `key` set, or removed when `value` is undefined/null. */
|
|
30
|
+
export function withKey(obj, key, value) {
|
|
31
|
+
const next = { ...obj };
|
|
32
|
+
if (value === undefined || value === null)
|
|
33
|
+
delete next[key];
|
|
34
|
+
else
|
|
35
|
+
next[key] = value;
|
|
36
|
+
return next;
|
|
37
|
+
}
|
|
38
|
+
export function requireSpec(doc, specId) {
|
|
39
|
+
const index = locateSpec(doc, specId);
|
|
40
|
+
if (index === undefined)
|
|
41
|
+
throw new OpApplyError('GATE-STR-001', `unknown specification ${specId}`);
|
|
42
|
+
return index;
|
|
43
|
+
}
|
|
44
|
+
export function requireFacet(doc, facetId) {
|
|
45
|
+
const loc = locateFacet(doc, facetId);
|
|
46
|
+
if (!loc)
|
|
47
|
+
throw new OpApplyError('GATE-STR-001', `unknown facet ${facetId}`);
|
|
48
|
+
return loc;
|
|
49
|
+
}
|
|
50
|
+
export function requireIndex(index, max, what) {
|
|
51
|
+
if (!Number.isInteger(index) || index < 0 || index > max) {
|
|
52
|
+
throw new OpApplyError('GATE-STR-006', `${what} ${index} is out of range 0..${max}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function setSpec(doc, index, spec, nodes) {
|
|
56
|
+
return {
|
|
57
|
+
...doc,
|
|
58
|
+
ids: { ...doc.ids, specifications: replaceAt(doc.ids.specifications, index, spec) },
|
|
59
|
+
nodes: { ...doc.nodes, specs: replaceAt(doc.nodes.specs, index, nodes) },
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export function insertSpec(doc, index, spec, nodes) {
|
|
63
|
+
return {
|
|
64
|
+
...doc,
|
|
65
|
+
ids: { ...doc.ids, specifications: insertAt(doc.ids.specifications, index, spec) },
|
|
66
|
+
nodes: { ...doc.nodes, specs: insertAt(doc.nodes.specs, index, nodes) },
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export function removeSpec(doc, index) {
|
|
70
|
+
return {
|
|
71
|
+
...doc,
|
|
72
|
+
ids: { ...doc.ids, specifications: removeAt(doc.ids.specifications, index) },
|
|
73
|
+
nodes: { ...doc.nodes, specs: removeAt(doc.nodes.specs, index) },
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export function itemAt(doc, loc) {
|
|
77
|
+
const facet = facetAt(doc, loc);
|
|
78
|
+
const nodes = facetNodesAt(doc, loc);
|
|
79
|
+
if (loc.section === 'applicability')
|
|
80
|
+
return { facet, nodes };
|
|
81
|
+
return { facet, nodes, requirement: doc.ids.specifications[loc.specIndex].requirements[loc.facetIndex] };
|
|
82
|
+
}
|
|
83
|
+
function editSection(doc, specIndex, section, edit) {
|
|
84
|
+
const spec = doc.ids.specifications[specIndex];
|
|
85
|
+
const nodes = doc.nodes.specs[specIndex];
|
|
86
|
+
if (section === 'applicability') {
|
|
87
|
+
return setSpec(doc, specIndex, { ...spec, applicability: { ...spec.applicability, facets: edit(spec.applicability.facets) } }, { ...nodes, applicability: edit(nodes.applicability) });
|
|
88
|
+
}
|
|
89
|
+
return setSpec(doc, specIndex, { ...spec, requirements: edit(spec.requirements) }, { ...nodes, requirements: edit(nodes.requirements) });
|
|
90
|
+
}
|
|
91
|
+
/** The value stored in a section array for `item`. */
|
|
92
|
+
function sectionValue(section, item) {
|
|
93
|
+
if (section === 'applicability')
|
|
94
|
+
return item.facet;
|
|
95
|
+
if (!item.requirement)
|
|
96
|
+
throw new OpApplyError('GATE-STR-003', 'a requirement needs its optionality');
|
|
97
|
+
return { ...item.requirement, id: item.nodes.id, facet: item.facet };
|
|
98
|
+
}
|
|
99
|
+
export function insertItem(doc, specIndex, section, index, item) {
|
|
100
|
+
const value = sectionValue(section, item);
|
|
101
|
+
const spec = doc.ids.specifications[specIndex];
|
|
102
|
+
const nodes = doc.nodes.specs[specIndex];
|
|
103
|
+
if (section === 'applicability') {
|
|
104
|
+
return setSpec(doc, specIndex, { ...spec, applicability: { ...spec.applicability, facets: insertAt(spec.applicability.facets, index, value) } }, { ...nodes, applicability: insertAt(nodes.applicability, index, item.nodes) });
|
|
105
|
+
}
|
|
106
|
+
return setSpec(doc, specIndex, { ...spec, requirements: insertAt(spec.requirements, index, value) }, { ...nodes, requirements: insertAt(nodes.requirements, index, item.nodes) });
|
|
107
|
+
}
|
|
108
|
+
export function replaceItem(doc, loc, item) {
|
|
109
|
+
const removed = removeItem(doc, loc);
|
|
110
|
+
return insertItem(removed, loc.specIndex, loc.section, loc.facetIndex, item);
|
|
111
|
+
}
|
|
112
|
+
export function removeItem(doc, loc) {
|
|
113
|
+
return editSection(doc, loc.specIndex, loc.section, (list) => removeAt(list, loc.facetIndex));
|
|
114
|
+
}
|
|
115
|
+
export function moveItemWithin(doc, loc, toIndex) {
|
|
116
|
+
return editSection(doc, loc.specIndex, loc.section, (list) => {
|
|
117
|
+
const out = removeAt(list, loc.facetIndex);
|
|
118
|
+
out.splice(toIndex, 0, list[loc.facetIndex]);
|
|
119
|
+
return out;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
export function sectionLength(doc, specIndex, section) {
|
|
123
|
+
const spec = doc.ids.specifications[specIndex];
|
|
124
|
+
return section === 'applicability' ? spec.applicability.facets.length : spec.requirements.length;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/reducer/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Reducers for `facet.*` and `requirement.*` ops. Each returns its exact inverse. */
|
|
2
|
+
import type { IDSFacet } from '@ifc-lite/ids';
|
|
3
|
+
import type { StudioDocument } from '../document/types.js';
|
|
4
|
+
import type { ConstraintIds, FacetAddOp, FacetMoveOp, FacetPatch, FacetReplaceOp, FacetRestoreOp, PrimitiveOp } from '../ops/types.js';
|
|
5
|
+
import { type Uuid } from '../uuid.js';
|
|
6
|
+
import { type StepResult } from './spec-ops.js';
|
|
7
|
+
/** Constraint ids for `facet`: keep `previous` ids, else take `given`, else derive. */
|
|
8
|
+
export declare function constraintIdsFor(facet: IDSFacet, opId: Uuid, given: ConstraintIds | undefined, previous?: ConstraintIds): ConstraintIds;
|
|
9
|
+
export declare function applyFacetAdd(doc: StudioDocument, op: FacetAddOp): StepResult;
|
|
10
|
+
export declare function applyFacetRemove(doc: StudioDocument, op: PrimitiveOp & {
|
|
11
|
+
kind: 'facet.remove';
|
|
12
|
+
}): StepResult;
|
|
13
|
+
export declare function applyFacetRestore(doc: StudioDocument, op: FacetRestoreOp): StepResult;
|
|
14
|
+
export declare function applyFacetMove(doc: StudioDocument, op: FacetMoveOp): StepResult;
|
|
15
|
+
export declare function applyFacetReplace(doc: StudioDocument, op: FacetReplaceOp): StepResult;
|
|
16
|
+
/** Apply a `FacetPatch` and return the patch that restores the old values. */
|
|
17
|
+
export declare function applyFacetPatch(doc: StudioDocument, forward: {
|
|
18
|
+
opId: Uuid;
|
|
19
|
+
}, facetId: Uuid, patch: FacetPatch): StepResult;
|
|
20
|
+
//# sourceMappingURL=facet-ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facet-ops.d.ts","sourceRoot":"","sources":["../../src/reducer/facet-ops.ts"],"names":[],"mappings":"AAIA,sFAAsF;AAEtF,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,eAAe,CAAC;AAG9D,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EAEZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAejD,OAAO,EAAO,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAErD,uFAAuF;AACvF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,QAAQ,GAAE,aAAkB,GAC3B,aAAa,CAMf;AA8BD,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,UAAU,GAAG,UAAU,CAsB7E;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GAAG,UAAU,CAQ5G;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,GAAG,UAAU,CAgBrF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,WAAW,GAAG,UAAU,CA0B/E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,GAAG,UAAU,CAcrF;AAID,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAwC1H"}
|