@ifc-lite/parser 6.5.0 → 7.1.0

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 (106) hide show
  1. package/README.md +21 -0
  2. package/dist/columnar-parser-root-attributes.d.ts +2 -5
  3. package/dist/columnar-parser-root-attributes.d.ts.map +1 -1
  4. package/dist/columnar-parser-root-attributes.js +22 -2
  5. package/dist/columnar-parser-root-attributes.js.map +1 -1
  6. package/dist/columnar-parser.d.ts +4 -0
  7. package/dist/columnar-parser.d.ts.map +1 -1
  8. package/dist/columnar-parser.js +2 -47
  9. package/dist/columnar-parser.js.map +1 -1
  10. package/dist/cost-category-buckets.d.ts +5 -0
  11. package/dist/cost-category-buckets.d.ts.map +1 -0
  12. package/dist/cost-category-buckets.js +37 -0
  13. package/dist/cost-category-buckets.js.map +1 -0
  14. package/dist/cost-compatibility-tree.d.ts +4 -0
  15. package/dist/cost-compatibility-tree.d.ts.map +1 -0
  16. package/dist/cost-compatibility-tree.js +46 -0
  17. package/dist/cost-compatibility-tree.js.map +1 -0
  18. package/dist/cost-evaluation-arithmetic.d.ts +16 -0
  19. package/dist/cost-evaluation-arithmetic.d.ts.map +1 -0
  20. package/dist/cost-evaluation-arithmetic.js +181 -0
  21. package/dist/cost-evaluation-arithmetic.js.map +1 -0
  22. package/dist/cost-evaluation-context.d.ts +20 -0
  23. package/dist/cost-evaluation-context.d.ts.map +1 -0
  24. package/dist/cost-evaluation-context.js +54 -0
  25. package/dist/cost-evaluation-context.js.map +1 -0
  26. package/dist/cost-evaluation-result.d.ts +5 -0
  27. package/dist/cost-evaluation-result.d.ts.map +1 -0
  28. package/dist/cost-evaluation-result.js +20 -0
  29. package/dist/cost-evaluation-result.js.map +1 -0
  30. package/dist/cost-evaluator.d.ts +6 -0
  31. package/dist/cost-evaluator.d.ts.map +1 -0
  32. package/dist/cost-evaluator.js +398 -0
  33. package/dist/cost-evaluator.js.map +1 -0
  34. package/dist/cost-extractor.d.ts +4 -8
  35. package/dist/cost-extractor.d.ts.map +1 -1
  36. package/dist/cost-extractor.js +346 -334
  37. package/dist/cost-extractor.js.map +1 -1
  38. package/dist/cost-overlay.d.ts +72 -0
  39. package/dist/cost-overlay.d.ts.map +1 -0
  40. package/dist/cost-overlay.js +5 -0
  41. package/dist/cost-overlay.js.map +1 -0
  42. package/dist/cost-quantities.d.ts +5 -0
  43. package/dist/cost-quantities.d.ts.map +1 -0
  44. package/dist/cost-quantities.js +116 -0
  45. package/dist/cost-quantities.js.map +1 -0
  46. package/dist/cost-quantity-evaluator.d.ts +23 -0
  47. package/dist/cost-quantity-evaluator.d.ts.map +1 -0
  48. package/dist/cost-quantity-evaluator.js +153 -0
  49. package/dist/cost-quantity-evaluator.js.map +1 -0
  50. package/dist/cost-reader.d.ts +59 -0
  51. package/dist/cost-reader.d.ts.map +1 -0
  52. package/dist/cost-reader.js +210 -0
  53. package/dist/cost-reader.js.map +1 -0
  54. package/dist/cost-relationships.d.ts +7 -0
  55. package/dist/cost-relationships.d.ts.map +1 -0
  56. package/dist/cost-relationships.js +237 -0
  57. package/dist/cost-relationships.js.map +1 -0
  58. package/dist/cost-step-lexemes.d.ts +16 -0
  59. package/dist/cost-step-lexemes.d.ts.map +1 -0
  60. package/dist/cost-step-lexemes.js +131 -0
  61. package/dist/cost-step-lexemes.js.map +1 -0
  62. package/dist/cost-types.d.ts +218 -76
  63. package/dist/cost-types.d.ts.map +1 -1
  64. package/dist/cost-units.d.ts +38 -0
  65. package/dist/cost-units.d.ts.map +1 -0
  66. package/dist/cost-units.js +348 -0
  67. package/dist/cost-units.js.map +1 -0
  68. package/dist/cost-value-evaluation-session.d.ts +19 -0
  69. package/dist/cost-value-evaluation-session.d.ts.map +1 -0
  70. package/dist/cost-value-evaluation-session.js +25 -0
  71. package/dist/cost-value-evaluation-session.js.map +1 -0
  72. package/dist/cost.d.ts +5 -0
  73. package/dist/cost.d.ts.map +1 -0
  74. package/dist/cost.js +6 -0
  75. package/dist/cost.js.map +1 -0
  76. package/dist/entity-extractor.d.ts.map +1 -1
  77. package/dist/entity-extractor.js +5 -2
  78. package/dist/entity-extractor.js.map +1 -1
  79. package/dist/index.d.ts +1 -2
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +1 -1
  82. package/dist/index.js.map +1 -1
  83. package/dist/on-demand-extractors.d.ts +3 -4
  84. package/dist/on-demand-extractors.d.ts.map +1 -1
  85. package/dist/on-demand-extractors.js +9 -6
  86. package/dist/on-demand-extractors.js.map +1 -1
  87. package/dist/project-units.d.ts.map +1 -1
  88. package/dist/project-units.js +8 -2
  89. package/dist/project-units.js.map +1 -1
  90. package/dist/property-unit.d.ts +24 -0
  91. package/dist/property-unit.d.ts.map +1 -0
  92. package/dist/property-unit.js +29 -0
  93. package/dist/property-unit.js.map +1 -0
  94. package/dist/step-entity-parameters.d.ts +9 -0
  95. package/dist/step-entity-parameters.d.ts.map +1 -0
  96. package/dist/step-entity-parameters.js +30 -0
  97. package/dist/step-entity-parameters.js.map +1 -0
  98. package/dist/worker-parser.d.ts +29 -1
  99. package/dist/worker-parser.d.ts.map +1 -1
  100. package/dist/worker-parser.js +80 -7
  101. package/dist/worker-parser.js.map +1 -1
  102. package/package.json +6 -5
  103. package/dist/cost-schedule-2x3.d.ts +0 -31
  104. package/dist/cost-schedule-2x3.d.ts.map +0 -1
  105. package/dist/cost-schedule-2x3.js +0 -75
  106. package/dist/cost-schedule-2x3.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cost-extractor.js","sourceRoot":"","sources":["../src/cost-extractor.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAS1F,oEAAoE;AACpE,MAAM,cAAc,GAAG;IACrB,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;IACP,WAAW,EAAE,CAAC;IACd,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,CAAC;IACjB,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,CAAC;CACT,CAAC;AAEX,MAAM,kBAAkB,GAAG;IACzB,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;IACP,WAAW,EAAE,CAAC;IACd,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,CAAC;IACjB,cAAc,EAAE,CAAC;IACjB,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC;IACd,UAAU,EAAE,CAAC;CACL,CAAC;AAEX;;;;;GAKG;AACH,MAAM,eAAe,GAAG;IACtB,IAAI,EAAE,CAAC;IACP,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,CAAC;IACZ,cAAc,EAAE,CAAC;IACjB,cAAc,EAAE,CAAC;IACjB,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;IACZ,kBAAkB,EAAE,CAAC;IACrB,UAAU,EAAE,CAAC;CACL,CAAC;AAEX,MAAM,cAAc,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAW,CAAC;AACzE,MAAM,2BAA2B,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAW,CAAC;AAEvF,SAAS,QAAQ,CAAC,CAAU;IAC1B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,MAAM,CAAC,CAAU;IACxB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC;AAED,SAAS,KAAK,CAAC,CAAU;IACvB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAAC,CAAU;IAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,EAAE,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAAC,CAAU;IACtC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAS,gBAAgB,CACvB,SAA0B,EAC1B,KAAmB,EACnB,YAAgC;IAEhC,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjD,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,oBAAoB;QAAE,OAAO,SAAS,CAAC;IACpF,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpG,OAAO;QACL,cAAc,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM;QACjC,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,SAAS,gBAAgB,CACvB,SAA0B,EAC1B,KAAmB,EACnB,OAAe,EACf,KAAa,EACb,QAAqB;IAErB,IAAI,KAAK,GAAG,oBAAoB,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5E,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,cAAc;QAAE,OAAO,SAAS,CAAC;IACnE,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAElC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM;QACpC,CAAC,CAAC,YAAY;aACT,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;aACxE,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;QACvD,CAAC,CAAC,SAAS,CAAC;IACd,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzB,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACvC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACrD,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACnE,SAAS,EAAE,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAClF,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAC3D,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAC3D,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/C,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACjD,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACjE,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,SAA0B,EAC1B,KAAmB,EACnB,IAAa;IAEb,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,MAAM,GAAG,GAAG;SACf,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;SAChE,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACrD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;IACxC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACpD,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACpD,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;IAExE,IAAI,WAAW,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpD,wEAAwE;IACxE,8DAA8D;IAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC;IAErD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE5D,oCAAoC;IACpC,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAE5D,MAAM,IAAI,GAAiB;YACzB,SAAS;YACT,QAAQ;YACR,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;YAC5C,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YAClF,UAAU,EAAE,WAAW;gBACrB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACrE,cAAc,EAAE,WAAW;gBACzB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,GAAG,EAAE;oBACJ,MAAM,IAAI,GAAG,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC3F,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxC,CAAC,CAAC,EAAE;YACR,cAAc,EAAE,EAAE;YAClB,iBAAiB,EAAE,EAAE;YACrB,gBAAgB,EAAE,EAAE;YACpB,4BAA4B,EAAE,EAAE;SACjC,CAAC;QACF,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,uDAAuD;IACvD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;QAC7D,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACnC,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU;YAAE,SAAS,CAAC,+CAA+C;QAC1E,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;gBAC9B,SAAS,CAAC,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,MAAM,aAAa,GAAuB,EAAE,CAAC;IAC7C,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAChE,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAChE,MAAM,IAAI,GAAqB;YAC7B,SAAS;YACT,QAAQ;YACR,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;YAChD,uEAAuE;YACvE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAClH,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC5F,WAAW,EAAE,WAAW;gBACtB,CAAC,CAAC,wBAAwB,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;gBACnF,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAC/C,UAAU,EAAE,WAAW;gBACrB,CAAC,CAAC,wBAAwB,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;gBAClF,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAC9C,iBAAiB,EAAE,EAAE;SACtB,CAAC;QACF,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,sEAAsE;IACtE,6DAA6D;IAC7D,wDAAwD;IACxD,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC,eAAe,CAAC,CAAC,CAAC;QACxE,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS;QACtC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC,CAAC;QAE5E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5D,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;gBAClE,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3C,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,aAAa;QACb,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cost-extractor.js","sourceRoot":"","sources":["../src/cost-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * The pending-mutation overlay the cost read model reads THROUGH (#4857).
3
+ *
4
+ * `extractCostOnDemand` reads a loaded model's cost graph straight out of the
5
+ * source bytes. A loaded model, though, also carries an edit overlay — the
6
+ * viewer's `MutablePropertyView` — that the STEP exporter applies on the way
7
+ * out. Without this module the two disagree: rename an `IfcCostItem` in a
8
+ * loaded model and `bim.cost.data()` still reports the on-disk name while
9
+ * `bim.export.ifc()` writes the new one.
10
+ *
11
+ * WHERE THIS IS APPLIED, AND WHY THERE
12
+ *
13
+ * At `CostEntityReader` — the single funnel every cost extractor reads an
14
+ * entity through (`ids`, `get`, `typeOf`, `attributeLexeme`) — and nowhere
15
+ * else. Projecting the overlay onto the finished `CostGraphExtraction`
16
+ * instead would mean re-deriving nesting parents, child lists, controlling
17
+ * schedules, compatibility value trees, unit resolution and every diagnostic
18
+ * a second time, from a second implementation. Applied at the reader, the
19
+ * whole of that derivation recomputes itself from one path, and an overlaid
20
+ * model reads EXACTLY as a file that literally stated those values would.
21
+ *
22
+ * The consequence is deliberate and is the safe-delete answer: a cost value
23
+ * deleted while an `IfcCostItem` still lists it in `CostValues` reads back as
24
+ * a `MISSING_REFERENCE` **error** diagnostic against that item — the same
25
+ * answer the reader already gives for a file with a genuinely dangling
26
+ * reference.
27
+ *
28
+ * WHY THE OVERLAY HANDS OVER RECORD TEXT, NOT EDITS
29
+ *
30
+ * What an edit becomes in the file is the exporter's decision: an enum slot
31
+ * is written `.ADD.`, a string slot `'ADD'`, a REAL slot refuses a non-number,
32
+ * a positional value is SELECT-qualified, a retype re-lays-out the argument
33
+ * list, and a slot past the end of a truncated record is skipped. A parser-
34
+ * side copy of those rules is a second implementation that drifts — the first
35
+ * version of this overlay quoted every value, so an `ArithmeticOperator` edit
36
+ * read as absent while export wrote `.ADD.`. So the overlay returns the record
37
+ * as `@ifc-lite/export`'s `effectiveSourceRecord` writes it, and the reader
38
+ * parses that text exactly as it parses the file.
39
+ */
40
+ /**
41
+ * A loaded model's pending edits, as the cost read model observes them. The
42
+ * SDK builds one from a `MutablePropertyView` over `@ifc-lite/export`'s
43
+ * `effectiveSourceRecord`; every member is required, so an overlay cannot
44
+ * quietly omit an edit kind.
45
+ */
46
+ export interface CostMutationOverlay {
47
+ /** True when `expressId` is tombstoned — deleted, pending export. */
48
+ isDeleted(expressId: number): boolean;
49
+ /** Pending class of every retyped entity, keyed by expressId (any casing). */
50
+ retypes(): ReadonlyMap<number, string>;
51
+ /**
52
+ * The record `expressId` as the exporter will write it, given its source
53
+ * text and class. `notWritten` lists pending edits the exporter declines to
54
+ * place (it keeps the source slot and warns); the reader reports each as a
55
+ * diagnostic instead of passing the source value off as current.
56
+ */
57
+ effectiveRecord(expressId: number, sourceText: string, sourceType: string): {
58
+ text: string;
59
+ notWritten: readonly string[];
60
+ };
61
+ }
62
+ /** Options for `extractCostOnDemand`. */
63
+ export interface CostExtractionOptions {
64
+ /**
65
+ * The loaded model's pending edits (#4857). When supplied, every entity the
66
+ * extraction reads is read THROUGH the overlay, so the graph returned
67
+ * describes the model as the exporter would write it — not as the file on
68
+ * disk states it. Omit it for the on-disk graph.
69
+ */
70
+ overlay?: CostMutationOverlay;
71
+ }
72
+ //# sourceMappingURL=cost-overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-overlay.d.ts","sourceRoot":"","sources":["../src/cost-overlay.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,8EAA8E;IAC9E,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;QAC1E,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;KAC/B,CAAC;CACH;AAED,yCAAyC;AACzC,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B"}
@@ -0,0 +1,5 @@
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 {};
5
+ //# sourceMappingURL=cost-overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-overlay.js","sourceRoot":"","sources":["../src/cost-overlay.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
@@ -0,0 +1,5 @@
1
+ import { CostEntityReader } from './cost-reader.js';
2
+ import type { CostDiagnostic, CostQuantityInfo } from './cost-types.js';
3
+ export declare function costQuantityExactValue(quantity: CostQuantityInfo): string | undefined;
4
+ export declare function extractCostQuantities(reader: CostEntityReader, roots: number[], quantities: Map<number, CostQuantityInfo>, diagnostics: CostDiagnostic[]): void;
5
+ //# sourceMappingURL=cost-quantities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-quantities.d.ts","sourceRoot":"","sources":["../src/cost-quantities.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAyB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAuC/F,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAGrF;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACzC,WAAW,EAAE,cAAc,EAAE,GAC5B,IAAI,CAoEN"}
@@ -0,0 +1,116 @@
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 { asString } from './cost-reader.js';
5
+ import { getInheritanceChain } from './ifc-schema.js';
6
+ function quantityDimension(type) {
7
+ switch (type) {
8
+ case 'IFCQUANTITYLENGTH': return 'length';
9
+ case 'IFCQUANTITYAREA': return 'area';
10
+ case 'IFCQUANTITYVOLUME': return 'volume';
11
+ case 'IFCQUANTITYWEIGHT': return 'mass';
12
+ case 'IFCQUANTITYTIME': return 'time';
13
+ case 'IFCQUANTITYCOUNT': return 'count';
14
+ case 'IFCQUANTITYNUMBER': return 'number';
15
+ default: return undefined;
16
+ }
17
+ }
18
+ function quantityMeasureType(type) {
19
+ switch (type) {
20
+ case 'IFCQUANTITYLENGTH': return 'IFCLENGTHMEASURE';
21
+ case 'IFCQUANTITYAREA': return 'IFCAREAMEASURE';
22
+ case 'IFCQUANTITYVOLUME': return 'IFCVOLUMEMEASURE';
23
+ case 'IFCQUANTITYWEIGHT': return 'IFCMASSMEASURE';
24
+ case 'IFCQUANTITYTIME': return 'IFCTIMEMEASURE';
25
+ case 'IFCQUANTITYCOUNT': return 'IFCCOUNTMEASURE';
26
+ case 'IFCQUANTITYNUMBER': return 'IFCNUMERICMEASURE';
27
+ default: return undefined;
28
+ }
29
+ }
30
+ function pascalType(type) {
31
+ const known = {
32
+ IFCQUANTITYLENGTH: 'IfcQuantityLength', IFCQUANTITYAREA: 'IfcQuantityArea',
33
+ IFCQUANTITYVOLUME: 'IfcQuantityVolume', IFCQUANTITYWEIGHT: 'IfcQuantityWeight',
34
+ IFCQUANTITYTIME: 'IfcQuantityTime', IFCQUANTITYCOUNT: 'IfcQuantityCount',
35
+ IFCQUANTITYNUMBER: 'IfcQuantityNumber',
36
+ IFCPHYSICALCOMPLEXQUANTITY: 'IfcPhysicalComplexQuantity',
37
+ };
38
+ return known[type] ?? type;
39
+ }
40
+ export function costQuantityExactValue(quantity) {
41
+ return quantity.LengthValue ?? quantity.AreaValue ?? quantity.VolumeValue ?? quantity.CountValue ??
42
+ quantity.WeightValue ?? quantity.TimeValue ?? quantity.NumberValue;
43
+ }
44
+ export function extractCostQuantities(reader, roots, quantities, diagnostics) {
45
+ const state = new Map();
46
+ const stack = roots.map(id => ({ id, exit: false })).reverse();
47
+ while (stack.length > 0) {
48
+ const frame = stack.pop();
49
+ if (frame.exit) {
50
+ state.set(frame.id, 2);
51
+ continue;
52
+ }
53
+ if (state.get(frame.id) === 1) {
54
+ diagnostics.push({ Code: 'QUANTITY_CYCLE', Message: `Cost quantity cycle includes #${frame.id}`,
55
+ Severity: 'error', expressId: frame.id });
56
+ continue;
57
+ }
58
+ if (state.get(frame.id) === 2 || quantities.has(frame.id))
59
+ continue;
60
+ const entity = reader.get(frame.id);
61
+ if (!entity) {
62
+ diagnostics.push({ Code: 'MISSING_REFERENCE', Message: `Cost quantity #${frame.id} cannot be resolved`,
63
+ Severity: 'error', expressId: frame.id });
64
+ continue;
65
+ }
66
+ const type = entity.type.toUpperCase();
67
+ if (!getInheritanceChain(type).some(entry => entry.toUpperCase() === 'IFCPHYSICALQUANTITY')) {
68
+ diagnostics.push({ Code: 'INVALID_LIST',
69
+ Message: `Cost quantity reference #${frame.id} does not resolve to IfcPhysicalQuantity`,
70
+ Severity: 'error', expressId: frame.id });
71
+ state.set(frame.id, 2);
72
+ continue;
73
+ }
74
+ const attributes = entity.attributes ?? [];
75
+ const isComplex = type === 'IFCPHYSICALCOMPLEXQUANTITY';
76
+ const children = isComplex ? reader.referenceListLexeme(frame.id, 2) : undefined;
77
+ const invalidChildren = isComplex && (!Array.isArray(attributes[2]) ||
78
+ children === undefined || children.length !== attributes[2].length);
79
+ const valueType = isComplex ? undefined : reader.decimalTypeLexeme(frame.id, 3);
80
+ const invalidValueType = valueType !== undefined && valueType !== quantityMeasureType(type);
81
+ const value = isComplex || invalidValueType ? undefined : reader.decimalLexeme(frame.id, 3);
82
+ if (!isComplex && value === undefined && reader.attributePresent(frame.id, 3)) {
83
+ diagnostics.push({ Code: invalidValueType ? 'INCOMPATIBLE_UNIT' : 'INVALID_NUMBER',
84
+ Message: invalidValueType
85
+ ? `Cost quantity #${frame.id} uses ${valueType} where ${quantityMeasureType(type)} is required`
86
+ : `Cost quantity #${frame.id} has a malformed value`,
87
+ Severity: 'error', expressId: frame.id });
88
+ }
89
+ const Unit = isComplex ? undefined : reader.referenceLexeme(frame.id, 2);
90
+ const InvalidUnit = !isComplex && reader.attributePresent(frame.id, 2) && Unit === undefined;
91
+ if (InvalidUnit)
92
+ diagnostics.push({ Code: 'UNSUPPORTED_UNIT',
93
+ Message: `Unit on cost quantity #${frame.id} is not an entity reference`, Severity: 'error', expressId: frame.id });
94
+ const valueAttribute = {
95
+ IFCQUANTITYLENGTH: 'LengthValue', IFCQUANTITYAREA: 'AreaValue',
96
+ IFCQUANTITYVOLUME: 'VolumeValue', IFCQUANTITYCOUNT: 'CountValue',
97
+ IFCQUANTITYWEIGHT: 'WeightValue', IFCQUANTITYTIME: 'TimeValue',
98
+ IFCQUANTITYNUMBER: 'NumberValue',
99
+ };
100
+ const exactValue = value === undefined || valueAttribute[type] === undefined
101
+ ? {} : { [valueAttribute[type]]: value };
102
+ quantities.set(frame.id, {
103
+ expressId: frame.id, Type: pascalType(type),
104
+ Name: asString(attributes[0]), Description: asString(attributes[1]),
105
+ Unit, InvalidUnit: InvalidUnit || undefined, ...exactValue,
106
+ Formula: isComplex ? undefined : asString(attributes[4]),
107
+ Dimension: quantityDimension(type), HasQuantities: isComplex ? children ?? [] : undefined,
108
+ InvalidHasQuantities: invalidChildren || undefined,
109
+ });
110
+ state.set(frame.id, 1);
111
+ stack.push({ id: frame.id, exit: true });
112
+ for (const child of [...(children ?? [])].reverse())
113
+ stack.push({ id: child, exit: false });
114
+ }
115
+ }
116
+ //# sourceMappingURL=cost-quantities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-quantities.js","sourceRoot":"","sources":["../src/cost-quantities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { Decimal } from 'decimal.js';
2
+ import type { CostDiagnostic, CostGraphExtraction, CostItemInfo, CostQuantityDimension, CostQuantityInfo, CostUnitInfo } from './cost-types.js';
3
+ export interface QuantityValue {
4
+ amount: Decimal;
5
+ dimension: CostQuantityDimension;
6
+ }
7
+ interface QuantityContext {
8
+ DecimalValue: Decimal.Constructor;
9
+ extraction: CostGraphExtraction;
10
+ quantities: Map<number, CostQuantityInfo>;
11
+ units: Map<number, CostUnitInfo>;
12
+ diagnostics: CostDiagnostic[];
13
+ }
14
+ export interface QuantityEvaluationCache {
15
+ memo: Map<number, QuantityValue[]>;
16
+ work: number;
17
+ exhausted: boolean;
18
+ reported: boolean;
19
+ }
20
+ export declare function quantityEvaluationCache(): QuantityEvaluationCache;
21
+ export declare function itemQuantities(item: CostItemInfo, context: QuantityContext, cache?: QuantityEvaluationCache): QuantityValue[] | undefined;
22
+ export {};
23
+ //# sourceMappingURL=cost-quantity-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-quantity-evaluator.d.ts","sourceRoot":"","sources":["../src/cost-quantity-evaluator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,KAAK,EACV,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EACxE,gBAAgB,EAAE,YAAY,EAC/B,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,qBAAqB,CAAC;CAClC;AAED,UAAU,eAAe;IACvB,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC;IAClC,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjC,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,uBAAuB,IAAI,uBAAuB,CAEjE;AAiCD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,eAAe,EACxB,KAAK,GAAE,uBAAmD,GACzD,aAAa,EAAE,GAAG,SAAS,CA2G7B"}
@@ -0,0 +1,153 @@
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 { isZeroCostNumericLexeme } from './cost-step-lexemes.js';
5
+ export function quantityEvaluationCache() {
6
+ return { memo: new Map(), work: 0, exhausted: false, reported: false };
7
+ }
8
+ function diagnostic(context, Code, Message, expressId) {
9
+ context.diagnostics.push({ Code, Message, Severity: 'error', expressId });
10
+ }
11
+ function decimal(value, expressId, context) {
12
+ try {
13
+ const parsed = new context.DecimalValue(value);
14
+ if (parsed.isFinite() && !(parsed.isZero() && !isZeroCostNumericLexeme(value)))
15
+ return parsed;
16
+ }
17
+ catch (error) {
18
+ diagnostic(context, 'INVALID_NUMBER', `#${expressId} contains an invalid decimal: ${String(error)}`, expressId);
19
+ return undefined;
20
+ }
21
+ diagnostic(context, 'INVALID_NUMBER', `#${expressId} contains a non-finite or underflowed decimal`, expressId);
22
+ return undefined;
23
+ }
24
+ function quantityUnit(quantity, context) {
25
+ if (quantity.Unit !== undefined)
26
+ return context.units.get(quantity.Unit);
27
+ if (quantity.Dimension === 'count' || quantity.Dimension === 'number') {
28
+ return { expressId: 0, Type: 'Dimensionless', Dimension: quantity.Dimension, Scale: '1' };
29
+ }
30
+ const id = quantity.Dimension ? context.extraction.ProjectUnits[quantity.Dimension] : undefined;
31
+ return id === undefined ? undefined : context.units.get(id);
32
+ }
33
+ function quantityValue(quantity) {
34
+ return quantity.LengthValue ?? quantity.AreaValue ?? quantity.VolumeValue ?? quantity.CountValue ??
35
+ quantity.WeightValue ?? quantity.TimeValue ?? quantity.NumberValue;
36
+ }
37
+ export function itemQuantities(item, context, cache = quantityEvaluationCache()) {
38
+ if (item.CostQuantities === undefined)
39
+ return [];
40
+ if (item.CostQuantities.length === 0) {
41
+ diagnostic(context, 'INVALID_LIST', `CostQuantities on #${item.expressId} must not be empty`, item.expressId);
42
+ return undefined;
43
+ }
44
+ const memo = cache.memo;
45
+ const state = new Map();
46
+ let work = 0;
47
+ const consume = (amount = 1) => {
48
+ work += amount;
49
+ cache.work += amount;
50
+ if (work > 100_000 || cache.work > 1_000_000)
51
+ cache.exhausted = true;
52
+ if (!cache.exhausted)
53
+ return true;
54
+ if (!cache.reported) {
55
+ diagnostic(context, 'INVALID_LIST', `Cost quantity graph on #${item.expressId} exceeds the evaluation budget`, item.expressId);
56
+ cache.reported = true;
57
+ }
58
+ return false;
59
+ };
60
+ for (const root of item.CostQuantities) {
61
+ const stack = [{ id: root, exit: false }];
62
+ while (stack.length > 0) {
63
+ if (!consume())
64
+ return undefined;
65
+ const frame = stack.pop();
66
+ const id = frame.id;
67
+ if (frame.exit) {
68
+ state.set(id, 2);
69
+ const quantity = context.quantities.get(id);
70
+ if (quantity?.HasQuantities !== undefined) {
71
+ if (!consume(quantity.HasQuantities.length))
72
+ return undefined;
73
+ const totals = new Map();
74
+ for (const child of quantity.HasQuantities) {
75
+ const childValues = memo.get(child);
76
+ if (!childValues)
77
+ return undefined;
78
+ for (const entry of childValues) {
79
+ totals.set(entry.dimension, (totals.get(entry.dimension) ?? new context.DecimalValue(0)).plus(entry.amount));
80
+ }
81
+ }
82
+ memo.set(id, [...totals].map(([dimension, amount]) => ({ dimension, amount })));
83
+ }
84
+ continue;
85
+ }
86
+ if (memo.has(id))
87
+ continue;
88
+ const quantity = context.quantities.get(id);
89
+ if (!quantity) {
90
+ diagnostic(context, 'MISSING_REFERENCE', `Cost quantity #${id} cannot be resolved`, item.expressId);
91
+ return undefined;
92
+ }
93
+ if (quantity.HasQuantities !== undefined) {
94
+ if (quantity.InvalidHasQuantities) {
95
+ diagnostic(context, 'INVALID_LIST', `Complex cost quantity #${id} has malformed children`, id);
96
+ return undefined;
97
+ }
98
+ if (quantity.HasQuantities.length === 0) {
99
+ diagnostic(context, 'INVALID_LIST', `Complex cost quantity #${id} has no children`, id);
100
+ return undefined;
101
+ }
102
+ if (state.get(id) === 1) {
103
+ diagnostic(context, 'QUANTITY_CYCLE', `Cost quantity cycle includes #${id}`, id);
104
+ return undefined;
105
+ }
106
+ state.set(id, 1);
107
+ stack.push({ id, exit: true });
108
+ for (const child of [...new Set(quantity.HasQuantities)].reverse()) {
109
+ if (!memo.has(child))
110
+ stack.push({ id: child, exit: false });
111
+ }
112
+ continue;
113
+ }
114
+ const value = quantityValue(quantity);
115
+ if (!quantity.Dimension || value === undefined) {
116
+ diagnostic(context, 'MISSING_VALUE', `Cost quantity #${id} has no evaluable value`, id);
117
+ return undefined;
118
+ }
119
+ const amount = decimal(value, id, context);
120
+ if (quantity.InvalidUnit) {
121
+ diagnostic(context, 'UNSUPPORTED_UNIT', `Cost quantity #${id} has a malformed Unit`, id);
122
+ return undefined;
123
+ }
124
+ const unit = quantityUnit(quantity, context);
125
+ const wrongDimension = unit?.Dimension !== undefined && unit.Dimension !== quantity.Dimension;
126
+ if (!amount || amount.isNegative() || !unit?.Scale || wrongDimension) {
127
+ if (amount?.isNegative())
128
+ diagnostic(context, 'INVALID_NUMBER', `Cost quantity #${id} is negative`, id);
129
+ else if (amount && wrongDimension) {
130
+ diagnostic(context, 'INCOMPATIBLE_UNIT', `Cost quantity #${id} uses a ${unit?.Dimension} unit for ${quantity.Dimension}`, id);
131
+ }
132
+ else if (amount && !unit?.Scale) {
133
+ diagnostic(context, 'UNSUPPORTED_UNIT', `Cost quantity #${id} has no resolvable unit`, id);
134
+ }
135
+ return undefined;
136
+ }
137
+ const normalized = amount.mul(unit.Scale);
138
+ if (!normalized.isFinite() || (normalized.isZero() && !amount.isZero())) {
139
+ diagnostic(context, 'INVALID_NUMBER', `Cost quantity #${id} has a non-finite normalized value`, id);
140
+ return undefined;
141
+ }
142
+ memo.set(id, [{ amount: normalized, dimension: quantity.Dimension }]);
143
+ }
144
+ }
145
+ const totals = new Map();
146
+ for (const root of item.CostQuantities) {
147
+ for (const entry of memo.get(root) ?? []) {
148
+ totals.set(entry.dimension, (totals.get(entry.dimension) ?? new context.DecimalValue(0)).plus(entry.amount));
149
+ }
150
+ }
151
+ return [...totals].map(([dimension, amount]) => ({ dimension, amount }));
152
+ }
153
+ //# sourceMappingURL=cost-quantity-evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-quantity-evaluator.js","sourceRoot":"","sources":["../src/cost-quantity-evaluator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { IfcEntity } from '@ifc-lite/data';
2
+ import type { IfcDataStore } from './columnar-parser.js';
3
+ import type { CostMutationOverlay } from './cost-overlay.js';
4
+ import type { CostDiagnostic } from './cost-types.js';
5
+ /**
6
+ * Memoized source reader used once per cost extraction.
7
+ *
8
+ * When an {@link CostMutationOverlay} is supplied, every read goes through it
9
+ * first: a tombstoned entity does not exist (no id, no type, no record), a
10
+ * retyped entity is listed under and reports its pending class, and a record
11
+ * any pending edit reaches is read from the text the exporter will write for
12
+ * it. This is the one place the overlay is applied — see `cost-overlay.ts`
13
+ * for why it is here and not on the finished graph. The caches below are
14
+ * per-reader and a reader is built per extraction, so an overlaid read never
15
+ * reuses an unoverlaid entry.
16
+ */
17
+ export declare class CostEntityReader {
18
+ private readonly store;
19
+ private readonly overlay?;
20
+ private readonly diagnostics?;
21
+ private readonly extractor;
22
+ private readonly source;
23
+ private readonly cache;
24
+ private readonly lexemeCache;
25
+ private readonly recordCache;
26
+ private retyped;
27
+ constructor(store: IfcDataStore, overlay?: CostMutationOverlay | undefined, diagnostics?: CostDiagnostic[] | undefined);
28
+ /** True when a pending edit has deleted `expressId` from the loaded model. */
29
+ private isDeleted;
30
+ /** Pending retypes, UPPERCASE, restricted to entities the source actually has. */
31
+ private retypes;
32
+ /**
33
+ * The record text an overlaid read sees, or `undefined` when the record
34
+ * reads exactly as the source states it (no overlay, or no edit reaches it)
35
+ * and the unoverlaid source path applies. `null` means no record at all.
36
+ */
37
+ private overlaidRecord;
38
+ ids(type: string): readonly number[];
39
+ get schemaVersion(): IfcDataStore['schemaVersion'];
40
+ get(expressId: number): IfcEntity | null;
41
+ typeOf(expressId: number): string | undefined;
42
+ attributeLexeme(expressId: number, index: number): string | undefined;
43
+ decimalLexeme(expressId: number, index: number): string | undefined;
44
+ decimalTypeLexeme(expressId: number, index: number): string | undefined;
45
+ referenceLexeme(expressId: number, index: number): number | undefined;
46
+ referenceListLexeme(expressId: number, index: number): number[] | undefined;
47
+ attributePresent(expressId: number, index: number): boolean;
48
+ }
49
+ /**
50
+ * Read a STEP string attribute (IfcLabel/IfcText/IfcIdentifier) as-is,
51
+ * keeping an explicit `''` distinct from an absent (`$`) attribute — both
52
+ * are legal `IfcLabel` values per the schema, and IfcOpenShell keeps them
53
+ * distinct too (see #4881). Only `undefined` means "not a string at all".
54
+ */
55
+ export declare function asString(value: unknown): string | undefined;
56
+ export declare function asEnum(value: unknown): string | undefined;
57
+ export declare function asRef(value: unknown): number | undefined;
58
+ export declare function asRefList(value: unknown): number[] | undefined;
59
+ //# sourceMappingURL=cost-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-reader.d.ts","sourceRoot":"","sources":["../src/cost-reader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA2BtD;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAgB;IASzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAV/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;IAC5E,OAAO,CAAC,OAAO,CAA0C;gBAGtC,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,mBAAmB,YAAA,EAC7B,WAAW,CAAC,EAAE,cAAc,EAAE,YAAA;IAMjD,8EAA8E;IAC9E,OAAO,CAAC,SAAS;IAIjB,kFAAkF;IAClF,OAAO,CAAC,OAAO;IAWf;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAqBtB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE;IAWpC,IAAI,aAAa,IAAI,YAAY,CAAC,eAAe,CAAC,CAEjD;IAED,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAoBxC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO7C,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAYrE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAInE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIvE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIrE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAI3E,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAG5D;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE3D;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIzD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIxD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAQ9D"}