@ifc-lite/flow-nodes 0.3.1 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/aps-client.d.ts +55 -0
- package/dist/aps-client.d.ts.map +1 -0
- package/dist/aps-client.js +194 -0
- package/dist/aps-client.js.map +1 -0
- package/dist/aps-nodes.d.ts +3 -0
- package/dist/aps-nodes.d.ts.map +1 -0
- package/dist/aps-nodes.js +192 -0
- package/dist/aps-nodes.js.map +1 -0
- package/dist/aps-table.d.ts +24 -0
- package/dist/aps-table.d.ts.map +1 -0
- package/dist/aps-table.js +123 -0
- package/dist/aps-table.js.map +1 -0
- package/dist/base64.d.ts +8 -0
- package/dist/base64.d.ts.map +1 -0
- package/dist/base64.js +59 -0
- package/dist/base64.js.map +1 -0
- package/dist/bcf-client.d.ts +36 -0
- package/dist/bcf-client.d.ts.map +1 -0
- package/dist/bcf-client.js +108 -0
- package/dist/bcf-client.js.map +1 -0
- package/dist/bcf-nodes.d.ts +3 -0
- package/dist/bcf-nodes.d.ts.map +1 -0
- package/dist/bcf-nodes.js +181 -0
- package/dist/bcf-nodes.js.map +1 -0
- package/dist/documents-fetch.d.ts +23 -0
- package/dist/documents-fetch.d.ts.map +1 -0
- package/dist/documents-fetch.js +48 -0
- package/dist/documents-fetch.js.map +1 -0
- package/dist/documents-nodes.d.ts +5 -0
- package/dist/documents-nodes.d.ts.map +1 -0
- package/dist/documents-nodes.js +167 -0
- package/dist/documents-nodes.js.map +1 -0
- package/dist/host.d.ts +28 -0
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js.map +1 -1
- package/dist/http-request-node.d.ts +9 -0
- package/dist/http-request-node.d.ts.map +1 -0
- package/dist/http-request-node.js +109 -0
- package/dist/http-request-node.js.map +1 -0
- package/dist/index.d.ts +20 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -5
- package/dist/index.js.map +1 -1
- package/dist/model-nodes.d.ts.map +1 -1
- package/dist/model-nodes.js +11 -6
- package/dist/model-nodes.js.map +1 -1
- package/dist/open-model-node.d.ts +3 -0
- package/dist/open-model-node.d.ts.map +1 -0
- package/dist/open-model-node.js +47 -0
- package/dist/open-model-node.js.map +1 -0
- package/dist/script-node.d.ts.map +1 -1
- package/dist/script-node.js +55 -21
- package/dist/script-node.js.map +1 -1
- package/dist/secrets.d.ts +88 -0
- package/dist/secrets.d.ts.map +1 -0
- package/dist/secrets.js +202 -0
- package/dist/secrets.js.map +1 -0
- package/dist/speckle/client.d.ts +52 -0
- package/dist/speckle/client.d.ts.map +1 -0
- package/dist/speckle/client.js +153 -0
- package/dist/speckle/client.js.map +1 -0
- package/dist/speckle/geometry.d.ts +37 -0
- package/dist/speckle/geometry.d.ts.map +1 -0
- package/dist/speckle/geometry.js +126 -0
- package/dist/speckle/geometry.js.map +1 -0
- package/dist/speckle/mapping.d.ts +62 -0
- package/dist/speckle/mapping.d.ts.map +1 -0
- package/dist/speckle/mapping.js +208 -0
- package/dist/speckle/mapping.js.map +1 -0
- package/dist/speckle/parameters.d.ts +49 -0
- package/dist/speckle/parameters.d.ts.map +1 -0
- package/dist/speckle/parameters.js +95 -0
- package/dist/speckle/parameters.js.map +1 -0
- package/dist/speckle/refusals.d.ts +45 -0
- package/dist/speckle/refusals.d.ts.map +1 -0
- package/dist/speckle/refusals.js +40 -0
- package/dist/speckle/refusals.js.map +1 -0
- package/dist/speckle/units.d.ts +13 -0
- package/dist/speckle/units.d.ts.map +1 -0
- package/dist/speckle/units.js +59 -0
- package/dist/speckle/units.js.map +1 -0
- package/dist/speckle/url.d.ts +35 -0
- package/dist/speckle/url.d.ts.map +1 -0
- package/dist/speckle/url.js +48 -0
- package/dist/speckle/url.js.map +1 -0
- package/dist/speckle-receive-node.d.ts +9 -0
- package/dist/speckle-receive-node.d.ts.map +1 -0
- package/dist/speckle-receive-node.js +180 -0
- package/dist/speckle-receive-node.js.map +1 -0
- package/dist/xlsx-nodes.d.ts.map +1 -1
- package/dist/xlsx-nodes.js +1 -40
- package/dist/xlsx-nodes.js.map +1 -1
- package/package.json +13 -11
|
@@ -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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"}
|
package/dist/xlsx-nodes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xlsx-nodes.d.ts","sourceRoot":"","sources":["../src/xlsx-nodes.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/xlsx-nodes.js
CHANGED
|
@@ -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',
|
package/dist/xlsx-nodes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xlsx-nodes.js","sourceRoot":"","sources":["../src/xlsx-nodes.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,
|
|
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
|
+
"version": "0.5.1",
|
|
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,19 +14,21 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"exceljs": "^4.4.0",
|
|
17
|
-
"@ifc-lite/
|
|
18
|
-
"@ifc-lite/
|
|
19
|
-
"@ifc-lite/
|
|
20
|
-
"@ifc-lite/
|
|
21
|
-
"@ifc-lite/
|
|
22
|
-
"@ifc-lite/
|
|
23
|
-
"@ifc-lite/
|
|
24
|
-
"@ifc-lite/
|
|
17
|
+
"@ifc-lite/data": "^6.1.0",
|
|
18
|
+
"@ifc-lite/documents-api": "^0.2.0",
|
|
19
|
+
"@ifc-lite/bcf-api": "^0.2.4",
|
|
20
|
+
"@ifc-lite/extensions": "^0.10.1",
|
|
21
|
+
"@ifc-lite/export": "^4.8.0",
|
|
22
|
+
"@ifc-lite/flow": "^0.4.1",
|
|
23
|
+
"@ifc-lite/query": "^2.5.2",
|
|
24
|
+
"@ifc-lite/mutations": "^3.0.0",
|
|
25
|
+
"@ifc-lite/sandbox": "^2.9.0",
|
|
26
|
+
"@ifc-lite/sdk": "^8.0.0"
|
|
25
27
|
},
|
|
26
28
|
"devDependencies": {
|
|
27
|
-
"@types/node": "^26.6.
|
|
29
|
+
"@types/node": "^26.6.2",
|
|
28
30
|
"typescript": "^6.0.3",
|
|
29
|
-
"vitest": "^5.0.
|
|
31
|
+
"vitest": "^5.0.2"
|
|
30
32
|
},
|
|
31
33
|
"license": "MPL-2.0",
|
|
32
34
|
"author": "Louis True",
|