@ifc-lite/pointcloud 0.2.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 (87) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +26 -0
  3. package/dist/formats/e57.d.ts +129 -0
  4. package/dist/formats/e57.d.ts.map +1 -0
  5. package/dist/formats/e57.js +495 -0
  6. package/dist/formats/e57.js.map +1 -0
  7. package/dist/formats/ifcx-points.d.ts +26 -0
  8. package/dist/formats/ifcx-points.d.ts.map +1 -0
  9. package/dist/formats/ifcx-points.js +134 -0
  10. package/dist/formats/ifcx-points.js.map +1 -0
  11. package/dist/formats/las.d.ts +54 -0
  12. package/dist/formats/las.d.ts.map +1 -0
  13. package/dist/formats/las.js +203 -0
  14. package/dist/formats/las.js.map +1 -0
  15. package/dist/formats/pcd.d.ts +3 -0
  16. package/dist/formats/pcd.d.ts.map +1 -0
  17. package/dist/formats/pcd.js +302 -0
  18. package/dist/formats/pcd.js.map +1 -0
  19. package/dist/formats/ply.d.ts +40 -0
  20. package/dist/formats/ply.d.ts.map +1 -0
  21. package/dist/formats/ply.js +250 -0
  22. package/dist/formats/ply.js.map +1 -0
  23. package/dist/from-ifcx-attributes.d.ts +10 -0
  24. package/dist/from-ifcx-attributes.d.ts.map +1 -0
  25. package/dist/from-ifcx-attributes.js +49 -0
  26. package/dist/from-ifcx-attributes.js.map +1 -0
  27. package/dist/index.d.ts +26 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +21 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/lzf.d.ts +10 -0
  32. package/dist/lzf.d.ts.map +1 -0
  33. package/dist/lzf.js +64 -0
  34. package/dist/lzf.js.map +1 -0
  35. package/dist/streaming/blob-source.d.ts +15 -0
  36. package/dist/streaming/blob-source.d.ts.map +1 -0
  37. package/dist/streaming/blob-source.js +30 -0
  38. package/dist/streaming/blob-source.js.map +1 -0
  39. package/dist/streaming/decode-worker.d.ts +2 -0
  40. package/dist/streaming/decode-worker.d.ts.map +1 -0
  41. package/dist/streaming/decode-worker.js +131 -0
  42. package/dist/streaming/decode-worker.js.map +1 -0
  43. package/dist/streaming/e57-source.d.ts +17 -0
  44. package/dist/streaming/e57-source.d.ts.map +1 -0
  45. package/dist/streaming/e57-source.js +83 -0
  46. package/dist/streaming/e57-source.js.map +1 -0
  47. package/dist/streaming/host.d.ts +54 -0
  48. package/dist/streaming/host.d.ts.map +1 -0
  49. package/dist/streaming/host.js +120 -0
  50. package/dist/streaming/host.js.map +1 -0
  51. package/dist/streaming/las-source.d.ts +28 -0
  52. package/dist/streaming/las-source.d.ts.map +1 -0
  53. package/dist/streaming/las-source.js +117 -0
  54. package/dist/streaming/las-source.js.map +1 -0
  55. package/dist/streaming/laz-source.d.ts +35 -0
  56. package/dist/streaming/laz-source.d.ts.map +1 -0
  57. package/dist/streaming/laz-source.js +205 -0
  58. package/dist/streaming/laz-source.js.map +1 -0
  59. package/dist/streaming/pcd-source.d.ts +25 -0
  60. package/dist/streaming/pcd-source.d.ts.map +1 -0
  61. package/dist/streaming/pcd-source.js +86 -0
  62. package/dist/streaming/pcd-source.js.map +1 -0
  63. package/dist/streaming/ply-source.d.ts +26 -0
  64. package/dist/streaming/ply-source.d.ts.map +1 -0
  65. package/dist/streaming/ply-source.js +98 -0
  66. package/dist/streaming/ply-source.js.map +1 -0
  67. package/dist/streaming/protocol.d.ts +62 -0
  68. package/dist/streaming/protocol.d.ts.map +1 -0
  69. package/dist/streaming/protocol.js +45 -0
  70. package/dist/streaming/protocol.js.map +1 -0
  71. package/dist/streaming/types.d.ts +41 -0
  72. package/dist/streaming/types.d.ts.map +1 -0
  73. package/dist/streaming/types.js +5 -0
  74. package/dist/streaming/types.js.map +1 -0
  75. package/dist/streaming/worker-client.d.ts +20 -0
  76. package/dist/streaming/worker-client.d.ts.map +1 -0
  77. package/dist/streaming/worker-client.js +152 -0
  78. package/dist/streaming/worker-client.js.map +1 -0
  79. package/dist/types.d.ts +36 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +5 -0
  82. package/dist/types.js.map +1 -0
  83. package/dist/xml-mini.d.ts +29 -0
  84. package/dist/xml-mini.d.ts.map +1 -0
  85. package/dist/xml-mini.js +181 -0
  86. package/dist/xml-mini.js.map +1 -0
  87. package/package.json +51 -0
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Minimal XML parser — works in dedicated Web Workers where DOMParser
3
+ * isn't available.
4
+ *
5
+ * Scope: well-formed XML produced by E57 writers (Faro, Leica, Trimble,
6
+ * generic exporters). Specifically:
7
+ * - Open + close tag pairs and self-closing tags
8
+ * - Double-quoted attribute values (E57 always uses double quotes)
9
+ * - Element text content (no mixed content; XML declaration + DOCTYPE
10
+ * + comments + CDATA are skipped)
11
+ * - Standard XML entities (& < > " ')
12
+ *
13
+ * NOT a full XML 1.0 implementation — it's deliberately just enough for
14
+ * E57 + similar shallow, attribute-heavy formats. Keeps the worker
15
+ * bundle small (no `xmldom` dep) and avoids a per-file decode round-trip
16
+ * back to the main thread.
17
+ */
18
+ export interface XmlElement {
19
+ name: string;
20
+ attrs: Map<string, string>;
21
+ children: XmlElement[];
22
+ text: string;
23
+ }
24
+ /** Parse XML and return the root element. Throws on truly malformed input. */
25
+ export declare function parseXml(xml: string): XmlElement;
26
+ export declare function childByName(parent: XmlElement, name: string): XmlElement | null;
27
+ export declare function childrenByName(parent: XmlElement, name: string): XmlElement[];
28
+ export declare function textChild(parent: XmlElement, name: string): string | null;
29
+ //# sourceMappingURL=xml-mini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-mini.d.ts","sourceRoot":"","sources":["../src/xml-mini.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAqHhD;AAyCD,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAK/E;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAE7E;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKzE"}
@@ -0,0 +1,181 @@
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
+ /** Parse XML and return the root element. Throws on truly malformed input. */
5
+ export function parseXml(xml) {
6
+ const root = { name: '', attrs: new Map(), children: [], text: '' };
7
+ const stack = [root];
8
+ let i = 0;
9
+ const n = xml.length;
10
+ let textStart = -1;
11
+ const flushText = (end) => {
12
+ if (textStart < 0 || textStart >= end) {
13
+ textStart = -1;
14
+ return;
15
+ }
16
+ const slice = xml.slice(textStart, end).trim();
17
+ if (slice.length > 0) {
18
+ const top = stack[stack.length - 1];
19
+ // Only set text if the element has no element children — E57 leaf
20
+ // values like `<guid>...</guid>` use this path.
21
+ if (top.children.length === 0) {
22
+ top.text = top.text + decodeEntities(slice);
23
+ }
24
+ }
25
+ textStart = -1;
26
+ };
27
+ while (i < n) {
28
+ const ch = xml.charCodeAt(i);
29
+ if (ch !== 0x3c /* < */) {
30
+ if (textStart < 0)
31
+ textStart = i;
32
+ i++;
33
+ continue;
34
+ }
35
+ flushText(i);
36
+ // Skip XML declaration <?xml ... ?>
37
+ if (xml.startsWith('<?', i)) {
38
+ const end = xml.indexOf('?>', i + 2);
39
+ i = end < 0 ? n : end + 2;
40
+ continue;
41
+ }
42
+ // Skip comment <!-- ... -->
43
+ if (xml.startsWith('<!--', i)) {
44
+ const end = xml.indexOf('-->', i + 4);
45
+ i = end < 0 ? n : end + 3;
46
+ continue;
47
+ }
48
+ // Skip CDATA — not used in E57 prototype shapes; preserve text content.
49
+ if (xml.startsWith('<![CDATA[', i)) {
50
+ const end = xml.indexOf(']]>', i + 9);
51
+ const cdata = xml.slice(i + 9, end < 0 ? n : end);
52
+ const top = stack[stack.length - 1];
53
+ if (top.children.length === 0)
54
+ top.text = top.text + cdata;
55
+ i = end < 0 ? n : end + 3;
56
+ continue;
57
+ }
58
+ // Skip DOCTYPE / other markup declarations
59
+ if (xml.startsWith('<!', i)) {
60
+ const end = xml.indexOf('>', i + 2);
61
+ i = end < 0 ? n : end + 1;
62
+ continue;
63
+ }
64
+ // Closing tag </name>
65
+ if (xml.charCodeAt(i + 1) === 0x2f /* / */) {
66
+ const end = xml.indexOf('>', i + 2);
67
+ if (end < 0)
68
+ throw new Error('XML: unterminated closing tag');
69
+ const name = xml.slice(i + 2, end).trim();
70
+ const top = stack[stack.length - 1];
71
+ if (top.name !== name) {
72
+ throw new Error(`XML: mismatched closing tag </${name}> (expected </${top.name}>)`);
73
+ }
74
+ stack.pop();
75
+ i = end + 1;
76
+ continue;
77
+ }
78
+ // Opening tag <name attr="..." [/]>
79
+ const tagEnd = findTagEnd(xml, i + 1);
80
+ if (tagEnd < 0)
81
+ throw new Error('XML: unterminated tag');
82
+ let inner = xml.slice(i + 1, tagEnd).trim();
83
+ let selfClosing = false;
84
+ if (inner.endsWith('/')) {
85
+ selfClosing = true;
86
+ inner = inner.slice(0, -1).trim();
87
+ }
88
+ const nameMatch = inner.match(/^([A-Za-z_][\w:.\-]*)/);
89
+ if (!nameMatch) {
90
+ // Unknown thing — skip past it to avoid a hang on malformed input.
91
+ i = tagEnd + 1;
92
+ continue;
93
+ }
94
+ const name = nameMatch[1];
95
+ const attrSpan = inner.slice(name.length).trim();
96
+ const attrs = parseAttrs(attrSpan);
97
+ const node = { name, attrs, children: [], text: '' };
98
+ if (stack.length === 1 && root.name === '') {
99
+ // First real element becomes the root.
100
+ root.name = name;
101
+ root.attrs = attrs;
102
+ // root.children/text initialised; from here on we descend through it.
103
+ if (!selfClosing)
104
+ stack.push(root);
105
+ }
106
+ else {
107
+ stack[stack.length - 1].children.push(node);
108
+ if (!selfClosing)
109
+ stack.push(node);
110
+ }
111
+ i = tagEnd + 1;
112
+ }
113
+ flushText(n);
114
+ // Truncated input — `<root><child>` with no closes — would otherwise
115
+ // return a partial tree and silently produce wrong metadata. Reject
116
+ // hard so callers (E57 in particular) fail fast on a corrupt XML
117
+ // section rather than ingesting half a scan list.
118
+ if (stack.length !== 1) {
119
+ throw new Error(`XML: unclosed tag <${stack[stack.length - 1].name}>`);
120
+ }
121
+ if (root.name === '') {
122
+ throw new Error('XML: missing root element');
123
+ }
124
+ return root;
125
+ }
126
+ /** Find the `>` that closes a tag, respecting `>` inside attribute values. */
127
+ function findTagEnd(xml, from) {
128
+ let inAttr = false;
129
+ for (let i = from; i < xml.length; i++) {
130
+ const c = xml.charCodeAt(i);
131
+ if (c === 0x22 /* " */)
132
+ inAttr = !inAttr;
133
+ else if (c === 0x3e /* > */ && !inAttr)
134
+ return i;
135
+ }
136
+ return -1;
137
+ }
138
+ const ATTR_RE = /([A-Za-z_][\w:.\-]*)\s*=\s*"([^"]*)"/g;
139
+ function parseAttrs(span) {
140
+ const out = new Map();
141
+ if (!span)
142
+ return out;
143
+ let m;
144
+ ATTR_RE.lastIndex = 0;
145
+ while ((m = ATTR_RE.exec(span)) !== null) {
146
+ out.set(m[1], decodeEntities(m[2]));
147
+ }
148
+ return out;
149
+ }
150
+ function decodeEntities(s) {
151
+ if (s.indexOf('&') < 0)
152
+ return s;
153
+ return s
154
+ .replace(/&lt;/g, '<')
155
+ .replace(/&gt;/g, '>')
156
+ .replace(/&quot;/g, '"')
157
+ .replace(/&apos;/g, "'")
158
+ .replace(/&#(\d+);/g, (_, d) => String.fromCharCode(parseInt(d, 10)))
159
+ .replace(/&#x([0-9a-fA-F]+);/g, (_, h) => String.fromCharCode(parseInt(h, 16)))
160
+ // &amp; last so we don't re-decode the &-escapes above.
161
+ .replace(/&amp;/g, '&');
162
+ }
163
+ // ─── tree helpers ───────────────────────────────────────────────────────────
164
+ export function childByName(parent, name) {
165
+ for (const c of parent.children) {
166
+ if (c.name === name)
167
+ return c;
168
+ }
169
+ return null;
170
+ }
171
+ export function childrenByName(parent, name) {
172
+ return parent.children.filter((c) => c.name === name);
173
+ }
174
+ export function textChild(parent, name) {
175
+ const c = childByName(parent, name);
176
+ if (!c)
177
+ return null;
178
+ const t = c.text.trim();
179
+ return t.length > 0 ? t : null;
180
+ }
181
+ //# sourceMappingURL=xml-mini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-mini.js","sourceRoot":"","sources":["../src/xml-mini.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@ifc-lite/pointcloud",
3
+ "version": "0.2.0",
4
+ "description": "Point cloud decoders and types for IFC-Lite",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "dependencies": {
15
+ "laz-perf": "^0.0.6"
16
+ },
17
+ "devDependencies": {
18
+ "typescript": "^5.3.0",
19
+ "vitest": "^1.6.0"
20
+ },
21
+ "license": "MPL-2.0",
22
+ "author": "Louis True",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/louistrue/ifc-lite.git",
26
+ "directory": "packages/pointcloud"
27
+ },
28
+ "homepage": "https://louistrue.github.io/ifc-lite/",
29
+ "bugs": "https://github.com/louistrue/ifc-lite/issues",
30
+ "keywords": [
31
+ "ifc",
32
+ "ifc5",
33
+ "ifcx",
34
+ "pointcloud",
35
+ "pcd",
36
+ "bim",
37
+ "aec"
38
+ ],
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "files": [
43
+ "dist",
44
+ "README.md"
45
+ ],
46
+ "scripts": {
47
+ "build": "pnpm exec tsc && node -e \"const f='dist/streaming/worker-client.js';require('fs').writeFileSync(f,require('fs').readFileSync(f,'utf8').replace(/decode-worker\\.ts/g,'decode-worker.js'))\"",
48
+ "dev": "pnpm exec tsc --watch",
49
+ "test": "vitest run"
50
+ }
51
+ }