@holoscript/core 6.0.3 → 7.0.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 +40 -40
- package/dist/codebase/index.d.ts +25 -0
- package/dist/compiler/index.d.ts +82 -0
- package/dist/constants.d.ts +4 -0
- package/dist/coordinators/index.d.ts +189 -0
- package/dist/entries/interop.d.ts +9 -0
- package/dist/entries/scripting.d.ts +7 -0
- package/dist/index.d.ts +520 -19
- package/dist/paper-0c-spike/index.d.ts +29 -0
- package/dist/reconstruction/index.d.ts +78 -0
- package/dist/self-improvement/index.d.ts +0 -48
- package/dist/storage/index.d.ts +24 -0
- package/dist/tools/index.d.ts +33 -0
- package/dist/traitDocs/traitDocs.d.ts +69 -0
- package/dist/traits/index.d.ts +61 -0
- package/package.json +102 -19
- package/dist/GLTFPipeline-3KLWWUQO.cjs +0 -34
- package/dist/GLTFPipeline-LYII2ZVQ.js +0 -13
- package/dist/HoloScriptPlusParser-BZR5DELQ.js +0 -692
- package/dist/HoloScriptPlusParser-SBMYDNXO.cjs +0 -697
- package/dist/USDZExporter-MHEHXZB4.cjs +0 -709
- package/dist/USDZExporter-YA55ZS35.js +0 -707
- package/dist/chunk-26TLYBFD.js +0 -309
- package/dist/chunk-27LWW5FU.cjs +0 -410
- package/dist/chunk-2UX5LRAP.cjs +0 -833
- package/dist/chunk-32TWR3HE.js +0 -70
- package/dist/chunk-3FXV5S25.cjs +0 -633
- package/dist/chunk-3FYZOR7S.cjs +0 -69
- package/dist/chunk-3KEU5QYY.cjs +0 -175
- package/dist/chunk-4FCZDTD5.js +0 -610
- package/dist/chunk-4KJ2R7VP.cjs +0 -507
- package/dist/chunk-4SMUJFHL.js +0 -1213
- package/dist/chunk-54FHG2MX.js +0 -655
- package/dist/chunk-56IF4NTA.js +0 -56
- package/dist/chunk-5GLCTO44.js +0 -161
- package/dist/chunk-5TOFIR6L.js +0 -407
- package/dist/chunk-65RFOWZI.js +0 -765
- package/dist/chunk-6OQBLABR.js +0 -5240
- package/dist/chunk-6WNCRE6F.js +0 -126
- package/dist/chunk-74YCHHTE.js +0 -1872
- package/dist/chunk-7H5UNJZD.cjs +0 -1973
- package/dist/chunk-7KPI4EKH.cjs +0 -701
- package/dist/chunk-7LCYLPW2.cjs +0 -663
- package/dist/chunk-7N3JIJMT.js +0 -1395
- package/dist/chunk-7X2IEJIE.cjs +0 -2526
- package/dist/chunk-A6GO3DPZ.cjs +0 -1002
- package/dist/chunk-AC4BSHFV.js +0 -765
- package/dist/chunk-AIUXRS74.cjs +0 -3681
- package/dist/chunk-ARNKA274.cjs +0 -130
- package/dist/chunk-AW7WAELW.js +0 -975
- package/dist/chunk-BKIGPPVM.js +0 -629
- package/dist/chunk-BO2OKHIY.js +0 -6055
- package/dist/chunk-BU5ZAFMC.js +0 -115
- package/dist/chunk-BY3B7ZYV.cjs +0 -457
- package/dist/chunk-C2QHVHZF.js +0 -4066
- package/dist/chunk-C7BNX4XJ.js +0 -1043
- package/dist/chunk-CLYEIWA5.cjs +0 -408
- package/dist/chunk-CMYAWUX3.js +0 -4455
- package/dist/chunk-CN4NOESF.cjs +0 -416
- package/dist/chunk-CNVM7J3M.js +0 -883
- package/dist/chunk-CO2VM2DK.js +0 -1965
- package/dist/chunk-CQDOF3G7.cjs +0 -1404
- package/dist/chunk-DH5G2JUA.cjs +0 -614
- package/dist/chunk-DIEDKX5B.cjs +0 -660
- package/dist/chunk-DN7UFU63.cjs +0 -172
- package/dist/chunk-DXVCEFZB.js +0 -2027
- package/dist/chunk-EGIZHYJP.cjs +0 -85
- package/dist/chunk-EJA7G2C4.cjs +0 -428
- package/dist/chunk-ELLQPFAF.js +0 -830
- package/dist/chunk-EMO7HAKJ.cjs +0 -1875
- package/dist/chunk-ENV7K6XA.js +0 -282
- package/dist/chunk-EPWRXL6S.js +0 -2522
- package/dist/chunk-EUFLX2PI.js +0 -56956
- package/dist/chunk-F5LVGHNT.js +0 -449
- package/dist/chunk-FEFHPUEM.cjs +0 -6122
- package/dist/chunk-FF3Q7ADR.js +0 -380
- package/dist/chunk-GC3YU46J.js +0 -762
- package/dist/chunk-H6WMMLQK.cjs +0 -4492
- package/dist/chunk-H7XMORZI.js +0 -2731
- package/dist/chunk-HAN4V3PF.cjs +0 -2037
- package/dist/chunk-HBZYCASG.js +0 -4208
- package/dist/chunk-HF4OFY25.cjs +0 -4097
- package/dist/chunk-HHS6FMOU.cjs +0 -3813
- package/dist/chunk-HJJLD366.js +0 -1169
- package/dist/chunk-HKCVM6OK.cjs +0 -2237
- package/dist/chunk-HUFNKFA6.js +0 -698
- package/dist/chunk-I3XGTIHM.cjs +0 -1505
- package/dist/chunk-I6XZ5DZF.cjs +0 -488
- package/dist/chunk-IHOUYQIA.js +0 -406
- package/dist/chunk-ILRBGFVD.cjs +0 -72
- package/dist/chunk-KDB6BUMB.js +0 -3666
- package/dist/chunk-KUJRR4FJ.js +0 -657
- package/dist/chunk-KYM4XRFG.js +0 -421
- package/dist/chunk-L3Z2HIWJ.cjs +0 -793
- package/dist/chunk-LBPEZQAF.js +0 -2232
- package/dist/chunk-LER4WXW5.cjs +0 -286
- package/dist/chunk-LK5IAVH6.cjs +0 -1173
- package/dist/chunk-M6FU6S22.js +0 -2911
- package/dist/chunk-MWEFR6YQ.js +0 -1857
- package/dist/chunk-N5FTS757.cjs +0 -415
- package/dist/chunk-NCUHGRTZ.js +0 -752
- package/dist/chunk-NKRKT6V2.js +0 -69
- package/dist/chunk-NLPSZT4C.js +0 -630
- package/dist/chunk-NRUB55IT.cjs +0 -771
- package/dist/chunk-NTMZSDXM.cjs +0 -633
- package/dist/chunk-ODGMVILH.js +0 -9662
- package/dist/chunk-PBA6NXCT.cjs +0 -1216
- package/dist/chunk-PHENW4MQ.js +0 -65
- package/dist/chunk-PJMOXFPR.cjs +0 -1861
- package/dist/chunk-PLMYCCA4.js +0 -504
- package/dist/chunk-PPULB4GG.cjs +0 -9728
- package/dist/chunk-PQLGZKMC.cjs +0 -755
- package/dist/chunk-Q56TT7IL.js +0 -483
- package/dist/chunk-QHVVVN47.cjs +0 -2033
- package/dist/chunk-QWKUKVRE.js +0 -2026
- package/dist/chunk-RE3OKSYF.cjs +0 -424
- package/dist/chunk-RT7LJRSF.cjs +0 -57378
- package/dist/chunk-SPDELRRV.cjs +0 -319
- package/dist/chunk-SUCBB66F.js +0 -229
- package/dist/chunk-TSWTWZ42.cjs +0 -4214
- package/dist/chunk-UITWA6DV.cjs +0 -2829
- package/dist/chunk-UQW6SLM5.js +0 -172
- package/dist/chunk-V2ILLPHK.cjs +0 -237
- package/dist/chunk-V42NTCFH.js +0 -3645
- package/dist/chunk-VJ3L7CHT.cjs +0 -169
- package/dist/chunk-VJVCD5T5.cjs +0 -769
- package/dist/chunk-VK5AXKO3.js +0 -746
- package/dist/chunk-VSXOIUCF.cjs +0 -473
- package/dist/chunk-VZNKJZTT.cjs +0 -749
- package/dist/chunk-W76ETJTI.js +0 -678
- package/dist/chunk-WFJIDI2N.cjs +0 -424
- package/dist/chunk-WN3YF33G.cjs +0 -118
- package/dist/chunk-WUXIRGZP.cjs +0 -2915
- package/dist/chunk-WYH4GVZ5.js +0 -1488
- package/dist/chunk-X4YVN7H3.cjs +0 -888
- package/dist/chunk-X67XRI2T.js +0 -410
- package/dist/chunk-XDXZM3ZP.cjs +0 -1046
- package/dist/chunk-XH7SE4HH.cjs +0 -72
- package/dist/chunk-XNMEH2BI.js +0 -126
- package/dist/chunk-XSF76QRU.js +0 -468
- package/dist/chunk-XSUZMPVQ.cjs +0 -682
- package/dist/chunk-XUILI4KB.cjs +0 -430
- package/dist/chunk-Y5MUAYTO.js +0 -167
- package/dist/chunk-Y7VK5TH3.cjs +0 -129
- package/dist/chunk-YCMQQQ5U.cjs +0 -5244
- package/dist/chunk-YYXH45E2.js +0 -426
- package/dist/chunk-ZGTGVSTZ.js +0 -422
- package/dist/chunk-ZL6VJ6SN.js +0 -421
- package/dist/cli/holoscript-runner.cjs +0 -2258
- package/dist/cli/holoscript-runner.js +0 -2233
- package/dist/codebase/index.cjs +0 -336
- package/dist/codebase/index.js +0 -331
- package/dist/compiler/agent-inference.cjs +0 -29
- package/dist/compiler/agent-inference.js +0 -6
- package/dist/compiler/android-xr.cjs +0 -20
- package/dist/compiler/android-xr.js +0 -10
- package/dist/compiler/android.cjs +0 -21
- package/dist/compiler/android.js +0 -11
- package/dist/compiler/ar.cjs +0 -21
- package/dist/compiler/ar.js +0 -9
- package/dist/compiler/babylon.cjs +0 -18
- package/dist/compiler/babylon.js +0 -12
- package/dist/compiler/coco.cjs +0 -27
- package/dist/compiler/coco.js +0 -4
- package/dist/compiler/domain-block-utils.cjs +0 -595
- package/dist/compiler/domain-block-utils.js +0 -9
- package/dist/compiler/dtdl.cjs +0 -25
- package/dist/compiler/dtdl.js +0 -9
- package/dist/compiler/gltf-pipeline.cjs +0 -39
- package/dist/compiler/gltf-pipeline.js +0 -4
- package/dist/compiler/godot.cjs +0 -16
- package/dist/compiler/godot.js +0 -10
- package/dist/compiler/incremental.cjs +0 -30
- package/dist/compiler/incremental.js +0 -5
- package/dist/compiler/index.cjs +0 -1522
- package/dist/compiler/index.js +0 -1321
- package/dist/compiler/ios.cjs +0 -21
- package/dist/compiler/ios.js +0 -11
- package/dist/compiler/multi-layer.cjs +0 -27
- package/dist/compiler/multi-layer.js +0 -12
- package/dist/compiler/nodetoy.cjs +0 -23
- package/dist/compiler/nodetoy.js +0 -4
- package/dist/compiler/openxr.cjs +0 -16
- package/dist/compiler/openxr.js +0 -10
- package/dist/compiler/playcanvas.cjs +0 -17
- package/dist/compiler/playcanvas.js +0 -11
- package/dist/compiler/r3f.cjs +0 -35
- package/dist/compiler/r3f.js +0 -13
- package/dist/compiler/remotion.cjs +0 -23
- package/dist/compiler/remotion.js +0 -4
- package/dist/compiler/reproducibility.cjs +0 -39
- package/dist/compiler/reproducibility.js +0 -4
- package/dist/compiler/sdf.cjs +0 -22
- package/dist/compiler/sdf.js +0 -10
- package/dist/compiler/semantic-scene.cjs +0 -31
- package/dist/compiler/semantic-scene.js +0 -4
- package/dist/compiler/state.cjs +0 -18
- package/dist/compiler/state.js +0 -8
- package/dist/compiler/trait-composition.cjs +0 -27
- package/dist/compiler/trait-composition.js +0 -6
- package/dist/compiler/unity.cjs +0 -16
- package/dist/compiler/unity.js +0 -10
- package/dist/compiler/unreal.cjs +0 -20
- package/dist/compiler/unreal.js +0 -10
- package/dist/compiler/urdf.cjs +0 -46
- package/dist/compiler/urdf.js +0 -10
- package/dist/compiler/usd-physics.cjs +0 -24
- package/dist/compiler/usd-physics.js +0 -7
- package/dist/compiler/visionos.cjs +0 -16
- package/dist/compiler/visionos.js +0 -10
- package/dist/compiler/vrchat.cjs +0 -20
- package/dist/compiler/vrchat.js +0 -10
- package/dist/compiler/vrr.cjs +0 -22
- package/dist/compiler/vrr.js +0 -10
- package/dist/compiler/wasm.cjs +0 -34
- package/dist/compiler/wasm.js +0 -10
- package/dist/compiler/webgpu.cjs +0 -16
- package/dist/compiler/webgpu.js +0 -10
- package/dist/debugger.cjs +0 -21
- package/dist/debugger.js +0 -8
- package/dist/entries/interop.cjs +0 -62
- package/dist/entries/interop.js +0 -5
- package/dist/entries/scripting.cjs +0 -67
- package/dist/entries/scripting.js +0 -10
- package/dist/index.cjs +0 -61703
- package/dist/index.js +0 -58652
- package/dist/math/vec3.cjs +0 -57
- package/dist/math/vec3.js +0 -4
- package/dist/parser.cjs +0 -26
- package/dist/parser.js +0 -9
- package/dist/playwright-7DTEQCBD.cjs +0 -98673
- package/dist/playwright-BIZXMLD2.js +0 -98660
- package/dist/post-quantum-JTTAAGO3.cjs +0 -6
- package/dist/post-quantum-RVPVDEPI.js +0 -4
- package/dist/runtime.cjs +0 -16
- package/dist/runtime.js +0 -7
- package/dist/storage/index.cjs +0 -37
- package/dist/storage/index.js +0 -4
- package/dist/traits/index.cjs +0 -14331
- package/dist/traits/index.js +0 -12126
- package/dist/type-checker.cjs +0 -18
- package/dist/type-checker.js +0 -5
- package/dist/wot/index.cjs +0 -29
- package/dist/wot/index.js +0 -4
package/dist/chunk-XUILI4KB.cjs
DELETED
|
@@ -1,430 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
// src/compiler/RemotionBridge.ts
|
|
4
|
-
function bridgeToRemotion(composition, options = {}) {
|
|
5
|
-
const bridge = new RemotionBridgeImpl(options);
|
|
6
|
-
return bridge.convert(composition);
|
|
7
|
-
}
|
|
8
|
-
var RemotionBridgeImpl = class {
|
|
9
|
-
constructor(options = {}) {
|
|
10
|
-
this.width = options.width ?? 1920;
|
|
11
|
-
this.height = options.height ?? 1080;
|
|
12
|
-
this.fps = options.fps ?? 30;
|
|
13
|
-
this.defaultDurationSeconds = options.defaultDurationSeconds ?? 10;
|
|
14
|
-
this.include3DCanvas = options.include3DCanvas ?? true;
|
|
15
|
-
this.multiPass = options.multiPass ?? false;
|
|
16
|
-
this.componentImportPath = options.componentImportPath ?? "./components";
|
|
17
|
-
this.isTypeScript = (options.outputFormat ?? "typescript") === "typescript";
|
|
18
|
-
}
|
|
19
|
-
convert(composition) {
|
|
20
|
-
const durationInFrames = this.calculateDuration(composition);
|
|
21
|
-
const compositionConfig = {
|
|
22
|
-
id: this.sanitizeId(composition.name),
|
|
23
|
-
width: this.width,
|
|
24
|
-
height: this.height,
|
|
25
|
-
fps: this.fps,
|
|
26
|
-
durationInFrames
|
|
27
|
-
};
|
|
28
|
-
const sequences = this.extractSequences(composition);
|
|
29
|
-
const audioClips = this.extractAudioClips(composition);
|
|
30
|
-
const interpolationTracks = this.extractInterpolationTracks(composition);
|
|
31
|
-
const renderPasses = this.buildRenderPasses();
|
|
32
|
-
const componentSource = this.generateComponentSource(
|
|
33
|
-
composition,
|
|
34
|
-
sequences,
|
|
35
|
-
interpolationTracks
|
|
36
|
-
);
|
|
37
|
-
const rootSource = this.generateRootSource(compositionConfig, audioClips);
|
|
38
|
-
return {
|
|
39
|
-
composition: compositionConfig,
|
|
40
|
-
sequences,
|
|
41
|
-
audioClips,
|
|
42
|
-
componentSource,
|
|
43
|
-
rootSource,
|
|
44
|
-
interpolationTracks,
|
|
45
|
-
renderPasses
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
// ---------------------------------------------------------------------------
|
|
49
|
-
// Duration calculation
|
|
50
|
-
// ---------------------------------------------------------------------------
|
|
51
|
-
calculateDuration(composition) {
|
|
52
|
-
let maxTimeSeconds = this.defaultDurationSeconds;
|
|
53
|
-
for (const timeline of composition.timelines ?? []) {
|
|
54
|
-
for (const entry of timeline.entries ?? []) {
|
|
55
|
-
maxTimeSeconds = Math.max(maxTimeSeconds, entry.time + 1);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return Math.ceil(maxTimeSeconds * this.fps);
|
|
59
|
-
}
|
|
60
|
-
// ---------------------------------------------------------------------------
|
|
61
|
-
// Sequence extraction
|
|
62
|
-
// ---------------------------------------------------------------------------
|
|
63
|
-
extractSequences(composition) {
|
|
64
|
-
const sequences = [];
|
|
65
|
-
for (const timeline of composition.timelines ?? []) {
|
|
66
|
-
const entries = [...timeline.entries ?? []].sort((a, b) => a.time - b.time);
|
|
67
|
-
for (let i = 0; i < entries.length; i++) {
|
|
68
|
-
const entry = entries[i];
|
|
69
|
-
const nextEntry = entries[i + 1];
|
|
70
|
-
const startFrame = Math.round(entry.time * this.fps);
|
|
71
|
-
const endFrame = nextEntry ? Math.round(nextEntry.time * this.fps) : Math.round((entry.time + 1) * this.fps);
|
|
72
|
-
const sequence = {
|
|
73
|
-
name: `${timeline.name}_${i}`,
|
|
74
|
-
from: startFrame,
|
|
75
|
-
durationInFrames: Math.max(1, endFrame - startFrame),
|
|
76
|
-
component: this.actionToComponent(entry.action),
|
|
77
|
-
props: this.actionToProps(entry)
|
|
78
|
-
};
|
|
79
|
-
sequences.push(sequence);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return sequences;
|
|
83
|
-
}
|
|
84
|
-
actionToComponent(action) {
|
|
85
|
-
switch (action.kind) {
|
|
86
|
-
case "animate":
|
|
87
|
-
return "AnimateObject";
|
|
88
|
-
case "emit":
|
|
89
|
-
return "EmitEvent";
|
|
90
|
-
case "call":
|
|
91
|
-
return "CallMethod";
|
|
92
|
-
default:
|
|
93
|
-
return "Noop";
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
actionToProps(entry) {
|
|
97
|
-
const action = entry.action;
|
|
98
|
-
const props = { time: entry.time };
|
|
99
|
-
if (action.kind === "animate") {
|
|
100
|
-
props.target = action.target;
|
|
101
|
-
props.properties = action.properties;
|
|
102
|
-
} else if (action.kind === "emit") {
|
|
103
|
-
props.event = action.event;
|
|
104
|
-
props.data = action.data;
|
|
105
|
-
} else if (action.kind === "call") {
|
|
106
|
-
props.method = action.method;
|
|
107
|
-
props.args = action.args;
|
|
108
|
-
}
|
|
109
|
-
return props;
|
|
110
|
-
}
|
|
111
|
-
// ---------------------------------------------------------------------------
|
|
112
|
-
// Audio extraction
|
|
113
|
-
// ---------------------------------------------------------------------------
|
|
114
|
-
extractAudioClips(composition) {
|
|
115
|
-
const clips = [];
|
|
116
|
-
for (const audio of composition.audio ?? []) {
|
|
117
|
-
const clip = {
|
|
118
|
-
src: this.extractAudioSrc(audio)
|
|
119
|
-
};
|
|
120
|
-
for (const prop of audio.properties) {
|
|
121
|
-
if (prop.key === "volume" && typeof prop.value === "number") {
|
|
122
|
-
clip.volume = prop.value;
|
|
123
|
-
}
|
|
124
|
-
if (prop.key === "playbackRate" && typeof prop.value === "number") {
|
|
125
|
-
clip.playbackRate = prop.value;
|
|
126
|
-
}
|
|
127
|
-
if (prop.key === "spatial" && typeof prop.value === "boolean") {
|
|
128
|
-
clip.spatial = prop.value;
|
|
129
|
-
}
|
|
130
|
-
if (prop.key === "startTime" && typeof prop.value === "number") {
|
|
131
|
-
clip.startFrom = Math.round(prop.value * this.fps);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
clips.push(clip);
|
|
135
|
-
}
|
|
136
|
-
return clips;
|
|
137
|
-
}
|
|
138
|
-
extractAudioSrc(audio) {
|
|
139
|
-
for (const prop of audio.properties) {
|
|
140
|
-
if (prop.key === "src" && typeof prop.value === "string") return prop.value;
|
|
141
|
-
if (prop.key === "source" && typeof prop.value === "string") return prop.value;
|
|
142
|
-
if (prop.key === "url" && typeof prop.value === "string") return prop.value;
|
|
143
|
-
}
|
|
144
|
-
return `./audio/${audio.name}.mp3`;
|
|
145
|
-
}
|
|
146
|
-
// ---------------------------------------------------------------------------
|
|
147
|
-
// Interpolation tracks
|
|
148
|
-
// ---------------------------------------------------------------------------
|
|
149
|
-
extractInterpolationTracks(composition) {
|
|
150
|
-
const trackMap = /* @__PURE__ */ new Map();
|
|
151
|
-
for (const timeline of composition.timelines ?? []) {
|
|
152
|
-
for (const entry of timeline.entries ?? []) {
|
|
153
|
-
if (entry.action.kind !== "animate") continue;
|
|
154
|
-
const target = entry.action.target;
|
|
155
|
-
const properties = entry.action.properties;
|
|
156
|
-
for (const [prop, value] of Object.entries(properties)) {
|
|
157
|
-
if (typeof value !== "number") continue;
|
|
158
|
-
const trackKey = `${target}.${prop}`;
|
|
159
|
-
if (!trackMap.has(trackKey)) {
|
|
160
|
-
trackMap.set(trackKey, {
|
|
161
|
-
target,
|
|
162
|
-
property: prop,
|
|
163
|
-
keyframes: []
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
const track = trackMap.get(trackKey);
|
|
167
|
-
track.keyframes.push({
|
|
168
|
-
frame: Math.round(entry.time * this.fps),
|
|
169
|
-
value
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
for (const track of trackMap.values()) {
|
|
175
|
-
track.keyframes.sort((a, b) => a.frame - b.frame);
|
|
176
|
-
}
|
|
177
|
-
return Array.from(trackMap.values());
|
|
178
|
-
}
|
|
179
|
-
// ---------------------------------------------------------------------------
|
|
180
|
-
// Render passes
|
|
181
|
-
// ---------------------------------------------------------------------------
|
|
182
|
-
buildRenderPasses() {
|
|
183
|
-
const passes = [
|
|
184
|
-
{ name: "Beauty", type: "beauty", outputSuffix: "", enabled: true }
|
|
185
|
-
];
|
|
186
|
-
if (this.multiPass) {
|
|
187
|
-
passes.push(
|
|
188
|
-
{ name: "Depth", type: "depth", outputSuffix: "_depth", enabled: true },
|
|
189
|
-
{ name: "Normal", type: "normal", outputSuffix: "_normal", enabled: true },
|
|
190
|
-
{ name: "ID Mask", type: "id", outputSuffix: "_id", enabled: true },
|
|
191
|
-
{ name: "Wireframe", type: "wireframe", outputSuffix: "_wire", enabled: false }
|
|
192
|
-
);
|
|
193
|
-
}
|
|
194
|
-
return passes;
|
|
195
|
-
}
|
|
196
|
-
// ---------------------------------------------------------------------------
|
|
197
|
-
// Code generation: Scene component
|
|
198
|
-
// ---------------------------------------------------------------------------
|
|
199
|
-
generateComponentSource(composition, sequences, tracks) {
|
|
200
|
-
this.isTypeScript ? "tsx" : "jsx";
|
|
201
|
-
const typeAnnotation = this.isTypeScript ? ": React.FC" : "";
|
|
202
|
-
const lines = [];
|
|
203
|
-
lines.push(`// Auto-generated by HoloScript RemotionBridge`);
|
|
204
|
-
lines.push(`// Source composition: "${composition.name}"`);
|
|
205
|
-
lines.push(``);
|
|
206
|
-
lines.push(`import React from 'react';`);
|
|
207
|
-
lines.push(
|
|
208
|
-
`import { useCurrentFrame, useVideoConfig, interpolate, Sequence } from 'remotion';`
|
|
209
|
-
);
|
|
210
|
-
if (this.include3DCanvas) {
|
|
211
|
-
lines.push(`import { Canvas } from '@react-three/fiber';`);
|
|
212
|
-
lines.push(`import { OrbitControls, Environment } from '@react-three/drei';`);
|
|
213
|
-
}
|
|
214
|
-
lines.push(``);
|
|
215
|
-
if (tracks.length > 0) {
|
|
216
|
-
lines.push(`// --- Interpolation Tracks ---`);
|
|
217
|
-
lines.push(``);
|
|
218
|
-
for (const track of tracks) {
|
|
219
|
-
const fnName = `get_${this.sanitizeId(track.target)}_${track.property}`;
|
|
220
|
-
const inputRange = track.keyframes.map((k) => k.frame);
|
|
221
|
-
const outputRange = track.keyframes.map((k) => k.value);
|
|
222
|
-
lines.push(`function ${fnName}(frame${this.isTypeScript ? ": number" : ""}) {`);
|
|
223
|
-
lines.push(
|
|
224
|
-
` return interpolate(frame, ${JSON.stringify(inputRange)}, ${JSON.stringify(outputRange)}, {`
|
|
225
|
-
);
|
|
226
|
-
lines.push(` extrapolateLeft: 'clamp',`);
|
|
227
|
-
lines.push(` extrapolateRight: 'clamp',`);
|
|
228
|
-
lines.push(` });`);
|
|
229
|
-
lines.push(`}`);
|
|
230
|
-
lines.push(``);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
if (this.include3DCanvas) {
|
|
234
|
-
lines.push(`function SceneObjects() {`);
|
|
235
|
-
lines.push(` const frame = useCurrentFrame();`);
|
|
236
|
-
lines.push(``);
|
|
237
|
-
lines.push(` return (`);
|
|
238
|
-
lines.push(` <>`);
|
|
239
|
-
for (const light of composition.lights ?? []) {
|
|
240
|
-
lines.push(` ${this.lightToJSX(light)}`);
|
|
241
|
-
}
|
|
242
|
-
for (const obj of composition.objects ?? []) {
|
|
243
|
-
lines.push(` ${this.objectToJSX(obj, tracks)}`);
|
|
244
|
-
}
|
|
245
|
-
for (const group of composition.spatialGroups ?? []) {
|
|
246
|
-
lines.push(` ${this.groupToJSX(group, tracks)}`);
|
|
247
|
-
}
|
|
248
|
-
lines.push(` </>`);
|
|
249
|
-
lines.push(` );`);
|
|
250
|
-
lines.push(`}`);
|
|
251
|
-
lines.push(``);
|
|
252
|
-
}
|
|
253
|
-
const componentName = this.sanitizeId(composition.name) + "Scene";
|
|
254
|
-
lines.push(`export const ${componentName}${typeAnnotation} = () => {`);
|
|
255
|
-
lines.push(` const frame = useCurrentFrame();`);
|
|
256
|
-
lines.push(` const { durationInFrames } = useVideoConfig();`);
|
|
257
|
-
lines.push(``);
|
|
258
|
-
lines.push(` return (`);
|
|
259
|
-
lines.push(` <div style={{ width: '100%', height: '100%', background: '#000' }}>`);
|
|
260
|
-
for (const seq of sequences) {
|
|
261
|
-
lines.push(
|
|
262
|
-
` <Sequence from={${seq.from}} durationInFrames={${seq.durationInFrames}} name="${seq.name}">`
|
|
263
|
-
);
|
|
264
|
-
lines.push(` {/* ${seq.component}: ${JSON.stringify(seq.props)} */}`);
|
|
265
|
-
lines.push(` </Sequence>`);
|
|
266
|
-
}
|
|
267
|
-
if (this.include3DCanvas) {
|
|
268
|
-
lines.push(` <Canvas camera={{ position: [0, 1.6, 5], fov: 60 }}>`);
|
|
269
|
-
lines.push(` <SceneObjects />`);
|
|
270
|
-
lines.push(` <OrbitControls />`);
|
|
271
|
-
lines.push(` <Environment preset="apartment" />`);
|
|
272
|
-
lines.push(` </Canvas>`);
|
|
273
|
-
}
|
|
274
|
-
lines.push(` </div>`);
|
|
275
|
-
lines.push(` );`);
|
|
276
|
-
lines.push(`};`);
|
|
277
|
-
lines.push(``);
|
|
278
|
-
lines.push(`export default ${componentName};`);
|
|
279
|
-
return lines.join("\n");
|
|
280
|
-
}
|
|
281
|
-
// ---------------------------------------------------------------------------
|
|
282
|
-
// Code generation: Remotion Root
|
|
283
|
-
// ---------------------------------------------------------------------------
|
|
284
|
-
generateRootSource(config, audioClips) {
|
|
285
|
-
const lines = [];
|
|
286
|
-
const componentName = config.id + "Scene";
|
|
287
|
-
lines.push(`// Auto-generated Remotion Root by HoloScript RemotionBridge`);
|
|
288
|
-
lines.push(``);
|
|
289
|
-
lines.push(`import { Composition } from 'remotion';`);
|
|
290
|
-
lines.push(`import { ${componentName} } from '${this.componentImportPath}/${componentName}';`);
|
|
291
|
-
if (audioClips.length > 0) {
|
|
292
|
-
lines.push(`import { Audio } from 'remotion';`);
|
|
293
|
-
}
|
|
294
|
-
lines.push(``);
|
|
295
|
-
lines.push(`export const RemotionRoot = () => {`);
|
|
296
|
-
lines.push(` return (`);
|
|
297
|
-
lines.push(` <>`);
|
|
298
|
-
lines.push(` <Composition`);
|
|
299
|
-
lines.push(` id="${config.id}"`);
|
|
300
|
-
lines.push(` component={${componentName}}`);
|
|
301
|
-
lines.push(` durationInFrames={${config.durationInFrames}}`);
|
|
302
|
-
lines.push(` fps={${config.fps}}`);
|
|
303
|
-
lines.push(` width={${config.width}}`);
|
|
304
|
-
lines.push(` height={${config.height}}`);
|
|
305
|
-
lines.push(` />`);
|
|
306
|
-
lines.push(` </>`);
|
|
307
|
-
lines.push(` );`);
|
|
308
|
-
lines.push(`};`);
|
|
309
|
-
return lines.join("\n");
|
|
310
|
-
}
|
|
311
|
-
// ---------------------------------------------------------------------------
|
|
312
|
-
// JSX generation helpers
|
|
313
|
-
// ---------------------------------------------------------------------------
|
|
314
|
-
lightToJSX(light) {
|
|
315
|
-
const props = this.propsToJSXAttrs(light.properties);
|
|
316
|
-
switch (light.lightType) {
|
|
317
|
-
case "directional":
|
|
318
|
-
return `<directionalLight ${props} />`;
|
|
319
|
-
case "point":
|
|
320
|
-
return `<pointLight ${props} />`;
|
|
321
|
-
case "spot":
|
|
322
|
-
return `<spotLight ${props} />`;
|
|
323
|
-
case "hemisphere":
|
|
324
|
-
return `<hemisphereLight ${props} />`;
|
|
325
|
-
case "ambient":
|
|
326
|
-
return `<ambientLight ${props} />`;
|
|
327
|
-
default:
|
|
328
|
-
return `<pointLight ${props} />`;
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
objectToJSX(obj, tracks) {
|
|
332
|
-
const geometry = this.inferGeometry(obj);
|
|
333
|
-
const position = this.extractVec3(obj.properties, "position", [0, 0, 0]);
|
|
334
|
-
const scale = this.extractVec3(obj.properties, "scale", [1, 1, 1]);
|
|
335
|
-
const color = this.extractColor(obj);
|
|
336
|
-
const hasAnimation = tracks.some((t) => t.target === obj.name);
|
|
337
|
-
const positionExpr = hasAnimation ? `[get_${this.sanitizeId(obj.name)}_x?.(frame) ?? ${position[0]}, get_${this.sanitizeId(obj.name)}_y?.(frame) ?? ${position[1]}, get_${this.sanitizeId(obj.name)}_z?.(frame) ?? ${position[2]}]` : `[${position.join(", ")}]`;
|
|
338
|
-
return [
|
|
339
|
-
`<mesh position={${positionExpr}} scale={[${scale.join(", ")}]} name="${obj.name}">`,
|
|
340
|
-
` <${geometry}Geometry />`,
|
|
341
|
-
` <meshStandardMaterial color="${color}" />`,
|
|
342
|
-
` </mesh>`
|
|
343
|
-
].join("\n ");
|
|
344
|
-
}
|
|
345
|
-
groupToJSX(group, tracks) {
|
|
346
|
-
const position = this.extractGroupVec3(group, "position", [0, 0, 0]);
|
|
347
|
-
const children = (group.objects ?? []).map((o) => ` ${this.objectToJSX(o, tracks)}`).join("\n");
|
|
348
|
-
return [
|
|
349
|
-
`<group position={[${position.join(", ")}]} name="${group.name}">`,
|
|
350
|
-
children,
|
|
351
|
-
` </group>`
|
|
352
|
-
].join("\n ");
|
|
353
|
-
}
|
|
354
|
-
// ---------------------------------------------------------------------------
|
|
355
|
-
// Property extraction
|
|
356
|
-
// ---------------------------------------------------------------------------
|
|
357
|
-
extractVec3(properties, key, defaultVal) {
|
|
358
|
-
for (const prop of properties) {
|
|
359
|
-
if (prop.key === key && Array.isArray(prop.value)) {
|
|
360
|
-
const arr = prop.value;
|
|
361
|
-
return [arr[0] ?? defaultVal[0], arr[1] ?? defaultVal[1], arr[2] ?? defaultVal[2]];
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
return defaultVal;
|
|
365
|
-
}
|
|
366
|
-
extractGroupVec3(group, key, defaultVal) {
|
|
367
|
-
for (const prop of group.properties) {
|
|
368
|
-
if (prop.key === key && Array.isArray(prop.value)) {
|
|
369
|
-
const arr = prop.value;
|
|
370
|
-
return [arr[0] ?? defaultVal[0], arr[1] ?? defaultVal[1], arr[2] ?? defaultVal[2]];
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
return defaultVal;
|
|
374
|
-
}
|
|
375
|
-
extractColor(obj) {
|
|
376
|
-
for (const prop of obj.properties) {
|
|
377
|
-
if (prop.key === "color" && typeof prop.value === "string") return prop.value;
|
|
378
|
-
}
|
|
379
|
-
for (const trait of obj.traits ?? []) {
|
|
380
|
-
if (trait.config["color"] && typeof trait.config["color"] === "string") {
|
|
381
|
-
return trait.config["color"];
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
return "#888888";
|
|
385
|
-
}
|
|
386
|
-
inferGeometry(obj) {
|
|
387
|
-
for (const prop of obj.properties) {
|
|
388
|
-
if ((prop.key === "geometry" || prop.key === "shape") && typeof prop.value === "string") {
|
|
389
|
-
return this.mapGeometryName(prop.value);
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
return "box";
|
|
393
|
-
}
|
|
394
|
-
mapGeometryName(name) {
|
|
395
|
-
const map = {
|
|
396
|
-
box: "box",
|
|
397
|
-
cube: "box",
|
|
398
|
-
sphere: "sphere",
|
|
399
|
-
orb: "sphere",
|
|
400
|
-
cylinder: "cylinder",
|
|
401
|
-
cone: "cone",
|
|
402
|
-
plane: "plane",
|
|
403
|
-
torus: "torus",
|
|
404
|
-
ring: "torus"
|
|
405
|
-
};
|
|
406
|
-
return map[name.toLowerCase()] ?? "box";
|
|
407
|
-
}
|
|
408
|
-
propsToJSXAttrs(properties) {
|
|
409
|
-
return properties.map((p) => {
|
|
410
|
-
if (typeof p.value === "string") return `${p.key}="${p.value}"`;
|
|
411
|
-
if (typeof p.value === "number") return `${p.key}={${p.value}}`;
|
|
412
|
-
if (typeof p.value === "boolean") return p.value ? p.key : "";
|
|
413
|
-
if (Array.isArray(p.value)) return `${p.key}={[${p.value.join(", ")}]}`;
|
|
414
|
-
return "";
|
|
415
|
-
}).filter(Boolean).join(" ");
|
|
416
|
-
}
|
|
417
|
-
// ---------------------------------------------------------------------------
|
|
418
|
-
// Utility
|
|
419
|
-
// ---------------------------------------------------------------------------
|
|
420
|
-
sanitizeId(name) {
|
|
421
|
-
return name.replace(/[^a-zA-Z0-9]/g, "_").replace(/^[0-9]/, "_$&");
|
|
422
|
-
}
|
|
423
|
-
};
|
|
424
|
-
var RemotionBridge_default = bridgeToRemotion;
|
|
425
|
-
|
|
426
|
-
exports.RemotionBridgeImpl = RemotionBridgeImpl;
|
|
427
|
-
exports.RemotionBridge_default = RemotionBridge_default;
|
|
428
|
-
exports.bridgeToRemotion = bridgeToRemotion;
|
|
429
|
-
//# sourceMappingURL=chunk-XUILI4KB.cjs.map
|
|
430
|
-
//# sourceMappingURL=chunk-XUILI4KB.cjs.map
|
package/dist/chunk-Y5MUAYTO.js
DELETED
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { init_ProvenanceSemiring, authorityWeight, ProvenanceSemiring } from './chunk-UQW6SLM5.js';
|
|
2
|
-
import { init_AgentRBAC, getRBAC } from './chunk-V42NTCFH.js';
|
|
3
|
-
|
|
4
|
-
// src/compiler/TraitCompositionCompiler.ts
|
|
5
|
-
init_AgentRBAC();
|
|
6
|
-
init_ProvenanceSemiring();
|
|
7
|
-
var CompositionConflictError = class extends Error {
|
|
8
|
-
constructor(traitA, traitB, conflictKey) {
|
|
9
|
-
super(
|
|
10
|
-
`Trait composition conflict: "${traitA}" and "${traitB}" both declare conflicting key "${conflictKey}".`
|
|
11
|
-
);
|
|
12
|
-
this.traitA = traitA;
|
|
13
|
-
this.traitB = traitB;
|
|
14
|
-
this.conflictKey = conflictKey;
|
|
15
|
-
this.name = "CompositionConflictError";
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
var MissingComponentError = class extends Error {
|
|
19
|
-
constructor(composedName, missingComponent) {
|
|
20
|
-
super(
|
|
21
|
-
`Composition "${composedName}" references unknown component trait "${missingComponent}". Register it in TraitBinder before compiling.`
|
|
22
|
-
);
|
|
23
|
-
this.composedName = composedName;
|
|
24
|
-
this.missingComponent = missingComponent;
|
|
25
|
-
this.name = "MissingComponentError";
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
var TraitCompositionCompiler = class {
|
|
29
|
-
constructor(inheritanceResolver) {
|
|
30
|
-
this.inheritanceResolver = inheritanceResolver;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Set or replace the trait inheritance resolver.
|
|
34
|
-
* Call this after constructing if the resolver becomes available later.
|
|
35
|
-
*/
|
|
36
|
-
setInheritanceResolver(resolver) {
|
|
37
|
-
this.inheritanceResolver = resolver;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Compile a set of composition declarations.
|
|
41
|
-
*
|
|
42
|
-
* @param decls - Declarations to compile.
|
|
43
|
-
* @param getHandler - Lookup a component handler by name.
|
|
44
|
-
* @param traitGraph - Optional TraitDependencyGraph; if supplied, new
|
|
45
|
-
* composed traits are registered there.
|
|
46
|
-
* @param agentToken - JWT token proving agent identity (optional for backwards compatibility).
|
|
47
|
-
* @returns Compiled ComposedTraitDef[], in declaration order.
|
|
48
|
-
* @throws UnauthorizedTraitCompositionAccessError if token is provided but invalid.
|
|
49
|
-
*/
|
|
50
|
-
compile(decls, getHandler, traitGraph, agentToken) {
|
|
51
|
-
this.validateAccess(agentToken);
|
|
52
|
-
return decls.map((decl) => this.compileOne(decl, getHandler, traitGraph));
|
|
53
|
-
}
|
|
54
|
-
// ---------------------------------------------------------------------------
|
|
55
|
-
// RBAC enforcement
|
|
56
|
-
// ---------------------------------------------------------------------------
|
|
57
|
-
/**
|
|
58
|
-
* Validate agent has permission to compile trait compositions.
|
|
59
|
-
* Skips validation when no token is provided (backwards compatibility / testing).
|
|
60
|
-
*/
|
|
61
|
-
validateAccess(agentToken) {
|
|
62
|
-
if (!agentToken) return;
|
|
63
|
-
const rbac = getRBAC();
|
|
64
|
-
const decision = rbac.checkAccess({
|
|
65
|
-
token: agentToken,
|
|
66
|
-
resourceType: "ast" /* AST */,
|
|
67
|
-
operation: "read",
|
|
68
|
-
expectedWorkflowStep: "generate_assembly" /* GENERATE_ASSEMBLY */
|
|
69
|
-
});
|
|
70
|
-
if (!decision.allowed) {
|
|
71
|
-
throw new UnauthorizedTraitCompositionAccessError(decision, "TraitCompositionCompiler");
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// ---------------------------------------------------------------------------
|
|
75
|
-
// Private
|
|
76
|
-
// ---------------------------------------------------------------------------
|
|
77
|
-
compileOne(decl, getHandler, traitGraph) {
|
|
78
|
-
const handlers = decl.components.map((name) => {
|
|
79
|
-
const handler = getHandler(name);
|
|
80
|
-
if (!handler) throw new MissingComponentError(decl.name, name);
|
|
81
|
-
return { name, handler };
|
|
82
|
-
});
|
|
83
|
-
if (authorityWeight(decl.provenance?.context?.authorityLevel ?? 0) < 100) {
|
|
84
|
-
this.detectConflicts(handlers);
|
|
85
|
-
}
|
|
86
|
-
const semiring = new ProvenanceSemiring();
|
|
87
|
-
const applications = [];
|
|
88
|
-
for (const { name, handler } of handlers) {
|
|
89
|
-
let configAccumulator = {};
|
|
90
|
-
if (this.inheritanceResolver && this.inheritanceResolver.hasTrait(name)) {
|
|
91
|
-
const resolvedProps = this.inheritanceResolver.getFlattenedProperties(name);
|
|
92
|
-
configAccumulator = { ...resolvedProps };
|
|
93
|
-
}
|
|
94
|
-
if (handler.defaultConfig) {
|
|
95
|
-
configAccumulator = { ...configAccumulator, ...handler.defaultConfig };
|
|
96
|
-
}
|
|
97
|
-
applications.push({ name, config: configAccumulator });
|
|
98
|
-
}
|
|
99
|
-
if (decl.overrides) {
|
|
100
|
-
applications.push({
|
|
101
|
-
name: `${decl.name}_overrides`,
|
|
102
|
-
config: decl.overrides,
|
|
103
|
-
context: { authorityLevel: Number.MAX_SAFE_INTEGER }
|
|
104
|
-
// Overrides always win!
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
const { config: merged, errors } = semiring.add(applications);
|
|
108
|
-
if (errors.length > 0) {
|
|
109
|
-
const match = errors[0].match(/Composition conflict: @(.+) and @(.+) both supply '(.+)'/);
|
|
110
|
-
if (match) {
|
|
111
|
-
throw new CompositionConflictError(match[1], match[2], match[3]);
|
|
112
|
-
} else {
|
|
113
|
-
throw new CompositionConflictError("Merge", "Failure", errors[0]);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
if (this.inheritanceResolver && decl.components.length > 1) {
|
|
117
|
-
const diamonds = this.inheritanceResolver.detectDiamondInheritance(decl.components);
|
|
118
|
-
for (const diamond of diamonds) {
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
if (traitGraph) {
|
|
122
|
-
traitGraph.registerTrait({
|
|
123
|
-
name: decl.name,
|
|
124
|
-
requires: decl.components,
|
|
125
|
-
conflicts: []
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
return {
|
|
129
|
-
name: decl.name,
|
|
130
|
-
components: decl.components,
|
|
131
|
-
defaultConfig: merged
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Naive conflict check: if handler A's `conflicts` array includes handler B's
|
|
136
|
-
* name (or vice-versa), throw.
|
|
137
|
-
*/
|
|
138
|
-
detectConflicts(handlers) {
|
|
139
|
-
for (let i = 0; i < handlers.length; i++) {
|
|
140
|
-
const a = handlers[i];
|
|
141
|
-
const aConflicts = a.handler.conflicts ?? [];
|
|
142
|
-
for (let j = i + 1; j < handlers.length; j++) {
|
|
143
|
-
const b = handlers[j];
|
|
144
|
-
const bConflicts = b.handler.conflicts ?? [];
|
|
145
|
-
if (aConflicts.includes(b.name) || bConflicts.includes(a.name)) {
|
|
146
|
-
throw new CompositionConflictError(a.name, b.name, b.name);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
var UnauthorizedTraitCompositionAccessError = class extends Error {
|
|
153
|
-
constructor(decision, compilerName) {
|
|
154
|
-
super(
|
|
155
|
-
`[${compilerName}] Unauthorized access: ${decision.reason || "Access denied"}
|
|
156
|
-
Agent Role: ${decision.agentRole || "unknown"}
|
|
157
|
-
Required Permission: ${decision.requiredPermission || "unknown"}`
|
|
158
|
-
);
|
|
159
|
-
this.decision = decision;
|
|
160
|
-
this.compilerName = compilerName;
|
|
161
|
-
this.name = "UnauthorizedTraitCompositionAccessError";
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
export { CompositionConflictError, MissingComponentError, TraitCompositionCompiler, UnauthorizedTraitCompositionAccessError };
|
|
166
|
-
//# sourceMappingURL=chunk-Y5MUAYTO.js.map
|
|
167
|
-
//# sourceMappingURL=chunk-Y5MUAYTO.js.map
|