@ifc-lite/ids-authoring 0.0.0-stage → 0.2.2

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.
Files changed (447) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +469 -2
  3. package/dist/bsdd/cache.d.ts +37 -0
  4. package/dist/bsdd/cache.d.ts.map +1 -0
  5. package/dist/bsdd/cache.js +116 -0
  6. package/dist/bsdd/cache.js.map +1 -0
  7. package/dist/bsdd/contract.d.ts +31 -0
  8. package/dist/bsdd/contract.d.ts.map +1 -0
  9. package/dist/bsdd/contract.js +185 -0
  10. package/dist/bsdd/contract.js.map +1 -0
  11. package/dist/bsdd/dictionary.d.ts +42 -0
  12. package/dist/bsdd/dictionary.d.ts.map +1 -0
  13. package/dist/bsdd/dictionary.js +115 -0
  14. package/dist/bsdd/dictionary.js.map +1 -0
  15. package/dist/bsdd/generator.d.ts +82 -0
  16. package/dist/bsdd/generator.d.ts.map +1 -0
  17. package/dist/bsdd/generator.js +155 -0
  18. package/dist/bsdd/generator.js.map +1 -0
  19. package/dist/bsdd/http-source.d.ts +15 -0
  20. package/dist/bsdd/http-source.d.ts.map +1 -0
  21. package/dist/bsdd/http-source.js +196 -0
  22. package/dist/bsdd/http-source.js.map +1 -0
  23. package/dist/bsdd/idb-store.d.ts +16 -0
  24. package/dist/bsdd/idb-store.d.ts.map +1 -0
  25. package/dist/bsdd/idb-store.js +58 -0
  26. package/dist/bsdd/idb-store.js.map +1 -0
  27. package/dist/bsdd/insert.d.ts +55 -0
  28. package/dist/bsdd/insert.d.ts.map +1 -0
  29. package/dist/bsdd/insert.js +105 -0
  30. package/dist/bsdd/insert.js.map +1 -0
  31. package/dist/bsdd/mapping.d.ts +62 -0
  32. package/dist/bsdd/mapping.d.ts.map +1 -0
  33. package/dist/bsdd/mapping.js +163 -0
  34. package/dist/bsdd/mapping.js.map +1 -0
  35. package/dist/bsdd/picker.d.ts +91 -0
  36. package/dist/bsdd/picker.d.ts.map +1 -0
  37. package/dist/bsdd/picker.js +151 -0
  38. package/dist/bsdd/picker.js.map +1 -0
  39. package/dist/bsdd/types.d.ts +162 -0
  40. package/dist/bsdd/types.d.ts.map +1 -0
  41. package/dist/bsdd/types.js +26 -0
  42. package/dist/bsdd/types.js.map +1 -0
  43. package/dist/bsdd/uri-health.d.ts +65 -0
  44. package/dist/bsdd/uri-health.d.ts.map +1 -0
  45. package/dist/bsdd/uri-health.js +110 -0
  46. package/dist/bsdd/uri-health.js.map +1 -0
  47. package/dist/canonical-json.d.ts +7 -0
  48. package/dist/canonical-json.d.ts.map +1 -0
  49. package/dist/canonical-json.js +20 -0
  50. package/dist/canonical-json.js.map +1 -0
  51. package/dist/comments/view.d.ts +37 -0
  52. package/dist/comments/view.d.ts.map +1 -0
  53. package/dist/comments/view.js +61 -0
  54. package/dist/comments/view.js.map +1 -0
  55. package/dist/compound/expand.d.ts +5 -0
  56. package/dist/compound/expand.d.ts.map +1 -0
  57. package/dist/compound/expand.js +135 -0
  58. package/dist/compound/expand.js.map +1 -0
  59. package/dist/compound/from-bsdd.d.ts +9 -0
  60. package/dist/compound/from-bsdd.d.ts.map +1 -0
  61. package/dist/compound/from-bsdd.js +166 -0
  62. package/dist/compound/from-bsdd.js.map +1 -0
  63. package/dist/diff/align.d.ts +42 -0
  64. package/dist/diff/align.d.ts.map +1 -0
  65. package/dist/diff/align.js +78 -0
  66. package/dist/diff/align.js.map +1 -0
  67. package/dist/diff/changelog-text.d.ts +39 -0
  68. package/dist/diff/changelog-text.d.ts.map +1 -0
  69. package/dist/diff/changelog-text.js +120 -0
  70. package/dist/diff/changelog-text.js.map +1 -0
  71. package/dist/diff/changelog.d.ts +28 -0
  72. package/dist/diff/changelog.d.ts.map +1 -0
  73. package/dist/diff/changelog.js +173 -0
  74. package/dist/diff/changelog.js.map +1 -0
  75. package/dist/diff/compare.d.ts +25 -0
  76. package/dist/diff/compare.d.ts.map +1 -0
  77. package/dist/diff/compare.js +150 -0
  78. package/dist/diff/compare.js.map +1 -0
  79. package/dist/diff/diff.d.ts +13 -0
  80. package/dist/diff/diff.d.ts.map +1 -0
  81. package/dist/diff/diff.js +140 -0
  82. package/dist/diff/diff.js.map +1 -0
  83. package/dist/diff/index.d.ts +5 -0
  84. package/dist/diff/index.d.ts.map +1 -0
  85. package/dist/diff/index.js +7 -0
  86. package/dist/diff/index.js.map +1 -0
  87. package/dist/diff/patch.d.ts +10 -0
  88. package/dist/diff/patch.d.ts.map +1 -0
  89. package/dist/diff/patch.js +177 -0
  90. package/dist/diff/patch.js.map +1 -0
  91. package/dist/diff/types.d.ts +201 -0
  92. package/dist/diff/types.d.ts.map +1 -0
  93. package/dist/diff/types.js +5 -0
  94. package/dist/diff/types.js.map +1 -0
  95. package/dist/document/fields.d.ts +33 -0
  96. package/dist/document/fields.d.ts.map +1 -0
  97. package/dist/document/fields.js +117 -0
  98. package/dist/document/fields.js.map +1 -0
  99. package/dist/document/from-ids.d.ts +32 -0
  100. package/dist/document/from-ids.d.ts.map +1 -0
  101. package/dist/document/from-ids.js +47 -0
  102. package/dist/document/from-ids.js.map +1 -0
  103. package/dist/document/node-index.d.ts +32 -0
  104. package/dist/document/node-index.d.ts.map +1 -0
  105. package/dist/document/node-index.js +127 -0
  106. package/dist/document/node-index.js.map +1 -0
  107. package/dist/document/types.d.ts +170 -0
  108. package/dist/document/types.d.ts.map +1 -0
  109. package/dist/document/types.js +19 -0
  110. package/dist/document/types.js.map +1 -0
  111. package/dist/gate/bsdd.d.ts +12 -0
  112. package/dist/gate/bsdd.d.ts.map +1 -0
  113. package/dist/gate/bsdd.js +17 -0
  114. package/dist/gate/bsdd.js.map +1 -0
  115. package/dist/gate/check.d.ts +6 -0
  116. package/dist/gate/check.d.ts.map +1 -0
  117. package/dist/gate/check.js +125 -0
  118. package/dist/gate/check.js.map +1 -0
  119. package/dist/gate/context.d.ts +51 -0
  120. package/dist/gate/context.d.ts.map +1 -0
  121. package/dist/gate/context.js +74 -0
  122. package/dist/gate/context.js.map +1 -0
  123. package/dist/gate/grounding-pset.d.ts +5 -0
  124. package/dist/gate/grounding-pset.d.ts.map +1 -0
  125. package/dist/gate/grounding-pset.js +179 -0
  126. package/dist/gate/grounding-pset.js.map +1 -0
  127. package/dist/gate/grounding.d.ts +48 -0
  128. package/dist/gate/grounding.d.ts.map +1 -0
  129. package/dist/gate/grounding.js +146 -0
  130. package/dist/gate/grounding.js.map +1 -0
  131. package/dist/gate/rank.d.ts +28 -0
  132. package/dist/gate/rank.d.ts.map +1 -0
  133. package/dist/gate/rank.js +68 -0
  134. package/dist/gate/rank.js.map +1 -0
  135. package/dist/gate/structural.d.ts +43 -0
  136. package/dist/gate/structural.d.ts.map +1 -0
  137. package/dist/gate/structural.js +175 -0
  138. package/dist/gate/structural.js.map +1 -0
  139. package/dist/gate/types.d.ts +45 -0
  140. package/dist/gate/types.d.ts.map +1 -0
  141. package/dist/gate/types.js +5 -0
  142. package/dist/gate/types.js.map +1 -0
  143. package/dist/gate/values.d.ts +19 -0
  144. package/dist/gate/values.d.ts.map +1 -0
  145. package/dist/gate/values.js +124 -0
  146. package/dist/gate/values.js.map +1 -0
  147. package/dist/headless/apply-gated.d.ts +32 -0
  148. package/dist/headless/apply-gated.d.ts.map +1 -0
  149. package/dist/headless/apply-gated.js +26 -0
  150. package/dist/headless/apply-gated.js.map +1 -0
  151. package/dist/headless/diff.d.ts +41 -0
  152. package/dist/headless/diff.d.ts.map +1 -0
  153. package/dist/headless/diff.js +116 -0
  154. package/dist/headless/diff.js.map +1 -0
  155. package/dist/headless/node-path.d.ts +10 -0
  156. package/dist/headless/node-path.d.ts.map +1 -0
  157. package/dist/headless/node-path.js +24 -0
  158. package/dist/headless/node-path.js.map +1 -0
  159. package/dist/headless/read.d.ts +26 -0
  160. package/dist/headless/read.d.ts.map +1 -0
  161. package/dist/headless/read.js +78 -0
  162. package/dist/headless/read.js.map +1 -0
  163. package/dist/headless/schema-lookup.d.ts +52 -0
  164. package/dist/headless/schema-lookup.d.ts.map +1 -0
  165. package/dist/headless/schema-lookup.js +77 -0
  166. package/dist/headless/schema-lookup.js.map +1 -0
  167. package/dist/headless/write.d.ts +46 -0
  168. package/dist/headless/write.d.ts.map +1 -0
  169. package/dist/headless/write.js +103 -0
  170. package/dist/headless/write.js.map +1 -0
  171. package/dist/history/history.d.ts +90 -0
  172. package/dist/history/history.d.ts.map +1 -0
  173. package/dist/history/history.js +86 -0
  174. package/dist/history/history.js.map +1 -0
  175. package/dist/history/persistence.d.ts +33 -0
  176. package/dist/history/persistence.d.ts.map +1 -0
  177. package/dist/history/persistence.js +71 -0
  178. package/dist/history/persistence.js.map +1 -0
  179. package/dist/index.d.ts +55 -0
  180. package/dist/index.d.ts.map +1 -0
  181. package/dist/index.js +75 -0
  182. package/dist/index.js.map +1 -0
  183. package/dist/lint/context.d.ts +15 -0
  184. package/dist/lint/context.d.ts.map +1 -0
  185. package/dist/lint/context.js +24 -0
  186. package/dist/lint/context.js.map +1 -0
  187. package/dist/lint/docs.d.ts +18 -0
  188. package/dist/lint/docs.d.ts.map +1 -0
  189. package/dist/lint/docs.js +117 -0
  190. package/dist/lint/docs.js.map +1 -0
  191. package/dist/lint/engine.d.ts +21 -0
  192. package/dist/lint/engine.d.ts.map +1 -0
  193. package/dist/lint/engine.js +123 -0
  194. package/dist/lint/engine.js.map +1 -0
  195. package/dist/lint/fix.d.ts +27 -0
  196. package/dist/lint/fix.d.ts.map +1 -0
  197. package/dist/lint/fix.js +22 -0
  198. package/dist/lint/fix.js.map +1 -0
  199. package/dist/lint/precision.d.ts +51 -0
  200. package/dist/lint/precision.d.ts.map +1 -0
  201. package/dist/lint/precision.js +64 -0
  202. package/dist/lint/precision.js.map +1 -0
  203. package/dist/lint/rules/bsdd.d.ts +5 -0
  204. package/dist/lint/rules/bsdd.d.ts.map +1 -0
  205. package/dist/lint/rules/bsdd.js +123 -0
  206. package/dist/lint/rules/bsdd.js.map +1 -0
  207. package/dist/lint/rules/card.d.ts +10 -0
  208. package/dist/lint/rules/card.d.ts.map +1 -0
  209. package/dist/lint/rules/card.js +140 -0
  210. package/dist/lint/rules/card.js.map +1 -0
  211. package/dist/lint/rules/doc-ver-part.d.ts +7 -0
  212. package/dist/lint/rules/doc-ver-part.d.ts.map +1 -0
  213. package/dist/lint/rules/doc-ver-part.js +155 -0
  214. package/dist/lint/rules/doc-ver-part.js.map +1 -0
  215. package/dist/lint/rules/entity.d.ts +12 -0
  216. package/dist/lint/rules/entity.d.ts.map +1 -0
  217. package/dist/lint/rules/entity.js +215 -0
  218. package/dist/lint/rules/entity.js.map +1 -0
  219. package/dist/lint/rules/index.d.ts +4 -0
  220. package/dist/lint/rules/index.d.ts.map +1 -0
  221. package/dist/lint/rules/index.js +63 -0
  222. package/dist/lint/rules/index.js.map +1 -0
  223. package/dist/lint/rules/pdt-att.d.ts +7 -0
  224. package/dist/lint/rules/pdt-att.d.ts.map +1 -0
  225. package/dist/lint/rules/pdt-att.js +209 -0
  226. package/dist/lint/rules/pdt-att.js.map +1 -0
  227. package/dist/lint/rules/pset.d.ts +12 -0
  228. package/dist/lint/rules/pset.d.ts.map +1 -0
  229. package/dist/lint/rules/pset.js +263 -0
  230. package/dist/lint/rules/pset.js.map +1 -0
  231. package/dist/lint/rules/regex.d.ts +6 -0
  232. package/dist/lint/rules/regex.d.ts.map +1 -0
  233. package/dist/lint/rules/regex.js +184 -0
  234. package/dist/lint/rules/regex.js.map +1 -0
  235. package/dist/lint/rules/spec-doc.d.ts +5 -0
  236. package/dist/lint/rules/spec-doc.d.ts.map +1 -0
  237. package/dist/lint/rules/spec-doc.js +132 -0
  238. package/dist/lint/rules/spec-doc.js.map +1 -0
  239. package/dist/lint/rules/spec.d.ts +24 -0
  240. package/dist/lint/rules/spec.d.ts.map +1 -0
  241. package/dist/lint/rules/spec.js +162 -0
  242. package/dist/lint/rules/spec.js.map +1 -0
  243. package/dist/lint/rules/units.d.ts +4 -0
  244. package/dist/lint/rules/units.d.ts.map +1 -0
  245. package/dist/lint/rules/units.js +101 -0
  246. package/dist/lint/rules/units.js.map +1 -0
  247. package/dist/lint/rules/util.d.ts +37 -0
  248. package/dist/lint/rules/util.d.ts.map +1 -0
  249. package/dist/lint/rules/util.js +117 -0
  250. package/dist/lint/rules/util.js.map +1 -0
  251. package/dist/lint/rules/value-sites.d.ts +28 -0
  252. package/dist/lint/rules/value-sites.d.ts.map +1 -0
  253. package/dist/lint/rules/value-sites.js +81 -0
  254. package/dist/lint/rules/value-sites.js.map +1 -0
  255. package/dist/lint/rules/values.d.ts +22 -0
  256. package/dist/lint/rules/values.d.ts.map +1 -0
  257. package/dist/lint/rules/values.js +237 -0
  258. package/dist/lint/rules/values.js.map +1 -0
  259. package/dist/lint/rules/xsd-regex.d.ts +34 -0
  260. package/dist/lint/rules/xsd-regex.d.ts.map +1 -0
  261. package/dist/lint/rules/xsd-regex.js +149 -0
  262. package/dist/lint/rules/xsd-regex.js.map +1 -0
  263. package/dist/lint/solver/sample.d.ts +3 -0
  264. package/dist/lint/solver/sample.d.ts.map +1 -0
  265. package/dist/lint/solver/sample.js +134 -0
  266. package/dist/lint/solver/sample.js.map +1 -0
  267. package/dist/lint/solver/solver.d.ts +39 -0
  268. package/dist/lint/solver/solver.d.ts.map +1 -0
  269. package/dist/lint/solver/solver.js +126 -0
  270. package/dist/lint/solver/solver.js.map +1 -0
  271. package/dist/lint/suppress.d.ts +12 -0
  272. package/dist/lint/suppress.d.ts.map +1 -0
  273. package/dist/lint/suppress.js +56 -0
  274. package/dist/lint/suppress.js.map +1 -0
  275. package/dist/lint/types.d.ts +162 -0
  276. package/dist/lint/types.d.ts.map +1 -0
  277. package/dist/lint/types.js +5 -0
  278. package/dist/lint/types.js.map +1 -0
  279. package/dist/lint/walk.d.ts +20 -0
  280. package/dist/lint/walk.d.ts.map +1 -0
  281. package/dist/lint/walk.js +47 -0
  282. package/dist/lint/walk.js.map +1 -0
  283. package/dist/match/cascade.d.ts +53 -0
  284. package/dist/match/cascade.d.ts.map +1 -0
  285. package/dist/match/cascade.js +135 -0
  286. package/dist/match/cascade.js.map +1 -0
  287. package/dist/match/reidentify.d.ts +46 -0
  288. package/dist/match/reidentify.d.ts.map +1 -0
  289. package/dist/match/reidentify.js +67 -0
  290. package/dist/match/reidentify.js.map +1 -0
  291. package/dist/merge/comments.d.ts +13 -0
  292. package/dist/merge/comments.d.ts.map +1 -0
  293. package/dist/merge/comments.js +61 -0
  294. package/dist/merge/comments.js.map +1 -0
  295. package/dist/merge/index.d.ts +4 -0
  296. package/dist/merge/index.d.ts.map +1 -0
  297. package/dist/merge/index.js +6 -0
  298. package/dist/merge/index.js.map +1 -0
  299. package/dist/merge/keys.d.ts +22 -0
  300. package/dist/merge/keys.d.ts.map +1 -0
  301. package/dist/merge/keys.js +54 -0
  302. package/dist/merge/keys.js.map +1 -0
  303. package/dist/merge/merge.d.ts +8 -0
  304. package/dist/merge/merge.d.ts.map +1 -0
  305. package/dist/merge/merge.js +206 -0
  306. package/dist/merge/merge.js.map +1 -0
  307. package/dist/merge/order.d.ts +11 -0
  308. package/dist/merge/order.d.ts.map +1 -0
  309. package/dist/merge/order.js +117 -0
  310. package/dist/merge/order.js.map +1 -0
  311. package/dist/merge/sidecar.d.ts +12 -0
  312. package/dist/merge/sidecar.d.ts.map +1 -0
  313. package/dist/merge/sidecar.js +64 -0
  314. package/dist/merge/sidecar.js.map +1 -0
  315. package/dist/merge/types.d.ts +50 -0
  316. package/dist/merge/types.d.ts.map +1 -0
  317. package/dist/merge/types.js +5 -0
  318. package/dist/merge/types.js.map +1 -0
  319. package/dist/merge/view.d.ts +28 -0
  320. package/dist/merge/view.d.ts.map +1 -0
  321. package/dist/merge/view.js +35 -0
  322. package/dist/merge/view.js.map +1 -0
  323. package/dist/ops/draft.d.ts +33 -0
  324. package/dist/ops/draft.d.ts.map +1 -0
  325. package/dist/ops/draft.js +253 -0
  326. package/dist/ops/draft.js.map +1 -0
  327. package/dist/ops/json-schema-lite.d.ts +41 -0
  328. package/dist/ops/json-schema-lite.d.ts.map +1 -0
  329. package/dist/ops/json-schema-lite.js +119 -0
  330. package/dist/ops/json-schema-lite.js.map +1 -0
  331. package/dist/ops/schema-values.d.ts +5 -0
  332. package/dist/ops/schema-values.d.ts.map +1 -0
  333. package/dist/ops/schema-values.js +233 -0
  334. package/dist/ops/schema-values.js.map +1 -0
  335. package/dist/ops/schema.d.ts +27 -0
  336. package/dist/ops/schema.d.ts.map +1 -0
  337. package/dist/ops/schema.js +258 -0
  338. package/dist/ops/schema.js.map +1 -0
  339. package/dist/ops/sidecar-ops.d.ts +85 -0
  340. package/dist/ops/sidecar-ops.d.ts.map +1 -0
  341. package/dist/ops/sidecar-ops.js +5 -0
  342. package/dist/ops/sidecar-ops.js.map +1 -0
  343. package/dist/ops/types.d.ts +400 -0
  344. package/dist/ops/types.d.ts.map +1 -0
  345. package/dist/ops/types.js +5 -0
  346. package/dist/ops/types.js.map +1 -0
  347. package/dist/ops/units.d.ts +4 -0
  348. package/dist/ops/units.d.ts.map +1 -0
  349. package/dist/ops/units.js +75 -0
  350. package/dist/ops/units.js.map +1 -0
  351. package/dist/reducer/apply.d.ts +33 -0
  352. package/dist/reducer/apply.d.ts.map +1 -0
  353. package/dist/reducer/apply.js +123 -0
  354. package/dist/reducer/apply.js.map +1 -0
  355. package/dist/reducer/comment-ops.d.ts +18 -0
  356. package/dist/reducer/comment-ops.d.ts.map +1 -0
  357. package/dist/reducer/comment-ops.js +104 -0
  358. package/dist/reducer/comment-ops.js.map +1 -0
  359. package/dist/reducer/edit.d.ts +38 -0
  360. package/dist/reducer/edit.d.ts.map +1 -0
  361. package/dist/reducer/edit.js +126 -0
  362. package/dist/reducer/edit.js.map +1 -0
  363. package/dist/reducer/facet-ops.d.ts +20 -0
  364. package/dist/reducer/facet-ops.d.ts.map +1 -0
  365. package/dist/reducer/facet-ops.js +184 -0
  366. package/dist/reducer/facet-ops.js.map +1 -0
  367. package/dist/reducer/meta-ops.d.ts +20 -0
  368. package/dist/reducer/meta-ops.d.ts.map +1 -0
  369. package/dist/reducer/meta-ops.js +52 -0
  370. package/dist/reducer/meta-ops.js.map +1 -0
  371. package/dist/reducer/spec-ops.d.ts +29 -0
  372. package/dist/reducer/spec-ops.d.ts.map +1 -0
  373. package/dist/reducer/spec-ops.js +181 -0
  374. package/dist/reducer/spec-ops.js.map +1 -0
  375. package/dist/reducer/test-ops.d.ts +15 -0
  376. package/dist/reducer/test-ops.d.ts.map +1 -0
  377. package/dist/reducer/test-ops.js +90 -0
  378. package/dist/reducer/test-ops.js.map +1 -0
  379. package/dist/reducer/value-ops.d.ts +26 -0
  380. package/dist/reducer/value-ops.d.ts.map +1 -0
  381. package/dist/reducer/value-ops.js +173 -0
  382. package/dist/reducer/value-ops.js.map +1 -0
  383. package/dist/render/describe.d.ts +20 -0
  384. package/dist/render/describe.d.ts.map +1 -0
  385. package/dist/render/describe.js +47 -0
  386. package/dist/render/describe.js.map +1 -0
  387. package/dist/revision/index.d.ts +4 -0
  388. package/dist/revision/index.d.ts.map +1 -0
  389. package/dist/revision/index.js +7 -0
  390. package/dist/revision/index.js.map +1 -0
  391. package/dist/revision/revision.d.ts +79 -0
  392. package/dist/revision/revision.d.ts.map +1 -0
  393. package/dist/revision/revision.js +120 -0
  394. package/dist/revision/revision.js.map +1 -0
  395. package/dist/revision/sha256.d.ts +3 -0
  396. package/dist/revision/sha256.d.ts.map +1 -0
  397. package/dist/revision/sha256.js +69 -0
  398. package/dist/revision/sha256.js.map +1 -0
  399. package/dist/revision/verify.d.ts +21 -0
  400. package/dist/revision/verify.d.ts.map +1 -0
  401. package/dist/revision/verify.js +51 -0
  402. package/dist/revision/verify.js.map +1 -0
  403. package/dist/revision/view.d.ts +36 -0
  404. package/dist/revision/view.d.ts.map +1 -0
  405. package/dist/revision/view.js +32 -0
  406. package/dist/revision/view.js.map +1 -0
  407. package/dist/sidecar/idsz.d.ts +14 -0
  408. package/dist/sidecar/idsz.d.ts.map +1 -0
  409. package/dist/sidecar/idsz.js +58 -0
  410. package/dist/sidecar/idsz.js.map +1 -0
  411. package/dist/sidecar/sidecar-schema.d.ts +4 -0
  412. package/dist/sidecar/sidecar-schema.d.ts.map +1 -0
  413. package/dist/sidecar/sidecar-schema.js +69 -0
  414. package/dist/sidecar/sidecar-schema.js.map +1 -0
  415. package/dist/sidecar/sidecar.d.ts +102 -0
  416. package/dist/sidecar/sidecar.d.ts.map +1 -0
  417. package/dist/sidecar/sidecar.js +160 -0
  418. package/dist/sidecar/sidecar.js.map +1 -0
  419. package/dist/testing/index.d.ts +6 -0
  420. package/dist/testing/index.d.ts.map +1 -0
  421. package/dist/testing/index.js +8 -0
  422. package/dist/testing/index.js.map +1 -0
  423. package/dist/testing/junit.d.ts +10 -0
  424. package/dist/testing/junit.d.ts.map +1 -0
  425. package/dist/testing/junit.js +51 -0
  426. package/dist/testing/junit.js.map +1 -0
  427. package/dist/testing/outcome.d.ts +10 -0
  428. package/dist/testing/outcome.d.ts.map +1 -0
  429. package/dist/testing/outcome.js +22 -0
  430. package/dist/testing/outcome.js.map +1 -0
  431. package/dist/testing/runner.d.ts +72 -0
  432. package/dist/testing/runner.d.ts.map +1 -0
  433. package/dist/testing/runner.js +60 -0
  434. package/dist/testing/runner.js.map +1 -0
  435. package/dist/testing/types.d.ts +60 -0
  436. package/dist/testing/types.d.ts.map +1 -0
  437. package/dist/testing/types.js +5 -0
  438. package/dist/testing/types.js.map +1 -0
  439. package/dist/testing/view.d.ts +31 -0
  440. package/dist/testing/view.d.ts.map +1 -0
  441. package/dist/testing/view.js +30 -0
  442. package/dist/testing/view.js.map +1 -0
  443. package/dist/uuid.d.ts +39 -0
  444. package/dist/uuid.d.ts.map +1 -0
  445. package/dist/uuid.js +84 -0
  446. package/dist/uuid.js.map +1 -0
  447. 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":"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"}
@@ -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"}