@holoscript/core 1.0.0-alpha.1 → 1.0.0-alpha.2
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 +9 -8
- package/src/HoloScriptRuntime.ts +240 -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"}
|