@holoscript/core 1.0.0-alpha.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +10 -9
- package/src/HoloScript2DParser.js +227 -0
- package/src/HoloScript2DParser.ts +5 -0
- package/src/HoloScriptCodeParser.js +1102 -0
- package/src/HoloScriptCodeParser.ts +145 -20
- package/src/HoloScriptDebugger.js +458 -0
- package/src/HoloScriptParser.js +338 -0
- package/src/HoloScriptPlusParser.js +371 -0
- package/src/HoloScriptPlusParser.ts +543 -0
- package/src/HoloScriptRuntime.js +1399 -0
- package/src/HoloScriptRuntime.test.js +351 -0
- package/src/HoloScriptRuntime.ts +257 -3
- package/src/HoloScriptTypeChecker.js +356 -0
- package/src/__tests__/GraphicsServices.test.js +357 -0
- package/src/__tests__/GraphicsServices.test.ts +427 -0
- package/src/__tests__/HoloScriptPlusParser.test.js +317 -0
- package/src/__tests__/HoloScriptPlusParser.test.ts +392 -0
- package/src/__tests__/integration.test.js +336 -0
- package/src/__tests__/performance.bench.js +218 -0
- package/src/__tests__/type-checker.test.js +60 -0
- package/src/__tests__/type-checker.test.ts +73 -0
- package/src/index.js +217 -0
- package/src/index.ts +158 -18
- package/src/interop/Interoperability.js +413 -0
- package/src/interop/Interoperability.ts +494 -0
- package/src/logger.js +42 -0
- package/src/parser/EnhancedParser.js +205 -0
- package/src/parser/EnhancedParser.ts +251 -0
- package/src/parser/HoloScriptPlusParser.js +928 -0
- package/src/parser/HoloScriptPlusParser.ts +1089 -0
- package/src/runtime/HoloScriptPlusRuntime.js +674 -0
- package/src/runtime/HoloScriptPlusRuntime.ts +861 -0
- package/src/runtime/PerformanceTelemetry.js +323 -0
- package/src/runtime/PerformanceTelemetry.ts +467 -0
- package/src/runtime/RuntimeOptimization.js +361 -0
- package/src/runtime/RuntimeOptimization.ts +416 -0
- package/src/services/HololandGraphicsPipelineService.js +506 -0
- package/src/services/HololandGraphicsPipelineService.ts +662 -0
- package/src/services/PlatformPerformanceOptimizer.js +356 -0
- package/src/services/PlatformPerformanceOptimizer.ts +503 -0
- package/src/state/ReactiveState.js +427 -0
- package/src/state/ReactiveState.ts +572 -0
- package/src/tools/DeveloperExperience.js +376 -0
- package/src/tools/DeveloperExperience.ts +438 -0
- package/src/traits/AIDriverTrait.js +322 -0
- package/src/traits/AIDriverTrait.test.js +329 -0
- package/src/traits/AIDriverTrait.test.ts +357 -0
- package/src/traits/AIDriverTrait.ts +474 -0
- package/src/traits/LightingTrait.js +313 -0
- package/src/traits/LightingTrait.test.js +410 -0
- package/src/traits/LightingTrait.test.ts +462 -0
- package/src/traits/LightingTrait.ts +505 -0
- package/src/traits/MaterialTrait.js +194 -0
- package/src/traits/MaterialTrait.test.js +286 -0
- package/src/traits/MaterialTrait.test.ts +329 -0
- package/src/traits/MaterialTrait.ts +324 -0
- package/src/traits/RenderingTrait.js +356 -0
- package/src/traits/RenderingTrait.test.js +363 -0
- package/src/traits/RenderingTrait.test.ts +427 -0
- package/src/traits/RenderingTrait.ts +555 -0
- package/src/traits/VRTraitSystem.js +740 -0
- package/src/traits/VRTraitSystem.ts +1040 -0
- package/src/traits/VoiceInputTrait.js +284 -0
- package/src/traits/VoiceInputTrait.test.js +226 -0
- package/src/traits/VoiceInputTrait.test.ts +252 -0
- package/src/traits/VoiceInputTrait.ts +401 -0
- package/src/types/AdvancedTypeSystem.js +226 -0
- package/src/types/AdvancedTypeSystem.ts +494 -0
- package/src/types/HoloScriptPlus.d.ts +853 -0
- package/src/types.js +6 -0
- package/src/types.ts +96 -1
- package/tsconfig.json +1 -1
- package/tsup.config.d.ts +2 -0
- package/tsup.config.js +18 -0
- package/LICENSE +0 -21
- package/dist/chunk-3X2EGU7Z.cjs +0 -52
- package/dist/chunk-3X2EGU7Z.cjs.map +0 -1
- package/dist/chunk-723TPVHD.js +0 -1074
- package/dist/chunk-723TPVHD.js.map +0 -1
- package/dist/chunk-EOKNAVDO.cjs +0 -424
- package/dist/chunk-EOKNAVDO.cjs.map +0 -1
- package/dist/chunk-HQZ3HUMY.js +0 -1087
- package/dist/chunk-HQZ3HUMY.js.map +0 -1
- package/dist/chunk-KWYIVRIH.js +0 -344
- package/dist/chunk-KWYIVRIH.js.map +0 -1
- package/dist/chunk-LKH4ZAN6.js +0 -421
- package/dist/chunk-LKH4ZAN6.js.map +0 -1
- package/dist/chunk-SATNCODL.js +0 -45
- package/dist/chunk-SATNCODL.js.map +0 -1
- package/dist/chunk-VMZN4EVR.cjs +0 -347
- package/dist/chunk-VMZN4EVR.cjs.map +0 -1
- package/dist/chunk-VV3UUUYP.cjs +0 -1089
- package/dist/chunk-VV3UUUYP.cjs.map +0 -1
- package/dist/chunk-XRYTSQHZ.cjs +0 -1076
- package/dist/chunk-XRYTSQHZ.cjs.map +0 -1
- package/dist/debugger.cjs +0 -19
- package/dist/debugger.cjs.map +0 -1
- package/dist/debugger.d.cts +0 -171
- package/dist/debugger.d.ts +0 -171
- package/dist/debugger.js +0 -6
- package/dist/debugger.js.map +0 -1
- package/dist/index.cjs +0 -755
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -169
- package/dist/index.d.ts +0 -169
- package/dist/index.js +0 -699
- package/dist/index.js.map +0 -1
- package/dist/parser.cjs +0 -13
- package/dist/parser.cjs.map +0 -1
- package/dist/parser.d.cts +0 -154
- package/dist/parser.d.ts +0 -154
- package/dist/parser.js +0 -4
- package/dist/parser.js.map +0 -1
- package/dist/runtime.cjs +0 -13
- package/dist/runtime.cjs.map +0 -1
- package/dist/runtime.d.cts +0 -147
- package/dist/runtime.d.ts +0 -147
- package/dist/runtime.js +0 -4
- package/dist/runtime.js.map +0 -1
- package/dist/type-checker.cjs +0 -16
- package/dist/type-checker.cjs.map +0 -1
- package/dist/type-checker.d.cts +0 -105
- package/dist/type-checker.d.ts +0 -105
- package/dist/type-checker.js +0 -3
- package/dist/type-checker.js.map +0 -1
- package/dist/types-WQSk1Qs2.d.cts +0 -238
- package/dist/types-WQSk1Qs2.d.ts +0 -238
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/HoloScript2DParser.ts","../src/HoloScriptParser.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * HoloScript 2D Parser Extension\n *\n * Adds support for 2D UI elements to HoloScript for desktop/mobile apps.\n * Works alongside 3D VR syntax for hybrid applications.\n */\n\nimport { logger } from './logger';\nimport type { UI2DNode, UIElementType, Position2D } from './types';\n\nconst UI_SECURITY_CONFIG = {\n maxUIElements: 500,\n maxNestingDepth: 10,\n maxPropertyLength: 500,\n allowedEventHandlers: ['onClick', 'onChange', 'onSubmit', 'onFocus', 'onBlur', 'onHover'],\n};\n\nexport class HoloScript2DParser {\n private uiElements: Map<string, UI2DNode> = new Map();\n\n /**\n * Parse 2D UI element from HoloScript code\n */\n parse2DElement(code: string, depth: number = 0): UI2DNode | null {\n if (depth > UI_SECURITY_CONFIG.maxNestingDepth) {\n logger.warn('Max nesting depth exceeded', { depth });\n return null;\n }\n\n const trimmedCode = code.trim();\n const lines = trimmedCode.split('\\n');\n if (lines.length === 0) return null;\n\n const firstLine = lines[0].trim();\n const headerMatch = firstLine.match(/^([\\w-]+)\\s+(\\w+)\\s*\\{/);\n\n if (!headerMatch) {\n logger.warn('Invalid 2D element syntax', { line: firstLine });\n return null;\n }\n\n const [, elementType, name] = headerMatch;\n\n if (!this.isValidUIElementType(elementType)) {\n logger.warn('Invalid UI element type', { elementType });\n return null;\n }\n\n const startIndex = trimmedCode.indexOf('{');\n const endIndex = trimmedCode.lastIndexOf('}');\n if (startIndex === -1 || endIndex === -1 || endIndex <= startIndex) {\n return null;\n }\n\n const innerContent = trimmedCode.slice(startIndex + 1, endIndex).trim();\n const innerLines = this.splitIntoLogicalBlocks(innerContent);\n\n const properties: Record<string, unknown> = {};\n const events: Record<string, string> = {};\n const children: UI2DNode[] = [];\n\n for (const block of innerLines) {\n const line = block.trim();\n if (!line) continue;\n\n if (line.includes('{')) {\n const childNode = this.parse2DElement(line, depth + 1);\n if (childNode) children.push(childNode);\n continue;\n }\n\n const propMatch = line.match(/^(\\w+):\\s*(.+)$/);\n if (propMatch) {\n const [, key, rawValue] = propMatch;\n if (UI_SECURITY_CONFIG.allowedEventHandlers.includes(key)) {\n events[key] = rawValue.trim();\n } else {\n properties[key] = this.parsePropertyValue(rawValue);\n }\n }\n }\n\n const node: UI2DNode = {\n type: '2d-element',\n elementType: elementType as UIElementType,\n name,\n properties: { ...this.getDefaultProperties(elementType as UIElementType), ...properties },\n events: Object.keys(events).length > 0 ? events : undefined,\n children: children.length > 0 ? children : undefined,\n };\n\n if (depth === 0) {\n if (this.uiElements.size >= UI_SECURITY_CONFIG.maxUIElements) {\n logger.warn('Max UI elements limit reached');\n return null;\n }\n this.uiElements.set(name, node);\n }\n\n return node;\n }\n\n private splitIntoLogicalBlocks(content: string): string[] {\n const blocks: string[] = [];\n let currentBlock = '';\n let bracketDepth = 0;\n\n for (let i = 0; i < content.length; i++) {\n const char = content[i];\n if (char === '{') bracketDepth++;\n if (char === '}') bracketDepth--;\n\n currentBlock += char;\n\n if (bracketDepth === 0) {\n if (char === '\\n' || i === content.length - 1) {\n const trimmed = currentBlock.trim();\n if (trimmed) blocks.push(trimmed);\n currentBlock = '';\n }\n }\n }\n\n const finalTrimmed = currentBlock.trim();\n if (finalTrimmed) blocks.push(finalTrimmed);\n\n return blocks;\n }\n\n /**\n * Parse voice command for 2D UI creation\n */\n parse2DVoiceCommand(command: string): UI2DNode | null {\n const tokens = command.toLowerCase().trim().split(/\\s+/);\n\n if (tokens.length < 3) return null;\n\n const action = tokens[0];\n const elementType = tokens[1];\n const name = tokens[2];\n\n if (action !== 'create' && action !== 'add') return null;\n if (!this.isValidUIElementType(elementType)) return null;\n\n const node: UI2DNode = {\n type: '2d-element',\n elementType: elementType as UIElementType,\n name,\n properties: this.getDefaultProperties(elementType as UIElementType),\n };\n\n this.uiElements.set(name, node);\n return node;\n }\n\n /**\n * Parse gesture for 2D UI interaction\n */\n parse2DGesture(gestureType: string, position: Position2D): UI2DNode | null {\n switch (gestureType) {\n case 'tap':\n return this.createQuick2DElement('button', `button_${Date.now()}`, position);\n case 'double-tap':\n return this.createQuick2DElement('textinput', `input_${Date.now()}`, position);\n case 'long-press':\n return this.createQuick2DElement('panel', `panel_${Date.now()}`, position);\n default:\n return null;\n }\n }\n\n private createQuick2DElement(elementType: UIElementType, name: string, position: Position2D): UI2DNode {\n const node: UI2DNode = {\n type: '2d-element',\n elementType,\n name,\n properties: {\n ...this.getDefaultProperties(elementType),\n x: position.x,\n y: position.y,\n },\n };\n\n this.uiElements.set(name, node);\n return node;\n }\n\n private isValidUIElementType(type: string): boolean {\n const validTypes: UIElementType[] = [\n 'canvas', 'button', 'textinput', 'panel', 'text', 'image',\n 'list', 'modal', 'slider', 'toggle', 'dropdown',\n 'flex-container', 'grid-container', 'scroll-view', 'tab-view'\n ];\n return validTypes.includes(type as UIElementType);\n }\n\n private parsePropertyValue(value: string): unknown {\n const trimmed = value.trim();\n\n if ((trimmed.startsWith('\"') && trimmed.endsWith('\"')) ||\n (trimmed.startsWith(\"'\") && trimmed.endsWith(\"'\"))) {\n return trimmed.slice(1, -1);\n }\n\n if (!isNaN(parseFloat(trimmed)) && isFinite(parseFloat(trimmed))) {\n return parseFloat(trimmed);\n }\n\n if (trimmed === 'true') return true;\n if (trimmed === 'false') return false;\n\n if (trimmed.startsWith('[') && trimmed.endsWith(']')) {\n const items = trimmed.slice(1, -1).split(',').map(item =>\n this.parsePropertyValue(item.trim())\n );\n return items;\n }\n\n return trimmed;\n }\n\n private getDefaultProperties(elementType: UIElementType): Record<string, unknown> {\n const defaults: Record<UIElementType, Record<string, unknown>> = {\n 'canvas': { width: 800, height: 600, backgroundColor: '#ffffff' },\n 'button': { text: 'Button', width: 120, height: 40, backgroundColor: '#007bff', color: '#ffffff', borderRadius: 4 },\n 'textinput': { placeholder: '', width: 200, height: 36, fontSize: 14, borderColor: '#cccccc', borderWidth: 1, borderRadius: 4 },\n 'panel': { width: 200, height: 200, backgroundColor: '#f0f0f0', borderRadius: 0 },\n 'text': { content: 'Text', fontSize: 16, color: '#000000', fontFamily: 'sans-serif' },\n 'image': { src: '', width: 100, height: 100, fit: 'cover' },\n 'list': { items: [], itemHeight: 40, width: 200, height: 300 },\n 'modal': { title: 'Modal', width: 400, height: 300, visible: false, backgroundColor: '#ffffff' },\n 'slider': { min: 0, max: 100, value: 50, width: 200 },\n 'toggle': { checked: false, width: 50, height: 24 },\n 'dropdown': { options: [], selected: null, width: 200 },\n 'flex-container': { direction: 'row', gap: 10, padding: 10 },\n 'grid-container': { columns: 3, gap: 10, padding: 10 },\n 'scroll-view': { width: 300, height: 400, scrollDirection: 'vertical' },\n 'tab-view': { tabs: [], activeTabId: null, tabPosition: 'top', width: 400, height: 300 },\n };\n return { ...defaults[elementType] };\n }\n\n getUIElements(): Map<string, UI2DNode> {\n return new Map(this.uiElements);\n }\n\n findElement(name: string): UI2DNode | null {\n return this.uiElements.get(name) || null;\n }\n\n clear(): void {\n this.uiElements.clear();\n }\n}\n\nexport type { UI2DNode, UIElementType, Position2D };\n","/**\n * HoloScript Parser\n *\n * Parses voice commands, gestures, and code into HoloScript AST.\n * Supports both 3D VR and 2D UI elements.\n */\n\nimport { logger } from './logger';\nimport { HoloScript2DParser } from './HoloScript2DParser';\nimport type {\n ASTNode,\n OrbNode,\n ParameterNode,\n ConnectionNode,\n GateNode,\n StreamNode,\n GenericASTNode,\n SpatialPosition,\n VoiceCommand,\n GestureData,\n UI2DNode,\n HologramShape,\n} from './types';\n\nconst HOLOSCRIPT_SECURITY_CONFIG = {\n maxCommandLength: 1000,\n maxTokens: 100,\n maxHologramsPerUser: 50,\n suspiciousKeywords: [\n 'process', 'require', 'eval', 'import', 'constructor',\n 'prototype', '__proto__', 'fs', 'child_process', 'exec',\n 'spawn', 'fetch', 'xmlhttprequest',\n ],\n allowedShapes: ['orb', 'cube', 'cylinder', 'pyramid', 'sphere', 'function', 'gate', 'stream'],\n allowedUIElements: [\n 'canvas', 'button', 'textinput', 'panel', 'text', 'image',\n 'list', 'modal', 'slider', 'toggle', 'dropdown',\n 'flex-container', 'grid-container', 'scroll-view'\n ],\n};\n\nexport class HoloScriptParser {\n private ast: ASTNode[] = [];\n private parser2D: HoloScript2DParser;\n\n constructor() {\n this.parser2D = new HoloScript2DParser();\n }\n\n /**\n * Parse voice command into AST nodes\n */\n parseVoiceCommand(command: VoiceCommand): ASTNode[] {\n if (command.command.length > HOLOSCRIPT_SECURITY_CONFIG.maxCommandLength) {\n logger.warn('Command too long', {\n length: command.command.length,\n limit: HOLOSCRIPT_SECURITY_CONFIG.maxCommandLength,\n });\n return [];\n }\n\n const rawTokens = this.tokenizeCommand(command.command.toLowerCase());\n const tokens = this.sanitizeTokens(rawTokens);\n\n if (tokens.length === 0) return [];\n\n if (tokens.length > HOLOSCRIPT_SECURITY_CONFIG.maxTokens) {\n logger.warn('Too many tokens in command', {\n tokenCount: tokens.length,\n limit: HOLOSCRIPT_SECURITY_CONFIG.maxTokens,\n });\n return [];\n }\n\n const commandType = tokens[0];\n\n // Check if this is a 2D UI command\n if ((commandType === 'create' || commandType === 'add') && tokens.length > 1) {\n const elementType = tokens[1];\n if (HOLOSCRIPT_SECURITY_CONFIG.allowedUIElements.includes(elementType)) {\n return this.parse2DUICommand(command.command);\n }\n }\n\n switch (commandType) {\n case 'create':\n case 'summon':\n return this.parseCreateCommand(tokens.slice(1), command.spatialContext);\n case 'connect':\n return this.parseConnectCommand(tokens.slice(1));\n case 'execute':\n case 'run':\n return this.parseExecuteCommand(tokens.slice(1));\n case 'debug':\n return this.parseDebugCommand(tokens.slice(1));\n case 'visualize':\n return this.parseVisualizeCommand(tokens.slice(1));\n default:\n return this.parseGenericCommand(tokens);\n }\n }\n\n private parse2DUICommand(command: string): ASTNode[] {\n const ui2DNode = this.parser2D.parse2DVoiceCommand(command);\n if (!ui2DNode) return [];\n\n const astNode: GenericASTNode = {\n type: '2d-ui',\n uiElementType: ui2DNode.elementType,\n name: ui2DNode.name,\n properties: ui2DNode.properties,\n events: ui2DNode.events,\n children: ui2DNode.children,\n };\n\n return [astNode];\n }\n\n /**\n * Parse gesture input\n */\n parseGesture(gesture: GestureData): ASTNode[] {\n switch (gesture.type) {\n case 'pinch':\n return this.parsePinchGesture(gesture);\n case 'swipe':\n return this.parseSwipeGesture(gesture);\n case 'rotate':\n return this.parseRotateGesture(gesture);\n case 'grab':\n return this.parseGrabGesture(gesture);\n default:\n return [];\n }\n }\n\n private parseCreateCommand(tokens: string[], position?: SpatialPosition): ASTNode[] {\n if (tokens.length < 2) return [];\n\n const shape = tokens[0];\n const name = tokens[1];\n\n switch (shape) {\n case 'orb':\n case 'sphere':\n return [this.createOrbNode(name, position)];\n case 'function':\n return [this.createFunctionNode(name, tokens.slice(2), position)];\n case 'gate':\n return [this.createGateNode(name, tokens.slice(2), position)];\n case 'stream':\n return [this.createStreamNode(name, tokens.slice(2), position)];\n default:\n return [this.createGenericNode(shape, name, position)];\n }\n }\n\n private parseConnectCommand(tokens: string[]): ASTNode[] {\n if (tokens.length < 3) return [];\n\n const from = tokens[0];\n const to = tokens[2];\n const dataType = tokens.length > 3 ? tokens[3] : 'any';\n\n return [{\n type: 'connection',\n from,\n to,\n dataType,\n bidirectional: tokens.includes('bidirectional') || tokens.includes('both'),\n } as ConnectionNode];\n }\n\n private createOrbNode(name: string, position?: SpatialPosition): OrbNode {\n return {\n type: 'orb',\n name,\n position: position || { x: 0, y: 0, z: 0 },\n hologram: {\n shape: 'orb',\n color: '#00ffff',\n size: 1,\n glow: true,\n interactive: true,\n },\n properties: {},\n methods: [],\n };\n }\n\n private createFunctionNode(name: string, params: string[], position?: SpatialPosition): GenericASTNode {\n const parameters: ParameterNode[] = [];\n\n let inParams = false;\n for (const param of params) {\n if (param === 'with' || param === 'parameters') {\n inParams = true;\n continue;\n }\n if (inParams && param !== 'do' && param !== 'execute') {\n parameters.push({\n type: 'parameter',\n name: param,\n dataType: 'any',\n });\n }\n }\n\n return {\n type: 'function',\n name,\n parameters,\n body: [],\n position: position || { x: 0, y: 0, z: 0 },\n hologram: {\n shape: 'cube',\n color: '#ff6b35',\n size: 1.5,\n glow: true,\n interactive: true,\n },\n };\n }\n\n private createGateNode(_name: string, params: string[], position?: SpatialPosition): GateNode {\n const condition = params.join(' ').replace('condition', '').trim();\n\n return {\n type: 'gate',\n condition,\n truePath: [],\n falsePath: [],\n position: position || { x: 0, y: 0, z: 0 },\n hologram: {\n shape: 'pyramid',\n color: '#4ecdc4',\n size: 1,\n glow: true,\n interactive: true,\n },\n };\n }\n\n private createStreamNode(name: string, params: string[], position?: SpatialPosition): StreamNode {\n return {\n type: 'stream',\n name,\n source: params[0] || 'unknown',\n transformations: [],\n position: position || { x: 0, y: 0, z: 0 },\n hologram: {\n shape: 'cylinder',\n color: '#45b7d1',\n size: 2,\n glow: true,\n interactive: true,\n },\n };\n }\n\n private createGenericNode(shape: string, name: string, position?: SpatialPosition): GenericASTNode {\n return {\n type: shape,\n name,\n position: position || { x: 0, y: 0, z: 0 },\n hologram: {\n shape: shape as HologramShape,\n color: '#ffffff',\n size: 1,\n glow: false,\n interactive: true,\n },\n };\n }\n\n private parsePinchGesture(gesture: GestureData): ASTNode[] {\n return [{\n type: 'create',\n position: gesture.position,\n hologram: { shape: 'orb', color: '#ff0000', size: 0.5, glow: true, interactive: true },\n }];\n }\n\n private parseSwipeGesture(gesture: GestureData): ASTNode[] {\n if (!gesture.direction) return [];\n return [{\n type: 'connect',\n position: gesture.position,\n hologram: { shape: 'cylinder', color: '#00ff00', size: gesture.magnitude, glow: true, interactive: false },\n }];\n }\n\n private parseRotateGesture(gesture: GestureData): ASTNode[] {\n return [{\n type: 'modify',\n position: gesture.position,\n hologram: { shape: 'sphere', color: '#ffff00', size: 0.8, glow: true, interactive: true },\n }];\n }\n\n private parseGrabGesture(gesture: GestureData): ASTNode[] {\n return [{\n type: 'select',\n position: gesture.position,\n hologram: { shape: 'cube', color: '#ff00ff', size: 0.3, glow: true, interactive: true },\n }];\n }\n\n private tokenizeCommand(command: string): string[] {\n return command\n .toLowerCase()\n .replace(/[^\\w\\s]/g, ' ')\n .split(/\\s+/)\n .filter(token => token.length > 0);\n }\n\n private sanitizeTokens(tokens: string[]): string[] {\n return tokens.filter(token => {\n const isSuspicious = HOLOSCRIPT_SECURITY_CONFIG.suspiciousKeywords.some(\n keyword => token.includes(keyword)\n );\n if (isSuspicious) {\n logger.warn('Suspicious token blocked', { token });\n return false;\n }\n return true;\n });\n }\n\n private parseExecuteCommand(tokens: string[]): GenericASTNode[] {\n return [{\n type: 'execute',\n target: tokens[0] || 'unknown',\n hologram: { shape: 'sphere', color: '#ff4500', size: 1.2, glow: true, interactive: false },\n }];\n }\n\n private parseDebugCommand(tokens: string[]): GenericASTNode[] {\n return [{\n type: 'debug',\n target: tokens[0] || 'program',\n hologram: { shape: 'pyramid', color: '#ff1493', size: 0.8, glow: true, interactive: true },\n }];\n }\n\n private parseVisualizeCommand(tokens: string[]): GenericASTNode[] {\n return [{\n type: 'visualize',\n target: tokens[0] || 'data',\n hologram: { shape: 'cylinder', color: '#32cd32', size: 1.5, glow: true, interactive: true },\n }];\n }\n\n private parseGenericCommand(tokens: string[]): GenericASTNode[] {\n return [{\n type: 'generic',\n command: tokens.join(' '),\n hologram: { shape: 'orb', color: '#808080', size: 0.5, glow: false, interactive: true },\n }];\n }\n\n getAST(): ASTNode[] {\n return [...this.ast];\n }\n\n addNode(node: ASTNode): void {\n this.ast.push(node);\n }\n\n clear(): void {\n this.ast = [];\n }\n\n findNode(name: string): ASTNode | null {\n return this.ast.find(node => 'name' in node && (node as { name?: string }).name === name) || null;\n }\n\n getNodesAtPosition(position: SpatialPosition, radius: number = 1): ASTNode[] {\n return this.ast.filter(node => {\n if (!node.position) return false;\n const distance = Math.sqrt(\n Math.pow(node.position.x - position.x, 2) +\n Math.pow(node.position.y - position.y, 2) +\n Math.pow(node.position.z - position.z, 2)\n );\n return distance <= radius;\n });\n }\n\n parse2DCode(code: string): UI2DNode | null {\n return this.parser2D.parse2DElement(code);\n }\n\n get2DParser(): HoloScript2DParser {\n return this.parser2D;\n }\n}\n","/**\n * @holoscript/core\n *\n * Core HoloScript language - parser, runtime, and AST types.\n *\n * HoloScript is an open source VR scene description language that supports:\n * - Voice commands for 3D object creation\n * - Gesture input parsing\n * - 2D UI element definition\n * - Spatial programming concepts\n *\n * @example\n * ```typescript\n * import { HoloScriptParser, HoloScriptRuntime } from '@holoscript/core';\n *\n * const parser = new HoloScriptParser();\n * const runtime = new HoloScriptRuntime();\n *\n * // Parse a voice command\n * const nodes = parser.parseVoiceCommand({\n * command: 'create orb myOrb',\n * confidence: 0.95,\n * timestamp: Date.now()\n * });\n *\n * // Execute the AST\n * const results = await runtime.executeProgram(nodes);\n * ```\n *\n * @packageDocumentation\n */\n\n// Import for use in utility functions\nimport { HoloScriptParser } from './HoloScriptParser';\nimport { HoloScriptRuntime } from './HoloScriptRuntime';\n\n// Parser\nexport { HoloScriptParser } from './HoloScriptParser';\nexport { HoloScript2DParser } from './HoloScript2DParser';\nexport { HoloScriptCodeParser, type ParseResult, type ParseError } from './HoloScriptCodeParser';\n\n// Runtime\nexport { HoloScriptRuntime } from './HoloScriptRuntime';\n\n// Type Checker\nexport {\n HoloScriptTypeChecker,\n createTypeChecker,\n type TypeCheckResult,\n type TypeInfo,\n type TypeDiagnostic,\n} from './HoloScriptTypeChecker';\n\n// Debugger\nexport {\n HoloScriptDebugger,\n createDebugger,\n type Breakpoint,\n type StackFrame,\n type DebugState,\n type DebugEvent,\n type StepMode,\n} from './HoloScriptDebugger';\n\n// Logger\nexport {\n logger,\n setHoloScriptLogger,\n enableConsoleLogging,\n resetLogger,\n NoOpLogger,\n ConsoleLogger,\n type HoloScriptLogger,\n} from './logger';\n\n// Types\nexport type {\n // Spatial\n SpatialPosition,\n Position2D,\n Size2D,\n\n // Hologram\n HologramShape,\n HologramProperties,\n\n // Input\n VoiceCommand,\n GestureType,\n HandType,\n GestureData,\n\n // AST Nodes\n ASTNode,\n OrbNode,\n MethodNode,\n ParameterNode,\n ConnectionNode,\n GateNode,\n StreamNode,\n TransformationNode,\n GenericASTNode,\n\n // Phase 2: Loop Nodes\n ForLoopNode,\n WhileLoopNode,\n ForEachLoopNode,\n\n // Phase 2: Module Nodes\n ImportNode,\n ExportNode,\n\n // Phase 2: Variable Nodes\n VariableDeclarationNode,\n\n // Phase B: Data Cell Nodes\n DataCellType,\n DataCellStyle,\n DataCellNode,\n DataZoneNode,\n\n // 2D UI\n UIElementType,\n UI2DNode,\n UIStyle,\n\n // Runtime\n RuntimeContext,\n ExecutionResult,\n ParticleSystem,\n\n // Config\n SecurityConfig,\n RuntimeSecurityLimits,\n} from './types';\n\n// Version\nexport const HOLOSCRIPT_VERSION = '1.0.0-alpha.1';\n\n// Supported Platforms\nexport const HOLOSCRIPT_SUPPORTED_PLATFORMS = [\n 'WebXR',\n 'Oculus Quest',\n 'HTC Vive',\n 'Valve Index',\n 'Apple Vision Pro',\n 'Windows Mixed Reality',\n] as const;\n\n// Voice Commands Reference\nexport const HOLOSCRIPT_VOICE_COMMANDS = [\n // 3D VR Commands\n 'create orb [name]',\n 'summon function [name]',\n 'connect [from] to [to]',\n 'execute [function]',\n 'debug program',\n 'visualize [data]',\n 'gate [condition]',\n 'stream [source] through [transformations]',\n // 2D UI Commands\n 'create button [name]',\n 'add textinput [name]',\n 'create panel [name]',\n 'add slider [name]',\n] as const;\n\n// Gesture Reference\nexport const HOLOSCRIPT_GESTURES = [\n 'pinch - create object',\n 'swipe - connect objects',\n 'rotate - modify properties',\n 'grab - select object',\n 'spread - expand view',\n 'fist - execute action',\n] as const;\n\n// Demo Scripts\nexport const HOLOSCRIPT_DEMO_SCRIPTS = {\n helloWorld: `orb greeting {\n message: \"Hello, HoloScript World!\"\n color: \"#00ffff\"\n glow: true\n}\n\nfunction displayGreeting() {\n show greeting\n}`,\n\n aiAgent: `orb agentCore {\n personality: \"helpful\"\n capabilities: [\"conversation\", \"problem_solving\", \"learning\"]\n energy: 100\n}\n\nfunction processQuery(query: string): string {\n analyze query\n generate response\n return response\n}`,\n\n neuralNetwork: `orb inputLayer { neurons: 784 }\norb hiddenLayer { neurons: 128 }\norb outputLayer { neurons: 10 }\n\nconnect inputLayer to hiddenLayer as \"weights\"\nconnect hiddenLayer to outputLayer as \"weights\"\n\nfunction trainNetwork(data: array): object {\n forward_pass data\n calculate_loss\n backward_pass\n update_weights\n return metrics\n}`,\n\n loginForm: `button loginBtn {\n text: \"Login\"\n x: 100\n y: 150\n width: 200\n height: 40\n onClick: handleLogin\n}\n\ntextinput usernameInput {\n placeholder: \"Username\"\n x: 100\n y: 50\n width: 200\n height: 36\n}\n\ntextinput passwordInput {\n placeholder: \"Password\"\n x: 100\n y: 100\n width: 200\n height: 36\n}`,\n\n dashboard: `panel sidebar {\n x: 0\n y: 0\n width: 200\n height: 600\n backgroundColor: \"#2c3e50\"\n}\n\ntext title {\n content: \"Dashboard\"\n x: 220\n y: 20\n fontSize: 24\n color: \"#34495e\"\n}\n\nbutton refreshBtn {\n text: \"Refresh Data\"\n x: 220\n y: 60\n onClick: refreshData\n}`,\n} as const;\n\n// Utility Functions\n\n/**\n * Create a pre-configured HoloScript environment\n */\nexport function createHoloScriptEnvironment() {\n return {\n parser: new HoloScriptParser(),\n runtime: new HoloScriptRuntime(),\n version: HOLOSCRIPT_VERSION,\n };\n}\n\n/**\n * Check if the current environment supports VR/XR\n */\nexport function isHoloScriptSupported(): boolean {\n if (typeof globalThis === 'undefined') return false;\n const win = globalThis as { window?: { navigator?: { xr?: unknown; getVRDisplays?: unknown }; webkitGetUserMedia?: unknown } };\n if (!win.window) return false;\n\n return !!(\n win.window.navigator?.xr ||\n win.window.navigator?.getVRDisplays ||\n win.window.webkitGetUserMedia\n );\n}\n"]}
|
package/dist/parser.cjs
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkXRYTSQHZ_cjs = require('./chunk-XRYTSQHZ.cjs');
|
|
4
|
-
require('./chunk-3X2EGU7Z.cjs');
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(exports, "HoloScriptCodeParser", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function () { return chunkXRYTSQHZ_cjs.HoloScriptCodeParser; }
|
|
11
|
-
});
|
|
12
|
-
//# sourceMappingURL=parser.cjs.map
|
|
13
|
-
//# sourceMappingURL=parser.cjs.map
|
package/dist/parser.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"parser.cjs"}
|
package/dist/parser.d.cts
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { A as ASTNode } from './types-WQSk1Qs2.cjs';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* HoloScript Code Parser
|
|
5
|
-
*
|
|
6
|
-
* Parses HoloScript code strings into AST nodes that can be executed
|
|
7
|
-
* by the HoloScriptRuntime.
|
|
8
|
-
*
|
|
9
|
-
* Syntax Reference:
|
|
10
|
-
* - orb <name> { properties }
|
|
11
|
-
* - function <name>(<params>): <return> { body }
|
|
12
|
-
* - connect <from> to <to> [as <type>]
|
|
13
|
-
* - gate <name> { condition, true_path, false_path }
|
|
14
|
-
* - stream <name> from <source> { transformations }
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
interface ParseResult {
|
|
18
|
-
success: boolean;
|
|
19
|
-
ast: ASTNode[];
|
|
20
|
-
errors: ParseError[];
|
|
21
|
-
warnings: string[];
|
|
22
|
-
}
|
|
23
|
-
interface ParseError {
|
|
24
|
-
line: number;
|
|
25
|
-
column: number;
|
|
26
|
-
message: string;
|
|
27
|
-
}
|
|
28
|
-
declare class HoloScriptCodeParser {
|
|
29
|
-
private errors;
|
|
30
|
-
private warnings;
|
|
31
|
-
private tokens;
|
|
32
|
-
private position;
|
|
33
|
-
/**
|
|
34
|
-
* Parse HoloScript code string into AST
|
|
35
|
-
*/
|
|
36
|
-
parse(code: string): ParseResult;
|
|
37
|
-
/**
|
|
38
|
-
* Tokenize code into tokens
|
|
39
|
-
*/
|
|
40
|
-
private tokenize;
|
|
41
|
-
/**
|
|
42
|
-
* Parse program (list of declarations)
|
|
43
|
-
*/
|
|
44
|
-
private parseProgram;
|
|
45
|
-
/**
|
|
46
|
-
* Parse a single declaration
|
|
47
|
-
*/
|
|
48
|
-
private parseDeclaration;
|
|
49
|
-
/**
|
|
50
|
-
* Parse for loop: for (init; condition; update) { body }
|
|
51
|
-
*/
|
|
52
|
-
private parseForLoop;
|
|
53
|
-
/**
|
|
54
|
-
* Parse while loop: while (condition) { body }
|
|
55
|
-
*/
|
|
56
|
-
private parseWhileLoop;
|
|
57
|
-
/**
|
|
58
|
-
* Parse forEach loop: forEach item in collection { body }
|
|
59
|
-
*/
|
|
60
|
-
private parseForEachLoop;
|
|
61
|
-
/**
|
|
62
|
-
* Parse import: import { x, y } from "module"
|
|
63
|
-
*/
|
|
64
|
-
private parseImport;
|
|
65
|
-
/**
|
|
66
|
-
* Parse export: export { x, y } or export function/orb
|
|
67
|
-
*/
|
|
68
|
-
private parseExport;
|
|
69
|
-
/**
|
|
70
|
-
* Parse variable declaration: const/let/var name = value
|
|
71
|
-
*/
|
|
72
|
-
private parseVariableDeclaration;
|
|
73
|
-
/**
|
|
74
|
-
* Parse data_cell declaration
|
|
75
|
-
*
|
|
76
|
-
* Syntax:
|
|
77
|
-
* data_cell {
|
|
78
|
-
* type: "metric"
|
|
79
|
-
* data_source: "/api/cpu"
|
|
80
|
-
* refresh: 5s
|
|
81
|
-
* position_offset: [0, 1, 0]
|
|
82
|
-
* props: {
|
|
83
|
-
* label: "CPU Usage"
|
|
84
|
-
* style: { color: "#00ffff", glow: 0.5 }
|
|
85
|
-
* }
|
|
86
|
-
* }
|
|
87
|
-
*/
|
|
88
|
-
private parseDataCell;
|
|
89
|
-
/**
|
|
90
|
-
* Parse data_zone declaration containing multiple data_cells
|
|
91
|
-
*
|
|
92
|
-
* Syntax:
|
|
93
|
-
* data_zone bridge_metrics {
|
|
94
|
-
* position: [0, 2, 0]
|
|
95
|
-
* orientation: face_captain
|
|
96
|
-
*
|
|
97
|
-
* data_cell { ... }
|
|
98
|
-
* data_cell { ... }
|
|
99
|
-
* }
|
|
100
|
-
*/
|
|
101
|
-
private parseDataZone;
|
|
102
|
-
/**
|
|
103
|
-
* Parse orb declaration
|
|
104
|
-
*/
|
|
105
|
-
private parseOrb;
|
|
106
|
-
/**
|
|
107
|
-
* Parse function declaration
|
|
108
|
-
*/
|
|
109
|
-
private parseFunction;
|
|
110
|
-
/**
|
|
111
|
-
* Parse connection
|
|
112
|
-
*/
|
|
113
|
-
private parseConnection;
|
|
114
|
-
/**
|
|
115
|
-
* Parse gate (conditional)
|
|
116
|
-
*/
|
|
117
|
-
private parseGate;
|
|
118
|
-
/**
|
|
119
|
-
* Parse stream
|
|
120
|
-
*/
|
|
121
|
-
private parseStream;
|
|
122
|
-
/**
|
|
123
|
-
* Parse nexus (multi-agent hub)
|
|
124
|
-
*/
|
|
125
|
-
private parseNexus;
|
|
126
|
-
/**
|
|
127
|
-
* Parse building (class-like)
|
|
128
|
-
*/
|
|
129
|
-
private parseBuilding;
|
|
130
|
-
/**
|
|
131
|
-
* Parse a property (key: value)
|
|
132
|
-
*/
|
|
133
|
-
private parseProperty;
|
|
134
|
-
/**
|
|
135
|
-
* Parse array [...]
|
|
136
|
-
*/
|
|
137
|
-
private parseArray;
|
|
138
|
-
/**
|
|
139
|
-
* Parse object {...}
|
|
140
|
-
*/
|
|
141
|
-
private parseObject;
|
|
142
|
-
/**
|
|
143
|
-
* Parse position from value
|
|
144
|
-
*/
|
|
145
|
-
private parsePosition;
|
|
146
|
-
private currentToken;
|
|
147
|
-
private advance;
|
|
148
|
-
private check;
|
|
149
|
-
private expect;
|
|
150
|
-
private expectIdentifier;
|
|
151
|
-
private skipNewlines;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
export { HoloScriptCodeParser, type ParseError, type ParseResult };
|
package/dist/parser.d.ts
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { A as ASTNode } from './types-WQSk1Qs2.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* HoloScript Code Parser
|
|
5
|
-
*
|
|
6
|
-
* Parses HoloScript code strings into AST nodes that can be executed
|
|
7
|
-
* by the HoloScriptRuntime.
|
|
8
|
-
*
|
|
9
|
-
* Syntax Reference:
|
|
10
|
-
* - orb <name> { properties }
|
|
11
|
-
* - function <name>(<params>): <return> { body }
|
|
12
|
-
* - connect <from> to <to> [as <type>]
|
|
13
|
-
* - gate <name> { condition, true_path, false_path }
|
|
14
|
-
* - stream <name> from <source> { transformations }
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
interface ParseResult {
|
|
18
|
-
success: boolean;
|
|
19
|
-
ast: ASTNode[];
|
|
20
|
-
errors: ParseError[];
|
|
21
|
-
warnings: string[];
|
|
22
|
-
}
|
|
23
|
-
interface ParseError {
|
|
24
|
-
line: number;
|
|
25
|
-
column: number;
|
|
26
|
-
message: string;
|
|
27
|
-
}
|
|
28
|
-
declare class HoloScriptCodeParser {
|
|
29
|
-
private errors;
|
|
30
|
-
private warnings;
|
|
31
|
-
private tokens;
|
|
32
|
-
private position;
|
|
33
|
-
/**
|
|
34
|
-
* Parse HoloScript code string into AST
|
|
35
|
-
*/
|
|
36
|
-
parse(code: string): ParseResult;
|
|
37
|
-
/**
|
|
38
|
-
* Tokenize code into tokens
|
|
39
|
-
*/
|
|
40
|
-
private tokenize;
|
|
41
|
-
/**
|
|
42
|
-
* Parse program (list of declarations)
|
|
43
|
-
*/
|
|
44
|
-
private parseProgram;
|
|
45
|
-
/**
|
|
46
|
-
* Parse a single declaration
|
|
47
|
-
*/
|
|
48
|
-
private parseDeclaration;
|
|
49
|
-
/**
|
|
50
|
-
* Parse for loop: for (init; condition; update) { body }
|
|
51
|
-
*/
|
|
52
|
-
private parseForLoop;
|
|
53
|
-
/**
|
|
54
|
-
* Parse while loop: while (condition) { body }
|
|
55
|
-
*/
|
|
56
|
-
private parseWhileLoop;
|
|
57
|
-
/**
|
|
58
|
-
* Parse forEach loop: forEach item in collection { body }
|
|
59
|
-
*/
|
|
60
|
-
private parseForEachLoop;
|
|
61
|
-
/**
|
|
62
|
-
* Parse import: import { x, y } from "module"
|
|
63
|
-
*/
|
|
64
|
-
private parseImport;
|
|
65
|
-
/**
|
|
66
|
-
* Parse export: export { x, y } or export function/orb
|
|
67
|
-
*/
|
|
68
|
-
private parseExport;
|
|
69
|
-
/**
|
|
70
|
-
* Parse variable declaration: const/let/var name = value
|
|
71
|
-
*/
|
|
72
|
-
private parseVariableDeclaration;
|
|
73
|
-
/**
|
|
74
|
-
* Parse data_cell declaration
|
|
75
|
-
*
|
|
76
|
-
* Syntax:
|
|
77
|
-
* data_cell {
|
|
78
|
-
* type: "metric"
|
|
79
|
-
* data_source: "/api/cpu"
|
|
80
|
-
* refresh: 5s
|
|
81
|
-
* position_offset: [0, 1, 0]
|
|
82
|
-
* props: {
|
|
83
|
-
* label: "CPU Usage"
|
|
84
|
-
* style: { color: "#00ffff", glow: 0.5 }
|
|
85
|
-
* }
|
|
86
|
-
* }
|
|
87
|
-
*/
|
|
88
|
-
private parseDataCell;
|
|
89
|
-
/**
|
|
90
|
-
* Parse data_zone declaration containing multiple data_cells
|
|
91
|
-
*
|
|
92
|
-
* Syntax:
|
|
93
|
-
* data_zone bridge_metrics {
|
|
94
|
-
* position: [0, 2, 0]
|
|
95
|
-
* orientation: face_captain
|
|
96
|
-
*
|
|
97
|
-
* data_cell { ... }
|
|
98
|
-
* data_cell { ... }
|
|
99
|
-
* }
|
|
100
|
-
*/
|
|
101
|
-
private parseDataZone;
|
|
102
|
-
/**
|
|
103
|
-
* Parse orb declaration
|
|
104
|
-
*/
|
|
105
|
-
private parseOrb;
|
|
106
|
-
/**
|
|
107
|
-
* Parse function declaration
|
|
108
|
-
*/
|
|
109
|
-
private parseFunction;
|
|
110
|
-
/**
|
|
111
|
-
* Parse connection
|
|
112
|
-
*/
|
|
113
|
-
private parseConnection;
|
|
114
|
-
/**
|
|
115
|
-
* Parse gate (conditional)
|
|
116
|
-
*/
|
|
117
|
-
private parseGate;
|
|
118
|
-
/**
|
|
119
|
-
* Parse stream
|
|
120
|
-
*/
|
|
121
|
-
private parseStream;
|
|
122
|
-
/**
|
|
123
|
-
* Parse nexus (multi-agent hub)
|
|
124
|
-
*/
|
|
125
|
-
private parseNexus;
|
|
126
|
-
/**
|
|
127
|
-
* Parse building (class-like)
|
|
128
|
-
*/
|
|
129
|
-
private parseBuilding;
|
|
130
|
-
/**
|
|
131
|
-
* Parse a property (key: value)
|
|
132
|
-
*/
|
|
133
|
-
private parseProperty;
|
|
134
|
-
/**
|
|
135
|
-
* Parse array [...]
|
|
136
|
-
*/
|
|
137
|
-
private parseArray;
|
|
138
|
-
/**
|
|
139
|
-
* Parse object {...}
|
|
140
|
-
*/
|
|
141
|
-
private parseObject;
|
|
142
|
-
/**
|
|
143
|
-
* Parse position from value
|
|
144
|
-
*/
|
|
145
|
-
private parsePosition;
|
|
146
|
-
private currentToken;
|
|
147
|
-
private advance;
|
|
148
|
-
private check;
|
|
149
|
-
private expect;
|
|
150
|
-
private expectIdentifier;
|
|
151
|
-
private skipNewlines;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
export { HoloScriptCodeParser, type ParseError, type ParseResult };
|
package/dist/parser.js
DELETED
package/dist/parser.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"parser.js"}
|
package/dist/runtime.cjs
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkVV3UUUYP_cjs = require('./chunk-VV3UUUYP.cjs');
|
|
4
|
-
require('./chunk-3X2EGU7Z.cjs');
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(exports, "HoloScriptRuntime", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function () { return chunkVV3UUUYP_cjs.HoloScriptRuntime; }
|
|
11
|
-
});
|
|
12
|
-
//# sourceMappingURL=runtime.cjs.map
|
|
13
|
-
//# sourceMappingURL=runtime.cjs.map
|
package/dist/runtime.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"runtime.cjs"}
|
package/dist/runtime.d.cts
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { A as ASTNode, p as ExecutionResult, q as ParticleSystem, R as RuntimeContext, b as HologramProperties } from './types-WQSk1Qs2.cjs';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* HoloScript Runtime Engine
|
|
5
|
-
*
|
|
6
|
-
* Executes HoloScript AST in VR environment with spatial computation.
|
|
7
|
-
* Supports:
|
|
8
|
-
* - Orb creation and manipulation
|
|
9
|
-
* - Function definition and invocation with arguments
|
|
10
|
-
* - Connections and reactive data flow
|
|
11
|
-
* - Gates (conditionals)
|
|
12
|
-
* - Streams (data pipelines)
|
|
13
|
-
* - 2D UI elements
|
|
14
|
-
* - Built-in commands (show, hide, animate, pulse)
|
|
15
|
-
* - Expression evaluation
|
|
16
|
-
* - Event system
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Event handler type
|
|
21
|
-
*/
|
|
22
|
-
type EventHandler = (data?: unknown) => void | Promise<void>;
|
|
23
|
-
/**
|
|
24
|
-
* Animation state
|
|
25
|
-
*/
|
|
26
|
-
interface Animation {
|
|
27
|
-
target: string;
|
|
28
|
-
property: string;
|
|
29
|
-
from: number;
|
|
30
|
-
to: number;
|
|
31
|
-
duration: number;
|
|
32
|
-
startTime: number;
|
|
33
|
-
easing: string;
|
|
34
|
-
loop?: boolean;
|
|
35
|
-
yoyo?: boolean;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* UI Element state
|
|
39
|
-
*/
|
|
40
|
-
interface UIElementState {
|
|
41
|
-
type: string;
|
|
42
|
-
name: string;
|
|
43
|
-
properties: Record<string, unknown>;
|
|
44
|
-
value?: unknown;
|
|
45
|
-
visible: boolean;
|
|
46
|
-
enabled: boolean;
|
|
47
|
-
}
|
|
48
|
-
declare class HoloScriptRuntime {
|
|
49
|
-
private context;
|
|
50
|
-
private particleSystems;
|
|
51
|
-
private executionHistory;
|
|
52
|
-
private startTime;
|
|
53
|
-
private nodeCount;
|
|
54
|
-
private currentScope;
|
|
55
|
-
private callStack;
|
|
56
|
-
private eventHandlers;
|
|
57
|
-
private animations;
|
|
58
|
-
private uiElements;
|
|
59
|
-
private builtinFunctions;
|
|
60
|
-
constructor();
|
|
61
|
-
/**
|
|
62
|
-
* Initialize built-in functions
|
|
63
|
-
*/
|
|
64
|
-
private initBuiltins;
|
|
65
|
-
/**
|
|
66
|
-
* Execute a single AST node
|
|
67
|
-
*/
|
|
68
|
-
executeNode(node: ASTNode): Promise<ExecutionResult>;
|
|
69
|
-
/**
|
|
70
|
-
* Execute multiple nodes in sequence
|
|
71
|
-
*/
|
|
72
|
-
executeProgram(nodes: ASTNode[], depth?: number): Promise<ExecutionResult[]>;
|
|
73
|
-
/**
|
|
74
|
-
* Call a function with arguments
|
|
75
|
-
*/
|
|
76
|
-
callFunction(name: string, args?: unknown[]): Promise<ExecutionResult>;
|
|
77
|
-
/**
|
|
78
|
-
* Set a variable in current scope
|
|
79
|
-
*/
|
|
80
|
-
setVariable(name: string, value: unknown): void;
|
|
81
|
-
/**
|
|
82
|
-
* Get a variable from scope chain
|
|
83
|
-
*/
|
|
84
|
-
getVariable(name: string): unknown;
|
|
85
|
-
/**
|
|
86
|
-
* Evaluate an expression
|
|
87
|
-
*/
|
|
88
|
-
evaluateExpression(expr: string): unknown;
|
|
89
|
-
/**
|
|
90
|
-
* Split string by comma, respecting nesting
|
|
91
|
-
*/
|
|
92
|
-
private splitByComma;
|
|
93
|
-
private executeOrb;
|
|
94
|
-
private executeFunction;
|
|
95
|
-
private executeConnection;
|
|
96
|
-
private executeGate;
|
|
97
|
-
private executeStream;
|
|
98
|
-
private executeCall;
|
|
99
|
-
private executeDebug;
|
|
100
|
-
private executeVisualize;
|
|
101
|
-
private executeUIElement;
|
|
102
|
-
private executeStructure;
|
|
103
|
-
private executeAssignment;
|
|
104
|
-
private executeReturn;
|
|
105
|
-
private evaluateCondition;
|
|
106
|
-
private applyTransformation;
|
|
107
|
-
/**
|
|
108
|
-
* Register event handler
|
|
109
|
-
*/
|
|
110
|
-
on(event: string, handler: EventHandler): void;
|
|
111
|
-
/**
|
|
112
|
-
* Remove event handler
|
|
113
|
-
*/
|
|
114
|
-
off(event: string, handler?: EventHandler): void;
|
|
115
|
-
/**
|
|
116
|
-
* Emit event
|
|
117
|
-
*/
|
|
118
|
-
emit(event: string, data?: unknown): Promise<void>;
|
|
119
|
-
/**
|
|
120
|
-
* Trigger UI event
|
|
121
|
-
*/
|
|
122
|
-
triggerUIEvent(elementName: string, eventType: string, data?: unknown): Promise<void>;
|
|
123
|
-
/**
|
|
124
|
-
* Update all animations
|
|
125
|
-
*/
|
|
126
|
-
updateAnimations(): void;
|
|
127
|
-
private applyEasing;
|
|
128
|
-
private createParticleEffect;
|
|
129
|
-
private createConnectionStream;
|
|
130
|
-
private createFlowingStream;
|
|
131
|
-
private createExecutionEffect;
|
|
132
|
-
private createDataVisualization;
|
|
133
|
-
private getDataTypeColor;
|
|
134
|
-
getParticleSystems(): Map<string, ParticleSystem>;
|
|
135
|
-
updateParticles(deltaTime: number): void;
|
|
136
|
-
getContext(): RuntimeContext;
|
|
137
|
-
getUIElements(): Map<string, UIElementState>;
|
|
138
|
-
getUIElement(name: string): UIElementState | undefined;
|
|
139
|
-
getAnimations(): Map<string, Animation>;
|
|
140
|
-
reset(): void;
|
|
141
|
-
private createEmptyContext;
|
|
142
|
-
getExecutionHistory(): ExecutionResult[];
|
|
143
|
-
getHologramStates(): Map<string, HologramProperties>;
|
|
144
|
-
getCallStack(): string[];
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export { HoloScriptRuntime };
|