@bitbybit-dev/ifc 0.0.0-stage → 1.5.0-rc.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 (242) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +42 -0
  3. package/README.md +92 -2
  4. package/index.d.ts +1 -0
  5. package/index.js +1 -0
  6. package/lib/api/dto-registry.d.ts +8 -0
  7. package/lib/api/dto-registry.js +109 -0
  8. package/lib/api/ifc-service.d.ts +109 -0
  9. package/lib/api/ifc-service.js +55 -0
  10. package/lib/api/inputs/base-inputs.d.ts +5 -0
  11. package/lib/api/inputs/base-inputs.js +5 -0
  12. package/lib/api/inputs/ifc-inputs.d.ts +2727 -0
  13. package/lib/api/inputs/ifc-inputs.js +2498 -0
  14. package/lib/api/inputs/index.d.ts +3 -0
  15. package/lib/api/inputs/index.js +3 -0
  16. package/lib/api/resolved-inputs/index.d.ts +70 -0
  17. package/lib/api/resolved-inputs/index.js +1 -0
  18. package/lib/api/services/assemblies.d.ts +28 -0
  19. package/lib/api/services/assemblies.js +49 -0
  20. package/lib/api/services/beams.d.ts +33 -0
  21. package/lib/api/services/beams.js +59 -0
  22. package/lib/api/services/columns.d.ts +26 -0
  23. package/lib/api/services/columns.js +56 -0
  24. package/lib/api/services/defaults.constants.d.ts +44 -0
  25. package/lib/api/services/defaults.constants.js +44 -0
  26. package/lib/api/services/doors.d.ts +45 -0
  27. package/lib/api/services/doors.js +94 -0
  28. package/lib/api/services/geometry.d.ts +51 -0
  29. package/lib/api/services/geometry.js +87 -0
  30. package/lib/api/services/index.d.ts +17 -0
  31. package/lib/api/services/index.js +17 -0
  32. package/lib/api/services/materials.d.ts +46 -0
  33. package/lib/api/services/materials.js +86 -0
  34. package/lib/api/services/member-support.d.ts +7 -0
  35. package/lib/api/services/member-support.js +29 -0
  36. package/lib/api/services/members.d.ts +24 -0
  37. package/lib/api/services/members.js +51 -0
  38. package/lib/api/services/model.d.ts +244 -0
  39. package/lib/api/services/model.js +409 -0
  40. package/lib/api/services/openings.d.ts +57 -0
  41. package/lib/api/services/openings.js +102 -0
  42. package/lib/api/services/properties.d.ts +89 -0
  43. package/lib/api/services/properties.js +142 -0
  44. package/lib/api/services/quantities.d.ts +38 -0
  45. package/lib/api/services/quantities.js +51 -0
  46. package/lib/api/services/roofs.d.ts +24 -0
  47. package/lib/api/services/roofs.js +52 -0
  48. package/lib/api/services/service-support.d.ts +8 -0
  49. package/lib/api/services/service-support.js +37 -0
  50. package/lib/api/services/service-types.d.ts +3 -0
  51. package/lib/api/services/service-types.js +1 -0
  52. package/lib/api/services/site.d.ts +37 -0
  53. package/lib/api/services/site.js +80 -0
  54. package/lib/api/services/slabs.d.ts +31 -0
  55. package/lib/api/services/slabs.js +59 -0
  56. package/lib/api/services/spaces.d.ts +36 -0
  57. package/lib/api/services/spaces.js +64 -0
  58. package/lib/api/services/spatial.d.ts +54 -0
  59. package/lib/api/services/spatial.js +75 -0
  60. package/lib/api/services/walls.d.ts +140 -0
  61. package/lib/api/services/walls.js +268 -0
  62. package/lib/api/services/windows.d.ts +46 -0
  63. package/lib/api/services/windows.js +76 -0
  64. package/lib/build/assemblies.d.ts +4 -0
  65. package/lib/build/assemblies.js +45 -0
  66. package/lib/build/build-types.d.ts +345 -0
  67. package/lib/build/build-types.js +1 -0
  68. package/lib/build/checks.d.ts +6 -0
  69. package/lib/build/checks.js +32 -0
  70. package/lib/build/constants.d.ts +27 -0
  71. package/lib/build/constants.js +43 -0
  72. package/lib/build/contexts.d.ts +9 -0
  73. package/lib/build/contexts.js +52 -0
  74. package/lib/build/curves.d.ts +3 -0
  75. package/lib/build/curves.js +23 -0
  76. package/lib/build/entity-writer.d.ts +23 -0
  77. package/lib/build/entity-writer.js +97 -0
  78. package/lib/build/fillings.d.ts +7 -0
  79. package/lib/build/fillings.js +182 -0
  80. package/lib/build/georeference.d.ts +5 -0
  81. package/lib/build/georeference.js +44 -0
  82. package/lib/build/materials.d.ts +18 -0
  83. package/lib/build/materials.js +166 -0
  84. package/lib/build/math.d.ts +10 -0
  85. package/lib/build/math.js +47 -0
  86. package/lib/build/measure.d.ts +9 -0
  87. package/lib/build/measure.js +195 -0
  88. package/lib/build/moving.d.ts +4 -0
  89. package/lib/build/moving.js +61 -0
  90. package/lib/build/openings.d.ts +12 -0
  91. package/lib/build/openings.js +156 -0
  92. package/lib/build/outlines.d.ts +4 -0
  93. package/lib/build/outlines.js +40 -0
  94. package/lib/build/placement.d.ts +16 -0
  95. package/lib/build/placement.js +106 -0
  96. package/lib/build/profiles.d.ts +4 -0
  97. package/lib/build/profiles.js +35 -0
  98. package/lib/build/project.d.ts +11 -0
  99. package/lib/build/project.js +134 -0
  100. package/lib/build/properties.d.ts +10 -0
  101. package/lib/build/properties.js +182 -0
  102. package/lib/build/quantities.d.ts +7 -0
  103. package/lib/build/quantities.js +262 -0
  104. package/lib/build/relationships.d.ts +9 -0
  105. package/lib/build/relationships.js +67 -0
  106. package/lib/build/removal.d.ts +3 -0
  107. package/lib/build/removal.js +106 -0
  108. package/lib/build/representations.d.ts +6 -0
  109. package/lib/build/representations.js +46 -0
  110. package/lib/build/roof-clipping.d.ts +5 -0
  111. package/lib/build/roof-clipping.js +79 -0
  112. package/lib/build/roofs.d.ts +4 -0
  113. package/lib/build/roofs.js +131 -0
  114. package/lib/build/site.d.ts +7 -0
  115. package/lib/build/site.js +112 -0
  116. package/lib/build/slab-openings.d.ts +4 -0
  117. package/lib/build/slab-openings.js +71 -0
  118. package/lib/build/slabs-columns-beams.d.ts +8 -0
  119. package/lib/build/slabs-columns-beams.js +73 -0
  120. package/lib/build/solids.d.ts +5 -0
  121. package/lib/build/solids.js +33 -0
  122. package/lib/build/spaces.d.ts +6 -0
  123. package/lib/build/spaces.js +55 -0
  124. package/lib/build/spatial.d.ts +17 -0
  125. package/lib/build/spatial.js +111 -0
  126. package/lib/build/type-objects.d.ts +4 -0
  127. package/lib/build/type-objects.js +9 -0
  128. package/lib/build/wall-edits.d.ts +5 -0
  129. package/lib/build/wall-edits.js +138 -0
  130. package/lib/build/wall-geometry.d.ts +15 -0
  131. package/lib/build/wall-geometry.js +159 -0
  132. package/lib/build/wall-parameters.d.ts +3 -0
  133. package/lib/build/wall-parameters.js +47 -0
  134. package/lib/build/walls.d.ts +12 -0
  135. package/lib/build/walls.js +238 -0
  136. package/lib/geometry/advanced.d.ts +27 -0
  137. package/lib/geometry/advanced.js +292 -0
  138. package/lib/geometry/colours.d.ts +3 -0
  139. package/lib/geometry/colours.js +109 -0
  140. package/lib/geometry/curves.d.ts +32 -0
  141. package/lib/geometry/curves.js +370 -0
  142. package/lib/geometry/edges.constants.d.ts +5 -0
  143. package/lib/geometry/edges.constants.js +5 -0
  144. package/lib/geometry/edges.d.ts +21 -0
  145. package/lib/geometry/edges.js +164 -0
  146. package/lib/geometry/elements.d.ts +3 -0
  147. package/lib/geometry/elements.js +152 -0
  148. package/lib/geometry/errors.d.ts +3 -0
  149. package/lib/geometry/errors.js +6 -0
  150. package/lib/geometry/faceted.d.ts +31 -0
  151. package/lib/geometry/faceted.js +214 -0
  152. package/lib/geometry/geometry-types.d.ts +103 -0
  153. package/lib/geometry/geometry-types.js +1 -0
  154. package/lib/geometry/groups.d.ts +21 -0
  155. package/lib/geometry/groups.js +106 -0
  156. package/lib/geometry/items.d.ts +34 -0
  157. package/lib/geometry/items.js +313 -0
  158. package/lib/geometry/operators.d.ts +3 -0
  159. package/lib/geometry/operators.js +65 -0
  160. package/lib/geometry/profiles.d.ts +4 -0
  161. package/lib/geometry/profiles.js +277 -0
  162. package/lib/geometry/recipe-builder.d.ts +14 -0
  163. package/lib/geometry/recipe-builder.js +48 -0
  164. package/lib/geometry/references.d.ts +4 -0
  165. package/lib/geometry/references.js +17 -0
  166. package/lib/geometry/regions.d.ts +4 -0
  167. package/lib/geometry/regions.js +26 -0
  168. package/lib/geometry/surfaces.constants.d.ts +17 -0
  169. package/lib/geometry/surfaces.constants.js +17 -0
  170. package/lib/geometry/surfaces.d.ts +6 -0
  171. package/lib/geometry/surfaces.js +306 -0
  172. package/lib/geometry/swept-solids.constants.d.ts +7 -0
  173. package/lib/geometry/swept-solids.constants.js +6 -0
  174. package/lib/geometry/swept-solids.d.ts +25 -0
  175. package/lib/geometry/swept-solids.js +243 -0
  176. package/lib/index.d.ts +6 -0
  177. package/lib/index.js +6 -0
  178. package/lib/model/constants.d.ts +30 -0
  179. package/lib/model/constants.js +30 -0
  180. package/lib/model/entity-lookup.d.ts +9 -0
  181. package/lib/model/entity-lookup.js +20 -0
  182. package/lib/model/guid.d.ts +7 -0
  183. package/lib/model/guid.js +60 -0
  184. package/lib/model/id-map.d.ts +10 -0
  185. package/lib/model/id-map.js +80 -0
  186. package/lib/model/index.d.ts +4 -0
  187. package/lib/model/index.js +2 -0
  188. package/lib/model/io.d.ts +6 -0
  189. package/lib/model/io.js +136 -0
  190. package/lib/model/is-model.d.ts +9 -0
  191. package/lib/model/is-model.js +11 -0
  192. package/lib/model/model-types.d.ts +111 -0
  193. package/lib/model/model-types.js +1 -0
  194. package/lib/model/overlay-indexes.d.ts +17 -0
  195. package/lib/model/overlay-indexes.js +69 -0
  196. package/lib/model/references.d.ts +2 -0
  197. package/lib/model/references.js +51 -0
  198. package/lib/model/rows-by-id.d.ts +8 -0
  199. package/lib/model/rows-by-id.js +39 -0
  200. package/lib/model/snapshot.d.ts +36 -0
  201. package/lib/model/snapshot.js +144 -0
  202. package/lib/model/source.d.ts +29 -0
  203. package/lib/model/source.js +172 -0
  204. package/lib/model/transaction.d.ts +39 -0
  205. package/lib/model/transaction.js +250 -0
  206. package/lib/model/upgrade.d.ts +2 -0
  207. package/lib/model/upgrade.js +78 -0
  208. package/lib/schema/constants.d.ts +3 -0
  209. package/lib/schema/constants.js +3 -0
  210. package/lib/schema/generated/ifc4.d.ts +2 -0
  211. package/lib/schema/generated/ifc4.js +1204 -0
  212. package/lib/schema/generated/ifc4x3.d.ts +2 -0
  213. package/lib/schema/generated/ifc4x3.js +1325 -0
  214. package/lib/schema/registry.d.ts +7 -0
  215. package/lib/schema/registry.js +37 -0
  216. package/lib/schema/schema-types.d.ts +45 -0
  217. package/lib/schema/schema-types.js +1 -0
  218. package/lib/schema/schema.d.ts +23 -0
  219. package/lib/schema/schema.js +136 -0
  220. package/lib/step/constants.d.ts +48 -0
  221. package/lib/step/constants.js +48 -0
  222. package/lib/step/encoder.d.ts +21 -0
  223. package/lib/step/encoder.js +321 -0
  224. package/lib/step/errors.d.ts +39 -0
  225. package/lib/step/errors.js +45 -0
  226. package/lib/step/file-index.d.ts +2 -0
  227. package/lib/step/file-index.js +221 -0
  228. package/lib/step/header.d.ts +4 -0
  229. package/lib/step/header.js +52 -0
  230. package/lib/step/numbers.d.ts +3 -0
  231. package/lib/step/numbers.js +73 -0
  232. package/lib/step/reader.d.ts +2 -0
  233. package/lib/step/reader.js +160 -0
  234. package/lib/step/scanner.d.ts +13 -0
  235. package/lib/step/scanner.js +203 -0
  236. package/lib/step/step-types.d.ts +170 -0
  237. package/lib/step/step-types.js +1 -0
  238. package/lib/step/strings.d.ts +2 -0
  239. package/lib/step/strings.js +150 -0
  240. package/lib/step/values.d.ts +13 -0
  241. package/lib/step/values.js +51 -0
  242. package/package.json +51 -5
@@ -0,0 +1,150 @@
1
+ import { BMP_LIMIT, BYTE_DIGITS, CHARACTERS_PER_CHUNK, HEX_RADIX, LATIN1_PART, MAX_CODE_POINT, PRINTABLE_FIRST, PRINTABLE_LAST, UCS2_DIGITS, UCS4_DIGITS, UPPER_HALF_OFFSET } from "./constants";
2
+ import { StepSyntaxError } from "./errors";
3
+ const APOSTROPHE = "'";
4
+ const BACKSLASH = "\\";
5
+ const END_OF_RUN = "\\X0\\";
6
+ const HEX_DIGITS = /^[0-9A-Fa-f]+$/;
7
+ const ALPHABET_DIRECTIVE = /^\\P([A-I])\\/;
8
+ const ALPHABET_LETTERS = "ABCDEFGHI";
9
+ const DIRECTIVE_LENGTH = "\\PA\\".length;
10
+ const partDecoders = new Map();
11
+ function isPrintable(code) {
12
+ return code >= PRINTABLE_FIRST && code <= PRINTABLE_LAST;
13
+ }
14
+ function hexOf(value, digits) {
15
+ return value.toString(HEX_RADIX).toUpperCase().padStart(digits, "0");
16
+ }
17
+ function escapeRun(run) {
18
+ const codePoints = Array.from(run, (character) => character.codePointAt(0));
19
+ if (codePoints.some((point) => point > BMP_LIMIT)) {
20
+ return `\\X4\\${codePoints.map((point) => hexOf(point, UCS4_DIGITS)).join("")}${END_OF_RUN}`;
21
+ }
22
+ let units = "";
23
+ for (let index = 0; index < run.length; index++) {
24
+ units += hexOf(run.charCodeAt(index), UCS2_DIGITS);
25
+ }
26
+ return `\\X2\\${units}${END_OF_RUN}`;
27
+ }
28
+ export function encodeString(text) {
29
+ let out = APOSTROPHE;
30
+ let run = "";
31
+ for (const character of text) {
32
+ if (isPrintable(character.codePointAt(0))) {
33
+ if (run) {
34
+ out += escapeRun(run);
35
+ run = "";
36
+ }
37
+ out += character === APOSTROPHE ? "''" : character === BACKSLASH ? "\\\\" : character;
38
+ }
39
+ else {
40
+ run += character;
41
+ }
42
+ }
43
+ if (run) {
44
+ out += escapeRun(run);
45
+ }
46
+ return `${out}${APOSTROPHE}`;
47
+ }
48
+ function charactersOf(units) {
49
+ let out = "";
50
+ for (let at = 0; at < units.length; at += CHARACTERS_PER_CHUNK) {
51
+ out += String.fromCharCode(...units.slice(at, at + CHARACTERS_PER_CHUNK));
52
+ }
53
+ return out;
54
+ }
55
+ function codePointsOf(points, offset) {
56
+ let out = "";
57
+ for (const point of points) {
58
+ if (point > MAX_CODE_POINT) {
59
+ throw new StepSyntaxError(`The code point ${hexOf(point, UCS4_DIGITS)} lies beyond Unicode`, offset);
60
+ }
61
+ out += String.fromCodePoint(point);
62
+ }
63
+ return out;
64
+ }
65
+ function hexRun(raw, from, digits, offset) {
66
+ const end = raw.indexOf(END_OF_RUN, from);
67
+ if (end < 0) {
68
+ throw new StepSyntaxError("A \\X2\\ or \\X4\\ run is never closed with \\X0\\", offset);
69
+ }
70
+ const hex = raw.slice(from, end);
71
+ if (hex.length % digits !== 0 || (hex.length > 0 && !HEX_DIGITS.test(hex))) {
72
+ throw new StepSyntaxError(`A run of hexadecimal characters holds something other than groups of ${digits} digits`, offset);
73
+ }
74
+ const values = [];
75
+ for (let at = 0; at < hex.length; at += digits) {
76
+ values.push(Number.parseInt(hex.slice(at, at + digits), HEX_RADIX));
77
+ }
78
+ return [values, end + END_OF_RUN.length];
79
+ }
80
+ function isByteEscape(raw, at) {
81
+ const start = at + "\\X\\".length;
82
+ return raw.startsWith("\\X\\", at) && start + BYTE_DIGITS <= raw.length && HEX_DIGITS.test(raw.slice(start, start + BYTE_DIGITS));
83
+ }
84
+ function upperHalf(code, part) {
85
+ const byte = code + UPPER_HALF_OFFSET;
86
+ if (part === LATIN1_PART) {
87
+ return String.fromCharCode(byte);
88
+ }
89
+ let decoder = partDecoders.get(part);
90
+ if (!decoder) {
91
+ decoder = new TextDecoder(`iso-8859-${part}`);
92
+ partDecoders.set(part, decoder);
93
+ }
94
+ return decoder.decode(Uint8Array.of(byte));
95
+ }
96
+ export function decodeString(raw, offset = 0) {
97
+ let out = "";
98
+ let at = 0;
99
+ let part = LATIN1_PART;
100
+ while (at < raw.length) {
101
+ const character = raw[at];
102
+ if (character === APOSTROPHE && raw[at + 1] === APOSTROPHE) {
103
+ out += APOSTROPHE;
104
+ at += 2;
105
+ continue;
106
+ }
107
+ if (character !== BACKSLASH) {
108
+ out += character;
109
+ at++;
110
+ continue;
111
+ }
112
+ if (raw.startsWith("\\\\", at)) {
113
+ out += BACKSLASH;
114
+ at += 2;
115
+ }
116
+ else if (raw.startsWith("\\X2\\", at)) {
117
+ const [units, next] = hexRun(raw, at + "\\X2\\".length, UCS2_DIGITS, offset);
118
+ out += charactersOf(units);
119
+ at = next;
120
+ }
121
+ else if (raw.startsWith("\\X4\\", at)) {
122
+ const [points, next] = hexRun(raw, at + "\\X4\\".length, UCS4_DIGITS, offset);
123
+ out += codePointsOf(points, offset);
124
+ at = next;
125
+ }
126
+ else if (isByteEscape(raw, at)) {
127
+ const start = at + "\\X\\".length;
128
+ out += String.fromCharCode(Number.parseInt(raw.slice(start, start + BYTE_DIGITS), HEX_RADIX));
129
+ at = start + BYTE_DIGITS;
130
+ }
131
+ else if (raw.startsWith("\\S\\", at) && at + "\\S\\".length < raw.length) {
132
+ const next = at + "\\S\\".length;
133
+ const escapedApostrophe = raw[next] === APOSTROPHE && raw[next + 1] === APOSTROPHE;
134
+ out += upperHalf(raw.charCodeAt(next), part);
135
+ at = next + (escapedApostrophe ? 2 : 1);
136
+ }
137
+ else {
138
+ const directive = ALPHABET_DIRECTIVE.exec(raw.slice(at, at + DIRECTIVE_LENGTH));
139
+ if (directive) {
140
+ part = ALPHABET_LETTERS.indexOf(directive[1]) + 1;
141
+ at += DIRECTIVE_LENGTH;
142
+ }
143
+ else {
144
+ out += character;
145
+ at++;
146
+ }
147
+ }
148
+ }
149
+ return out;
150
+ }
@@ -0,0 +1,13 @@
1
+ import type { IfcBinaryValue, IfcDerivedValue, IfcEnumerationValue, IfcReference, IfcTypedValue, IfcValue } from "./step-types";
2
+ export declare const DERIVED: IfcDerivedValue;
3
+ export declare function ref(id: number): IfcReference;
4
+ export declare function enumValue(value: string): IfcEnumerationValue;
5
+ export declare function typed(type: string, value: IfcValue): IfcTypedValue;
6
+ export declare function isReference(value: IfcValue | undefined): value is IfcReference;
7
+ export declare function isEnumeration(value: IfcValue | undefined): value is IfcEnumerationValue;
8
+ export declare function isTyped(value: IfcValue | undefined): value is IfcTypedValue;
9
+ export declare function isBinary(value: IfcValue | undefined): value is IfcBinaryValue;
10
+ export declare function isDerived(value: IfcValue | undefined): value is IfcDerivedValue;
11
+ export declare function isList(value: IfcValue | undefined): value is readonly IfcValue[];
12
+ export declare function textValue(value: IfcValue | undefined): string | undefined;
13
+ export declare function referencesIn(value: IfcValue, into?: number[]): number[];
@@ -0,0 +1,51 @@
1
+ export const DERIVED = Object.freeze({ derived: true });
2
+ export function ref(id) {
3
+ return { ref: id };
4
+ }
5
+ export function enumValue(value) {
6
+ return { enum: value.toUpperCase() };
7
+ }
8
+ export function typed(type, value) {
9
+ return { type, value };
10
+ }
11
+ function isRecord(value) {
12
+ return typeof value === "object" && value !== null && !Array.isArray(value);
13
+ }
14
+ export function isReference(value) {
15
+ return isRecord(value) && "ref" in value;
16
+ }
17
+ export function isEnumeration(value) {
18
+ return isRecord(value) && "enum" in value;
19
+ }
20
+ export function isTyped(value) {
21
+ return isRecord(value) && "type" in value && "value" in value;
22
+ }
23
+ export function isBinary(value) {
24
+ return isRecord(value) && "binary" in value;
25
+ }
26
+ export function isDerived(value) {
27
+ return isRecord(value) && "derived" in value;
28
+ }
29
+ export function isList(value) {
30
+ return Array.isArray(value);
31
+ }
32
+ export function textValue(value) {
33
+ if (typeof value === "string") {
34
+ return value;
35
+ }
36
+ return isTyped(value) && typeof value.value === "string" ? value.value : undefined;
37
+ }
38
+ export function referencesIn(value, into = []) {
39
+ if (isReference(value)) {
40
+ into.push(value.ref);
41
+ }
42
+ else if (isList(value)) {
43
+ for (const item of value) {
44
+ referencesIn(item, into);
45
+ }
46
+ }
47
+ else if (isTyped(value)) {
48
+ referencesIn(value.value, into);
49
+ }
50
+ return into;
51
+ }
package/package.json CHANGED
@@ -1,6 +1,52 @@
1
1
  {
2
- "name": "@bitbybit-dev/ifc",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
2
+ "name": "@bitbybit-dev/ifc",
3
+ "version": "1.5.0-rc.0",
4
+ "description": "Bit By Bit Developers IFC library to write, read and author BIM models in TypeScript",
5
+ "homepage": "https://docs.bitbybit.dev/classes/Bit.IFC",
6
+ "main": "index.js",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/bitbybit-dev/bitbybit.git",
10
+ "directory": "packages/dev/ifc"
11
+ },
12
+ "keywords": [
13
+ "Bit By Bit Developers",
14
+ "bitbybit",
15
+ "bitbybit.dev",
16
+ "IFC",
17
+ "BIM",
18
+ "Industry Foundation Classes",
19
+ "buildingSMART",
20
+ "IFC4",
21
+ "STEP",
22
+ "ISO 10303-21",
23
+ "AEC",
24
+ "Architecture",
25
+ "Construction",
26
+ "Building",
27
+ "Walls",
28
+ "Slabs",
29
+ "Doors",
30
+ "Windows",
31
+ "Geometry",
32
+ "CAD",
33
+ "3D",
34
+ "Parametric",
35
+ "Modeling",
36
+ "Browser CAD"
37
+ ],
38
+ "directories": {
39
+ "lib": "lib"
40
+ },
41
+ "author": "Bit by bit developers",
42
+ "license": "MIT",
43
+ "funding": {
44
+ "type": "corporate",
45
+ "url": "https://bitbybit.dev/auth/pick-plan"
46
+ },
47
+ "types": "./index.d.ts",
48
+ "type": "module",
49
+ "dependencies": {
50
+ "@bitbybit-dev/base": "1.5.0-rc.0"
51
+ }
52
+ }