@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
|
@@ -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
|
package/dist/debugger.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"debugger.cjs"}
|
package/dist/debugger.d.cts
DELETED
|
@@ -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 };
|
package/dist/debugger.d.ts
DELETED
|
@@ -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
package/dist/debugger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"debugger.js"}
|