@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
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/HoloScriptCodeParser.ts"],"names":["logger","exports"],"mappings":"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","file":"chunk-XRYTSQHZ.cjs","sourcesContent":["/**\n * HoloScript Code Parser\n *\n * Parses HoloScript code strings into AST nodes that can be executed\n * by the HoloScriptRuntime.\n *\n * Syntax Reference:\n * - orb <name> { properties }\n * - function <name>(<params>): <return> { body }\n * - connect <from> to <to> [as <type>]\n * - gate <name> { condition, true_path, false_path }\n * - stream <name> from <source> { transformations }\n */\n\nimport { logger } from './logger';\nimport type {\n ASTNode,\n OrbNode,\n MethodNode,\n ParameterNode,\n ConnectionNode,\n GateNode,\n StreamNode,\n SpatialPosition,\n HologramProperties,\n ForLoopNode,\n WhileLoopNode,\n ForEachLoopNode,\n ImportNode,\n ExportNode,\n VariableDeclarationNode,\n DataCellNode,\n DataCellType,\n DataZoneNode,\n} from './types';\n\n// Security configuration\nconst CODE_SECURITY_CONFIG = {\n maxCodeLength: 50000,\n maxBlocks: 100,\n maxNestingDepth: 10,\n suspiciousKeywords: [\n 'process', 'require', 'eval', 'import', 'constructor',\n 'prototype', '__proto__', 'fs', 'child_process', 'exec', 'spawn',\n ],\n};\n\nexport interface ParseResult {\n success: boolean;\n ast: ASTNode[];\n errors: ParseError[];\n warnings: string[];\n}\n\nexport interface ParseError {\n line: number;\n column: number;\n message: string;\n}\n\ninterface Token {\n type: 'keyword' | 'identifier' | 'number' | 'string' | 'operator' | 'punctuation' | 'newline';\n value: string;\n line: number;\n column: number;\n}\n\nexport class HoloScriptCodeParser {\n private errors: ParseError[] = [];\n private warnings: string[] = [];\n private tokens: Token[] = [];\n private position: number = 0;\n\n /**\n * Parse HoloScript code string into AST\n */\n parse(code: string): ParseResult {\n this.errors = [];\n this.warnings = [];\n this.tokens = [];\n this.position = 0;\n\n // Security: Check code length\n if (code.length > CODE_SECURITY_CONFIG.maxCodeLength) {\n return {\n success: false,\n ast: [],\n errors: [{ line: 0, column: 0, message: `Code exceeds max length (${CODE_SECURITY_CONFIG.maxCodeLength})` }],\n warnings: [],\n };\n }\n\n // Security: Check for suspicious keywords\n for (const keyword of CODE_SECURITY_CONFIG.suspiciousKeywords) {\n if (code.toLowerCase().includes(keyword)) {\n logger.warn('Suspicious keyword detected', { keyword });\n return {\n success: false,\n ast: [],\n errors: [{ line: 0, column: 0, message: `Suspicious keyword detected: ${keyword}` }],\n warnings: [],\n };\n }\n }\n\n try {\n // Tokenize\n this.tokens = this.tokenize(code);\n\n // Parse tokens into AST\n const ast = this.parseProgram();\n\n return {\n success: this.errors.length === 0,\n ast,\n errors: this.errors,\n warnings: this.warnings,\n };\n } catch (error) {\n return {\n success: false,\n ast: [],\n errors: [{ line: 0, column: 0, message: String(error) }],\n warnings: this.warnings,\n };\n }\n }\n\n /**\n * Tokenize code into tokens\n */\n private tokenize(code: string): Token[] {\n const tokens: Token[] = [];\n let line = 1;\n let column = 1;\n let i = 0;\n\n const keywords = [\n 'orb', 'function', 'connect', 'to', 'as', 'gate', 'stream', 'from', 'through', 'return',\n 'if', 'else', 'nexus', 'building', 'pillar', 'foundation',\n // Phase 2: Loop constructs\n 'for', 'while', 'forEach', 'in', 'of', 'break', 'continue',\n // Phase 2: Module system\n 'import', 'export', 'module', 'use',\n // Phase 2: Type system\n 'type', 'interface', 'extends', 'implements',\n // Phase 2: Async\n 'async', 'await', 'spawn', 'parallel',\n // Phase 2: Object-oriented\n 'class', 'new', 'this', 'super', 'static', 'private', 'public',\n // Phase 2: Error handling\n 'try', 'catch', 'finally', 'throw',\n // Phase 2: Constants\n 'const', 'let', 'var',\n // Phase B: Data cells\n 'data_cell', 'data_zone', 'data_source', 'refresh', 'position_offset', 'props',\n ];\n\n while (i < code.length) {\n const char = code[i];\n\n // Skip whitespace (except newlines)\n if (char === ' ' || char === '\\t' || char === '\\r') {\n i++;\n column++;\n continue;\n }\n\n // Newline\n if (char === '\\n') {\n tokens.push({ type: 'newline', value: '\\n', line, column });\n line++;\n column = 1;\n i++;\n continue;\n }\n\n // Comments (skip)\n if (char === '/' && code[i + 1] === '/') {\n while (i < code.length && code[i] !== '\\n') {\n i++;\n }\n continue;\n }\n\n // String\n if (char === '\"' || char === \"'\") {\n const quote = char;\n let str = '';\n const startCol = column;\n i++;\n column++;\n\n while (i < code.length && code[i] !== quote) {\n if (code[i] === '\\\\' && i + 1 < code.length) {\n str += code[i + 1];\n i += 2;\n column += 2;\n } else {\n str += code[i];\n i++;\n column++;\n }\n }\n\n i++; // Skip closing quote\n column++;\n\n tokens.push({ type: 'string', value: str, line, column: startCol });\n continue;\n }\n\n // Number\n if (/[0-9]/.test(char) || (char === '-' && /[0-9]/.test(code[i + 1]))) {\n let num = '';\n const startCol = column;\n\n while (i < code.length && /[0-9.\\-]/.test(code[i])) {\n num += code[i];\n i++;\n column++;\n }\n\n tokens.push({ type: 'number', value: num, line, column: startCol });\n continue;\n }\n\n // Identifier or keyword\n if (/[a-zA-Z_]/.test(char)) {\n let ident = '';\n const startCol = column;\n\n while (i < code.length && /[a-zA-Z0-9_]/.test(code[i])) {\n ident += code[i];\n i++;\n column++;\n }\n\n const isKeyword = keywords.includes(ident.toLowerCase());\n tokens.push({\n type: isKeyword ? 'keyword' : 'identifier',\n value: ident,\n line,\n column: startCol,\n });\n continue;\n }\n\n // Multi-character operators (must check before single-char)\n const multiCharOps = ['===', '!==', '==', '!=', '>=', '<=', '&&', '||', '++', '--', '+=', '-=', '*=', '/=', '%=', '=>', '->'];\n let foundMultiOp = false;\n for (const op of multiCharOps) {\n if (code.substring(i, i + op.length) === op) {\n tokens.push({ type: 'operator', value: op, line, column });\n i += op.length;\n column += op.length;\n foundMultiOp = true;\n break;\n }\n }\n if (foundMultiOp) continue;\n\n // Operators and punctuation\n const punctuation = ['{', '}', '(', ')', '[', ']', ':', ',', '.', ';', '=', '<', '>', '+', '-', '*', '/', '%', '!', '&', '|', '?'];\n if (punctuation.includes(char)) {\n tokens.push({ type: 'punctuation', value: char, line, column });\n i++;\n column++;\n continue;\n }\n\n // Unknown character - skip\n i++;\n column++;\n }\n\n return tokens;\n }\n\n /**\n * Parse program (list of declarations)\n */\n private parseProgram(): ASTNode[] {\n const nodes: ASTNode[] = [];\n let blockCount = 0;\n\n while (this.position < this.tokens.length) {\n // Skip newlines\n while (this.currentToken()?.type === 'newline') {\n this.advance();\n }\n\n if (this.position >= this.tokens.length) break;\n\n // Security: limit blocks\n blockCount++;\n if (blockCount > CODE_SECURITY_CONFIG.maxBlocks) {\n this.errors.push({ line: 0, column: 0, message: 'Too many blocks in program' });\n break;\n }\n\n const node = this.parseDeclaration();\n if (node) {\n nodes.push(node);\n }\n }\n\n return nodes;\n }\n\n /**\n * Parse a single declaration\n */\n private parseDeclaration(): ASTNode | null {\n const token = this.currentToken();\n if (!token) return null;\n\n if (token.type === 'keyword') {\n switch (token.value.toLowerCase()) {\n case 'orb':\n return this.parseOrb();\n case 'function':\n return this.parseFunction();\n case 'connect':\n return this.parseConnection();\n case 'gate':\n case 'if':\n return this.parseGate();\n case 'stream':\n return this.parseStream();\n case 'nexus':\n return this.parseNexus();\n case 'building':\n case 'class':\n return this.parseBuilding();\n // Phase 2: Loop constructs\n case 'for':\n return this.parseForLoop();\n case 'while':\n return this.parseWhileLoop();\n case 'foreach':\n return this.parseForEachLoop();\n // Phase 2: Module system\n case 'import':\n return this.parseImport();\n case 'export':\n return this.parseExport();\n // Phase 2: Variable declarations\n case 'const':\n case 'let':\n case 'var':\n return this.parseVariableDeclaration();\n // Phase B: Data cells\n case 'data_cell':\n return this.parseDataCell();\n case 'data_zone':\n return this.parseDataZone();\n default:\n this.advance();\n return null;\n }\n }\n\n // Skip unrecognized tokens\n this.advance();\n return null;\n }\n\n /**\n * Parse for loop: for (init; condition; update) { body }\n */\n private parseForLoop(): ForLoopNode | null {\n this.expect('keyword', 'for');\n\n if (!this.check('punctuation', '(')) {\n this.errors.push({ line: 0, column: 0, message: 'Expected ( after for' });\n return null;\n }\n this.advance();\n\n // Parse init, condition, update (simplified - collect as strings)\n let init = '', condition = '', update = '';\n let depth = 0;\n\n // Parse init (until first ;)\n while (this.position < this.tokens.length) {\n const t = this.currentToken();\n if (!t) break;\n if (t.value === ';' && depth === 0) { this.advance(); break; }\n if (t.value === '(') depth++;\n if (t.value === ')') depth--;\n init += t.value + ' ';\n this.advance();\n }\n\n // Parse condition (until second ;)\n depth = 0;\n while (this.position < this.tokens.length) {\n const t = this.currentToken();\n if (!t) break;\n if (t.value === ';' && depth === 0) { this.advance(); break; }\n if (t.value === '(') depth++;\n if (t.value === ')') depth--;\n condition += t.value + ' ';\n this.advance();\n }\n\n // Parse update (until ))\n depth = 0;\n while (this.position < this.tokens.length) {\n const t = this.currentToken();\n if (!t) break;\n if (t.value === ')' && depth === 0) { this.advance(); break; }\n if (t.value === '(') depth++;\n if (t.value === ')') depth--;\n update += t.value + ' ';\n this.advance();\n }\n\n // Parse body\n const body: ASTNode[] = [];\n if (this.check('punctuation', '{')) {\n this.advance();\n let braceDepth = 1;\n while (braceDepth > 0 && this.position < this.tokens.length) {\n if (this.check('punctuation', '{')) braceDepth++;\n if (this.check('punctuation', '}')) braceDepth--;\n this.advance();\n }\n }\n\n return {\n type: 'for-loop',\n init: init.trim(),\n condition: condition.trim(),\n update: update.trim(),\n body,\n position: { x: 0, y: 0, z: 0 },\n };\n }\n\n /**\n * Parse while loop: while (condition) { body }\n */\n private parseWhileLoop(): WhileLoopNode | null {\n this.expect('keyword', 'while');\n\n let condition = '';\n if (this.check('punctuation', '(')) {\n this.advance();\n let depth = 1;\n while (depth > 0 && this.position < this.tokens.length) {\n const t = this.currentToken();\n if (!t) break;\n if (t.value === '(') depth++;\n if (t.value === ')') { depth--; if (depth === 0) { this.advance(); break; } }\n condition += t.value + ' ';\n this.advance();\n }\n }\n\n // Parse body\n if (this.check('punctuation', '{')) {\n this.advance();\n let braceDepth = 1;\n while (braceDepth > 0 && this.position < this.tokens.length) {\n if (this.check('punctuation', '{')) braceDepth++;\n if (this.check('punctuation', '}')) braceDepth--;\n this.advance();\n }\n }\n\n return {\n type: 'while-loop',\n condition: condition.trim(),\n body: [],\n position: { x: 0, y: 0, z: 0 },\n };\n }\n\n /**\n * Parse forEach loop: forEach item in collection { body }\n */\n private parseForEachLoop(): ForEachLoopNode | null {\n this.expect('keyword', 'forEach');\n\n const variable = this.expectIdentifier();\n this.expect('keyword', 'in');\n const collection = this.expectIdentifier();\n\n // Parse body\n if (this.check('punctuation', '{')) {\n this.advance();\n let braceDepth = 1;\n while (braceDepth > 0 && this.position < this.tokens.length) {\n if (this.check('punctuation', '{')) braceDepth++;\n if (this.check('punctuation', '}')) braceDepth--;\n this.advance();\n }\n }\n\n return {\n type: 'foreach-loop',\n variable: variable || 'item',\n collection: collection || 'items',\n body: [],\n position: { x: 0, y: 0, z: 0 },\n };\n }\n\n /**\n * Parse import: import { x, y } from \"module\"\n */\n private parseImport(): ImportNode | null {\n this.expect('keyword', 'import');\n\n const imports: string[] = [];\n let modulePath = '';\n let defaultImport: string | undefined;\n\n // Check for default import or named imports\n if (this.check('punctuation', '{')) {\n this.advance();\n while (!this.check('punctuation', '}') && this.position < this.tokens.length) {\n const name = this.expectIdentifier();\n if (name) imports.push(name);\n if (this.check('punctuation', ',')) this.advance();\n }\n this.expect('punctuation', '}');\n } else {\n // Default import\n defaultImport = this.expectIdentifier() || undefined;\n }\n\n // from \"module\"\n if (this.check('keyword', 'from')) {\n this.advance();\n const pathToken = this.currentToken();\n if (pathToken?.type === 'string') {\n modulePath = pathToken.value;\n this.advance();\n }\n }\n\n return {\n type: 'import',\n imports,\n defaultImport,\n modulePath,\n position: { x: 0, y: 0, z: 0 },\n };\n }\n\n /**\n * Parse export: export { x, y } or export function/orb\n */\n private parseExport(): ExportNode | null {\n this.expect('keyword', 'export');\n\n // Check if exporting a declaration\n const next = this.currentToken();\n if (next?.type === 'keyword') {\n const declaration = this.parseDeclaration();\n return {\n type: 'export',\n declaration: declaration || undefined,\n position: { x: 0, y: 0, z: 0 },\n };\n }\n\n // Named exports\n const exports: string[] = [];\n if (this.check('punctuation', '{')) {\n this.advance();\n while (!this.check('punctuation', '}') && this.position < this.tokens.length) {\n const name = this.expectIdentifier();\n if (name) exports.push(name);\n if (this.check('punctuation', ',')) this.advance();\n }\n this.expect('punctuation', '}');\n }\n\n return {\n type: 'export',\n exports,\n position: { x: 0, y: 0, z: 0 },\n };\n }\n\n /**\n * Parse variable declaration: const/let/var name = value\n */\n private parseVariableDeclaration(): VariableDeclarationNode | null {\n const kindToken = this.currentToken()?.value.toLowerCase();\n const kind: 'const' | 'let' | 'var' = kindToken === 'let' ? 'let' : kindToken === 'var' ? 'var' : 'const';\n this.advance();\n\n const name = this.expectIdentifier();\n if (!name) return null;\n\n let dataType: string | undefined;\n if (this.check('punctuation', ':')) {\n this.advance();\n dataType = this.expectIdentifier() || undefined;\n }\n\n let value: unknown;\n if (this.check('punctuation', '=')) {\n this.advance();\n const valueToken = this.currentToken();\n if (valueToken?.type === 'string') {\n value = valueToken.value;\n this.advance();\n } else if (valueToken?.type === 'number') {\n value = parseFloat(valueToken.value);\n this.advance();\n } else if (valueToken?.type === 'identifier') {\n if (valueToken.value === 'true') value = true;\n else if (valueToken.value === 'false') value = false;\n else value = valueToken.value;\n this.advance();\n } else if (this.check('punctuation', '[')) {\n value = this.parseArray();\n } else if (this.check('punctuation', '{')) {\n value = this.parseObject();\n }\n }\n\n return {\n type: 'variable-declaration',\n kind,\n name,\n dataType,\n value,\n position: { x: 0, y: 0, z: 0 },\n };\n }\n\n /**\n * Parse data_cell declaration\n *\n * Syntax:\n * data_cell {\n * type: \"metric\"\n * data_source: \"/api/cpu\"\n * refresh: 5s\n * position_offset: [0, 1, 0]\n * props: {\n * label: \"CPU Usage\"\n * style: { color: \"#00ffff\", glow: 0.5 }\n * }\n * }\n */\n private parseDataCell(): DataCellNode | null {\n const startToken = this.currentToken();\n this.expect('keyword', 'data_cell');\n\n const node: DataCellNode = {\n type: 'data_cell',\n cellType: 'text',\n props: {},\n position: { x: 0, y: 0, z: 0 },\n line: startToken?.line,\n column: startToken?.column,\n };\n\n if (this.check('punctuation', '{')) {\n this.advance();\n\n while (!this.check('punctuation', '}') && this.position < this.tokens.length) {\n this.skipNewlines();\n if (this.check('punctuation', '}')) break;\n\n const prop = this.parseProperty();\n if (prop) {\n switch (prop.key) {\n case 'type':\n node.cellType = prop.value as DataCellType;\n break;\n case 'data_source':\n node.dataSource = String(prop.value);\n break;\n case 'refresh':\n // Handle \"5s\" or \"300ms\" format\n const refreshStr = String(prop.value);\n if (refreshStr.endsWith('ms')) {\n node.refresh = parseInt(refreshStr.replace('ms', ''), 10) / 1000;\n } else if (refreshStr.endsWith('s')) {\n node.refresh = parseInt(refreshStr.replace('s', ''), 10);\n } else {\n node.refresh = parseFloat(refreshStr);\n }\n break;\n case 'position_offset':\n if (Array.isArray(prop.value) && prop.value.length === 3) {\n node.positionOffset = prop.value.map(Number) as [number, number, number];\n }\n break;\n case 'position':\n if (Array.isArray(prop.value) && prop.value.length === 3) {\n node.position = {\n x: Number(prop.value[0]),\n y: Number(prop.value[1]),\n z: Number(prop.value[2]),\n };\n } else if (typeof prop.value === 'object') {\n node.position = this.parsePosition(prop.value);\n }\n break;\n case 'props':\n if (typeof prop.value === 'object' && prop.value !== null) {\n node.props = { ...node.props, ...prop.value as Record<string, unknown> };\n }\n break;\n default:\n // Add other properties to props\n node.props[prop.key] = prop.value;\n }\n }\n\n this.skipNewlines();\n }\n\n this.expect('punctuation', '}');\n }\n\n return node;\n }\n\n /**\n * Parse data_zone declaration containing multiple data_cells\n *\n * Syntax:\n * data_zone bridge_metrics {\n * position: [0, 2, 0]\n * orientation: face_captain\n *\n * data_cell { ... }\n * data_cell { ... }\n * }\n */\n private parseDataZone(): DataZoneNode | null {\n const startToken = this.currentToken();\n this.expect('keyword', 'data_zone');\n\n const name = this.expectIdentifier();\n if (!name) return null;\n\n const node: DataZoneNode = {\n type: 'data_zone',\n name,\n cells: [],\n position: { x: 0, y: 0, z: 0 },\n line: startToken?.line,\n column: startToken?.column,\n };\n\n if (this.check('punctuation', '{')) {\n this.advance();\n\n while (!this.check('punctuation', '}') && this.position < this.tokens.length) {\n this.skipNewlines();\n if (this.check('punctuation', '}')) break;\n\n // Check for nested data_cell\n if (this.check('keyword', 'data_cell')) {\n const cell = this.parseDataCell();\n if (cell) {\n node.cells.push(cell);\n }\n } else {\n // Parse zone-level properties\n const prop = this.parseProperty();\n if (prop) {\n switch (prop.key) {\n case 'position':\n if (Array.isArray(prop.value) && prop.value.length === 3) {\n node.position = {\n x: Number(prop.value[0]),\n y: Number(prop.value[1]),\n z: Number(prop.value[2]),\n };\n } else if (typeof prop.value === 'object') {\n node.position = this.parsePosition(prop.value);\n }\n break;\n case 'orientation':\n node.orientation = String(prop.value);\n break;\n }\n }\n }\n\n this.skipNewlines();\n }\n\n this.expect('punctuation', '}');\n }\n\n return node;\n }\n\n /**\n * Parse orb declaration\n */\n private parseOrb(): OrbNode | null {\n this.expect('keyword', 'orb');\n const name = this.expectIdentifier();\n if (!name) return null;\n\n const properties: Record<string, unknown> = {};\n let position: SpatialPosition | undefined;\n let hologram: HologramProperties | undefined;\n\n if (this.check('punctuation', '{')) {\n this.advance(); // {\n\n while (!this.check('punctuation', '}') && this.position < this.tokens.length) {\n this.skipNewlines();\n if (this.check('punctuation', '}')) break;\n\n const prop = this.parseProperty();\n if (prop) {\n // Handle special properties\n if (prop.key === 'position' || prop.key === 'at') {\n position = this.parsePosition(prop.value);\n } else if (prop.key === 'color' || prop.key === 'glow' || prop.key === 'size') {\n hologram = hologram || { shape: 'orb', color: '#00ffff', size: 1, glow: true, interactive: true };\n if (prop.key === 'color') hologram.color = String(prop.value);\n if (prop.key === 'glow') hologram.glow = Boolean(prop.value);\n if (prop.key === 'size') hologram.size = Number(prop.value);\n } else {\n properties[prop.key] = prop.value;\n }\n }\n\n this.skipNewlines();\n }\n\n this.expect('punctuation', '}');\n }\n\n return {\n type: 'orb',\n name,\n position: position || { x: 0, y: 0, z: 0 },\n hologram: hologram || { shape: 'orb', color: '#00ffff', size: 1, glow: true, interactive: true },\n properties,\n methods: [],\n };\n }\n\n /**\n * Parse function declaration\n */\n private parseFunction(): MethodNode | null {\n this.expect('keyword', 'function');\n const name = this.expectIdentifier();\n if (!name) return null;\n\n const parameters: ParameterNode[] = [];\n let returnType: string | undefined;\n\n // Parse parameters\n if (this.check('punctuation', '(')) {\n this.advance(); // (\n\n while (!this.check('punctuation', ')') && this.position < this.tokens.length) {\n const paramName = this.expectIdentifier();\n if (!paramName) break;\n\n let paramType = 'any';\n if (this.check('punctuation', ':')) {\n this.advance(); // :\n paramType = this.expectIdentifier() || 'any';\n }\n\n parameters.push({\n type: 'parameter',\n name: paramName,\n dataType: paramType,\n });\n\n if (this.check('punctuation', ',')) {\n this.advance();\n }\n }\n\n this.expect('punctuation', ')');\n }\n\n // Parse return type\n if (this.check('punctuation', ':')) {\n this.advance();\n returnType = this.expectIdentifier() || undefined;\n }\n\n // Parse body\n const body: ASTNode[] = [];\n if (this.check('punctuation', '{')) {\n this.advance(); // {\n // Skip body parsing for now - just find closing brace\n let depth = 1;\n while (depth > 0 && this.position < this.tokens.length) {\n if (this.check('punctuation', '{')) depth++;\n if (this.check('punctuation', '}')) depth--;\n this.advance();\n }\n }\n\n return {\n type: 'method',\n name,\n parameters,\n body,\n returnType,\n position: { x: 0, y: 0, z: 0 },\n hologram: { shape: 'cube', color: '#ff6b35', size: 1.5, glow: true, interactive: true },\n };\n }\n\n /**\n * Parse connection\n */\n private parseConnection(): ConnectionNode | null {\n this.expect('keyword', 'connect');\n const from = this.expectIdentifier();\n if (!from) return null;\n\n this.expect('keyword', 'to');\n const to = this.expectIdentifier();\n if (!to) return null;\n\n let dataType = 'any';\n if (this.check('keyword', 'as')) {\n this.advance();\n const typeStr = this.currentToken();\n if (typeStr?.type === 'string' || typeStr?.type === 'identifier') {\n dataType = typeStr.value;\n this.advance();\n }\n }\n\n return {\n type: 'connection',\n from,\n to,\n dataType,\n bidirectional: false,\n };\n }\n\n /**\n * Parse gate (conditional)\n */\n private parseGate(): GateNode | null {\n this.expect('keyword', 'gate');\n this.expectIdentifier(); // Gate name (consumed but not currently stored)\n\n let condition = '';\n if (this.check('punctuation', '(')) {\n this.advance();\n // Parse condition expression\n while (!this.check('punctuation', ')') && this.position < this.tokens.length) {\n const token = this.currentToken();\n if (token) condition += token.value + ' ';\n this.advance();\n }\n this.expect('punctuation', ')');\n }\n\n // Parse body if present\n if (this.check('punctuation', '{')) {\n this.advance();\n let depth = 1;\n while (depth > 0 && this.position < this.tokens.length) {\n if (this.check('punctuation', '{')) depth++;\n if (this.check('punctuation', '}')) depth--;\n this.advance();\n }\n }\n\n return {\n type: 'gate',\n condition: condition.trim(),\n truePath: [],\n falsePath: [],\n position: { x: 0, y: 0, z: 0 },\n hologram: { shape: 'pyramid', color: '#4ecdc4', size: 1, glow: true, interactive: true },\n };\n }\n\n /**\n * Parse stream\n */\n private parseStream(): StreamNode | null {\n this.expect('keyword', 'stream');\n const name = this.expectIdentifier();\n if (!name) return null;\n\n let source = 'unknown';\n if (this.check('keyword', 'from')) {\n this.advance();\n source = this.expectIdentifier() || 'unknown';\n }\n\n // Parse body if present\n if (this.check('punctuation', '{')) {\n this.advance();\n let depth = 1;\n while (depth > 0 && this.position < this.tokens.length) {\n if (this.check('punctuation', '{')) depth++;\n if (this.check('punctuation', '}')) depth--;\n this.advance();\n }\n }\n\n return {\n type: 'stream',\n name,\n source,\n transformations: [],\n position: { x: 0, y: 0, z: 0 },\n hologram: { shape: 'cylinder', color: '#45b7d1', size: 2, glow: true, interactive: true },\n };\n }\n\n /**\n * Parse nexus (multi-agent hub)\n */\n private parseNexus(): ASTNode | null {\n this.expect('keyword', 'nexus');\n const name = this.expectIdentifier();\n if (!name) return null;\n\n if (this.check('punctuation', '{')) {\n this.advance();\n let depth = 1;\n while (depth > 0 && this.position < this.tokens.length) {\n if (this.check('punctuation', '{')) depth++;\n if (this.check('punctuation', '}')) depth--;\n this.advance();\n }\n }\n\n return {\n type: 'nexus',\n position: { x: 0, y: 0, z: 0 },\n hologram: { shape: 'sphere', color: '#9b59b6', size: 3, glow: true, interactive: true },\n };\n }\n\n /**\n * Parse building (class-like)\n */\n private parseBuilding(): ASTNode | null {\n this.expect('keyword', 'building');\n const name = this.expectIdentifier();\n if (!name) return null;\n\n if (this.check('punctuation', '{')) {\n this.advance();\n let depth = 1;\n while (depth > 0 && this.position < this.tokens.length) {\n if (this.check('punctuation', '{')) depth++;\n if (this.check('punctuation', '}')) depth--;\n this.advance();\n }\n }\n\n return {\n type: 'building',\n position: { x: 0, y: 0, z: 0 },\n hologram: { shape: 'cube', color: '#e74c3c', size: 4, glow: true, interactive: true },\n };\n }\n\n /**\n * Parse a property (key: value)\n */\n private parseProperty(): { key: string; value: unknown } | null {\n const key = this.expectIdentifier();\n if (!key) return null;\n\n if (!this.check('punctuation', ':')) {\n return { key, value: true }; // Flag-style property\n }\n\n this.advance(); // :\n\n const valueToken = this.currentToken();\n if (!valueToken) return null;\n\n let value: unknown;\n if (valueToken.type === 'string') {\n value = valueToken.value;\n this.advance();\n } else if (valueToken.type === 'number') {\n value = parseFloat(valueToken.value);\n this.advance();\n } else if (valueToken.type === 'identifier') {\n if (valueToken.value === 'true') value = true;\n else if (valueToken.value === 'false') value = false;\n else value = valueToken.value;\n this.advance();\n } else if (this.check('punctuation', '[')) {\n value = this.parseArray();\n } else if (this.check('punctuation', '{')) {\n value = this.parseObject();\n } else {\n value = valueToken.value;\n this.advance();\n }\n\n return { key, value };\n }\n\n /**\n * Parse array [...]\n */\n private parseArray(): unknown[] {\n const arr: unknown[] = [];\n this.expect('punctuation', '[');\n\n while (!this.check('punctuation', ']') && this.position < this.tokens.length) {\n const token = this.currentToken();\n if (token?.type === 'string' || token?.type === 'number' || token?.type === 'identifier') {\n if (token.type === 'number') {\n arr.push(parseFloat(token.value));\n } else {\n arr.push(token.value);\n }\n this.advance();\n }\n\n if (this.check('punctuation', ',')) {\n this.advance();\n }\n }\n\n this.expect('punctuation', ']');\n return arr;\n }\n\n /**\n * Parse object {...}\n */\n private parseObject(): Record<string, unknown> {\n const obj: Record<string, unknown> = {};\n this.expect('punctuation', '{');\n\n while (!this.check('punctuation', '}') && this.position < this.tokens.length) {\n this.skipNewlines();\n if (this.check('punctuation', '}')) break;\n\n const prop = this.parseProperty();\n if (prop) {\n obj[prop.key] = prop.value;\n }\n\n this.skipNewlines();\n if (this.check('punctuation', ',')) {\n this.advance();\n }\n }\n\n this.expect('punctuation', '}');\n return obj;\n }\n\n /**\n * Parse position from value\n */\n private parsePosition(value: unknown): SpatialPosition {\n if (typeof value === 'object' && value !== null) {\n const v = value as Record<string, unknown>;\n return {\n x: Number(v.x) || 0,\n y: Number(v.y) || 0,\n z: Number(v.z) || 0,\n };\n }\n return { x: 0, y: 0, z: 0 };\n }\n\n // Helper methods\n\n private currentToken(): Token | undefined {\n return this.tokens[this.position];\n }\n\n private advance(): Token | undefined {\n return this.tokens[this.position++];\n }\n\n private check(type: string, value?: string): boolean {\n const token = this.currentToken();\n if (!token) return false;\n if (token.type !== type) return false;\n if (value !== undefined && token.value.toLowerCase() !== value.toLowerCase()) return false;\n return true;\n }\n\n private expect(type: string, value?: string): boolean {\n if (this.check(type, value)) {\n this.advance();\n return true;\n }\n const token = this.currentToken();\n this.errors.push({\n line: token?.line || 0,\n column: token?.column || 0,\n message: `Expected ${type}${value ? ` '${value}'` : ''}, got ${token?.type || 'EOF'} '${token?.value || ''}'`,\n });\n return false;\n }\n\n private expectIdentifier(): string | null {\n const token = this.currentToken();\n if (token?.type === 'identifier' || token?.type === 'keyword') {\n this.advance();\n return token.value;\n }\n this.errors.push({\n line: token?.line || 0,\n column: token?.column || 0,\n message: `Expected identifier, got ${token?.type || 'EOF'}`,\n });\n return null;\n }\n\n private skipNewlines(): void {\n while (this.currentToken()?.type === 'newline') {\n this.advance();\n }\n }\n}\n"]}
package/dist/debugger.cjs DELETED
@@ -1,19 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkEOKNAVDO_cjs = require('./chunk-EOKNAVDO.cjs');
4
- require('./chunk-XRYTSQHZ.cjs');
5
- require('./chunk-VV3UUUYP.cjs');
6
- require('./chunk-3X2EGU7Z.cjs');
7
-
8
-
9
-
10
- Object.defineProperty(exports, "HoloScriptDebugger", {
11
- enumerable: true,
12
- get: function () { return chunkEOKNAVDO_cjs.HoloScriptDebugger; }
13
- });
14
- Object.defineProperty(exports, "createDebugger", {
15
- enumerable: true,
16
- get: function () { return chunkEOKNAVDO_cjs.createDebugger; }
17
- });
18
- //# sourceMappingURL=debugger.cjs.map
19
- //# sourceMappingURL=debugger.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"debugger.cjs"}
@@ -1,171 +0,0 @@
1
- import { HoloScriptRuntime } from './runtime.cjs';
2
- import { A as ASTNode } from './types-WQSk1Qs2.cjs';
3
-
4
- /**
5
- * HoloScript Debugger
6
- *
7
- * Step-through debugging with breakpoints, call stack inspection,
8
- * and variable watch capabilities.
9
- */
10
-
11
- interface Breakpoint {
12
- id: string;
13
- line: number;
14
- column?: number;
15
- condition?: string;
16
- hitCount: number;
17
- enabled: boolean;
18
- file?: string;
19
- }
20
- interface StackFrame {
21
- id: number;
22
- name: string;
23
- file?: string;
24
- line: number;
25
- column: number;
26
- variables: Map<string, unknown>;
27
- node: ASTNode;
28
- }
29
- interface DebugState {
30
- status: 'running' | 'paused' | 'stopped' | 'stepping';
31
- currentLine: number;
32
- currentColumn: number;
33
- currentNode: ASTNode | null;
34
- callStack: StackFrame[];
35
- breakpoints: Breakpoint[];
36
- }
37
- type StepMode = 'into' | 'over' | 'out';
38
- interface DebugEvent {
39
- type: 'breakpoint-hit' | 'step-complete' | 'exception' | 'output' | 'state-change';
40
- data: unknown;
41
- }
42
- type DebugEventHandler = (event: DebugEvent) => void;
43
- /**
44
- * HoloScript Debugger with breakpoints and step-through execution
45
- */
46
- declare class HoloScriptDebugger {
47
- private runtime;
48
- private parser;
49
- private breakpoints;
50
- private callStack;
51
- private currentAST;
52
- private currentNodeIndex;
53
- private frameIdCounter;
54
- private breakpointIdCounter;
55
- private eventHandlers;
56
- private state;
57
- constructor(runtime?: HoloScriptRuntime);
58
- /**
59
- * Load source code for debugging
60
- */
61
- loadSource(code: string, file?: string): {
62
- success: boolean;
63
- errors?: string[];
64
- };
65
- /**
66
- * Set a breakpoint at a line
67
- */
68
- setBreakpoint(line: number, options?: Partial<Breakpoint>): Breakpoint;
69
- /**
70
- * Remove a breakpoint by ID
71
- */
72
- removeBreakpoint(id: string): boolean;
73
- /**
74
- * Remove all breakpoints at a line
75
- */
76
- removeBreakpointsAtLine(line: number): number;
77
- /**
78
- * Toggle breakpoint enabled state
79
- */
80
- toggleBreakpoint(id: string): boolean;
81
- /**
82
- * Get all breakpoints
83
- */
84
- getBreakpoints(): Breakpoint[];
85
- /**
86
- * Clear all breakpoints
87
- */
88
- clearBreakpoints(): void;
89
- /**
90
- * Start debugging from the beginning
91
- */
92
- start(): Promise<void>;
93
- /**
94
- * Continue execution until next breakpoint or end
95
- */
96
- continue(): Promise<void>;
97
- /**
98
- * Step into the next node
99
- */
100
- stepInto(): Promise<void>;
101
- /**
102
- * Step over the current node
103
- */
104
- stepOver(): Promise<void>;
105
- /**
106
- * Step out of the current function
107
- */
108
- stepOut(): Promise<void>;
109
- /**
110
- * Stop debugging
111
- */
112
- stop(): void;
113
- /**
114
- * Pause execution
115
- */
116
- pause(): void;
117
- /**
118
- * Get current debug state
119
- */
120
- getState(): DebugState;
121
- /**
122
- * Get call stack
123
- */
124
- getCallStack(): StackFrame[];
125
- /**
126
- * Get variables at a specific stack frame
127
- */
128
- getVariables(frameId?: number): Map<string, unknown>;
129
- /**
130
- * Evaluate an expression in the current context
131
- */
132
- evaluate(expression: string): Promise<{
133
- value: unknown;
134
- error?: string;
135
- }>;
136
- /**
137
- * Set a watch expression
138
- */
139
- watch(expression: string): {
140
- id: string;
141
- expression: string;
142
- };
143
- /**
144
- * Register an event handler
145
- */
146
- on(event: string, handler: DebugEventHandler): void;
147
- /**
148
- * Remove an event handler
149
- */
150
- off(event: string, handler: DebugEventHandler): void;
151
- /**
152
- * Get the underlying runtime
153
- */
154
- getRuntime(): HoloScriptRuntime;
155
- private runUntilBreakpoint;
156
- private executeStep;
157
- private executeNode;
158
- private shouldBreakAt;
159
- private findBreakpointAtLine;
160
- private pushStackFrame;
161
- private popStackFrame;
162
- private updateCurrentState;
163
- private updateBreakpointList;
164
- private emitEvent;
165
- }
166
- /**
167
- * Create a debugger instance
168
- */
169
- declare function createDebugger(runtime?: HoloScriptRuntime): HoloScriptDebugger;
170
-
171
- export { type Breakpoint, type DebugEvent, type DebugState, HoloScriptDebugger, type StackFrame, type StepMode, createDebugger };
@@ -1,171 +0,0 @@
1
- import { HoloScriptRuntime } from './runtime.js';
2
- import { A as ASTNode } from './types-WQSk1Qs2.js';
3
-
4
- /**
5
- * HoloScript Debugger
6
- *
7
- * Step-through debugging with breakpoints, call stack inspection,
8
- * and variable watch capabilities.
9
- */
10
-
11
- interface Breakpoint {
12
- id: string;
13
- line: number;
14
- column?: number;
15
- condition?: string;
16
- hitCount: number;
17
- enabled: boolean;
18
- file?: string;
19
- }
20
- interface StackFrame {
21
- id: number;
22
- name: string;
23
- file?: string;
24
- line: number;
25
- column: number;
26
- variables: Map<string, unknown>;
27
- node: ASTNode;
28
- }
29
- interface DebugState {
30
- status: 'running' | 'paused' | 'stopped' | 'stepping';
31
- currentLine: number;
32
- currentColumn: number;
33
- currentNode: ASTNode | null;
34
- callStack: StackFrame[];
35
- breakpoints: Breakpoint[];
36
- }
37
- type StepMode = 'into' | 'over' | 'out';
38
- interface DebugEvent {
39
- type: 'breakpoint-hit' | 'step-complete' | 'exception' | 'output' | 'state-change';
40
- data: unknown;
41
- }
42
- type DebugEventHandler = (event: DebugEvent) => void;
43
- /**
44
- * HoloScript Debugger with breakpoints and step-through execution
45
- */
46
- declare class HoloScriptDebugger {
47
- private runtime;
48
- private parser;
49
- private breakpoints;
50
- private callStack;
51
- private currentAST;
52
- private currentNodeIndex;
53
- private frameIdCounter;
54
- private breakpointIdCounter;
55
- private eventHandlers;
56
- private state;
57
- constructor(runtime?: HoloScriptRuntime);
58
- /**
59
- * Load source code for debugging
60
- */
61
- loadSource(code: string, file?: string): {
62
- success: boolean;
63
- errors?: string[];
64
- };
65
- /**
66
- * Set a breakpoint at a line
67
- */
68
- setBreakpoint(line: number, options?: Partial<Breakpoint>): Breakpoint;
69
- /**
70
- * Remove a breakpoint by ID
71
- */
72
- removeBreakpoint(id: string): boolean;
73
- /**
74
- * Remove all breakpoints at a line
75
- */
76
- removeBreakpointsAtLine(line: number): number;
77
- /**
78
- * Toggle breakpoint enabled state
79
- */
80
- toggleBreakpoint(id: string): boolean;
81
- /**
82
- * Get all breakpoints
83
- */
84
- getBreakpoints(): Breakpoint[];
85
- /**
86
- * Clear all breakpoints
87
- */
88
- clearBreakpoints(): void;
89
- /**
90
- * Start debugging from the beginning
91
- */
92
- start(): Promise<void>;
93
- /**
94
- * Continue execution until next breakpoint or end
95
- */
96
- continue(): Promise<void>;
97
- /**
98
- * Step into the next node
99
- */
100
- stepInto(): Promise<void>;
101
- /**
102
- * Step over the current node
103
- */
104
- stepOver(): Promise<void>;
105
- /**
106
- * Step out of the current function
107
- */
108
- stepOut(): Promise<void>;
109
- /**
110
- * Stop debugging
111
- */
112
- stop(): void;
113
- /**
114
- * Pause execution
115
- */
116
- pause(): void;
117
- /**
118
- * Get current debug state
119
- */
120
- getState(): DebugState;
121
- /**
122
- * Get call stack
123
- */
124
- getCallStack(): StackFrame[];
125
- /**
126
- * Get variables at a specific stack frame
127
- */
128
- getVariables(frameId?: number): Map<string, unknown>;
129
- /**
130
- * Evaluate an expression in the current context
131
- */
132
- evaluate(expression: string): Promise<{
133
- value: unknown;
134
- error?: string;
135
- }>;
136
- /**
137
- * Set a watch expression
138
- */
139
- watch(expression: string): {
140
- id: string;
141
- expression: string;
142
- };
143
- /**
144
- * Register an event handler
145
- */
146
- on(event: string, handler: DebugEventHandler): void;
147
- /**
148
- * Remove an event handler
149
- */
150
- off(event: string, handler: DebugEventHandler): void;
151
- /**
152
- * Get the underlying runtime
153
- */
154
- getRuntime(): HoloScriptRuntime;
155
- private runUntilBreakpoint;
156
- private executeStep;
157
- private executeNode;
158
- private shouldBreakAt;
159
- private findBreakpointAtLine;
160
- private pushStackFrame;
161
- private popStackFrame;
162
- private updateCurrentState;
163
- private updateBreakpointList;
164
- private emitEvent;
165
- }
166
- /**
167
- * Create a debugger instance
168
- */
169
- declare function createDebugger(runtime?: HoloScriptRuntime): HoloScriptDebugger;
170
-
171
- export { type Breakpoint, type DebugEvent, type DebugState, HoloScriptDebugger, type StackFrame, type StepMode, createDebugger };
package/dist/debugger.js DELETED
@@ -1,6 +0,0 @@
1
- export { HoloScriptDebugger, createDebugger } from './chunk-LKH4ZAN6.js';
2
- import './chunk-723TPVHD.js';
3
- import './chunk-HQZ3HUMY.js';
4
- import './chunk-SATNCODL.js';
5
- //# sourceMappingURL=debugger.js.map
6
- //# sourceMappingURL=debugger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"debugger.js"}