@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.
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,163 @@
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 { isKnownUnit, toSI } from '../ops/units.js';
5
+ /** bSDD data type (lower case) → IFC data type. */
6
+ export const BSDD_DATA_TYPES = {
7
+ boolean: { ifc: 'IFCBOOLEAN', base: 'xs:boolean', measured: false },
8
+ character: { ifc: 'IFCLABEL', base: 'xs:string', measured: false },
9
+ string: { ifc: 'IFCLABEL', base: 'xs:string', measured: false },
10
+ integer: { ifc: 'IFCINTEGER', base: 'xs:integer', measured: false },
11
+ real: { ifc: 'IFCREAL', base: 'xs:double', measured: true },
12
+ time: { ifc: 'IFCDATETIME', base: 'xs:dateTime', measured: false },
13
+ };
14
+ /** SI dimension exponents `L M T I Θ N J` → IFC measure. */
15
+ export const DIMENSION_MEASURES = {
16
+ '1 0 0 0 0 0 0': 'IFCLENGTHMEASURE',
17
+ '2 0 0 0 0 0 0': 'IFCAREAMEASURE',
18
+ '3 0 0 0 0 0 0': 'IFCVOLUMEMEASURE',
19
+ '0 1 0 0 0 0 0': 'IFCMASSMEASURE',
20
+ '0 0 1 0 0 0 0': 'IFCTIMEMEASURE',
21
+ '0 0 0 1 0 0 0': 'IFCELECTRICCURRENTMEASURE',
22
+ '0 0 0 0 1 0 0': 'IFCTHERMODYNAMICTEMPERATUREMEASURE',
23
+ '1 1 -2 0 0 0 0': 'IFCFORCEMEASURE',
24
+ '-1 1 -2 0 0 0 0': 'IFCPRESSUREMEASURE',
25
+ '2 1 -2 0 0 0 0': 'IFCENERGYMEASURE',
26
+ '2 1 -3 0 0 0 0': 'IFCPOWERMEASURE',
27
+ '2 1 -3 -1 0 0 0': 'IFCELECTRICVOLTAGEMEASURE',
28
+ '0 0 -1 0 0 0 0': 'IFCFREQUENCYMEASURE',
29
+ '1 0 -1 0 0 0 0': 'IFCLINEARVELOCITYMEASURE',
30
+ '3 0 -1 0 0 0 0': 'IFCVOLUMETRICFLOWRATEMEASURE',
31
+ '-3 1 0 0 0 0 0': 'IFCMASSDENSITYMEASURE',
32
+ '0 1 -3 0 -1 0 0': 'IFCTHERMALTRANSMITTANCEMEASURE',
33
+ '1 1 -3 0 -1 0 0': 'IFCTHERMALCONDUCTIVITYMEASURE',
34
+ };
35
+ /** Unit symbol (lower case) → IFC measure, for properties published without a dimension. */
36
+ export const UNIT_MEASURES = {
37
+ ...Object.fromEntries(['mm', 'cm', 'dm', 'm', 'km', 'in', 'ft'].map((u) => [u, 'IFCLENGTHMEASURE'])),
38
+ ...Object.fromEntries(['mm2', 'cm2', 'm2', 'mm²', 'cm²', 'm²', 'ft2', 'ft²'].map((u) => [u, 'IFCAREAMEASURE'])),
39
+ ...Object.fromEntries(['mm3', 'cm3', 'm3', 'mm³', 'cm³', 'm³', 'l'].map((u) => [u, 'IFCVOLUMEMEASURE'])),
40
+ ...Object.fromEntries(['g', 'kg', 't'].map((u) => [u, 'IFCMASSMEASURE'])),
41
+ ...Object.fromEntries(['s', 'min', 'h'].map((u) => [u, 'IFCTIMEMEASURE'])),
42
+ ...Object.fromEntries(['k', '°c', 'degc'].map((u) => [u, 'IFCTHERMODYNAMICTEMPERATUREMEASURE'])),
43
+ ...Object.fromEntries(['n', 'kn'].map((u) => [u, 'IFCFORCEMEASURE'])),
44
+ ...Object.fromEntries(['pa', 'kpa', 'mpa'].map((u) => [u, 'IFCPRESSUREMEASURE'])),
45
+ ...Object.fromEntries(['rad', 'deg', '°'].map((u) => [u, 'IFCPLANEANGLEMEASURE'])),
46
+ j: 'IFCENERGYMEASURE',
47
+ w: 'IFCPOWERMEASURE',
48
+ hz: 'IFCFREQUENCYMEASURE',
49
+ 'm/s': 'IFCLINEARVELOCITYMEASURE',
50
+ 'kg/m3': 'IFCMASSDENSITYMEASURE',
51
+ 'kg/m³': 'IFCMASSDENSITYMEASURE',
52
+ ...Object.fromEntries(['w/(m2·k)', 'w/(m²·k)', 'w/(m2k)', 'w/m2k'].map((u) => [u, 'IFCTHERMALTRANSMITTANCEMEASURE'])),
53
+ ...Object.fromEntries(['w/(m·k)', 'w/(mk)', 'w/mk'].map((u) => [u, 'IFCTHERMALCONDUCTIVITYMEASURE'])),
54
+ };
55
+ /** Units whose values are already SI (no conversion, no note). */
56
+ const SI_UNITS = new Set(['m', 'm2', 'm²', 'm3', 'm³', 'kg', 's', 'k', 'n', 'pa', 'rad', 'j', 'w', 'hz', 'm/s', 'kg/m3', 'kg/m³', 'w/(m2·k)', 'w/(m²·k)', 'w/(m2k)', 'w/m2k', 'w/(m·k)', 'w/(mk)', 'w/mk']);
57
+ /** A property the table cannot place (no property set and no fallback). */
58
+ export class BsddMappingError extends Error {
59
+ property;
60
+ constructor(property, message) {
61
+ super(message);
62
+ this.property = property;
63
+ this.name = 'BsddMappingError';
64
+ }
65
+ }
66
+ function normDimension(d) {
67
+ if (!d)
68
+ return undefined;
69
+ const parts = d.trim().split(/[\s,]+/).map(Number);
70
+ return parts.length === 7 && parts.every(Number.isFinite) ? parts.join(' ') : undefined;
71
+ }
72
+ /** The IFC data type of a bSDD property, refined by dimension, then unit. */
73
+ export function mapBsddDataType(p) {
74
+ const rule = p.dataType ? BSDD_DATA_TYPES[p.dataType.trim().toLowerCase()] : undefined;
75
+ if (!rule)
76
+ return undefined;
77
+ if (!rule.measured)
78
+ return rule.ifc;
79
+ const byDimension = DIMENSION_MEASURES[normDimension(p.dimension) ?? ''];
80
+ if (byDimension)
81
+ return byDimension;
82
+ const unit = p.units?.[0]?.trim().toLowerCase();
83
+ return (unit && UNIT_MEASURES[unit]) || rule.ifc;
84
+ }
85
+ function rangeDraft(p, base, notes) {
86
+ const min = p.minInclusive ?? p.minExclusive;
87
+ const max = p.maxInclusive ?? p.maxExclusive;
88
+ if (min === undefined && max === undefined)
89
+ return undefined;
90
+ const draft = { kind: 'range', base };
91
+ if (min !== undefined)
92
+ Object.assign(draft, { min, minInclusive: p.minInclusive !== undefined });
93
+ if (max !== undefined)
94
+ Object.assign(draft, { max, maxInclusive: p.maxInclusive !== undefined });
95
+ const unit = p.units?.[0]?.trim();
96
+ if (!unit || SI_UNITS.has(unit.toLowerCase()))
97
+ return draft;
98
+ if (isKnownUnit(unit)) {
99
+ const shown = [min, max].filter((v) => v !== undefined).map((v) => `${v} ${unit} → ${toSI(v, unit)}`);
100
+ notes.push({ code: 'unit-converted', message: `${p.code}: bounds converted to SI (${shown.join(', ')})` });
101
+ return { ...draft, unit };
102
+ }
103
+ notes.push({ code: 'unit-unknown', message: `${p.code}: unit "${unit}" is not known; bounds kept as published, check that they are SI` });
104
+ return draft;
105
+ }
106
+ function valueDraft(p, rule, notes) {
107
+ const kind = p.propertyValueKind?.trim().toLowerCase();
108
+ if (kind && kind !== 'single') {
109
+ notes.push({ code: 'value-not-mapped', message: `${p.code}: a ${p.propertyValueKind} value has no IDS restriction; only presence is required` });
110
+ return undefined;
111
+ }
112
+ const base = rule?.base ?? 'xs:string';
113
+ const hasRange = [p.minInclusive, p.maxInclusive, p.minExclusive, p.maxExclusive].some((v) => v !== undefined);
114
+ if (p.allowedValues?.length && rule?.base !== 'xs:boolean') {
115
+ if (hasRange || p.pattern)
116
+ notes.push({ code: 'values-over-range', message: `${p.code}: allowed values used; the published range/pattern is not added` });
117
+ return { kind: 'oneOf', values: p.allowedValues.map((v) => v.code), base };
118
+ }
119
+ if (hasRange && (base === 'xs:double' || base === 'xs:integer'))
120
+ return rangeDraft(p, base, notes);
121
+ if (p.pattern)
122
+ return { kind: 'pattern', pattern: p.pattern, base: 'xs:string' };
123
+ return undefined;
124
+ }
125
+ /** Map one bSDD property to an IDS property requirement. Throws `BsddMappingError` when it has no property set. */
126
+ export function mapBsddProperty(p, options = {}) {
127
+ const notes = [];
128
+ let pset = p.propertySet;
129
+ if (!pset) {
130
+ if (!options.fallbackPropertySet)
131
+ throw new BsddMappingError(p.code, `bSDD property ${p.code} has no property set; choose one`);
132
+ pset = options.fallbackPropertySet;
133
+ notes.push({ code: 'fallback-property-set', message: `${p.code}: no property set in bSDD; placed in ${pset}` });
134
+ }
135
+ const rule = p.dataType ? BSDD_DATA_TYPES[p.dataType.trim().toLowerCase()] : undefined;
136
+ let dataType = mapBsddDataType(p);
137
+ if (p.standardDataType) {
138
+ dataType = p.standardDataType.toUpperCase();
139
+ notes.push({ code: 'standard-data-type', message: `${p.code}: data type taken from the standard property (${dataType})` });
140
+ }
141
+ else if (p.dataType && !rule) {
142
+ notes.push({ code: 'unknown-data-type', message: `${p.code}: bSDD data type "${p.dataType}" has no IFC mapping; no dataType written` });
143
+ }
144
+ else if (!p.dataType) {
145
+ notes.push({ code: 'no-data-type', message: `${p.code}: bSDD publishes no data type; no dataType written` });
146
+ }
147
+ const facet = { type: 'property', propertySet: { kind: 'equals', value: pset }, baseName: { kind: 'equals', value: p.code } };
148
+ if (dataType)
149
+ facet.dataType = { kind: 'equals', value: dataType };
150
+ const value = valueDraft(p, rule, notes);
151
+ if (value)
152
+ facet.value = value;
153
+ if (p.uri && options.uri !== false)
154
+ facet.uri = p.uri;
155
+ const policy = options.optionality ?? 'fromClass';
156
+ const optionality = policy === 'fromClass' ? (p.isRequired ? 'required' : 'optional') : policy;
157
+ if (optionality === 'optional' && !dataType) {
158
+ // IDS 1.0 (and the buildingSMART audit): an optional property requirement must name its dataType.
159
+ throw new BsddMappingError(p.code, `bSDD property ${p.code}: an optional requirement needs a dataType in IDS 1.0 and none maps; require it or leave it out`);
160
+ }
161
+ return { facet, optionality, propertySet: pset, baseName: p.code, ...(dataType ? { dataType } : {}), notes };
162
+ }
163
+ //# sourceMappingURL=mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../src/bsdd/mapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * The bSDD tab of the entity, classification and property pickers
3
+ * (05-bsdd.md §2.1, IDS-069) as a framework-free view model: filters
4
+ * pre-filled from the specification, a debounced search with stale-result
5
+ * protection, and the result cards. A UI renders `getState()` and calls
6
+ * `setQuery` / `setFilters`; it never talks to bSDD itself.
7
+ */
8
+ import type { GateContext } from '../gate/context.js';
9
+ import type { StudioDocument } from '../document/types.js';
10
+ import type { Uuid } from '../uuid.js';
11
+ import { type BsddClass, type BsddClassSummary, type BsddDictionary, type BsddSource, type BsddStatus } from './types.js';
12
+ export interface BsddPickerFilters {
13
+ /** Dictionaries to search (empty: all). Defaults come from the document's configured list. */
14
+ dictionaryUris: string[];
15
+ languageCode?: string;
16
+ /** Related IFC entity, PascalCase (`IfcWall`). Pre-filled from the applicability. */
17
+ relatedIfcEntity?: string;
18
+ /** Hide classes bSDD marks inactive. Default true. */
19
+ activeOnly: boolean;
20
+ }
21
+ export interface BsddPropertyPreview {
22
+ code: string;
23
+ name: string;
24
+ propertySet?: string;
25
+ dataType?: string;
26
+ required: boolean;
27
+ }
28
+ export interface BsddClassCard {
29
+ uri: string;
30
+ code: string;
31
+ name: string;
32
+ definition?: string;
33
+ dictionary: {
34
+ uri: string;
35
+ name?: string;
36
+ version?: string;
37
+ };
38
+ relatedIfcEntities: string[];
39
+ status?: BsddStatus;
40
+ /** Known once the class details are loaded. */
41
+ propertyCount?: number;
42
+ properties?: BsddPropertyPreview[];
43
+ }
44
+ /**
45
+ * Initial filters for a picker opened on `specId`: the related IFC entity
46
+ * is the single literal applicability entity, in EXPRESS PascalCase.
47
+ */
48
+ export declare function initialPickerFilters(doc: StudioDocument, specId: Uuid | undefined, options?: {
49
+ dictionaryUris?: readonly string[];
50
+ languageCode?: string;
51
+ gate?: GateContext;
52
+ }): BsddPickerFilters;
53
+ export declare function cardFromSummary(s: BsddClassSummary, dictionaries?: ReadonlyMap<string, BsddDictionary>): BsddClassCard;
54
+ export declare function cardFromClass(c: BsddClass, dictionaries?: ReadonlyMap<string, BsddDictionary>, previewLimit?: number): BsddClassCard;
55
+ export type BsddSearchPhase = 'idle' | 'debouncing' | 'loading' | 'ready' | 'error';
56
+ export interface BsddSearchState {
57
+ query: string;
58
+ filters: BsddPickerFilters;
59
+ phase: BsddSearchPhase;
60
+ cards: BsddClassCard[];
61
+ total: number;
62
+ /** True when the last failure was "bSDD unreachable and not cached". */
63
+ offline: boolean;
64
+ error?: string;
65
+ }
66
+ export interface BsddSearchTimers {
67
+ set(fn: () => void, ms: number): unknown;
68
+ clear(handle: unknown): void;
69
+ }
70
+ export interface BsddSearchOptions {
71
+ source: BsddSource;
72
+ filters: BsddPickerFilters;
73
+ dictionaries?: ReadonlyMap<string, BsddDictionary>;
74
+ /** Default 250 ms (05-bsdd.md §4). */
75
+ debounceMs?: number;
76
+ /** Queries shorter than this do not search. Default 2. */
77
+ minChars?: number;
78
+ timers?: BsddSearchTimers;
79
+ onChange?: (state: BsddSearchState) => void;
80
+ }
81
+ export interface BsddSearch {
82
+ getState(): BsddSearchState;
83
+ setQuery(query: string): void;
84
+ setFilters(patch: Partial<BsddPickerFilters>): void;
85
+ /** Run a pending debounced search now; resolves when it has settled. */
86
+ flush(): Promise<void>;
87
+ dispose(): void;
88
+ }
89
+ /** The debounced search behind the bSDD picker tab. */
90
+ export declare function createBsddSearch(options: BsddSearchOptions): BsddSearch;
91
+ //# sourceMappingURL=picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../../src/bsdd/picker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
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 { literals } from '../gate/grounding.js';
5
+ import { locateSpec } from '../document/node-index.js';
6
+ import { BsddUnavailableError, } from './types.js';
7
+ /**
8
+ * Initial filters for a picker opened on `specId`: the related IFC entity
9
+ * is the single literal applicability entity, in EXPRESS PascalCase.
10
+ */
11
+ export function initialPickerFilters(doc, specId, options = {}) {
12
+ const filters = { dictionaryUris: [...(options.dictionaryUris ?? [])], activeOnly: true };
13
+ if (options.languageCode)
14
+ filters.languageCode = options.languageCode;
15
+ const index = specId === undefined ? undefined : locateSpec(doc, specId);
16
+ if (index === undefined)
17
+ return filters;
18
+ const spec = doc.ids.specifications[index];
19
+ const names = spec.applicability.facets.flatMap((f) => (f.type === 'entity' ? literals(f.name) : []));
20
+ if (names.length !== 1)
21
+ return filters;
22
+ const upper = names[0].toUpperCase();
23
+ const pascal = spec.ifcVersions.map((v) => options.gate?.tables[v].entities.get(upper)?.name).find((n) => !!n);
24
+ filters.relatedIfcEntity = pascal ?? names[0];
25
+ return filters;
26
+ }
27
+ function dictionaryInfo(uri, dictionaries, fallbackName) {
28
+ const d = dictionaries?.get(uri);
29
+ const name = d?.name ?? fallbackName;
30
+ return { uri, ...(name ? { name } : {}), ...(d?.version ? { version: d.version } : {}) };
31
+ }
32
+ export function cardFromSummary(s, dictionaries) {
33
+ const card = {
34
+ uri: s.uri,
35
+ code: s.code,
36
+ name: s.name,
37
+ dictionary: dictionaryInfo(s.dictionaryUri, dictionaries, s.dictionaryName),
38
+ relatedIfcEntities: [...s.relatedIfcEntityNames],
39
+ };
40
+ if (s.definition)
41
+ card.definition = s.definition;
42
+ if (s.status)
43
+ card.status = s.status;
44
+ return card;
45
+ }
46
+ export function cardFromClass(c, dictionaries, previewLimit = 8) {
47
+ const card = {
48
+ uri: c.uri,
49
+ code: c.code,
50
+ name: c.name,
51
+ dictionary: dictionaryInfo(c.dictionaryUri, dictionaries),
52
+ relatedIfcEntities: [...c.relatedIfcEntityNames],
53
+ status: c.status,
54
+ propertyCount: c.properties.length,
55
+ properties: c.properties.slice(0, previewLimit).map((p) => ({
56
+ code: p.code,
57
+ name: p.name,
58
+ ...(p.propertySet ? { propertySet: p.propertySet } : {}),
59
+ ...(p.dataType ? { dataType: p.dataType } : {}),
60
+ required: p.isRequired === true,
61
+ })),
62
+ };
63
+ if (c.definition)
64
+ card.definition = c.definition;
65
+ return card;
66
+ }
67
+ const DEFAULT_TIMERS = {
68
+ set: (fn, ms) => setTimeout(fn, ms),
69
+ clear: (h) => clearTimeout(h),
70
+ };
71
+ /** The debounced search behind the bSDD picker tab. */
72
+ export function createBsddSearch(options) {
73
+ const timers = options.timers ?? DEFAULT_TIMERS;
74
+ const debounceMs = options.debounceMs ?? 250;
75
+ const minChars = options.minChars ?? 2;
76
+ let state = { query: '', filters: options.filters, phase: 'idle', cards: [], total: 0, offline: false };
77
+ let pending;
78
+ let seq = 0;
79
+ let inflight = Promise.resolve();
80
+ let disposed = false;
81
+ const set = (patch) => {
82
+ if (disposed)
83
+ return;
84
+ state = { ...state, ...patch };
85
+ options.onChange?.(state);
86
+ };
87
+ async function run() {
88
+ pending = undefined;
89
+ const mine = ++seq;
90
+ const { query, filters } = state;
91
+ set({ phase: 'loading' });
92
+ try {
93
+ const page = await options.source.searchClasses({
94
+ text: query.trim(),
95
+ ...(filters.dictionaryUris.length ? { dictionaryUris: filters.dictionaryUris } : {}),
96
+ ...(filters.relatedIfcEntity ? { relatedIfcEntity: filters.relatedIfcEntity } : {}),
97
+ ...(filters.languageCode ? { languageCode: filters.languageCode } : {}),
98
+ });
99
+ if (mine !== seq)
100
+ return; // a newer search superseded this one
101
+ const rows = filters.activeOnly ? page.classes.filter((c) => c.status !== 'inactive') : page.classes;
102
+ set({ phase: 'ready', cards: rows.map((c) => cardFromSummary(c, options.dictionaries)), total: page.total, offline: false, error: undefined });
103
+ }
104
+ catch (err) {
105
+ if (mine !== seq)
106
+ return;
107
+ const offline = err instanceof BsddUnavailableError;
108
+ set({ phase: 'error', cards: [], total: 0, offline, error: offline ? 'bSDD is offline and this search is not cached' : String(err instanceof Error ? err.message : err) });
109
+ }
110
+ }
111
+ function schedule() {
112
+ if (pending !== undefined)
113
+ timers.clear(pending);
114
+ pending = undefined;
115
+ if (state.query.trim().length < minChars) {
116
+ seq++;
117
+ set({ phase: 'idle', cards: [], total: 0, error: undefined });
118
+ return;
119
+ }
120
+ set({ phase: 'debouncing' });
121
+ pending = timers.set(() => {
122
+ inflight = run();
123
+ }, debounceMs);
124
+ }
125
+ return {
126
+ getState: () => state,
127
+ setQuery(query) {
128
+ if (query === state.query)
129
+ return;
130
+ set({ query });
131
+ schedule();
132
+ },
133
+ setFilters(patch) {
134
+ set({ filters: { ...state.filters, ...patch } });
135
+ schedule();
136
+ },
137
+ async flush() {
138
+ if (pending !== undefined) {
139
+ timers.clear(pending);
140
+ inflight = run();
141
+ }
142
+ await inflight;
143
+ },
144
+ dispose() {
145
+ if (pending !== undefined)
146
+ timers.clear(pending);
147
+ disposed = true;
148
+ },
149
+ };
150
+ }
151
+ //# sourceMappingURL=picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picker.js","sourceRoot":"","sources":["../../src/bsdd/picker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * The bSDD (buildingSMART Data Dictionary) as IDS authoring sees it
3
+ * (05-bsdd.md). These are normalised shapes: `contract.ts` reads the raw
4
+ * API v1 JSON into them, and everything downstream (pickers, the class →
5
+ * facet insert, the property mapping table, the dictionary generator, URI
6
+ * health) works on these only.
7
+ *
8
+ * `BsddSource` is the port a host implements (or takes from
9
+ * `createHttpBsddSource`, optionally wrapped in `createCachedBsddSource`).
10
+ * Only search terms and URIs ever go to bSDD, never model data.
11
+ */
12
+ /** Lifecycle status of a bSDD dictionary, class or property. */
13
+ export type BsddStatus = 'active' | 'preview' | 'inactive' | 'unknown';
14
+ export interface BsddDictionary {
15
+ uri: string;
16
+ name: string;
17
+ version: string;
18
+ code?: string;
19
+ organizationCode?: string;
20
+ organizationName?: string;
21
+ languageCode?: string;
22
+ status: BsddStatus;
23
+ /** Licence name as published by the dictionary owner, e.g. `CC BY 4.0`. */
24
+ license?: string;
25
+ licenseUrl?: string;
26
+ isLatestVersion?: boolean;
27
+ isVerified?: boolean;
28
+ releaseDate?: string;
29
+ }
30
+ export interface BsddAllowedValue {
31
+ /** The machine value IDS uses (`code`, falling back to `value`). */
32
+ code: string;
33
+ /** Display label. */
34
+ value: string;
35
+ uri?: string;
36
+ description?: string;
37
+ }
38
+ /** One property of a class (a bSDD "class property"). */
39
+ export interface BsddClassProperty {
40
+ /** Property code: the IDS `baseName` (the EXPRESS name for IFC properties). */
41
+ code: string;
42
+ /** Display name (may contain spaces). */
43
+ name: string;
44
+ /** URI of the property definition (`…/prop/<code>`), when published. */
45
+ uri?: string;
46
+ propertySet?: string;
47
+ /** bSDD data type: Boolean, Character, Integer, Real, String, Time. */
48
+ dataType?: string;
49
+ /** Single, Range, List, Complex or ComplexList. */
50
+ propertyValueKind?: string;
51
+ /** SI dimension exponents `L M T I Θ N J`, e.g. `1 0 0 0 0 0 0` for a length. */
52
+ dimension?: string;
53
+ physicalQuantity?: string;
54
+ units?: string[];
55
+ allowedValues?: BsddAllowedValue[];
56
+ minInclusive?: number;
57
+ maxInclusive?: number;
58
+ minExclusive?: number;
59
+ maxExclusive?: number;
60
+ /** XSD pattern. */
61
+ pattern?: string;
62
+ /** Whether the class requires the property. */
63
+ isRequired?: boolean;
64
+ description?: string;
65
+ status?: BsddStatus;
66
+ }
67
+ export interface BsddClassRef {
68
+ uri: string;
69
+ code?: string;
70
+ name?: string;
71
+ }
72
+ export interface BsddClass {
73
+ uri: string;
74
+ code: string;
75
+ name: string;
76
+ definition?: string;
77
+ status: BsddStatus;
78
+ /** Class, GroupOfProperties, AlternativeUse or Material. */
79
+ classType?: string;
80
+ dictionaryUri: string;
81
+ /** IFC entity names the class relates to, as bSDD publishes them (`IfcWall`, `IfcWallSOLIDWALL`). */
82
+ relatedIfcEntityNames: string[];
83
+ parentClass?: BsddClassRef;
84
+ childClasses: BsddClassRef[];
85
+ properties: BsddClassProperty[];
86
+ /** Codes of classes that replace this one (when deprecated). */
87
+ replacingObjectCodes: string[];
88
+ synonyms: string[];
89
+ }
90
+ /** A search hit or a row of a dictionary's class list. */
91
+ export interface BsddClassSummary {
92
+ uri: string;
93
+ code: string;
94
+ name: string;
95
+ definition?: string;
96
+ dictionaryUri: string;
97
+ dictionaryName?: string;
98
+ relatedIfcEntityNames: string[];
99
+ /** Code of the parent class (dictionary class lists). */
100
+ parentClassCode?: string;
101
+ classType?: string;
102
+ status?: BsddStatus;
103
+ }
104
+ export interface BsddSearchQuery {
105
+ text: string;
106
+ dictionaryUris?: readonly string[];
107
+ relatedIfcEntity?: string;
108
+ languageCode?: string;
109
+ offset?: number;
110
+ limit?: number;
111
+ }
112
+ export interface BsddSearchPage {
113
+ classes: BsddClassSummary[];
114
+ total: number;
115
+ offset: number;
116
+ }
117
+ /** What a bSDD URI resolves to (URI health, BSDD-001…003, GATE-BSDD-001). */
118
+ export interface BsddUriRecord {
119
+ uri: string;
120
+ /** `notFound`: bSDD answered 404. */
121
+ state: 'active' | 'preview' | 'inactive' | 'notFound';
122
+ kind: 'class' | 'property' | 'dictionary' | 'other';
123
+ /** Name of the dictionary the URI belongs to (the classification `system`). */
124
+ dictionaryName?: string;
125
+ /** URIs of the replacements of a deprecated class or property. */
126
+ replacedBy?: string[];
127
+ /** Allowed value codes of a property (BSDD-003). */
128
+ allowedValues?: string[];
129
+ /** Display labels of those values, where they differ from the codes (accepted by BSDD-003 too). */
130
+ allowedLabels?: string[];
131
+ /** Epoch milliseconds of the check. */
132
+ checkedAt: number;
133
+ }
134
+ export interface BsddClassOptions {
135
+ languageCode?: string;
136
+ }
137
+ /** The port to bSDD. Every method resolves `null` / empty for "does not exist" and rejects on transport failure. */
138
+ export interface BsddSource {
139
+ listDictionaries(): Promise<BsddDictionary[]>;
140
+ getDictionary(uri: string): Promise<BsddDictionary | null>;
141
+ /** Every class of a dictionary (flat; `parentClassCode` carries the tree). */
142
+ listClasses(dictionaryUri: string): Promise<BsddClassSummary[]>;
143
+ searchClasses(query: BsddSearchQuery): Promise<BsddSearchPage>;
144
+ getClass(uri: string, options?: BsddClassOptions): Promise<BsddClass | null>;
145
+ /** Resolve any bSDD URI (class, property, dictionary) for URI health. */
146
+ resolveUri(uri: string): Promise<BsddUriRecord>;
147
+ }
148
+ /** Raised by a source when bSDD answered with an HTTP error other than 404. */
149
+ export declare class BsddHttpError extends Error {
150
+ readonly status: number;
151
+ readonly url: string;
152
+ readonly retryAfterSeconds?: number | undefined;
153
+ constructor(status: number, url: string, retryAfterSeconds?: number | undefined);
154
+ }
155
+ /** Raised by a cached source when bSDD cannot be reached and nothing is cached. */
156
+ export declare class BsddUnavailableError extends Error {
157
+ readonly key: string;
158
+ constructor(key: string, options: {
159
+ cause: unknown;
160
+ });
161
+ }
162
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/bsdd/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
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
+ /** Raised by a source when bSDD answered with an HTTP error other than 404. */
5
+ export class BsddHttpError extends Error {
6
+ status;
7
+ url;
8
+ retryAfterSeconds;
9
+ constructor(status, url, retryAfterSeconds) {
10
+ super(`bSDD API ${status} for ${url}`);
11
+ this.status = status;
12
+ this.url = url;
13
+ this.retryAfterSeconds = retryAfterSeconds;
14
+ this.name = 'BsddHttpError';
15
+ }
16
+ }
17
+ /** Raised by a cached source when bSDD cannot be reached and nothing is cached. */
18
+ export class BsddUnavailableError extends Error {
19
+ key;
20
+ constructor(key, options) {
21
+ super(`bSDD is unreachable and ${key} is not cached`, options);
22
+ this.key = key;
23
+ this.name = 'BsddUnavailableError';
24
+ }
25
+ }
26
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/bsdd/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAkK/D,+EAA+E;AAC/E,MAAM,OAAO,aAAc,SAAQ,KAAK;IAE3B;IACA;IACA;IAHX,YACW,MAAc,EACd,GAAW,EACX,iBAA0B;QAEnC,KAAK,CAAC,YAAY,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC;QAJ9B,WAAM,GAAN,MAAM,CAAQ;QACd,QAAG,GAAH,GAAG,CAAQ;QACX,sBAAiB,GAAjB,iBAAiB,CAAS;QAGnC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,mFAAmF;AACnF,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAElC;IADX,YACW,GAAW,EACpB,OAA2B;QAE3B,KAAK,CAAC,2BAA2B,GAAG,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAHtD,QAAG,GAAH,GAAG,CAAQ;QAIpB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF"}