@ifc-lite/sdk 9.5.0 → 9.6.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 +28 -16
- package/dist/cost-reference-scan.d.ts.map +1 -1
- package/dist/cost-reference-scan.js +10 -9
- package/dist/cost-reference-scan.js.map +1 -1
- package/dist/headless/align-backend.d.ts +5 -0
- package/dist/headless/align-backend.d.ts.map +1 -0
- package/dist/headless/align-backend.js +15 -0
- package/dist/headless/align-backend.js.map +1 -0
- package/dist/headless/authored-attribute-value.d.ts +3 -0
- package/dist/headless/authored-attribute-value.d.ts.map +1 -0
- package/dist/headless/authored-attribute-value.js +34 -0
- package/dist/headless/authored-attribute-value.js.map +1 -0
- package/dist/headless/backend-query-relationships.d.ts +5 -0
- package/dist/headless/backend-query-relationships.d.ts.map +1 -0
- package/dist/headless/backend-query-relationships.js +55 -0
- package/dist/headless/backend-query-relationships.js.map +1 -0
- package/dist/headless/backend-query.d.ts +20 -0
- package/dist/headless/backend-query.d.ts.map +1 -0
- package/dist/headless/backend-query.js +359 -0
- package/dist/headless/backend-query.js.map +1 -0
- package/dist/headless/backend.d.ts +80 -0
- package/dist/headless/backend.d.ts.map +1 -0
- package/dist/headless/backend.js +317 -0
- package/dist/headless/backend.js.map +1 -0
- package/dist/headless/capabilities.d.ts +22 -0
- package/dist/headless/capabilities.d.ts.map +1 -0
- package/dist/headless/capabilities.js +52 -0
- package/dist/headless/capabilities.js.map +1 -0
- package/dist/headless/effective-entity-membership.d.ts +8 -0
- package/dist/headless/effective-entity-membership.d.ts.map +1 -0
- package/dist/headless/effective-entity-membership.js +23 -0
- package/dist/headless/effective-entity-membership.js.map +1 -0
- package/dist/headless/headless-backend-cost-store.d.ts +14 -0
- package/dist/headless/headless-backend-cost-store.d.ts.map +1 -0
- package/dist/headless/headless-backend-cost-store.js +18 -0
- package/dist/headless/headless-backend-cost-store.js.map +1 -0
- package/dist/headless/headless-backend-modelling.d.ts +50 -0
- package/dist/headless/headless-backend-modelling.d.ts.map +1 -0
- package/dist/headless/headless-backend-modelling.js +128 -0
- package/dist/headless/headless-backend-modelling.js.map +1 -0
- package/dist/headless/headless-backend-room.d.ts +9 -0
- package/dist/headless/headless-backend-room.d.ts.map +1 -0
- package/dist/headless/headless-backend-room.js +22 -0
- package/dist/headless/headless-backend-room.js.map +1 -0
- package/dist/headless/headless-backend-store-stubs.d.ts +13 -0
- package/dist/headless/headless-backend-store-stubs.d.ts.map +1 -0
- package/dist/headless/headless-backend-store-stubs.js +9 -0
- package/dist/headless/headless-backend-store-stubs.js.map +1 -0
- package/dist/headless/headless-backend-store.d.ts +8 -0
- package/dist/headless/headless-backend-store.d.ts.map +1 -0
- package/dist/headless/headless-backend-store.js +42 -0
- package/dist/headless/headless-backend-store.js.map +1 -0
- package/dist/headless/headless-backend-structural-store.d.ts +21 -0
- package/dist/headless/headless-backend-structural-store.d.ts.map +1 -0
- package/dist/headless/headless-backend-structural-store.js +18 -0
- package/dist/headless/headless-backend-structural-store.js.map +1 -0
- package/dist/headless/headless-backend-structural.d.ts +4 -0
- package/dist/headless/headless-backend-structural.d.ts.map +1 -0
- package/dist/headless/headless-backend-structural.js +24 -0
- package/dist/headless/headless-backend-structural.js.map +1 -0
- package/dist/headless/mutation-base.d.ts +5 -0
- package/dist/headless/mutation-base.d.ts.map +1 -0
- package/dist/headless/mutation-base.js +31 -0
- package/dist/headless/mutation-base.js.map +1 -0
- package/dist/headless/options.d.ts +11 -0
- package/dist/headless/options.d.ts.map +1 -0
- package/dist/headless/options.js +13 -0
- package/dist/headless/options.js.map +1 -0
- package/dist/headless/overlay.d.ts +170 -0
- package/dist/headless/overlay.d.ts.map +1 -0
- package/dist/headless/overlay.js +285 -0
- package/dist/headless/overlay.js.map +1 -0
- package/dist/headless/schema-tables.d.ts +42 -0
- package/dist/headless/schema-tables.d.ts.map +1 -0
- package/dist/headless/schema-tables.js +77 -0
- package/dist/headless/schema-tables.js.map +1 -0
- package/dist/headless/session.d.ts +23 -0
- package/dist/headless/session.d.ts.map +1 -0
- package/dist/headless/session.js +125 -0
- package/dist/headless/session.js.map +1 -0
- package/dist/headless.d.ts +13 -0
- package/dist/headless.d.ts.map +1 -0
- package/dist/headless.js +13 -0
- package/dist/headless.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/namespaces/bcf-viewpoint.d.ts +19 -0
- package/dist/namespaces/bcf-viewpoint.d.ts.map +1 -1
- package/dist/namespaces/bcf-viewpoint.js.map +1 -1
- package/dist/namespaces/bcf.d.ts.map +1 -1
- package/dist/namespaces/bcf.js +17 -0
- package/dist/namespaces/bcf.js.map +1 -1
- package/dist/namespaces/viewer.d.ts +20 -1
- package/dist/namespaces/viewer.d.ts.map +1 -1
- package/dist/namespaces/viewer.js +40 -0
- package/dist/namespaces/viewer.js.map +1 -1
- package/dist/section-plane.d.ts +12 -0
- package/dist/section-plane.d.ts.map +1 -0
- package/dist/section-plane.js +5 -0
- package/dist/section-plane.js.map +1 -0
- package/dist/types.d.ts +6 -6
- package/dist/types.d.ts.map +1 -1
- package/package.json +20 -15
|
@@ -0,0 +1,128 @@
|
|
|
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
|
+
/** Ordinary creation, placement and wall joins use the shared SDK factories (#6232 D5).
|
|
5
|
+
* Shared compound recording preserves every earlier overlay record for undo. */
|
|
6
|
+
import { createModellingStoreBackend, createOrdinaryStoreBackend, resolveLiveOwnerHistoryId } from '../index.js';
|
|
7
|
+
import { recordCompoundMutation, StoreEditor } from '@ifc-lite/mutations';
|
|
8
|
+
export function createRecordedModellingBackend(resolve) {
|
|
9
|
+
function record(modelId, edit, authoring = false) {
|
|
10
|
+
const model = resolve(modelId);
|
|
11
|
+
return recordCompoundMutation(model.mutationView, draft => {
|
|
12
|
+
const resolveDraft = () => {
|
|
13
|
+
const editor = new StoreEditor(model.store, draft);
|
|
14
|
+
return { ...model, mutationView: draft, editor,
|
|
15
|
+
// Only type/material authoring needs this schema-required reference.
|
|
16
|
+
// Ordinary and hosted creation keep their existing anchor policy.
|
|
17
|
+
ownerHistoryId: authoring ? resolveLiveOwnerHistoryId(model.store, editor, draft) : model.ownerHistoryId,
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
return edit({ ...createModellingStoreBackend(resolveDraft), ...createOrdinaryStoreBackend(resolveDraft) });
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
transformElements: (...args) => record(args[0], methods => {
|
|
25
|
+
if (!methods.transformElements)
|
|
26
|
+
throw new Error('Missing transformElements capability');
|
|
27
|
+
return methods.transformElements(...args);
|
|
28
|
+
}),
|
|
29
|
+
setElementSize: (...args) => record(args[0].modelId, methods => {
|
|
30
|
+
if (!methods.setElementSize)
|
|
31
|
+
throw new Error('Missing setElementSize capability');
|
|
32
|
+
return methods.setElementSize(...args);
|
|
33
|
+
}),
|
|
34
|
+
resizeWall: (...args) => record(args[0].modelId, methods => {
|
|
35
|
+
if (!methods.resizeWall)
|
|
36
|
+
throw new Error('Missing resizeWall capability');
|
|
37
|
+
return methods.resizeWall(...args);
|
|
38
|
+
}),
|
|
39
|
+
splitElements: (...args) => record(args[0], methods => {
|
|
40
|
+
if (!methods.splitElements)
|
|
41
|
+
throw new Error('Missing splitElements capability');
|
|
42
|
+
return methods.splitElements(...args);
|
|
43
|
+
}),
|
|
44
|
+
trimExtendElement: (...args) => record(args[0].modelId, methods => {
|
|
45
|
+
if (!methods.trimExtendElement)
|
|
46
|
+
throw new Error('Missing trimExtendElement capability');
|
|
47
|
+
return methods.trimExtendElement(...args);
|
|
48
|
+
}),
|
|
49
|
+
copyElements: (...args) => record(args[0], methods => {
|
|
50
|
+
if (!methods.copyElements)
|
|
51
|
+
throw new Error('Missing copy capability');
|
|
52
|
+
return methods.copyElements(...args);
|
|
53
|
+
}),
|
|
54
|
+
duplicateElement: (...args) => record(args[0].modelId, methods => {
|
|
55
|
+
if (!methods.duplicateElement)
|
|
56
|
+
throw new Error('Missing duplicate capability');
|
|
57
|
+
return methods.duplicateElement(...args);
|
|
58
|
+
}),
|
|
59
|
+
arrayElements: (...args) => record(args[0], methods => {
|
|
60
|
+
if (!methods.arrayElements)
|
|
61
|
+
throw new Error('Missing array capability');
|
|
62
|
+
return methods.arrayElements(...args);
|
|
63
|
+
}),
|
|
64
|
+
editHostedElement: (...args) => record(args[0].modelId, methods => {
|
|
65
|
+
if (!methods.editHostedElement)
|
|
66
|
+
throw new Error('Missing hosted edit capability');
|
|
67
|
+
return methods.editHostedElement(...args);
|
|
68
|
+
}),
|
|
69
|
+
addCurtainWall: (...args) => record(args[0], methods => {
|
|
70
|
+
if (!methods.addCurtainWall)
|
|
71
|
+
throw new Error('Missing curtain wall capability');
|
|
72
|
+
return methods.addCurtainWall(...args);
|
|
73
|
+
}),
|
|
74
|
+
addGrid: (...args) => record(args[0], methods => {
|
|
75
|
+
if (!methods.addGrid)
|
|
76
|
+
throw new Error('Missing grid capability');
|
|
77
|
+
return methods.addGrid(...args);
|
|
78
|
+
}),
|
|
79
|
+
addColumnOnGrid: (...args) => record(args[0], methods => {
|
|
80
|
+
if (!methods.addColumnOnGrid)
|
|
81
|
+
throw new Error('Missing grid column capability');
|
|
82
|
+
return methods.addColumnOnGrid(...args);
|
|
83
|
+
}),
|
|
84
|
+
replaceElement: (...args) => record(args[0].modelId, methods => {
|
|
85
|
+
const replace = methods.replaceElement;
|
|
86
|
+
if (!replace)
|
|
87
|
+
throw new Error('bim.store.replaceElement is not supported by this backend');
|
|
88
|
+
return replace.call(methods, ...args);
|
|
89
|
+
}),
|
|
90
|
+
removeStair: (ref) => record(ref.modelId, methods => {
|
|
91
|
+
const remove = methods.removeStair;
|
|
92
|
+
if (!remove)
|
|
93
|
+
throw new Error('bim.store.removeStair is not supported by this backend');
|
|
94
|
+
return remove(ref);
|
|
95
|
+
}),
|
|
96
|
+
addStair: (...args) => record(args[0], methods => {
|
|
97
|
+
const create = methods.addStair;
|
|
98
|
+
if (!create)
|
|
99
|
+
throw new Error('bim.store.addStair is not supported by this backend');
|
|
100
|
+
return create(...args);
|
|
101
|
+
}),
|
|
102
|
+
addRailing: (...args) => record(args[0], methods => {
|
|
103
|
+
const create = methods.addRailing;
|
|
104
|
+
if (!create)
|
|
105
|
+
throw new Error('bim.store.addRailing is not supported by this backend');
|
|
106
|
+
return create(...args);
|
|
107
|
+
}),
|
|
108
|
+
addElementType: (...args) => record(args[0], methods => methods.addElementType(...args), true),
|
|
109
|
+
assignType: (...args) => record(args[0], methods => methods.assignType(...args), true),
|
|
110
|
+
addMaterial: (...args) => record(args[0], methods => methods.addMaterial(...args), true),
|
|
111
|
+
addMaterialLayerSet: (...args) => record(args[0], methods => methods.addMaterialLayerSet(...args), true),
|
|
112
|
+
addMaterialLayerSetUsage: (...args) => record(args[0], methods => methods.addMaterialLayerSetUsage(...args), true),
|
|
113
|
+
assignMaterial: (...args) => record(args[0], methods => methods.assignMaterial(...args), true),
|
|
114
|
+
addOpening: (...args) => record(args[0], methods => methods.addOpening(...args)),
|
|
115
|
+
addHostedDoor: (...args) => record(args[0], methods => methods.addHostedDoor(...args)),
|
|
116
|
+
addHostedWindow: (...args) => record(args[0], methods => methods.addHostedWindow(...args)),
|
|
117
|
+
joinWalls: (...args) => record(args[0], methods => methods.joinWalls(...args)),
|
|
118
|
+
addWall: (...args) => record(args[0], methods => methods.addWall(...args)),
|
|
119
|
+
addColumn: (...args) => record(args[0], methods => methods.addColumn(...args)),
|
|
120
|
+
addSlab: (...args) => record(args[0], methods => methods.addSlab(...args)),
|
|
121
|
+
addBeam: (...args) => record(args[0], methods => methods.addBeam(...args)),
|
|
122
|
+
addSpace: (...args) => record(args[0], methods => methods.addSpace(...args)),
|
|
123
|
+
addRoof: (...args) => record(args[0], methods => methods.addRoof(...args)),
|
|
124
|
+
addPlate: (...args) => record(args[0], methods => methods.addPlate(...args)),
|
|
125
|
+
addMember: (...args) => record(args[0], methods => methods.addMember(...args)),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=headless-backend-modelling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-modelling.js","sourceRoot":"","sources":["../../src/headless/headless-backend-modelling.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ModellingStoreModelResolver } from '../index.js';
|
|
2
|
+
import type { HeadlessBackendOptions } from './options.js';
|
|
3
|
+
/** Native preparation finishes before the synchronous compound commit begins. */
|
|
4
|
+
export declare function createHeadlessRoomBackend(resolve: ModellingStoreModelResolver, native: NonNullable<HeadlessBackendOptions['roomGeometry']>): {
|
|
5
|
+
disposeRooms(): void;
|
|
6
|
+
prepareRoomCommand: (modelId: string, storeyId: number, command: import("../store-room-command.js").RoomCommand) => Promise<import("../store-room-command.js").PreparedRoomCommand>;
|
|
7
|
+
roomCommand(modelId: string, storeyId: number, op: import("../store-room-command.js").RoomCommand): Promise<import("../store-room-command.js").RoomCommandResult>;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=headless-backend-room.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-room.d.ts","sourceRoot":"","sources":["../../src/headless/headless-backend-room.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4B,KAAK,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAGzF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3D,iFAAiF;AACjF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,2BAA2B,EAAE,MAAM,EAAE,WAAW,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;;;;EAa1I"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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 { createRoomCommandBackend } from '../index.js';
|
|
5
|
+
import { RoomLayoutCache } from '@ifc-lite/create';
|
|
6
|
+
import { recordCompoundMutation, StoreEditor } from '@ifc-lite/mutations';
|
|
7
|
+
/** Native preparation finishes before the synchronous compound commit begins. */
|
|
8
|
+
export function createHeadlessRoomBackend(resolve, native) {
|
|
9
|
+
const rooms = createRoomCommandBackend(resolve, native.provide, {
|
|
10
|
+
layouts: new RoomLayoutCache(),
|
|
11
|
+
globalIdScopes: () => resolve().globalIdScopes ?? [],
|
|
12
|
+
historyHead: modelId => resolve(modelId).mutationView.getMutations().map(m => m.id).join('|'),
|
|
13
|
+
record: (modelId, write) => {
|
|
14
|
+
const model = resolve(modelId);
|
|
15
|
+
return recordCompoundMutation(model.mutationView, mutationView => write({
|
|
16
|
+
...model, mutationView, editor: new StoreEditor(model.store, mutationView),
|
|
17
|
+
}));
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
return { ...rooms, disposeRooms() { rooms.disposeRooms(); native.clear(); } };
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=headless-backend-room.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-room.js","sourceRoot":"","sources":["../../src/headless/headless-backend-room.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,wBAAwB,EAAoC,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAG1E,iFAAiF;AACjF,MAAM,UAAU,yBAAyB,CAAC,OAAoC,EAAE,MAA2D;IACzI,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;QAC9D,OAAO,EAAE,IAAI,eAAe,EAAE;QAC9B,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,cAAc,IAAI,EAAE;QACpD,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7F,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/B,OAAO,sBAAsB,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC;gBACtE,GAAG,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC;aAC3E,CAAC,CAAC,CAAC;QACN,CAAC;KACF,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `bim.store` authoring surfaces MCP v0.1 deliberately does not implement:
|
|
3
|
+
* cost (#4857) and structural analysis (#5167 S.1).
|
|
4
|
+
* Hosted openings, doors, windows, types and materials use the shared SDK factory (#6232 D5).
|
|
5
|
+
* Other agent flows author through `entity_create` with raw
|
|
6
|
+
* attributes, so these throw loudly rather than silently no-opping.
|
|
7
|
+
*
|
|
8
|
+
* Composed into one spread so `headless-backend.ts` gains a surface, not a
|
|
9
|
+
* line, each time another factory-backed store surface is added to the SDK.
|
|
10
|
+
*/
|
|
11
|
+
import type { CostStoreBackendMethods, StructuralStoreBackendMethods } from '../index.js';
|
|
12
|
+
export declare function unsupportedStoreAuthoring(): CostStoreBackendMethods & StructuralStoreBackendMethods;
|
|
13
|
+
//# sourceMappingURL=headless-backend-store-stubs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-store-stubs.d.ts","sourceRoot":"","sources":["../../src/headless/headless-backend-store-stubs.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,6BAA6B,EAC9B,MAAM,aAAa,CAAC;AAIrB,wBAAgB,yBAAyB,IAAI,uBAAuB,GAAG,6BAA6B,CAEnG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
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 { costStoreStubs } from './headless-backend-cost-store.js';
|
|
5
|
+
import { structuralStoreStubs } from './headless-backend-structural-store.js';
|
|
6
|
+
export function unsupportedStoreAuthoring() {
|
|
7
|
+
return { ...costStoreStubs(), ...structuralStoreStubs() };
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=headless-backend-store-stubs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-store-stubs.js","sourceRoot":"","sources":["../../src/headless/headless-backend-store-stubs.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAiB/D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,MAAM,UAAU,yBAAyB;IACvC,OAAO,EAAE,GAAG,cAAc,EAAE,EAAE,GAAG,oBAAoB,EAAE,EAAE,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { StoreBackendMethods } from '../index.js';
|
|
2
|
+
import type { StoreEditor } from '@ifc-lite/mutations';
|
|
3
|
+
import type { IfcDataStore } from '@ifc-lite/parser';
|
|
4
|
+
import { type HeadlessBackendOptions } from './options.js';
|
|
5
|
+
export declare function createHeadlessStoreAdapter(dataStore: IfcDataStore, modelId: string, get: () => StoreEditor, assertKnownModelId: (id: string) => void, getPeerScopes: () => import('@ifc-lite/create').ElementSplitOptions['globalIdScopes'], options: HeadlessBackendOptions): StoreBackendMethods & {
|
|
6
|
+
disposeRooms(): void;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=headless-backend-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-store.d.ts","sourceRoot":"","sources":["../../src/headless/headless-backend-store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAA2B,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAIpF,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,WAAW,EAAE,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EAC1G,aAAa,EAAE,MAAM,OAAO,kBAAkB,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,EACrF,OAAO,EAAE,sBAAsB,GAC9B,mBAAmB,GAAG;IAAE,YAAY,IAAI,IAAI,CAAA;CAAE,CA6BhD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
/** Store adapter kept apart from read/export adapters (#6232 D5). */
|
|
5
|
+
import { unsupportedOperation } from './capabilities.js';
|
|
6
|
+
import { unsupportedStoreAuthoring } from './headless-backend-store-stubs.js';
|
|
7
|
+
import { createHeadlessAlignBackend } from './align-backend.js';
|
|
8
|
+
import { resolvedGeometryOptions } from './options.js';
|
|
9
|
+
import { createHeadlessRoomBackend } from './headless-backend-room.js';
|
|
10
|
+
import { createRecordedModellingBackend } from './headless-backend-modelling.js';
|
|
11
|
+
export function createHeadlessStoreAdapter(dataStore, modelId, get, assertKnownModelId, getPeerScopes, options) {
|
|
12
|
+
const resolveModel = (requestedModelId) => {
|
|
13
|
+
if (requestedModelId !== undefined)
|
|
14
|
+
assertKnownModelId(requestedModelId);
|
|
15
|
+
const editor = get();
|
|
16
|
+
return { modelId, store: dataStore, editor, mutationView: editor.getMutationView(), ownerHistoryId: null, globalIdScopes: getPeerScopes() };
|
|
17
|
+
};
|
|
18
|
+
const geometry = resolvedGeometryOptions(options);
|
|
19
|
+
return {
|
|
20
|
+
addEntity: (modelId, def) => {
|
|
21
|
+
// The ref carries `modelId`, and `bim.mutate.*` refuses one this
|
|
22
|
+
// backend does not answer for: echoing the caller's id back would mint
|
|
23
|
+
// a ref the next write rejects, entity already created (#3764).
|
|
24
|
+
assertKnownModelId(modelId);
|
|
25
|
+
const ref = get().addEntity(def.type, def.attributes);
|
|
26
|
+
return { modelId, expressId: ref.expressId };
|
|
27
|
+
},
|
|
28
|
+
removeEntity: (ref) => get().removeEntity(ref.expressId),
|
|
29
|
+
setPositionalAttribute: (ref, index, value) => {
|
|
30
|
+
get().setPositionalAttribute(ref.expressId, index, value);
|
|
31
|
+
},
|
|
32
|
+
// Free door/window creation remains unsupported here. Hosted fills use
|
|
33
|
+
// the canonical host-required API supplied by the recorded factory below.
|
|
34
|
+
addDoor: unsupportedOperation('store.addDoor', 'addDoor not supported in MCP v0.1; use entity_create'),
|
|
35
|
+
addWindow: unsupportedOperation('store.addWindow', 'addWindow not supported in MCP v0.1; use entity_create'),
|
|
36
|
+
...unsupportedStoreAuthoring(),
|
|
37
|
+
...createRecordedModellingBackend(resolveModel),
|
|
38
|
+
...createHeadlessRoomBackend(resolveModel, geometry.roomGeometry),
|
|
39
|
+
...createHeadlessAlignBackend(resolveModel, geometry.alignGeometry),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=headless-backend-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-store.js","sourceRoot":"","sources":["../../src/headless/headless-backend-store.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,qEAAqE;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAIzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAA+B,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AAEjF,MAAM,UAAU,0BAA0B,CACxC,SAAuB,EAAE,OAAe,EAAE,GAAsB,EAAE,kBAAwC,EAC1G,aAAqF,EACrF,OAA+B;IAE/B,MAAM,YAAY,GAAG,CAAC,gBAAyB,EAAE,EAAE;QACjD,IAAI,gBAAgB,KAAK,SAAS;YAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,CAAC;IAC9I,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO;QACL,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;YAC1B,iEAAiE;YACjE,uEAAuE;YACvE,gEAAgE;YAChE,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,UAAqD,CAAC,CAAC;YACjG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;QAC/C,CAAC;QACD,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;QACxD,sBAAsB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC5C,GAAG,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,KAA6D,CAAC,CAAC;QACpH,CAAC;QACD,uEAAuE;QACvE,0EAA0E;QAC1E,OAAO,EAAE,oBAAoB,CAAC,eAAe,EAAE,sDAAsD,CAAC;QACtG,SAAS,EAAE,oBAAoB,CAAC,iBAAiB,EAAE,wDAAwD,CAAC;QAC5G,GAAG,yBAAyB,EAAE;QAC9B,GAAG,8BAA8B,CAAC,YAAY,CAAC;QAC/C,GAAG,yBAAyB,CAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC;QACjE,GAAG,0BAA0B,CAAC,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC;KACpE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `bim.store.addStructural*` / `connectStructural*` / `assignToStructuralGroup`
|
|
3
|
+
* stubs for the MCP v0.1 headless backend (#5167 task S.1) — the same
|
|
4
|
+
* convention `headless-backend-cost-store.ts` and `headless-backend.ts`'s
|
|
5
|
+
* `addColumn`/`addWall`/etc. already use: agent flows go through
|
|
6
|
+
* `entity_create` with raw attributes rather than the high-level builders, so
|
|
7
|
+
* these throw loudly instead of silently no-opping.
|
|
8
|
+
*
|
|
9
|
+
* This is deliberately a stub, not an omission. MCP has no element-creation
|
|
10
|
+
* tool surface at all, so wiring real structural authoring here would expand
|
|
11
|
+
* v0.1's scope rather than complete S.1.
|
|
12
|
+
*
|
|
13
|
+
* Note on reads: `bim.structural` here is constructed over the parsed data
|
|
14
|
+
* store alone, so it does NOT see a structural row authored this session
|
|
15
|
+
* through `entity_create` — that row lives in the mutation overlay. An earlier
|
|
16
|
+
* revision of this comment claimed otherwise; correcting it rather than
|
|
17
|
+
* leaving a claim the code does not support (#5167 review).
|
|
18
|
+
*/
|
|
19
|
+
import type { StructuralStoreBackendMethods } from '../index.js';
|
|
20
|
+
export declare function structuralStoreStubs(): StructuralStoreBackendMethods;
|
|
21
|
+
//# sourceMappingURL=headless-backend-structural-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-structural-store.d.ts","sourceRoot":"","sources":["../../src/headless/headless-backend-structural-store.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAIjE,wBAAgB,oBAAoB,IAAI,6BAA6B,CAYpE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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 { unsupportedOperation } from './capabilities.js';
|
|
5
|
+
export function structuralStoreStubs() {
|
|
6
|
+
return {
|
|
7
|
+
addStructuralAnalysisModel: unsupportedOperation('store.addStructuralAnalysisModel', 'addStructuralAnalysisModel not supported in MCP v0.1; use entity_create'),
|
|
8
|
+
addStructuralCurveMember: unsupportedOperation('store.addStructuralCurveMember', 'addStructuralCurveMember not supported in MCP v0.1; use entity_create'),
|
|
9
|
+
addStructuralPointConnection: unsupportedOperation('store.addStructuralPointConnection', 'addStructuralPointConnection not supported in MCP v0.1; use entity_create'),
|
|
10
|
+
addStructuralLoadGroup: unsupportedOperation('store.addStructuralLoadGroup', 'addStructuralLoadGroup not supported in MCP v0.1; use entity_create'),
|
|
11
|
+
addStructuralPointAction: unsupportedOperation('store.addStructuralPointAction', 'addStructuralPointAction not supported in MCP v0.1; use entity_create'),
|
|
12
|
+
addStructuralLinearAction: unsupportedOperation('store.addStructuralLinearAction', 'addStructuralLinearAction not supported in MCP v0.1; use entity_create'),
|
|
13
|
+
connectStructuralMemberToConnection: unsupportedOperation('store.connectStructuralMemberToConnection', 'connectStructuralMemberToConnection not supported in MCP v0.1; use entity_create'),
|
|
14
|
+
connectStructuralActivityToItem: unsupportedOperation('store.connectStructuralActivityToItem', 'connectStructuralActivityToItem not supported in MCP v0.1; use entity_create'),
|
|
15
|
+
assignToStructuralGroup: unsupportedOperation('store.assignToStructuralGroup', 'assignToStructuralGroup not supported in MCP v0.1; use entity_create'),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=headless-backend-structural-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-structural-store.js","sourceRoot":"","sources":["../../src/headless/headless-backend-structural-store.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAuB/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,0BAA0B,EAAE,oBAAoB,CAAC,kCAAkC,EAAE,yEAAyE,CAAC;QAC/J,wBAAwB,EAAE,oBAAoB,CAAC,gCAAgC,EAAE,uEAAuE,CAAC;QACzJ,4BAA4B,EAAE,oBAAoB,CAAC,oCAAoC,EAAE,2EAA2E,CAAC;QACrK,sBAAsB,EAAE,oBAAoB,CAAC,8BAA8B,EAAE,qEAAqE,CAAC;QACnJ,wBAAwB,EAAE,oBAAoB,CAAC,gCAAgC,EAAE,uEAAuE,CAAC;QACzJ,yBAAyB,EAAE,oBAAoB,CAAC,iCAAiC,EAAE,wEAAwE,CAAC;QAC5J,mCAAmC,EAAE,oBAAoB,CAAC,2CAA2C,EAAE,kFAAkF,CAAC;QAC1L,+BAA+B,EAAE,oBAAoB,CAAC,uCAAuC,EAAE,8EAA8E,CAAC;QAC9K,uBAAuB,EAAE,oBAAoB,CAAC,+BAA+B,EAAE,sEAAsE,CAAC;KACvJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { StructuralBackendMethods } from '../index.js';
|
|
2
|
+
import { type IfcDataStore } from '@ifc-lite/parser';
|
|
3
|
+
export declare function createStructuralAdapter(store: IfcDataStore, assertKnownModelId: (modelId: string) => void): StructuralBackendMethods;
|
|
4
|
+
//# sourceMappingURL=headless-backend-structural.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-structural.d.ts","sourceRoot":"","sources":["../../src/headless/headless-backend-structural.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAA6B,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC5C,wBAAwB,CAgB1B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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 { extractStructuralOnDemand } from '@ifc-lite/parser';
|
|
5
|
+
export function createStructuralAdapter(store, assertKnownModelId) {
|
|
6
|
+
let cached = null;
|
|
7
|
+
const extract = (modelId) => {
|
|
8
|
+
if (modelId)
|
|
9
|
+
assertKnownModelId(modelId);
|
|
10
|
+
if (!cached)
|
|
11
|
+
cached = extractStructuralOnDemand(store);
|
|
12
|
+
return cached;
|
|
13
|
+
};
|
|
14
|
+
return {
|
|
15
|
+
data: extract,
|
|
16
|
+
analysisModels: modelId => extract(modelId).analysisModels,
|
|
17
|
+
members: modelId => extract(modelId).members,
|
|
18
|
+
connections: modelId => extract(modelId).connections,
|
|
19
|
+
activities: modelId => extract(modelId).activities,
|
|
20
|
+
loadGroups: modelId => extract(modelId).loadGroups,
|
|
21
|
+
resultGroups: modelId => extract(modelId).resultGroups,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=headless-backend-structural.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-structural.js","sourceRoot":"","sources":["../../src/headless/headless-backend-structural.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAG/D,OAAO,EAAE,yBAAyB,EAAqB,MAAM,kBAAkB,CAAC;AAEhF,MAAM,UAAU,uBAAuB,CACrC,KAAmB,EACnB,kBAA6C;IAE7C,IAAI,MAAM,GAAwD,IAAI,CAAC;IACvE,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAgD,EAAE;QACjF,IAAI,OAAO;YAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAiD,CAAC;QACvG,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,OAAO;QACL,IAAI,EAAE,OAAO;QACb,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc;QAC1D,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO;QAC5C,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW;QACpD,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU;QAClD,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU;QAClD,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY;KACvD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MutablePropertyView } from '@ifc-lite/mutations';
|
|
2
|
+
import { type IfcDataStore } from '@ifc-lite/parser';
|
|
3
|
+
/** Mutation overlays must include the full source set before rewriting it (#8056). */
|
|
4
|
+
export declare function configureSourceMutationView(store: IfcDataStore, view: MutablePropertyView): void;
|
|
5
|
+
//# sourceMappingURL=mutation-base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation-base.d.ts","sourceRoot":"","sources":["../../src/headless/mutation-base.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAE1B,sFAAsF;AACtF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAsBhG"}
|
|
@@ -0,0 +1,31 @@
|
|
|
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 { extractPropertiesOnDemand, extractQuantitiesOnDemand, extractTypeEntityOwnProperties, extractTypeEntityOwnQuantities, getInheritanceChainAcrossSchemas, } from '@ifc-lite/parser';
|
|
5
|
+
/** Mutation overlays must include the full source set before rewriting it (#8056). */
|
|
6
|
+
export function configureSourceMutationView(store, view) {
|
|
7
|
+
if (!store.source?.length)
|
|
8
|
+
return;
|
|
9
|
+
const typeClasses = new Map();
|
|
10
|
+
const isTypeObject = (id) => {
|
|
11
|
+
// @raw-entity-enumeration-ok this callback supplies the immutable source baseline; MutablePropertyView applies live edits and creations above it
|
|
12
|
+
const name = store.entityIndex.byId.get(id)?.type;
|
|
13
|
+
if (!name)
|
|
14
|
+
return false;
|
|
15
|
+
let result = typeClasses.get(name);
|
|
16
|
+
if (result === undefined) {
|
|
17
|
+
// IFC2X3 IfcWindowStyle carries HasPropertySets too; a Type suffix
|
|
18
|
+
// test misses it and incorrectly includes IfcRelDefinesByType.
|
|
19
|
+
result = getInheritanceChainAcrossSchemas(name).includes('IfcTypeObject');
|
|
20
|
+
typeClasses.set(name, result);
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
};
|
|
24
|
+
view.setOnDemandExtractor(id => isTypeObject(id)
|
|
25
|
+
? extractTypeEntityOwnProperties(store, id)
|
|
26
|
+
: extractPropertiesOnDemand(store, id));
|
|
27
|
+
view.setQuantityExtractor(id => isTypeObject(id)
|
|
28
|
+
? extractTypeEntityOwnQuantities(store, id)
|
|
29
|
+
: extractQuantitiesOnDemand(store, id));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=mutation-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation-base.js","sourceRoot":"","sources":["../../src/headless/mutation-base.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAG/D,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,8BAA8B,EAC9B,gCAAgC,GAEjC,MAAM,kBAAkB,CAAC;AAE1B,sFAAsF;AACtF,MAAM,UAAU,2BAA2B,CAAC,KAAmB,EAAE,IAAyB;IACxF,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM;QAAE,OAAO;IAClC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC/C,MAAM,YAAY,GAAG,CAAC,EAAU,EAAW,EAAE;QAC3C,iJAAiJ;QACjJ,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;QAClD,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,IAAI,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,mEAAmE;YACnE,+DAA+D;YAC/D,MAAM,GAAG,gCAAgC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAC1E,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9C,CAAC,CAAC,8BAA8B,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3C,CAAC,CAAC,yBAAyB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9C,CAAC,CAAC,8BAA8B,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3C,CAAC,CAAC,yBAAyB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AlignGeometryProvider, RoomGeometryProvider } from '../index.js';
|
|
2
|
+
export interface HeadlessBackendOptions {
|
|
3
|
+
/** Geometry preparation is supplied by a host; data-only consumers need no geometry runtime. */
|
|
4
|
+
alignGeometry?: AlignGeometryProvider;
|
|
5
|
+
roomGeometry?: {
|
|
6
|
+
provide: RoomGeometryProvider;
|
|
7
|
+
clear(): void;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export declare function resolvedGeometryOptions(options: HeadlessBackendOptions): Required<HeadlessBackendOptions>;
|
|
11
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/headless/options.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC,gGAAgG;IAChG,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,YAAY,CAAC,EAAE;QAAE,OAAO,EAAE,oBAAoB,CAAC;QAAC,KAAK,IAAI,IAAI,CAAA;KAAE,CAAC;CACjE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,CAQzG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
export function resolvedGeometryOptions(options) {
|
|
5
|
+
return {
|
|
6
|
+
alignGeometry: options.alignGeometry ?? (() => { throw new Error('Align requires a host geometry provider'); }),
|
|
7
|
+
roomGeometry: options.roomGeometry ?? {
|
|
8
|
+
provide: () => { throw new Error('Room requires a host geometry provider'); },
|
|
9
|
+
clear() { },
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/headless/options.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAU/D,MAAM,UAAU,uBAAuB,CAAC,OAA+B;IACrE,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/G,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI;YACpC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC;YAC7E,KAAK,KAA0D,CAAC;SACjE;KACF,CAAC;AACJ,CAAC"}
|