@ifc-lite/flow-nodes 0.3.1 → 0.5.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 (94) hide show
  1. package/README.md +1 -0
  2. package/dist/aps-client.d.ts +55 -0
  3. package/dist/aps-client.d.ts.map +1 -0
  4. package/dist/aps-client.js +194 -0
  5. package/dist/aps-client.js.map +1 -0
  6. package/dist/aps-nodes.d.ts +3 -0
  7. package/dist/aps-nodes.d.ts.map +1 -0
  8. package/dist/aps-nodes.js +192 -0
  9. package/dist/aps-nodes.js.map +1 -0
  10. package/dist/aps-table.d.ts +24 -0
  11. package/dist/aps-table.d.ts.map +1 -0
  12. package/dist/aps-table.js +123 -0
  13. package/dist/aps-table.js.map +1 -0
  14. package/dist/base64.d.ts +8 -0
  15. package/dist/base64.d.ts.map +1 -0
  16. package/dist/base64.js +59 -0
  17. package/dist/base64.js.map +1 -0
  18. package/dist/bcf-client.d.ts +36 -0
  19. package/dist/bcf-client.d.ts.map +1 -0
  20. package/dist/bcf-client.js +108 -0
  21. package/dist/bcf-client.js.map +1 -0
  22. package/dist/bcf-nodes.d.ts +3 -0
  23. package/dist/bcf-nodes.d.ts.map +1 -0
  24. package/dist/bcf-nodes.js +181 -0
  25. package/dist/bcf-nodes.js.map +1 -0
  26. package/dist/documents-fetch.d.ts +23 -0
  27. package/dist/documents-fetch.d.ts.map +1 -0
  28. package/dist/documents-fetch.js +48 -0
  29. package/dist/documents-fetch.js.map +1 -0
  30. package/dist/documents-nodes.d.ts +5 -0
  31. package/dist/documents-nodes.d.ts.map +1 -0
  32. package/dist/documents-nodes.js +167 -0
  33. package/dist/documents-nodes.js.map +1 -0
  34. package/dist/host.d.ts +28 -0
  35. package/dist/host.d.ts.map +1 -1
  36. package/dist/host.js.map +1 -1
  37. package/dist/http-request-node.d.ts +9 -0
  38. package/dist/http-request-node.d.ts.map +1 -0
  39. package/dist/http-request-node.js +109 -0
  40. package/dist/http-request-node.js.map +1 -0
  41. package/dist/index.d.ts +20 -2
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +34 -5
  44. package/dist/index.js.map +1 -1
  45. package/dist/model-nodes.d.ts.map +1 -1
  46. package/dist/model-nodes.js +11 -6
  47. package/dist/model-nodes.js.map +1 -1
  48. package/dist/open-model-node.d.ts +3 -0
  49. package/dist/open-model-node.d.ts.map +1 -0
  50. package/dist/open-model-node.js +47 -0
  51. package/dist/open-model-node.js.map +1 -0
  52. package/dist/script-node.d.ts.map +1 -1
  53. package/dist/script-node.js +55 -21
  54. package/dist/script-node.js.map +1 -1
  55. package/dist/secrets.d.ts +88 -0
  56. package/dist/secrets.d.ts.map +1 -0
  57. package/dist/secrets.js +202 -0
  58. package/dist/secrets.js.map +1 -0
  59. package/dist/speckle/client.d.ts +52 -0
  60. package/dist/speckle/client.d.ts.map +1 -0
  61. package/dist/speckle/client.js +153 -0
  62. package/dist/speckle/client.js.map +1 -0
  63. package/dist/speckle/geometry.d.ts +37 -0
  64. package/dist/speckle/geometry.d.ts.map +1 -0
  65. package/dist/speckle/geometry.js +126 -0
  66. package/dist/speckle/geometry.js.map +1 -0
  67. package/dist/speckle/mapping.d.ts +62 -0
  68. package/dist/speckle/mapping.d.ts.map +1 -0
  69. package/dist/speckle/mapping.js +208 -0
  70. package/dist/speckle/mapping.js.map +1 -0
  71. package/dist/speckle/parameters.d.ts +49 -0
  72. package/dist/speckle/parameters.d.ts.map +1 -0
  73. package/dist/speckle/parameters.js +95 -0
  74. package/dist/speckle/parameters.js.map +1 -0
  75. package/dist/speckle/refusals.d.ts +45 -0
  76. package/dist/speckle/refusals.d.ts.map +1 -0
  77. package/dist/speckle/refusals.js +40 -0
  78. package/dist/speckle/refusals.js.map +1 -0
  79. package/dist/speckle/units.d.ts +13 -0
  80. package/dist/speckle/units.d.ts.map +1 -0
  81. package/dist/speckle/units.js +59 -0
  82. package/dist/speckle/units.js.map +1 -0
  83. package/dist/speckle/url.d.ts +35 -0
  84. package/dist/speckle/url.d.ts.map +1 -0
  85. package/dist/speckle/url.js +48 -0
  86. package/dist/speckle/url.js.map +1 -0
  87. package/dist/speckle-receive-node.d.ts +9 -0
  88. package/dist/speckle-receive-node.d.ts.map +1 -0
  89. package/dist/speckle-receive-node.js +180 -0
  90. package/dist/speckle-receive-node.js.map +1 -0
  91. package/dist/xlsx-nodes.d.ts.map +1 -1
  92. package/dist/xlsx-nodes.js +1 -40
  93. package/dist/xlsx-nodes.js.map +1 -1
  94. package/package.json +11 -9
@@ -0,0 +1,180 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * `speckle.receive` — fetch one Speckle model version (or object) and write
6
+ * its walls, floors, roofs, columns and beams into the model under a target
7
+ * storey (#5167 phase 3.6). The mapping is `speckle/mapping.ts`
8
+ * (docs/architecture/speckle-mapping.md); the wire protocol is
9
+ * `speckle/client.ts`, which reaches the network ONLY through the gated
10
+ * `coreNetworkRequest` with this host's `networkGrants` and
11
+ * `networkTransport` — so the graph must declare
12
+ * `network.fetch:<speckle host>` and a token comes in as
13
+ * `{{secret:NAME}}`, exactly as for `http.request`.
14
+ *
15
+ * Identity: each element's GlobalId is derived from the server origin, the
16
+ * project id and the element's Revit `applicationId` (its Speckle id when
17
+ * absent), so receiving
18
+ * a later version of the same model REPLACES the elements an earlier
19
+ * receive wrote instead of duplicating them. Elements that disappeared from
20
+ * the newer version are not removed (v1; the node is not a tracked set).
21
+ * Replacing needs `model.delete`, checked only when there is something to
22
+ * replace; the new element is written before the old one is removed.
23
+ */
24
+ import { trackingGuid } from '@ifc-lite/flow';
25
+ import { ANY_ITEM, ENTITY_ITEM, ENTITY_LIST, SCALAR_ITEM, rememberGlobalId, requireCapability, resolveByGlobalId, toSdkRef } from './host.js';
26
+ import { fetchObjectGraph, resolveRoot } from './speckle/client.js';
27
+ import { mapSpeckleGraph, PSET_INSTANCE, PSET_SOURCE, PSET_TYPE } from './speckle/mapping.js';
28
+ import { parseSpeckleUrl } from './speckle/url.js';
29
+ const DEFAULT_TIMEOUT_MS = 30_000;
30
+ const DEFAULT_MAX_BYTES = 32 * 1024 * 1024;
31
+ const DEFAULT_MAX_OBJECTS = 50_000;
32
+ const PSETS = [PSET_SOURCE, PSET_TYPE, PSET_INSTANCE];
33
+ function positive(value, fallback) {
34
+ const n = typeof value === 'number' ? value : typeof value === 'string' && value.trim() !== '' ? Number(value) : Number.NaN;
35
+ return Number.isFinite(n) && n >= 1 ? n : fallback;
36
+ }
37
+ const text = (v) => (typeof v === 'string' ? v.trim() : '');
38
+ function targetOf(p) {
39
+ if (text(p.url).length > 0)
40
+ return parseSpeckleUrl(text(p.url));
41
+ const server = text(p.server);
42
+ const projectId = text(p.projectId);
43
+ const objectId = text(p.objectId);
44
+ if (!server || !projectId || !objectId) {
45
+ throw new Error('speckle.receive: give either "url", or all of "server", "projectId" and "objectId"');
46
+ }
47
+ return parseSpeckleUrl(`${server.replace(/\/+$/, '')}/streams/${projectId}/objects/${objectId}`);
48
+ }
49
+ function write(ctx, storey, e, GlobalId) {
50
+ const store = ctx.host.bim.store;
51
+ switch (e.kind) {
52
+ case 'wall': return store.addWall(storey.modelId, storey.expressId, { ...e.params, GlobalId });
53
+ case 'slab': return store.addSlab(storey.modelId, storey.expressId, { ...e.params, GlobalId });
54
+ case 'roof': return store.addRoof(storey.modelId, storey.expressId, { ...e.params, GlobalId });
55
+ case 'column': return store.addColumn(storey.modelId, storey.expressId, { ...e.params, GlobalId });
56
+ case 'beam': return store.addBeam(storey.modelId, storey.expressId, { ...e.params, GlobalId });
57
+ }
58
+ }
59
+ /**
60
+ * The identity namespace of one Speckle project: the server's normalised
61
+ * origin AND the project id, so the same project id on two servers can
62
+ * never mint the same GlobalIds.
63
+ */
64
+ export function identityScope(server, projectId) {
65
+ return `speckle:${new URL(server).origin}/${projectId}`;
66
+ }
67
+ function writeAll(ctx, storey, scope, planned, log) {
68
+ const bim = ctx.host.bim;
69
+ const entities = [];
70
+ const counts = { created: 0, replaced: 0, kept: 0 };
71
+ const keys = new Set();
72
+ // Resolve every slot BEFORE writing: a missing `model.delete` grant must
73
+ // refuse the receive before anything is written, not halfway through
74
+ // (a batch groups undo; it does not roll back a throw).
75
+ const slots = planned.map((e) => {
76
+ // Two objects sharing an applicationId in one version must not replace
77
+ // each other: the second falls back to its (content-hash) Speckle id.
78
+ const key = keys.has(e.key) ? e.speckleId : e.key;
79
+ keys.add(key);
80
+ const globalId = trackingGuid(scope, key);
81
+ return { e, globalId, existing: resolveByGlobalId(bim, globalId) };
82
+ });
83
+ if (slots.some((s) => s.existing))
84
+ requireCapability(ctx, 'model.delete');
85
+ bim.mutate.batch('speckle.receive', () => {
86
+ for (const { e, globalId, existing } of slots) {
87
+ // The new element is written FIRST, beside the old one: a write the
88
+ // builder rejects must leave the previous receive's element in place.
89
+ let ref;
90
+ try {
91
+ ref = write(ctx, storey, e, globalId);
92
+ }
93
+ catch (err) {
94
+ const why = err instanceof Error ? err.message : String(err);
95
+ if (existing) {
96
+ counts.kept++;
97
+ log.add(e.speckleType, 'write-failed-kept-previous', `the IFC writer rejected the new version (${why}); the element from the earlier receive was kept`, e.speckleId);
98
+ }
99
+ else {
100
+ log.add(e.speckleType, 'write-failed', `the IFC writer rejected it (${why})`, e.speckleId);
101
+ }
102
+ continue;
103
+ }
104
+ if (existing && !bim.store.removeEntity(existing)) {
105
+ // Roll the new element back rather than leave two under one GlobalId.
106
+ bim.store.removeEntity(ref);
107
+ counts.kept++;
108
+ log.add(e.speckleType, 'write-failed-kept-previous', 'the element from the earlier receive could not be removed, so it was kept and the new version not written', e.speckleId);
109
+ continue;
110
+ }
111
+ rememberGlobalId(bim, globalId, ref);
112
+ for (const pset of PSETS) {
113
+ for (const [prop, value] of Object.entries(e.psets[pset] ?? {}))
114
+ bim.mutate.setProperty(ref, pset, prop, value);
115
+ }
116
+ counts[existing ? 'replaced' : 'created']++;
117
+ entities.push({ globalId, modelId: ref.modelId, expressId: ref.expressId });
118
+ log.add(e.speckleType, 'display-meshes', 'bim.store has no tessellated-body writer, so the body is rebuilt parametrically from the location and dimensions', e.speckleId, e.displayMeshes);
119
+ log.add(e.speckleType, 'non-parameter-entries', 'they carry no scalar value (compound structure layers, nested tables)', e.speckleId, e.skippedEntries);
120
+ }
121
+ });
122
+ ctx.log('info', `speckle.receive: ${counts.created} created, ${counts.replaced} replaced from an earlier receive, ${counts.kept} earlier element(s) kept after a failed write`);
123
+ return entities;
124
+ }
125
+ async function run(ctx, inputs, p) {
126
+ requireCapability(ctx, 'model.create');
127
+ for (const pset of PSETS)
128
+ requireCapability(ctx, `model.mutate:${pset}`);
129
+ const storey = toSdkRef(ctx, inputs.storey);
130
+ const target = targetOf(p);
131
+ const opts = {
132
+ grants: ctx.host.networkGrants ?? [],
133
+ transport: ctx.host.networkTransport,
134
+ token: text(p.token),
135
+ timeoutMs: positive(p.timeoutMs, DEFAULT_TIMEOUT_MS),
136
+ maxBytes: positive(p.maxBytes, DEFAULT_MAX_BYTES),
137
+ maxObjects: positive(p.maxObjects, DEFAULT_MAX_OBJECTS),
138
+ signal: ctx.signal,
139
+ };
140
+ const root = await resolveRoot(opts, target);
141
+ const objects = await fetchObjectGraph(opts, target, root.objectId);
142
+ const { planned, refusals } = mapSpeckleGraph(objects, root.objectId, { level: text(p.level) || undefined });
143
+ const entities = writeAll(ctx, storey, identityScope(target.server, target.projectId), planned, refusals);
144
+ const refused = refusals.list();
145
+ for (const r of refused)
146
+ ctx.log('warn', r.message);
147
+ return { entities, refusals: refused, objectId: root.objectId, versionId: root.versionId ?? null };
148
+ }
149
+ export const speckleReceiveNode = {
150
+ type: 'speckle.receive',
151
+ title: 'Speckle receive',
152
+ category: 'network',
153
+ doc: 'Fetches a Speckle model version and writes its walls, floors, flat roofs, columns and beams into the target storey, with Revit parameters as property sets. ' +
154
+ 'Everything it cannot map is reported by type, reason and count. Needs a granted network.fetch:<speckle host>; a token goes in as {{secret:NAME}}.',
155
+ inputs: [{ name: 'storey', type: ENTITY_ITEM }],
156
+ outputs: [
157
+ { name: 'entities', type: ENTITY_LIST },
158
+ { name: 'refusals', type: ANY_ITEM },
159
+ { name: 'objectId', type: SCALAR_ITEM },
160
+ { name: 'versionId', type: SCALAR_ITEM, nullable: true },
161
+ ],
162
+ params: [
163
+ { name: 'url', kind: 'string', default: '', doc: 'https://<server>/projects/<project>/models/<model>[@<version>], or a legacy /streams/<stream>/commits/<commit> or /streams/<stream>/objects/<object> URL.' },
164
+ { name: 'server', kind: 'string', default: '', doc: 'With projectId and objectId, instead of url: e.g. https://app.speckle.systems' },
165
+ { name: 'projectId', kind: 'string', default: '', doc: 'Project (stream) id, used with server and objectId.' },
166
+ { name: 'objectId', kind: 'string', default: '', doc: 'Root object id, used with server and projectId.' },
167
+ { name: 'token', kind: 'string', default: '', doc: 'Personal access token for a private project. Use {{secret:NAME}}; never paste the token itself.' },
168
+ { name: 'level', kind: 'string', default: '', doc: 'Only receive elements on this Speckle level (by name). Empty receives every level.' },
169
+ { name: 'timeoutMs', kind: 'number', default: DEFAULT_TIMEOUT_MS },
170
+ { name: 'maxBytes', kind: 'number', default: DEFAULT_MAX_BYTES, doc: 'Per-response byte cap; a response past it fails the receive.' },
171
+ { name: 'maxObjects', kind: 'number', default: DEFAULT_MAX_OBJECTS, doc: 'Upper bound on objects fetched (display meshes are never fetched).' },
172
+ ],
173
+ capabilities: ['model.create', 'model.delete', ...PSETS.map((p) => `model.mutate:${p}`), 'network.fetch:*'],
174
+ writes: 'model',
175
+ requires: { network: true, backend: ['store', 'mutate'] },
176
+ // The server is the source of truth: a cached run would never see a new version.
177
+ volatile: true,
178
+ run,
179
+ };
180
+ //# sourceMappingURL=speckle-receive-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speckle-receive-node.js","sourceRoot":"","sources":["../src/speckle-receive-node.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"xlsx-nodes.d.ts","sourceRoot":"","sources":["../src/xlsx-nodes.ts"],"names":[],"mappings":"AAcA,OAAO,EAAwC,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AA6CnF,eAAO,MAAM,SAAS,EAAE,WAAW,EA4ClC,CAAC"}
1
+ {"version":3,"file":"xlsx-nodes.d.ts","sourceRoot":"","sources":["../src/xlsx-nodes.ts"],"names":[],"mappings":"AAeA,OAAO,EAAwC,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAEnF,eAAO,MAAM,SAAS,EAAE,WAAW,EA4ClC,CAAC"}
@@ -9,48 +9,9 @@
9
9
  * attachments already use for binary payloads elsewhere in the SDK.
10
10
  */
11
11
  import { tableOf } from './table-nodes.js';
12
+ import { fromBase64, toBase64 } from './base64.js';
12
13
  import { readXlsxTable, writeXlsxTable } from './xlsx-io.js';
13
14
  import { SCALAR_ITEM, SCALAR_LIST, TABLE_ITEM } from './host.js';
14
- /**
15
- * Base64 without `Buffer` or `btoa`/`atob`: this package runs in the browser
16
- * (`viewer-embed`) as well as headlessly, and neither global is guaranteed —
17
- * `Buffer` needs a bundler polyfill most Vite configs do not add, and `atob`
18
- * mangles bytes above 0x7F on some hosts' string-vs-binary handling. A tiny
19
- * table-driven codec sidesteps both.
20
- */
21
- const BASE64_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
22
- function toBase64(bytes) {
23
- let out = '';
24
- for (let i = 0; i < bytes.length; i += 3) {
25
- const b0 = bytes[i];
26
- const b1 = bytes[i + 1];
27
- const b2 = bytes[i + 2];
28
- out += BASE64_CHARS[b0 >> 2];
29
- out += BASE64_CHARS[((b0 & 0x03) << 4) | (b1 === undefined ? 0 : b1 >> 4)];
30
- out += b1 === undefined ? '=' : BASE64_CHARS[((b1 & 0x0f) << 2) | (b2 === undefined ? 0 : b2 >> 6)];
31
- out += b2 === undefined ? '=' : BASE64_CHARS[b2 & 0x3f];
32
- }
33
- return out;
34
- }
35
- function fromBase64(text) {
36
- const clean = text.replace(/[^A-Za-z0-9+/=]/g, '');
37
- const len = clean.endsWith('==') ? clean.length - 2 : clean.endsWith('=') ? clean.length - 1 : clean.length;
38
- const byteLength = Math.floor((len * 6) / 8);
39
- const out = new Uint8Array(byteLength);
40
- let bits = 0;
41
- let value = 0;
42
- let outIdx = 0;
43
- for (let i = 0; i < len; i += 1) {
44
- value = (value << 6) | BASE64_CHARS.indexOf(clean[i]);
45
- bits += 6;
46
- if (bits >= 8) {
47
- bits -= 8;
48
- out[outIdx] = (value >> bits) & 0xff;
49
- outIdx += 1;
50
- }
51
- }
52
- return out;
53
- }
54
15
  export const xlsxNodes = [
55
16
  {
56
17
  type: 'table.readXlsx',
@@ -1 +1 @@
1
- {"version":3,"file":"xlsx-nodes.js","sourceRoot":"","sources":["../src/xlsx-nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xlsx-nodes.js","sourceRoot":"","sources":["../src/xlsx-nodes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/flow-nodes",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
4
4
  "description": "Standard node library for @ifc-lite/flow over the ifc-lite SDK: model reads and writes, tables, viewer, and a sandboxed Script node",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,14 +14,16 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "exceljs": "^4.4.0",
17
- "@ifc-lite/export": "^4.7.2",
18
- "@ifc-lite/data": "^5.3.0",
19
- "@ifc-lite/extensions": "^0.9.0",
20
- "@ifc-lite/flow": "^0.3.0",
21
- "@ifc-lite/mutations": "^2.7.0",
22
- "@ifc-lite/query": "^2.5.0",
23
- "@ifc-lite/sandbox": "^2.6.1",
24
- "@ifc-lite/sdk": "^7.1.1"
17
+ "@ifc-lite/data": "^6.0.0",
18
+ "@ifc-lite/export": "^4.7.4",
19
+ "@ifc-lite/documents-api": "^0.2.0",
20
+ "@ifc-lite/extensions": "^0.10.0",
21
+ "@ifc-lite/bcf-api": "^0.2.4",
22
+ "@ifc-lite/flow": "^0.4.0",
23
+ "@ifc-lite/mutations": "^2.8.0",
24
+ "@ifc-lite/query": "^2.5.1",
25
+ "@ifc-lite/sandbox": "^2.8.0",
26
+ "@ifc-lite/sdk": "^7.1.3"
25
27
  },
26
28
  "devDependencies": {
27
29
  "@types/node": "^26.6.1",