@alife-sdk/core 0.1.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/LICENSE +21 -0
- package/README.md +283 -0
- package/dist/ai/DangerManager.d.ts +71 -0
- package/dist/ai/DangerManager.d.ts.map +1 -0
- package/dist/ai/DangerManager.js +176 -0
- package/dist/ai/DangerManager.js.map +1 -0
- package/dist/ai/GOAPAction.d.ts +45 -0
- package/dist/ai/GOAPAction.d.ts.map +1 -0
- package/dist/ai/GOAPAction.js +32 -0
- package/dist/ai/GOAPAction.js.map +1 -0
- package/dist/ai/GOAPPlanner.d.ts +80 -0
- package/dist/ai/GOAPPlanner.d.ts.map +1 -0
- package/dist/ai/GOAPPlanner.js +259 -0
- package/dist/ai/GOAPPlanner.js.map +1 -0
- package/dist/ai/IStateHandler.d.ts +8 -0
- package/dist/ai/IStateHandler.d.ts.map +1 -0
- package/dist/ai/IStateHandler.js +8 -0
- package/dist/ai/IStateHandler.js.map +1 -0
- package/dist/ai/MemorySystem.d.ts +94 -0
- package/dist/ai/MemorySystem.d.ts.map +1 -0
- package/dist/ai/MemorySystem.js +207 -0
- package/dist/ai/MemorySystem.js.map +1 -0
- package/dist/ai/StateMachine.d.ts +49 -0
- package/dist/ai/StateMachine.d.ts.map +1 -0
- package/dist/ai/StateMachine.js +83 -0
- package/dist/ai/StateMachine.js.map +1 -0
- package/dist/ai/WorldState.d.ts +48 -0
- package/dist/ai/WorldState.d.ts.map +1 -0
- package/dist/ai/WorldState.js +93 -0
- package/dist/ai/WorldState.js.map +1 -0
- package/dist/ai/index.d.ts +10 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +8 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/combat/DamageInstance.d.ts +26 -0
- package/dist/combat/DamageInstance.d.ts.map +1 -0
- package/dist/combat/DamageInstance.js +25 -0
- package/dist/combat/DamageInstance.js.map +1 -0
- package/dist/combat/MoraleStateMachine.d.ts +53 -0
- package/dist/combat/MoraleStateMachine.d.ts.map +1 -0
- package/dist/combat/MoraleStateMachine.js +84 -0
- package/dist/combat/MoraleStateMachine.js.map +1 -0
- package/dist/combat/index.d.ts +5 -0
- package/dist/combat/index.d.ts.map +1 -0
- package/dist/combat/index.js +3 -0
- package/dist/combat/index.js.map +1 -0
- package/dist/config/ALifeConfig.d.ts +131 -0
- package/dist/config/ALifeConfig.d.ts.map +1 -0
- package/dist/config/ALifeConfig.js +82 -0
- package/dist/config/ALifeConfig.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/ALifeKernel.d.ts +163 -0
- package/dist/core/ALifeKernel.d.ts.map +1 -0
- package/dist/core/ALifeKernel.js +542 -0
- package/dist/core/ALifeKernel.js.map +1 -0
- package/dist/core/Clock.d.ts +123 -0
- package/dist/core/Clock.d.ts.map +1 -0
- package/dist/core/Clock.js +228 -0
- package/dist/core/Clock.js.map +1 -0
- package/dist/core/DevToolsInspector.d.ts +53 -0
- package/dist/core/DevToolsInspector.d.ts.map +1 -0
- package/dist/core/DevToolsInspector.js +8 -0
- package/dist/core/DevToolsInspector.js.map +1 -0
- package/dist/core/Diagnostics.d.ts +64 -0
- package/dist/core/Diagnostics.d.ts.map +1 -0
- package/dist/core/Diagnostics.js +107 -0
- package/dist/core/Diagnostics.js.map +1 -0
- package/dist/core/ISerializable.d.ts +12 -0
- package/dist/core/ISerializable.d.ts.map +1 -0
- package/dist/core/ISerializable.js +2 -0
- package/dist/core/ISerializable.js.map +1 -0
- package/dist/core/PortRegistry.d.ts +57 -0
- package/dist/core/PortRegistry.d.ts.map +1 -0
- package/dist/core/PortRegistry.js +72 -0
- package/dist/core/PortRegistry.js.map +1 -0
- package/dist/core/PortTokens.d.ts +39 -0
- package/dist/core/PortTokens.d.ts.map +1 -0
- package/dist/core/PortTokens.js +39 -0
- package/dist/core/PortTokens.js.map +1 -0
- package/dist/core/SpatialGrid.d.ts +114 -0
- package/dist/core/SpatialGrid.d.ts.map +1 -0
- package/dist/core/SpatialGrid.js +258 -0
- package/dist/core/SpatialGrid.js.map +1 -0
- package/dist/core/Vec2.d.ts +34 -0
- package/dist/core/Vec2.d.ts.map +1 -0
- package/dist/core/Vec2.js +52 -0
- package/dist/core/Vec2.js.map +1 -0
- package/dist/core/math/CatmullRom.d.ts +20 -0
- package/dist/core/math/CatmullRom.d.ts.map +1 -0
- package/dist/core/math/CatmullRom.js +37 -0
- package/dist/core/math/CatmullRom.js.map +1 -0
- package/dist/core/math/index.d.ts +6 -0
- package/dist/core/math/index.d.ts.map +1 -0
- package/dist/core/math/index.js +5 -0
- package/dist/core/math/index.js.map +1 -0
- package/dist/core/math/intersects.d.ts +32 -0
- package/dist/core/math/intersects.d.ts.map +1 -0
- package/dist/core/math/intersects.js +92 -0
- package/dist/core/math/intersects.js.map +1 -0
- package/dist/core/math/utils.d.ts +5 -0
- package/dist/core/math/utils.d.ts.map +1 -0
- package/dist/core/math/utils.js +13 -0
- package/dist/core/math/utils.js.map +1 -0
- package/dist/entity/IComponent.d.ts +17 -0
- package/dist/entity/IComponent.d.ts.map +1 -0
- package/dist/entity/IComponent.js +2 -0
- package/dist/entity/IComponent.js.map +1 -0
- package/dist/entity/IEntity.d.ts +33 -0
- package/dist/entity/IEntity.d.ts.map +1 -0
- package/dist/entity/IEntity.js +2 -0
- package/dist/entity/IEntity.js.map +1 -0
- package/dist/entity/index.d.ts +3 -0
- package/dist/entity/index.d.ts.map +1 -0
- package/dist/entity/index.js +2 -0
- package/dist/entity/index.js.map +1 -0
- package/dist/events/ALifeEvents.d.ts +241 -0
- package/dist/events/ALifeEvents.d.ts.map +1 -0
- package/dist/events/ALifeEvents.js +53 -0
- package/dist/events/ALifeEvents.js.map +1 -0
- package/dist/events/EventBus.d.ts +52 -0
- package/dist/events/EventBus.d.ts.map +1 -0
- package/dist/events/EventBus.js +129 -0
- package/dist/events/EventBus.js.map +1 -0
- package/dist/events/index.d.ts +4 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +4 -0
- package/dist/events/index.js.map +1 -0
- package/dist/faction/Faction.d.ts +53 -0
- package/dist/faction/Faction.d.ts.map +1 -0
- package/dist/faction/Faction.js +101 -0
- package/dist/faction/Faction.js.map +1 -0
- package/dist/faction/FactionBuilder.d.ts +32 -0
- package/dist/faction/FactionBuilder.d.ts.map +1 -0
- package/dist/faction/FactionBuilder.js +80 -0
- package/dist/faction/FactionBuilder.js.map +1 -0
- package/dist/faction/ImmunityProfile.d.ts +24 -0
- package/dist/faction/ImmunityProfile.d.ts.map +1 -0
- package/dist/faction/ImmunityProfile.js +43 -0
- package/dist/faction/ImmunityProfile.js.map +1 -0
- package/dist/faction/index.d.ts +6 -0
- package/dist/faction/index.d.ts.map +1 -0
- package/dist/faction/index.js +5 -0
- package/dist/faction/index.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/logger/ILogEntry.d.ts +16 -0
- package/dist/logger/ILogEntry.d.ts.map +1 -0
- package/dist/logger/ILogEntry.js +2 -0
- package/dist/logger/ILogEntry.js.map +1 -0
- package/dist/logger/LogChannel.d.ts +27 -0
- package/dist/logger/LogChannel.d.ts.map +1 -0
- package/dist/logger/LogChannel.js +26 -0
- package/dist/logger/LogChannel.js.map +1 -0
- package/dist/logger/LogLevel.d.ts +10 -0
- package/dist/logger/LogLevel.d.ts.map +1 -0
- package/dist/logger/LogLevel.js +9 -0
- package/dist/logger/LogLevel.js.map +1 -0
- package/dist/logger/Logger.d.ts +56 -0
- package/dist/logger/Logger.d.ts.map +1 -0
- package/dist/logger/Logger.js +106 -0
- package/dist/logger/Logger.js.map +1 -0
- package/dist/logger/index.d.ts +8 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +5 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/movement/MonsterHome.d.ts +49 -0
- package/dist/movement/MonsterHome.d.ts.map +1 -0
- package/dist/movement/MonsterHome.js +75 -0
- package/dist/movement/MonsterHome.js.map +1 -0
- package/dist/movement/PatrolRoute.d.ts +99 -0
- package/dist/movement/PatrolRoute.d.ts.map +1 -0
- package/dist/movement/PatrolRoute.js +141 -0
- package/dist/movement/PatrolRoute.js.map +1 -0
- package/dist/movement/index.d.ts +5 -0
- package/dist/movement/index.d.ts.map +1 -0
- package/dist/movement/index.js +4 -0
- package/dist/movement/index.js.map +1 -0
- package/dist/navigation/LevelGraph.d.ts +78 -0
- package/dist/navigation/LevelGraph.d.ts.map +1 -0
- package/dist/navigation/LevelGraph.js +268 -0
- package/dist/navigation/LevelGraph.js.map +1 -0
- package/dist/navigation/NPCGraphMover.d.ts +87 -0
- package/dist/navigation/NPCGraphMover.d.ts.map +1 -0
- package/dist/navigation/NPCGraphMover.js +193 -0
- package/dist/navigation/NPCGraphMover.js.map +1 -0
- package/dist/navigation/index.d.ts +5 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +4 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/plugins/AnomaliesPlugin.d.ts +26 -0
- package/dist/plugins/AnomaliesPlugin.d.ts.map +1 -0
- package/dist/plugins/AnomaliesPlugin.js +30 -0
- package/dist/plugins/AnomaliesPlugin.js.map +1 -0
- package/dist/plugins/CombatSchemaPlugin.d.ts +35 -0
- package/dist/plugins/CombatSchemaPlugin.d.ts.map +1 -0
- package/dist/plugins/CombatSchemaPlugin.js +44 -0
- package/dist/plugins/CombatSchemaPlugin.js.map +1 -0
- package/dist/plugins/FactionsPlugin.d.ts +26 -0
- package/dist/plugins/FactionsPlugin.d.ts.map +1 -0
- package/dist/plugins/FactionsPlugin.js +30 -0
- package/dist/plugins/FactionsPlugin.js.map +1 -0
- package/dist/plugins/IALifePlugin.d.ts +91 -0
- package/dist/plugins/IALifePlugin.d.ts.map +1 -0
- package/dist/plugins/IALifePlugin.js +2 -0
- package/dist/plugins/IALifePlugin.js.map +1 -0
- package/dist/plugins/MonstersPlugin.d.ts +26 -0
- package/dist/plugins/MonstersPlugin.d.ts.map +1 -0
- package/dist/plugins/MonstersPlugin.js +30 -0
- package/dist/plugins/MonstersPlugin.js.map +1 -0
- package/dist/plugins/NPCTypesPlugin.d.ts +26 -0
- package/dist/plugins/NPCTypesPlugin.d.ts.map +1 -0
- package/dist/plugins/NPCTypesPlugin.js +30 -0
- package/dist/plugins/NPCTypesPlugin.js.map +1 -0
- package/dist/plugins/PluginToken.d.ts +26 -0
- package/dist/plugins/PluginToken.d.ts.map +1 -0
- package/dist/plugins/PluginToken.js +22 -0
- package/dist/plugins/PluginToken.js.map +1 -0
- package/dist/plugins/SocialPlugin.d.ts +14 -0
- package/dist/plugins/SocialPlugin.d.ts.map +1 -0
- package/dist/plugins/SocialPlugin.js +16 -0
- package/dist/plugins/SocialPlugin.js.map +1 -0
- package/dist/plugins/SpawnPlugin.d.ts +15 -0
- package/dist/plugins/SpawnPlugin.d.ts.map +1 -0
- package/dist/plugins/SpawnPlugin.js +26 -0
- package/dist/plugins/SpawnPlugin.js.map +1 -0
- package/dist/plugins/SquadPlugin.d.ts +14 -0
- package/dist/plugins/SquadPlugin.d.ts.map +1 -0
- package/dist/plugins/SquadPlugin.js +16 -0
- package/dist/plugins/SquadPlugin.js.map +1 -0
- package/dist/plugins/SurgePlugin.d.ts +20 -0
- package/dist/plugins/SurgePlugin.d.ts.map +1 -0
- package/dist/plugins/SurgePlugin.js +22 -0
- package/dist/plugins/SurgePlugin.js.map +1 -0
- package/dist/plugins/TradePlugin.d.ts +16 -0
- package/dist/plugins/TradePlugin.d.ts.map +1 -0
- package/dist/plugins/TradePlugin.js +18 -0
- package/dist/plugins/TradePlugin.js.map +1 -0
- package/dist/plugins/index.d.ts +11 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +10 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/pluginNames.d.ts +37 -0
- package/dist/plugins/pluginNames.d.ts.map +1 -0
- package/dist/plugins/pluginNames.js +28 -0
- package/dist/plugins/pluginNames.js.map +1 -0
- package/dist/plugins/presets.d.ts +31 -0
- package/dist/plugins/presets.d.ts.map +1 -0
- package/dist/plugins/presets.js +50 -0
- package/dist/plugins/presets.js.map +1 -0
- package/dist/ports/IDataLoader.d.ts +38 -0
- package/dist/ports/IDataLoader.d.ts.map +1 -0
- package/dist/ports/IDataLoader.js +12 -0
- package/dist/ports/IDataLoader.js.map +1 -0
- package/dist/ports/IEntityAdapter.d.ts +73 -0
- package/dist/ports/IEntityAdapter.d.ts.map +1 -0
- package/dist/ports/IEntityAdapter.js +36 -0
- package/dist/ports/IEntityAdapter.js.map +1 -0
- package/dist/ports/IEntityFactory.d.ts +66 -0
- package/dist/ports/IEntityFactory.d.ts.map +1 -0
- package/dist/ports/IEntityFactory.js +21 -0
- package/dist/ports/IEntityFactory.js.map +1 -0
- package/dist/ports/ILogger.d.ts +29 -0
- package/dist/ports/ILogger.d.ts.map +1 -0
- package/dist/ports/ILogger.js +2 -0
- package/dist/ports/ILogger.js.map +1 -0
- package/dist/ports/IPlayerPositionProvider.d.ts +20 -0
- package/dist/ports/IPlayerPositionProvider.d.ts.map +1 -0
- package/dist/ports/IPlayerPositionProvider.js +11 -0
- package/dist/ports/IPlayerPositionProvider.js.map +1 -0
- package/dist/ports/IRandom.d.ts +25 -0
- package/dist/ports/IRandom.d.ts.map +1 -0
- package/dist/ports/IRandom.js +39 -0
- package/dist/ports/IRandom.js.map +1 -0
- package/dist/ports/IRuntimeClock.d.ts +18 -0
- package/dist/ports/IRuntimeClock.d.ts.map +1 -0
- package/dist/ports/IRuntimeClock.js +2 -0
- package/dist/ports/IRuntimeClock.js.map +1 -0
- package/dist/ports/index.d.ts +12 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +5 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/registry/AIStateRegistry.d.ts +42 -0
- package/dist/registry/AIStateRegistry.d.ts.map +1 -0
- package/dist/registry/AIStateRegistry.js +27 -0
- package/dist/registry/AIStateRegistry.js.map +1 -0
- package/dist/registry/AnomalyTypeRegistry.d.ts +21 -0
- package/dist/registry/AnomalyTypeRegistry.d.ts.map +1 -0
- package/dist/registry/AnomalyTypeRegistry.js +20 -0
- package/dist/registry/AnomalyTypeRegistry.js.map +1 -0
- package/dist/registry/BehaviorSchemeRegistry.d.ts +21 -0
- package/dist/registry/BehaviorSchemeRegistry.d.ts.map +1 -0
- package/dist/registry/BehaviorSchemeRegistry.js +24 -0
- package/dist/registry/BehaviorSchemeRegistry.js.map +1 -0
- package/dist/registry/DamageTypeRegistry.d.ts +17 -0
- package/dist/registry/DamageTypeRegistry.d.ts.map +1 -0
- package/dist/registry/DamageTypeRegistry.js +24 -0
- package/dist/registry/DamageTypeRegistry.js.map +1 -0
- package/dist/registry/FactionRegistry.d.ts +41 -0
- package/dist/registry/FactionRegistry.d.ts.map +1 -0
- package/dist/registry/FactionRegistry.js +29 -0
- package/dist/registry/FactionRegistry.js.map +1 -0
- package/dist/registry/MonsterRegistry.d.ts +44 -0
- package/dist/registry/MonsterRegistry.d.ts.map +1 -0
- package/dist/registry/MonsterRegistry.js +43 -0
- package/dist/registry/MonsterRegistry.js.map +1 -0
- package/dist/registry/NPCTypeRegistry.d.ts +34 -0
- package/dist/registry/NPCTypeRegistry.d.ts.map +1 -0
- package/dist/registry/NPCTypeRegistry.js +20 -0
- package/dist/registry/NPCTypeRegistry.js.map +1 -0
- package/dist/registry/Registry.d.ts +44 -0
- package/dist/registry/Registry.d.ts.map +1 -0
- package/dist/registry/Registry.js +80 -0
- package/dist/registry/Registry.js.map +1 -0
- package/dist/registry/TaskTypeRegistry.d.ts +17 -0
- package/dist/registry/TaskTypeRegistry.d.ts.map +1 -0
- package/dist/registry/TaskTypeRegistry.js +16 -0
- package/dist/registry/TaskTypeRegistry.js.map +1 -0
- package/dist/registry/index.d.ts +19 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +11 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/schema/index.d.ts +3 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +3 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/validators.d.ts +32 -0
- package/dist/schema/validators.d.ts.map +1 -0
- package/dist/schema/validators.js +249 -0
- package/dist/schema/validators.js.map +1 -0
- package/dist/spawn/SpawnRegistry.d.ts +48 -0
- package/dist/spawn/SpawnRegistry.d.ts.map +1 -0
- package/dist/spawn/SpawnRegistry.js +141 -0
- package/dist/spawn/SpawnRegistry.js.map +1 -0
- package/dist/spawn/index.d.ts +3 -0
- package/dist/spawn/index.d.ts.map +1 -0
- package/dist/spawn/index.js +3 -0
- package/dist/spawn/index.js.map +1 -0
- package/dist/terrain/SmartTerrain.d.ts +119 -0
- package/dist/terrain/SmartTerrain.d.ts.map +1 -0
- package/dist/terrain/SmartTerrain.js +124 -0
- package/dist/terrain/SmartTerrain.js.map +1 -0
- package/dist/terrain/TerrainBuilder.d.ts +44 -0
- package/dist/terrain/TerrainBuilder.d.ts.map +1 -0
- package/dist/terrain/TerrainBuilder.js +112 -0
- package/dist/terrain/TerrainBuilder.js.map +1 -0
- package/dist/terrain/Zone.d.ts +25 -0
- package/dist/terrain/Zone.d.ts.map +1 -0
- package/dist/terrain/Zone.js +29 -0
- package/dist/terrain/Zone.js.map +1 -0
- package/dist/terrain/index.d.ts +6 -0
- package/dist/terrain/index.d.ts.map +1 -0
- package/dist/terrain/index.js +5 -0
- package/dist/terrain/index.js.map +1 -0
- package/dist/time/TimeManager.d.ts +21 -0
- package/dist/time/TimeManager.d.ts.map +1 -0
- package/dist/time/TimeManager.js +41 -0
- package/dist/time/TimeManager.js.map +1 -0
- package/dist/time/index.d.ts +3 -0
- package/dist/time/index.d.ts.map +1 -0
- package/dist/time/index.js +2 -0
- package/dist/time/index.js.map +1 -0
- package/package.json +119 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImmunityProfile.js","sourceRoot":"","sources":["../../src/faction/ImmunityProfile.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAgC;IAEhC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEtC,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAChE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;YAC1C,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAwB,EACxB,YAAoB;IAEpB,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,OAAwB,EACxB,YAAoB;IAEpB,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACxD,OAAO,UAAU,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AACvC,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Faction } from './Faction';
|
|
2
|
+
export type { IFactionThresholds, IFactionState } from './Faction';
|
|
3
|
+
export { FactionBuilder } from './FactionBuilder';
|
|
4
|
+
export type { ImmunityProfile } from './ImmunityProfile';
|
|
5
|
+
export { createImmunityProfile, getResistance, applyDamageReduction } from './ImmunityProfile';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/faction/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/faction/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export { ALifeKernel, KERNEL_STATE_VERSION } from './core/ALifeKernel';
|
|
2
|
+
export type { IALifeKernelConfig, IALifeKernelOptions, IALifeKernelState, IPluginStateCapsule, StateMigration } from './core/ALifeKernel';
|
|
3
|
+
export { DEFAULT_DEVTOOLS_CONFIG } from './core/DevToolsInspector';
|
|
4
|
+
export type { IDevToolsSnapshot, IDevToolsConfig } from './core/DevToolsInspector';
|
|
5
|
+
export { PortRegistry, createPortToken } from './core/PortRegistry';
|
|
6
|
+
export type { PortToken } from './core/PortRegistry';
|
|
7
|
+
export { Ports, REQUIRED_PORTS } from './core/PortTokens';
|
|
8
|
+
export { DiagnosticsCollector, ALifeValidationError } from './core/Diagnostics';
|
|
9
|
+
export type { IDiagnostic, DiagnosticSeverity } from './core/Diagnostics';
|
|
10
|
+
export { Clock } from './core/Clock';
|
|
11
|
+
export type { IClockConfig, IClockState } from './core/Clock';
|
|
12
|
+
export { SpatialGrid } from './core/SpatialGrid';
|
|
13
|
+
export type { IRect } from './core/SpatialGrid';
|
|
14
|
+
export type { ISerializable } from './core/ISerializable';
|
|
15
|
+
export * from './core/math/index';
|
|
16
|
+
export * from './events/index';
|
|
17
|
+
export * from './registry/index';
|
|
18
|
+
export * from './entity/index';
|
|
19
|
+
export * from './faction/index';
|
|
20
|
+
export * from './combat/index';
|
|
21
|
+
export * from './terrain/index';
|
|
22
|
+
export * from './movement/index';
|
|
23
|
+
export * from './spawn/index';
|
|
24
|
+
export * from './ai/index';
|
|
25
|
+
export * from './logger/index';
|
|
26
|
+
export * from './ports/index';
|
|
27
|
+
export * from './plugins/index';
|
|
28
|
+
export * from './schema/index';
|
|
29
|
+
export * from './config/index';
|
|
30
|
+
export * from './time/index';
|
|
31
|
+
export * from './navigation/index';
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC1I,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACpE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// @alife-sdk/core — public API barrel
|
|
2
|
+
// Framework-agnostic A-Life simulation and AI decision-making system.
|
|
3
|
+
// This package has zero external dependencies.
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Core (root-only, not a sub-path)
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
export { ALifeKernel, KERNEL_STATE_VERSION } from './core/ALifeKernel';
|
|
8
|
+
export { DEFAULT_DEVTOOLS_CONFIG } from './core/DevToolsInspector';
|
|
9
|
+
export { PortRegistry, createPortToken } from './core/PortRegistry';
|
|
10
|
+
export { Ports, REQUIRED_PORTS } from './core/PortTokens';
|
|
11
|
+
export { DiagnosticsCollector, ALifeValidationError } from './core/Diagnostics';
|
|
12
|
+
export { Clock } from './core/Clock';
|
|
13
|
+
export { SpatialGrid } from './core/SpatialGrid';
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Sub-path re-exports
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
export * from './core/math/index';
|
|
18
|
+
export * from './events/index';
|
|
19
|
+
export * from './registry/index';
|
|
20
|
+
export * from './entity/index';
|
|
21
|
+
export * from './faction/index';
|
|
22
|
+
export * from './combat/index';
|
|
23
|
+
export * from './terrain/index';
|
|
24
|
+
export * from './movement/index';
|
|
25
|
+
export * from './spawn/index';
|
|
26
|
+
export * from './ai/index';
|
|
27
|
+
export * from './logger/index';
|
|
28
|
+
export * from './ports/index';
|
|
29
|
+
export * from './plugins/index';
|
|
30
|
+
export * from './schema/index';
|
|
31
|
+
export * from './config/index';
|
|
32
|
+
export * from './time/index';
|
|
33
|
+
export * from './navigation/index';
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,sEAAsE;AACtE,+CAA+C;AAE/C,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAC9E,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAC9E,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { LogChannel } from './LogChannel';
|
|
2
|
+
import type { LogLevel } from './LogLevel';
|
|
3
|
+
/** Single log record stored in the Logger ring buffer and forwarded to ILogOutput sinks. */
|
|
4
|
+
export interface ILogEntry {
|
|
5
|
+
/** Wall-clock milliseconds at the time of logging. */
|
|
6
|
+
readonly timestamp: number;
|
|
7
|
+
/** Subsystem that produced this entry (e.g. 'alife', 'combat', 'ai'). */
|
|
8
|
+
readonly channel: LogChannel;
|
|
9
|
+
/** Severity: DEBUG(0) < INFO(1) < WARN(2) < ERROR(3) < NONE(4). */
|
|
10
|
+
readonly level: LogLevel;
|
|
11
|
+
/** Human-readable log message. */
|
|
12
|
+
readonly message: string;
|
|
13
|
+
/** Optional structured payload for diagnostics. */
|
|
14
|
+
readonly data?: unknown;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=ILogEntry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ILogEntry.d.ts","sourceRoot":"","sources":["../../src/logger/ILogEntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,4FAA4F;AAC5F,MAAM,WAAW,SAAS;IACxB,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,kCAAkC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ILogEntry.js","sourceRoot":"","sources":["../../src/logger/ILogEntry.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Predefined subsystem channel names for log routing and filtering. Extensible via `(string & {})`. */
|
|
2
|
+
export declare const LogChannel: {
|
|
3
|
+
readonly ALIFE: "alife";
|
|
4
|
+
readonly SQUAD: "squad";
|
|
5
|
+
readonly SPAWN: "spawn";
|
|
6
|
+
readonly SURGE: "surge";
|
|
7
|
+
readonly TIME: "time";
|
|
8
|
+
readonly AI: "ai";
|
|
9
|
+
readonly MOVEMENT: "movement";
|
|
10
|
+
readonly PERCEPTION: "perception";
|
|
11
|
+
readonly NPC_BRAIN: "npc_brain";
|
|
12
|
+
readonly COMBAT: "combat";
|
|
13
|
+
readonly COVER: "cover";
|
|
14
|
+
readonly FACTION: "faction";
|
|
15
|
+
readonly STATE: "state";
|
|
16
|
+
readonly SAVE: "save";
|
|
17
|
+
readonly TRADE: "trade";
|
|
18
|
+
readonly ANOMALY: "anomaly";
|
|
19
|
+
readonly INVENTORY: "inventory";
|
|
20
|
+
readonly INPUT: "input";
|
|
21
|
+
readonly AUDIO: "audio";
|
|
22
|
+
readonly QUEST: "quest";
|
|
23
|
+
readonly SCENE: "scene";
|
|
24
|
+
readonly GOAP: "goap";
|
|
25
|
+
};
|
|
26
|
+
export type LogChannel = (typeof LogChannel)[keyof typeof LogChannel];
|
|
27
|
+
//# sourceMappingURL=LogChannel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogChannel.d.ts","sourceRoot":"","sources":["../../src/logger/LogChannel.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;CAuBb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Predefined subsystem channel names for log routing and filtering. Extensible via `(string & {})`. */
|
|
2
|
+
export const LogChannel = {
|
|
3
|
+
ALIFE: 'alife',
|
|
4
|
+
SQUAD: 'squad',
|
|
5
|
+
SPAWN: 'spawn',
|
|
6
|
+
SURGE: 'surge',
|
|
7
|
+
TIME: 'time',
|
|
8
|
+
AI: 'ai',
|
|
9
|
+
MOVEMENT: 'movement',
|
|
10
|
+
PERCEPTION: 'perception',
|
|
11
|
+
NPC_BRAIN: 'npc_brain',
|
|
12
|
+
COMBAT: 'combat',
|
|
13
|
+
COVER: 'cover',
|
|
14
|
+
FACTION: 'faction',
|
|
15
|
+
STATE: 'state',
|
|
16
|
+
SAVE: 'save',
|
|
17
|
+
TRADE: 'trade',
|
|
18
|
+
ANOMALY: 'anomaly',
|
|
19
|
+
INVENTORY: 'inventory',
|
|
20
|
+
INPUT: 'input',
|
|
21
|
+
AUDIO: 'audio',
|
|
22
|
+
QUEST: 'quest',
|
|
23
|
+
SCENE: 'scene',
|
|
24
|
+
GOAP: 'goap',
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=LogChannel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogChannel.js","sourceRoot":"","sources":["../../src/logger/LogChannel.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,IAAI;IACR,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;CACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Severity levels for log filtering. Higher numeric value = higher severity. */
|
|
2
|
+
export declare const LogLevel: {
|
|
3
|
+
readonly DEBUG: 0;
|
|
4
|
+
readonly INFO: 1;
|
|
5
|
+
readonly WARN: 2;
|
|
6
|
+
readonly ERROR: 3;
|
|
7
|
+
readonly NONE: 4;
|
|
8
|
+
};
|
|
9
|
+
export type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];
|
|
10
|
+
//# sourceMappingURL=LogLevel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogLevel.d.ts","sourceRoot":"","sources":["../../src/logger/LogLevel.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogLevel.js","sourceRoot":"","sources":["../../src/logger/LogLevel.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { ILogEntry } from './ILogEntry';
|
|
2
|
+
import type { ILogger, ILogOutput } from '../ports/ILogger';
|
|
3
|
+
export interface ILoggerConfig {
|
|
4
|
+
/** Maximum number of entries in the ring buffer. Default 1024. */
|
|
5
|
+
readonly bufferSize?: number;
|
|
6
|
+
/** Output sinks that receive every accepted log entry. Default [] (silent). */
|
|
7
|
+
readonly outputs?: ILogOutput[];
|
|
8
|
+
/** Minimum severity level. Messages below this level are discarded. Default DEBUG. */
|
|
9
|
+
readonly level?: number;
|
|
10
|
+
/**
|
|
11
|
+
* If set, only messages on these channels pass through.
|
|
12
|
+
* `undefined` means all channels are accepted.
|
|
13
|
+
*/
|
|
14
|
+
readonly enabledChannels?: string[];
|
|
15
|
+
/** Injectable clock for deterministic tests. Default `Date.now`. */
|
|
16
|
+
readonly timestampFn?: () => number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Ring-buffer logger with injectable outputs.
|
|
20
|
+
*
|
|
21
|
+
* NOT a singleton -- each consumer creates its own instance with an explicit
|
|
22
|
+
* config. This makes the logger fully testable and free of global state.
|
|
23
|
+
*/
|
|
24
|
+
export declare class Logger implements ILogger {
|
|
25
|
+
private readonly buffer;
|
|
26
|
+
private readonly capacity;
|
|
27
|
+
private writeHead;
|
|
28
|
+
private storedCount;
|
|
29
|
+
private readonly level;
|
|
30
|
+
private readonly enabledChannels;
|
|
31
|
+
private readonly outputs;
|
|
32
|
+
private readonly timestampFn;
|
|
33
|
+
constructor(config?: ILoggerConfig);
|
|
34
|
+
debug(channel: string, message: string, data?: unknown): void;
|
|
35
|
+
info(channel: string, message: string, data?: unknown): void;
|
|
36
|
+
warn(channel: string, message: string, data?: unknown): void;
|
|
37
|
+
error(channel: string, message: string, data?: unknown): void;
|
|
38
|
+
/**
|
|
39
|
+
* Read entries from the ring buffer, optionally filtered.
|
|
40
|
+
*
|
|
41
|
+
* Entries are returned in chronological order (oldest first).
|
|
42
|
+
* When `limit` is provided, only the *most recent* matching entries are
|
|
43
|
+
* returned -- still sorted chronologically.
|
|
44
|
+
*/
|
|
45
|
+
getEntries(filter?: {
|
|
46
|
+
channel?: string;
|
|
47
|
+
level?: number;
|
|
48
|
+
limit?: number;
|
|
49
|
+
}): ILogEntry[];
|
|
50
|
+
/** Remove all entries from the ring buffer. */
|
|
51
|
+
clear(): void;
|
|
52
|
+
/** Number of entries currently stored in the buffer. */
|
|
53
|
+
get entryCount(): number;
|
|
54
|
+
private write;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/logger/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAO5D,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IAChC,sFAAsF;IACtF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,oEAAoE;IACpE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;CACrC;AAMD;;;;;GAKG;AACH,qBAAa,MAAO,YAAW,OAAO;IAGpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAK;IAIxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;gBAI/B,MAAM,GAAE,aAAkB;IAetC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM7D;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,CAAC,EAAE;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,SAAS,EAAE;IAwBf,+CAA+C;IAC/C,KAAK,IAAI,IAAI;IAMb,wDAAwD;IACxD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAID,OAAO,CAAC,KAAK;CAgCd"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { LogLevel } from './LogLevel';
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Logger
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
/**
|
|
6
|
+
* Ring-buffer logger with injectable outputs.
|
|
7
|
+
*
|
|
8
|
+
* NOT a singleton -- each consumer creates its own instance with an explicit
|
|
9
|
+
* config. This makes the logger fully testable and free of global state.
|
|
10
|
+
*/
|
|
11
|
+
export class Logger {
|
|
12
|
+
// -- Constructor ----------------------------------------------------------
|
|
13
|
+
constructor(config = {}) {
|
|
14
|
+
this.writeHead = 0;
|
|
15
|
+
this.storedCount = 0;
|
|
16
|
+
this.capacity = config.bufferSize ?? 1024;
|
|
17
|
+
this.outputs = config.outputs ?? [];
|
|
18
|
+
this.level = (config.level ?? LogLevel.DEBUG);
|
|
19
|
+
this.enabledChannels =
|
|
20
|
+
config.enabledChannels !== undefined
|
|
21
|
+
? new Set(config.enabledChannels)
|
|
22
|
+
: undefined;
|
|
23
|
+
this.timestampFn = config.timestampFn ?? Date.now;
|
|
24
|
+
this.buffer = new Array(this.capacity);
|
|
25
|
+
}
|
|
26
|
+
// -- ILogger methods ------------------------------------------------------
|
|
27
|
+
debug(channel, message, data) {
|
|
28
|
+
this.write(LogLevel.DEBUG, channel, message, data);
|
|
29
|
+
}
|
|
30
|
+
info(channel, message, data) {
|
|
31
|
+
this.write(LogLevel.INFO, channel, message, data);
|
|
32
|
+
}
|
|
33
|
+
warn(channel, message, data) {
|
|
34
|
+
this.write(LogLevel.WARN, channel, message, data);
|
|
35
|
+
}
|
|
36
|
+
error(channel, message, data) {
|
|
37
|
+
this.write(LogLevel.ERROR, channel, message, data);
|
|
38
|
+
}
|
|
39
|
+
// -- Query ----------------------------------------------------------------
|
|
40
|
+
/**
|
|
41
|
+
* Read entries from the ring buffer, optionally filtered.
|
|
42
|
+
*
|
|
43
|
+
* Entries are returned in chronological order (oldest first).
|
|
44
|
+
* When `limit` is provided, only the *most recent* matching entries are
|
|
45
|
+
* returned -- still sorted chronologically.
|
|
46
|
+
*/
|
|
47
|
+
getEntries(filter) {
|
|
48
|
+
const result = [];
|
|
49
|
+
const count = this.storedCount;
|
|
50
|
+
const start = count < this.capacity
|
|
51
|
+
? 0
|
|
52
|
+
: this.writeHead; // oldest entry position
|
|
53
|
+
for (let i = 0; i < count; i++) {
|
|
54
|
+
const idx = (start + i) % this.capacity;
|
|
55
|
+
const entry = this.buffer[idx];
|
|
56
|
+
if (entry === undefined)
|
|
57
|
+
continue;
|
|
58
|
+
if (filter?.channel !== undefined && entry.channel !== filter.channel)
|
|
59
|
+
continue;
|
|
60
|
+
if (filter?.level !== undefined && entry.level < filter.level)
|
|
61
|
+
continue;
|
|
62
|
+
result.push(entry);
|
|
63
|
+
}
|
|
64
|
+
if (filter?.limit !== undefined && filter.limit > 0 && result.length > filter.limit) {
|
|
65
|
+
return result.slice(result.length - filter.limit);
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
/** Remove all entries from the ring buffer. */
|
|
70
|
+
clear() {
|
|
71
|
+
this.buffer.fill(undefined);
|
|
72
|
+
this.writeHead = 0;
|
|
73
|
+
this.storedCount = 0;
|
|
74
|
+
}
|
|
75
|
+
/** Number of entries currently stored in the buffer. */
|
|
76
|
+
get entryCount() {
|
|
77
|
+
return this.storedCount;
|
|
78
|
+
}
|
|
79
|
+
// -- Internal -------------------------------------------------------------
|
|
80
|
+
write(level, channel, message, data) {
|
|
81
|
+
// Level gate
|
|
82
|
+
if (level < this.level)
|
|
83
|
+
return;
|
|
84
|
+
// Channel gate
|
|
85
|
+
if (this.enabledChannels !== undefined && !this.enabledChannels.has(channel))
|
|
86
|
+
return;
|
|
87
|
+
const entry = {
|
|
88
|
+
timestamp: this.timestampFn(),
|
|
89
|
+
channel: channel,
|
|
90
|
+
level,
|
|
91
|
+
message,
|
|
92
|
+
data,
|
|
93
|
+
};
|
|
94
|
+
// Store in ring buffer (overwrite oldest when full)
|
|
95
|
+
this.buffer[this.writeHead] = entry;
|
|
96
|
+
this.writeHead = (this.writeHead + 1) % this.capacity;
|
|
97
|
+
if (this.storedCount < this.capacity) {
|
|
98
|
+
this.storedCount++;
|
|
99
|
+
}
|
|
100
|
+
// Forward to all outputs
|
|
101
|
+
for (const output of this.outputs) {
|
|
102
|
+
output.write(entry);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=Logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/logger/Logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { Logger } from './Logger';
|
|
2
|
+
export type { ILoggerConfig } from './Logger';
|
|
3
|
+
/** @deprecated Use ILoggerConfig */
|
|
4
|
+
export type { ILoggerConfig as LoggerConfig } from './Logger';
|
|
5
|
+
export { LogLevel } from './LogLevel';
|
|
6
|
+
export { LogChannel } from './LogChannel';
|
|
7
|
+
export type { ILogEntry } from './ILogEntry';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,oCAAoC;AACpC,YAAY,EAAE,aAAa,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 3-radius lair territory system for monsters.
|
|
3
|
+
*
|
|
4
|
+
* A MonsterHome captures the three concentric radii that define how a mutant
|
|
5
|
+
* relates to its anchor point:
|
|
6
|
+
*
|
|
7
|
+
* inner -- personal space; any intruder triggers an immediate attack.
|
|
8
|
+
* patrol -- roam zone; the monster circles within this radius when idle.
|
|
9
|
+
* outer -- hard pursuit boundary; the monster breaks off chase beyond this.
|
|
10
|
+
*
|
|
11
|
+
* All distance checks use squared math for performance (no Math.sqrt in
|
|
12
|
+
* the hot path). getRandomPatrolPoint() uses polar sampling for uniform
|
|
13
|
+
* distribution over the patrol annulus.
|
|
14
|
+
*/
|
|
15
|
+
import type { Vec2 } from '../core/Vec2';
|
|
16
|
+
import type { IRandom } from '../ports/IRandom';
|
|
17
|
+
export interface ILairConfig {
|
|
18
|
+
readonly anchor: Vec2;
|
|
19
|
+
readonly innerRadius: number;
|
|
20
|
+
readonly patrolRadius: number;
|
|
21
|
+
readonly outerRadius: number;
|
|
22
|
+
}
|
|
23
|
+
export declare class MonsterHome {
|
|
24
|
+
readonly anchor: Vec2;
|
|
25
|
+
private readonly innerRadius;
|
|
26
|
+
private readonly patrolRadius;
|
|
27
|
+
private readonly outerRadius;
|
|
28
|
+
private readonly innerSq;
|
|
29
|
+
private readonly patrolSq;
|
|
30
|
+
private readonly outerSq;
|
|
31
|
+
private readonly random;
|
|
32
|
+
constructor(config: ILairConfig, random?: IRandom);
|
|
33
|
+
/** True when the point is within the inner (personal space) radius. */
|
|
34
|
+
isInInnerZone(point: Vec2): boolean;
|
|
35
|
+
/** True when the point is within the patrol radius but outside the inner zone. */
|
|
36
|
+
isInPatrolZone(point: Vec2): boolean;
|
|
37
|
+
/** True when the point is within the outer radius. */
|
|
38
|
+
isInOuterZone(point: Vec2): boolean;
|
|
39
|
+
/** True when the point is beyond the outer radius -- out of territory. */
|
|
40
|
+
isOutOfTerritory(point: Vec2): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Random point within the patrol annulus (between inner and patrol radii)
|
|
43
|
+
* using polar sampling for uniform distribution.
|
|
44
|
+
*/
|
|
45
|
+
getRandomPatrolPoint(): Vec2;
|
|
46
|
+
/** Squared Euclidean distance from anchor to the given point. */
|
|
47
|
+
distanceFromAnchorSq(point: Vec2): number;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=MonsterHome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonsterHome.d.ts","sourceRoot":"","sources":["../../src/movement/MonsterHome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAOhD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAMD,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAErB,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO;IAmBjD,uEAAuE;IACvE,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAInC,kFAAkF;IAClF,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAKpC,sDAAsD;IACtD,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAInC,0EAA0E;IAC1E,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAQtC;;;OAGG;IACH,oBAAoB,IAAI,IAAI;IAgB5B,iEAAiE;IACjE,oBAAoB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;CAG1C"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 3-radius lair territory system for monsters.
|
|
3
|
+
*
|
|
4
|
+
* A MonsterHome captures the three concentric radii that define how a mutant
|
|
5
|
+
* relates to its anchor point:
|
|
6
|
+
*
|
|
7
|
+
* inner -- personal space; any intruder triggers an immediate attack.
|
|
8
|
+
* patrol -- roam zone; the monster circles within this radius when idle.
|
|
9
|
+
* outer -- hard pursuit boundary; the monster breaks off chase beyond this.
|
|
10
|
+
*
|
|
11
|
+
* All distance checks use squared math for performance (no Math.sqrt in
|
|
12
|
+
* the hot path). getRandomPatrolPoint() uses polar sampling for uniform
|
|
13
|
+
* distribution over the patrol annulus.
|
|
14
|
+
*/
|
|
15
|
+
import { distanceSq } from '../core/Vec2';
|
|
16
|
+
import { DefaultRandom } from '../ports/IRandom';
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// MonsterHome
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
export class MonsterHome {
|
|
21
|
+
constructor(config, random) {
|
|
22
|
+
this.anchor = config.anchor;
|
|
23
|
+
// Enforce minimum radius hierarchy: inner < patrol < outer.
|
|
24
|
+
this.innerRadius = Math.max(1, config.innerRadius);
|
|
25
|
+
this.patrolRadius = Math.max(this.innerRadius + 1, config.patrolRadius);
|
|
26
|
+
this.outerRadius = Math.max(this.patrolRadius + 1, config.outerRadius);
|
|
27
|
+
this.innerSq = this.innerRadius * this.innerRadius;
|
|
28
|
+
this.patrolSq = this.patrolRadius * this.patrolRadius;
|
|
29
|
+
this.outerSq = this.outerRadius * this.outerRadius;
|
|
30
|
+
this.random = random ?? new DefaultRandom();
|
|
31
|
+
}
|
|
32
|
+
// -----------------------------------------------------------------------
|
|
33
|
+
// Zone checks
|
|
34
|
+
// -----------------------------------------------------------------------
|
|
35
|
+
/** True when the point is within the inner (personal space) radius. */
|
|
36
|
+
isInInnerZone(point) {
|
|
37
|
+
return this.distanceFromAnchorSq(point) <= this.innerSq;
|
|
38
|
+
}
|
|
39
|
+
/** True when the point is within the patrol radius but outside the inner zone. */
|
|
40
|
+
isInPatrolZone(point) {
|
|
41
|
+
const dsq = this.distanceFromAnchorSq(point);
|
|
42
|
+
return dsq > this.innerSq && dsq <= this.patrolSq;
|
|
43
|
+
}
|
|
44
|
+
/** True when the point is within the outer radius. */
|
|
45
|
+
isInOuterZone(point) {
|
|
46
|
+
return this.distanceFromAnchorSq(point) <= this.outerSq;
|
|
47
|
+
}
|
|
48
|
+
/** True when the point is beyond the outer radius -- out of territory. */
|
|
49
|
+
isOutOfTerritory(point) {
|
|
50
|
+
return this.distanceFromAnchorSq(point) > this.outerSq;
|
|
51
|
+
}
|
|
52
|
+
// -----------------------------------------------------------------------
|
|
53
|
+
// Patrol target
|
|
54
|
+
// -----------------------------------------------------------------------
|
|
55
|
+
/**
|
|
56
|
+
* Random point within the patrol annulus (between inner and patrol radii)
|
|
57
|
+
* using polar sampling for uniform distribution.
|
|
58
|
+
*/
|
|
59
|
+
getRandomPatrolPoint() {
|
|
60
|
+
const angle = this.random.next() * Math.PI * 2;
|
|
61
|
+
const dist = Math.sqrt(this.random.next() * (this.patrolSq - this.innerSq) + this.innerSq);
|
|
62
|
+
return {
|
|
63
|
+
x: this.anchor.x + Math.cos(angle) * dist,
|
|
64
|
+
y: this.anchor.y + Math.sin(angle) * dist,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// -----------------------------------------------------------------------
|
|
68
|
+
// Distance
|
|
69
|
+
// -----------------------------------------------------------------------
|
|
70
|
+
/** Squared Euclidean distance from anchor to the given point. */
|
|
71
|
+
distanceFromAnchorSq(point) {
|
|
72
|
+
return distanceSq(this.anchor, point);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=MonsterHome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonsterHome.js","sourceRoot":"","sources":["../../src/movement/MonsterHome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAajD,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,OAAO,WAAW;IAatB,YAAY,MAAmB,EAAE,MAAgB;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE5B,4DAA4D;QAC5D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAEnD,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;IAC9C,CAAC;IAED,0EAA0E;IAC1E,cAAc;IACd,0EAA0E;IAE1E,uEAAuE;IACvE,aAAa,CAAC,KAAW;QACvB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;IAC1D,CAAC;IAED,kFAAkF;IAClF,cAAc,CAAC,KAAW;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;IACpD,CAAC;IAED,sDAAsD;IACtD,aAAa,CAAC,KAAW;QACvB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;IAC1D,CAAC;IAED,0EAA0E;IAC1E,gBAAgB,CAAC,KAAW;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;IACzD,CAAC;IAED,0EAA0E;IAC1E,gBAAgB;IAChB,0EAA0E;IAE1E;;;OAGG;IACH,oBAAoB;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CACpB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CACnE,CAAC;QAEF,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI;YACzC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI;SAC1C,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,WAAW;IACX,0EAA0E;IAE1E,iEAAiE;IACjE,oBAAoB,CAAC,KAAW;QAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;CACF"}
|