@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 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/bsdd/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type BsddSource } from './types.js';
|
|
2
|
+
export declare const BSDD_API_BASE = "https://api.bsdd.buildingsmart.org";
|
|
3
|
+
export interface HttpBsddSourceOptions {
|
|
4
|
+
/** Default: the public API. The viewer passes its proxy, `/api/bsdd`. */
|
|
5
|
+
apiBase?: string;
|
|
6
|
+
fetch?: typeof fetch;
|
|
7
|
+
/** Per-request timeout. Default 15 s. */
|
|
8
|
+
timeoutMs?: number;
|
|
9
|
+
/** UI language for labels (IDS values use codes and URIs, never labels). */
|
|
10
|
+
languageCode?: string;
|
|
11
|
+
/** Clock for `checkedAt`. */
|
|
12
|
+
now?: () => number;
|
|
13
|
+
}
|
|
14
|
+
export declare function createHttpBsddSource(options?: HttpBsddSourceOptions): BsddSource;
|
|
15
|
+
//# sourceMappingURL=http-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-source.d.ts","sourceRoot":"","sources":["../../src/bsdd/http-source.ts"],"names":[],"mappings":"AAwBA,OAAO,EAKL,KAAK,UAAU,EAEhB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,aAAa,uCAAuC,CAAC;AAElE,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAwBD,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,UAAU,CA4JpF"}
|
|
@@ -0,0 +1,196 @@
|
|
|
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
|
+
* `BsddSource` over the public bSDD REST API (v1 contracts), following the
|
|
6
|
+
* conventions of the SDK client (`@ifc-lite/sdk` `bim.bsdd`): JSON over
|
|
7
|
+
* `fetch`, 404 means "does not exist", any other HTTP failure is a
|
|
8
|
+
* `BsddHttpError` carrying `Retry-After`. In the viewer, `apiBase` is the
|
|
9
|
+
* same-origin proxy `/api/bsdd`. `fetch` is injectable so tests replay
|
|
10
|
+
* recorded responses offline.
|
|
11
|
+
*/
|
|
12
|
+
import { dictionaryUriOf, isRecord, readAllowedValues, readClass, readDictionaries, readDictionaryClasses, readSearchPage, readStatus, str, } from './contract.js';
|
|
13
|
+
import { BsddHttpError, } from './types.js';
|
|
14
|
+
export const BSDD_API_BASE = 'https://api.bsdd.buildingsmart.org';
|
|
15
|
+
const PAGE = 1000;
|
|
16
|
+
/** Upper bound on pages fetched for one dictionary (a bounded walk over server-supplied totals). */
|
|
17
|
+
const MAX_PAGES = 50;
|
|
18
|
+
function parseRetryAfter(value) {
|
|
19
|
+
if (!value)
|
|
20
|
+
return undefined;
|
|
21
|
+
const seconds = Number(value);
|
|
22
|
+
if (Number.isFinite(seconds))
|
|
23
|
+
return Math.max(0, Math.ceil(seconds));
|
|
24
|
+
const at = Date.parse(value);
|
|
25
|
+
return Number.isFinite(at) ? Math.max(0, Math.round((at - Date.now()) / 1000)) : undefined;
|
|
26
|
+
}
|
|
27
|
+
function query(params) {
|
|
28
|
+
const q = new URLSearchParams();
|
|
29
|
+
for (const [k, v] of Object.entries(params)) {
|
|
30
|
+
if (v === undefined)
|
|
31
|
+
continue;
|
|
32
|
+
if (Array.isArray(v))
|
|
33
|
+
for (const item of v)
|
|
34
|
+
q.append(k, item);
|
|
35
|
+
else
|
|
36
|
+
q.append(k, String(v));
|
|
37
|
+
}
|
|
38
|
+
return q.toString();
|
|
39
|
+
}
|
|
40
|
+
export function createHttpBsddSource(options = {}) {
|
|
41
|
+
const base = (options.apiBase ?? BSDD_API_BASE).replace(/\/$/, '');
|
|
42
|
+
const doFetch = options.fetch ?? ((input, init) => fetch(input, init));
|
|
43
|
+
const timeoutMs = options.timeoutMs ?? 15_000;
|
|
44
|
+
const languageCode = options.languageCode;
|
|
45
|
+
const now = options.now ?? Date.now;
|
|
46
|
+
const dictionaryNames = new Map();
|
|
47
|
+
/** GET JSON; `null` on 404. */
|
|
48
|
+
async function get(path) {
|
|
49
|
+
const url = `${base}${path}`;
|
|
50
|
+
const controller = new AbortController();
|
|
51
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
52
|
+
try {
|
|
53
|
+
const res = await doFetch(url, { headers: { Accept: 'application/json' }, signal: controller.signal });
|
|
54
|
+
if (res.status === 404)
|
|
55
|
+
return null;
|
|
56
|
+
if (!res.ok)
|
|
57
|
+
throw new BsddHttpError(res.status, url, parseRetryAfter(res.headers.get('retry-after')));
|
|
58
|
+
return (await res.json());
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
clearTimeout(timer);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async function getDictionary(uri) {
|
|
65
|
+
const raw = await get(`/api/Dictionary/v1?${query({ Uri: uri })}`);
|
|
66
|
+
return readDictionaries(raw).find((d) => d.uri === uri) ?? null;
|
|
67
|
+
}
|
|
68
|
+
function dictionaryName(dictUri) {
|
|
69
|
+
let p = dictionaryNames.get(dictUri);
|
|
70
|
+
if (!p) {
|
|
71
|
+
p = getDictionary(dictUri).then((d) => d?.name);
|
|
72
|
+
dictionaryNames.set(dictUri, p);
|
|
73
|
+
// Forget a failed lookup so the next check retries; the rejection still reaches the awaiting caller.
|
|
74
|
+
p.catch(() => dictionaryNames.delete(dictUri));
|
|
75
|
+
}
|
|
76
|
+
return p;
|
|
77
|
+
}
|
|
78
|
+
async function getClass(uri, opts = {}) {
|
|
79
|
+
const raw = await get(`/api/Class/v1?${query({ Uri: uri, IncludeClassProperties: true, IncludeChildClassReferences: true, languageCode: opts.languageCode ?? languageCode })}`);
|
|
80
|
+
return readClass(raw) ?? null;
|
|
81
|
+
}
|
|
82
|
+
async function resolveClass(uri) {
|
|
83
|
+
const cls = await getClass(uri);
|
|
84
|
+
const checkedAt = now();
|
|
85
|
+
if (!cls)
|
|
86
|
+
return { uri, state: 'notFound', kind: 'class', checkedAt };
|
|
87
|
+
const dictUri = cls.dictionaryUri || dictionaryUriOf(uri);
|
|
88
|
+
const name = dictUri ? await dictionaryName(dictUri) : undefined;
|
|
89
|
+
const replacedBy = dictUri ? cls.replacingObjectCodes.map((c) => `${dictUri}/class/${encodeURIComponent(c)}`) : [];
|
|
90
|
+
return {
|
|
91
|
+
uri,
|
|
92
|
+
state: cls.status === 'unknown' ? 'active' : cls.status,
|
|
93
|
+
kind: 'class',
|
|
94
|
+
...(name ? { dictionaryName: name } : {}),
|
|
95
|
+
...(replacedBy.length ? { replacedBy } : {}),
|
|
96
|
+
checkedAt,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
async function resolveProperty(uri) {
|
|
100
|
+
const raw = await get(`/api/Property/v4?${query({ uri, languageCode })}`);
|
|
101
|
+
const checkedAt = now();
|
|
102
|
+
if (!isRecord(raw))
|
|
103
|
+
return { uri, state: 'notFound', kind: 'property', checkedAt };
|
|
104
|
+
const status = readStatus(raw.status);
|
|
105
|
+
const dictUri = str(raw, 'dictionaryUri') ?? dictionaryUriOf(uri);
|
|
106
|
+
const allowed = readAllowedValues(raw) ?? [];
|
|
107
|
+
const values = allowed.map((v) => v.code);
|
|
108
|
+
const labels = allowed.filter((v) => v.value !== v.code).map((v) => v.value);
|
|
109
|
+
const replacing = Array.isArray(raw.replacingObjectCodes) ? raw.replacingObjectCodes.filter((c) => typeof c === 'string') : [];
|
|
110
|
+
const name = dictUri ? await dictionaryName(dictUri) : undefined;
|
|
111
|
+
return {
|
|
112
|
+
uri,
|
|
113
|
+
state: status === 'unknown' ? 'active' : status,
|
|
114
|
+
kind: 'property',
|
|
115
|
+
...(name ? { dictionaryName: name } : {}),
|
|
116
|
+
...(dictUri && replacing.length ? { replacedBy: replacing.map((c) => `${dictUri}/prop/${encodeURIComponent(c)}`) } : {}),
|
|
117
|
+
...(values.length ? { allowedValues: values } : {}),
|
|
118
|
+
...(labels.length ? { allowedLabels: labels } : {}),
|
|
119
|
+
checkedAt,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
async listDictionaries() {
|
|
124
|
+
const out = [];
|
|
125
|
+
for (let page = 0; page < MAX_PAGES; page++) {
|
|
126
|
+
const raw = await get(`/api/Dictionary/v1?${query({ IncludeTestDictionaries: false, Offset: page * PAGE, Limit: PAGE })}`);
|
|
127
|
+
const rows = readDictionaries(raw);
|
|
128
|
+
out.push(...rows);
|
|
129
|
+
const total = isRecord(raw) && typeof raw.totalCount === 'number' ? raw.totalCount : out.length;
|
|
130
|
+
if (rows.length === 0 || out.length >= total)
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
return out;
|
|
134
|
+
},
|
|
135
|
+
getDictionary,
|
|
136
|
+
async listClasses(dictionaryUri) {
|
|
137
|
+
const out = [];
|
|
138
|
+
for (let page = 0; page < MAX_PAGES; page++) {
|
|
139
|
+
const raw = await get(`/api/Dictionary/v1/Classes?${query({ Uri: dictionaryUri, UseNestedClasses: false, ClassType: 'Class', Offset: page * PAGE, Limit: PAGE, languageCode })}`);
|
|
140
|
+
if (raw === null)
|
|
141
|
+
return [];
|
|
142
|
+
const { classes, total } = readDictionaryClasses(raw);
|
|
143
|
+
out.push(...classes);
|
|
144
|
+
if (classes.length === 0 || out.length >= total)
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
return out;
|
|
148
|
+
},
|
|
149
|
+
async searchClasses(q) {
|
|
150
|
+
const offset = q.offset ?? 0;
|
|
151
|
+
const raw = await get(`/api/Class/Search/v1?${query({
|
|
152
|
+
SearchText: q.text,
|
|
153
|
+
DictionaryUris: q.dictionaryUris,
|
|
154
|
+
RelatedIfcEntities: q.relatedIfcEntity,
|
|
155
|
+
languageCode: q.languageCode ?? languageCode,
|
|
156
|
+
Offset: offset,
|
|
157
|
+
Limit: q.limit ?? 50,
|
|
158
|
+
})}`);
|
|
159
|
+
return readSearchPage(raw, offset);
|
|
160
|
+
},
|
|
161
|
+
getClass,
|
|
162
|
+
async resolveUri(uri) {
|
|
163
|
+
if (/\/class\/[^/]+\/prop\//i.test(uri)) {
|
|
164
|
+
// A class-property URI: its status lives on the class property.
|
|
165
|
+
const classUri = uri.replace(/\/prop\/.*$/i, '');
|
|
166
|
+
const code = decodeURIComponent(uri.slice(uri.toLowerCase().lastIndexOf('/prop/') + '/prop/'.length));
|
|
167
|
+
const cls = await getClass(classUri);
|
|
168
|
+
const prop = cls?.properties.find((p) => p.code === code);
|
|
169
|
+
const checkedAt = now();
|
|
170
|
+
if (!prop)
|
|
171
|
+
return { uri, state: 'notFound', kind: 'property', checkedAt };
|
|
172
|
+
const values = prop.allowedValues?.map((v) => v.code) ?? [];
|
|
173
|
+
const labels = prop.allowedValues?.filter((v) => v.value !== v.code).map((v) => v.value) ?? [];
|
|
174
|
+
const status = prop.status ?? 'active';
|
|
175
|
+
return {
|
|
176
|
+
uri,
|
|
177
|
+
state: status === 'unknown' ? 'active' : status,
|
|
178
|
+
kind: 'property',
|
|
179
|
+
...(values.length ? { allowedValues: values } : {}),
|
|
180
|
+
...(labels.length ? { allowedLabels: labels } : {}),
|
|
181
|
+
checkedAt,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
if (/\/class\//i.test(uri))
|
|
185
|
+
return resolveClass(uri);
|
|
186
|
+
if (/\/prop\//i.test(uri))
|
|
187
|
+
return resolveProperty(uri);
|
|
188
|
+
const dict = await getDictionary(uri);
|
|
189
|
+
const checkedAt = now();
|
|
190
|
+
if (!dict)
|
|
191
|
+
return { uri, state: 'notFound', kind: 'dictionary', checkedAt };
|
|
192
|
+
return { uri, state: dict.status === 'unknown' ? 'active' : dict.status, kind: 'dictionary', dictionaryName: dict.name, checkedAt };
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=http-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-source.js","sourceRoot":"","sources":["../../src/bsdd/http-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IndexedDB `BsddCacheStore` (IDS-074): the browser's persistent bSDD cache,
|
|
3
|
+
* so pickers keep working offline for classes seen before. Framework-free;
|
|
4
|
+
* the factory is injectable (tests pass `fake-indexeddb`).
|
|
5
|
+
*/
|
|
6
|
+
import type { BsddCacheStore } from './cache.js';
|
|
7
|
+
export declare const BSDD_IDB_NAME = "ifc-lite-bsdd";
|
|
8
|
+
export interface IndexedDbBsddStoreOptions {
|
|
9
|
+
/** Default: `globalThis.indexedDB`. */
|
|
10
|
+
indexedDB?: IDBFactory;
|
|
11
|
+
/** Default: `globalThis.IDBKeyRange` (used for prefix scans when present). */
|
|
12
|
+
keyRange?: typeof IDBKeyRange;
|
|
13
|
+
dbName?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function createIndexedDbBsddStore(options?: IndexedDbBsddStoreOptions): BsddCacheStore;
|
|
16
|
+
//# sourceMappingURL=idb-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idb-store.d.ts","sourceRoot":"","sources":["../../src/bsdd/idb-store.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAG7C,MAAM,WAAW,yBAAyB;IACxC,uCAAuC;IACvC,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,WAAW,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiBD,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,yBAA8B,GAAG,cAAc,CAuChG"}
|
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
export const BSDD_IDB_NAME = 'ifc-lite-bsdd';
|
|
5
|
+
const STORE = 'entries';
|
|
6
|
+
function done(req) {
|
|
7
|
+
return new Promise((resolve, reject) => {
|
|
8
|
+
req.onsuccess = () => resolve(req.result);
|
|
9
|
+
req.onerror = () => reject(req.error ?? new Error('IndexedDB request failed'));
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
function settled(tx) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
tx.oncomplete = () => resolve();
|
|
15
|
+
tx.onerror = () => reject(tx.error ?? new Error('IndexedDB transaction failed'));
|
|
16
|
+
tx.onabort = () => reject(tx.error ?? new Error('IndexedDB transaction aborted'));
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export function createIndexedDbBsddStore(options = {}) {
|
|
20
|
+
const factory = options.indexedDB ?? globalThis.indexedDB;
|
|
21
|
+
const keyRange = options.keyRange ?? globalThis.IDBKeyRange;
|
|
22
|
+
if (!factory)
|
|
23
|
+
throw new Error('IndexedDB is not available here; use createMemoryBsddStore()');
|
|
24
|
+
let db;
|
|
25
|
+
function open() {
|
|
26
|
+
db ??= new Promise((resolve, reject) => {
|
|
27
|
+
const req = factory.open(options.dbName ?? BSDD_IDB_NAME, 1);
|
|
28
|
+
req.onupgradeneeded = () => {
|
|
29
|
+
if (!req.result.objectStoreNames.contains(STORE))
|
|
30
|
+
req.result.createObjectStore(STORE);
|
|
31
|
+
};
|
|
32
|
+
req.onsuccess = () => resolve(req.result);
|
|
33
|
+
req.onerror = () => reject(req.error ?? new Error('cannot open the bSDD cache database'));
|
|
34
|
+
});
|
|
35
|
+
return db;
|
|
36
|
+
}
|
|
37
|
+
async function run(mode, body) {
|
|
38
|
+
const tx = (await open()).transaction(STORE, mode);
|
|
39
|
+
const result = done(body(tx.objectStore(STORE)));
|
|
40
|
+
await settled(tx);
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
// Whatever is stored comes back as `unknown`: the cache checks version, kind and shape before use.
|
|
45
|
+
get: (key) => run('readonly', (s) => s.get(key)),
|
|
46
|
+
async put(key, entry) {
|
|
47
|
+
await run('readwrite', (s) => s.put(entry, key));
|
|
48
|
+
},
|
|
49
|
+
async delete(key) {
|
|
50
|
+
await run('readwrite', (s) => s.delete(key));
|
|
51
|
+
},
|
|
52
|
+
async keys(prefix) {
|
|
53
|
+
const all = await run('readonly', (s) => s.getAllKeys(keyRange ? keyRange.bound(prefix, `${prefix}`) : undefined));
|
|
54
|
+
return all.filter((k) => typeof k === 'string' && k.startsWith(prefix));
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=idb-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idb-store.js","sourceRoot":"","sources":["../../src/bsdd/idb-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Insert a bSDD class as classification and/or entity facets (05-bsdd.md
|
|
3
|
+
* §2.1, IDS-070). The picker resolves a class, `snapshotBsddClass` keeps
|
|
4
|
+
* what the insert needs, and `bsddInsertOp` builds the `bulk.fromBsddClass`
|
|
5
|
+
* op that the host checks with the gate and commits: the document is only
|
|
6
|
+
* ever changed through that op.
|
|
7
|
+
*/
|
|
8
|
+
import type { IFCVersion } from '@ifc-lite/ids';
|
|
9
|
+
import type { Section } from '../document/types.js';
|
|
10
|
+
import type { GateContext } from '../gate/context.js';
|
|
11
|
+
import type { BsddClassSnapshot, BsddEntityRef, BsddNewSpec, BsddPropertySelection, BsddPropertySnapshot, BulkFromBsddClassOp } from '../ops/types.js';
|
|
12
|
+
import { type Uuid } from '../uuid.js';
|
|
13
|
+
import type { BsddClass, BsddClassProperty } from './types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Split a related-entity name as bSDD publishes it. `IfcWall` is an entity;
|
|
16
|
+
* `IfcWallSOLIDWALL` is `IfcWall` with predefined type `SOLIDWALL` when the
|
|
17
|
+
* schema confirms both. Without schema tables, or when nothing matches, the
|
|
18
|
+
* name is kept whole (the gate then reports it).
|
|
19
|
+
*/
|
|
20
|
+
export declare function splitRelatedEntity(name: string, gate?: GateContext, versions?: readonly IFCVersion[]): BsddEntityRef;
|
|
21
|
+
/** EXPRESS data type of a standard property (`Pset_WallCommon.IsExternal` → `IFCBOOLEAN`), from the first version that has it. */
|
|
22
|
+
export declare function standardDataType(pset: string, name: string, gate: GateContext, versions?: readonly IFCVersion[]): string | undefined;
|
|
23
|
+
/** What the mapping table needs of a class property. */
|
|
24
|
+
export declare function snapshotBsddProperty(p: BsddClassProperty, gate?: GateContext, versions?: readonly IFCVersion[]): BsddPropertySnapshot;
|
|
25
|
+
/** What `bulk.fromBsddClass` carries of a class. Pass `properties` to carry other (e.g. inherited) properties. */
|
|
26
|
+
export declare function snapshotBsddClass(cls: BsddClass, options: {
|
|
27
|
+
dictionaryName: string;
|
|
28
|
+
gate?: GateContext;
|
|
29
|
+
versions?: readonly IFCVersion[];
|
|
30
|
+
properties?: readonly BsddClassProperty[];
|
|
31
|
+
}): BsddClassSnapshot;
|
|
32
|
+
/** The entity choices a picker offers for a class (several related entities: pick one or keep all as an enumeration). */
|
|
33
|
+
export declare function entityChoices(snapshot: BsddClassSnapshot): string[];
|
|
34
|
+
/** Which facets to insert; `none` adds only the selected properties. */
|
|
35
|
+
export type BsddInsertMode = 'classification' | 'entity' | 'both' | 'none';
|
|
36
|
+
export interface BsddInsertRequest {
|
|
37
|
+
classes: BsddClassSnapshot[];
|
|
38
|
+
/** An existing specification, or a new one. */
|
|
39
|
+
target: {
|
|
40
|
+
specId: Uuid;
|
|
41
|
+
} | {
|
|
42
|
+
newSpec: BsddNewSpec;
|
|
43
|
+
};
|
|
44
|
+
mode: BsddInsertMode;
|
|
45
|
+
/** Where the facets go. Default `applicability` ("applies to IfcWall classified as X"). */
|
|
46
|
+
section?: Section;
|
|
47
|
+
/** Restrict the entity facet to these related entities. */
|
|
48
|
+
entities?: string[];
|
|
49
|
+
/** Property requirements to add through the mapping table. */
|
|
50
|
+
properties?: BsddPropertySelection;
|
|
51
|
+
opId?: Uuid;
|
|
52
|
+
}
|
|
53
|
+
/** The `bulk.fromBsddClass` op for an insert from the picker. */
|
|
54
|
+
export declare function bsddInsertOp(request: BsddInsertRequest): BulkFromBsddClassOp;
|
|
55
|
+
//# sourceMappingURL=insert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../src/bsdd/insert.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAU,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAI/D;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,QAAQ,GAAE,SAAS,UAAU,EAAiB,GAAG,aAAa,CAgBlI;AAED,kIAAkI;AAClI,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,GAAE,SAAS,UAAU,EAAiB,GAAG,MAAM,GAAG,SAAS,CAOlJ;AAED,wDAAwD;AACxD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,oBAAoB,CAerI;AAED,kHAAkH;AAClH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,SAAS,EACd,OAAO,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAAE,GACnI,iBAAiB,CAenB;AAED,yHAAyH;AACzH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAInE;AAED,wEAAwE;AACxE,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3E,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,+CAA+C;IAC/C,MAAM,EAAE;QAAE,MAAM,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC;IACpD,IAAI,EAAE,cAAc,CAAC;IACrB,2FAA2F;IAC3F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,CAO5E"}
|
|
@@ -0,0 +1,105 @@
|
|
|
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 { uuidv7 } from '../uuid.js';
|
|
5
|
+
const ALL_VERSIONS = ['IFC4X3_ADD2', 'IFC4', 'IFC2X3'];
|
|
6
|
+
/**
|
|
7
|
+
* Split a related-entity name as bSDD publishes it. `IfcWall` is an entity;
|
|
8
|
+
* `IfcWallSOLIDWALL` is `IfcWall` with predefined type `SOLIDWALL` when the
|
|
9
|
+
* schema confirms both. Without schema tables, or when nothing matches, the
|
|
10
|
+
* name is kept whole (the gate then reports it).
|
|
11
|
+
*/
|
|
12
|
+
export function splitRelatedEntity(name, gate, versions = ALL_VERSIONS) {
|
|
13
|
+
if (!gate)
|
|
14
|
+
return { entity: name };
|
|
15
|
+
const tables = versions.map((v) => gate.tables[v]);
|
|
16
|
+
const exact = tables.map((t) => t.entities.get(name.toUpperCase())).find((e) => !!e);
|
|
17
|
+
if (exact)
|
|
18
|
+
return { entity: exact.name };
|
|
19
|
+
// Longest PascalCase prefix whose remainder is an UPPER-case predefined type of it.
|
|
20
|
+
for (let cut = name.length - 1; cut > 3; cut--) {
|
|
21
|
+
const head = name.slice(0, cut);
|
|
22
|
+
const tail = name.slice(cut);
|
|
23
|
+
if (!/^[A-Z][A-Z0-9_]*$/.test(tail) || !/[a-z0-9]$/.test(head))
|
|
24
|
+
continue;
|
|
25
|
+
for (const t of tables) {
|
|
26
|
+
const e = t.entities.get(head.toUpperCase());
|
|
27
|
+
if (e?.predefinedTypes.some((p) => p.toUpperCase() === tail))
|
|
28
|
+
return { entity: e.name, predefinedType: tail };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return { entity: name };
|
|
32
|
+
}
|
|
33
|
+
/** EXPRESS data type of a standard property (`Pset_WallCommon.IsExternal` → `IFCBOOLEAN`), from the first version that has it. */
|
|
34
|
+
export function standardDataType(pset, name, gate, versions = ALL_VERSIONS) {
|
|
35
|
+
for (const v of versions) {
|
|
36
|
+
const prop = gate.tables[v].psets.get(pset)?.properties.find((p) => p.name === name);
|
|
37
|
+
const type = prop?.dataType ?? (prop?.kind === 'enumeration' ? 'IfcLabel' : undefined);
|
|
38
|
+
if (type)
|
|
39
|
+
return type.toUpperCase();
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
/** What the mapping table needs of a class property. */
|
|
44
|
+
export function snapshotBsddProperty(p, gate, versions) {
|
|
45
|
+
const out = { code: p.code };
|
|
46
|
+
if (p.name !== p.code)
|
|
47
|
+
out.name = p.name;
|
|
48
|
+
for (const key of ['uri', 'propertySet', 'dataType', 'propertyValueKind', 'dimension', 'pattern']) {
|
|
49
|
+
if (p[key])
|
|
50
|
+
out[key] = p[key];
|
|
51
|
+
}
|
|
52
|
+
for (const key of ['minInclusive', 'maxInclusive', 'minExclusive', 'maxExclusive']) {
|
|
53
|
+
if (p[key] !== undefined)
|
|
54
|
+
out[key] = p[key];
|
|
55
|
+
}
|
|
56
|
+
if (p.units?.length)
|
|
57
|
+
out.units = [...p.units];
|
|
58
|
+
if (p.allowedValues?.length)
|
|
59
|
+
out.allowedValues = p.allowedValues.map((v) => ({ code: v.code, value: v.value }));
|
|
60
|
+
if (p.isRequired !== undefined)
|
|
61
|
+
out.isRequired = p.isRequired;
|
|
62
|
+
const std = gate && p.propertySet ? standardDataType(p.propertySet, p.code, gate, versions) : undefined;
|
|
63
|
+
if (std)
|
|
64
|
+
out.standardDataType = std;
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
/** What `bulk.fromBsddClass` carries of a class. Pass `properties` to carry other (e.g. inherited) properties. */
|
|
68
|
+
export function snapshotBsddClass(cls, options) {
|
|
69
|
+
const refs = [];
|
|
70
|
+
for (const name of cls.relatedIfcEntityNames) {
|
|
71
|
+
const ref = splitRelatedEntity(name, options.gate, options.versions);
|
|
72
|
+
if (!refs.some((r) => r.entity === ref.entity && r.predefinedType === ref.predefinedType))
|
|
73
|
+
refs.push(ref);
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
uri: cls.uri,
|
|
77
|
+
code: cls.code,
|
|
78
|
+
name: cls.name,
|
|
79
|
+
dictionaryUri: cls.dictionaryUri,
|
|
80
|
+
dictionaryName: options.dictionaryName,
|
|
81
|
+
...(refs.length ? { relatedIfcEntities: refs } : {}),
|
|
82
|
+
properties: (options.properties ?? cls.properties).map((p) => snapshotBsddProperty(p, options.gate, options.versions)),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** The entity choices a picker offers for a class (several related entities: pick one or keep all as an enumeration). */
|
|
86
|
+
export function entityChoices(snapshot) {
|
|
87
|
+
const out = [];
|
|
88
|
+
for (const r of snapshot.relatedIfcEntities ?? [])
|
|
89
|
+
if (!out.includes(r.entity))
|
|
90
|
+
out.push(r.entity);
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
/** The `bulk.fromBsddClass` op for an insert from the picker. */
|
|
94
|
+
export function bsddInsertOp(request) {
|
|
95
|
+
const section = request.section ?? 'applicability';
|
|
96
|
+
const payload = { classes: request.classes, target: request.target };
|
|
97
|
+
if (request.mode === 'entity' || request.mode === 'both')
|
|
98
|
+
payload.entity = { section, ...(request.entities?.length ? { entities: request.entities } : {}) };
|
|
99
|
+
if (request.mode === 'classification' || request.mode === 'both')
|
|
100
|
+
payload.classification = { section };
|
|
101
|
+
if (request.properties?.select.length)
|
|
102
|
+
payload.properties = request.properties;
|
|
103
|
+
return { kind: 'bulk.fromBsddClass', opId: request.opId ?? uuidv7(), payload };
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=insert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.js","sourceRoot":"","sources":["../../src/bsdd/insert.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAqB/D,OAAO,EAAE,MAAM,EAAa,MAAM,YAAY,CAAC;AAG/C,MAAM,YAAY,GAA0B,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,IAAkB,EAAE,WAAkC,YAAY;IACjH,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,KAAK;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACzC,oFAAoF;IACpF,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACzE,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;gBAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;QAChH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,kIAAkI;AAClI,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAY,EAAE,IAAiB,EAAE,WAAkC,YAAY;IAC5H,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACrF,MAAM,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACvF,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,oBAAoB,CAAC,CAAoB,EAAE,IAAkB,EAAE,QAAgC;IAC7G,MAAM,GAAG,GAAyB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,CAAU,EAAE,CAAC;QAC3G,IAAI,CAAC,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,CAAU,EAAE,CAAC;QAC5F,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM;QAAE,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,aAAa,EAAE,MAAM;QAAE,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAChH,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS;QAAE,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;IAC9D,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxG,IAAI,GAAG;QAAE,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC;IACpC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,iBAAiB,CAC/B,GAAc,EACd,OAAoI;IAEpI,MAAM,IAAI,GAAoB,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,qBAAqB,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,cAAc,KAAK,GAAG,CAAC,cAAc,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO;QACL,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,UAAU,EAAE,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;KACvH,CAAC;AACJ,CAAC;AAED,yHAAyH;AACzH,MAAM,UAAU,aAAa,CAAC,QAA2B;IACvD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,kBAAkB,IAAI,EAAE;QAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACnG,OAAO,GAAG,CAAC;AACb,CAAC;AAmBD,iEAAiE;AACjE,MAAM,UAAU,YAAY,CAAC,OAA0B;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;IACnD,MAAM,OAAO,GAAmC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACrG,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5J,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,cAAc,GAAG,EAAE,OAAO,EAAE,CAAC;IACvG,IAAI,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/E,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC;AACjF,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bSDD property → IDS property requirement mapping table
|
|
3
|
+
* (05-bsdd.md §2.2, IDS-071).
|
|
4
|
+
*
|
|
5
|
+
* | bSDD | IDS |
|
|
6
|
+
* |---|---|
|
|
7
|
+
* | propertySet | propertySet (absent: the caller's fallback set, declared custom) |
|
|
8
|
+
* | code | baseName (IFC dictionary properties keep their EXPRESS name) |
|
|
9
|
+
* | dataType (+ dimension / unit) | IFC dataType via `BSDD_DATA_TYPES`, refined to a measure |
|
|
10
|
+
* | allowedValues | oneOf over the value codes |
|
|
11
|
+
* | min/max in/exclusive | range (a non-SI unit converted to SI) |
|
|
12
|
+
* | pattern | pattern |
|
|
13
|
+
* | uri | the requirement's @uri |
|
|
14
|
+
* | isRequired | required / optional |
|
|
15
|
+
*
|
|
16
|
+
* bSDD data quality varies, so the table maps conservatively: anything it
|
|
17
|
+
* cannot map faithfully is left out and reported as a note (an unknown
|
|
18
|
+
* data type → no dataType, which lint IDSL-PROP-003 then flags), never
|
|
19
|
+
* guessed. Pure: no schema tables, no network.
|
|
20
|
+
*/
|
|
21
|
+
import type { RequirementOptionality } from '@ifc-lite/ids';
|
|
22
|
+
import type { BsddPropertySelection, BsddPropertySnapshot, FacetDraft, XsdBase } from '../ops/types.js';
|
|
23
|
+
export interface BsddDataTypeRule {
|
|
24
|
+
/** IFC data type for the bSDD data type when nothing refines it. */
|
|
25
|
+
ifc: string;
|
|
26
|
+
/** XSD base of value restrictions. */
|
|
27
|
+
base: XsdBase;
|
|
28
|
+
/** Whether a dimension or unit refines it to a measure. */
|
|
29
|
+
measured: boolean;
|
|
30
|
+
}
|
|
31
|
+
/** bSDD data type (lower case) → IFC data type. */
|
|
32
|
+
export declare const BSDD_DATA_TYPES: Readonly<Record<string, BsddDataTypeRule>>;
|
|
33
|
+
/** SI dimension exponents `L M T I Θ N J` → IFC measure. */
|
|
34
|
+
export declare const DIMENSION_MEASURES: Readonly<Record<string, string>>;
|
|
35
|
+
/** Unit symbol (lower case) → IFC measure, for properties published without a dimension. */
|
|
36
|
+
export declare const UNIT_MEASURES: Readonly<Record<string, string>>;
|
|
37
|
+
export type BsddMappingNoteCode = 'unknown-data-type' | 'no-data-type' | 'standard-data-type' | 'unit-converted' | 'unit-unknown' | 'value-not-mapped' | 'values-over-range' | 'fallback-property-set';
|
|
38
|
+
export interface BsddMappingNote {
|
|
39
|
+
code: BsddMappingNoteCode;
|
|
40
|
+
message: string;
|
|
41
|
+
}
|
|
42
|
+
export interface BsddPropertyMapping {
|
|
43
|
+
facet: Extract<FacetDraft, {
|
|
44
|
+
type: 'property';
|
|
45
|
+
}>;
|
|
46
|
+
optionality: RequirementOptionality;
|
|
47
|
+
propertySet: string;
|
|
48
|
+
baseName: string;
|
|
49
|
+
/** IFC data type written, when one was mapped. */
|
|
50
|
+
dataType?: string;
|
|
51
|
+
notes: BsddMappingNote[];
|
|
52
|
+
}
|
|
53
|
+
/** A property the table cannot place (no property set and no fallback). */
|
|
54
|
+
export declare class BsddMappingError extends Error {
|
|
55
|
+
readonly property: string;
|
|
56
|
+
constructor(property: string, message: string);
|
|
57
|
+
}
|
|
58
|
+
/** The IFC data type of a bSDD property, refined by dimension, then unit. */
|
|
59
|
+
export declare function mapBsddDataType(p: Pick<BsddPropertySnapshot, 'dataType' | 'dimension' | 'units'>): string | undefined;
|
|
60
|
+
/** Map one bSDD property to an IDS property requirement. Throws `BsddMappingError` when it has no property set. */
|
|
61
|
+
export declare function mapBsddProperty(p: BsddPropertySnapshot, options?: Omit<BsddPropertySelection, 'select'>): BsddPropertyMapping;
|
|
62
|
+
//# sourceMappingURL=mapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/bsdd/mapping.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAmB,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAGzH,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,2DAA2D;IAC3D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,mDAAmD;AACnD,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAOtE,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmB/D,CAAC;AAEF,4FAA4F;AAC5F,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkB1D,CAAC;AAKF,MAAM,MAAM,mBAAmB,GAC3B,mBAAmB,GACnB,cAAc,GACd,oBAAoB,GACpB,gBAAgB,GAChB,cAAc,GACd,kBAAkB,GAClB,mBAAmB,GACnB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IACjD,WAAW,EAAE,sBAAsB,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,2EAA2E;AAC3E,qBAAa,gBAAiB,SAAQ,KAAK;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIvD;AAQD,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAQrH;AAqCD,mHAAmH;AACnH,wBAAgB,eAAe,CAAC,CAAC,EAAE,oBAAoB,EAAE,OAAO,GAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAM,GAAG,mBAAmB,CA8BjI"}
|