@ifc-lite/flow-nodes 0.5.1 → 0.8.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.
- package/README.md +74 -2
- package/dist/ai-classify.d.ts +8 -0
- package/dist/ai-classify.d.ts.map +1 -0
- package/dist/ai-classify.js +113 -0
- package/dist/ai-classify.js.map +1 -0
- package/dist/ai-extract.d.ts +26 -0
- package/dist/ai-extract.d.ts.map +1 -0
- package/dist/ai-extract.js +127 -0
- package/dist/ai-extract.js.map +1 -0
- package/dist/ai-propose-fields.d.ts +12 -0
- package/dist/ai-propose-fields.d.ts.map +1 -0
- package/dist/ai-propose-fields.js +57 -0
- package/dist/ai-propose-fields.js.map +1 -0
- package/dist/ai-propose.d.ts +3 -0
- package/dist/ai-propose.d.ts.map +1 -0
- package/dist/ai-propose.js +94 -0
- package/dist/ai-propose.js.map +1 -0
- package/dist/ai-response-schemas.d.ts +11 -0
- package/dist/ai-response-schemas.d.ts.map +1 -0
- package/dist/ai-response-schemas.js +46 -0
- package/dist/ai-response-schemas.js.map +1 -0
- package/dist/ai-service.d.ts +60 -0
- package/dist/ai-service.d.ts.map +1 -0
- package/dist/ai-service.js +109 -0
- package/dist/ai-service.js.map +1 -0
- package/dist/ai-summarize.d.ts +3 -0
- package/dist/ai-summarize.d.ts.map +1 -0
- package/dist/ai-summarize.js +75 -0
- package/dist/ai-summarize.js.map +1 -0
- package/dist/ai.d.ts +15 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +10 -0
- package/dist/ai.js.map +1 -0
- package/dist/bcf-nodes.d.ts.map +1 -1
- package/dist/bcf-nodes.js +12 -2
- package/dist/bcf-nodes.js.map +1 -1
- package/dist/bcf-publication.d.ts +13 -0
- package/dist/bcf-publication.d.ts.map +1 -0
- package/dist/bcf-publication.js +24 -0
- package/dist/bcf-publication.js.map +1 -0
- package/dist/bcf-write-gateway.d.ts +41 -0
- package/dist/bcf-write-gateway.d.ts.map +1 -0
- package/dist/bcf-write-gateway.js +75 -0
- package/dist/bcf-write-gateway.js.map +1 -0
- package/dist/capability.d.ts +4 -0
- package/dist/capability.d.ts.map +1 -0
- package/dist/capability.js +21 -0
- package/dist/capability.js.map +1 -0
- package/dist/element-nodes.d.ts +9 -1
- package/dist/element-nodes.d.ts.map +1 -1
- package/dist/element-nodes.js +82 -9
- package/dist/element-nodes.js.map +1 -1
- package/dist/host.d.ts +28 -40
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +2 -31
- package/dist/host.js.map +1 -1
- package/dist/ids-nodes.d.ts +23 -0
- package/dist/ids-nodes.d.ts.map +1 -0
- package/dist/ids-nodes.js +166 -0
- package/dist/ids-nodes.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/ports.d.ts +38 -0
- package/dist/ports.d.ts.map +1 -0
- package/dist/ports.js +14 -0
- package/dist/ports.js.map +1 -0
- package/dist/session-contracts.d.ts +65 -0
- package/dist/session-contracts.d.ts.map +1 -0
- package/dist/session-contracts.js +87 -0
- package/dist/session-contracts.js.map +1 -0
- package/dist/session-nodes.d.ts +3 -0
- package/dist/session-nodes.d.ts.map +1 -0
- package/dist/session-nodes.js +67 -0
- package/dist/session-nodes.js.map +1 -0
- package/dist/speckle/url.d.ts.map +1 -1
- package/dist/speckle/url.js +9 -1
- package/dist/speckle/url.js.map +1 -1
- package/package.json +26 -12
|
@@ -0,0 +1,166 @@
|
|
|
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
|
+
* `ids.load` / `ids.lint` / `ids.validate` (IDS-122): the no-code
|
|
6
|
+
* pipeline "Load IDS → Lint → Validate model → BCF". `ids.validate`
|
|
7
|
+
* emits one row per failing element with `title` and `description`
|
|
8
|
+
* columns, so its table wires straight into `bcf.createTopic`'s `rows`.
|
|
9
|
+
*
|
|
10
|
+
* The IDS document travels between nodes as a Studio document (plain
|
|
11
|
+
* JSON, content-derived node ids; `@ifc-lite/ids-authoring`), the same
|
|
12
|
+
* shape the MCP tools exchange.
|
|
13
|
+
*
|
|
14
|
+
* The node definitions are eager (the standard registry lists them), but the
|
|
15
|
+
* authoring runtime is loaded inside `run` via `import()`: the viewer
|
|
16
|
+
* registers these nodes at startup, and the authoring gate, reducer and lint
|
|
17
|
+
* rules must stay out of its eager bundle. `run` may return a promise, so
|
|
18
|
+
* the contract is unchanged; a failed load fails the node with its error.
|
|
19
|
+
*/
|
|
20
|
+
import { validateIDS } from '@ifc-lite/ids';
|
|
21
|
+
import { ANY_ITEM, ANY_LIST, SCALAR_ITEM, TABLE_ITEM } from './host.js';
|
|
22
|
+
const DIAGNOSTIC_COLUMNS = [
|
|
23
|
+
{ name: 'code', type: 'string' },
|
|
24
|
+
{ name: 'severity', type: 'string' },
|
|
25
|
+
{ name: 'path', type: 'string' },
|
|
26
|
+
{ name: 'specification', type: 'string' },
|
|
27
|
+
{ name: 'message', type: 'string' },
|
|
28
|
+
];
|
|
29
|
+
const FAILURE_COLUMNS = [
|
|
30
|
+
{ name: 'title', type: 'string' },
|
|
31
|
+
{ name: 'description', type: 'string' },
|
|
32
|
+
{ name: 'specification', type: 'string' },
|
|
33
|
+
{ name: 'globalId', type: 'identifier' },
|
|
34
|
+
{ name: 'ifcType', type: 'string' },
|
|
35
|
+
];
|
|
36
|
+
const SEVERITY_RANK = { error: 0, warning: 1, info: 2 };
|
|
37
|
+
const loadAuthoring = () => import('@ifc-lite/ids-authoring');
|
|
38
|
+
async function studioDoc(v, node) {
|
|
39
|
+
const { parseStudioDocument } = await loadAuthoring();
|
|
40
|
+
try {
|
|
41
|
+
return parseStudioDocument(v);
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
throw new Error(`${node}: the "ids" input is not an IDS document from ids.load (${err instanceof Error ? err.message : String(err)})`, { cause: err });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function specName(doc, specId) {
|
|
48
|
+
const i = specId ? doc.nodes.specs.findIndex((s) => s.id === specId) : -1;
|
|
49
|
+
return i >= 0 ? doc.ids.specifications[i].name : null;
|
|
50
|
+
}
|
|
51
|
+
/** One row per failing element, phrased for an issue tracker. */
|
|
52
|
+
export function failureRows(report) {
|
|
53
|
+
const rows = [];
|
|
54
|
+
for (const spec of report.specificationResults) {
|
|
55
|
+
for (const entity of spec.entityResults) {
|
|
56
|
+
if (entity.passed)
|
|
57
|
+
continue;
|
|
58
|
+
const reasons = entity.requirementResults
|
|
59
|
+
.filter((r) => r.status === 'fail')
|
|
60
|
+
.map((r) => r.failureReason ?? r.checkedDescription);
|
|
61
|
+
const label = entity.entityName ? `${entity.entityType} "${entity.entityName}"` : entity.entityType;
|
|
62
|
+
rows.push({
|
|
63
|
+
title: `${spec.specification.name}: ${label}`,
|
|
64
|
+
description: reasons.join('\n'),
|
|
65
|
+
specification: spec.specification.name,
|
|
66
|
+
globalId: entity.globalId ?? null,
|
|
67
|
+
ifcType: entity.entityType,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return rows;
|
|
72
|
+
}
|
|
73
|
+
function accessorFor(ctx) {
|
|
74
|
+
const accessor = ctx.host.idsAccessor?.();
|
|
75
|
+
if (!accessor)
|
|
76
|
+
throw new Error('ids.validate: this host cannot read model data for IDS validation');
|
|
77
|
+
return accessor;
|
|
78
|
+
}
|
|
79
|
+
export const idsNodes = [
|
|
80
|
+
{
|
|
81
|
+
type: 'ids.load',
|
|
82
|
+
title: 'Load IDS',
|
|
83
|
+
category: 'ids',
|
|
84
|
+
doc: 'Reads IDS XML (the `xml` input, else the `xml` param) into an IDS document for `ids.lint` and `ids.validate`. Node ids depend only on the content.',
|
|
85
|
+
inputs: [{ name: 'xml', type: SCALAR_ITEM, optional: true, doc: 'IDS XML text, e.g. from a file or HTTP node.' }],
|
|
86
|
+
outputs: [
|
|
87
|
+
{ name: 'ids', type: ANY_ITEM },
|
|
88
|
+
{ name: 'title', type: SCALAR_ITEM },
|
|
89
|
+
{ name: 'specifications', type: SCALAR_ITEM },
|
|
90
|
+
],
|
|
91
|
+
params: [{ name: 'xml', kind: 'string', default: '', doc: 'IDS XML, used when the input is not wired.' }],
|
|
92
|
+
capabilities: [],
|
|
93
|
+
run: async (_ctx, i, p) => {
|
|
94
|
+
const xml = typeof i.xml === 'string' && i.xml.trim() !== '' ? i.xml : String(p.xml ?? '');
|
|
95
|
+
if (xml.trim() === '')
|
|
96
|
+
throw new Error('ids.load: no IDS XML (wire the `xml` input or set the param)');
|
|
97
|
+
const { readStudioDocument } = await loadAuthoring();
|
|
98
|
+
const doc = readStudioDocument(xml);
|
|
99
|
+
return { ids: doc, title: doc.ids.info.title, specifications: doc.ids.specifications.length };
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
type: 'ids.lint',
|
|
104
|
+
title: 'Lint IDS',
|
|
105
|
+
category: 'ids',
|
|
106
|
+
doc: 'Runs the IDSL lint rules over an IDS document. `table` has one row per diagnostic (code, severity, XML path, specification, message); `errors` counts error-severity rows. With `failOn` set, the node fails when a diagnostic at or above that severity remains.',
|
|
107
|
+
inputs: [{ name: 'ids', type: ANY_ITEM }],
|
|
108
|
+
outputs: [
|
|
109
|
+
{ name: 'table', type: TABLE_ITEM },
|
|
110
|
+
{ name: 'diagnostics', type: ANY_LIST },
|
|
111
|
+
{ name: 'errors', type: SCALAR_ITEM },
|
|
112
|
+
],
|
|
113
|
+
params: [
|
|
114
|
+
{ name: 'rules', kind: 'string', default: '', doc: 'Comma-separated rule codes to run; empty runs all.' },
|
|
115
|
+
{ name: 'failOn', kind: 'enum', options: ['never', 'error', 'warning', 'info'], default: 'never' },
|
|
116
|
+
],
|
|
117
|
+
capabilities: [],
|
|
118
|
+
run: async (_ctx, i, p) => {
|
|
119
|
+
const doc = await studioDoc(i.ids, 'ids.lint');
|
|
120
|
+
const { createLintContext, lintDocument, nodePath } = await loadAuthoring();
|
|
121
|
+
const rules = String(p.rules ?? '').split(',').map((s) => s.trim()).filter(Boolean);
|
|
122
|
+
const { diagnostics } = lintDocument(doc, await createLintContext(), rules.length ? { rules } : {});
|
|
123
|
+
const rows = diagnostics.map((d) => ({
|
|
124
|
+
code: d.code,
|
|
125
|
+
severity: d.severity,
|
|
126
|
+
path: nodePath(doc, d.nodeId) ?? d.nodeId,
|
|
127
|
+
specification: specName(doc, d.specId),
|
|
128
|
+
message: d.message,
|
|
129
|
+
}));
|
|
130
|
+
const failOn = p.failOn;
|
|
131
|
+
if (failOn !== 'never' && diagnostics.some((d) => SEVERITY_RANK[d.severity] <= SEVERITY_RANK[failOn])) {
|
|
132
|
+
throw new Error(`ids.lint: ${diagnostics.length} diagnostic(s), at least one at or above "${failOn}"`);
|
|
133
|
+
}
|
|
134
|
+
const table = { columns: DIAGNOSTIC_COLUMNS, rows, key: 'path' };
|
|
135
|
+
return { table, diagnostics, errors: diagnostics.filter((d) => d.severity === 'error').length };
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'ids.validate',
|
|
140
|
+
title: 'Validate Model (IDS)',
|
|
141
|
+
category: 'ids',
|
|
142
|
+
doc: 'Validates the active model against an IDS document. `failures` has one row per failing element with `title` and `description` columns, so it wires straight into `bcf.createTopic` rows; `report` is the full validation report.',
|
|
143
|
+
inputs: [{ name: 'ids', type: ANY_ITEM }],
|
|
144
|
+
outputs: [
|
|
145
|
+
{ name: 'failures', type: TABLE_ITEM },
|
|
146
|
+
{ name: 'report', type: ANY_ITEM },
|
|
147
|
+
{ name: 'failed', type: SCALAR_ITEM },
|
|
148
|
+
],
|
|
149
|
+
params: [],
|
|
150
|
+
capabilities: ['model.read'],
|
|
151
|
+
reads: 'model',
|
|
152
|
+
run: async (ctx, i) => {
|
|
153
|
+
const doc = await studioDoc(i.ids, 'ids.validate');
|
|
154
|
+
const model = ctx.host.bim.model.active();
|
|
155
|
+
const report = await validateIDS(doc.ids, accessorFor(ctx), {
|
|
156
|
+
modelId: model?.id ?? ctx.host.defaultModelId ?? 'model',
|
|
157
|
+
schemaVersion: model?.schemaVersion ?? '',
|
|
158
|
+
entityCount: model?.entityCount ?? 0,
|
|
159
|
+
});
|
|
160
|
+
const rows = failureRows(report);
|
|
161
|
+
ctx.log('info', `${report.summary.failedSpecifications}/${report.summary.totalSpecifications} specification(s) failed, ${rows.length} failing element(s)`);
|
|
162
|
+
return { failures: { columns: FAILURE_COLUMNS, rows, key: 'globalId' }, report, failed: rows.length };
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
];
|
|
166
|
+
//# sourceMappingURL=ids-nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids-nodes.js","sourceRoot":"","sources":["../src/ids-nodes.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { NodeRegistry, type HostFeatures } from '@ifc-lite/flow';
|
|
2
2
|
import type { FlowHost } from './host.js';
|
|
3
|
+
export { isModelSelector, parseTagRules, parseCheckJobs, matchesFilename, AUTOMATION_FEATURES } from './session-contracts.js';
|
|
4
|
+
export type { ModelSelector, SessionModel, SessionModels, FilenameTagRule, ResourceSource, CheckJob, DocumentMapping, SessionAutomationHost } from './session-contracts.js';
|
|
3
5
|
export type { FlowHost, FlowNodeDef, TableAccess, StringLookup } from './host.js';
|
|
6
|
+
export type { BcfWriteGateway, BcfWriteIntent } from './bcf-write-gateway.js';
|
|
4
7
|
export { requireCapability, toRef, toSdkRef, resolveByGlobalId, rememberGlobalId, forgetGlobalId, invalidateGlobalIdIndex } from './host.js';
|
|
5
8
|
export { columnTypeOf, VALUE_TYPE_BY_COLUMN_TYPE } from './table-nodes.js';
|
|
6
9
|
export type { ElementSpec } from './element-nodes.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAWjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAW1C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC9H,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE5K,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAClF,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAC7I,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEpF,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,4CAA4C;AAC5C,wBAAgB,sBAAsB,IAAI,YAAY,CAAC,QAAQ,CAAC,CAuB/D;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAI9B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAM,GAAG,YAAY,CAE7E"}
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { csvNodes } from './csv-nodes.js';
|
|
|
11
11
|
import { documentsNodes } from './documents-nodes.js';
|
|
12
12
|
import { elementNodes } from './element-nodes.js';
|
|
13
13
|
import { httpRequestNode } from './http-request-node.js';
|
|
14
|
+
import { idsNodes } from './ids-nodes.js';
|
|
14
15
|
import { modelNodes } from './model-nodes.js';
|
|
15
16
|
import { openModelNode } from './open-model-node.js';
|
|
16
17
|
import { scriptListNode, scriptNode } from './script-node.js';
|
|
@@ -19,6 +20,8 @@ import { tableNodes } from './table-nodes.js';
|
|
|
19
20
|
import { viewerNodes } from './viewer-nodes.js';
|
|
20
21
|
import { writeNodes } from './write-nodes.js';
|
|
21
22
|
import { xlsxNodes } from './xlsx-nodes.js';
|
|
23
|
+
import { sessionNodes } from './session-nodes.js';
|
|
24
|
+
export { isModelSelector, parseTagRules, parseCheckJobs, matchesFilename, AUTOMATION_FEATURES } from './session-contracts.js';
|
|
22
25
|
export { requireCapability, toRef, toSdkRef, resolveByGlobalId, rememberGlobalId, forgetGlobalId, invalidateGlobalIdIndex } from './host.js';
|
|
23
26
|
export { columnTypeOf, VALUE_TYPE_BY_COLUMN_TYPE } from './table-nodes.js';
|
|
24
27
|
export { readXlsxTable, writeXlsxTable } from './xlsx-io.js';
|
|
@@ -40,10 +43,12 @@ export function createStandardRegistry() {
|
|
|
40
43
|
scriptListNode,
|
|
41
44
|
httpRequestNode,
|
|
42
45
|
...bcfNodes,
|
|
46
|
+
...idsNodes,
|
|
43
47
|
...apsNodes,
|
|
44
48
|
speckleReceiveNode,
|
|
45
49
|
...documentsNodes,
|
|
46
50
|
openModelNode,
|
|
51
|
+
...sessionNodes,
|
|
47
52
|
]);
|
|
48
53
|
}
|
|
49
54
|
/**
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ports.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** Port types shared by the standard nodes; re-exported by `host.ts`. */
|
|
2
|
+
export declare const ENTITY_ITEM: {
|
|
3
|
+
readonly kind: "entity";
|
|
4
|
+
readonly access: "item";
|
|
5
|
+
};
|
|
6
|
+
export declare const ENTITY_LIST: {
|
|
7
|
+
readonly kind: "entity";
|
|
8
|
+
readonly access: "list";
|
|
9
|
+
};
|
|
10
|
+
export declare const ENTITY_GROUP: {
|
|
11
|
+
readonly kind: "entity";
|
|
12
|
+
readonly access: "group";
|
|
13
|
+
};
|
|
14
|
+
export declare const SCALAR_ITEM: {
|
|
15
|
+
readonly kind: "scalar";
|
|
16
|
+
readonly access: "item";
|
|
17
|
+
};
|
|
18
|
+
export declare const SCALAR_LIST: {
|
|
19
|
+
readonly kind: "scalar";
|
|
20
|
+
readonly access: "list";
|
|
21
|
+
};
|
|
22
|
+
export declare const TABLE_ITEM: {
|
|
23
|
+
readonly kind: "table";
|
|
24
|
+
readonly access: "item";
|
|
25
|
+
};
|
|
26
|
+
export declare const ANY_ITEM: {
|
|
27
|
+
readonly kind: "any";
|
|
28
|
+
readonly access: "item";
|
|
29
|
+
};
|
|
30
|
+
export declare const ANY_LIST: {
|
|
31
|
+
readonly kind: "any";
|
|
32
|
+
readonly access: "list";
|
|
33
|
+
};
|
|
34
|
+
export declare const ANY_GROUP: {
|
|
35
|
+
readonly kind: "any";
|
|
36
|
+
readonly access: "group";
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=ports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"AAIA,yEAAyE;AAEzE,eAAO,MAAM,WAAW;;;CAA8C,CAAC;AACvE,eAAO,MAAM,WAAW;;;CAA8C,CAAC;AACvE,eAAO,MAAM,YAAY;;;CAA+C,CAAC;AACzE,eAAO,MAAM,WAAW;;;CAA8C,CAAC;AACvE,eAAO,MAAM,WAAW;;;CAA8C,CAAC;AACvE,eAAO,MAAM,UAAU;;;CAA6C,CAAC;AACrE,eAAO,MAAM,QAAQ;;;CAA2C,CAAC;AACjE,eAAO,MAAM,QAAQ;;;CAA2C,CAAC;AACjE,eAAO,MAAM,SAAS;;;CAA4C,CAAC"}
|
package/dist/ports.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
/** Port types shared by the standard nodes; re-exported by `host.ts`. */
|
|
5
|
+
export const ENTITY_ITEM = { kind: 'entity', access: 'item' };
|
|
6
|
+
export const ENTITY_LIST = { kind: 'entity', access: 'list' };
|
|
7
|
+
export const ENTITY_GROUP = { kind: 'entity', access: 'group' };
|
|
8
|
+
export const SCALAR_ITEM = { kind: 'scalar', access: 'item' };
|
|
9
|
+
export const SCALAR_LIST = { kind: 'scalar', access: 'list' };
|
|
10
|
+
export const TABLE_ITEM = { kind: 'table', access: 'item' };
|
|
11
|
+
export const ANY_ITEM = { kind: 'any', access: 'item' };
|
|
12
|
+
export const ANY_LIST = { kind: 'any', access: 'list' };
|
|
13
|
+
export const ANY_GROUP = { kind: 'any', access: 'group' };
|
|
14
|
+
//# sourceMappingURL=ports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,yEAAyE;AAEzE,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAW,CAAC;AACvE,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAW,CAAC;AACvE,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAW,CAAC;AACzE,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAW,CAAC;AACvE,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAW,CAAC;AACvE,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAW,CAAC;AACrE,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAW,CAAC;AACjE,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAW,CAAC;AACjE,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAW,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/** Portable configurations only. Files and native reports belong to the host. */
|
|
2
|
+
export type ModelSelector = {
|
|
3
|
+
readonly kind: 'slot';
|
|
4
|
+
readonly slotId: string;
|
|
5
|
+
} | {
|
|
6
|
+
readonly kind: 'filename';
|
|
7
|
+
readonly filename: string;
|
|
8
|
+
} | {
|
|
9
|
+
readonly kind: 'tagName';
|
|
10
|
+
readonly tagName: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function isModelSelector(v: unknown): v is ModelSelector;
|
|
13
|
+
export interface SessionModel {
|
|
14
|
+
readonly modelId: string;
|
|
15
|
+
readonly slotId: string;
|
|
16
|
+
readonly filename: string;
|
|
17
|
+
readonly sourceIdentity?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SessionModels {
|
|
20
|
+
readonly runId: string;
|
|
21
|
+
readonly models: readonly SessionModel[];
|
|
22
|
+
}
|
|
23
|
+
export interface FilenameTagRule {
|
|
24
|
+
readonly operator: 'equals' | 'contains' | 'startsWith' | 'endsWith' | 'glob';
|
|
25
|
+
readonly pattern: string;
|
|
26
|
+
readonly caseSensitive?: boolean;
|
|
27
|
+
readonly tags: readonly string[];
|
|
28
|
+
}
|
|
29
|
+
export type ResourceSource = {
|
|
30
|
+
readonly kind: 'embedded';
|
|
31
|
+
readonly value: unknown;
|
|
32
|
+
readonly name?: string;
|
|
33
|
+
} | {
|
|
34
|
+
readonly kind: 'slot';
|
|
35
|
+
readonly slotId: string;
|
|
36
|
+
readonly filename?: string;
|
|
37
|
+
};
|
|
38
|
+
export interface CheckJob {
|
|
39
|
+
readonly id: string;
|
|
40
|
+
readonly enabled: boolean;
|
|
41
|
+
readonly source: ResourceSource;
|
|
42
|
+
readonly targets?: readonly ModelSelector[];
|
|
43
|
+
readonly tagBindings?: Readonly<Record<string, string>>;
|
|
44
|
+
}
|
|
45
|
+
export interface DocumentMapping {
|
|
46
|
+
readonly blockId: string;
|
|
47
|
+
readonly jobId: string;
|
|
48
|
+
readonly resultId?: string;
|
|
49
|
+
}
|
|
50
|
+
/** Each service checks grants and run ownership again at the host boundary. */
|
|
51
|
+
export interface SessionAutomationHost {
|
|
52
|
+
loadModels(files: unknown, selectors: unknown, signal?: AbortSignal): Promise<SessionModels>;
|
|
53
|
+
assignTags(models: unknown, rules: unknown, signal?: AbortSignal): Promise<SessionModels>;
|
|
54
|
+
validate(models: unknown, jobs: unknown, files: unknown, signal?: AbortSignal): Promise<string>;
|
|
55
|
+
compare(models: unknown, jobs: unknown, files: unknown, signal?: AbortSignal): Promise<string>;
|
|
56
|
+
importComparisons(files: unknown, signal?: AbortSignal): Promise<string>;
|
|
57
|
+
buildDocument(validation: unknown, comparisons: unknown, historical: unknown, config: unknown, signal?: AbortSignal): Promise<string>;
|
|
58
|
+
exportPdf(document: unknown, signal?: AbortSignal): Promise<string>;
|
|
59
|
+
}
|
|
60
|
+
export declare const AUTOMATION_FEATURES: readonly ["sessionModels", "modelTags", "validationChecks", "comparisonChecks", "comparisonReports", "reportDocuments", "pdfArtifacts"];
|
|
61
|
+
export declare function parseTagRules(value: unknown): readonly FilenameTagRule[];
|
|
62
|
+
export declare function parseCheckJobs(value: unknown): readonly CheckJob[];
|
|
63
|
+
/** Linear wildcard matcher with bounded input, avoiding attacker-supplied regex. */
|
|
64
|
+
export declare function matchesFilename(filename: string, rule: FilenameTagRule): boolean;
|
|
65
|
+
//# sourceMappingURL=session-contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-contracts.d.ts","sourceRoot":"","sources":["../src/session-contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
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 isRecord = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
5
|
+
const nonempty = (v) => typeof v === 'string' && v.trim().length > 0;
|
|
6
|
+
export function isModelSelector(v) {
|
|
7
|
+
if (!isRecord(v))
|
|
8
|
+
return false;
|
|
9
|
+
if (v.kind === 'slot')
|
|
10
|
+
return nonempty(v.slotId);
|
|
11
|
+
if (v.kind === 'filename')
|
|
12
|
+
return nonempty(v.filename);
|
|
13
|
+
if (v.kind === 'tagName')
|
|
14
|
+
return nonempty(v.tagName);
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
export const AUTOMATION_FEATURES = ['sessionModels', 'modelTags', 'validationChecks',
|
|
18
|
+
'comparisonChecks', 'comparisonReports', 'reportDocuments', 'pdfArtifacts'];
|
|
19
|
+
export function parseTagRules(value) {
|
|
20
|
+
if (!Array.isArray(value) || value.length > 100)
|
|
21
|
+
throw new Error('Tag rules must be an array of at most 100 entries');
|
|
22
|
+
return value.map((r) => {
|
|
23
|
+
if (!isRecord(r) || typeof r.operator !== 'string' || !['equals', 'contains', 'startsWith', 'endsWith', 'glob'].includes(r.operator)
|
|
24
|
+
|| !nonempty(r.pattern) || r.pattern.length > 1000 || !Array.isArray(r.tags)
|
|
25
|
+
|| r.tags.length === 0 || !r.tags.every(nonempty)
|
|
26
|
+
|| (r.caseSensitive !== undefined && typeof r.caseSensitive !== 'boolean'))
|
|
27
|
+
throw new Error('Invalid filename tag rule');
|
|
28
|
+
return r;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export function parseCheckJobs(value) {
|
|
32
|
+
if (!Array.isArray(value) || value.length > 100)
|
|
33
|
+
throw new Error('Checks must be an array of at most 100 jobs');
|
|
34
|
+
const ids = new Set();
|
|
35
|
+
return value.map((j) => {
|
|
36
|
+
if (!isRecord(j) || !nonempty(j.id) || ids.has(j.id) || typeof j.enabled !== 'boolean'
|
|
37
|
+
|| !isRecord(j.source))
|
|
38
|
+
throw new Error('Each check needs a unique ID, enabled flag and source');
|
|
39
|
+
const s = j.source;
|
|
40
|
+
if (!(s.kind === 'embedded' && 'value' in s) && !(s.kind === 'slot' && nonempty(s.slotId)))
|
|
41
|
+
throw new Error(`Invalid source for ${j.id}`);
|
|
42
|
+
if (s.kind === 'embedded' && s.name !== undefined && !nonempty(s.name))
|
|
43
|
+
throw new Error(`Invalid name for ${j.id}`);
|
|
44
|
+
if (s.filename !== undefined && !nonempty(s.filename))
|
|
45
|
+
throw new Error(`Invalid filename for ${j.id}`);
|
|
46
|
+
if (j.targets !== undefined && (!Array.isArray(j.targets) || !j.targets.every(isModelSelector)))
|
|
47
|
+
throw new Error(`Invalid targets for ${j.id}`);
|
|
48
|
+
if (j.tagBindings !== undefined && (!isRecord(j.tagBindings) || !Object.values(j.tagBindings).every(nonempty)))
|
|
49
|
+
throw new Error(`Invalid tag bindings for ${j.id}`);
|
|
50
|
+
ids.add(j.id);
|
|
51
|
+
return j;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/** Linear wildcard matcher with bounded input, avoiding attacker-supplied regex. */
|
|
55
|
+
export function matchesFilename(filename, rule) {
|
|
56
|
+
const value = rule.caseSensitive ? filename : filename.toLowerCase();
|
|
57
|
+
const pattern = rule.caseSensitive ? rule.pattern : rule.pattern.toLowerCase();
|
|
58
|
+
switch (rule.operator) {
|
|
59
|
+
case 'equals': return value === pattern;
|
|
60
|
+
case 'contains': return value.includes(pattern);
|
|
61
|
+
case 'startsWith': return value.startsWith(pattern);
|
|
62
|
+
case 'endsWith': return value.endsWith(pattern);
|
|
63
|
+
case 'glob': {
|
|
64
|
+
let i = 0, p = 0, star = -1, retry = 0;
|
|
65
|
+
while (i < value.length) {
|
|
66
|
+
if (pattern[p] === '?' || pattern[p] === value[i]) {
|
|
67
|
+
i++;
|
|
68
|
+
p++;
|
|
69
|
+
}
|
|
70
|
+
else if (pattern[p] === '*') {
|
|
71
|
+
star = p++;
|
|
72
|
+
retry = i;
|
|
73
|
+
}
|
|
74
|
+
else if (star >= 0) {
|
|
75
|
+
p = star + 1;
|
|
76
|
+
i = ++retry;
|
|
77
|
+
}
|
|
78
|
+
else
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
while (pattern[p] === '*')
|
|
82
|
+
p++;
|
|
83
|
+
return p === pattern.length;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=session-contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-contracts.js","sourceRoot":"","sources":["../src/session-contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-nodes.d.ts","sourceRoot":"","sources":["../src/session-nodes.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4C,KAAK,WAAW,EAAY,MAAM,WAAW,CAAC;AAajG,eAAO,MAAM,YAAY,EAAE,WAAW,EAkDrC,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
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 { ANY_ITEM, SCALAR_ITEM, requireCapability } from './host.js';
|
|
5
|
+
function services(ctx, grants) {
|
|
6
|
+
for (const grant of grants)
|
|
7
|
+
requireCapability(ctx, grant);
|
|
8
|
+
ctx.signal?.throwIfAborted();
|
|
9
|
+
if (!ctx.host.automation)
|
|
10
|
+
throw new Error('This host does not provide session automation');
|
|
11
|
+
return ctx.host.automation;
|
|
12
|
+
}
|
|
13
|
+
const files = { name: 'files', kind: 'json', default: {} };
|
|
14
|
+
const jobs = { name: 'jobs', kind: 'json', default: [] };
|
|
15
|
+
const optionalToken = (name) => ({ name, type: SCALAR_ITEM, optional: true, nullable: true });
|
|
16
|
+
export const sessionNodes = [
|
|
17
|
+
{
|
|
18
|
+
type: 'session.loadModels', title: 'Load local models', category: 'session',
|
|
19
|
+
doc: 'Load selected local IFC files, or explicitly bind loaded models, through the canonical loader.',
|
|
20
|
+
inputs: [], outputs: [{ name: 'models', type: ANY_ITEM }],
|
|
21
|
+
params: [files, { name: 'selectors', kind: 'json', default: [] }],
|
|
22
|
+
capabilities: ['model.create'], requires: { backend: ['sessionModels'] }, writes: 'model', volatile: true,
|
|
23
|
+
run: async (ctx, _i, p) => ({ models: await services(ctx, ['model.create']).loadModels(p.files, p.selectors, ctx.signal) }),
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
type: 'session.assignModelTags', title: 'Assign filename tags', category: 'session',
|
|
27
|
+
inputs: [{ name: 'models', type: ANY_ITEM }], outputs: [{ name: 'models', type: ANY_ITEM }],
|
|
28
|
+
params: [{ name: 'rules', kind: 'json', default: [] }],
|
|
29
|
+
capabilities: ['storage.write:modelTags'], requires: { backend: ['modelTags'] }, writes: 'model', volatile: true,
|
|
30
|
+
run: async (ctx, i, p) => ({ models: await services(ctx, ['storage.write:modelTags']).assignTags(i.models, p.rules, ctx.signal) }),
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
type: 'validation.runChecks', title: 'Run validation checks', category: 'session',
|
|
34
|
+
inputs: [{ name: 'models', type: ANY_ITEM }], outputs: [{ name: 'reports', type: SCALAR_ITEM }],
|
|
35
|
+
params: [jobs, files], capabilities: ['model.read', 'storage.write:validationReports'],
|
|
36
|
+
requires: { backend: ['validationChecks'] }, reads: 'model', volatile: true,
|
|
37
|
+
run: async (ctx, i, p) => ({ reports: await services(ctx, ['model.read', 'storage.write:validationReports']).validate(i.models, p.jobs, p.files, ctx.signal) }),
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: 'comparison.runChecks', title: 'Run comparison recipes', category: 'session',
|
|
41
|
+
inputs: [{ name: 'models', type: ANY_ITEM }], outputs: [{ name: 'reports', type: SCALAR_ITEM }],
|
|
42
|
+
params: [jobs, files], capabilities: ['model.read', 'storage.write:savedComparisons'],
|
|
43
|
+
requires: { backend: ['comparisonChecks'] }, reads: 'model', volatile: true,
|
|
44
|
+
run: async (ctx, i, p) => ({ reports: await services(ctx, ['model.read', 'storage.write:savedComparisons']).compare(i.models, p.jobs, p.files, ctx.signal) }),
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'report.importComparisons', title: 'Import comparison reports', category: 'report',
|
|
48
|
+
inputs: [], outputs: [{ name: 'reports', type: SCALAR_ITEM }], params: [files],
|
|
49
|
+
capabilities: ['storage.write:savedComparisons'], requires: { backend: ['comparisonReports'] }, volatile: true,
|
|
50
|
+
run: async (ctx, _i, p) => ({ reports: await services(ctx, ['storage.write:savedComparisons']).importComparisons(p.files, ctx.signal) }),
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: 'report.buildDocument', title: 'Build report document', category: 'report',
|
|
54
|
+
inputs: [optionalToken('validation'), optionalToken('comparisons'), optionalToken('historical')],
|
|
55
|
+
outputs: [{ name: 'document', type: SCALAR_ITEM }],
|
|
56
|
+
params: [{ name: 'config', kind: 'json', default: {} }],
|
|
57
|
+
capabilities: ['storage.write:documents'], requires: { backend: ['reportDocuments'] }, volatile: true,
|
|
58
|
+
run: async (ctx, i, p) => ({ document: await services(ctx, ['storage.write:documents']).buildDocument(i.validation, i.comparisons, i.historical, p.config, ctx.signal) }),
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
type: 'report.exportPdf', title: 'Generate report PDF', category: 'report',
|
|
62
|
+
inputs: [{ name: 'document', type: SCALAR_ITEM }], outputs: [{ name: 'artifact', type: SCALAR_ITEM }], params: [],
|
|
63
|
+
capabilities: ['export.create:pdf'], requires: { backend: ['pdfArtifacts'] }, volatile: true,
|
|
64
|
+
run: async (ctx, i) => ({ artifact: await services(ctx, ['export.create:pdf']).exportPdf(i.document, ctx.signal) }),
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
//# sourceMappingURL=session-nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-nodes.js","sourceRoot":"","sources":["../src/session-nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
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;AAiBhH,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAoC1D"}
|
package/dist/speckle/url.js
CHANGED
|
@@ -3,7 +3,15 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
const SEGMENT = /^[A-Za-z0-9_-]+$/;
|
|
5
5
|
function segment(value, what, url) {
|
|
6
|
-
|
|
6
|
+
let v;
|
|
7
|
+
try {
|
|
8
|
+
v = value === undefined ? '' : decodeURIComponent(value);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
// A malformed percent-escape is not a usable id; refuse it by name below
|
|
12
|
+
// rather than letting a bare URIError escape the parser's contract.
|
|
13
|
+
v = '';
|
|
14
|
+
}
|
|
7
15
|
if (!SEGMENT.test(v))
|
|
8
16
|
throw new Error(`speckle.receive: "${url}" has no usable ${what}`);
|
|
9
17
|
return v;
|
package/dist/speckle/url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/speckle/url.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAiC/D,MAAM,OAAO,GAAG,kBAAkB,CAAC;AAEnC,SAAS,OAAO,CAAC,KAAyB,EAAE,IAAY,EAAE,GAAW;IACnE,
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/speckle/url.ts"],"names":[],"mappings":"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"}
|