@awesome-flow/ecs 0.14.0 → 0.15.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/dist/canvas/index.cjs +1 -1
- package/dist/canvas/index.d.cts +1 -1
- package/dist/canvas/index.d.mts +1 -1
- package/dist/canvas/index.mjs +1 -1
- package/dist/{canvas-C4nDXlkK.mjs → canvas-B21OqInM.mjs} +71 -71
- package/dist/canvas-B21OqInM.mjs.map +1 -0
- package/dist/{canvas-DlWcWu05.cjs → canvas-CC3xvbbA.cjs} +70 -70
- package/dist/canvas-CC3xvbbA.cjs.map +1 -0
- package/dist/context/index.cjs +18 -14
- package/dist/context/index.cjs.map +1 -1
- package/dist/context/index.d.cts +1 -1
- package/dist/context/index.d.mts +1 -1
- package/dist/context/index.mjs +18 -14
- package/dist/context/index.mjs.map +1 -1
- package/dist/{entity-component-inspector-VlwcaUqy.cjs → entity-component-inspector-7f3SijXE.cjs} +2 -2
- package/dist/{entity-component-inspector-VlwcaUqy.cjs.map → entity-component-inspector-7f3SijXE.cjs.map} +1 -1
- package/dist/{entity-component-inspector-CNaN8Scf.mjs → entity-component-inspector-BKpliIkt.mjs} +2 -2
- package/dist/{entity-component-inspector-CNaN8Scf.mjs.map → entity-component-inspector-BKpliIkt.mjs.map} +1 -1
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.d.cts +1 -1
- package/dist/hooks/index.d.mts +1 -1
- package/dist/hooks/index.mjs +1 -1
- package/dist/id-generator-C2_8g29M.cjs.map +1 -1
- package/dist/id-generator-DDsv3NdX.mjs.map +1 -1
- package/dist/{index-_BgjSgkQ.d.mts → index-BGxRtxzm.d.mts} +6 -9
- package/dist/index-BGxRtxzm.d.mts.map +1 -0
- package/dist/{index-CNCqWBLh.d.cts → index-BabUtsGu.d.mts} +10 -9
- package/dist/index-BabUtsGu.d.mts.map +1 -0
- package/dist/{index-B9WbxxFC.d.mts → index-BfZT1xsF.d.mts} +3 -3
- package/dist/index-BfZT1xsF.d.mts.map +1 -0
- package/dist/{index-t3_yRTa6.d.cts → index-CbjlHvOZ.d.cts} +3 -3
- package/dist/index-CbjlHvOZ.d.cts.map +1 -0
- package/dist/{index-BTs_8SY-.d.cts → index-Cet6AhTm.d.cts} +3 -4
- package/dist/index-Cet6AhTm.d.cts.map +1 -0
- package/dist/{index-DGjpWDlm.d.cts → index-D5HuA6I5.d.mts} +22 -15
- package/dist/index-D5HuA6I5.d.mts.map +1 -0
- package/dist/{index-DCOd7jg-.d.mts → index-DRUvPELK.d.cts} +22 -15
- package/dist/index-DRUvPELK.d.cts.map +1 -0
- package/dist/{index-CyeezgDI.d.mts → index-DoQL-Kim.d.mts} +3 -4
- package/dist/index-DoQL-Kim.d.mts.map +1 -0
- package/dist/{index-YNgbjS9S.d.cts → index-DwEO6FDo.d.cts} +6 -9
- package/dist/index-DwEO6FDo.d.cts.map +1 -0
- package/dist/{index-C-TDFHpq.d.mts → index-N2r0CM_0.d.cts} +10 -9
- package/dist/index-N2r0CM_0.d.cts.map +1 -0
- package/dist/index.cjs +3 -3
- package/dist/index.d.cts +8 -8
- package/dist/index.d.mts +8 -8
- package/dist/index.mjs +3 -3
- package/dist/inspectors/index.cjs +1 -1
- package/dist/inspectors/index.d.cts +1 -1
- package/dist/inspectors/index.d.mts +1 -1
- package/dist/inspectors/index.mjs +1 -1
- package/dist/{node-props-BtAkmdqr.d.mts → node-props-Bryks8-5.d.cts} +3 -3
- package/dist/{node-props-BtAkmdqr.d.mts.map → node-props-Bryks8-5.d.cts.map} +1 -1
- package/dist/{node-props-DkuSwMA0.d.cts → node-props-Cusf_qtn.d.mts} +3 -3
- package/dist/{node-props-DkuSwMA0.d.cts.map → node-props-Cusf_qtn.d.mts.map} +1 -1
- package/dist/{node-systems-module-CPDV8u8O.d.mts → node-systems-module-BiefT_Cv.d.cts} +5 -5
- package/dist/node-systems-module-BiefT_Cv.d.cts.map +1 -0
- package/dist/{node-systems-module-CzkoMbdF.d.cts → node-systems-module-EYtTf6Re.d.mts} +5 -5
- package/dist/node-systems-module-EYtTf6Re.d.mts.map +1 -0
- package/dist/{node-types-BRcpbaeR.mjs → node-types-DV97CoAJ.mjs} +176 -99
- package/dist/node-types-DV97CoAJ.mjs.map +1 -0
- package/dist/{node-types-D_NfbsUT.cjs → node-types-Z4QaJir-.cjs} +175 -98
- package/dist/node-types-Z4QaJir-.cjs.map +1 -0
- package/dist/nodes/index.cjs +1 -1
- package/dist/nodes/index.d.cts +2 -2
- package/dist/nodes/index.d.mts +2 -2
- package/dist/nodes/index.mjs +1 -1
- package/dist/{template-tool-nodes-B7sT2iRc.d.cts → template-tool-nodes-CiwTFU-N.d.cts} +2 -2
- package/dist/{template-tool-nodes-B7sT2iRc.d.cts.map → template-tool-nodes-CiwTFU-N.d.cts.map} +1 -1
- package/dist/{template-tool-nodes-BwavFwMh.d.mts → template-tool-nodes-DWhekyQg.d.mts} +2 -2
- package/dist/{template-tool-nodes-BwavFwMh.d.mts.map → template-tool-nodes-DWhekyQg.d.mts.map} +1 -1
- package/dist/templates/index.cjs +1 -1
- package/dist/templates/index.d.cts +1 -1
- package/dist/templates/index.d.mts +1 -1
- package/dist/templates/index.mjs +1 -1
- package/package.json +13 -14
- package/dist/canvas-C4nDXlkK.mjs.map +0 -1
- package/dist/canvas-DlWcWu05.cjs.map +0 -1
- package/dist/index-B9WbxxFC.d.mts.map +0 -1
- package/dist/index-BTs_8SY-.d.cts.map +0 -1
- package/dist/index-C-TDFHpq.d.mts.map +0 -1
- package/dist/index-CNCqWBLh.d.cts.map +0 -1
- package/dist/index-CyeezgDI.d.mts.map +0 -1
- package/dist/index-DCOd7jg-.d.mts.map +0 -1
- package/dist/index-DGjpWDlm.d.cts.map +0 -1
- package/dist/index-YNgbjS9S.d.cts.map +0 -1
- package/dist/index-_BgjSgkQ.d.mts.map +0 -1
- package/dist/index-t3_yRTa6.d.cts.map +0 -1
- package/dist/node-systems-module-CPDV8u8O.d.mts.map +0 -1
- package/dist/node-systems-module-CzkoMbdF.d.cts.map +0 -1
- package/dist/node-types-BRcpbaeR.mjs.map +0 -1
- package/dist/node-types-D_NfbsUT.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-CC3xvbbA.cjs","names":["useFlowStore","Node","useEffect","EntityNodeData","useBridgeStoreVersion","useEcsBridge","FlowEcsEdgeProxiesProps","nodesToConnect","FlowEcsEdgeModules","props","$","_c","onConnect","_temp","bridge","moduleVersion","t0","node","data","entity","sourceHandle","handles","find","_temp2","entityRepository","getEntity","systemModule","ecsFlowRepository","getSystemModuleNode","identity","proxy","entityType","targetHandle","_temp3","source","id","target","handleId","t1","t2","Symbol","for","h_0","h","connection","state","useFlowStore","Node","useEffect","EntityNodeData","useBridgeStoreVersion","useEcsBridge","FlowEcsEdgeProxiesProps","nodesToConnect","FlowEcsEdgeProxies","props","$","_c","onConnect","_temp","bridge","proxyVersion","t0","node","data","entity","sourceHandle","handles","find","_temp2","entityRepository","getEntity","proxies","Array","from","entityProxyRepository","getAllProxies","identity","proxy","values","flat","proxyNode","ecsFlowRepository","getEntityNode","targetHandle","_temp3","source","id","target","handleId","t1","t2","Symbol","for","h_0","h","connection","state","FlowContext","useFlowStore","Node","useContext","useEffect","useState","EntityNodeData","EcsNodeType","useEcsBridge","useEntityList","FlowEcsEdgeModules","FlowEcsEdgeProxies","FlowEcsEntities","$","_c","nodeFactory","addNodes","_temp","bridge","entities","t0","Symbol","for","entityNodes","setEntityNodes","t1","t2","nodesToAdd","nodesToConnect","entity","node","ecsFlowRepository","getEntityNode","identity","proxy","createNodeFromType","data","entityType","position","x","y","addEntityNode","push","length","t3","state","FlowContext","useFlowStore","Node","useContext","useEffect","SystemsModuleNodeData","EcsNodeType","useEcsBridge","useSystemsModuleList","FlowEcsModules","$","_c","nodeFactory","addNodes","_temp","bridge","modules","t0","t1","keys","Array","from","nodesToAdd","element","ecsFlowRepository","getSystemModuleNode","node","createNodeFromType","systemsModule","data","entityType","position","x","y","addSystemModuleNode","push","length","t2","Symbol","for","state","FlowContext","StoreContext","useFlowStore","Node","useContext","useEffect","shallow","EntityNodeData","ScopeGroupNodeData","EcsNodeType","useEcsBridge","useScopeList","FlowEcsScopes","$","_c","nodeFactory","flowStore","bridge","scopes","nodes","setGroups","setNodes","_temp","t0","length","changed","currentNodes","instance","getState","nextNodes","groups","scope","groupNode","ecsFlowRepository","getScopeGroupNode","scopeId","createNodeFromType","scopeGroup","data","title","position","x","y","className","addScopeGroupNode","unshift","childIds","entity","entities","entityNode","getEntityNode","identity","proxy","push","id","scopedNodeIds","Set","Object","values","flat","groupIds","keys","orderedNodes","map","node","has","type","parentId","entries","find","t1","children","includes","undefined","extent","const","sort","_temp2","t2","Symbol","for","a","b","Number","isGroup","state","useFlowStore","FlowState","Node","useEffect","shallow","EntityNodeData","EcsNodeType","useEcsBridge","selector","state","nodes","updateNodeData","FlowEcsSpawnEntities","$","_c","bridge","t0","t1","node","type","entity","data","spawn","update","enqueueEntitySpawn","id","spawnStatus","entityType","ecsFlowRepository","addEntityNode","t2","Symbol","for","FlowContext","useFlowStore","Node","useContext","useEffect","EcsToolNodeData","EcsNodeType","useEcsBridge","defaultEcsToolNodes","scheduler","eventTimeline","telemetry","updateQueue","const","EcsToolNodeType","FlowEcsToolNodesProps","nodes","FlowEcsToolNodes","t0","$","_c","t1","undefined","nodeFactory","addNodes","_temp","bridge","t2","t3","nodesToAdd","forEach","type","index","ecsFlowRepository","getToolNode","node","createNodeFromType","position","x","y","addToolNode","push","length","t4","Symbol","for","state","FlowAutoLayout","memo","useEffect","useState","useBridgeStoreVersion","useEcsBridge","FlowEcsEntities","FlowEcsModules","FlowEcsScopes","FlowEcsSpawnEntities","FlowEcsToolNodes","EcsToolNodeType","FlowEcsStateProps","showSystemModules","showEntities","autoLayout","enableEntitySpawning","showScopes","toolNodes","FlowEcsState","props","$","_c","refreshLayout","setRefreshLayout","bridge","entityVersion","moduleVersion","t0","Symbol","for","frame","requestAnimationFrame","cancelAnimationFrame","t1","ecsFlowRepository","sizeNodes","t2","t3","t4","t5","t6","Array","isArray","undefined","t7","t8","FlowCanvasContext","FlowCanvasContextProps","FlowCanvasDropWrapper","FlowCanvasRenderIntersections","FlowCanvasRenderProps","FlowCanvasWrapper","FlowConnectionStatus","useState","ecsNodeTemplates","ecsNodeTypes","FlowEcsState","FlowEcsStateProps","useEntityTypeTemplates","FlowEcsCanvasProps","Partial","Pick","hybrid","enableDragDrop","showEntityTypeTemplates","showTemplates","FlowEcsCanvas","t0","$","_c","autoLayout","t1","enableEntitySpawning","t2","t3","showEntities","t4","t5","showScopes","t6","showSystemModules","t7","t8","toolNodes","t9","defaultPipelineExecution","layoutEngine","beforeInsert","undefined","over","setOver","entityTypeTemplates","t10","Symbol","for","t11","extraTemplates","t12","canvas","t13","t14","t15","t16"],"sources":["../src/flow/flow-ecs-edge-modules.tsx","../src/flow/flow-ecs-edge-proxies.tsx","../src/flow/flow-ecs-entities.tsx","../src/flow/flow-ecs-modules.tsx","../src/flow/flow-ecs-scopes.tsx","../src/flow/flow-ecs-spawn-entities.tsx","../src/flow/flow-ecs-tool-nodes.tsx","../src/flow/flow-ecs-state.tsx","../src/canvas/flow-ecs-canvas.tsx"],"sourcesContent":["import { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useEffect } from 'react';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { useBridgeStoreVersion, useEcsBridge } from '../hooks';\n\nexport type FlowEcsEdgeProxiesProps = {\n nodesToConnect: Node<EntityNodeData>[];\n};\n\nfunction FlowEcsEdgeModules(props: Readonly<FlowEcsEdgeProxiesProps>) {\n const { nodesToConnect } = props;\n\n const onConnect = useFlowStore((state: { onConnect: any }) => state.onConnect);\n\n const bridge = useEcsBridge();\n const moduleVersion = useBridgeStoreVersion('modules');\n\n useEffect(() => {\n for (const node of nodesToConnect) {\n if (!node.data.entity) {\n continue;\n }\n\n const sourceHandle = node.data.handles.find((h) => h.connection === 'source');\n const entity = bridge.entityRepository.getEntity(node.data.entity);\n\n const systemModule = bridge.ecsFlowRepository.getSystemModuleNode(entity.identity.proxy.entityType);\n const targetHandle = systemModule?.data.handles.find((h) => h.connection === 'target');\n\n if (sourceHandle && targetHandle) {\n onConnect({\n source: node.id,\n target: systemModule.id,\n sourceHandle: sourceHandle.handleId,\n targetHandle: targetHandle.handleId\n });\n }\n }\n }, [bridge, moduleVersion, nodesToConnect, onConnect]);\n\n return <></>;\n}\n\nexport default FlowEcsEdgeModules;\n","import { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useEffect } from 'react';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { useBridgeStoreVersion, useEcsBridge } from '../hooks';\n\nexport type FlowEcsEdgeProxiesProps = {\n nodesToConnect: Node<EntityNodeData>[];\n};\n\nfunction FlowEcsEdgeProxies(props: Readonly<FlowEcsEdgeProxiesProps>) {\n const { nodesToConnect } = props;\n\n const onConnect = useFlowStore((state: { onConnect: any }) => state.onConnect);\n\n const bridge = useEcsBridge();\n const proxyVersion = useBridgeStoreVersion('proxies');\n\n useEffect(() => {\n for (const node of nodesToConnect) {\n if (!node.data.entity) {\n continue;\n }\n\n const sourceHandle = node.data.handles.find((h) => h.connection === 'source');\n const entity = bridge.entityRepository.getEntity(node.data.entity);\n const proxies = Array.from(bridge.entityProxyRepository.getAllProxies(entity.identity.proxy).values()).flat();\n\n for (const proxy of proxies) {\n const proxyNode = bridge.ecsFlowRepository.getEntityNode(proxy);\n\n if (proxyNode) {\n const targetHandle = proxyNode.data.handles.find((h) => h.connection === 'target');\n\n if (sourceHandle && targetHandle) {\n onConnect({\n source: node.id,\n target: proxyNode.id,\n sourceHandle: sourceHandle.handleId,\n targetHandle: targetHandle.handleId\n });\n }\n }\n }\n }\n }, [bridge, nodesToConnect, onConnect, proxyVersion]);\n\n return <></>;\n}\n\nexport default FlowEcsEdgeProxies;\n","import { FlowContext } from '@awesome-flow/core/abstract';\nimport { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect, useState } from 'react';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge, useEntityList } from '../hooks';\nimport FlowEcsEdgeModules from './flow-ecs-edge-modules';\nimport FlowEcsEdgeProxies from './flow-ecs-edge-proxies';\n\nfunction FlowEcsEntities() {\n const { nodeFactory } = useContext(FlowContext);\n const addNodes = useFlowStore((state) => state.addNodes);\n\n const bridge = useEcsBridge();\n const entities = useEntityList();\n const [entityNodes, setEntityNodes] = useState<Node<EntityNodeData>[]>([]);\n\n useEffect(() => {\n const nodesToAdd: Node<EntityNodeData>[] = [];\n const nodesToConnect: Node<EntityNodeData>[] = [];\n\n for (const entity of entities) {\n let node = bridge.ecsFlowRepository.getEntityNode(entity.identity.proxy);\n\n if (!node) {\n node = nodeFactory.createNodeFromType<EntityNodeData>(EcsNodeType.entity);\n node.data.entity = entity.identity.proxy;\n node.data.entityType = entity.identity.proxy.entityType;\n node.position = { x: 0, y: 0 };\n\n bridge.ecsFlowRepository.addEntityNode(node);\n nodesToAdd.push(node);\n }\n\n nodesToConnect.push(node);\n }\n\n setEntityNodes(nodesToConnect);\n if (nodesToAdd.length) {\n addNodes(nodesToAdd);\n }\n }, [addNodes, bridge, entities, nodeFactory]);\n\n return (\n <>\n <FlowEcsEdgeProxies nodesToConnect={entityNodes} />\n <FlowEcsEdgeModules nodesToConnect={entityNodes} />\n </>\n );\n}\n\nexport default FlowEcsEntities;\n","import { FlowContext } from '@awesome-flow/core/abstract';\nimport { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect } from 'react';\nimport { SystemsModuleNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge, useSystemsModuleList } from '../hooks';\n\nfunction FlowEcsModules() {\n const { nodeFactory } = useContext(FlowContext);\n const addNodes = useFlowStore((state) => state.addNodes);\n\n const bridge = useEcsBridge();\n const modules = useSystemsModuleList();\n\n useEffect(() => {\n const keys = Array.from(modules.keys());\n\n const nodesToAdd: Node<SystemsModuleNodeData>[] = [];\n\n for (const element of keys) {\n if (bridge.ecsFlowRepository.getSystemModuleNode(element)) {\n continue;\n }\n\n const node = nodeFactory.createNodeFromType<SystemsModuleNodeData>(EcsNodeType.systemsModule);\n\n node.data.entityType = element;\n node.position = { x: 0, y: 0 };\n\n bridge.ecsFlowRepository.addSystemModuleNode(node);\n nodesToAdd.push(node);\n }\n\n if (nodesToAdd.length) {\n addNodes(nodesToAdd);\n }\n }, [addNodes, bridge, modules, nodeFactory]);\n\n return <></>;\n}\n\nexport default FlowEcsModules;\n","import { FlowContext, StoreContext } from '@awesome-flow/core/abstract';\nimport { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect } from 'react';\nimport { shallow } from 'zustand/shallow';\nimport { EntityNodeData, ScopeGroupNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge, useScopeList } from '../hooks';\n\nfunction FlowEcsScopes() {\n const { nodeFactory } = useContext(FlowContext);\n const { flowStore } = useContext(StoreContext);\n const bridge = useEcsBridge();\n const scopes = useScopeList();\n\n const { nodes, setGroups, setNodes } = useFlowStore(\n (state) => ({\n nodes: state.nodes,\n setGroups: state.setGroups,\n setNodes: state.setNodes\n }),\n shallow\n );\n\n useEffect(() => {\n if (!scopes.length) {\n return;\n }\n\n let changed = false;\n const currentNodes = flowStore.instance.getState().nodes;\n const nextNodes = [...currentNodes];\n const groups: Record<string, string[]> = {};\n\n for (const scope of scopes) {\n let groupNode = bridge.ecsFlowRepository.getScopeGroupNode(scope.scopeId);\n\n if (!groupNode) {\n groupNode = nodeFactory.createNodeFromType<ScopeGroupNodeData>(EcsNodeType.scopeGroup);\n groupNode.data.scopeId = scope.scopeId;\n groupNode.data.title = 'Scope';\n groupNode.position = { x: 0, y: 0 };\n groupNode.className = 'react-flow__node-group';\n\n bridge.ecsFlowRepository.addScopeGroupNode(groupNode);\n nextNodes.unshift(groupNode);\n changed = true;\n }\n\n const childIds: string[] = [];\n for (const entity of scope.entities) {\n const entityNode = bridge.ecsFlowRepository.getEntityNode(entity.identity.proxy) as Node<EntityNodeData> | undefined;\n if (!entityNode) {\n continue;\n }\n\n childIds.push(entityNode.id);\n }\n\n groups[groupNode.id] = childIds;\n }\n\n const scopedNodeIds = new Set(Object.values(groups).flat());\n const groupIds = new Set(Object.keys(groups));\n const orderedNodes = nextNodes\n .map((node) => {\n if (groupIds.has(node.id)) {\n return node;\n }\n\n if (node.type !== EcsNodeType.entity) {\n return node;\n }\n\n const parentId = scopedNodeIds.has(node.id)\n ? Object.entries(groups).find(([, children]) => children.includes(node.id))?.[0]\n : undefined;\n\n if (node.parentId !== parentId) {\n changed = true;\n return {\n ...node,\n extent: parentId ? ('parent' as const) : undefined,\n parentId\n };\n }\n\n return node;\n })\n .sort((a, b) => Number(!a.data?.isGroup) - Number(!b.data?.isGroup));\n\n if (changed) {\n setNodes(orderedNodes);\n }\n\n setGroups(groups);\n }, [bridge, flowStore, nodeFactory, nodes, scopes, setGroups, setNodes]);\n\n return <></>;\n}\n\nexport default FlowEcsScopes;\n","import { useFlowStore } from '@awesome-flow/core/hooks';\nimport { FlowState } from '@awesome-flow/core/stores';\nimport { Node } from '@xyflow/react';\nimport { useEffect } from 'react';\nimport { shallow } from 'zustand/shallow';\nimport { EntityNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge } from '../hooks';\n\nconst selector = (state: FlowState) => ({\n nodes: state.nodes,\n updateNodeData: state.updateNodeData\n});\n\nfunction FlowEcsSpawnEntities() {\n const bridge = useEcsBridge();\n const { nodes, updateNodeData } = useFlowStore(selector, shallow);\n\n useEffect(() => {\n for (const node of nodes as Node<EntityNodeData>[]) {\n if (node.type !== EcsNodeType.entity || !node.data.spawn || node.data.entity) {\n continue;\n }\n\n const update = bridge.enqueueEntitySpawn(node.data.spawn);\n if (!update) {\n updateNodeData<EntityNodeData>(node.id, {\n spawnStatus: 'missing-scheduler'\n });\n continue;\n }\n\n const data: Partial<EntityNodeData> = {\n entity: update.entity,\n entityType: update.entity.entityType,\n spawnStatus: 'queued'\n };\n\n bridge.ecsFlowRepository.addEntityNode({\n ...node,\n data: {\n ...node.data,\n ...data\n }\n });\n updateNodeData<EntityNodeData>(node.id, data);\n }\n }, [bridge, nodes, updateNodeData]);\n\n return <></>;\n}\n\nexport default FlowEcsSpawnEntities;\n","import { FlowContext } from '@awesome-flow/core/abstract';\nimport { useFlowStore } from '@awesome-flow/core/hooks';\nimport { Node } from '@xyflow/react';\nimport { useContext, useEffect } from 'react';\nimport { EcsToolNodeData } from '../abstract/node-props';\nimport { EcsNodeType } from '../abstract/node-types';\nimport { useEcsBridge } from '../hooks';\n\nexport const defaultEcsToolNodes = [\n EcsNodeType.scheduler,\n EcsNodeType.eventTimeline,\n EcsNodeType.telemetry,\n EcsNodeType.updateQueue\n] as const;\n\nexport type EcsToolNodeType = (typeof defaultEcsToolNodes)[number];\n\nexport type FlowEcsToolNodesProps = {\n nodes?: readonly EcsToolNodeType[];\n};\n\nfunction FlowEcsToolNodes({ nodes = defaultEcsToolNodes }: Readonly<FlowEcsToolNodesProps>) {\n const { nodeFactory } = useContext(FlowContext);\n const addNodes = useFlowStore((state) => state.addNodes);\n const bridge = useEcsBridge();\n\n useEffect(() => {\n const nodesToAdd: Node<EcsToolNodeData>[] = [];\n\n nodes.forEach((type, index) => {\n if (bridge.ecsFlowRepository.getToolNode(type)) {\n return;\n }\n\n const node = nodeFactory.createNodeFromType<EcsToolNodeData>(type);\n node.position = { x: 980, y: index * 220 };\n bridge.ecsFlowRepository.addToolNode(node);\n nodesToAdd.push(node);\n });\n\n if (nodesToAdd.length) {\n addNodes(nodesToAdd);\n }\n }, [addNodes, bridge, nodeFactory, nodes]);\n\n return <></>;\n}\n\nexport default FlowEcsToolNodes;\n","import { FlowAutoLayout } from '@awesome-flow/core/canvas';\nimport { memo, useEffect, useState } from 'react';\nimport { useBridgeStoreVersion, useEcsBridge } from '../hooks';\nimport FlowEcsEntities from './flow-ecs-entities';\nimport FlowEcsModules from './flow-ecs-modules';\nimport FlowEcsScopes from './flow-ecs-scopes';\nimport FlowEcsSpawnEntities from './flow-ecs-spawn-entities';\nimport FlowEcsToolNodes, { EcsToolNodeType } from './flow-ecs-tool-nodes';\n\nexport type FlowEcsStateProps = {\n showSystemModules: boolean;\n showEntities: boolean;\n autoLayout: boolean;\n enableEntitySpawning?: boolean;\n showScopes?: boolean;\n toolNodes?: boolean | readonly EcsToolNodeType[];\n};\n\nfunction FlowEcsState(props: Readonly<FlowEcsStateProps>) {\n const [refreshLayout, setRefreshLayout] = useState(false);\n const bridge = useEcsBridge();\n const entityVersion = useBridgeStoreVersion('entities');\n const moduleVersion = useBridgeStoreVersion('modules');\n\n useEffect(() => {\n setRefreshLayout(false);\n const frame = requestAnimationFrame(() => setRefreshLayout(true));\n\n return () => cancelAnimationFrame(frame);\n }, [bridge.ecsFlowRepository.sizeNodes, entityVersion, moduleVersion]);\n\n return (\n <>\n {props.showSystemModules && <FlowEcsModules />}\n {props.showEntities && <FlowEcsEntities />}\n {props.enableEntitySpawning && <FlowEcsSpawnEntities />}\n {props.showScopes && <FlowEcsScopes />}\n {props.toolNodes && <FlowEcsToolNodes nodes={Array.isArray(props.toolNodes) ? props.toolNodes : undefined} />}\n {props.autoLayout && <FlowAutoLayout refreshLayout={refreshLayout} />}\n </>\n );\n}\n\nexport default memo(FlowEcsState);\n","import {\n FlowCanvasContext,\n type FlowCanvasContextProps,\n FlowCanvasDropWrapper,\n FlowCanvasRenderIntersections,\n type FlowCanvasRenderProps,\n FlowCanvasWrapper,\n FlowConnectionStatus\n} from '@awesome-flow/core/canvas';\nimport { useState } from 'react';\nimport { ecsNodeTemplates, ecsNodeTypes } from '../abstract/node-types';\nimport FlowEcsState, { FlowEcsStateProps } from '../flow/flow-ecs-state';\nimport { useEntityTypeTemplates } from '../hooks';\n\nexport type FlowEcsCanvasProps = Partial<FlowEcsStateProps> &\n Pick<FlowCanvasContextProps, 'defaultPipelineExecution' | 'layoutEngine' | 'beforeInsert'> & {\n /** Shared production rendering policy; hybrid by default, false opts out. */\n hybrid?: FlowCanvasRenderProps['hybrid'];\n enableDragDrop?: boolean;\n showEntityTypeTemplates?: boolean;\n showTemplates?: boolean;\n };\n\nexport function FlowEcsCanvas({\n autoLayout = true,\n enableEntitySpawning = true,\n enableDragDrop = true,\n showEntities = true,\n showEntityTypeTemplates = true,\n showScopes = true,\n showSystemModules = true,\n showTemplates = false,\n toolNodes = false,\n hybrid,\n defaultPipelineExecution,\n layoutEngine,\n beforeInsert\n}: Readonly<FlowEcsCanvasProps>) {\n const [over, setOver] = useState(false);\n const entityTypeTemplates = useEntityTypeTemplates(showEntityTypeTemplates);\n const canvas = (\n <FlowCanvasRenderIntersections\n canvasHighlighted={over}\n nodeTypes={ecsNodeTypes}\n hybrid={hybrid}\n controls={{ autoLayout: true }}\n templates={showTemplates ? { extraTemplates: entityTypeTemplates } : false}\n />\n );\n\n return (\n <FlowCanvasContext\n nodeTemplates={ecsNodeTemplates}\n defaultPipelineExecution={defaultPipelineExecution}\n layoutEngine={layoutEngine}\n beforeInsert={beforeInsert}\n >\n {enableDragDrop ? (\n <FlowCanvasDropWrapper setOver={setOver}>{canvas}</FlowCanvasDropWrapper>\n ) : (\n <FlowCanvasWrapper>{canvas}</FlowCanvasWrapper>\n )}\n <FlowConnectionStatus />\n <FlowEcsState\n autoLayout={autoLayout}\n enableEntitySpawning={enableEntitySpawning}\n showEntities={showEntities}\n showScopes={showScopes}\n showSystemModules={showSystemModules}\n toolNodes={toolNodes}\n />\n </FlowCanvasContext>\n );\n}\n"],"mappings":"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"}
|
package/dist/context/index.cjs
CHANGED
|
@@ -134,7 +134,6 @@ var EcsBridge = class {
|
|
|
134
134
|
entityProxyRepository;
|
|
135
135
|
entityRepository;
|
|
136
136
|
entityScheduler;
|
|
137
|
-
entityUpdateQueue;
|
|
138
137
|
performanceTimer;
|
|
139
138
|
stores;
|
|
140
139
|
systemsModuleRepository;
|
|
@@ -152,7 +151,6 @@ var EcsBridge = class {
|
|
|
152
151
|
this.entityProxyRepository = input.entityProxyRepository;
|
|
153
152
|
this.entityRepository = input.entityRepository;
|
|
154
153
|
this.entityScheduler = input.entityScheduler;
|
|
155
|
-
this.entityUpdateQueue = input.entityUpdateQueue;
|
|
156
154
|
this.defaultScopeId = input.defaultScopeId;
|
|
157
155
|
this.performanceTimer = input.performanceTimer;
|
|
158
156
|
this.systemsModuleRepository = input.systemsModuleRepository;
|
|
@@ -205,7 +203,7 @@ var EcsBridge = class {
|
|
|
205
203
|
descriptors.set(descriptor.id, descriptor);
|
|
206
204
|
}
|
|
207
205
|
for (const entity of this.entityRepository.listAll()) {
|
|
208
|
-
const { entityType } = entity.
|
|
206
|
+
const { entityType } = entity.identity.proxy;
|
|
209
207
|
if (!explicitEntityTypes.has(entityTypeKey(entityType))) {
|
|
210
208
|
const descriptor = normalizeEntityTypeDescriptor({ entityType });
|
|
211
209
|
descriptors.set(descriptor.id, descriptor);
|
|
@@ -308,11 +306,11 @@ var EcsBridge = class {
|
|
|
308
306
|
};
|
|
309
307
|
}
|
|
310
308
|
getUpdateQueueSnapshot(limit) {
|
|
311
|
-
if (!this.
|
|
312
|
-
const items = this.
|
|
309
|
+
if (!this.entityScheduler) return;
|
|
310
|
+
const items = this.entityScheduler.inspectDirtyUpdates();
|
|
313
311
|
return {
|
|
314
312
|
items: limit ? items.slice(-limit) : items,
|
|
315
|
-
size: this.
|
|
313
|
+
size: this.entityScheduler.dirtyCount
|
|
316
314
|
};
|
|
317
315
|
}
|
|
318
316
|
createEntitySpawnUpdate(spawn) {
|
|
@@ -342,9 +340,9 @@ var EcsBridge = class {
|
|
|
342
340
|
};
|
|
343
341
|
}
|
|
344
342
|
enqueueEntitySpawn(spawn) {
|
|
345
|
-
if (!this.
|
|
343
|
+
if (!this.entityScheduler) return;
|
|
346
344
|
const update = this.createEntitySpawnUpdate(spawn);
|
|
347
|
-
this.
|
|
345
|
+
this.entityScheduler.enqueue(update);
|
|
348
346
|
return update;
|
|
349
347
|
}
|
|
350
348
|
listSystemsModules() {
|
|
@@ -371,7 +369,7 @@ var EcsBridge = class {
|
|
|
371
369
|
instrumentRepositories() {
|
|
372
370
|
this.unsubscribeInstrumentation.push(instrumentMethod(this.entityRepository, "set", (args) => {
|
|
373
371
|
const entity = args[0];
|
|
374
|
-
if (entity?.
|
|
372
|
+
if (entity?.identity.proxy) this.bumpUpdate(entity.identity.proxy.entityUid, "updates");
|
|
375
373
|
this.stores.entities.notify();
|
|
376
374
|
this.stores.entityTypes.notify();
|
|
377
375
|
this.stores.scopes.notify();
|
|
@@ -432,9 +430,9 @@ var EcsBridge = class {
|
|
|
432
430
|
this.stores.metrics.notify();
|
|
433
431
|
}), instrumentMethod(this.entityScheduler, "schedule", () => {
|
|
434
432
|
this.stores.scheduler.notify();
|
|
435
|
-
}), instrumentMethod(this.entityScheduler, "
|
|
433
|
+
}), instrumentMethod(this.entityScheduler, "removeSchedule", () => {
|
|
436
434
|
this.stores.scheduler.notify();
|
|
437
|
-
}), instrumentMethod(this.entityScheduler, "
|
|
435
|
+
}), instrumentMethod(this.entityScheduler, "clearSchedules", () => {
|
|
438
436
|
this.stores.scheduler.notify();
|
|
439
437
|
}), instrumentMethod(this.entityScheduler, "skipEntityType", () => {
|
|
440
438
|
this.stores.scheduler.notify();
|
|
@@ -444,12 +442,18 @@ var EcsBridge = class {
|
|
|
444
442
|
this.stores.scheduler.notify();
|
|
445
443
|
}), instrumentMethod(this.entityScheduler, "resume", () => {
|
|
446
444
|
this.stores.scheduler.notify();
|
|
447
|
-
}), instrumentMethod(this.
|
|
445
|
+
}), instrumentMethod(this.entityScheduler, "enqueue", () => {
|
|
448
446
|
this.stores.queue.notify();
|
|
449
|
-
|
|
447
|
+
this.stores.scheduler.notify();
|
|
448
|
+
}), instrumentMethod(this.entityScheduler, "enqueueEvent", () => {
|
|
450
449
|
this.stores.queue.notify();
|
|
451
|
-
|
|
450
|
+
this.stores.scheduler.notify();
|
|
451
|
+
}), instrumentMethod(this.entityScheduler, "enqueueEvents", () => {
|
|
452
452
|
this.stores.queue.notify();
|
|
453
|
+
this.stores.scheduler.notify();
|
|
454
|
+
}), instrumentMethod(this.entityScheduler, "clearDirtyUpdates", () => {
|
|
455
|
+
this.stores.queue.notify();
|
|
456
|
+
this.stores.scheduler.notify();
|
|
453
457
|
}));
|
|
454
458
|
}
|
|
455
459
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["EntityTypeUid","IEntityProxy","Node","EcsIdGenerator","EntityNodeData","ScopeGroupNodeData","SystemsModuleNodeData","EcsFlowRepository","nodes","Map","constructor","sizeNodes","size","addSystemModuleNode","node","set","data","entityType","toString","getSystemModuleNode","get","addScopeGroupNode","scope","scopeId","getScopeGroupNode","addEntityNode","entity","entityProxy","getEntityNode","addToolNode","tool","type","getToolNode","listAllNodes","Array","from","values","EntityEventUid","EntityUpdateType","EntityTypeUid","EntityUid","IEntity","IEntityEvent","IEntityEventsManager","IEntityModel","IEntityProxy","IEntityProxyRepository","IEntityRepository","IEntityScheduler","IEntityUpdate","IEntityUpdateQueue","IEventData","PipelineCategory","PipelineCategoryName","SystemType","ISystemsModule","ISystemsModuleRepository","IPerformanceTimer","MiddlewareMetricsSummary","PerformanceTimeEntry","EcsEntitySpawnRequest","EcsEntityTypeDescriptor","EcsIdGenerator","EcsFlowRepository","INSTRUMENTATION","Symbol","for","InstrumentationListener","args","result","InstrumentedFunction","listeners","Set","original","EcsBridgeStoreName","EcsBridgeStore","getSnapshot","notify","subscribe","listener","TelemetryMetricsSource","metrics","ReadonlyMap","ReadonlyArray","clearMetrics","EntityUpdateCounts","removes","updates","EcsEventLogEntry","event","recordedAt","targets","EcsScopeSummary","entities","scopeId","scopedProxies","EcsEventStreamFilter","limit","source","target","type","EcsMetricsFilter","category","entityType","phase","PipelineMetricsSummary","avgMs","count","lastMs","maxMs","minMs","name","samples","totalMs","EcsSchedulerSnapshot","frameSubscriptions","isPaused","pendingCount","schedules","skippedEntityTypes","EcsUpdateQueueSnapshot","items","size","EcsBridgeInput","defaultScopeId","ecsFlowRepository","entityEventsManager","entityProxyRepository","entityRepository","entityScheduler","entityTypeDescriptors","entityUpdateQueue","eventLogSize","performanceTimer","systemsModuleRepository","createVersionStore","version","add","delete","notifyInstrumentedListeners","Array","from","instrumentMethod","TTarget","methodName","undefined","mutableTarget","Record","method","instrumented","bridgeInstrumentedMethod","this","apply","maybePromise","Promise","finally","isProxy","value","sameProxy","a","b","entityUid","entityTypeKey","toString","normalizeEntityTypeDescriptor","descriptor","id","normalizePhase","entryMs","entry","msPassed","endedAt","startedAt","matchesMetric","filter","toLowerCase","includes","system","EcsBridge","stores","Map","eventLog","metricEntries","updateCounts","unsubscribeInstrumentation","constructor","input","entityTypes","events","modules","proxies","queue","scheduler","scopes","subscriptions","normalized","set","instrumentRepositories","dispose","unsubscribe","splice","getEntityUpdateCounts","get","getEntitiesInScope","listAll","entity","identity","model","getEntityTypeDescriptor","idOrEntityType","key","values","find","getEntityTypeDescriptors","descriptors","explicitEntityTypes","list","keys","has","myProxy","sort","localeCompare","registerEntityTypeDescriptor","getScopes","entitiesByScope","push","entries","map","getEventStream","data","uid","origin","some","slice","getMetricEntries","flat","getMiddlewareMetrics","summaries","ms","existing","Math","min","max","getPipelineMetrics","module","length","reduce","sum","Boolean","join","getSchedulerSnapshot","getUpdateQueueSnapshot","createEntitySpawnUpdate","spawn","descriptorId","modelInput","createModel","snapshot","createSnapshot","update","enqueueEntitySpawn","enqueue","listSystemsModules","recordEvent","Date","now","bumpUpdate","counts","proxy","_args","createEcsBridge","PropsWithChildren","useMemo","EcsBridge","EcsCanvasContextOptions","EcsFlowContext","EcsFlowContextProps","EcsCanvasProviderProps","bridge","EcsCanvasProvider","t0","$","_c","children","readOnly","t1","telemetryThresholdMs","undefined","t2","Object","assign","value","t3"],"sources":["../../src/context/ecs-flow-repository.ts","../../src/context/ecs-bridge.ts","../../src/context/ecs-canvas-provider.tsx"],"sourcesContent":["import { EntityTypeUid, IEntityProxy } from '@awesome-ecs/abstract/entities';\nimport { Node } from '@xyflow/react';\nimport { EcsIdGenerator } from '../utils/id-generator';\nimport { EntityNodeData, ScopeGroupNodeData, SystemsModuleNodeData } from '../abstract/node-props';\n\nexport class EcsFlowRepository {\n private readonly nodes: Map<string, Node>;\n\n constructor() {\n this.nodes = new Map();\n }\n\n get sizeNodes(): number {\n return this.nodes.size;\n }\n\n addSystemModuleNode(node: Node<SystemsModuleNodeData>) {\n this.nodes.set(node.data.entityType.toString(), node);\n }\n\n getSystemModuleNode(entityType: EntityTypeUid): Node<SystemsModuleNodeData> {\n return this.nodes.get(entityType.toString()) as Node<SystemsModuleNodeData>;\n }\n\n addScopeGroupNode(node: Node<ScopeGroupNodeData>) {\n this.nodes.set(EcsIdGenerator.scope(node.data.scopeId), node);\n }\n\n getScopeGroupNode(scopeId: string): Node<ScopeGroupNodeData> {\n return this.nodes.get(EcsIdGenerator.scope(scopeId)) as Node<ScopeGroupNodeData>;\n }\n\n addEntityNode(node: Node<EntityNodeData>) {\n if (!node.data.entity) {\n return;\n }\n\n this.nodes.set(EcsIdGenerator.entityProxy(node.data.entity), node);\n }\n\n getEntityNode(entity: IEntityProxy): Node<EntityNodeData> {\n return this.nodes.get(EcsIdGenerator.entityProxy(entity)) as Node<EntityNodeData>;\n }\n\n addToolNode(node: Node) {\n this.nodes.set(EcsIdGenerator.tool(node.type), node);\n }\n\n getToolNode(type: string): Node {\n return this.nodes.get(EcsIdGenerator.tool(type));\n }\n\n listAllNodes(): Node[] {\n return Array.from(this.nodes.values());\n }\n}\n","import {\n EntityEventUid,\n EntityUpdateType,\n EntityTypeUid,\n EntityUid,\n IEntity,\n IEntityEvent,\n IEntityEventsManager,\n IEntityModel,\n IEntityProxy,\n IEntityProxyRepository,\n IEntityRepository,\n IEntityScheduler,\n IEntityUpdate,\n IEntityUpdateQueue,\n IEventData\n} from '@awesome-ecs/abstract/entities';\nimport { PipelineCategory, PipelineCategoryName } from '@awesome-ecs/abstract/factories';\nimport { SystemType, ISystemsModule, ISystemsModuleRepository } from '@awesome-ecs/abstract/systems';\nimport { IPerformanceTimer, MiddlewareMetricsSummary, PerformanceTimeEntry } from '@awesome-ecs/abstract/utils';\nimport { EcsEntitySpawnRequest, EcsEntityTypeDescriptor } from '../abstract/entity-type-descriptor';\nimport { EcsIdGenerator } from '../utils/id-generator';\nimport { EcsFlowRepository } from './ecs-flow-repository';\n\nconst INSTRUMENTATION = Symbol.for('@awesome-flow/ecs.bridge.instrumentation');\n\ntype InstrumentationListener = (args: unknown[], result: unknown) => void;\ntype InstrumentedFunction = ((...args: unknown[]) => unknown) & {\n [INSTRUMENTATION]?: {\n listeners: Set<InstrumentationListener>;\n original: (...args: unknown[]) => unknown;\n };\n};\n\nexport type EcsBridgeStoreName =\n | 'entities'\n | 'entityTypes'\n | 'events'\n | 'metrics'\n | 'modules'\n | 'proxies'\n | 'queue'\n | 'scheduler'\n | 'scopes'\n | 'subscriptions'\n | 'updates';\n\nexport type EcsBridgeStore = {\n getSnapshot(): number;\n notify(): void;\n subscribe(listener: () => void): () => void;\n};\n\nexport type TelemetryMetricsSource = IPerformanceTimer & {\n readonly metrics?: ReadonlyMap<string, ReadonlyArray<PerformanceTimeEntry>>;\n clearMetrics?(): void;\n};\n\nexport type EntityUpdateCounts = {\n removes: number;\n updates: number;\n};\n\nexport type EcsEventLogEntry = {\n event: IEntityEvent<IEventData>;\n recordedAt: number;\n targets: readonly IEntityProxy[];\n};\n\nexport type EcsScopeSummary = {\n entities: readonly IEntity[];\n scopeId: string;\n scopedProxies: ReadonlyMap<EntityTypeUid, IEntityProxy>;\n};\n\nexport type EcsEventStreamFilter = {\n limit?: number;\n scopeId?: string;\n source?: IEntityProxy;\n target?: IEntityProxy;\n type?: EntityEventUid;\n};\n\nexport type EcsMetricsFilter = {\n category?: PipelineCategoryName;\n entityType?: EntityTypeUid;\n phase?: SystemType | string;\n};\n\nexport type PipelineMetricsSummary = {\n avgMs: number;\n count: number;\n lastMs: number;\n maxMs: number;\n minMs: number;\n name: string;\n samples: readonly number[];\n totalMs: number;\n};\n\nexport type EcsSchedulerSnapshot = {\n frameSubscriptions: readonly IEntityProxy[];\n isPaused: boolean;\n pendingCount: number;\n schedules: readonly unknown[];\n skippedEntityTypes: readonly EntityTypeUid[];\n};\n\nexport type EcsUpdateQueueSnapshot = {\n items: readonly IEntityUpdate[];\n size: number;\n};\n\nexport type EcsBridgeInput = {\n defaultScopeId?: string;\n ecsFlowRepository?: EcsFlowRepository;\n entityEventsManager: IEntityEventsManager;\n entityProxyRepository: IEntityProxyRepository;\n entityRepository: IEntityRepository;\n entityScheduler?: IEntityScheduler;\n entityTypeDescriptors?: readonly EcsEntityTypeDescriptor[];\n entityUpdateQueue?: IEntityUpdateQueue;\n eventLogSize?: number;\n performanceTimer?: TelemetryMetricsSource;\n systemsModuleRepository: ISystemsModuleRepository;\n};\n\nfunction createVersionStore(): EcsBridgeStore {\n let version = 0;\n const listeners = new Set<() => void>();\n\n return {\n getSnapshot: () => version,\n notify: () => {\n version += 1;\n for (const listener of listeners) {\n listener();\n }\n },\n subscribe: (listener: () => void) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }\n };\n}\n\nfunction notifyInstrumentedListeners(listeners: Set<InstrumentationListener>, args: unknown[], result: unknown) {\n for (const listener of Array.from(listeners)) {\n listener(args, result);\n }\n}\n\nfunction instrumentMethod<TTarget extends object>(\n target: TTarget | undefined,\n methodName: string,\n listener: InstrumentationListener\n): () => void {\n if (!target) {\n return () => undefined;\n }\n\n const mutableTarget = target as Record<string, unknown>;\n const method = mutableTarget[methodName] as InstrumentedFunction | undefined;\n\n if (typeof method !== 'function') {\n return () => undefined;\n }\n\n let instrumented = method;\n if (!instrumented[INSTRUMENTATION]) {\n const original = method;\n const listeners = new Set<InstrumentationListener>();\n\n instrumented = function bridgeInstrumentedMethod(this: unknown, ...args: unknown[]) {\n const result = original.apply(this, args);\n const maybePromise = result as Promise<unknown> | undefined;\n\n if (maybePromise && typeof maybePromise.finally === 'function') {\n return maybePromise.finally(() => notifyInstrumentedListeners(listeners, args, result));\n }\n\n notifyInstrumentedListeners(listeners, args, result);\n return result;\n } as InstrumentedFunction;\n\n instrumented[INSTRUMENTATION] = { listeners, original };\n mutableTarget[methodName] = instrumented;\n }\n\n instrumented[INSTRUMENTATION].listeners.add(listener);\n\n return () => {\n instrumented[INSTRUMENTATION]?.listeners.delete(listener);\n };\n}\n\nfunction isProxy(value: unknown): value is IEntityProxy {\n return !!value && typeof value === 'object' && 'entityType' in value && 'entityUid' in value;\n}\n\nfunction sameProxy(a?: IEntityProxy, b?: IEntityProxy): boolean {\n return !!a && !!b && a.entityType === b.entityType && a.entityUid === b.entityUid;\n}\n\nfunction entityTypeKey(entityType: EntityTypeUid): string {\n return entityType.toString();\n}\n\nfunction normalizeEntityTypeDescriptor(descriptor: EcsEntityTypeDescriptor): EcsEntityTypeDescriptor & { id: string } {\n return {\n ...descriptor,\n id: descriptor.id ?? EcsIdGenerator.entityType(descriptor.entityType)\n };\n}\n\nfunction normalizePhase(phase?: SystemType | string): string | undefined {\n if (phase === undefined || phase === null) {\n return undefined;\n }\n\n if (typeof phase === 'number') {\n return SystemType[phase];\n }\n\n return phase;\n}\n\nfunction entryMs(entry: PerformanceTimeEntry): number | undefined {\n if (entry.msPassed !== undefined) {\n return entry.msPassed;\n }\n\n if (entry.endedAt !== undefined) {\n return entry.endedAt - entry.startedAt;\n }\n\n return undefined;\n}\n\nfunction matchesMetric(entry: PerformanceTimeEntry, filter?: EcsMetricsFilter): boolean {\n if (!filter) {\n return true;\n }\n\n if (filter.category && entry.category !== filter.category) {\n return false;\n }\n\n const phase = normalizePhase(filter.phase)?.toString().toLowerCase();\n if (phase && !entry.name.toLowerCase().includes(phase)) {\n return false;\n }\n\n if (filter.entityType && entry.category !== PipelineCategory.system) {\n const entityType = filter.entityType.toString().toLowerCase();\n if (!entry.name.toLowerCase().includes(entityType)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport class EcsBridge {\n readonly ecsFlowRepository: EcsFlowRepository;\n readonly entityEventsManager: IEntityEventsManager;\n readonly entityProxyRepository: IEntityProxyRepository;\n readonly entityRepository: IEntityRepository;\n readonly entityScheduler?: IEntityScheduler;\n readonly entityUpdateQueue?: IEntityUpdateQueue;\n readonly performanceTimer?: TelemetryMetricsSource;\n readonly stores: Record<EcsBridgeStoreName, EcsBridgeStore>;\n readonly systemsModuleRepository: ISystemsModuleRepository;\n\n private readonly defaultScopeId?: string;\n private readonly entityTypeDescriptors = new Map<string, EcsEntityTypeDescriptor & { id: string }>();\n private readonly eventLogSize: number;\n private readonly eventLog: EcsEventLogEntry[] = [];\n private readonly metricEntries: PerformanceTimeEntry[] = [];\n private readonly scopedProxies = new Map<string, Map<EntityTypeUid, IEntityProxy>>();\n private readonly updateCounts = new Map<EntityUid, EntityUpdateCounts>();\n private readonly unsubscribeInstrumentation: (() => void)[] = [];\n\n constructor(input: EcsBridgeInput) {\n this.ecsFlowRepository = input.ecsFlowRepository ?? new EcsFlowRepository();\n this.entityEventsManager = input.entityEventsManager;\n this.entityProxyRepository = input.entityProxyRepository;\n this.entityRepository = input.entityRepository;\n this.entityScheduler = input.entityScheduler;\n this.entityUpdateQueue = input.entityUpdateQueue;\n this.defaultScopeId = input.defaultScopeId;\n this.performanceTimer = input.performanceTimer;\n this.systemsModuleRepository = input.systemsModuleRepository;\n this.eventLogSize = input.eventLogSize ?? 250;\n this.stores = {\n entities: createVersionStore(),\n entityTypes: createVersionStore(),\n events: createVersionStore(),\n metrics: createVersionStore(),\n modules: createVersionStore(),\n proxies: createVersionStore(),\n queue: createVersionStore(),\n scheduler: createVersionStore(),\n scopes: createVersionStore(),\n subscriptions: createVersionStore(),\n updates: createVersionStore()\n };\n\n for (const descriptor of input.entityTypeDescriptors ?? []) {\n const normalized = normalizeEntityTypeDescriptor(descriptor);\n this.entityTypeDescriptors.set(normalized.id, normalized);\n }\n\n this.instrumentRepositories();\n }\n\n dispose(): void {\n for (const unsubscribe of this.unsubscribeInstrumentation.splice(0)) {\n unsubscribe();\n }\n }\n\n getEntityUpdateCounts(target: IEntityProxy | EntityUid): EntityUpdateCounts {\n const entityUid = isProxy(target) ? target.entityUid : target;\n return this.updateCounts.get(entityUid) ?? { removes: 0, updates: 0 };\n }\n\n getEntitiesInScope(scopeId: string): IEntity[] {\n return Array.from(this.entityRepository.listAll()).filter((entity) => entity.identity?.model?.scopeId === scopeId);\n }\n\n getEntityTypeDescriptor(idOrEntityType: string | EntityTypeUid): EcsEntityTypeDescriptor | undefined {\n const key = idOrEntityType.toString();\n return (\n this.entityTypeDescriptors.get(key) ??\n Array.from(this.entityTypeDescriptors.values()).find((descriptor) => entityTypeKey(descriptor.entityType) === key)\n );\n }\n\n getEntityTypeDescriptors(): EcsEntityTypeDescriptor[] {\n const descriptors = new Map<string, EcsEntityTypeDescriptor>();\n const explicitEntityTypes = new Set<string>();\n\n for (const descriptor of this.entityTypeDescriptors.values()) {\n descriptors.set(descriptor.id, descriptor);\n explicitEntityTypes.add(entityTypeKey(descriptor.entityType));\n }\n\n for (const entityType of this.systemsModuleRepository.list().keys()) {\n if (!explicitEntityTypes.has(entityTypeKey(entityType))) {\n const descriptor = normalizeEntityTypeDescriptor({ entityType });\n descriptors.set(descriptor.id, descriptor);\n }\n }\n\n for (const entity of this.entityRepository.listAll()) {\n const { entityType } = entity.myProxy;\n if (!explicitEntityTypes.has(entityTypeKey(entityType))) {\n const descriptor = normalizeEntityTypeDescriptor({ entityType });\n descriptors.set(descriptor.id, descriptor);\n }\n }\n\n return Array.from(descriptors.values()).sort((a, b) => a.entityType.toString().localeCompare(b.entityType.toString()));\n }\n\n registerEntityTypeDescriptor(descriptor: EcsEntityTypeDescriptor): EcsEntityTypeDescriptor {\n const normalized = normalizeEntityTypeDescriptor(descriptor);\n this.entityTypeDescriptors.set(normalized.id, normalized);\n this.stores.entityTypes.notify();\n return normalized;\n }\n\n getScopes(): EcsScopeSummary[] {\n const entitiesByScope = new Map<string, IEntity[]>();\n\n for (const entity of this.entityRepository.listAll()) {\n const scopeId = entity.identity?.model?.scopeId;\n if (!scopeId) {\n continue;\n }\n\n const entities = entitiesByScope.get(scopeId) ?? [];\n entities.push(entity);\n entitiesByScope.set(scopeId, entities);\n }\n\n for (const scopeId of this.scopedProxies.keys()) {\n if (!entitiesByScope.has(scopeId)) {\n entitiesByScope.set(scopeId, []);\n }\n }\n\n return Array.from(entitiesByScope.entries()).map(([scopeId, entities]) => ({\n scopeId,\n entities,\n scopedProxies: this.scopedProxies.get(scopeId) ?? new Map()\n }));\n }\n\n getEventStream(filter?: EcsEventStreamFilter): EcsEventLogEntry[] {\n const entries = this.eventLog.filter((entry) => {\n if (filter?.type !== undefined && entry.event.data.uid !== filter.type) {\n return false;\n }\n\n if (filter?.scopeId && entry.event.scopeId !== filter.scopeId) {\n return false;\n }\n\n if (filter?.source && !sameProxy(entry.event.origin, filter.source)) {\n return false;\n }\n\n if (filter?.target) {\n const targets = entry.event.target ? [entry.event.target] : entry.targets;\n if (!targets.some((target) => sameProxy(target, filter.target))) {\n return false;\n }\n }\n\n return true;\n });\n\n return filter?.limit ? entries.slice(-filter.limit) : entries;\n }\n\n getMetricEntries(filter?: EcsMetricsFilter): PerformanceTimeEntry[] {\n const entries = this.performanceTimer?.metrics\n ? Array.from(this.performanceTimer.metrics.values()).flat()\n : this.metricEntries;\n\n return entries.filter((entry) => matchesMetric(entry, filter));\n }\n\n getMiddlewareMetrics(filter?: EcsMetricsFilter): MiddlewareMetricsSummary[] {\n const summaries = new Map<string, MiddlewareMetricsSummary>();\n\n for (const entry of this.getMetricEntries(filter)) {\n const ms = entryMs(entry);\n if (ms === undefined) {\n continue;\n }\n\n const category = entry.category ?? PipelineCategory.system;\n const key = `${category}:${entry.name}`;\n const existing = summaries.get(key);\n\n if (existing) {\n existing.count += 1;\n existing.totalMs += ms;\n existing.avgMs = existing.totalMs / existing.count;\n existing.minMs = Math.min(existing.minMs, ms);\n existing.maxMs = Math.max(existing.maxMs, ms);\n existing.lastMs = ms;\n } else {\n summaries.set(key, {\n name: entry.name,\n category,\n count: 1,\n totalMs: ms,\n avgMs: ms,\n minMs: ms,\n maxMs: ms,\n lastMs: ms\n });\n }\n }\n\n return Array.from(summaries.values()).sort((a, b) => b.totalMs - a.totalMs);\n }\n\n getPipelineMetrics(entityType?: EntityTypeUid, phase?: SystemType | string): PipelineMetricsSummary | undefined {\n const entries = this.getMetricEntries({\n category: PipelineCategory.module,\n entityType,\n phase\n });\n const samples = entries.map(entryMs).filter((ms): ms is number => ms !== undefined);\n\n if (!samples.length) {\n return undefined;\n }\n\n const totalMs = samples.reduce((sum, ms) => sum + ms, 0);\n\n return {\n name: [entityType, normalizePhase(phase)].filter(Boolean).join(':') || 'pipeline',\n count: samples.length,\n totalMs,\n avgMs: totalMs / samples.length,\n minMs: Math.min(...samples),\n maxMs: Math.max(...samples),\n lastMs: samples[samples.length - 1],\n samples\n };\n }\n\n getSchedulerSnapshot(): EcsSchedulerSnapshot | undefined {\n if (!this.entityScheduler) {\n return undefined;\n }\n\n return {\n frameSubscriptions: Array.from(this.entityScheduler.frameSubscriptions),\n isPaused: this.entityScheduler.isPaused,\n pendingCount: this.entityScheduler.pendingCount,\n schedules: Array.from(this.entityScheduler.schedules),\n skippedEntityTypes: Array.from(this.entityScheduler.skippedEntityTypes)\n };\n }\n\n getUpdateQueueSnapshot(limit?: number): EcsUpdateQueueSnapshot | undefined {\n if (!this.entityUpdateQueue) {\n return undefined;\n }\n\n const items = this.entityUpdateQueue.items();\n\n return {\n items: limit ? items.slice(-limit) : items,\n size: this.entityUpdateQueue.size\n };\n }\n\n createEntitySpawnUpdate(spawn: EcsEntitySpawnRequest): IEntityUpdate {\n const descriptor = spawn.descriptorId\n ? this.getEntityTypeDescriptor(spawn.descriptorId)\n : this.getEntityTypeDescriptor(spawn.entityType);\n const entityType = descriptor?.entityType ?? spawn.entityType;\n const uid = spawn.uid ?? EcsIdGenerator.entityUid(entityType);\n const scopeId = spawn.scopeId ?? descriptor?.scopeId ?? this.defaultScopeId;\n const modelInput = {\n descriptor: descriptor ?? normalizeEntityTypeDescriptor({ entityType }),\n entityType,\n scopeId,\n uid\n };\n const model: IEntityModel = descriptor?.createModel?.(modelInput) ?? {\n uid,\n scopeId\n };\n const snapshot = descriptor?.createSnapshot?.(modelInput);\n\n return {\n type: EntityUpdateType.update,\n entity: {\n entityType,\n entityUid: model.uid\n },\n model,\n snapshot\n };\n }\n\n enqueueEntitySpawn(spawn: EcsEntitySpawnRequest): IEntityUpdate | undefined {\n if (!this.entityUpdateQueue) {\n return undefined;\n }\n\n const update = this.createEntitySpawnUpdate(spawn);\n this.entityUpdateQueue.enqueue(update);\n return update;\n }\n\n listSystemsModules(): ReadonlyMap<EntityTypeUid, ISystemsModule<IEntity>> {\n return this.systemsModuleRepository.list() as ReadonlyMap<EntityTypeUid, ISystemsModule<IEntity>>;\n }\n\n recordEvent(event: IEntityEvent<IEventData>, targets: readonly IEntityProxy[] = []): void {\n this.eventLog.push({\n event,\n targets,\n recordedAt: Date.now()\n });\n\n if (this.eventLog.length > this.eventLogSize) {\n this.eventLog.splice(0, this.eventLog.length - this.eventLogSize);\n }\n\n this.stores.events.notify();\n }\n\n private bumpUpdate(entityUid: EntityUid, key: keyof EntityUpdateCounts): void {\n const counts = this.updateCounts.get(entityUid) ?? { removes: 0, updates: 0 };\n counts[key] += 1;\n this.updateCounts.set(entityUid, counts);\n this.stores.updates.notify();\n }\n\n private instrumentRepositories(): void {\n this.unsubscribeInstrumentation.push(\n instrumentMethod(this.entityRepository, 'set', (args) => {\n const entity = args[0] as IEntity | undefined;\n if (entity?.myProxy) {\n this.bumpUpdate(entity.myProxy.entityUid, 'updates');\n }\n this.stores.entities.notify();\n this.stores.entityTypes.notify();\n this.stores.scopes.notify();\n }),\n instrumentMethod(this.entityRepository, 'delete', (args) => {\n const proxy = args[0];\n if (isProxy(proxy)) {\n this.bumpUpdate(proxy.entityUid, 'removes');\n }\n this.stores.entities.notify();\n this.stores.entityTypes.notify();\n this.stores.scopes.notify();\n }),\n instrumentMethod(this.entityRepository, 'clear', () => {\n this.stores.entities.notify();\n this.stores.entityTypes.notify();\n this.stores.scopes.notify();\n }),\n instrumentMethod(this.systemsModuleRepository, 'set', () => {\n this.stores.modules.notify();\n this.stores.entityTypes.notify();\n }),\n instrumentMethod(this.entityProxyRepository, 'register', () => {\n this.stores.proxies.notify();\n }),\n instrumentMethod(this.entityProxyRepository, 'registerMany', () => {\n this.stores.proxies.notify();\n }),\n instrumentMethod(this.entityProxyRepository, 'remove', () => {\n this.stores.proxies.notify();\n }),\n instrumentMethod(this.entityProxyRepository, 'removeAllFor', () => {\n this.stores.proxies.notify();\n }),\n instrumentMethod(this.entityProxyRepository, 'setScopedProxy', (args) => {\n const entity = args[0];\n const scopeId = args[1];\n if (isProxy(entity) && typeof scopeId === 'string') {\n const proxies = this.scopedProxies.get(scopeId) ?? new Map<EntityTypeUid, IEntityProxy>();\n proxies.set(entity.entityType, entity);\n this.scopedProxies.set(scopeId, proxies);\n }\n this.stores.proxies.notify();\n this.stores.scopes.notify();\n }),\n instrumentMethod(this.entityProxyRepository, 'removeScopedProxy', (args) => {\n const entity = args[0];\n const scopeId = args[1];\n if (isProxy(entity) && typeof scopeId === 'string') {\n const proxies = this.scopedProxies.get(scopeId);\n const existing = proxies?.get(entity.entityType);\n if (existing?.entityUid === entity.entityUid) {\n proxies.delete(entity.entityType);\n }\n if (proxies?.size === 0) {\n this.scopedProxies.delete(scopeId);\n }\n }\n this.stores.proxies.notify();\n this.stores.scopes.notify();\n }),\n instrumentMethod(this.entityEventsManager, 'subscribe', () => {\n this.stores.subscriptions.notify();\n }),\n instrumentMethod(this.entityEventsManager, 'unsubscribe', () => {\n this.stores.subscriptions.notify();\n }),\n instrumentMethod(this.entityEventsManager, 'clearSubscriptions', () => {\n this.stores.subscriptions.notify();\n }),\n instrumentMethod(this.entityEventsManager, 'clearSubscriptionsForEntity', () => {\n this.stores.subscriptions.notify();\n }),\n instrumentMethod(this.entityEventsManager, 'clearSubscriptionsForEvent', () => {\n this.stores.subscriptions.notify();\n }),\n instrumentMethod(this.performanceTimer, 'endTimer', (_args, result) => {\n const entry = result as PerformanceTimeEntry | undefined;\n if (!this.performanceTimer?.metrics && entry?.name) {\n this.metricEntries.push(entry);\n }\n this.stores.metrics.notify();\n }),\n instrumentMethod(this.entityScheduler, 'schedule', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'remove', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'clear', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'skipEntityType', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'unskipEntityType', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'pause', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'resume', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityUpdateQueue, 'enqueue', () => {\n this.stores.queue.notify();\n }),\n instrumentMethod(this.entityUpdateQueue, 'dequeue', () => {\n this.stores.queue.notify();\n }),\n instrumentMethod(this.entityUpdateQueue, 'clear', () => {\n this.stores.queue.notify();\n })\n );\n }\n}\n\nexport function createEcsBridge(input: EcsBridgeInput): EcsBridge {\n return new EcsBridge(input);\n}\n","import { PropsWithChildren, useMemo } from 'react';\nimport { EcsBridge } from './ecs-bridge';\nimport {\n EcsCanvasContextOptions,\n EcsFlowContext,\n EcsFlowContextProps\n} from './ecs-flow-context';\n\nexport type EcsCanvasProviderProps = PropsWithChildren<\n EcsCanvasContextOptions & {\n bridge: EcsBridge;\n }\n>;\n\nexport function EcsCanvasProvider({\n bridge,\n children,\n readOnly = false,\n telemetryThresholdMs\n}: Readonly<EcsCanvasProviderProps>) {\n const value = useMemo<EcsFlowContextProps>(() => {\n return Object.assign(bridge, {\n readOnly,\n telemetryThresholdMs\n });\n }, [bridge, readOnly, telemetryThresholdMs]);\n\n return <EcsFlowContext.Provider value={value}>{children}</EcsFlowContext.Provider>;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["EntityTypeUid","IEntityProxy","Node","EcsIdGenerator","EntityNodeData","ScopeGroupNodeData","SystemsModuleNodeData","EcsFlowRepository","nodes","Map","constructor","sizeNodes","size","addSystemModuleNode","node","set","data","entityType","toString","getSystemModuleNode","get","addScopeGroupNode","scope","scopeId","getScopeGroupNode","addEntityNode","entity","entityProxy","getEntityNode","addToolNode","tool","type","getToolNode","listAllNodes","Array","from","values","EntityEventUid","EntityUpdateType","EntityTypeUid","EntityUid","IEntity","IEntityEvent","IEntityEventsManager","IEntityModel","IEntityProxy","IEntityProxyRepository","IEntityRepository","IEntityRuntimeSchedulerInspector","IEntityUpdate","IEventData","PipelineCategory","PipelineCategoryName","SystemType","ISystemsModule","ISystemsModuleRepository","IPerformanceTimer","MiddlewareMetricsSummary","PerformanceTimeEntry","EcsEntitySpawnRequest","EcsEntityTypeDescriptor","EcsIdGenerator","EcsFlowRepository","INSTRUMENTATION","Symbol","for","InstrumentationListener","args","result","InstrumentedFunction","listeners","Set","original","EcsBridgeStoreName","EcsBridgeStore","getSnapshot","notify","subscribe","listener","TelemetryMetricsSource","metrics","ReadonlyMap","ReadonlyArray","clearMetrics","EntityUpdateCounts","removes","updates","EcsEventLogEntry","event","recordedAt","targets","EcsScopeSummary","entities","scopeId","scopedProxies","EcsEventStreamFilter","limit","source","target","type","EcsMetricsFilter","category","entityType","phase","PipelineMetricsSummary","avgMs","count","lastMs","maxMs","minMs","name","samples","totalMs","EcsSchedulerSnapshot","frameSubscriptions","isPaused","pendingCount","schedules","skippedEntityTypes","EcsUpdateQueueSnapshot","items","size","EcsBridgeInput","defaultScopeId","ecsFlowRepository","entityEventsManager","entityProxyRepository","entityRepository","entityScheduler","entityTypeDescriptors","eventLogSize","performanceTimer","systemsModuleRepository","createVersionStore","version","add","delete","notifyInstrumentedListeners","Array","from","instrumentMethod","TTarget","methodName","undefined","mutableTarget","Record","method","instrumented","bridgeInstrumentedMethod","this","apply","maybePromise","Promise","finally","isProxy","value","sameProxy","a","b","entityUid","entityTypeKey","toString","normalizeEntityTypeDescriptor","descriptor","id","normalizePhase","entryMs","entry","msPassed","endedAt","startedAt","matchesMetric","filter","toLowerCase","includes","system","EcsBridge","stores","Map","eventLog","metricEntries","updateCounts","unsubscribeInstrumentation","constructor","input","entityTypes","events","modules","proxies","queue","scheduler","scopes","subscriptions","normalized","set","instrumentRepositories","dispose","unsubscribe","splice","getEntityUpdateCounts","get","getEntitiesInScope","listAll","entity","identity","model","getEntityTypeDescriptor","idOrEntityType","key","values","find","getEntityTypeDescriptors","descriptors","explicitEntityTypes","list","keys","has","proxy","sort","localeCompare","registerEntityTypeDescriptor","getScopes","entitiesByScope","push","entries","map","getEventStream","data","uid","origin","some","slice","getMetricEntries","flat","getMiddlewareMetrics","summaries","ms","existing","Math","min","max","getPipelineMetrics","module","length","reduce","sum","Boolean","join","getSchedulerSnapshot","getUpdateQueueSnapshot","inspectDirtyUpdates","dirtyCount","createEntitySpawnUpdate","spawn","descriptorId","modelInput","createModel","snapshot","createSnapshot","update","enqueueEntitySpawn","enqueue","listSystemsModules","recordEvent","Date","now","bumpUpdate","counts","_args","createEcsBridge","PropsWithChildren","useMemo","EcsBridge","EcsCanvasContextOptions","EcsFlowContext","EcsFlowContextProps","EcsCanvasProviderProps","bridge","EcsCanvasProvider","t0","$","_c","children","readOnly","t1","telemetryThresholdMs","undefined","t2","Object","assign","value","t3"],"sources":["../../src/context/ecs-flow-repository.ts","../../src/context/ecs-bridge.ts","../../src/context/ecs-canvas-provider.tsx"],"sourcesContent":["import { EntityTypeUid, IEntityProxy } from '@awesome-ecs/abstract/entities';\nimport { Node } from '@xyflow/react';\nimport { EcsIdGenerator } from '../utils/id-generator';\nimport { EntityNodeData, ScopeGroupNodeData, SystemsModuleNodeData } from '../abstract/node-props';\n\nexport class EcsFlowRepository {\n private readonly nodes: Map<string, Node>;\n\n constructor() {\n this.nodes = new Map();\n }\n\n get sizeNodes(): number {\n return this.nodes.size;\n }\n\n addSystemModuleNode(node: Node<SystemsModuleNodeData>) {\n this.nodes.set(node.data.entityType.toString(), node);\n }\n\n getSystemModuleNode(entityType: EntityTypeUid): Node<SystemsModuleNodeData> {\n return this.nodes.get(entityType.toString()) as Node<SystemsModuleNodeData>;\n }\n\n addScopeGroupNode(node: Node<ScopeGroupNodeData>) {\n this.nodes.set(EcsIdGenerator.scope(node.data.scopeId), node);\n }\n\n getScopeGroupNode(scopeId: string): Node<ScopeGroupNodeData> {\n return this.nodes.get(EcsIdGenerator.scope(scopeId)) as Node<ScopeGroupNodeData>;\n }\n\n addEntityNode(node: Node<EntityNodeData>) {\n if (!node.data.entity) {\n return;\n }\n\n this.nodes.set(EcsIdGenerator.entityProxy(node.data.entity), node);\n }\n\n getEntityNode(entity: IEntityProxy): Node<EntityNodeData> {\n return this.nodes.get(EcsIdGenerator.entityProxy(entity)) as Node<EntityNodeData>;\n }\n\n addToolNode(node: Node) {\n this.nodes.set(EcsIdGenerator.tool(node.type), node);\n }\n\n getToolNode(type: string): Node {\n return this.nodes.get(EcsIdGenerator.tool(type));\n }\n\n listAllNodes(): Node[] {\n return Array.from(this.nodes.values());\n }\n}\n","import {\n EntityEventUid,\n EntityUpdateType,\n EntityTypeUid,\n EntityUid,\n IEntity,\n IEntityEvent,\n IEntityEventsManager,\n IEntityModel,\n IEntityProxy,\n IEntityProxyRepository,\n IEntityRepository,\n IEntityRuntimeSchedulerInspector,\n IEntityUpdate,\n IEventData\n} from '@awesome-ecs/abstract/entities';\nimport { PipelineCategory, PipelineCategoryName } from '@awesome-ecs/abstract/factories';\nimport { SystemType, ISystemsModule, ISystemsModuleRepository } from '@awesome-ecs/abstract/systems';\nimport { IPerformanceTimer, MiddlewareMetricsSummary, PerformanceTimeEntry } from '@awesome-ecs/abstract/utils';\nimport { EcsEntitySpawnRequest, EcsEntityTypeDescriptor } from '../abstract/entity-type-descriptor';\nimport { EcsIdGenerator } from '../utils/id-generator';\nimport { EcsFlowRepository } from './ecs-flow-repository';\n\nconst INSTRUMENTATION = Symbol.for('@awesome-flow/ecs.bridge.instrumentation');\n\ntype InstrumentationListener = (args: unknown[], result: unknown) => void;\ntype InstrumentedFunction = ((...args: unknown[]) => unknown) & {\n [INSTRUMENTATION]?: {\n listeners: Set<InstrumentationListener>;\n original: (...args: unknown[]) => unknown;\n };\n};\n\nexport type EcsBridgeStoreName =\n | 'entities'\n | 'entityTypes'\n | 'events'\n | 'metrics'\n | 'modules'\n | 'proxies'\n | 'queue'\n | 'scheduler'\n | 'scopes'\n | 'subscriptions'\n | 'updates';\n\nexport type EcsBridgeStore = {\n getSnapshot(): number;\n notify(): void;\n subscribe(listener: () => void): () => void;\n};\n\nexport type TelemetryMetricsSource = IPerformanceTimer & {\n readonly metrics?: ReadonlyMap<string, ReadonlyArray<PerformanceTimeEntry>>;\n clearMetrics?(): void;\n};\n\nexport type EntityUpdateCounts = {\n removes: number;\n updates: number;\n};\n\nexport type EcsEventLogEntry = {\n event: IEntityEvent<IEventData>;\n recordedAt: number;\n targets: readonly IEntityProxy[];\n};\n\nexport type EcsScopeSummary = {\n entities: readonly IEntity[];\n scopeId: string;\n scopedProxies: ReadonlyMap<EntityTypeUid, IEntityProxy>;\n};\n\nexport type EcsEventStreamFilter = {\n limit?: number;\n scopeId?: string;\n source?: IEntityProxy;\n target?: IEntityProxy;\n type?: EntityEventUid;\n};\n\nexport type EcsMetricsFilter = {\n category?: PipelineCategoryName;\n entityType?: EntityTypeUid;\n phase?: SystemType | string;\n};\n\nexport type PipelineMetricsSummary = {\n avgMs: number;\n count: number;\n lastMs: number;\n maxMs: number;\n minMs: number;\n name: string;\n samples: readonly number[];\n totalMs: number;\n};\n\nexport type EcsSchedulerSnapshot = {\n frameSubscriptions: readonly IEntityProxy[];\n isPaused: boolean;\n pendingCount: number;\n schedules: readonly unknown[];\n skippedEntityTypes: readonly EntityTypeUid[];\n};\n\nexport type EcsUpdateQueueSnapshot = {\n items: readonly IEntityUpdate[];\n size: number;\n};\n\nexport type EcsBridgeInput = {\n defaultScopeId?: string;\n ecsFlowRepository?: EcsFlowRepository;\n entityEventsManager: IEntityEventsManager;\n entityProxyRepository: IEntityProxyRepository;\n entityRepository: IEntityRepository;\n entityScheduler?: IEntityRuntimeSchedulerInspector;\n entityTypeDescriptors?: readonly EcsEntityTypeDescriptor[];\n eventLogSize?: number;\n performanceTimer?: TelemetryMetricsSource;\n systemsModuleRepository: ISystemsModuleRepository;\n};\n\nfunction createVersionStore(): EcsBridgeStore {\n let version = 0;\n const listeners = new Set<() => void>();\n\n return {\n getSnapshot: () => version,\n notify: () => {\n version += 1;\n for (const listener of listeners) {\n listener();\n }\n },\n subscribe: (listener: () => void) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }\n };\n}\n\nfunction notifyInstrumentedListeners(listeners: Set<InstrumentationListener>, args: unknown[], result: unknown) {\n for (const listener of Array.from(listeners)) {\n listener(args, result);\n }\n}\n\nfunction instrumentMethod<TTarget extends object>(\n target: TTarget | undefined,\n methodName: string,\n listener: InstrumentationListener\n): () => void {\n if (!target) {\n return () => undefined;\n }\n\n const mutableTarget = target as Record<string, unknown>;\n const method = mutableTarget[methodName] as InstrumentedFunction | undefined;\n\n if (typeof method !== 'function') {\n return () => undefined;\n }\n\n let instrumented = method;\n if (!instrumented[INSTRUMENTATION]) {\n const original = method;\n const listeners = new Set<InstrumentationListener>();\n\n instrumented = function bridgeInstrumentedMethod(this: unknown, ...args: unknown[]) {\n const result = original.apply(this, args);\n const maybePromise = result as Promise<unknown> | undefined;\n\n if (maybePromise && typeof maybePromise.finally === 'function') {\n return maybePromise.finally(() => notifyInstrumentedListeners(listeners, args, result));\n }\n\n notifyInstrumentedListeners(listeners, args, result);\n return result;\n } as InstrumentedFunction;\n\n instrumented[INSTRUMENTATION] = { listeners, original };\n mutableTarget[methodName] = instrumented;\n }\n\n instrumented[INSTRUMENTATION].listeners.add(listener);\n\n return () => {\n instrumented[INSTRUMENTATION]?.listeners.delete(listener);\n };\n}\n\nfunction isProxy(value: unknown): value is IEntityProxy {\n return !!value && typeof value === 'object' && 'entityType' in value && 'entityUid' in value;\n}\n\nfunction sameProxy(a?: IEntityProxy, b?: IEntityProxy): boolean {\n return !!a && !!b && a.entityType === b.entityType && a.entityUid === b.entityUid;\n}\n\nfunction entityTypeKey(entityType: EntityTypeUid): string {\n return entityType.toString();\n}\n\nfunction normalizeEntityTypeDescriptor(descriptor: EcsEntityTypeDescriptor): EcsEntityTypeDescriptor & { id: string } {\n return {\n ...descriptor,\n id: descriptor.id ?? EcsIdGenerator.entityType(descriptor.entityType)\n };\n}\n\nfunction normalizePhase(phase?: SystemType | string): string | undefined {\n if (phase === undefined || phase === null) {\n return undefined;\n }\n\n if (typeof phase === 'number') {\n return SystemType[phase];\n }\n\n return phase;\n}\n\nfunction entryMs(entry: PerformanceTimeEntry): number | undefined {\n if (entry.msPassed !== undefined) {\n return entry.msPassed;\n }\n\n if (entry.endedAt !== undefined) {\n return entry.endedAt - entry.startedAt;\n }\n\n return undefined;\n}\n\nfunction matchesMetric(entry: PerformanceTimeEntry, filter?: EcsMetricsFilter): boolean {\n if (!filter) {\n return true;\n }\n\n if (filter.category && entry.category !== filter.category) {\n return false;\n }\n\n const phase = normalizePhase(filter.phase)?.toString().toLowerCase();\n if (phase && !entry.name.toLowerCase().includes(phase)) {\n return false;\n }\n\n if (filter.entityType && entry.category !== PipelineCategory.system) {\n const entityType = filter.entityType.toString().toLowerCase();\n if (!entry.name.toLowerCase().includes(entityType)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport class EcsBridge {\n readonly ecsFlowRepository: EcsFlowRepository;\n readonly entityEventsManager: IEntityEventsManager;\n readonly entityProxyRepository: IEntityProxyRepository;\n readonly entityRepository: IEntityRepository;\n readonly entityScheduler?: IEntityRuntimeSchedulerInspector;\n readonly performanceTimer?: TelemetryMetricsSource;\n readonly stores: Record<EcsBridgeStoreName, EcsBridgeStore>;\n readonly systemsModuleRepository: ISystemsModuleRepository;\n\n private readonly defaultScopeId?: string;\n private readonly entityTypeDescriptors = new Map<string, EcsEntityTypeDescriptor & { id: string }>();\n private readonly eventLogSize: number;\n private readonly eventLog: EcsEventLogEntry[] = [];\n private readonly metricEntries: PerformanceTimeEntry[] = [];\n private readonly scopedProxies = new Map<string, Map<EntityTypeUid, IEntityProxy>>();\n private readonly updateCounts = new Map<EntityUid, EntityUpdateCounts>();\n private readonly unsubscribeInstrumentation: (() => void)[] = [];\n\n constructor(input: EcsBridgeInput) {\n this.ecsFlowRepository = input.ecsFlowRepository ?? new EcsFlowRepository();\n this.entityEventsManager = input.entityEventsManager;\n this.entityProxyRepository = input.entityProxyRepository;\n this.entityRepository = input.entityRepository;\n this.entityScheduler = input.entityScheduler;\n this.defaultScopeId = input.defaultScopeId;\n this.performanceTimer = input.performanceTimer;\n this.systemsModuleRepository = input.systemsModuleRepository;\n this.eventLogSize = input.eventLogSize ?? 250;\n this.stores = {\n entities: createVersionStore(),\n entityTypes: createVersionStore(),\n events: createVersionStore(),\n metrics: createVersionStore(),\n modules: createVersionStore(),\n proxies: createVersionStore(),\n queue: createVersionStore(),\n scheduler: createVersionStore(),\n scopes: createVersionStore(),\n subscriptions: createVersionStore(),\n updates: createVersionStore()\n };\n\n for (const descriptor of input.entityTypeDescriptors ?? []) {\n const normalized = normalizeEntityTypeDescriptor(descriptor);\n this.entityTypeDescriptors.set(normalized.id, normalized);\n }\n\n this.instrumentRepositories();\n }\n\n dispose(): void {\n for (const unsubscribe of this.unsubscribeInstrumentation.splice(0)) {\n unsubscribe();\n }\n }\n\n getEntityUpdateCounts(target: IEntityProxy | EntityUid): EntityUpdateCounts {\n const entityUid = isProxy(target) ? target.entityUid : target;\n return this.updateCounts.get(entityUid) ?? { removes: 0, updates: 0 };\n }\n\n getEntitiesInScope(scopeId: string): IEntity[] {\n return Array.from(this.entityRepository.listAll()).filter((entity) => entity.identity?.model?.scopeId === scopeId);\n }\n\n getEntityTypeDescriptor(idOrEntityType: string | EntityTypeUid): EcsEntityTypeDescriptor | undefined {\n const key = idOrEntityType.toString();\n return (\n this.entityTypeDescriptors.get(key) ??\n Array.from(this.entityTypeDescriptors.values()).find((descriptor) => entityTypeKey(descriptor.entityType) === key)\n );\n }\n\n getEntityTypeDescriptors(): EcsEntityTypeDescriptor[] {\n const descriptors = new Map<string, EcsEntityTypeDescriptor>();\n const explicitEntityTypes = new Set<string>();\n\n for (const descriptor of this.entityTypeDescriptors.values()) {\n descriptors.set(descriptor.id, descriptor);\n explicitEntityTypes.add(entityTypeKey(descriptor.entityType));\n }\n\n for (const entityType of this.systemsModuleRepository.list().keys()) {\n if (!explicitEntityTypes.has(entityTypeKey(entityType))) {\n const descriptor = normalizeEntityTypeDescriptor({ entityType });\n descriptors.set(descriptor.id, descriptor);\n }\n }\n\n for (const entity of this.entityRepository.listAll()) {\n const { entityType } = entity.identity.proxy;\n if (!explicitEntityTypes.has(entityTypeKey(entityType))) {\n const descriptor = normalizeEntityTypeDescriptor({ entityType });\n descriptors.set(descriptor.id, descriptor);\n }\n }\n\n return Array.from(descriptors.values()).sort((a, b) => a.entityType.toString().localeCompare(b.entityType.toString()));\n }\n\n registerEntityTypeDescriptor(descriptor: EcsEntityTypeDescriptor): EcsEntityTypeDescriptor {\n const normalized = normalizeEntityTypeDescriptor(descriptor);\n this.entityTypeDescriptors.set(normalized.id, normalized);\n this.stores.entityTypes.notify();\n return normalized;\n }\n\n getScopes(): EcsScopeSummary[] {\n const entitiesByScope = new Map<string, IEntity[]>();\n\n for (const entity of this.entityRepository.listAll()) {\n const scopeId = entity.identity?.model?.scopeId;\n if (!scopeId) {\n continue;\n }\n\n const entities = entitiesByScope.get(scopeId) ?? [];\n entities.push(entity);\n entitiesByScope.set(scopeId, entities);\n }\n\n for (const scopeId of this.scopedProxies.keys()) {\n if (!entitiesByScope.has(scopeId)) {\n entitiesByScope.set(scopeId, []);\n }\n }\n\n return Array.from(entitiesByScope.entries()).map(([scopeId, entities]) => ({\n scopeId,\n entities,\n scopedProxies: this.scopedProxies.get(scopeId) ?? new Map()\n }));\n }\n\n getEventStream(filter?: EcsEventStreamFilter): EcsEventLogEntry[] {\n const entries = this.eventLog.filter((entry) => {\n if (filter?.type !== undefined && entry.event.data.uid !== filter.type) {\n return false;\n }\n\n if (filter?.scopeId && entry.event.scopeId !== filter.scopeId) {\n return false;\n }\n\n if (filter?.source && !sameProxy(entry.event.origin, filter.source)) {\n return false;\n }\n\n if (filter?.target) {\n const targets = entry.event.target ? [entry.event.target] : entry.targets;\n if (!targets.some((target) => sameProxy(target, filter.target))) {\n return false;\n }\n }\n\n return true;\n });\n\n return filter?.limit ? entries.slice(-filter.limit) : entries;\n }\n\n getMetricEntries(filter?: EcsMetricsFilter): PerformanceTimeEntry[] {\n const entries = this.performanceTimer?.metrics\n ? Array.from(this.performanceTimer.metrics.values()).flat()\n : this.metricEntries;\n\n return entries.filter((entry) => matchesMetric(entry, filter));\n }\n\n getMiddlewareMetrics(filter?: EcsMetricsFilter): MiddlewareMetricsSummary[] {\n const summaries = new Map<string, MiddlewareMetricsSummary>();\n\n for (const entry of this.getMetricEntries(filter)) {\n const ms = entryMs(entry);\n if (ms === undefined) {\n continue;\n }\n\n const category = entry.category ?? PipelineCategory.system;\n const key = `${category}:${entry.name}`;\n const existing = summaries.get(key);\n\n if (existing) {\n existing.count += 1;\n existing.totalMs += ms;\n existing.avgMs = existing.totalMs / existing.count;\n existing.minMs = Math.min(existing.minMs, ms);\n existing.maxMs = Math.max(existing.maxMs, ms);\n existing.lastMs = ms;\n } else {\n summaries.set(key, {\n name: entry.name,\n category,\n count: 1,\n totalMs: ms,\n avgMs: ms,\n minMs: ms,\n maxMs: ms,\n lastMs: ms\n });\n }\n }\n\n return Array.from(summaries.values()).sort((a, b) => b.totalMs - a.totalMs);\n }\n\n getPipelineMetrics(entityType?: EntityTypeUid, phase?: SystemType | string): PipelineMetricsSummary | undefined {\n const entries = this.getMetricEntries({\n category: PipelineCategory.module,\n entityType,\n phase\n });\n const samples = entries.map(entryMs).filter((ms): ms is number => ms !== undefined);\n\n if (!samples.length) {\n return undefined;\n }\n\n const totalMs = samples.reduce((sum, ms) => sum + ms, 0);\n\n return {\n name: [entityType, normalizePhase(phase)].filter(Boolean).join(':') || 'pipeline',\n count: samples.length,\n totalMs,\n avgMs: totalMs / samples.length,\n minMs: Math.min(...samples),\n maxMs: Math.max(...samples),\n lastMs: samples[samples.length - 1],\n samples\n };\n }\n\n getSchedulerSnapshot(): EcsSchedulerSnapshot | undefined {\n if (!this.entityScheduler) {\n return undefined;\n }\n\n return {\n frameSubscriptions: Array.from(this.entityScheduler.frameSubscriptions),\n isPaused: this.entityScheduler.isPaused,\n pendingCount: this.entityScheduler.pendingCount,\n schedules: Array.from(this.entityScheduler.schedules),\n skippedEntityTypes: Array.from(this.entityScheduler.skippedEntityTypes)\n };\n }\n\n getUpdateQueueSnapshot(limit?: number): EcsUpdateQueueSnapshot | undefined {\n if (!this.entityScheduler) {\n return undefined;\n }\n\n const items = this.entityScheduler.inspectDirtyUpdates();\n\n return {\n items: limit ? items.slice(-limit) : items,\n size: this.entityScheduler.dirtyCount\n };\n }\n\n createEntitySpawnUpdate(spawn: EcsEntitySpawnRequest): IEntityUpdate {\n const descriptor = spawn.descriptorId\n ? this.getEntityTypeDescriptor(spawn.descriptorId)\n : this.getEntityTypeDescriptor(spawn.entityType);\n const entityType = descriptor?.entityType ?? spawn.entityType;\n const uid = spawn.uid ?? EcsIdGenerator.entityUid(entityType);\n const scopeId = spawn.scopeId ?? descriptor?.scopeId ?? this.defaultScopeId;\n const modelInput = {\n descriptor: descriptor ?? normalizeEntityTypeDescriptor({ entityType }),\n entityType,\n scopeId,\n uid\n };\n const model: IEntityModel = descriptor?.createModel?.(modelInput) ?? {\n uid,\n scopeId\n };\n const snapshot = descriptor?.createSnapshot?.(modelInput);\n\n return {\n type: EntityUpdateType.update,\n entity: {\n entityType,\n entityUid: model.uid\n },\n model,\n snapshot\n };\n }\n\n enqueueEntitySpawn(spawn: EcsEntitySpawnRequest): IEntityUpdate | undefined {\n if (!this.entityScheduler) {\n return undefined;\n }\n\n const update = this.createEntitySpawnUpdate(spawn);\n this.entityScheduler.enqueue(update);\n return update;\n }\n\n listSystemsModules(): ReadonlyMap<EntityTypeUid, ISystemsModule<IEntity>> {\n return this.systemsModuleRepository.list() as ReadonlyMap<EntityTypeUid, ISystemsModule<IEntity>>;\n }\n\n recordEvent(event: IEntityEvent<IEventData>, targets: readonly IEntityProxy[] = []): void {\n this.eventLog.push({\n event,\n targets,\n recordedAt: Date.now()\n });\n\n if (this.eventLog.length > this.eventLogSize) {\n this.eventLog.splice(0, this.eventLog.length - this.eventLogSize);\n }\n\n this.stores.events.notify();\n }\n\n private bumpUpdate(entityUid: EntityUid, key: keyof EntityUpdateCounts): void {\n const counts = this.updateCounts.get(entityUid) ?? { removes: 0, updates: 0 };\n counts[key] += 1;\n this.updateCounts.set(entityUid, counts);\n this.stores.updates.notify();\n }\n\n private instrumentRepositories(): void {\n this.unsubscribeInstrumentation.push(\n instrumentMethod(this.entityRepository, 'set', (args) => {\n const entity = args[0] as IEntity | undefined;\n if (entity?.identity.proxy) {\n this.bumpUpdate(entity.identity.proxy.entityUid, 'updates');\n }\n this.stores.entities.notify();\n this.stores.entityTypes.notify();\n this.stores.scopes.notify();\n }),\n instrumentMethod(this.entityRepository, 'delete', (args) => {\n const proxy = args[0];\n if (isProxy(proxy)) {\n this.bumpUpdate(proxy.entityUid, 'removes');\n }\n this.stores.entities.notify();\n this.stores.entityTypes.notify();\n this.stores.scopes.notify();\n }),\n instrumentMethod(this.entityRepository, 'clear', () => {\n this.stores.entities.notify();\n this.stores.entityTypes.notify();\n this.stores.scopes.notify();\n }),\n instrumentMethod(this.systemsModuleRepository, 'set', () => {\n this.stores.modules.notify();\n this.stores.entityTypes.notify();\n }),\n instrumentMethod(this.entityProxyRepository, 'register', () => {\n this.stores.proxies.notify();\n }),\n instrumentMethod(this.entityProxyRepository, 'registerMany', () => {\n this.stores.proxies.notify();\n }),\n instrumentMethod(this.entityProxyRepository, 'remove', () => {\n this.stores.proxies.notify();\n }),\n instrumentMethod(this.entityProxyRepository, 'removeAllFor', () => {\n this.stores.proxies.notify();\n }),\n instrumentMethod(this.entityProxyRepository, 'setScopedProxy', (args) => {\n const entity = args[0];\n const scopeId = args[1];\n if (isProxy(entity) && typeof scopeId === 'string') {\n const proxies = this.scopedProxies.get(scopeId) ?? new Map<EntityTypeUid, IEntityProxy>();\n proxies.set(entity.entityType, entity);\n this.scopedProxies.set(scopeId, proxies);\n }\n this.stores.proxies.notify();\n this.stores.scopes.notify();\n }),\n instrumentMethod(this.entityProxyRepository, 'removeScopedProxy', (args) => {\n const entity = args[0];\n const scopeId = args[1];\n if (isProxy(entity) && typeof scopeId === 'string') {\n const proxies = this.scopedProxies.get(scopeId);\n const existing = proxies?.get(entity.entityType);\n if (existing?.entityUid === entity.entityUid) {\n proxies.delete(entity.entityType);\n }\n if (proxies?.size === 0) {\n this.scopedProxies.delete(scopeId);\n }\n }\n this.stores.proxies.notify();\n this.stores.scopes.notify();\n }),\n instrumentMethod(this.entityEventsManager, 'subscribe', () => {\n this.stores.subscriptions.notify();\n }),\n instrumentMethod(this.entityEventsManager, 'unsubscribe', () => {\n this.stores.subscriptions.notify();\n }),\n instrumentMethod(this.entityEventsManager, 'clearSubscriptions', () => {\n this.stores.subscriptions.notify();\n }),\n instrumentMethod(this.entityEventsManager, 'clearSubscriptionsForEntity', () => {\n this.stores.subscriptions.notify();\n }),\n instrumentMethod(this.entityEventsManager, 'clearSubscriptionsForEvent', () => {\n this.stores.subscriptions.notify();\n }),\n instrumentMethod(this.performanceTimer, 'endTimer', (_args, result) => {\n const entry = result as PerformanceTimeEntry | undefined;\n if (!this.performanceTimer?.metrics && entry?.name) {\n this.metricEntries.push(entry);\n }\n this.stores.metrics.notify();\n }),\n instrumentMethod(this.entityScheduler, 'schedule', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'removeSchedule', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'clearSchedules', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'skipEntityType', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'unskipEntityType', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'pause', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'resume', () => {\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'enqueue', () => {\n this.stores.queue.notify();\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'enqueueEvent', () => {\n this.stores.queue.notify();\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'enqueueEvents', () => {\n this.stores.queue.notify();\n this.stores.scheduler.notify();\n }),\n instrumentMethod(this.entityScheduler, 'clearDirtyUpdates', () => {\n this.stores.queue.notify();\n this.stores.scheduler.notify();\n })\n );\n }\n}\n\nexport function createEcsBridge(input: EcsBridgeInput): EcsBridge {\n return new EcsBridge(input);\n}\n","import { PropsWithChildren, useMemo } from 'react';\nimport { EcsBridge } from './ecs-bridge';\nimport {\n EcsCanvasContextOptions,\n EcsFlowContext,\n EcsFlowContextProps\n} from './ecs-flow-context';\n\nexport type EcsCanvasProviderProps = PropsWithChildren<\n EcsCanvasContextOptions & {\n bridge: EcsBridge;\n }\n>;\n\nexport function EcsCanvasProvider({\n bridge,\n children,\n readOnly = false,\n telemetryThresholdMs\n}: Readonly<EcsCanvasProviderProps>) {\n const value = useMemo<EcsFlowContextProps>(() => {\n return Object.assign(bridge, {\n readOnly,\n telemetryThresholdMs\n });\n }, [bridge, readOnly, telemetryThresholdMs]);\n\n return <EcsFlowContext.Provider value={value}>{children}</EcsFlowContext.Provider>;\n}\n"],"mappings":"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"}
|
package/dist/context/index.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as PipelineMetricsSummary, a as EcsFlowContextProps, b as EcsFlowRepository, c as EcsBridgeStore, d as EcsEventStreamFilter, f as EcsMetricsFilter, g as EntityUpdateCounts, h as EcsUpdateQueueSnapshot, i as EcsFlowContext, l as EcsBridgeStoreName, m as EcsScopeSummary, n as EcsCanvasProviderProps, o as EcsBridge, p as EcsSchedulerSnapshot, r as EcsCanvasContextOptions, s as EcsBridgeInput, t as EcsCanvasProvider, u as EcsEventLogEntry, v as TelemetryMetricsSource, y as createEcsBridge } from "../index-
|
|
1
|
+
import { _ as PipelineMetricsSummary, a as EcsFlowContextProps, b as EcsFlowRepository, c as EcsBridgeStore, d as EcsEventStreamFilter, f as EcsMetricsFilter, g as EntityUpdateCounts, h as EcsUpdateQueueSnapshot, i as EcsFlowContext, l as EcsBridgeStoreName, m as EcsScopeSummary, n as EcsCanvasProviderProps, o as EcsBridge, p as EcsSchedulerSnapshot, r as EcsCanvasContextOptions, s as EcsBridgeInput, t as EcsCanvasProvider, u as EcsEventLogEntry, v as TelemetryMetricsSource, y as createEcsBridge } from "../index-DwEO6FDo.cjs";
|
|
2
2
|
export { EcsBridge, EcsBridgeInput, EcsBridgeStore, EcsBridgeStoreName, EcsCanvasContextOptions, EcsCanvasProvider, EcsCanvasProviderProps, EcsEventLogEntry, EcsEventStreamFilter, EcsFlowContext, EcsFlowContextProps, EcsFlowRepository, EcsMetricsFilter, EcsSchedulerSnapshot, EcsScopeSummary, EcsUpdateQueueSnapshot, EntityUpdateCounts, PipelineMetricsSummary, TelemetryMetricsSource, createEcsBridge };
|
package/dist/context/index.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as PipelineMetricsSummary, a as EcsFlowContextProps, b as EcsFlowRepository, c as EcsBridgeStore, d as EcsEventStreamFilter, f as EcsMetricsFilter, g as EntityUpdateCounts, h as EcsUpdateQueueSnapshot, i as EcsFlowContext, l as EcsBridgeStoreName, m as EcsScopeSummary, n as EcsCanvasProviderProps, o as EcsBridge, p as EcsSchedulerSnapshot, r as EcsCanvasContextOptions, s as EcsBridgeInput, t as EcsCanvasProvider, u as EcsEventLogEntry, v as TelemetryMetricsSource, y as createEcsBridge } from "../index-
|
|
1
|
+
import { _ as PipelineMetricsSummary, a as EcsFlowContextProps, b as EcsFlowRepository, c as EcsBridgeStore, d as EcsEventStreamFilter, f as EcsMetricsFilter, g as EntityUpdateCounts, h as EcsUpdateQueueSnapshot, i as EcsFlowContext, l as EcsBridgeStoreName, m as EcsScopeSummary, n as EcsCanvasProviderProps, o as EcsBridge, p as EcsSchedulerSnapshot, r as EcsCanvasContextOptions, s as EcsBridgeInput, t as EcsCanvasProvider, u as EcsEventLogEntry, v as TelemetryMetricsSource, y as createEcsBridge } from "../index-BGxRtxzm.mjs";
|
|
2
2
|
export { EcsBridge, EcsBridgeInput, EcsBridgeStore, EcsBridgeStoreName, EcsCanvasContextOptions, EcsCanvasProvider, EcsCanvasProviderProps, EcsEventLogEntry, EcsEventStreamFilter, EcsFlowContext, EcsFlowContextProps, EcsFlowRepository, EcsMetricsFilter, EcsSchedulerSnapshot, EcsScopeSummary, EcsUpdateQueueSnapshot, EntityUpdateCounts, PipelineMetricsSummary, TelemetryMetricsSource, createEcsBridge };
|
package/dist/context/index.mjs
CHANGED
|
@@ -133,7 +133,6 @@ var EcsBridge = class {
|
|
|
133
133
|
entityProxyRepository;
|
|
134
134
|
entityRepository;
|
|
135
135
|
entityScheduler;
|
|
136
|
-
entityUpdateQueue;
|
|
137
136
|
performanceTimer;
|
|
138
137
|
stores;
|
|
139
138
|
systemsModuleRepository;
|
|
@@ -151,7 +150,6 @@ var EcsBridge = class {
|
|
|
151
150
|
this.entityProxyRepository = input.entityProxyRepository;
|
|
152
151
|
this.entityRepository = input.entityRepository;
|
|
153
152
|
this.entityScheduler = input.entityScheduler;
|
|
154
|
-
this.entityUpdateQueue = input.entityUpdateQueue;
|
|
155
153
|
this.defaultScopeId = input.defaultScopeId;
|
|
156
154
|
this.performanceTimer = input.performanceTimer;
|
|
157
155
|
this.systemsModuleRepository = input.systemsModuleRepository;
|
|
@@ -204,7 +202,7 @@ var EcsBridge = class {
|
|
|
204
202
|
descriptors.set(descriptor.id, descriptor);
|
|
205
203
|
}
|
|
206
204
|
for (const entity of this.entityRepository.listAll()) {
|
|
207
|
-
const { entityType } = entity.
|
|
205
|
+
const { entityType } = entity.identity.proxy;
|
|
208
206
|
if (!explicitEntityTypes.has(entityTypeKey(entityType))) {
|
|
209
207
|
const descriptor = normalizeEntityTypeDescriptor({ entityType });
|
|
210
208
|
descriptors.set(descriptor.id, descriptor);
|
|
@@ -307,11 +305,11 @@ var EcsBridge = class {
|
|
|
307
305
|
};
|
|
308
306
|
}
|
|
309
307
|
getUpdateQueueSnapshot(limit) {
|
|
310
|
-
if (!this.
|
|
311
|
-
const items = this.
|
|
308
|
+
if (!this.entityScheduler) return;
|
|
309
|
+
const items = this.entityScheduler.inspectDirtyUpdates();
|
|
312
310
|
return {
|
|
313
311
|
items: limit ? items.slice(-limit) : items,
|
|
314
|
-
size: this.
|
|
312
|
+
size: this.entityScheduler.dirtyCount
|
|
315
313
|
};
|
|
316
314
|
}
|
|
317
315
|
createEntitySpawnUpdate(spawn) {
|
|
@@ -341,9 +339,9 @@ var EcsBridge = class {
|
|
|
341
339
|
};
|
|
342
340
|
}
|
|
343
341
|
enqueueEntitySpawn(spawn) {
|
|
344
|
-
if (!this.
|
|
342
|
+
if (!this.entityScheduler) return;
|
|
345
343
|
const update = this.createEntitySpawnUpdate(spawn);
|
|
346
|
-
this.
|
|
344
|
+
this.entityScheduler.enqueue(update);
|
|
347
345
|
return update;
|
|
348
346
|
}
|
|
349
347
|
listSystemsModules() {
|
|
@@ -370,7 +368,7 @@ var EcsBridge = class {
|
|
|
370
368
|
instrumentRepositories() {
|
|
371
369
|
this.unsubscribeInstrumentation.push(instrumentMethod(this.entityRepository, "set", (args) => {
|
|
372
370
|
const entity = args[0];
|
|
373
|
-
if (entity?.
|
|
371
|
+
if (entity?.identity.proxy) this.bumpUpdate(entity.identity.proxy.entityUid, "updates");
|
|
374
372
|
this.stores.entities.notify();
|
|
375
373
|
this.stores.entityTypes.notify();
|
|
376
374
|
this.stores.scopes.notify();
|
|
@@ -431,9 +429,9 @@ var EcsBridge = class {
|
|
|
431
429
|
this.stores.metrics.notify();
|
|
432
430
|
}), instrumentMethod(this.entityScheduler, "schedule", () => {
|
|
433
431
|
this.stores.scheduler.notify();
|
|
434
|
-
}), instrumentMethod(this.entityScheduler, "
|
|
432
|
+
}), instrumentMethod(this.entityScheduler, "removeSchedule", () => {
|
|
435
433
|
this.stores.scheduler.notify();
|
|
436
|
-
}), instrumentMethod(this.entityScheduler, "
|
|
434
|
+
}), instrumentMethod(this.entityScheduler, "clearSchedules", () => {
|
|
437
435
|
this.stores.scheduler.notify();
|
|
438
436
|
}), instrumentMethod(this.entityScheduler, "skipEntityType", () => {
|
|
439
437
|
this.stores.scheduler.notify();
|
|
@@ -443,12 +441,18 @@ var EcsBridge = class {
|
|
|
443
441
|
this.stores.scheduler.notify();
|
|
444
442
|
}), instrumentMethod(this.entityScheduler, "resume", () => {
|
|
445
443
|
this.stores.scheduler.notify();
|
|
446
|
-
}), instrumentMethod(this.
|
|
444
|
+
}), instrumentMethod(this.entityScheduler, "enqueue", () => {
|
|
447
445
|
this.stores.queue.notify();
|
|
448
|
-
|
|
446
|
+
this.stores.scheduler.notify();
|
|
447
|
+
}), instrumentMethod(this.entityScheduler, "enqueueEvent", () => {
|
|
449
448
|
this.stores.queue.notify();
|
|
450
|
-
|
|
449
|
+
this.stores.scheduler.notify();
|
|
450
|
+
}), instrumentMethod(this.entityScheduler, "enqueueEvents", () => {
|
|
451
451
|
this.stores.queue.notify();
|
|
452
|
+
this.stores.scheduler.notify();
|
|
453
|
+
}), instrumentMethod(this.entityScheduler, "clearDirtyUpdates", () => {
|
|
454
|
+
this.stores.queue.notify();
|
|
455
|
+
this.stores.scheduler.notify();
|
|
452
456
|
}));
|
|
453
457
|
}
|
|
454
458
|
};
|