@holoscript/core 2.0.1 → 2.1.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/dist/chunk-2XXE34KS.js +344 -0
- package/dist/chunk-2XXE34KS.js.map +1 -0
- package/dist/chunk-3X2EGU7Z.cjs +52 -0
- package/dist/chunk-3X2EGU7Z.cjs.map +1 -0
- package/dist/chunk-AFFVFO4D.js +1689 -0
- package/dist/chunk-AFFVFO4D.js.map +1 -0
- package/dist/chunk-DGUM43GV.js +10 -0
- package/dist/chunk-DGUM43GV.js.map +1 -0
- package/{src/HoloScriptDebugger.ts → dist/chunk-DOY73HDH.js} +118 -257
- package/dist/chunk-DOY73HDH.js.map +1 -0
- package/dist/chunk-JEQ2X3Z6.cjs +12 -0
- package/dist/chunk-JEQ2X3Z6.cjs.map +1 -0
- package/dist/chunk-L6VLNVKP.cjs +1691 -0
- package/dist/chunk-L6VLNVKP.cjs.map +1 -0
- package/dist/chunk-MFNO57XL.cjs +347 -0
- package/dist/chunk-MFNO57XL.cjs.map +1 -0
- package/dist/chunk-R75MREOS.cjs +424 -0
- package/dist/chunk-R75MREOS.cjs.map +1 -0
- package/dist/chunk-SATNCODL.js +45 -0
- package/dist/chunk-SATNCODL.js.map +1 -0
- package/dist/chunk-T57ZL7KR.cjs +1281 -0
- package/dist/chunk-T57ZL7KR.cjs.map +1 -0
- package/dist/chunk-U72GEJZT.js +1279 -0
- package/dist/chunk-U72GEJZT.js.map +1 -0
- package/dist/debugger.cjs +20 -0
- package/dist/debugger.cjs.map +1 -0
- package/dist/debugger.d.cts +171 -0
- package/dist/debugger.d.ts +171 -0
- package/dist/debugger.js +7 -0
- package/dist/debugger.js.map +1 -0
- package/dist/index.cjs +6803 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +4093 -0
- package/dist/index.d.ts +4093 -0
- package/dist/index.js +6715 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.cjs +14 -0
- package/dist/parser.cjs.map +1 -0
- package/dist/parser.d.cts +172 -0
- package/dist/parser.d.ts +172 -0
- package/dist/parser.js +5 -0
- package/dist/parser.js.map +1 -0
- package/dist/runtime.cjs +14 -0
- package/dist/runtime.cjs.map +1 -0
- package/dist/runtime.d.cts +200 -0
- package/dist/runtime.d.ts +200 -0
- package/dist/runtime.js +5 -0
- package/dist/runtime.js.map +1 -0
- package/dist/type-checker.cjs +17 -0
- package/dist/type-checker.cjs.map +1 -0
- package/dist/type-checker.d.cts +105 -0
- package/dist/type-checker.d.ts +105 -0
- package/dist/type-checker.js +4 -0
- package/dist/type-checker.js.map +1 -0
- package/dist/types-4h8cbtF_.d.cts +329 -0
- package/dist/types-4h8cbtF_.d.ts +329 -0
- package/package.json +17 -13
- package/src/HoloScript2DParser.js +0 -227
- package/src/HoloScript2DParser.ts +0 -261
- package/src/HoloScriptCodeParser.js +0 -1102
- package/src/HoloScriptCodeParser.ts +0 -1188
- package/src/HoloScriptDebugger.js +0 -458
- package/src/HoloScriptParser.js +0 -338
- package/src/HoloScriptParser.ts +0 -397
- package/src/HoloScriptPlusParser.js +0 -371
- package/src/HoloScriptPlusParser.ts +0 -543
- package/src/HoloScriptRuntime.js +0 -1399
- package/src/HoloScriptRuntime.test.js +0 -351
- package/src/HoloScriptRuntime.test.ts +0 -436
- package/src/HoloScriptRuntime.ts +0 -1653
- package/src/HoloScriptTypeChecker.js +0 -356
- package/src/HoloScriptTypeChecker.ts +0 -475
- package/src/__tests__/GraphicsServices.test.js +0 -357
- package/src/__tests__/GraphicsServices.test.ts +0 -427
- package/src/__tests__/HoloScriptPlusParser.test.js +0 -317
- package/src/__tests__/HoloScriptPlusParser.test.ts +0 -392
- package/src/__tests__/integration.test.js +0 -336
- package/src/__tests__/integration.test.ts +0 -416
- package/src/__tests__/performance.bench.js +0 -218
- package/src/__tests__/performance.bench.ts +0 -262
- package/src/__tests__/type-checker.test.js +0 -60
- package/src/__tests__/type-checker.test.ts +0 -73
- package/src/index.js +0 -217
- package/src/index.ts +0 -426
- package/src/interop/Interoperability.js +0 -413
- package/src/interop/Interoperability.ts +0 -494
- package/src/logger.js +0 -42
- package/src/logger.ts +0 -57
- package/src/parser/EnhancedParser.js +0 -205
- package/src/parser/EnhancedParser.ts +0 -251
- package/src/parser/HoloScriptPlusParser.js +0 -928
- package/src/parser/HoloScriptPlusParser.ts +0 -1089
- package/src/runtime/HoloScriptPlusRuntime.js +0 -674
- package/src/runtime/HoloScriptPlusRuntime.ts +0 -861
- package/src/runtime/PerformanceTelemetry.js +0 -323
- package/src/runtime/PerformanceTelemetry.ts +0 -467
- package/src/runtime/RuntimeOptimization.js +0 -361
- package/src/runtime/RuntimeOptimization.ts +0 -416
- package/src/services/HololandGraphicsPipelineService.js +0 -506
- package/src/services/HololandGraphicsPipelineService.ts +0 -662
- package/src/services/PlatformPerformanceOptimizer.js +0 -356
- package/src/services/PlatformPerformanceOptimizer.ts +0 -503
- package/src/state/ReactiveState.js +0 -427
- package/src/state/ReactiveState.ts +0 -572
- package/src/tools/DeveloperExperience.js +0 -376
- package/src/tools/DeveloperExperience.ts +0 -438
- package/src/traits/AIDriverTrait.js +0 -322
- package/src/traits/AIDriverTrait.test.js +0 -329
- package/src/traits/AIDriverTrait.test.ts +0 -357
- package/src/traits/AIDriverTrait.ts +0 -474
- package/src/traits/LightingTrait.js +0 -313
- package/src/traits/LightingTrait.test.js +0 -410
- package/src/traits/LightingTrait.test.ts +0 -462
- package/src/traits/LightingTrait.ts +0 -505
- package/src/traits/MaterialTrait.js +0 -194
- package/src/traits/MaterialTrait.test.js +0 -286
- package/src/traits/MaterialTrait.test.ts +0 -329
- package/src/traits/MaterialTrait.ts +0 -324
- package/src/traits/RenderingTrait.js +0 -356
- package/src/traits/RenderingTrait.test.js +0 -363
- package/src/traits/RenderingTrait.test.ts +0 -427
- package/src/traits/RenderingTrait.ts +0 -555
- package/src/traits/VRTraitSystem.js +0 -740
- package/src/traits/VRTraitSystem.ts +0 -1040
- package/src/traits/VoiceInputTrait.js +0 -284
- package/src/traits/VoiceInputTrait.test.js +0 -226
- package/src/traits/VoiceInputTrait.test.ts +0 -252
- package/src/traits/VoiceInputTrait.ts +0 -401
- package/src/types/AdvancedTypeSystem.js +0 -226
- package/src/types/AdvancedTypeSystem.ts +0 -494
- package/src/types/HoloScriptPlus.d.ts +0 -853
- package/src/types.js +0 -6
- package/src/types.ts +0 -369
- package/tsconfig.json +0 -23
- package/tsup.config.d.ts +0 -2
- package/tsup.config.js +0 -18
- package/tsup.config.ts +0 -19
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HoloScript Performance Benchmarks
|
|
3
|
-
*
|
|
4
|
-
* Measures parsing, execution, and type checking performance.
|
|
5
|
-
* Run with: npx vitest bench
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { describe, bench, beforeAll } from 'vitest';
|
|
9
|
-
import { HoloScriptCodeParser } from '../HoloScriptCodeParser';
|
|
10
|
-
import { HoloScriptRuntime } from '../HoloScriptRuntime';
|
|
11
|
-
import { HoloScriptTypeChecker } from '../HoloScriptTypeChecker';
|
|
12
|
-
import type { ASTNode } from '../types';
|
|
13
|
-
|
|
14
|
-
// Test data
|
|
15
|
-
const SIMPLE_ORB = `
|
|
16
|
-
orb testOrb {
|
|
17
|
-
name: "TestOrb"
|
|
18
|
-
color: "#ff0000"
|
|
19
|
-
glow: true
|
|
20
|
-
}
|
|
21
|
-
`;
|
|
22
|
-
|
|
23
|
-
const MULTIPLE_ORBS = Array.from({ length: 10 }, (_, i) => `
|
|
24
|
-
orb orb${i} {
|
|
25
|
-
name: "Orb${i}"
|
|
26
|
-
color: "#${i.toString(16).padStart(6, '0')}"
|
|
27
|
-
value: ${i * 10}
|
|
28
|
-
}
|
|
29
|
-
`).join('\n');
|
|
30
|
-
|
|
31
|
-
const COMPLEX_PROGRAM = `
|
|
32
|
-
orb dataSource {
|
|
33
|
-
name: "DataSource"
|
|
34
|
-
rate: 100
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
orb processor {
|
|
38
|
-
name: "Processor"
|
|
39
|
-
capacity: 1000
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
orb output {
|
|
43
|
-
name: "Output"
|
|
44
|
-
format: "json"
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function processData(input: number): number {
|
|
48
|
-
return input * 2
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function validateInput(data: object): boolean {
|
|
52
|
-
return true
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
connect dataSource to processor as "raw"
|
|
56
|
-
connect processor to output as "processed"
|
|
57
|
-
`;
|
|
58
|
-
|
|
59
|
-
const FUNCTIONS_PROGRAM = Array.from({ length: 20 }, (_, i) => `
|
|
60
|
-
function func${i}(x: number): number {
|
|
61
|
-
return x + ${i}
|
|
62
|
-
}
|
|
63
|
-
`).join('\n');
|
|
64
|
-
|
|
65
|
-
describe('Parser Performance', () => {
|
|
66
|
-
let parser: HoloScriptCodeParser;
|
|
67
|
-
|
|
68
|
-
beforeAll(() => {
|
|
69
|
-
parser = new HoloScriptCodeParser();
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
bench('parse simple orb', () => {
|
|
73
|
-
parser.parse(SIMPLE_ORB);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
bench('parse 10 orbs', () => {
|
|
77
|
-
parser.parse(MULTIPLE_ORBS);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
bench('parse complex program', () => {
|
|
81
|
-
parser.parse(COMPLEX_PROGRAM);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
bench('parse 20 functions', () => {
|
|
85
|
-
parser.parse(FUNCTIONS_PROGRAM);
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
bench('tokenize simple orb', () => {
|
|
89
|
-
// @ts-expect-error - accessing private method for benchmark
|
|
90
|
-
parser.tokenize(SIMPLE_ORB);
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
bench('tokenize complex program', () => {
|
|
94
|
-
// @ts-expect-error - accessing private method for benchmark
|
|
95
|
-
parser.tokenize(COMPLEX_PROGRAM);
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
describe('Runtime Performance', () => {
|
|
100
|
-
let parser: HoloScriptCodeParser;
|
|
101
|
-
let runtime: HoloScriptRuntime;
|
|
102
|
-
let simpleAST: ASTNode[];
|
|
103
|
-
let complexAST: ASTNode[];
|
|
104
|
-
|
|
105
|
-
beforeAll(() => {
|
|
106
|
-
parser = new HoloScriptCodeParser();
|
|
107
|
-
runtime = new HoloScriptRuntime();
|
|
108
|
-
|
|
109
|
-
const simpleResult = parser.parse(SIMPLE_ORB);
|
|
110
|
-
simpleAST = simpleResult.ast;
|
|
111
|
-
|
|
112
|
-
const complexResult = parser.parse(COMPLEX_PROGRAM);
|
|
113
|
-
complexAST = complexResult.ast;
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
bench('execute simple orb', async () => {
|
|
117
|
-
runtime.reset();
|
|
118
|
-
await runtime.executeProgram(simpleAST);
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
bench('execute complex program', async () => {
|
|
122
|
-
runtime.reset();
|
|
123
|
-
await runtime.executeProgram(complexAST);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
bench('execute single node', async () => {
|
|
127
|
-
if (simpleAST.length > 0) {
|
|
128
|
-
await runtime.executeNode(simpleAST[0]);
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
bench('runtime reset', () => {
|
|
133
|
-
runtime.reset();
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
bench('get context', () => {
|
|
137
|
-
runtime.getContext();
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
bench('set/get variable', () => {
|
|
141
|
-
runtime.setVariable('benchVar', 42);
|
|
142
|
-
runtime.getVariable('benchVar');
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
describe('Type Checker Performance', () => {
|
|
147
|
-
let parser: HoloScriptCodeParser;
|
|
148
|
-
let typeChecker: HoloScriptTypeChecker;
|
|
149
|
-
let simpleAST: ASTNode[];
|
|
150
|
-
let complexAST: ASTNode[];
|
|
151
|
-
let functionsAST: ASTNode[];
|
|
152
|
-
|
|
153
|
-
beforeAll(() => {
|
|
154
|
-
parser = new HoloScriptCodeParser();
|
|
155
|
-
typeChecker = new HoloScriptTypeChecker();
|
|
156
|
-
|
|
157
|
-
const simpleResult = parser.parse(SIMPLE_ORB);
|
|
158
|
-
simpleAST = simpleResult.ast;
|
|
159
|
-
|
|
160
|
-
const complexResult = parser.parse(COMPLEX_PROGRAM);
|
|
161
|
-
complexAST = complexResult.ast;
|
|
162
|
-
|
|
163
|
-
const functionsResult = parser.parse(FUNCTIONS_PROGRAM);
|
|
164
|
-
functionsAST = functionsResult.ast;
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
bench('type check simple orb', () => {
|
|
168
|
-
typeChecker.check(simpleAST);
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
bench('type check complex program', () => {
|
|
172
|
-
typeChecker.check(complexAST);
|
|
173
|
-
});
|
|
174
|
-
|
|
175
|
-
bench('type check 20 functions', () => {
|
|
176
|
-
typeChecker.check(functionsAST);
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
bench('get all types', () => {
|
|
180
|
-
typeChecker.check(complexAST);
|
|
181
|
-
typeChecker.getAllTypes();
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
describe('Full Pipeline Performance', () => {
|
|
186
|
-
let parser: HoloScriptCodeParser;
|
|
187
|
-
let runtime: HoloScriptRuntime;
|
|
188
|
-
let typeChecker: HoloScriptTypeChecker;
|
|
189
|
-
|
|
190
|
-
beforeAll(() => {
|
|
191
|
-
parser = new HoloScriptCodeParser();
|
|
192
|
-
runtime = new HoloScriptRuntime();
|
|
193
|
-
typeChecker = new HoloScriptTypeChecker();
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
bench('full pipeline: parse -> type check -> execute (simple)', async () => {
|
|
197
|
-
const parseResult = parser.parse(SIMPLE_ORB);
|
|
198
|
-
typeChecker.check(parseResult.ast);
|
|
199
|
-
runtime.reset();
|
|
200
|
-
await runtime.executeProgram(parseResult.ast);
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
bench('full pipeline: parse -> type check -> execute (complex)', async () => {
|
|
204
|
-
const parseResult = parser.parse(COMPLEX_PROGRAM);
|
|
205
|
-
typeChecker.check(parseResult.ast);
|
|
206
|
-
runtime.reset();
|
|
207
|
-
await runtime.executeProgram(parseResult.ast);
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
bench('parse only (no execution)', () => {
|
|
211
|
-
parser.parse(COMPLEX_PROGRAM);
|
|
212
|
-
});
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
describe('Memory and Scalability', () => {
|
|
216
|
-
let parser: HoloScriptCodeParser;
|
|
217
|
-
let runtime: HoloScriptRuntime;
|
|
218
|
-
|
|
219
|
-
beforeAll(() => {
|
|
220
|
-
parser = new HoloScriptCodeParser();
|
|
221
|
-
runtime = new HoloScriptRuntime();
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
bench('parse 100 orbs', () => {
|
|
225
|
-
const largeProgram = Array.from({ length: 100 }, (_, i) => `
|
|
226
|
-
orb orb${i} {
|
|
227
|
-
name: "Orb${i}"
|
|
228
|
-
value: ${i}
|
|
229
|
-
}
|
|
230
|
-
`).join('\n');
|
|
231
|
-
parser.parse(largeProgram);
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
bench('execute 50 orbs', async () => {
|
|
235
|
-
const program = Array.from({ length: 50 }, (_, i) => `
|
|
236
|
-
orb orb${i} {
|
|
237
|
-
name: "Orb${i}"
|
|
238
|
-
}
|
|
239
|
-
`).join('\n');
|
|
240
|
-
|
|
241
|
-
const result = parser.parse(program);
|
|
242
|
-
runtime.reset();
|
|
243
|
-
await runtime.executeProgram(result.ast);
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
bench('many connections', () => {
|
|
247
|
-
const program = `
|
|
248
|
-
orb source { name: "Source" }
|
|
249
|
-
orb a { name: "A" }
|
|
250
|
-
orb b { name: "B" }
|
|
251
|
-
orb c { name: "C" }
|
|
252
|
-
orb d { name: "D" }
|
|
253
|
-
orb target { name: "Target" }
|
|
254
|
-
connect source to a as "data"
|
|
255
|
-
connect a to b as "data"
|
|
256
|
-
connect b to c as "data"
|
|
257
|
-
connect c to d as "data"
|
|
258
|
-
connect d to target as "data"
|
|
259
|
-
`;
|
|
260
|
-
parser.parse(program);
|
|
261
|
-
});
|
|
262
|
-
});
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HoloScriptTypeChecker Tests - Simplified
|
|
3
|
-
*
|
|
4
|
-
* Tests for type checking system
|
|
5
|
-
*/
|
|
6
|
-
import { describe, it, expect, beforeEach } from 'vitest';
|
|
7
|
-
import { HoloScriptTypeChecker } from '../HoloScriptTypeChecker';
|
|
8
|
-
describe('HoloScriptTypeChecker', () => {
|
|
9
|
-
let typeChecker;
|
|
10
|
-
beforeEach(() => {
|
|
11
|
-
typeChecker = new HoloScriptTypeChecker();
|
|
12
|
-
});
|
|
13
|
-
describe('Type Inference', () => {
|
|
14
|
-
it('should initialize type checker', () => {
|
|
15
|
-
expect(typeChecker).toBeDefined();
|
|
16
|
-
});
|
|
17
|
-
it('should infer number type', () => {
|
|
18
|
-
const result = typeChecker.inferType(42);
|
|
19
|
-
expect(result.type).toBe('number');
|
|
20
|
-
});
|
|
21
|
-
it('should infer string type', () => {
|
|
22
|
-
const result = typeChecker.inferType('hello');
|
|
23
|
-
expect(result.type).toBe('string');
|
|
24
|
-
});
|
|
25
|
-
it('should infer boolean type', () => {
|
|
26
|
-
const result = typeChecker.inferType(true);
|
|
27
|
-
expect(result.type).toBe('boolean');
|
|
28
|
-
});
|
|
29
|
-
it('should infer array type', () => {
|
|
30
|
-
const result = typeChecker.inferType([1, 2, 3]);
|
|
31
|
-
expect(result.type).toBe('array');
|
|
32
|
-
expect(result.elementType).toBe('number');
|
|
33
|
-
});
|
|
34
|
-
it('should infer object type', () => {
|
|
35
|
-
const result = typeChecker.inferType({ x: 1 });
|
|
36
|
-
expect(result.type).toBe('object');
|
|
37
|
-
expect(result.properties?.size).toBeGreaterThan(0);
|
|
38
|
-
});
|
|
39
|
-
it('should infer null/undefined as any with nullable', () => {
|
|
40
|
-
const result = typeChecker.inferType(null);
|
|
41
|
-
expect(result.type).toBe('any');
|
|
42
|
-
expect(result.nullable).toBe(true);
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
describe('Type Checking', () => {
|
|
46
|
-
it('should check AST nodes', () => {
|
|
47
|
-
const ast = [];
|
|
48
|
-
const result = typeChecker.check(ast);
|
|
49
|
-
expect(result.valid).toBeDefined();
|
|
50
|
-
expect(result.diagnostics).toBeDefined();
|
|
51
|
-
expect(result.typeMap).toBeDefined();
|
|
52
|
-
});
|
|
53
|
-
it('should return valid result for empty AST', () => {
|
|
54
|
-
const ast = [];
|
|
55
|
-
const result = typeChecker.check(ast);
|
|
56
|
-
expect(result.valid).toBe(true);
|
|
57
|
-
expect(result.diagnostics.length).toBe(0);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
});
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HoloScriptTypeChecker Tests - Simplified
|
|
3
|
-
*
|
|
4
|
-
* Tests for type checking system
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { describe, it, expect, beforeEach } from 'vitest';
|
|
8
|
-
import { HoloScriptTypeChecker } from '../HoloScriptTypeChecker';
|
|
9
|
-
|
|
10
|
-
describe('HoloScriptTypeChecker', () => {
|
|
11
|
-
let typeChecker: HoloScriptTypeChecker;
|
|
12
|
-
|
|
13
|
-
beforeEach(() => {
|
|
14
|
-
typeChecker = new HoloScriptTypeChecker();
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
describe('Type Inference', () => {
|
|
18
|
-
it('should initialize type checker', () => {
|
|
19
|
-
expect(typeChecker).toBeDefined();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('should infer number type', () => {
|
|
23
|
-
const result = typeChecker.inferType(42);
|
|
24
|
-
expect(result.type).toBe('number');
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('should infer string type', () => {
|
|
28
|
-
const result = typeChecker.inferType('hello');
|
|
29
|
-
expect(result.type).toBe('string');
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it('should infer boolean type', () => {
|
|
33
|
-
const result = typeChecker.inferType(true);
|
|
34
|
-
expect(result.type).toBe('boolean');
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it('should infer array type', () => {
|
|
38
|
-
const result = typeChecker.inferType([1, 2, 3]);
|
|
39
|
-
expect(result.type).toBe('array');
|
|
40
|
-
expect(result.elementType).toBe('number');
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('should infer object type', () => {
|
|
44
|
-
const result = typeChecker.inferType({ x: 1 });
|
|
45
|
-
expect(result.type).toBe('object');
|
|
46
|
-
expect(result.properties?.size).toBeGreaterThan(0);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it('should infer null/undefined as any with nullable', () => {
|
|
50
|
-
const result = typeChecker.inferType(null);
|
|
51
|
-
expect(result.type).toBe('any');
|
|
52
|
-
expect(result.nullable).toBe(true);
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
describe('Type Checking', () => {
|
|
57
|
-
it('should check AST nodes', () => {
|
|
58
|
-
const ast: any[] = [];
|
|
59
|
-
const result = typeChecker.check(ast);
|
|
60
|
-
expect(result.valid).toBeDefined();
|
|
61
|
-
expect(result.diagnostics).toBeDefined();
|
|
62
|
-
expect(result.typeMap).toBeDefined();
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
it('should return valid result for empty AST', () => {
|
|
66
|
-
const ast: any[] = [];
|
|
67
|
-
const result = typeChecker.check(ast);
|
|
68
|
-
expect(result.valid).toBe(true);
|
|
69
|
-
expect(result.diagnostics.length).toBe(0);
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
|
package/src/index.js
DELETED
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @holoscript/core
|
|
3
|
-
*
|
|
4
|
-
* HoloScript+ - VR language with declarative syntax, state management, and VR interactions.
|
|
5
|
-
* Enhanced version of HoloScript with:
|
|
6
|
-
* - VR interaction traits (@grabbable, @throwable, @hoverable, etc.)
|
|
7
|
-
* - Reactive state management (@state { ... })
|
|
8
|
-
* - Control flow (@for, @if directives)
|
|
9
|
-
* - TypeScript companion imports
|
|
10
|
-
* - Expression interpolation ${...}
|
|
11
|
-
*
|
|
12
|
-
* Fully backward compatible with original HoloScript syntax.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```typescript
|
|
16
|
-
* import { HoloScriptPlusParser, HoloScriptPlusRuntime } from '@holoscript/core';
|
|
17
|
-
*
|
|
18
|
-
* const parser = new HoloScriptPlusParser();
|
|
19
|
-
* const result = parser.parse(`
|
|
20
|
-
* orb#myOrb {
|
|
21
|
-
* position: [0, 0, 0]
|
|
22
|
-
* @grabbable(snap_to_hand: true)
|
|
23
|
-
* @throwable(bounce: true)
|
|
24
|
-
* }
|
|
25
|
-
* `);
|
|
26
|
-
*
|
|
27
|
-
* const runtime = new HoloScriptPlusRuntime(result.ast);
|
|
28
|
-
* await runtime.mount(document.body);
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* @packageDocumentation
|
|
32
|
-
*/
|
|
33
|
-
// Import for use in utility functions
|
|
34
|
-
import { HoloScriptParser } from './HoloScriptParser';
|
|
35
|
-
import { HoloScriptRuntime } from './HoloScriptRuntime';
|
|
36
|
-
// Parser
|
|
37
|
-
export { HoloScriptParser } from './HoloScriptParser';
|
|
38
|
-
export { HoloScript2DParser } from './HoloScript2DParser';
|
|
39
|
-
export { HoloScriptCodeParser } from './HoloScriptCodeParser';
|
|
40
|
-
// HoloScript+ Parser (NEW)
|
|
41
|
-
export { HoloScriptPlusParser, createParser, parse as parseHoloScriptPlus } from './parser/HoloScriptPlusParser';
|
|
42
|
-
// HoloScript+ Enhanced Parser with Trait Annotations (NEW - Phase 3)
|
|
43
|
-
export { HoloScriptPlusParser as HoloScriptTraitAnnotationParser, } from './HoloScriptPlusParser';
|
|
44
|
-
// Runtime
|
|
45
|
-
export { HoloScriptRuntime } from './HoloScriptRuntime';
|
|
46
|
-
// HoloScript+ Runtime (NEW)
|
|
47
|
-
export { HoloScriptPlusRuntimeImpl } from './runtime/HoloScriptPlusRuntime';
|
|
48
|
-
// HoloScript+ State Management (NEW)
|
|
49
|
-
export { ReactiveState, createState, reactive, effect, computed, bind } from './state/ReactiveState';
|
|
50
|
-
// HoloScript+ VR Traits (NEW)
|
|
51
|
-
export { VRTraitRegistry } from './traits/VRTraitSystem';
|
|
52
|
-
// HoloScript+ Voice Input Trait (NEW - Phase 1)
|
|
53
|
-
export { VoiceInputTrait, createVoiceInputTrait, } from './traits/VoiceInputTrait';
|
|
54
|
-
// HoloScript+ AI Driver NPC Trait (NEW - Phase 1)
|
|
55
|
-
export { AIDriverTrait, createAIDriverTrait, BehaviorTreeRunner, GOAPPlanner, } from './traits/AIDriverTrait';
|
|
56
|
-
// HoloScript+ Material Trait (NEW - Phase 2: Graphics)
|
|
57
|
-
export { MaterialTrait, createMaterialTrait, MATERIAL_PRESETS, } from './traits/MaterialTrait';
|
|
58
|
-
// HoloScript+ Lighting Trait (NEW - Phase 2: Graphics)
|
|
59
|
-
export { LightingTrait, createLightingTrait, LIGHTING_PRESETS, } from './traits/LightingTrait';
|
|
60
|
-
// HoloScript+ Rendering Trait (NEW - Phase 2: Graphics)
|
|
61
|
-
export { RenderingTrait, createRenderingTrait, } from './traits/RenderingTrait';
|
|
62
|
-
// Performance Telemetry (NEW - Phase 1)
|
|
63
|
-
export { PerformanceTelemetry, getPerformanceTelemetry, } from './runtime/PerformanceTelemetry';
|
|
64
|
-
// Hololand Graphics Pipeline Service (NEW - Phase 4)
|
|
65
|
-
export { HololandGraphicsPipelineService, } from './services/HololandGraphicsPipelineService';
|
|
66
|
-
// Platform Performance Optimizer (NEW - Phase 5)
|
|
67
|
-
export { PlatformPerformanceOptimizer, } from './services/PlatformPerformanceOptimizer';
|
|
68
|
-
// Type Checker
|
|
69
|
-
export { HoloScriptTypeChecker, createTypeChecker, } from './HoloScriptTypeChecker';
|
|
70
|
-
// Debugger
|
|
71
|
-
export { HoloScriptDebugger, createDebugger, } from './HoloScriptDebugger';
|
|
72
|
-
// Logger
|
|
73
|
-
export { logger, setHoloScriptLogger, enableConsoleLogging, resetLogger, NoOpLogger, ConsoleLogger, } from './logger';
|
|
74
|
-
// Version
|
|
75
|
-
export const HOLOSCRIPT_VERSION = '1.0.0-alpha.1';
|
|
76
|
-
// Supported Platforms
|
|
77
|
-
export const HOLOSCRIPT_SUPPORTED_PLATFORMS = [
|
|
78
|
-
'WebXR',
|
|
79
|
-
'Oculus Quest',
|
|
80
|
-
'HTC Vive',
|
|
81
|
-
'Valve Index',
|
|
82
|
-
'Apple Vision Pro',
|
|
83
|
-
'Windows Mixed Reality',
|
|
84
|
-
];
|
|
85
|
-
// Voice Commands Reference
|
|
86
|
-
export const HOLOSCRIPT_VOICE_COMMANDS = [
|
|
87
|
-
// 3D VR Commands
|
|
88
|
-
'create orb [name]',
|
|
89
|
-
'summon function [name]',
|
|
90
|
-
'connect [from] to [to]',
|
|
91
|
-
'execute [function]',
|
|
92
|
-
'debug program',
|
|
93
|
-
'visualize [data]',
|
|
94
|
-
'gate [condition]',
|
|
95
|
-
'stream [source] through [transformations]',
|
|
96
|
-
// 2D UI Commands
|
|
97
|
-
'create button [name]',
|
|
98
|
-
'add textinput [name]',
|
|
99
|
-
'create panel [name]',
|
|
100
|
-
'add slider [name]',
|
|
101
|
-
];
|
|
102
|
-
// Gesture Reference
|
|
103
|
-
export const HOLOSCRIPT_GESTURES = [
|
|
104
|
-
'pinch - create object',
|
|
105
|
-
'swipe - connect objects',
|
|
106
|
-
'rotate - modify properties',
|
|
107
|
-
'grab - select object',
|
|
108
|
-
'spread - expand view',
|
|
109
|
-
'fist - execute action',
|
|
110
|
-
];
|
|
111
|
-
// Demo Scripts
|
|
112
|
-
export const HOLOSCRIPT_DEMO_SCRIPTS = {
|
|
113
|
-
helloWorld: `orb greeting {
|
|
114
|
-
message: "Hello, HoloScript World!"
|
|
115
|
-
color: "#00ffff"
|
|
116
|
-
glow: true
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
function displayGreeting() {
|
|
120
|
-
show greeting
|
|
121
|
-
}`,
|
|
122
|
-
aiAgent: `orb agentCore {
|
|
123
|
-
personality: "helpful"
|
|
124
|
-
capabilities: ["conversation", "problem_solving", "learning"]
|
|
125
|
-
energy: 100
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
function processQuery(query: string): string {
|
|
129
|
-
analyze query
|
|
130
|
-
generate response
|
|
131
|
-
return response
|
|
132
|
-
}`,
|
|
133
|
-
neuralNetwork: `orb inputLayer { neurons: 784 }
|
|
134
|
-
orb hiddenLayer { neurons: 128 }
|
|
135
|
-
orb outputLayer { neurons: 10 }
|
|
136
|
-
|
|
137
|
-
connect inputLayer to hiddenLayer as "weights"
|
|
138
|
-
connect hiddenLayer to outputLayer as "weights"
|
|
139
|
-
|
|
140
|
-
function trainNetwork(data: array): object {
|
|
141
|
-
forward_pass data
|
|
142
|
-
calculate_loss
|
|
143
|
-
backward_pass
|
|
144
|
-
update_weights
|
|
145
|
-
return metrics
|
|
146
|
-
}`,
|
|
147
|
-
loginForm: `button loginBtn {
|
|
148
|
-
text: "Login"
|
|
149
|
-
x: 100
|
|
150
|
-
y: 150
|
|
151
|
-
width: 200
|
|
152
|
-
height: 40
|
|
153
|
-
onClick: handleLogin
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
textinput usernameInput {
|
|
157
|
-
placeholder: "Username"
|
|
158
|
-
x: 100
|
|
159
|
-
y: 50
|
|
160
|
-
width: 200
|
|
161
|
-
height: 36
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
textinput passwordInput {
|
|
165
|
-
placeholder: "Password"
|
|
166
|
-
x: 100
|
|
167
|
-
y: 100
|
|
168
|
-
width: 200
|
|
169
|
-
height: 36
|
|
170
|
-
}`,
|
|
171
|
-
dashboard: `panel sidebar {
|
|
172
|
-
x: 0
|
|
173
|
-
y: 0
|
|
174
|
-
width: 200
|
|
175
|
-
height: 600
|
|
176
|
-
backgroundColor: "#2c3e50"
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
text title {
|
|
180
|
-
content: "Dashboard"
|
|
181
|
-
x: 220
|
|
182
|
-
y: 20
|
|
183
|
-
fontSize: 24
|
|
184
|
-
color: "#34495e"
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
button refreshBtn {
|
|
188
|
-
text: "Refresh Data"
|
|
189
|
-
x: 220
|
|
190
|
-
y: 60
|
|
191
|
-
onClick: refreshData
|
|
192
|
-
}`,
|
|
193
|
-
};
|
|
194
|
-
// Utility Functions
|
|
195
|
-
/**
|
|
196
|
-
* Create a pre-configured HoloScript environment
|
|
197
|
-
*/
|
|
198
|
-
export function createHoloScriptEnvironment() {
|
|
199
|
-
return {
|
|
200
|
-
parser: new HoloScriptParser(),
|
|
201
|
-
runtime: new HoloScriptRuntime(),
|
|
202
|
-
version: HOLOSCRIPT_VERSION,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Check if the current environment supports VR/XR
|
|
207
|
-
*/
|
|
208
|
-
export function isHoloScriptSupported() {
|
|
209
|
-
if (typeof globalThis === 'undefined')
|
|
210
|
-
return false;
|
|
211
|
-
const win = globalThis;
|
|
212
|
-
if (!win.window)
|
|
213
|
-
return false;
|
|
214
|
-
return !!(win.window.navigator?.xr ||
|
|
215
|
-
win.window.navigator?.getVRDisplays ||
|
|
216
|
-
win.window.webkitGetUserMedia);
|
|
217
|
-
}
|