this repo has no description
at main 2.0 kB view raw
1import { Node, NodeStatic, NodeType } from "../structs/node"; 2import { platform } from '@tauri-apps/plugin-os'; 3 4import { NodeConditional } from "./Conditional"; 5import { NodeDebug } from "./Debug"; 6import { NodeOSCActions } from "./OSCActions"; 7import { NodeOSCTrigger } from "./OSCTrigger"; 8import { NodePressKey } from "./PressKey"; 9import { NodeStatics } from "./Statics"; 10import { NodeShellCommand } from "./Shell"; 11 12export interface NodeDefinition{ 13 os: string, 14 isSingle: boolean, 15 name: string, 16 typeId?: string, 17 onStaticsUpdate?: ( node: Node ) => Promise<void>, 18 // build?: ( pos: [ number, number ], onStaticsUpdate: ( node: Node ) => void ) => Promise<Node>, 19 w?: number, 20 statics?: NodeStatic[], 21 inputs?: { name: string, type: NodeType }[], 22 outputs?: { name: string, type: NodeType }[], 23 24 items?: NodeDefinition[] 25} 26 27export interface NodeDefinitionHashMap { 28 [details: string] : NodeDefinition; 29} 30 31// TODO: (Node Additions) Pressing keyboard keys (like to do linux, but has extra steps) 32// TODO: (Node Additions) Getting media state from os 33// TODO: (Node Additions) Sending custom OSC messages 34// TODO: (Node Additions) Sending HTTP requests? 35// TODO: (Node Additions) Voicemeeter integrations (win only) 36// TODO: (Node Additions) Voicemod integrations (win only) 37// TODO: (Node Additions) Executing shell commands? (probably need some kinda popup warning when these are imported about dangerous usage) 38 39export let Nodes: NodeDefinition[] = []; 40let nodes = [ 41 NodeOSCTrigger, 42 NodeConditional, 43 NodeStatics, 44 NodeOSCActions, 45 NodeDebug, 46 NodePressKey, 47 NodeShellCommand 48] 49 50let os = platform(); 51 52for (let i = 0; i < nodes.length; i++) { 53 let node = nodes[i]; 54 if(node.os === 'any' || node.os === os)Nodes.push(node); 55} 56 57export let NodesByID: NodeDefinitionHashMap = {} 58 59Nodes.forEach(node => { 60 if(node.isSingle){ 61 NodesByID[node.typeId!] = node; 62 } else{ 63 node.items!.forEach(node => { 64 NodesByID[node.typeId!] = node; 65 }) 66 } 67}) 68 69console.log(NodesByID);