@ifc-lite/flow-nodes 0.2.0 → 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 (107) hide show
  1. package/README.md +1 -0
  2. package/dist/apply-table-node.d.ts.map +1 -1
  3. package/dist/apply-table-node.js +7 -6
  4. package/dist/apply-table-node.js.map +1 -1
  5. package/dist/aps-client.d.ts +55 -0
  6. package/dist/aps-client.d.ts.map +1 -0
  7. package/dist/aps-client.js +194 -0
  8. package/dist/aps-client.js.map +1 -0
  9. package/dist/aps-nodes.d.ts +3 -0
  10. package/dist/aps-nodes.d.ts.map +1 -0
  11. package/dist/aps-nodes.js +192 -0
  12. package/dist/aps-nodes.js.map +1 -0
  13. package/dist/aps-table.d.ts +24 -0
  14. package/dist/aps-table.d.ts.map +1 -0
  15. package/dist/aps-table.js +123 -0
  16. package/dist/aps-table.js.map +1 -0
  17. package/dist/base64.d.ts +8 -0
  18. package/dist/base64.d.ts.map +1 -0
  19. package/dist/base64.js +59 -0
  20. package/dist/base64.js.map +1 -0
  21. package/dist/bcf-client.d.ts +36 -0
  22. package/dist/bcf-client.d.ts.map +1 -0
  23. package/dist/bcf-client.js +108 -0
  24. package/dist/bcf-client.js.map +1 -0
  25. package/dist/bcf-nodes.d.ts +3 -0
  26. package/dist/bcf-nodes.d.ts.map +1 -0
  27. package/dist/bcf-nodes.js +181 -0
  28. package/dist/bcf-nodes.js.map +1 -0
  29. package/dist/csv-nodes.d.ts.map +1 -1
  30. package/dist/csv-nodes.js +3 -4
  31. package/dist/csv-nodes.js.map +1 -1
  32. package/dist/documents-fetch.d.ts +23 -0
  33. package/dist/documents-fetch.d.ts.map +1 -0
  34. package/dist/documents-fetch.js +48 -0
  35. package/dist/documents-fetch.js.map +1 -0
  36. package/dist/documents-nodes.d.ts +5 -0
  37. package/dist/documents-nodes.d.ts.map +1 -0
  38. package/dist/documents-nodes.js +167 -0
  39. package/dist/documents-nodes.js.map +1 -0
  40. package/dist/host.d.ts +28 -0
  41. package/dist/host.d.ts.map +1 -1
  42. package/dist/host.js.map +1 -1
  43. package/dist/http-request-node.d.ts +9 -0
  44. package/dist/http-request-node.d.ts.map +1 -0
  45. package/dist/http-request-node.js +109 -0
  46. package/dist/http-request-node.js.map +1 -0
  47. package/dist/index.d.ts +20 -2
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +34 -5
  50. package/dist/index.js.map +1 -1
  51. package/dist/model-nodes.d.ts.map +1 -1
  52. package/dist/model-nodes.js +11 -6
  53. package/dist/model-nodes.js.map +1 -1
  54. package/dist/open-model-node.d.ts +3 -0
  55. package/dist/open-model-node.d.ts.map +1 -0
  56. package/dist/open-model-node.js +47 -0
  57. package/dist/open-model-node.js.map +1 -0
  58. package/dist/script-node.d.ts.map +1 -1
  59. package/dist/script-node.js +55 -21
  60. package/dist/script-node.js.map +1 -1
  61. package/dist/secrets.d.ts +88 -0
  62. package/dist/secrets.d.ts.map +1 -0
  63. package/dist/secrets.js +202 -0
  64. package/dist/secrets.js.map +1 -0
  65. package/dist/speckle/client.d.ts +52 -0
  66. package/dist/speckle/client.d.ts.map +1 -0
  67. package/dist/speckle/client.js +153 -0
  68. package/dist/speckle/client.js.map +1 -0
  69. package/dist/speckle/geometry.d.ts +37 -0
  70. package/dist/speckle/geometry.d.ts.map +1 -0
  71. package/dist/speckle/geometry.js +126 -0
  72. package/dist/speckle/geometry.js.map +1 -0
  73. package/dist/speckle/mapping.d.ts +62 -0
  74. package/dist/speckle/mapping.d.ts.map +1 -0
  75. package/dist/speckle/mapping.js +208 -0
  76. package/dist/speckle/mapping.js.map +1 -0
  77. package/dist/speckle/parameters.d.ts +49 -0
  78. package/dist/speckle/parameters.d.ts.map +1 -0
  79. package/dist/speckle/parameters.js +95 -0
  80. package/dist/speckle/parameters.js.map +1 -0
  81. package/dist/speckle/refusals.d.ts +45 -0
  82. package/dist/speckle/refusals.d.ts.map +1 -0
  83. package/dist/speckle/refusals.js +40 -0
  84. package/dist/speckle/refusals.js.map +1 -0
  85. package/dist/speckle/units.d.ts +13 -0
  86. package/dist/speckle/units.d.ts.map +1 -0
  87. package/dist/speckle/units.js +59 -0
  88. package/dist/speckle/units.js.map +1 -0
  89. package/dist/speckle/url.d.ts +35 -0
  90. package/dist/speckle/url.d.ts.map +1 -0
  91. package/dist/speckle/url.js +48 -0
  92. package/dist/speckle/url.js.map +1 -0
  93. package/dist/speckle-receive-node.d.ts +9 -0
  94. package/dist/speckle-receive-node.d.ts.map +1 -0
  95. package/dist/speckle-receive-node.js +180 -0
  96. package/dist/speckle-receive-node.js.map +1 -0
  97. package/dist/xlsx-io.d.ts.map +1 -1
  98. package/dist/xlsx-io.js +3 -3
  99. package/dist/xlsx-io.js.map +1 -1
  100. package/dist/xlsx-nodes.d.ts.map +1 -1
  101. package/dist/xlsx-nodes.js +1 -40
  102. package/dist/xlsx-nodes.js.map +1 -1
  103. package/package.json +11 -9
  104. package/dist/strict-cell.d.ts +0 -20
  105. package/dist/strict-cell.d.ts.map +0 -1
  106. package/dist/strict-cell.js +0 -33
  107. package/dist/strict-cell.js.map +0 -1
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Which Speckle object graph a `speckle.receive` node reads, parsed from the
3
+ * URL a user copies out of the Speckle web app. Three shapes are accepted:
4
+ *
5
+ * https://<server>/projects/<project>/models/<model> latest version of a model
6
+ * https://<server>/projects/<project>/models/<model>@<version> one pinned version
7
+ * https://<server>/streams/<stream>/commits/<commit> legacy (v2) commit = version
8
+ * https://<server>/streams/<stream>/objects/<object> legacy (v2) object, no version lookup
9
+ *
10
+ * A stream id and a project id are the same identifier (the v2 → v3 rename),
11
+ * so both resolve to `projectId`. A federated view (`models/a,b`) names
12
+ * several models at once; it is refused rather than silently narrowed to the
13
+ * first one.
14
+ *
15
+ * Protocol handling in this directory is adapted, as new code, from the
16
+ * author's own ifc-ai-rendering project (`lib/speckle-loader.ts`), at the
17
+ * author's request.
18
+ */
19
+ export type SpeckleTarget = {
20
+ readonly kind: 'version';
21
+ readonly server: string;
22
+ readonly projectId: string;
23
+ /** Absent for a legacy commit URL: a version is addressable by id alone. */
24
+ readonly modelId?: string;
25
+ /** Absent: the model's latest version. */
26
+ readonly versionId?: string;
27
+ } | {
28
+ readonly kind: 'object';
29
+ readonly server: string;
30
+ readonly projectId: string;
31
+ readonly objectId: string;
32
+ };
33
+ /** Parse a Speckle URL. Throws, naming the URL, on anything it cannot address. */
34
+ export declare function parseSpeckleUrl(raw: string): SpeckleTarget;
35
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/speckle/url.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,aAAa,GACrB;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAUhH,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAoC1D"}
@@ -0,0 +1,48 @@
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
+ const SEGMENT = /^[A-Za-z0-9_-]+$/;
5
+ function segment(value, what, url) {
6
+ const v = value === undefined ? '' : decodeURIComponent(value);
7
+ if (!SEGMENT.test(v))
8
+ throw new Error(`speckle.receive: "${url}" has no usable ${what}`);
9
+ return v;
10
+ }
11
+ /** Parse a Speckle URL. Throws, naming the URL, on anything it cannot address. */
12
+ export function parseSpeckleUrl(raw) {
13
+ const trimmed = raw.trim();
14
+ if (trimmed.length === 0)
15
+ throw new Error('speckle.receive: "url" is required');
16
+ // A bare host/path is read as https; an explicit other scheme is kept so the
17
+ // network gate refuses it by name rather than this parser rewriting it.
18
+ const withScheme = /^[a-z][a-z0-9+.-]*:\/\//i.test(trimmed) ? trimmed : `https://${trimmed}`;
19
+ let url;
20
+ try {
21
+ url = new URL(withScheme);
22
+ }
23
+ catch {
24
+ throw new Error(`speckle.receive: "${raw}" is not a valid URL`);
25
+ }
26
+ const server = `${url.protocol}//${url.host}`;
27
+ const parts = url.pathname.split('/').filter((p) => p.length > 0);
28
+ if (parts[0] === 'projects' && parts[2] === 'models') {
29
+ const projectId = segment(parts[1], 'project id', raw);
30
+ const modelPart = parts[3] ?? '';
31
+ if (modelPart.includes(',')) {
32
+ throw new Error(`speckle.receive: "${raw}" names several models (a federated view); receive one model per node`);
33
+ }
34
+ const [model, version] = modelPart.split('@');
35
+ const modelId = segment(model, 'model id', raw);
36
+ const versionId = version === undefined ? undefined : segment(version, 'version id', raw);
37
+ return { kind: 'version', server, projectId, modelId, versionId };
38
+ }
39
+ if (parts[0] === 'streams' && parts[2] === 'commits') {
40
+ return { kind: 'version', server, projectId: segment(parts[1], 'stream id', raw), versionId: segment(parts[3], 'commit id', raw) };
41
+ }
42
+ if (parts[0] === 'streams' && parts[2] === 'objects') {
43
+ return { kind: 'object', server, projectId: segment(parts[1], 'stream id', raw), objectId: segment(parts[3], 'object id', raw) };
44
+ }
45
+ throw new Error(`speckle.receive: "${raw}" is not a Speckle model, version, commit or object URL ` +
46
+ '(expected /projects/<project>/models/<model>[@<version>], /streams/<stream>/commits/<commit> or /streams/<stream>/objects/<object>)');
47
+ }
48
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/speckle/url.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type FlowNodeDef } from './host.js';
2
+ /**
3
+ * The identity namespace of one Speckle project: the server's normalised
4
+ * origin AND the project id, so the same project id on two servers can
5
+ * never mint the same GlobalIds.
6
+ */
7
+ export declare function identityScope(server: string, projectId: string): string;
8
+ export declare const speckleReceiveNode: FlowNodeDef;
9
+ //# sourceMappingURL=speckle-receive-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speckle-receive-node.d.ts","sourceRoot":"","sources":["../src/speckle-receive-node.ts"],"names":[],"mappings":"AA2BA,OAAO,EAA+H,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAwC1K;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvE;AAgFD,eAAO,MAAM,kBAAkB,EAAE,WA+BhC,CAAC"}
@@ -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-io.d.ts","sourceRoot":"","sources":["../src/xlsx-io.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAyD,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEnG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAoCD;;kDAEkD;AAClD,wBAAsB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyE5G;AAED;qDACqD;AACrD,wBAAsB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,SAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAc5F"}
1
+ {"version":3,"file":"xlsx-io.d.ts","sourceRoot":"","sources":["../src/xlsx-io.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAyD,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGnG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAoCD;;kDAEkD;AAClD,wBAAsB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyE5G;AAED;qDACqD;AACrD,wBAAsB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,SAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAc5F"}
package/dist/xlsx-io.js CHANGED
@@ -18,9 +18,9 @@
18
18
  */
19
19
  import ExcelJS from 'exceljs';
20
20
  import { guardSpreadsheetFormula } from '@ifc-lite/export';
21
- import { PARSE_INVALID } from '@ifc-lite/mutations';
22
- import { parseStrictCell } from './strict-cell.js';
21
+ import { PARSE_INVALID, parseValue } from '@ifc-lite/mutations';
23
22
  import { COLUMN_TYPES } from '@ifc-lite/flow';
23
+ import { VALUE_TYPE_BY_COLUMN_TYPE } from './table-nodes.js';
24
24
  function columnType(spec) {
25
25
  const t = spec?.type;
26
26
  return typeof t === 'string' && COLUMN_TYPES.includes(t) ? t : 'string';
@@ -125,7 +125,7 @@ export async function readXlsxTable(data, options = {}) {
125
125
  row[col.name] = raw;
126
126
  return;
127
127
  }
128
- const parsed = parseStrictCell(raw, col.type);
128
+ const parsed = parseValue(raw, VALUE_TYPE_BY_COLUMN_TYPE[col.type]);
129
129
  if (parsed === PARSE_INVALID) {
130
130
  problems.push(`row ${r}: column "${col.name}": cannot parse "${raw}" as ${col.type}`);
131
131
  row[col.name] = null;
@@ -1 +1 @@
1
- {"version":3,"file":"xlsx-io.js","sourceRoot":"","sources":["../src/xlsx-io.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xlsx-io.js","sourceRoot":"","sources":["../src/xlsx-io.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":"AAAA;;+DAE+D;AAE/D;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAoB,MAAM,WAAW,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,YAAY,GAAG,kEAAkE,CAAC;AAExF,SAAS,QAAQ,CAAC,KAAiB;IACjC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,GAAG,IAAI,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7B,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3E,GAAG,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACpG,GAAG,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IAC5G,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,CAAC;QACV,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,CAAC;YACV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;YACrC,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAkB;IACtC;QACE,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,OAAO;QACjB,GAAG,EAAE,gIAAgI;QACrI,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC7C,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE;YACnC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE;SACxC;QACD,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,8CAA8C,EAAE;YACtF,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,oFAAoF,EAAE;YAC5H,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;SAChC;QACD,YAAY,EAAE,EAAE;QAChB,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,OAA6C,CAAC,CAAC,CAAC,SAAS,CAAC;YACxG,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE;gBACrD,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC9E,OAAO;gBACP,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;aACvE,CAAC,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC7B,CAAC;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,OAAO;QACjB,GAAG,EAAE,qJAAqJ;QAC1J,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC9C,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC9D,YAAY,EAAE,EAAE;QAChB,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;YACrF,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7C,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,CAAC;KACF;CACF,CAAC"}
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.2.0",
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/mutations": "^2.6.0",
18
- "@ifc-lite/export": "^4.6.0",
19
- "@ifc-lite/flow": "^0.2.0",
20
- "@ifc-lite/query": "^2.5.0",
21
- "@ifc-lite/extensions": "^0.8.0",
22
- "@ifc-lite/data": "^5.0.0",
23
- "@ifc-lite/sdk": "^7.0.0",
24
- "@ifc-lite/sandbox": "^2.6.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",
@@ -1,20 +0,0 @@
1
- /**
2
- * Is a spreadsheet cell's text a COMPLETE value of its column's type?
3
- *
4
- * `@ifc-lite/mutations`' `parseValue` is lenient by construction: `parseFloat`
5
- * reads the longest numeric prefix, so `"12,5"` becomes 12 and `"60abc"`
6
- * becomes 60, and every string other than true/yes/1 becomes `false`. A
7
- * European CSV (`12,5` in a Real column) therefore wrote 12 into the model
8
- * with nothing reported. This check runs first at every table→value boundary
9
- * (the CSV and XLSX readers, and `model.applyTable`), so a value is either
10
- * exactly what the cell says or reported and left unwritten (#5377 review).
11
- */
12
- import type { ColumnType } from '@ifc-lite/flow';
13
- import { PARSE_INVALID, type PropertyValue } from '@ifc-lite/mutations';
14
- /**
15
- * Parse a cell as its column's type, or {@link PARSE_INVALID}. The text is
16
- * trimmed ONCE and the same text is both checked and parsed: checking the
17
- * trimmed text but parsing the raw one accepted `" true "` and wrote `false`.
18
- */
19
- export declare function parseStrictCell(raw: string, type: ColumnType): PropertyValue | typeof PARSE_INVALID;
20
- //# sourceMappingURL=strict-cell.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strict-cell.d.ts","sourceRoot":"","sources":["../src/strict-cell.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAc,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAuBpF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,OAAO,aAAa,CAGnG"}
@@ -1,33 +0,0 @@
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 { PARSE_INVALID, parseValue } from '@ifc-lite/mutations';
5
- import { VALUE_TYPE_BY_COLUMN_TYPE } from './table-nodes.js';
6
- const REAL = /^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/;
7
- const INTEGER = /^[+-]?\d+$/;
8
- /**
9
- * IFC LOGICAL's UNKNOWN is deliberately absent: the property model carries a
10
- * boolean, and writing UNKNOWN as `false` would state a fact the sheet did not.
11
- */
12
- const BOOLEAN = /^(true|false|yes|no|1|0)$/i;
13
- function isStrictlyTyped(text, type) {
14
- switch (type) {
15
- // The syntax alone admits `1e309` (Infinity) and integers past 2^53
16
- // (silently rounded), so the value itself is checked too.
17
- case 'real': return REAL.test(text) && Number.isFinite(Number(text));
18
- case 'integer': return INTEGER.test(text) && Number.isSafeInteger(Number(text));
19
- case 'boolean':
20
- case 'logical': return BOOLEAN.test(text);
21
- default: return true;
22
- }
23
- }
24
- /**
25
- * Parse a cell as its column's type, or {@link PARSE_INVALID}. The text is
26
- * trimmed ONCE and the same text is both checked and parsed: checking the
27
- * trimmed text but parsing the raw one accepted `" true "` and wrote `false`.
28
- */
29
- export function parseStrictCell(raw, type) {
30
- const text = raw.trim();
31
- return isStrictlyTyped(text, type) ? parseValue(text, VALUE_TYPE_BY_COLUMN_TYPE[type]) : PARSE_INVALID;
32
- }
33
- //# sourceMappingURL=strict-cell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strict-cell.js","sourceRoot":"","sources":["../src/strict-cell.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAe/D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAsB,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,IAAI,GAAG,yCAAyC,CAAC;AACvD,MAAM,OAAO,GAAG,YAAY,CAAC;AAC7B;;;GAGG;AACH,MAAM,OAAO,GAAG,4BAA4B,CAAC;AAE7C,SAAS,eAAe,CAAC,IAAY,EAAE,IAAgB;IACrD,QAAQ,IAAI,EAAE,CAAC;QACb,oEAAoE;QACpE,0DAA0D;QAC1D,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,KAAK,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,KAAK,SAAS,CAAC;QACf,KAAK,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,IAAgB;IAC3D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AACzG,CAAC"}