@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.
Files changed (127) hide show
  1. package/package.json +10 -9
  2. package/src/HoloScript2DParser.js +227 -0
  3. package/src/HoloScript2DParser.ts +5 -0
  4. package/src/HoloScriptCodeParser.js +1102 -0
  5. package/src/HoloScriptCodeParser.ts +145 -20
  6. package/src/HoloScriptDebugger.js +458 -0
  7. package/src/HoloScriptParser.js +338 -0
  8. package/src/HoloScriptPlusParser.js +371 -0
  9. package/src/HoloScriptPlusParser.ts +543 -0
  10. package/src/HoloScriptRuntime.js +1399 -0
  11. package/src/HoloScriptRuntime.test.js +351 -0
  12. package/src/HoloScriptRuntime.ts +257 -3
  13. package/src/HoloScriptTypeChecker.js +356 -0
  14. package/src/__tests__/GraphicsServices.test.js +357 -0
  15. package/src/__tests__/GraphicsServices.test.ts +427 -0
  16. package/src/__tests__/HoloScriptPlusParser.test.js +317 -0
  17. package/src/__tests__/HoloScriptPlusParser.test.ts +392 -0
  18. package/src/__tests__/integration.test.js +336 -0
  19. package/src/__tests__/performance.bench.js +218 -0
  20. package/src/__tests__/type-checker.test.js +60 -0
  21. package/src/__tests__/type-checker.test.ts +73 -0
  22. package/src/index.js +217 -0
  23. package/src/index.ts +158 -18
  24. package/src/interop/Interoperability.js +413 -0
  25. package/src/interop/Interoperability.ts +494 -0
  26. package/src/logger.js +42 -0
  27. package/src/parser/EnhancedParser.js +205 -0
  28. package/src/parser/EnhancedParser.ts +251 -0
  29. package/src/parser/HoloScriptPlusParser.js +928 -0
  30. package/src/parser/HoloScriptPlusParser.ts +1089 -0
  31. package/src/runtime/HoloScriptPlusRuntime.js +674 -0
  32. package/src/runtime/HoloScriptPlusRuntime.ts +861 -0
  33. package/src/runtime/PerformanceTelemetry.js +323 -0
  34. package/src/runtime/PerformanceTelemetry.ts +467 -0
  35. package/src/runtime/RuntimeOptimization.js +361 -0
  36. package/src/runtime/RuntimeOptimization.ts +416 -0
  37. package/src/services/HololandGraphicsPipelineService.js +506 -0
  38. package/src/services/HololandGraphicsPipelineService.ts +662 -0
  39. package/src/services/PlatformPerformanceOptimizer.js +356 -0
  40. package/src/services/PlatformPerformanceOptimizer.ts +503 -0
  41. package/src/state/ReactiveState.js +427 -0
  42. package/src/state/ReactiveState.ts +572 -0
  43. package/src/tools/DeveloperExperience.js +376 -0
  44. package/src/tools/DeveloperExperience.ts +438 -0
  45. package/src/traits/AIDriverTrait.js +322 -0
  46. package/src/traits/AIDriverTrait.test.js +329 -0
  47. package/src/traits/AIDriverTrait.test.ts +357 -0
  48. package/src/traits/AIDriverTrait.ts +474 -0
  49. package/src/traits/LightingTrait.js +313 -0
  50. package/src/traits/LightingTrait.test.js +410 -0
  51. package/src/traits/LightingTrait.test.ts +462 -0
  52. package/src/traits/LightingTrait.ts +505 -0
  53. package/src/traits/MaterialTrait.js +194 -0
  54. package/src/traits/MaterialTrait.test.js +286 -0
  55. package/src/traits/MaterialTrait.test.ts +329 -0
  56. package/src/traits/MaterialTrait.ts +324 -0
  57. package/src/traits/RenderingTrait.js +356 -0
  58. package/src/traits/RenderingTrait.test.js +363 -0
  59. package/src/traits/RenderingTrait.test.ts +427 -0
  60. package/src/traits/RenderingTrait.ts +555 -0
  61. package/src/traits/VRTraitSystem.js +740 -0
  62. package/src/traits/VRTraitSystem.ts +1040 -0
  63. package/src/traits/VoiceInputTrait.js +284 -0
  64. package/src/traits/VoiceInputTrait.test.js +226 -0
  65. package/src/traits/VoiceInputTrait.test.ts +252 -0
  66. package/src/traits/VoiceInputTrait.ts +401 -0
  67. package/src/types/AdvancedTypeSystem.js +226 -0
  68. package/src/types/AdvancedTypeSystem.ts +494 -0
  69. package/src/types/HoloScriptPlus.d.ts +853 -0
  70. package/src/types.js +6 -0
  71. package/src/types.ts +96 -1
  72. package/tsconfig.json +1 -1
  73. package/tsup.config.d.ts +2 -0
  74. package/tsup.config.js +18 -0
  75. package/LICENSE +0 -21
  76. package/dist/chunk-3X2EGU7Z.cjs +0 -52
  77. package/dist/chunk-3X2EGU7Z.cjs.map +0 -1
  78. package/dist/chunk-723TPVHD.js +0 -1074
  79. package/dist/chunk-723TPVHD.js.map +0 -1
  80. package/dist/chunk-EOKNAVDO.cjs +0 -424
  81. package/dist/chunk-EOKNAVDO.cjs.map +0 -1
  82. package/dist/chunk-HQZ3HUMY.js +0 -1087
  83. package/dist/chunk-HQZ3HUMY.js.map +0 -1
  84. package/dist/chunk-KWYIVRIH.js +0 -344
  85. package/dist/chunk-KWYIVRIH.js.map +0 -1
  86. package/dist/chunk-LKH4ZAN6.js +0 -421
  87. package/dist/chunk-LKH4ZAN6.js.map +0 -1
  88. package/dist/chunk-SATNCODL.js +0 -45
  89. package/dist/chunk-SATNCODL.js.map +0 -1
  90. package/dist/chunk-VMZN4EVR.cjs +0 -347
  91. package/dist/chunk-VMZN4EVR.cjs.map +0 -1
  92. package/dist/chunk-VV3UUUYP.cjs +0 -1089
  93. package/dist/chunk-VV3UUUYP.cjs.map +0 -1
  94. package/dist/chunk-XRYTSQHZ.cjs +0 -1076
  95. package/dist/chunk-XRYTSQHZ.cjs.map +0 -1
  96. package/dist/debugger.cjs +0 -19
  97. package/dist/debugger.cjs.map +0 -1
  98. package/dist/debugger.d.cts +0 -171
  99. package/dist/debugger.d.ts +0 -171
  100. package/dist/debugger.js +0 -6
  101. package/dist/debugger.js.map +0 -1
  102. package/dist/index.cjs +0 -755
  103. package/dist/index.cjs.map +0 -1
  104. package/dist/index.d.cts +0 -169
  105. package/dist/index.d.ts +0 -169
  106. package/dist/index.js +0 -699
  107. package/dist/index.js.map +0 -1
  108. package/dist/parser.cjs +0 -13
  109. package/dist/parser.cjs.map +0 -1
  110. package/dist/parser.d.cts +0 -154
  111. package/dist/parser.d.ts +0 -154
  112. package/dist/parser.js +0 -4
  113. package/dist/parser.js.map +0 -1
  114. package/dist/runtime.cjs +0 -13
  115. package/dist/runtime.cjs.map +0 -1
  116. package/dist/runtime.d.cts +0 -147
  117. package/dist/runtime.d.ts +0 -147
  118. package/dist/runtime.js +0 -4
  119. package/dist/runtime.js.map +0 -1
  120. package/dist/type-checker.cjs +0 -16
  121. package/dist/type-checker.cjs.map +0 -1
  122. package/dist/type-checker.d.cts +0 -105
  123. package/dist/type-checker.d.ts +0 -105
  124. package/dist/type-checker.js +0 -3
  125. package/dist/type-checker.js.map +0 -1
  126. package/dist/types-WQSk1Qs2.d.cts +0 -238
  127. package/dist/types-WQSk1Qs2.d.ts +0 -238
package/src/types.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @holoscript/core Types
3
+ *
4
+ * Core type definitions for HoloScript AST and runtime
5
+ */
6
+ export {};
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
@@ -11,7 +11,7 @@
11
11
  "noImplicitAny": true,
12
12
  "strictNullChecks": true,
13
13
  "noUnusedLocals": true,
14
- "noUnusedParameters": true,
14
+ "noUnusedParameters": false,
15
15
  "esModuleInterop": true,
16
16
  "skipLibCheck": true,
17
17
  "forceConsistentCasingInFileNames": true,
@@ -0,0 +1,2 @@
1
+ declare const _default: import("tsup").Options | import("tsup").Options[] | ((overrideOptions: import("tsup").Options) => import("tsup").Options | import("tsup").Options[] | Promise<import("tsup").Options | import("tsup").Options[]>);
2
+ export default _default;
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.
@@ -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"]}