@holoscript/core 1.0.0-alpha.1 → 2.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/package.json +10 -9
- package/src/HoloScript2DParser.js +227 -0
- package/src/HoloScript2DParser.ts +5 -0
- package/src/HoloScriptCodeParser.js +1102 -0
- package/src/HoloScriptCodeParser.ts +145 -20
- package/src/HoloScriptDebugger.js +458 -0
- package/src/HoloScriptParser.js +338 -0
- package/src/HoloScriptPlusParser.js +371 -0
- package/src/HoloScriptPlusParser.ts +543 -0
- package/src/HoloScriptRuntime.js +1399 -0
- package/src/HoloScriptRuntime.test.js +351 -0
- package/src/HoloScriptRuntime.ts +257 -3
- package/src/HoloScriptTypeChecker.js +356 -0
- package/src/__tests__/GraphicsServices.test.js +357 -0
- package/src/__tests__/GraphicsServices.test.ts +427 -0
- package/src/__tests__/HoloScriptPlusParser.test.js +317 -0
- package/src/__tests__/HoloScriptPlusParser.test.ts +392 -0
- package/src/__tests__/integration.test.js +336 -0
- package/src/__tests__/performance.bench.js +218 -0
- package/src/__tests__/type-checker.test.js +60 -0
- package/src/__tests__/type-checker.test.ts +73 -0
- package/src/index.js +217 -0
- package/src/index.ts +158 -18
- package/src/interop/Interoperability.js +413 -0
- package/src/interop/Interoperability.ts +494 -0
- package/src/logger.js +42 -0
- package/src/parser/EnhancedParser.js +205 -0
- package/src/parser/EnhancedParser.ts +251 -0
- package/src/parser/HoloScriptPlusParser.js +928 -0
- package/src/parser/HoloScriptPlusParser.ts +1089 -0
- package/src/runtime/HoloScriptPlusRuntime.js +674 -0
- package/src/runtime/HoloScriptPlusRuntime.ts +861 -0
- package/src/runtime/PerformanceTelemetry.js +323 -0
- package/src/runtime/PerformanceTelemetry.ts +467 -0
- package/src/runtime/RuntimeOptimization.js +361 -0
- package/src/runtime/RuntimeOptimization.ts +416 -0
- package/src/services/HololandGraphicsPipelineService.js +506 -0
- package/src/services/HololandGraphicsPipelineService.ts +662 -0
- package/src/services/PlatformPerformanceOptimizer.js +356 -0
- package/src/services/PlatformPerformanceOptimizer.ts +503 -0
- package/src/state/ReactiveState.js +427 -0
- package/src/state/ReactiveState.ts +572 -0
- package/src/tools/DeveloperExperience.js +376 -0
- package/src/tools/DeveloperExperience.ts +438 -0
- package/src/traits/AIDriverTrait.js +322 -0
- package/src/traits/AIDriverTrait.test.js +329 -0
- package/src/traits/AIDriverTrait.test.ts +357 -0
- package/src/traits/AIDriverTrait.ts +474 -0
- package/src/traits/LightingTrait.js +313 -0
- package/src/traits/LightingTrait.test.js +410 -0
- package/src/traits/LightingTrait.test.ts +462 -0
- package/src/traits/LightingTrait.ts +505 -0
- package/src/traits/MaterialTrait.js +194 -0
- package/src/traits/MaterialTrait.test.js +286 -0
- package/src/traits/MaterialTrait.test.ts +329 -0
- package/src/traits/MaterialTrait.ts +324 -0
- package/src/traits/RenderingTrait.js +356 -0
- package/src/traits/RenderingTrait.test.js +363 -0
- package/src/traits/RenderingTrait.test.ts +427 -0
- package/src/traits/RenderingTrait.ts +555 -0
- package/src/traits/VRTraitSystem.js +740 -0
- package/src/traits/VRTraitSystem.ts +1040 -0
- package/src/traits/VoiceInputTrait.js +284 -0
- package/src/traits/VoiceInputTrait.test.js +226 -0
- package/src/traits/VoiceInputTrait.test.ts +252 -0
- package/src/traits/VoiceInputTrait.ts +401 -0
- package/src/types/AdvancedTypeSystem.js +226 -0
- package/src/types/AdvancedTypeSystem.ts +494 -0
- package/src/types/HoloScriptPlus.d.ts +853 -0
- package/src/types.js +6 -0
- package/src/types.ts +96 -1
- package/tsconfig.json +1 -1
- package/tsup.config.d.ts +2 -0
- package/tsup.config.js +18 -0
- package/LICENSE +0 -21
- package/dist/chunk-3X2EGU7Z.cjs +0 -52
- package/dist/chunk-3X2EGU7Z.cjs.map +0 -1
- package/dist/chunk-723TPVHD.js +0 -1074
- package/dist/chunk-723TPVHD.js.map +0 -1
- package/dist/chunk-EOKNAVDO.cjs +0 -424
- package/dist/chunk-EOKNAVDO.cjs.map +0 -1
- package/dist/chunk-HQZ3HUMY.js +0 -1087
- package/dist/chunk-HQZ3HUMY.js.map +0 -1
- package/dist/chunk-KWYIVRIH.js +0 -344
- package/dist/chunk-KWYIVRIH.js.map +0 -1
- package/dist/chunk-LKH4ZAN6.js +0 -421
- package/dist/chunk-LKH4ZAN6.js.map +0 -1
- package/dist/chunk-SATNCODL.js +0 -45
- package/dist/chunk-SATNCODL.js.map +0 -1
- package/dist/chunk-VMZN4EVR.cjs +0 -347
- package/dist/chunk-VMZN4EVR.cjs.map +0 -1
- package/dist/chunk-VV3UUUYP.cjs +0 -1089
- package/dist/chunk-VV3UUUYP.cjs.map +0 -1
- package/dist/chunk-XRYTSQHZ.cjs +0 -1076
- package/dist/chunk-XRYTSQHZ.cjs.map +0 -1
- package/dist/debugger.cjs +0 -19
- package/dist/debugger.cjs.map +0 -1
- package/dist/debugger.d.cts +0 -171
- package/dist/debugger.d.ts +0 -171
- package/dist/debugger.js +0 -6
- package/dist/debugger.js.map +0 -1
- package/dist/index.cjs +0 -755
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -169
- package/dist/index.d.ts +0 -169
- package/dist/index.js +0 -699
- package/dist/index.js.map +0 -1
- package/dist/parser.cjs +0 -13
- package/dist/parser.cjs.map +0 -1
- package/dist/parser.d.cts +0 -154
- package/dist/parser.d.ts +0 -154
- package/dist/parser.js +0 -4
- package/dist/parser.js.map +0 -1
- package/dist/runtime.cjs +0 -13
- package/dist/runtime.cjs.map +0 -1
- package/dist/runtime.d.cts +0 -147
- package/dist/runtime.d.ts +0 -147
- package/dist/runtime.js +0 -4
- package/dist/runtime.js.map +0 -1
- package/dist/type-checker.cjs +0 -16
- package/dist/type-checker.cjs.map +0 -1
- package/dist/type-checker.d.cts +0 -105
- package/dist/type-checker.d.ts +0 -105
- package/dist/type-checker.js +0 -3
- package/dist/type-checker.js.map +0 -1
- package/dist/types-WQSk1Qs2.d.cts +0 -238
- package/dist/types-WQSk1Qs2.d.ts +0 -238
package/src/types.js
ADDED
package/src/types.ts
CHANGED
|
@@ -164,6 +164,8 @@ export interface ImportNode extends ASTNode {
|
|
|
164
164
|
modulePath: string;
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
+
export type ImportLoader = (path: string) => Promise<string>;
|
|
168
|
+
|
|
167
169
|
export interface ExportNode extends ASTNode {
|
|
168
170
|
type: 'export';
|
|
169
171
|
exports?: string[];
|
|
@@ -180,6 +182,7 @@ export interface VariableDeclarationNode extends ASTNode {
|
|
|
180
182
|
name: string;
|
|
181
183
|
dataType?: string;
|
|
182
184
|
value?: unknown;
|
|
185
|
+
isExpression?: boolean;
|
|
183
186
|
}
|
|
184
187
|
|
|
185
188
|
// ============================================================================
|
|
@@ -201,7 +204,8 @@ export type UIElementType =
|
|
|
201
204
|
| 'flex-container'
|
|
202
205
|
| 'grid-container'
|
|
203
206
|
| 'scroll-view'
|
|
204
|
-
| 'tab-view'
|
|
207
|
+
| 'tab-view'
|
|
208
|
+
| 'dashboard' | 'card' | 'metric' | 'row' | 'col';
|
|
205
209
|
|
|
206
210
|
export interface UI2DNode {
|
|
207
211
|
type: '2d-element';
|
|
@@ -231,6 +235,7 @@ export interface UIStyle {
|
|
|
231
235
|
export interface RuntimeContext {
|
|
232
236
|
variables: Map<string, unknown>;
|
|
233
237
|
functions: Map<string, MethodNode>;
|
|
238
|
+
exports: Map<string, unknown>;
|
|
234
239
|
connections: ConnectionNode[];
|
|
235
240
|
spatialMemory: Map<string, SpatialPosition>;
|
|
236
241
|
hologramState: Map<string, HologramProperties>;
|
|
@@ -244,6 +249,7 @@ export interface ExecutionResult {
|
|
|
244
249
|
spatialPosition?: SpatialPosition;
|
|
245
250
|
error?: string;
|
|
246
251
|
executionTime?: number;
|
|
252
|
+
learningSignals?: any;
|
|
247
253
|
}
|
|
248
254
|
|
|
249
255
|
export interface ParticleSystem {
|
|
@@ -272,3 +278,92 @@ export interface RuntimeSecurityLimits {
|
|
|
272
278
|
maxExecutionTimeMs: number;
|
|
273
279
|
maxParticlesPerSystem: number;
|
|
274
280
|
}
|
|
281
|
+
// ============================================================================
|
|
282
|
+
// VR Types
|
|
283
|
+
// ============================================================================
|
|
284
|
+
|
|
285
|
+
export interface Vector3 {
|
|
286
|
+
x: number;
|
|
287
|
+
y: number;
|
|
288
|
+
z: number;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
export interface Vector2 {
|
|
292
|
+
x: number;
|
|
293
|
+
y: number;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
export interface Color {
|
|
297
|
+
r: number;
|
|
298
|
+
g: number;
|
|
299
|
+
b: number;
|
|
300
|
+
a?: number;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
export interface Duration {
|
|
304
|
+
milliseconds: number;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
export interface Transform {
|
|
308
|
+
position: Vector3;
|
|
309
|
+
rotation: Vector3;
|
|
310
|
+
scale: Vector3;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
export type VRHand = 'left' | 'right' | 'both';
|
|
314
|
+
|
|
315
|
+
export interface ThrowVelocity {
|
|
316
|
+
magnitude: number;
|
|
317
|
+
direction: Vector3;
|
|
318
|
+
spin?: Vector3;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
export interface CollisionEvent {
|
|
322
|
+
object1: string;
|
|
323
|
+
object2: string;
|
|
324
|
+
position: Vector3;
|
|
325
|
+
normal: Vector3;
|
|
326
|
+
force: number;
|
|
327
|
+
timestamp: number;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// ============================================================================
|
|
331
|
+
// VR Traits
|
|
332
|
+
// ============================================================================
|
|
333
|
+
|
|
334
|
+
export interface GrabbableTrait {
|
|
335
|
+
snapToHand: boolean;
|
|
336
|
+
grip_type: 'palm' | 'pinch' | 'full';
|
|
337
|
+
haptic_feedback: boolean;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
export interface ThrowableTrait {
|
|
341
|
+
velocityMultiplier: number;
|
|
342
|
+
enableSpin: boolean;
|
|
343
|
+
gravityScale: number;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
export interface PointableTrait {
|
|
347
|
+
maxPointDistance: number;
|
|
348
|
+
interactionRadius: number;
|
|
349
|
+
hapticFeedback: boolean;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
export interface HoverableTrait {
|
|
353
|
+
hoverDistance: number;
|
|
354
|
+
hoverColor: Color;
|
|
355
|
+
hoverScale: number;
|
|
356
|
+
enableHighlight: boolean;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
export interface ScalableTrait {
|
|
360
|
+
minScale: number;
|
|
361
|
+
maxScale: number;
|
|
362
|
+
scaleSpeed: number;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
export interface RotatableTrait {
|
|
366
|
+
rotationSpeed: number;
|
|
367
|
+
freeRotation: boolean;
|
|
368
|
+
snapAngles?: number[];
|
|
369
|
+
}
|
package/tsconfig.json
CHANGED
package/tsup.config.d.ts
ADDED
package/tsup.config.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { defineConfig } from 'tsup';
|
|
2
|
+
export default defineConfig({
|
|
3
|
+
entry: {
|
|
4
|
+
index: 'src/index.ts',
|
|
5
|
+
parser: 'src/HoloScriptCodeParser.ts',
|
|
6
|
+
runtime: 'src/HoloScriptRuntime.ts',
|
|
7
|
+
'type-checker': 'src/HoloScriptTypeChecker.ts',
|
|
8
|
+
debugger: 'src/HoloScriptDebugger.ts',
|
|
9
|
+
},
|
|
10
|
+
format: ['cjs', 'esm'],
|
|
11
|
+
dts: true,
|
|
12
|
+
clean: true,
|
|
13
|
+
sourcemap: true,
|
|
14
|
+
splitting: true,
|
|
15
|
+
treeshake: true,
|
|
16
|
+
minify: false, // Keep readable for debugging, enable for production
|
|
17
|
+
external: [], // No external deps for now
|
|
18
|
+
});
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025-2026 HoloScript Contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
package/dist/chunk-3X2EGU7Z.cjs
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
// src/logger.ts
|
|
4
|
-
var NoOpLogger = class {
|
|
5
|
-
debug() {
|
|
6
|
-
}
|
|
7
|
-
info() {
|
|
8
|
-
}
|
|
9
|
-
warn() {
|
|
10
|
-
}
|
|
11
|
-
error() {
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
var ConsoleLogger = class {
|
|
15
|
-
debug(message, meta) {
|
|
16
|
-
console.debug(`[HoloScript:DEBUG] ${message}`, meta ?? "");
|
|
17
|
-
}
|
|
18
|
-
info(message, meta) {
|
|
19
|
-
console.info(`[HoloScript:INFO] ${message}`, meta ?? "");
|
|
20
|
-
}
|
|
21
|
-
warn(message, meta) {
|
|
22
|
-
console.warn(`[HoloScript:WARN] ${message}`, meta ?? "");
|
|
23
|
-
}
|
|
24
|
-
error(message, meta) {
|
|
25
|
-
console.error(`[HoloScript:ERROR] ${message}`, meta ?? "");
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
var currentLogger = new NoOpLogger();
|
|
29
|
-
function setHoloScriptLogger(logger2) {
|
|
30
|
-
currentLogger = logger2;
|
|
31
|
-
}
|
|
32
|
-
function enableConsoleLogging() {
|
|
33
|
-
currentLogger = new ConsoleLogger();
|
|
34
|
-
}
|
|
35
|
-
function resetLogger() {
|
|
36
|
-
currentLogger = new NoOpLogger();
|
|
37
|
-
}
|
|
38
|
-
var logger = {
|
|
39
|
-
debug: (msg, meta) => currentLogger.debug(msg, meta),
|
|
40
|
-
info: (msg, meta) => currentLogger.info(msg, meta),
|
|
41
|
-
warn: (msg, meta) => currentLogger.warn(msg, meta),
|
|
42
|
-
error: (msg, meta) => currentLogger.error(msg, meta)
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
exports.ConsoleLogger = ConsoleLogger;
|
|
46
|
-
exports.NoOpLogger = NoOpLogger;
|
|
47
|
-
exports.enableConsoleLogging = enableConsoleLogging;
|
|
48
|
-
exports.logger = logger;
|
|
49
|
-
exports.resetLogger = resetLogger;
|
|
50
|
-
exports.setHoloScriptLogger = setHoloScriptLogger;
|
|
51
|
-
//# sourceMappingURL=chunk-3X2EGU7Z.cjs.map
|
|
52
|
-
//# sourceMappingURL=chunk-3X2EGU7Z.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/logger.ts"],"names":["logger"],"mappings":";;;AAaA,IAAM,aAAN,MAA6C;AAAA,EAC3C,KAAA,GAAc;AAAA,EAAC;AAAA,EACf,IAAA,GAAa;AAAA,EAAC;AAAA,EACd,IAAA,GAAa;AAAA,EAAC;AAAA,EACd,KAAA,GAAc;AAAA,EAAC;AACjB;AAEA,IAAM,gBAAN,MAAgD;AAAA,EAC9C,KAAA,CAAM,SAAiB,IAAA,EAAsC;AAC3D,IAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,mBAAA,EAAsB,OAAO,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA;AAAA,EAC3D;AAAA,EACA,IAAA,CAAK,SAAiB,IAAA,EAAsC;AAC1D,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,kBAAA,EAAqB,OAAO,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA;AAAA,EACzD;AAAA,EACA,IAAA,CAAK,SAAiB,IAAA,EAAsC;AAC1D,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,kBAAA,EAAqB,OAAO,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA;AAAA,EACzD;AAAA,EACA,KAAA,CAAM,SAAiB,IAAA,EAAsC;AAC3D,IAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,mBAAA,EAAsB,OAAO,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA;AAAA,EAC3D;AACF;AAEA,IAAI,aAAA,GAAkC,IAAI,UAAA,EAAW;AAE9C,SAAS,oBAAoBA,OAAAA,EAAgC;AAClE,EAAA,aAAA,GAAgBA,OAAAA;AAClB;AAEO,SAAS,oBAAA,GAA6B;AAC3C,EAAA,aAAA,GAAgB,IAAI,aAAA,EAAc;AACpC;AAEO,SAAS,WAAA,GAAoB;AAClC,EAAA,aAAA,GAAgB,IAAI,UAAA,EAAW;AACjC;AAEO,IAAM,MAAA,GAA2B;AAAA,EACtC,OAAO,CAAC,GAAA,EAAK,SAAS,aAAA,CAAc,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,EACnD,MAAM,CAAC,GAAA,EAAK,SAAS,aAAA,CAAc,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,EACjD,MAAM,CAAC,GAAA,EAAK,SAAS,aAAA,CAAc,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,EACjD,OAAO,CAAC,GAAA,EAAK,SAAS,aAAA,CAAc,KAAA,CAAM,KAAK,IAAI;AACrD","file":"chunk-3X2EGU7Z.cjs","sourcesContent":["/**\n * @holoscript/core Logger\n *\n * Simple pluggable logger for HoloScript\n */\n\nexport interface HoloScriptLogger {\n debug(message: string, meta?: Record<string, unknown>): void;\n info(message: string, meta?: Record<string, unknown>): void;\n warn(message: string, meta?: Record<string, unknown>): void;\n error(message: string, meta?: Record<string, unknown>): void;\n}\n\nclass NoOpLogger implements HoloScriptLogger {\n debug(): void {}\n info(): void {}\n warn(): void {}\n error(): void {}\n}\n\nclass ConsoleLogger implements HoloScriptLogger {\n debug(message: string, meta?: Record<string, unknown>): void {\n console.debug(`[HoloScript:DEBUG] ${message}`, meta ?? '');\n }\n info(message: string, meta?: Record<string, unknown>): void {\n console.info(`[HoloScript:INFO] ${message}`, meta ?? '');\n }\n warn(message: string, meta?: Record<string, unknown>): void {\n console.warn(`[HoloScript:WARN] ${message}`, meta ?? '');\n }\n error(message: string, meta?: Record<string, unknown>): void {\n console.error(`[HoloScript:ERROR] ${message}`, meta ?? '');\n }\n}\n\nlet currentLogger: HoloScriptLogger = new NoOpLogger();\n\nexport function setHoloScriptLogger(logger: HoloScriptLogger): void {\n currentLogger = logger;\n}\n\nexport function enableConsoleLogging(): void {\n currentLogger = new ConsoleLogger();\n}\n\nexport function resetLogger(): void {\n currentLogger = new NoOpLogger();\n}\n\nexport const logger: HoloScriptLogger = {\n debug: (msg, meta) => currentLogger.debug(msg, meta),\n info: (msg, meta) => currentLogger.info(msg, meta),\n warn: (msg, meta) => currentLogger.warn(msg, meta),\n error: (msg, meta) => currentLogger.error(msg, meta),\n};\n\nexport { NoOpLogger, ConsoleLogger };\n"]}
|