@adobe/data 0.8.6 → 0.9.1
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/debug-type-test.js +12 -0
- package/dist/debug-type-test.js.map +1 -0
- package/dist/ecs/database/archetype-type-safety-test.d.ts +21 -0
- package/dist/ecs/database/archetype-type-safety-test.js +36 -0
- package/dist/ecs/database/archetype-type-safety-test.js.map +1 -0
- package/dist/ecs/database/calculate-system-order.d.ts +28 -0
- package/dist/ecs/database/calculate-system-order.js +239 -0
- package/dist/ecs/database/calculate-system-order.js.map +1 -0
- package/dist/ecs/database/calculate-system-order.test.js +396 -0
- package/dist/ecs/database/calculate-system-order.test.js.map +1 -0
- package/dist/ecs/database/create-database-schema-test.js +150 -0
- package/dist/ecs/database/create-database-schema-test.js.map +1 -0
- package/dist/ecs/database/create-plugin-v2.d.ts +79 -0
- package/dist/ecs/database/create-plugin-v2.js +68 -0
- package/dist/ecs/database/create-plugin-v2.js.map +1 -0
- package/dist/ecs/database/create-plugin-v2.test.js +362 -0
- package/dist/ecs/database/create-plugin-v2.test.js.map +1 -0
- package/dist/ecs/database/create-plugin.OLD.d.ts +138 -0
- package/dist/ecs/database/create-plugin.OLD.js +59 -0
- package/dist/ecs/database/create-plugin.OLD.js.map +1 -0
- package/dist/ecs/database/create-plugin.d.ts +69 -0
- package/dist/ecs/database/create-plugin.js +47 -0
- package/dist/ecs/database/create-plugin.js.map +1 -0
- package/dist/ecs/database/create-plugin.test.js +437 -0
- package/dist/ecs/database/create-plugin.test.js.map +1 -0
- package/dist/ecs/database/database-schema/create-database-schema.d.ts +3 -3
- package/dist/ecs/database/database-schema/database-schema.d.ts +4 -3
- package/dist/ecs/database/database-with-systems.test.js +292 -0
- package/dist/ecs/database/database-with-systems.test.js.map +1 -0
- package/dist/ecs/database/database.d.ts +63 -18
- package/dist/ecs/database/database.js +42 -0
- package/dist/ecs/database/database.js.map +1 -1
- package/dist/ecs/database/database.plugin.create.test.OLD.js +601 -0
- package/dist/ecs/database/database.plugin.create.test.OLD.js.map +1 -0
- package/dist/ecs/database/database.plugin.create.test.js +321 -0
- package/dist/ecs/database/database.plugin.create.test.js.map +1 -0
- package/dist/ecs/database/database.plugin.test.js +90 -0
- package/dist/ecs/database/database.plugin.test.js.map +1 -0
- package/dist/ecs/database/database.test copy.js +199 -0
- package/dist/ecs/database/database.test copy.js.map +1 -0
- package/dist/ecs/database/database.test.js +200 -0
- package/dist/ecs/database/database.test.js.map +1 -0
- package/dist/ecs/database/multi-param-inference-poc.test.js +96 -0
- package/dist/ecs/database/multi-param-inference-poc.test.js.map +1 -0
- package/dist/ecs/database/observe-select-entities.test.js +3 -3
- package/dist/ecs/database/observe-select-entities.test.js.map +1 -1
- package/dist/ecs/database/observed/create-observed-database.js +6 -1
- package/dist/ecs/database/observed/create-observed-database.js.map +1 -1
- package/dist/ecs/database/observed/create-observed-database.test.js +105 -49
- package/dist/ecs/database/observed/create-observed-database.test.js.map +1 -1
- package/dist/ecs/database/observed/observed-database.d.ts +3 -0
- package/dist/ecs/database/old-plugin-create-with-dependencies-array.d.ts +61 -0
- package/dist/ecs/database/old-plugin-create-with-dependencies-array.js +76 -0
- package/dist/ecs/database/old-plugin-create-with-dependencies-array.js.map +1 -0
- package/dist/ecs/database/overload-inference-poc.test.js +109 -0
- package/dist/ecs/database/overload-inference-poc.test.js.map +1 -0
- package/dist/ecs/database/public/create-database-from-schema.test.js +153 -0
- package/dist/ecs/database/public/create-database-from-schema.test.js.map +1 -0
- package/dist/ecs/database/public/create-database.d.ts +18 -2
- package/dist/ecs/database/public/create-database.js +283 -79
- package/dist/ecs/database/public/create-database.js.map +1 -1
- package/dist/ecs/database/public/create-database.test.js +178 -47
- package/dist/ecs/database/public/create-database.test.js.map +1 -1
- package/dist/ecs/database/reconciling/create-reconciling-database.d.ts +2 -2
- package/dist/ecs/database/reconciling/create-reconciling-database.js +7 -2
- package/dist/ecs/database/reconciling/create-reconciling-database.js.map +1 -1
- package/dist/ecs/database/reconciling/create-reconciling-database.test.js +18 -9
- package/dist/ecs/database/reconciling/create-reconciling-database.test.js.map +1 -1
- package/dist/ecs/database/reconciling/reconciling-database.d.ts +5 -3
- package/dist/ecs/database/schedule-type-check-demo.d.ts +10 -0
- package/dist/ecs/database/schedule-type-check-demo.js +71 -0
- package/dist/ecs/database/schedule-type-check-demo.js.map +1 -0
- package/dist/ecs/database/test-archetype-validation.d.ts +9 -0
- package/dist/ecs/database/test-archetype-validation.js +14 -0
- package/dist/ecs/database/test-archetype-validation.js.map +1 -0
- package/dist/ecs/database/test-exactkeys.js +17 -0
- package/dist/ecs/database/test-exactkeys.js.map +1 -0
- package/dist/ecs/database/transactional-store/{coalesce-transactions.js → coalesce-actions.js} +1 -1
- package/dist/ecs/database/transactional-store/coalesce-actions.js.map +1 -0
- package/dist/ecs/database/transactional-store/coalesce-actions.test.js +433 -0
- package/dist/ecs/database/transactional-store/coalesce-actions.test.js.map +1 -0
- package/dist/ecs/database/transactional-store/coalesce-transactions.test.js +3 -3
- package/dist/ecs/database/transactional-store/coalesce-transactions.test.js.map +1 -1
- package/dist/ecs/database/transactional-store/create-transactional-store.js +18 -2
- package/dist/ecs/database/transactional-store/create-transactional-store.js.map +1 -1
- package/dist/ecs/database/transactional-store/create-transactional-store.test.js +13 -3
- package/dist/ecs/database/transactional-store/create-transactional-store.test.js.map +1 -1
- package/dist/ecs/database/transactional-store/transactional-store.d.ts +2 -0
- package/dist/ecs/database/type-inference-demo.d.ts +75 -0
- package/dist/ecs/database/type-inference-demo.js +73 -0
- package/dist/ecs/database/type-inference-demo.js.map +1 -0
- package/dist/ecs/database/type-inference-example.js +2 -0
- package/dist/ecs/database/type-inference-example.js.map +1 -0
- package/dist/ecs/database/type-inference-poc.test.js +73 -0
- package/dist/ecs/database/type-inference-poc.test.js.map +1 -0
- package/dist/ecs/index.d.ts +3 -0
- package/dist/ecs/index.js +2 -0
- package/dist/ecs/index.js.map +1 -1
- package/dist/ecs/plugins/index.d.ts +1 -0
- package/dist/{math/i32/constants → ecs/plugins}/index.js +1 -1
- package/dist/ecs/plugins/index.js.map +1 -0
- package/dist/ecs/plugins/scheduler/create-scheduler-plugin.d.ts +8 -0
- package/dist/ecs/plugins/scheduler/create-scheduler-plugin.js +54 -0
- package/dist/ecs/plugins/scheduler/create-scheduler-plugin.js.map +1 -0
- package/dist/ecs/plugins/scheduler/create-scheduler-plugin.test.js +198 -0
- package/dist/ecs/plugins/scheduler/create-scheduler-plugin.test.js.map +1 -0
- package/dist/ecs/plugins/scheduler/index.d.ts +1 -0
- package/dist/{math/f32/constants → ecs/plugins/scheduler}/index.js +1 -1
- package/dist/ecs/plugins/scheduler/index.js.map +1 -0
- package/dist/ecs/plugins/scheduler/scheduler.d.ts +7 -0
- package/dist/ecs/plugins/scheduler/scheduler.js +52 -0
- package/dist/ecs/plugins/scheduler/scheduler.js.map +1 -0
- package/dist/ecs/plugins/scheduler/type-inference-test.js +2 -0
- package/dist/ecs/plugins/scheduler/type-inference-test.js.map +1 -0
- package/dist/ecs/store/action-functions.d.ts +21 -0
- package/dist/ecs/store/action-functions.js +2 -0
- package/dist/ecs/store/action-functions.js.map +1 -0
- package/dist/ecs/store/create-store-schema-test.js +70 -8
- package/dist/ecs/store/create-store-schema-test.js.map +1 -1
- package/dist/ecs/store/entity-functions.d.ts +7 -0
- package/dist/ecs/store/entity-functions.js +2 -0
- package/dist/ecs/store/entity-functions.js.map +1 -0
- package/dist/ecs/store/functions.d.ts +2 -0
- package/dist/ecs/store/functions.js +2 -0
- package/dist/ecs/store/functions.js.map +1 -0
- package/dist/ecs/store/public/create-store.js +9 -8
- package/dist/ecs/store/public/create-store.js.map +1 -1
- package/dist/ecs/store/public/create-store.test.js +5 -0
- package/dist/ecs/store/public/create-store.test.js.map +1 -1
- package/dist/ecs/store/store.d.ts +46 -13
- package/dist/ecs/store/store.js +35 -2
- package/dist/ecs/store/store.js.map +1 -1
- package/dist/ecs/store/store.test.js +211 -0
- package/dist/ecs/store/store.test.js.map +1 -0
- package/dist/ecs/system/system-declaration.d.ts +7 -0
- package/dist/{math/aabb/functions.js → ecs/system/system-declaration.js} +1 -1
- package/dist/ecs/system/system-declaration.js.map +1 -0
- package/dist/ecs/system/system-declarations.d.ts +4 -0
- package/dist/ecs/system/system-declarations.js +23 -0
- package/dist/ecs/system/system-declarations.js.map +1 -0
- package/dist/ecs/system/system-factory/public/create copy.d.ts +12 -0
- package/dist/ecs/system/system-factory/public/create copy.js +8 -0
- package/dist/ecs/system/system-factory/public/create copy.js.map +1 -0
- package/dist/ecs/system/system-factory/public/create.d.ts +12 -0
- package/dist/ecs/system/system-factory/public/create.js +8 -0
- package/dist/ecs/system/system-factory/public/create.js.map +1 -0
- package/dist/ecs/system/system-factory/public/create.test.js +42 -0
- package/dist/ecs/system/system-factory/public/create.test.js.map +1 -0
- package/dist/ecs/system/system-factory/public/index.d.ts +1 -0
- package/dist/ecs/system/system-factory/public/index.js +2 -0
- package/dist/ecs/system/system-factory/public/index.js.map +1 -0
- package/dist/ecs/system/system-factory/system-factory.d.ts +17 -0
- package/dist/ecs/{store/public/schema/schema.js → system/system-factory/system-factory.js} +2 -2
- package/dist/ecs/system/system-factory/system-factory.js.map +1 -0
- package/dist/ecs/system/system-factory.d.ts +9 -0
- package/dist/{math/picking/pick-result.js → ecs/system/system-factory.js} +1 -1
- package/dist/ecs/system/system-factory.js.map +1 -0
- package/dist/ecs/system/system-interface.d.ts +5 -0
- package/dist/ecs/system/system-interface.js +2 -0
- package/dist/ecs/system/system-interface.js.map +1 -0
- package/dist/ecs/system/system.d.ts +4 -0
- package/dist/ecs/{store/constants/types.js → system/system.js} +1 -1
- package/dist/ecs/system/system.js.map +1 -0
- package/dist/ecs/system/systems-type.d.ts +2 -0
- package/dist/ecs/system/systems-type.js +2 -0
- package/dist/ecs/system/systems-type.js.map +1 -0
- package/dist/ecs/system/systems.d.ts +2 -0
- package/dist/ecs/{store/public/types.js → system/systems.js} +1 -1
- package/dist/ecs/system/systems.js.map +1 -0
- package/dist/ecs/system/world-schema/public/create.d.ts +12 -0
- package/dist/ecs/system/world-schema/public/create.js +8 -0
- package/dist/ecs/system/world-schema/public/create.js.map +1 -0
- package/dist/ecs/system/world-schema/public/create.test.js +42 -0
- package/dist/ecs/system/world-schema/public/create.test.js.map +1 -0
- package/dist/ecs/system/world-schema/public/index.d.ts +1 -0
- package/dist/ecs/system/world-schema/public/index.js +2 -0
- package/dist/ecs/system/world-schema/public/index.js.map +1 -0
- package/dist/ecs/system/world-schema/system-factory.d.ts +17 -0
- package/dist/ecs/system/world-schema/system-factory.js +23 -0
- package/dist/ecs/system/world-schema/system-factory.js.map +1 -0
- package/dist/ecs/undo-redo-service/create-undo-redo-service.js +1 -1
- package/dist/ecs/undo-redo-service/create-undo-redo-service.js.map +1 -1
- package/dist/ecs/world/calculate-system-order.d.ts +18 -0
- package/dist/ecs/world/calculate-system-order.js +113 -0
- package/dist/ecs/world/calculate-system-order.js.map +1 -0
- package/dist/ecs/world/calculate-system-order.test.js +168 -0
- package/dist/ecs/world/calculate-system-order.test.js.map +1 -0
- package/dist/ecs/world/create-world-schema-test.js +294 -0
- package/dist/ecs/world/create-world-schema-test.js.map +1 -0
- package/dist/ecs/world/create-world-type-test.d.ts +1 -0
- package/dist/ecs/world/create-world-type-test.js +129 -0
- package/dist/ecs/world/create-world-type-test.js.map +1 -0
- package/dist/ecs/world/create-world.d.ts +17 -5
- package/dist/ecs/world/create-world.js +75 -108
- package/dist/ecs/world/create-world.js.map +1 -1
- package/dist/ecs/world/create-world.test.js +227 -434
- package/dist/ecs/world/create-world.test.js.map +1 -1
- package/dist/ecs/world/public/world-schema/public/create.d.ts +12 -0
- package/dist/ecs/world/public/world-schema/public/create.js +8 -0
- package/dist/ecs/world/public/world-schema/public/create.js.map +1 -0
- package/dist/ecs/world/public/world-schema/public/create.test.d.ts +1 -0
- package/dist/ecs/world/public/world-schema/public/create.test.js +42 -0
- package/dist/ecs/world/public/world-schema/public/create.test.js.map +1 -0
- package/dist/ecs/world/public/world-schema/public/index.d.ts +1 -0
- package/dist/ecs/world/public/world-schema/public/index.js +2 -0
- package/dist/ecs/world/public/world-schema/public/index.js.map +1 -0
- package/dist/ecs/world/public/world-schema/world-schema.d.ts +17 -0
- package/dist/ecs/{store/public/schema/public.js → world/public/world-schema/world-schema.js} +2 -2
- package/dist/ecs/world/public/world-schema/world-schema.js.map +1 -0
- package/dist/ecs/world/system-declaration.d.ts +1 -0
- package/dist/ecs/world/system-declaration.js +23 -0
- package/dist/ecs/world/system-declaration.js.map +1 -0
- package/dist/ecs/world/system-schedule-typing-test.d.ts +1 -0
- package/dist/ecs/world/system-schedule-typing-test.js +83 -0
- package/dist/ecs/world/system-schedule-typing-test.js.map +1 -0
- package/dist/ecs/world/world-schema/public/create.d.ts +12 -0
- package/dist/ecs/world/world-schema/public/create.js +10 -0
- package/dist/ecs/world/world-schema/public/create.js.map +1 -0
- package/dist/ecs/world/world-schema/public/create.test.d.ts +1 -0
- package/dist/ecs/world/world-schema/public/create.test.js +41 -0
- package/dist/ecs/world/world-schema/public/create.test.js.map +1 -0
- package/dist/ecs/world/world-schema/public/index.d.ts +1 -0
- package/dist/ecs/world/world-schema/public/index.js +2 -0
- package/dist/ecs/world/world-schema/public/index.js.map +1 -0
- package/dist/ecs/world/world-schema/system-factory.d.ts +17 -0
- package/dist/ecs/world/world-schema/system-factory.js +23 -0
- package/dist/ecs/world/world-schema/system-factory.js.map +1 -0
- package/dist/ecs/world/world-schema/world-schema.d.ts +17 -16
- package/dist/ecs/world/world-schema/world-schema.js +1 -1
- package/dist/ecs/world/world-schema/world-schema.js.map +1 -1
- package/dist/ecs/world/world.d.ts +85 -10
- package/dist/ecs/world/world.js +80 -1
- package/dist/ecs/world/world.js.map +1 -1
- package/dist/ecs/world/world.test.d.ts +1 -0
- package/dist/ecs/world/world.test.js +176 -0
- package/dist/ecs/world/world.test.js.map +1 -0
- package/dist/lit/hooks/use-drag-transaction.d.ts +1 -1
- package/dist/old-ecs/ecs/ecs.test.js +1 -0
- package/dist/old-ecs/ecs/ecs.test.js.map +1 -1
- package/dist/samples/todo/services/main-service/todo-main-service.d.ts +1 -1
- package/dist/samples/todo/services/state-service/create-todo-database.d.ts +2 -2
- package/dist/samples/todo/services/state-service/create-todo-database.js +2 -2
- package/dist/samples/todo/services/state-service/create-todo-database.js.map +1 -1
- package/dist/samples/todo/services/state-service/transactions/toggle-complete.js +1 -1
- package/dist/samples/todo/services/state-service/transactions/toggle-complete.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/types.d.ts +2 -0
- package/dist/types/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/blob/download-handle.d.ts +0 -4
- package/dist/blob/download-handle.js +0 -2
- package/dist/blob/download-handle.js.map +0 -1
- package/dist/blob/upload-handle.d.ts +0 -4
- package/dist/blob/upload-handle.js +0 -2
- package/dist/blob/upload-handle.js.map +0 -1
- package/dist/ecs/database/create-database.d.ts +0 -7
- package/dist/ecs/database/create-database.js +0 -186
- package/dist/ecs/database/create-database.js.map +0 -1
- package/dist/ecs/database/create-database.test.js +0 -903
- package/dist/ecs/database/create-database.test.js.map +0 -1
- package/dist/ecs/database/replicate.d.ts +0 -9
- package/dist/ecs/database/replicate.js +0 -66
- package/dist/ecs/database/replicate.js.map +0 -1
- package/dist/ecs/database/replicate.test.js +0 -235
- package/dist/ecs/database/replicate.test.js.map +0 -1
- package/dist/ecs/database/transactional-store/coalesce-transactions.js.map +0 -1
- package/dist/ecs/database/transactional-store/entity-id-preservation.test.js +0 -106
- package/dist/ecs/database/transactional-store/entity-id-preservation.test.js.map +0 -1
- package/dist/ecs/entity/entity.d.ts +0 -8
- package/dist/ecs/entity/entity.js +0 -3
- package/dist/ecs/entity/entity.js.map +0 -1
- package/dist/ecs/entity/u32.d.ts +0 -8
- package/dist/ecs/entity/u32.js +0 -24
- package/dist/ecs/entity/u32.js.map +0 -1
- package/dist/ecs/store/constants/functions.d.ts +0 -14
- package/dist/ecs/store/constants/functions.js +0 -31
- package/dist/ecs/store/constants/functions.js.map +0 -1
- package/dist/ecs/store/constants/index.d.ts +0 -2
- package/dist/ecs/store/constants/index.js +0 -24
- package/dist/ecs/store/constants/index.js.map +0 -1
- package/dist/ecs/store/constants/types.d.ts +0 -18
- package/dist/ecs/store/constants/types.js.map +0 -1
- package/dist/ecs/store/create-store.d.ts +0 -8
- package/dist/ecs/store/create-store.js +0 -126
- package/dist/ecs/store/create-store.js.map +0 -1
- package/dist/ecs/store/create-store.test.js +0 -725
- package/dist/ecs/store/create-store.test.js.map +0 -1
- package/dist/ecs/store/public/create-from-schema.d.ts +0 -6
- package/dist/ecs/store/public/create-from-schema.js +0 -26
- package/dist/ecs/store/public/create-from-schema.js.map +0 -1
- package/dist/ecs/store/public/index.d.ts +0 -3
- package/dist/ecs/store/public/index.js +0 -25
- package/dist/ecs/store/public/index.js.map +0 -1
- package/dist/ecs/store/public/readonly.d.ts +0 -19
- package/dist/ecs/store/public/readonly.js +0 -2
- package/dist/ecs/store/public/readonly.js.map +0 -1
- package/dist/ecs/store/public/schema/create-from-schema.d.ts +0 -6
- package/dist/ecs/store/public/schema/create-from-schema.js +0 -26
- package/dist/ecs/store/public/schema/create-from-schema.js.map +0 -1
- package/dist/ecs/store/public/schema/create.d.ts +0 -10
- package/dist/ecs/store/public/schema/create.js +0 -25
- package/dist/ecs/store/public/schema/create.js.map +0 -1
- package/dist/ecs/store/public/schema/createFromSchema.d.ts +0 -6
- package/dist/ecs/store/public/schema/createFromSchema.js +0 -5
- package/dist/ecs/store/public/schema/createFromSchema.js.map +0 -1
- package/dist/ecs/store/public/schema/public.d.ts +0 -1
- package/dist/ecs/store/public/schema/public.js.map +0 -1
- package/dist/ecs/store/public/schema/schema.d.ts +0 -11
- package/dist/ecs/store/public/schema/schema.js.map +0 -1
- package/dist/ecs/store/public/types.d.ts +0 -11
- package/dist/ecs/store/public/types.js.map +0 -1
- package/dist/ecs/store/store-schema/create-store-schema-test.js +0 -33
- package/dist/ecs/store/store-schema/create-store-schema-test.js.map +0 -1
- package/dist/ecs/store/store-schema/create-store-schema.js +0 -45
- package/dist/ecs/store/store-schema/create-store-schema.js.map +0 -1
- package/dist/ecs/store/store-schema/index.js +0 -21
- package/dist/ecs/store/store-schema/index.js.map +0 -1
- package/dist/ecs/store/store-schema/store-schema.js +0 -57
- package/dist/ecs/store/store-schema/store-schema.js.map +0 -1
- package/dist/ecs/world/index.d.ts +0 -5
- package/dist/ecs/world/index.js +0 -27
- package/dist/ecs/world/index.js.map +0 -1
- package/dist/ecs/world/system-phase.d.ts +0 -5
- package/dist/ecs/world/system-phase.js +0 -14
- package/dist/ecs/world/system-phase.js.map +0 -1
- package/dist/ecs/world/system.d.ts +0 -25
- package/dist/ecs/world/system.js +0 -2
- package/dist/ecs/world/system.js.map +0 -1
- package/dist/ecs/world/world-schema/create-world-schema-test.js +0 -55
- package/dist/ecs/world/world-schema/create-world-schema-test.js.map +0 -1
- package/dist/ecs/world/world-schema/create-world-schema.d.ts +0 -19
- package/dist/ecs/world/world-schema/create-world-schema.js +0 -33
- package/dist/ecs/world/world-schema/create-world-schema.js.map +0 -1
- package/dist/ecs/world/world-schema/index.d.ts +0 -2
- package/dist/ecs/world/world-schema/index.js +0 -24
- package/dist/ecs/world/world-schema/index.js.map +0 -1
- package/dist/graphics/camera/camera.d.ts +0 -62
- package/dist/graphics/camera/camera.js +0 -17
- package/dist/graphics/camera/camera.js.map +0 -1
- package/dist/graphics/camera/index.d.ts +0 -4
- package/dist/graphics/camera/index.js +0 -5
- package/dist/graphics/camera/index.js.map +0 -1
- package/dist/graphics/camera/screen-to-world-ray.d.ts +0 -12
- package/dist/graphics/camera/screen-to-world-ray.js +0 -49
- package/dist/graphics/camera/screen-to-world-ray.js.map +0 -1
- package/dist/graphics/camera/screen-to-world-ray.test.js +0 -171
- package/dist/graphics/camera/screen-to-world-ray.test.js.map +0 -1
- package/dist/graphics/camera/to-view-projection.d.ts +0 -3
- package/dist/graphics/camera/to-view-projection.js +0 -8
- package/dist/graphics/camera/to-view-projection.js.map +0 -1
- package/dist/graphics/camera/world-to-screen.d.ts +0 -12
- package/dist/graphics/camera/world-to-screen.js +0 -38
- package/dist/graphics/camera/world-to-screen.js.map +0 -1
- package/dist/graphics/camera/world-to-screen.test.js +0 -124
- package/dist/graphics/camera/world-to-screen.test.js.map +0 -1
- package/dist/graphics/create-struct-gpu-buffer.d.ts +0 -7
- package/dist/graphics/create-struct-gpu-buffer.js +0 -17
- package/dist/graphics/create-struct-gpu-buffer.js.map +0 -1
- package/dist/graphics/extract-wgsl-bindings.d.ts +0 -5
- package/dist/graphics/extract-wgsl-bindings.js +0 -10
- package/dist/graphics/extract-wgsl-bindings.js.map +0 -1
- package/dist/graphics/frame.js +0 -15
- package/dist/graphics/frame.js.map +0 -1
- package/dist/graphics/get-web-gpu-device-and-context.js +0 -24
- package/dist/graphics/get-web-gpu-device-and-context.js.map +0 -1
- package/dist/graphics/graphics-context.js +0 -7
- package/dist/graphics/graphics-context.js.map +0 -1
- package/dist/graphics/index.d.ts +0 -5
- package/dist/graphics/index.js +0 -5
- package/dist/graphics/index.js.map +0 -1
- package/dist/graphics/to-gpu-buffer.d.ts +0 -2
- package/dist/graphics/to-gpu-buffer.js +0 -14
- package/dist/graphics/to-gpu-buffer.js.map +0 -1
- package/dist/internal/array-buffer-like/grow.d.ts +0 -1
- package/dist/internal/array-buffer-like/grow.js +0 -9
- package/dist/internal/array-buffer-like/grow.js.map +0 -1
- package/dist/math/aabb/aabb.d.ts +0 -3
- package/dist/math/aabb/aabb.js +0 -2
- package/dist/math/aabb/aabb.js.map +0 -1
- package/dist/math/aabb/constants/functions.d.ts +0 -15
- package/dist/math/aabb/constants/functions.js +0 -76
- package/dist/math/aabb/constants/functions.js.map +0 -1
- package/dist/math/aabb/constants/index.d.ts +0 -3
- package/dist/math/aabb/constants/index.js +0 -25
- package/dist/math/aabb/constants/index.js.map +0 -1
- package/dist/math/aabb/constants/layout.d.ts +0 -1
- package/dist/math/aabb/constants/layout.js +0 -25
- package/dist/math/aabb/constants/layout.js.map +0 -1
- package/dist/math/aabb/constants/schema.d.ts +0 -33
- package/dist/math/aabb/constants/schema.js +0 -37
- package/dist/math/aabb/constants/schema.js.map +0 -1
- package/dist/math/aabb/functions.js.map +0 -1
- package/dist/math/aabb/lineIntersection.d.ts +0 -10
- package/dist/math/aabb/lineIntersection.js +0 -42
- package/dist/math/aabb/lineIntersection.js.map +0 -1
- package/dist/math/aabb-face/aabb-face.d.ts +0 -4
- package/dist/math/aabb-face/aabb-face.js +0 -23
- package/dist/math/aabb-face/aabb-face.js.map +0 -1
- package/dist/math/aabb-face/aabb-face.test.js +0 -54
- package/dist/math/aabb-face/aabb-face.test.js.map +0 -1
- package/dist/math/aabb-face/constants/functions.d.ts +0 -47
- package/dist/math/aabb-face/constants/functions.js +0 -148
- package/dist/math/aabb-face/constants/functions.js.map +0 -1
- package/dist/math/aabb-face/constants/index.d.ts +0 -2
- package/dist/math/aabb-face/constants/index.js +0 -24
- package/dist/math/aabb-face/constants/index.js.map +0 -1
- package/dist/math/aabb-face/constants/schema.d.ts +0 -5
- package/dist/math/aabb-face/constants/schema.js +0 -27
- package/dist/math/aabb-face/constants/schema.js.map +0 -1
- package/dist/math/aabb-face/face.d.ts +0 -51
- package/dist/math/aabb-face/face.js +0 -110
- package/dist/math/aabb-face/face.js.map +0 -1
- package/dist/math/aabb-face/face.test.js +0 -94
- package/dist/math/aabb-face/face.test.js.map +0 -1
- package/dist/math/aabb-face/functions.d.ts +0 -47
- package/dist/math/aabb-face/functions.js +0 -148
- package/dist/math/aabb-face/functions.js.map +0 -1
- package/dist/math/aabb-face/index.d.ts +0 -4
- package/dist/math/aabb-face/index.js +0 -23
- package/dist/math/aabb-face/index.js.map +0 -1
- package/dist/math/aabb-face/public.d.ts +0 -2
- package/dist/math/aabb-face/public.js +0 -24
- package/dist/math/aabb-face/public.js.map +0 -1
- package/dist/math/aabb-face/schema.d.ts +0 -5
- package/dist/math/aabb-face/schema.js +0 -27
- package/dist/math/aabb-face/schema.js.map +0 -1
- package/dist/math/box/box.d.ts +0 -50
- package/dist/math/box/box.js +0 -23
- package/dist/math/box/box.js.map +0 -1
- package/dist/math/f32/constants/index.d.ts +0 -1
- package/dist/math/f32/constants/index.js.map +0 -1
- package/dist/math/f32/constants/schema.d.ts +0 -5
- package/dist/math/f32/constants/schema.js +0 -24
- package/dist/math/f32/constants/schema.js.map +0 -1
- package/dist/math/f32/f32.d.ts +0 -4
- package/dist/math/f32/f32.js +0 -23
- package/dist/math/f32/f32.js.map +0 -1
- package/dist/math/face/face.d.ts +0 -51
- package/dist/math/face/face.js +0 -110
- package/dist/math/face/face.js.map +0 -1
- package/dist/math/face/face.test.js +0 -94
- package/dist/math/face/face.test.js.map +0 -1
- package/dist/math/i32/constants/index.d.ts +0 -1
- package/dist/math/i32/constants/index.js.map +0 -1
- package/dist/math/i32/constants/schema.d.ts +0 -6
- package/dist/math/i32/constants/schema.js +0 -24
- package/dist/math/i32/constants/schema.js.map +0 -1
- package/dist/math/i32/i32.d.ts +0 -4
- package/dist/math/i32/i32.js +0 -23
- package/dist/math/i32/i32.js.map +0 -1
- package/dist/math/line2/constants/functions.d.ts +0 -5
- package/dist/math/line2/constants/functions.js +0 -61
- package/dist/math/line2/constants/functions.js.map +0 -1
- package/dist/math/line2/constants/index.d.ts +0 -3
- package/dist/math/line2/constants/index.js +0 -25
- package/dist/math/line2/constants/index.js.map +0 -1
- package/dist/math/line2/constants/layout.d.ts +0 -1
- package/dist/math/line2/constants/layout.js +0 -25
- package/dist/math/line2/constants/layout.js.map +0 -1
- package/dist/math/line2/constants/schema.d.ts +0 -33
- package/dist/math/line2/constants/schema.js +0 -37
- package/dist/math/line2/constants/schema.js.map +0 -1
- package/dist/math/line2/line2.d.ts +0 -4
- package/dist/math/line2/line2.js +0 -23
- package/dist/math/line2/line2.js.map +0 -1
- package/dist/math/line3/constants/functions.d.ts +0 -17
- package/dist/math/line3/constants/functions.js +0 -70
- package/dist/math/line3/constants/functions.js.map +0 -1
- package/dist/math/line3/constants/index.d.ts +0 -3
- package/dist/math/line3/constants/index.js +0 -25
- package/dist/math/line3/constants/index.js.map +0 -1
- package/dist/math/line3/constants/layout.d.ts +0 -1
- package/dist/math/line3/constants/layout.js +0 -25
- package/dist/math/line3/constants/layout.js.map +0 -1
- package/dist/math/line3/constants/schema.d.ts +0 -33
- package/dist/math/line3/constants/schema.js +0 -37
- package/dist/math/line3/constants/schema.js.map +0 -1
- package/dist/math/line3/line3.d.ts +0 -4
- package/dist/math/line3/line3.js +0 -23
- package/dist/math/line3/line3.js.map +0 -1
- package/dist/math/mat4x4/constants/functions.d.ts +0 -23
- package/dist/math/mat4x4/constants/functions.js +0 -236
- package/dist/math/mat4x4/constants/functions.js.map +0 -1
- package/dist/math/mat4x4/constants/index.d.ts +0 -3
- package/dist/math/mat4x4/constants/index.js +0 -25
- package/dist/math/mat4x4/constants/index.js.map +0 -1
- package/dist/math/mat4x4/constants/layout.d.ts +0 -1
- package/dist/math/mat4x4/constants/layout.js +0 -25
- package/dist/math/mat4x4/constants/layout.js.map +0 -1
- package/dist/math/mat4x4/constants/schema.d.ts +0 -11
- package/dist/math/mat4x4/constants/schema.js +0 -30
- package/dist/math/mat4x4/constants/schema.js.map +0 -1
- package/dist/math/mat4x4/mat4x4.d.ts +0 -26
- package/dist/math/mat4x4/mat4x4.js +0 -45
- package/dist/math/mat4x4/mat4x4.js.map +0 -1
- package/dist/math/picking/face.js +0 -2
- package/dist/math/picking/face.js.map +0 -1
- package/dist/math/picking/get-closest-entity-to-line.d.ts +0 -4
- package/dist/math/picking/get-closest-entity-to-line.js +0 -30
- package/dist/math/picking/get-closest-entity-to-line.js.map +0 -1
- package/dist/math/picking/get-closest-entity-to-point.d.ts +0 -4
- package/dist/math/picking/get-closest-entity-to-point.js +0 -27
- package/dist/math/picking/get-closest-entity-to-point.js.map +0 -1
- package/dist/math/picking/get-intersecting-entities.d.ts +0 -12
- package/dist/math/picking/get-intersecting-entities.js +0 -15
- package/dist/math/picking/get-intersecting-entities.js.map +0 -1
- package/dist/math/picking/getClosestEntityToLine.d.ts +0 -4
- package/dist/math/picking/getClosestEntityToLine.js +0 -29
- package/dist/math/picking/getClosestEntityToLine.js.map +0 -1
- package/dist/math/picking/getClosestEntityToPoint.d.ts +0 -4
- package/dist/math/picking/getClosestEntityToPoint.js +0 -27
- package/dist/math/picking/getClosestEntityToPoint.js.map +0 -1
- package/dist/math/picking/getIntersectingEntities.d.ts +0 -12
- package/dist/math/picking/getIntersectingEntities.js +0 -15
- package/dist/math/picking/getIntersectingEntities.js.map +0 -1
- package/dist/math/picking/index.d.ts +0 -5
- package/dist/math/picking/index.js +0 -27
- package/dist/math/picking/index.js.map +0 -1
- package/dist/math/picking/pick-from-tables.d.ts +0 -19
- package/dist/math/picking/pick-from-tables.js +0 -63
- package/dist/math/picking/pick-from-tables.js.map +0 -1
- package/dist/math/picking/pick-result.d.ts +0 -12
- package/dist/math/picking/pick-result.js.map +0 -1
- package/dist/math/plane/constants/functions.d.ts +0 -16
- package/dist/math/plane/constants/functions.js +0 -54
- package/dist/math/plane/constants/functions.js.map +0 -1
- package/dist/math/plane/constants/index.d.ts +0 -3
- package/dist/math/plane/constants/index.js +0 -25
- package/dist/math/plane/constants/index.js.map +0 -1
- package/dist/math/plane/constants/layout.d.ts +0 -1
- package/dist/math/plane/constants/layout.js +0 -25
- package/dist/math/plane/constants/layout.js.map +0 -1
- package/dist/math/plane/constants/schema.d.ts +0 -24
- package/dist/math/plane/constants/schema.js +0 -33
- package/dist/math/plane/constants/schema.js.map +0 -1
- package/dist/math/plane/plane.d.ts +0 -4
- package/dist/math/plane/plane.js +0 -23
- package/dist/math/plane/plane.js.map +0 -1
- package/dist/math/quat/constants/index.d.ts +0 -3
- package/dist/math/quat/constants/index.js +0 -25
- package/dist/math/quat/constants/index.js.map +0 -1
- package/dist/math/quat/constants/layout.d.ts +0 -1
- package/dist/math/quat/constants/layout.js +0 -25
- package/dist/math/quat/constants/layout.js.map +0 -1
- package/dist/math/quat/constants/schema.d.ts +0 -11
- package/dist/math/quat/constants/schema.js +0 -30
- package/dist/math/quat/constants/schema.js.map +0 -1
- package/dist/math/quat/quat.d.ts +0 -4
- package/dist/math/quat/quat.js +0 -23
- package/dist/math/quat/quat.js.map +0 -1
- package/dist/math/transform/debug-inverse.js +0 -28
- package/dist/math/transform/debug-inverse.js.map +0 -1
- package/dist/math/transform/debug-quat.js +0 -23
- package/dist/math/transform/debug-quat.js.map +0 -1
- package/dist/math/transform/debug-test.js +0 -34
- package/dist/math/transform/debug-test.js.map +0 -1
- package/dist/math/transform/transform.d.ts +0 -58
- package/dist/math/transform/transform.js +0 -101
- package/dist/math/transform/transform.js.map +0 -1
- package/dist/math/transform/transform.test.js +0 -309
- package/dist/math/transform/transform.test.js.map +0 -1
- package/dist/math/u32/constants/index.d.ts +0 -1
- package/dist/math/u32/constants/index.js +0 -23
- package/dist/math/u32/constants/index.js.map +0 -1
- package/dist/math/u32/constants/schema.d.ts +0 -6
- package/dist/math/u32/constants/schema.js +0 -24
- package/dist/math/u32/constants/schema.js.map +0 -1
- package/dist/math/u32/u32.d.ts +0 -4
- package/dist/math/u32/u32.js +0 -23
- package/dist/math/u32/u32.js.map +0 -1
- package/dist/math/vec2/constants/functions.d.ts +0 -48
- package/dist/math/vec2/constants/functions.js +0 -104
- package/dist/math/vec2/constants/functions.js.map +0 -1
- package/dist/math/vec2/constants/index.d.ts +0 -3
- package/dist/math/vec2/constants/index.js +0 -25
- package/dist/math/vec2/constants/index.js.map +0 -1
- package/dist/math/vec2/constants/layout.d.ts +0 -1
- package/dist/math/vec2/constants/layout.js +0 -25
- package/dist/math/vec2/constants/layout.js.map +0 -1
- package/dist/math/vec2/constants/schema.d.ts +0 -11
- package/dist/math/vec2/constants/schema.js +0 -30
- package/dist/math/vec2/constants/schema.js.map +0 -1
- package/dist/math/vec2/functions/abs.d.ts +0 -2
- package/dist/math/vec2/functions/abs.js +0 -23
- package/dist/math/vec2/functions/abs.js.map +0 -1
- package/dist/math/vec2/functions/acos.d.ts +0 -2
- package/dist/math/vec2/functions/acos.js +0 -23
- package/dist/math/vec2/functions/acos.js.map +0 -1
- package/dist/math/vec2/functions/acosh.d.ts +0 -2
- package/dist/math/vec2/functions/acosh.js +0 -23
- package/dist/math/vec2/functions/acosh.js.map +0 -1
- package/dist/math/vec2/functions/add.d.ts +0 -2
- package/dist/math/vec2/functions/add.js +0 -23
- package/dist/math/vec2/functions/add.js.map +0 -1
- package/dist/math/vec2/functions/asin.d.ts +0 -2
- package/dist/math/vec2/functions/asin.js +0 -23
- package/dist/math/vec2/functions/asin.js.map +0 -1
- package/dist/math/vec2/functions/asinh.d.ts +0 -2
- package/dist/math/vec2/functions/asinh.js +0 -23
- package/dist/math/vec2/functions/asinh.js.map +0 -1
- package/dist/math/vec2/functions/atan.d.ts +0 -2
- package/dist/math/vec2/functions/atan.js +0 -23
- package/dist/math/vec2/functions/atan.js.map +0 -1
- package/dist/math/vec2/functions/atanh.d.ts +0 -2
- package/dist/math/vec2/functions/atanh.js +0 -23
- package/dist/math/vec2/functions/atanh.js.map +0 -1
- package/dist/math/vec2/functions/ceil.d.ts +0 -2
- package/dist/math/vec2/functions/ceil.js +0 -23
- package/dist/math/vec2/functions/ceil.js.map +0 -1
- package/dist/math/vec2/functions/clamp.d.ts +0 -2
- package/dist/math/vec2/functions/clamp.js +0 -25
- package/dist/math/vec2/functions/clamp.js.map +0 -1
- package/dist/math/vec2/functions/cos.d.ts +0 -2
- package/dist/math/vec2/functions/cos.js +0 -23
- package/dist/math/vec2/functions/cos.js.map +0 -1
- package/dist/math/vec2/functions/cosh.d.ts +0 -2
- package/dist/math/vec2/functions/cosh.js +0 -23
- package/dist/math/vec2/functions/cosh.js.map +0 -1
- package/dist/math/vec2/functions/distance.d.ts +0 -2
- package/dist/math/vec2/functions/distance.js +0 -25
- package/dist/math/vec2/functions/distance.js.map +0 -1
- package/dist/math/vec2/functions/dot.d.ts +0 -2
- package/dist/math/vec2/functions/dot.js +0 -23
- package/dist/math/vec2/functions/dot.js.map +0 -1
- package/dist/math/vec2/functions/exp-2.d.ts +0 -2
- package/dist/math/vec2/functions/exp-2.js +0 -23
- package/dist/math/vec2/functions/exp-2.js.map +0 -1
- package/dist/math/vec2/functions/exp.d.ts +0 -2
- package/dist/math/vec2/functions/exp.js +0 -23
- package/dist/math/vec2/functions/exp.js.map +0 -1
- package/dist/math/vec2/functions/face-forward.d.ts +0 -2
- package/dist/math/vec2/functions/face-forward.js +0 -25
- package/dist/math/vec2/functions/face-forward.js.map +0 -1
- package/dist/math/vec2/functions/floor.d.ts +0 -2
- package/dist/math/vec2/functions/floor.js +0 -23
- package/dist/math/vec2/functions/floor.js.map +0 -1
- package/dist/math/vec2/functions/fract.d.ts +0 -2
- package/dist/math/vec2/functions/fract.js +0 -23
- package/dist/math/vec2/functions/fract.js.map +0 -1
- package/dist/math/vec2/functions/functions.d.ts +0 -48
- package/dist/math/vec2/functions/functions.js +0 -104
- package/dist/math/vec2/functions/functions.js.map +0 -1
- package/dist/math/vec2/functions/index.d.ts +0 -3
- package/dist/math/vec2/functions/index.js +0 -25
- package/dist/math/vec2/functions/index.js.map +0 -1
- package/dist/math/vec2/functions/layout.d.ts +0 -1
- package/dist/math/vec2/functions/layout.js +0 -25
- package/dist/math/vec2/functions/layout.js.map +0 -1
- package/dist/math/vec2/functions/length.d.ts +0 -2
- package/dist/math/vec2/functions/length.js +0 -23
- package/dist/math/vec2/functions/length.js.map +0 -1
- package/dist/math/vec2/functions/log-2.d.ts +0 -2
- package/dist/math/vec2/functions/log-2.js +0 -23
- package/dist/math/vec2/functions/log-2.js.map +0 -1
- package/dist/math/vec2/functions/log.d.ts +0 -2
- package/dist/math/vec2/functions/log.js +0 -23
- package/dist/math/vec2/functions/log.js.map +0 -1
- package/dist/math/vec2/functions/max.d.ts +0 -2
- package/dist/math/vec2/functions/max.js +0 -23
- package/dist/math/vec2/functions/max.js.map +0 -1
- package/dist/math/vec2/functions/min.d.ts +0 -2
- package/dist/math/vec2/functions/min.js +0 -23
- package/dist/math/vec2/functions/min.js.map +0 -1
- package/dist/math/vec2/functions/mix.d.ts +0 -2
- package/dist/math/vec2/functions/mix.js +0 -26
- package/dist/math/vec2/functions/mix.js.map +0 -1
- package/dist/math/vec2/functions/mod.d.ts +0 -2
- package/dist/math/vec2/functions/mod.js +0 -26
- package/dist/math/vec2/functions/mod.js.map +0 -1
- package/dist/math/vec2/functions/modf.d.ts +0 -5
- package/dist/math/vec2/functions/modf.js +0 -26
- package/dist/math/vec2/functions/modf.js.map +0 -1
- package/dist/math/vec2/functions/negate.d.ts +0 -2
- package/dist/math/vec2/functions/negate.js +0 -23
- package/dist/math/vec2/functions/negate.js.map +0 -1
- package/dist/math/vec2/functions/normalize.d.ts +0 -2
- package/dist/math/vec2/functions/normalize.js +0 -28
- package/dist/math/vec2/functions/normalize.js.map +0 -1
- package/dist/math/vec2/functions/pow.d.ts +0 -2
- package/dist/math/vec2/functions/pow.js +0 -26
- package/dist/math/vec2/functions/pow.js.map +0 -1
- package/dist/math/vec2/functions/reflect.d.ts +0 -2
- package/dist/math/vec2/functions/reflect.js +0 -29
- package/dist/math/vec2/functions/reflect.js.map +0 -1
- package/dist/math/vec2/functions/refract.d.ts +0 -2
- package/dist/math/vec2/functions/refract.js +0 -34
- package/dist/math/vec2/functions/refract.js.map +0 -1
- package/dist/math/vec2/functions/round.d.ts +0 -2
- package/dist/math/vec2/functions/round.js +0 -23
- package/dist/math/vec2/functions/round.js.map +0 -1
- package/dist/math/vec2/functions/scale.d.ts +0 -2
- package/dist/math/vec2/functions/scale.js +0 -23
- package/dist/math/vec2/functions/scale.js.map +0 -1
- package/dist/math/vec2/functions/schema.d.ts +0 -11
- package/dist/math/vec2/functions/schema.js +0 -30
- package/dist/math/vec2/functions/schema.js.map +0 -1
- package/dist/math/vec2/functions/sign.d.ts +0 -2
- package/dist/math/vec2/functions/sign.js +0 -23
- package/dist/math/vec2/functions/sign.js.map +0 -1
- package/dist/math/vec2/functions/sin.d.ts +0 -2
- package/dist/math/vec2/functions/sin.js +0 -23
- package/dist/math/vec2/functions/sin.js.map +0 -1
- package/dist/math/vec2/functions/sinh.d.ts +0 -2
- package/dist/math/vec2/functions/sinh.js +0 -23
- package/dist/math/vec2/functions/sinh.js.map +0 -1
- package/dist/math/vec2/functions/smooth-step.d.ts +0 -2
- package/dist/math/vec2/functions/smooth-step.js +0 -27
- package/dist/math/vec2/functions/smooth-step.js.map +0 -1
- package/dist/math/vec2/functions/sqrt.d.ts +0 -2
- package/dist/math/vec2/functions/sqrt.js +0 -23
- package/dist/math/vec2/functions/sqrt.js.map +0 -1
- package/dist/math/vec2/functions/step.d.ts +0 -2
- package/dist/math/vec2/functions/step.js +0 -26
- package/dist/math/vec2/functions/step.js.map +0 -1
- package/dist/math/vec2/functions/subtract.d.ts +0 -2
- package/dist/math/vec2/functions/subtract.js +0 -23
- package/dist/math/vec2/functions/subtract.js.map +0 -1
- package/dist/math/vec2/functions/tan.d.ts +0 -2
- package/dist/math/vec2/functions/tan.js +0 -23
- package/dist/math/vec2/functions/tan.js.map +0 -1
- package/dist/math/vec2/functions/tanh.d.ts +0 -2
- package/dist/math/vec2/functions/tanh.js +0 -23
- package/dist/math/vec2/functions/tanh.js.map +0 -1
- package/dist/math/vec2/functions/trunc.d.ts +0 -2
- package/dist/math/vec2/functions/trunc.js +0 -23
- package/dist/math/vec2/functions/trunc.js.map +0 -1
- package/dist/math/vec2/vec2.d.ts +0 -4
- package/dist/math/vec2/vec2.js +0 -23
- package/dist/math/vec2/vec2.js.map +0 -1
- package/dist/math/vec3/constants/functions.d.ts +0 -59
- package/dist/math/vec3/constants/functions.js +0 -159
- package/dist/math/vec3/constants/functions.js.map +0 -1
- package/dist/math/vec3/constants/index.d.ts +0 -3
- package/dist/math/vec3/constants/index.js +0 -25
- package/dist/math/vec3/constants/index.js.map +0 -1
- package/dist/math/vec3/constants/layout.d.ts +0 -1
- package/dist/math/vec3/constants/layout.js +0 -25
- package/dist/math/vec3/constants/layout.js.map +0 -1
- package/dist/math/vec3/constants/schema.d.ts +0 -11
- package/dist/math/vec3/constants/schema.js +0 -30
- package/dist/math/vec3/constants/schema.js.map +0 -1
- package/dist/math/vec3/functions/abs.d.ts +0 -2
- package/dist/math/vec3/functions/abs.js +0 -23
- package/dist/math/vec3/functions/abs.js.map +0 -1
- package/dist/math/vec3/functions/acos.d.ts +0 -2
- package/dist/math/vec3/functions/acos.js +0 -23
- package/dist/math/vec3/functions/acos.js.map +0 -1
- package/dist/math/vec3/functions/acosh.d.ts +0 -2
- package/dist/math/vec3/functions/acosh.js +0 -23
- package/dist/math/vec3/functions/acosh.js.map +0 -1
- package/dist/math/vec3/functions/add.d.ts +0 -2
- package/dist/math/vec3/functions/add.js +0 -27
- package/dist/math/vec3/functions/add.js.map +0 -1
- package/dist/math/vec3/functions/asin.d.ts +0 -2
- package/dist/math/vec3/functions/asin.js +0 -23
- package/dist/math/vec3/functions/asin.js.map +0 -1
- package/dist/math/vec3/functions/asinh.d.ts +0 -2
- package/dist/math/vec3/functions/asinh.js +0 -23
- package/dist/math/vec3/functions/asinh.js.map +0 -1
- package/dist/math/vec3/functions/atan.d.ts +0 -2
- package/dist/math/vec3/functions/atan.js +0 -23
- package/dist/math/vec3/functions/atan.js.map +0 -1
- package/dist/math/vec3/functions/atanh.d.ts +0 -2
- package/dist/math/vec3/functions/atanh.js +0 -23
- package/dist/math/vec3/functions/atanh.js.map +0 -1
- package/dist/math/vec3/functions/ceil.d.ts +0 -2
- package/dist/math/vec3/functions/ceil.js +0 -23
- package/dist/math/vec3/functions/ceil.js.map +0 -1
- package/dist/math/vec3/functions/clamp.d.ts +0 -2
- package/dist/math/vec3/functions/clamp.js +0 -25
- package/dist/math/vec3/functions/clamp.js.map +0 -1
- package/dist/math/vec3/functions/cos.d.ts +0 -2
- package/dist/math/vec3/functions/cos.js +0 -23
- package/dist/math/vec3/functions/cos.js.map +0 -1
- package/dist/math/vec3/functions/cosh.d.ts +0 -2
- package/dist/math/vec3/functions/cosh.js +0 -23
- package/dist/math/vec3/functions/cosh.js.map +0 -1
- package/dist/math/vec3/functions/cross.d.ts +0 -2
- package/dist/math/vec3/functions/cross.js +0 -27
- package/dist/math/vec3/functions/cross.js.map +0 -1
- package/dist/math/vec3/functions/distance-squared.d.ts +0 -2
- package/dist/math/vec3/functions/distance-squared.js +0 -28
- package/dist/math/vec3/functions/distance-squared.js.map +0 -1
- package/dist/math/vec3/functions/distance.d.ts +0 -2
- package/dist/math/vec3/functions/distance.js +0 -25
- package/dist/math/vec3/functions/distance.js.map +0 -1
- package/dist/math/vec3/functions/dot.d.ts +0 -2
- package/dist/math/vec3/functions/dot.js +0 -23
- package/dist/math/vec3/functions/dot.js.map +0 -1
- package/dist/math/vec3/functions/equals.d.ts +0 -2
- package/dist/math/vec3/functions/equals.js +0 -23
- package/dist/math/vec3/functions/equals.js.map +0 -1
- package/dist/math/vec3/functions/exp-2.d.ts +0 -2
- package/dist/math/vec3/functions/exp-2.js +0 -23
- package/dist/math/vec3/functions/exp-2.js.map +0 -1
- package/dist/math/vec3/functions/exp.d.ts +0 -2
- package/dist/math/vec3/functions/exp.js +0 -23
- package/dist/math/vec3/functions/exp.js.map +0 -1
- package/dist/math/vec3/functions/face-forward.d.ts +0 -2
- package/dist/math/vec3/functions/face-forward.js +0 -25
- package/dist/math/vec3/functions/face-forward.js.map +0 -1
- package/dist/math/vec3/functions/floor.d.ts +0 -2
- package/dist/math/vec3/functions/floor.js +0 -23
- package/dist/math/vec3/functions/floor.js.map +0 -1
- package/dist/math/vec3/functions/fract.d.ts +0 -2
- package/dist/math/vec3/functions/fract.js +0 -27
- package/dist/math/vec3/functions/fract.js.map +0 -1
- package/dist/math/vec3/functions/index.d.ts +0 -54
- package/dist/math/vec3/functions/index.js +0 -76
- package/dist/math/vec3/functions/index.js.map +0 -1
- package/dist/math/vec3/functions/layout.d.ts +0 -1
- package/dist/math/vec3/functions/layout.js +0 -25
- package/dist/math/vec3/functions/layout.js.map +0 -1
- package/dist/math/vec3/functions/length-squared.d.ts +0 -2
- package/dist/math/vec3/functions/length-squared.js +0 -23
- package/dist/math/vec3/functions/length-squared.js.map +0 -1
- package/dist/math/vec3/functions/length.d.ts +0 -2
- package/dist/math/vec3/functions/length.js +0 -23
- package/dist/math/vec3/functions/length.js.map +0 -1
- package/dist/math/vec3/functions/log-2.d.ts +0 -2
- package/dist/math/vec3/functions/log-2.js +0 -23
- package/dist/math/vec3/functions/log-2.js.map +0 -1
- package/dist/math/vec3/functions/log.d.ts +0 -2
- package/dist/math/vec3/functions/log.js +0 -23
- package/dist/math/vec3/functions/log.js.map +0 -1
- package/dist/math/vec3/functions/max.d.ts +0 -2
- package/dist/math/vec3/functions/max.js +0 -27
- package/dist/math/vec3/functions/max.js.map +0 -1
- package/dist/math/vec3/functions/min.d.ts +0 -2
- package/dist/math/vec3/functions/min.js +0 -27
- package/dist/math/vec3/functions/min.js.map +0 -1
- package/dist/math/vec3/functions/mix.d.ts +0 -2
- package/dist/math/vec3/functions/mix.js +0 -27
- package/dist/math/vec3/functions/mix.js.map +0 -1
- package/dist/math/vec3/functions/mod.d.ts +0 -2
- package/dist/math/vec3/functions/mod.js +0 -27
- package/dist/math/vec3/functions/mod.js.map +0 -1
- package/dist/math/vec3/functions/modf.d.ts +0 -5
- package/dist/math/vec3/functions/modf.js +0 -26
- package/dist/math/vec3/functions/modf.js.map +0 -1
- package/dist/math/vec3/functions/multiply.d.ts +0 -5
- package/dist/math/vec3/functions/multiply.js +0 -30
- package/dist/math/vec3/functions/multiply.js.map +0 -1
- package/dist/math/vec3/functions/negate.d.ts +0 -2
- package/dist/math/vec3/functions/negate.js +0 -23
- package/dist/math/vec3/functions/negate.js.map +0 -1
- package/dist/math/vec3/functions/normalize.d.ts +0 -2
- package/dist/math/vec3/functions/normalize.js +0 -28
- package/dist/math/vec3/functions/normalize.js.map +0 -1
- package/dist/math/vec3/functions/one.d.ts +0 -2
- package/dist/math/vec3/functions/one.js +0 -23
- package/dist/math/vec3/functions/one.js.map +0 -1
- package/dist/math/vec3/functions/pow.d.ts +0 -2
- package/dist/math/vec3/functions/pow.js +0 -27
- package/dist/math/vec3/functions/pow.js.map +0 -1
- package/dist/math/vec3/functions/random.d.ts +0 -2
- package/dist/math/vec3/functions/random.js +0 -25
- package/dist/math/vec3/functions/random.js.map +0 -1
- package/dist/math/vec3/functions/reflect.d.ts +0 -2
- package/dist/math/vec3/functions/reflect.js +0 -29
- package/dist/math/vec3/functions/reflect.js.map +0 -1
- package/dist/math/vec3/functions/refract.d.ts +0 -2
- package/dist/math/vec3/functions/refract.js +0 -34
- package/dist/math/vec3/functions/refract.js.map +0 -1
- package/dist/math/vec3/functions/round.d.ts +0 -2
- package/dist/math/vec3/functions/round.js +0 -23
- package/dist/math/vec3/functions/round.js.map +0 -1
- package/dist/math/vec3/functions/scale.d.ts +0 -2
- package/dist/math/vec3/functions/scale.js +0 -23
- package/dist/math/vec3/functions/scale.js.map +0 -1
- package/dist/math/vec3/functions/schema.d.ts +0 -11
- package/dist/math/vec3/functions/schema.js +0 -30
- package/dist/math/vec3/functions/schema.js.map +0 -1
- package/dist/math/vec3/functions/sign.d.ts +0 -2
- package/dist/math/vec3/functions/sign.js +0 -23
- package/dist/math/vec3/functions/sign.js.map +0 -1
- package/dist/math/vec3/functions/sin.d.ts +0 -2
- package/dist/math/vec3/functions/sin.js +0 -23
- package/dist/math/vec3/functions/sin.js.map +0 -1
- package/dist/math/vec3/functions/sinh.d.ts +0 -2
- package/dist/math/vec3/functions/sinh.js +0 -23
- package/dist/math/vec3/functions/sinh.js.map +0 -1
- package/dist/math/vec3/functions/smooth-step.d.ts +0 -2
- package/dist/math/vec3/functions/smooth-step.js +0 -32
- package/dist/math/vec3/functions/smooth-step.js.map +0 -1
- package/dist/math/vec3/functions/sqrt.d.ts +0 -2
- package/dist/math/vec3/functions/sqrt.js +0 -23
- package/dist/math/vec3/functions/sqrt.js.map +0 -1
- package/dist/math/vec3/functions/step.d.ts +0 -2
- package/dist/math/vec3/functions/step.js +0 -27
- package/dist/math/vec3/functions/step.js.map +0 -1
- package/dist/math/vec3/functions/subtract.d.ts +0 -2
- package/dist/math/vec3/functions/subtract.js +0 -27
- package/dist/math/vec3/functions/subtract.js.map +0 -1
- package/dist/math/vec3/functions/tan.d.ts +0 -2
- package/dist/math/vec3/functions/tan.js +0 -23
- package/dist/math/vec3/functions/tan.js.map +0 -1
- package/dist/math/vec3/functions/tanh.d.ts +0 -2
- package/dist/math/vec3/functions/tanh.js +0 -23
- package/dist/math/vec3/functions/tanh.js.map +0 -1
- package/dist/math/vec3/functions/trunc.d.ts +0 -2
- package/dist/math/vec3/functions/trunc.js +0 -23
- package/dist/math/vec3/functions/trunc.js.map +0 -1
- package/dist/math/vec3/functions/zero.d.ts +0 -2
- package/dist/math/vec3/functions/zero.js +0 -23
- package/dist/math/vec3/functions/zero.js.map +0 -1
- package/dist/math/vec3/vec3.d.ts +0 -4
- package/dist/math/vec3/vec3.js +0 -23
- package/dist/math/vec3/vec3.js.map +0 -1
- package/dist/math/vec4/constants/functions.d.ts +0 -49
- package/dist/math/vec4/constants/functions.js +0 -150
- package/dist/math/vec4/constants/functions.js.map +0 -1
- package/dist/math/vec4/constants/index.d.ts +0 -3
- package/dist/math/vec4/constants/index.js +0 -25
- package/dist/math/vec4/constants/index.js.map +0 -1
- package/dist/math/vec4/constants/layout.d.ts +0 -1
- package/dist/math/vec4/constants/layout.js +0 -25
- package/dist/math/vec4/constants/layout.js.map +0 -1
- package/dist/math/vec4/constants/schema.d.ts +0 -11
- package/dist/math/vec4/constants/schema.js +0 -30
- package/dist/math/vec4/constants/schema.js.map +0 -1
- package/dist/math/vec4/functions/abs.d.ts +0 -2
- package/dist/math/vec4/functions/abs.js +0 -23
- package/dist/math/vec4/functions/abs.js.map +0 -1
- package/dist/math/vec4/functions/ceil.d.ts +0 -2
- package/dist/math/vec4/functions/ceil.js +0 -23
- package/dist/math/vec4/functions/ceil.js.map +0 -1
- package/dist/math/vec4/functions/clamp.d.ts +0 -2
- package/dist/math/vec4/functions/clamp.js +0 -25
- package/dist/math/vec4/functions/clamp.js.map +0 -1
- package/dist/math/vec4/functions/floor.d.ts +0 -2
- package/dist/math/vec4/functions/floor.js +0 -23
- package/dist/math/vec4/functions/floor.js.map +0 -1
- package/dist/math/vec4/functions/layout.d.ts +0 -1
- package/dist/math/vec4/functions/layout.js +0 -25
- package/dist/math/vec4/functions/layout.js.map +0 -1
- package/dist/math/vec4/functions/max.d.ts +0 -2
- package/dist/math/vec4/functions/max.js +0 -28
- package/dist/math/vec4/functions/max.js.map +0 -1
- package/dist/math/vec4/functions/min.d.ts +0 -2
- package/dist/math/vec4/functions/min.js +0 -28
- package/dist/math/vec4/functions/min.js.map +0 -1
- package/dist/math/vec4/functions/round.d.ts +0 -2
- package/dist/math/vec4/functions/round.js +0 -23
- package/dist/math/vec4/functions/round.js.map +0 -1
- package/dist/math/vec4/functions/schema.d.ts +0 -11
- package/dist/math/vec4/functions/schema.js +0 -30
- package/dist/math/vec4/functions/schema.js.map +0 -1
- package/dist/math/vec4/functions/trunc.d.ts +0 -2
- package/dist/math/vec4/functions/trunc.js +0 -23
- package/dist/math/vec4/functions/trunc.js.map +0 -1
- package/dist/math/vec4/vec4.d.ts +0 -4
- package/dist/math/vec4/vec4.js +0 -23
- package/dist/math/vec4/vec4.js.map +0 -1
- package/dist/observe/create-observable-event.d.ts +0 -10
- package/dist/observe/create-observable-event.js +0 -22
- package/dist/observe/create-observable-event.js.map +0 -1
- package/dist/observe/create-observable-state.d.ts +0 -7
- package/dist/observe/create-observable-state.js +0 -27
- package/dist/observe/create-observable-state.js.map +0 -1
- package/dist/observe/types.d.ts +0 -17
- package/dist/observe/types.js +0 -2
- package/dist/observe/types.js.map +0 -1
- package/dist/old-ecs/privacy/helper-functions.d.ts +0 -43
- package/dist/old-ecs/privacy/helper-functions.js +0 -76
- package/dist/old-ecs/privacy/helper-functions.js.map +0 -1
- package/dist/old-ecs/privacy/helper-functions.test.js +0 -173
- package/dist/old-ecs/privacy/helper-functions.test.js.map +0 -1
- package/dist/schema/boolean.d.ts +0 -3
- package/dist/schema/boolean.js +0 -25
- package/dist/schema/boolean.js.map +0 -1
- package/dist/schema/f32.d.ts +0 -6
- package/dist/schema/f32.js +0 -6
- package/dist/schema/f32.js.map +0 -1
- package/dist/schema/f64.d.ts +0 -6
- package/dist/schema/f64.js +0 -6
- package/dist/schema/f64.js.map +0 -1
- package/dist/schema/i32.d.ts +0 -7
- package/dist/schema/i32.js +0 -7
- package/dist/schema/i32.js.map +0 -1
- package/dist/schema/schema/index.d.ts +0 -2
- package/dist/schema/schema/index.js +0 -23
- package/dist/schema/schema/index.js.map +0 -1
- package/dist/schema/schema/nullable.d.ts +0 -6
- package/dist/schema/schema/nullable.js +0 -6
- package/dist/schema/schema/nullable.js.map +0 -1
- package/dist/schema/schema/public.d.ts +0 -3
- package/dist/schema/schema/public.js +0 -25
- package/dist/schema/schema/public.js.map +0 -1
- package/dist/schema/schema/to-vertex-buffer-layout.d.ts +0 -56
- package/dist/schema/schema/to-vertex-buffer-layout.js +0 -143
- package/dist/schema/schema/to-vertex-buffer-layout.js.map +0 -1
- package/dist/schema/schema/types.d.ts +0 -150
- package/dist/schema/schema/types.js +0 -34
- package/dist/schema/schema/types.js.map +0 -1
- package/dist/schema/time.d.ts +0 -7
- package/dist/schema/time.js +0 -24
- package/dist/schema/time.js.map +0 -1
- package/dist/schema/true.d.ts +0 -6
- package/dist/schema/true.js +0 -2
- package/dist/schema/true.js.map +0 -1
- package/dist/schema/u32.d.ts +0 -7
- package/dist/schema/u32.js +0 -7
- package/dist/schema/u32.js.map +0 -1
- package/dist/table/constants/functions.d.ts +0 -3
- package/dist/table/constants/functions.js +0 -34
- package/dist/table/constants/functions.js.map +0 -1
- package/dist/table/constants/index.d.ts +0 -1
- package/dist/table/constants/index.js +0 -23
- package/dist/table/constants/index.js.map +0 -1
- /package/dist/{ecs/database/create-database.test.d.ts → debug-type-test.d.ts} +0 -0
- /package/dist/ecs/database/{replicate.test.d.ts → calculate-system-order.test.d.ts} +0 -0
- /package/dist/ecs/database/{transactional-store/coalesce-transactions.test.d.ts → create-database-schema-test.d.ts} +0 -0
- /package/dist/ecs/database/{transactional-store/entity-id-preservation.test.d.ts → create-plugin-v2.test.d.ts} +0 -0
- /package/dist/ecs/{store/create-store.test.d.ts → database/create-plugin.test.d.ts} +0 -0
- /package/dist/ecs/{store/store-schema/create-store-schema-test.d.ts → database/database-with-systems.test.d.ts} +0 -0
- /package/dist/ecs/{store/store-schema/create-store-schema.d.ts → database/database.plugin.create.test.OLD.d.ts} +0 -0
- /package/dist/ecs/{store/store-schema/index.d.ts → database/database.plugin.create.test.d.ts} +0 -0
- /package/dist/ecs/{store/store-schema/store-schema.d.ts → database/database.plugin.test.d.ts} +0 -0
- /package/dist/ecs/{world/world-schema/create-world-schema-test.d.ts → database/database.test copy.d.ts} +0 -0
- /package/dist/{graphics/camera/screen-to-world-ray.test.d.ts → ecs/database/database.test.d.ts} +0 -0
- /package/dist/{graphics/camera/world-to-screen.test.d.ts → ecs/database/multi-param-inference-poc.test.d.ts} +0 -0
- /package/dist/{graphics/frame.d.ts → ecs/database/overload-inference-poc.test.d.ts} +0 -0
- /package/dist/{graphics/get-web-gpu-device-and-context.d.ts → ecs/database/public/create-database-from-schema.test.d.ts} +0 -0
- /package/dist/{graphics/graphics-context.d.ts → ecs/database/test-exactkeys.d.ts} +0 -0
- /package/dist/ecs/database/transactional-store/{coalesce-transactions.d.ts → coalesce-actions.d.ts} +0 -0
- /package/dist/{math/aabb-face/aabb-face.test.d.ts → ecs/database/transactional-store/coalesce-actions.test.d.ts} +0 -0
- /package/dist/{math/aabb-face/face.test.d.ts → ecs/database/type-inference-example.d.ts} +0 -0
- /package/dist/{math/aabb/functions.d.ts → ecs/database/type-inference-poc.test.d.ts} +0 -0
- /package/dist/{math/face/face.test.d.ts → ecs/plugins/scheduler/create-scheduler-plugin.test.d.ts} +0 -0
- /package/dist/{math/picking/face.d.ts → ecs/plugins/scheduler/type-inference-test.d.ts} +0 -0
- /package/dist/{math/transform/debug-inverse.d.ts → ecs/store/store.test.d.ts} +0 -0
- /package/dist/{math/transform/debug-quat.d.ts → ecs/system/system-factory/public/create.test.d.ts} +0 -0
- /package/dist/{math/transform/debug-test.d.ts → ecs/system/world-schema/public/create.test.d.ts} +0 -0
- /package/dist/{math/transform/transform.test.d.ts → ecs/world/calculate-system-order.test.d.ts} +0 -0
- /package/dist/{old-ecs/privacy/helper-functions.test.d.ts → ecs/world/create-world-schema-test.d.ts} +0 -0
|
@@ -1,903 +0,0 @@
|
|
|
1
|
-
/*MIT License
|
|
2
|
-
|
|
3
|
-
© Copyright 2025 Adobe. All rights reserved.
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.*/
|
|
22
|
-
import { describe, it, expect, vi } from "vitest";
|
|
23
|
-
import { createDatabase } from "./public/create-database.js";
|
|
24
|
-
import { createReconcilingDatabase } from "./reconciling/create-reconciling-database.js";
|
|
25
|
-
import { Store } from "../store/index.js";
|
|
26
|
-
import { F32 } from "../../math/f32/index.js";
|
|
27
|
-
import { toPromise } from "../../observe/to-promise.js";
|
|
28
|
-
import { createUndoRedoService } from "../undo-redo-service/create-undo-redo-service.js";
|
|
29
|
-
import { applyOperations } from "./transactional-store/apply-operations.js";
|
|
30
|
-
// Test schemas
|
|
31
|
-
const positionSchema = {
|
|
32
|
-
type: "object",
|
|
33
|
-
properties: {
|
|
34
|
-
x: F32.schema,
|
|
35
|
-
y: F32.schema,
|
|
36
|
-
z: F32.schema,
|
|
37
|
-
},
|
|
38
|
-
required: ["x", "y", "z"],
|
|
39
|
-
additionalProperties: false,
|
|
40
|
-
};
|
|
41
|
-
const healthSchema = {
|
|
42
|
-
type: "object",
|
|
43
|
-
properties: {
|
|
44
|
-
current: F32.schema,
|
|
45
|
-
max: F32.schema,
|
|
46
|
-
},
|
|
47
|
-
required: ["current", "max"],
|
|
48
|
-
additionalProperties: false,
|
|
49
|
-
};
|
|
50
|
-
const nameSchema = {
|
|
51
|
-
type: "string",
|
|
52
|
-
maxLength: 50,
|
|
53
|
-
};
|
|
54
|
-
const createStoreConfig = () => {
|
|
55
|
-
const baseStore = Store.create({
|
|
56
|
-
components: { position: positionSchema, health: healthSchema, name: nameSchema },
|
|
57
|
-
resources: {
|
|
58
|
-
time: { default: { delta: 0.016, elapsed: 0 } },
|
|
59
|
-
generating: { type: "boolean", default: false }
|
|
60
|
-
},
|
|
61
|
-
archetypes: {
|
|
62
|
-
Position: ["position"],
|
|
63
|
-
Health: ["health"],
|
|
64
|
-
PositionHealth: ["position", "health"],
|
|
65
|
-
PositionName: ["position", "name"],
|
|
66
|
-
Full: ["position", "health", "name"],
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
const transactions = {
|
|
70
|
-
createPositionEntity(t, args) {
|
|
71
|
-
return t.archetypes.Position.insert(args);
|
|
72
|
-
},
|
|
73
|
-
createPositionHealthEntity(t, args) {
|
|
74
|
-
return t.archetypes.PositionHealth.insert(args);
|
|
75
|
-
},
|
|
76
|
-
createPositionNameEntity(t, args) {
|
|
77
|
-
return t.archetypes.PositionName.insert(args);
|
|
78
|
-
},
|
|
79
|
-
createFullEntity(t, args) {
|
|
80
|
-
return t.archetypes.Full.insert(args);
|
|
81
|
-
},
|
|
82
|
-
createEntityAndReturn(t, args) {
|
|
83
|
-
return t.archetypes.PositionName.insert(args);
|
|
84
|
-
},
|
|
85
|
-
updateEntity(t, args) {
|
|
86
|
-
t.update(args.entity, args.values);
|
|
87
|
-
},
|
|
88
|
-
deleteEntity(t, args) {
|
|
89
|
-
t.delete(args.entity);
|
|
90
|
-
},
|
|
91
|
-
updateTime(t, args) {
|
|
92
|
-
t.resources.time = args;
|
|
93
|
-
},
|
|
94
|
-
createFailingPositionEntity(t, args) {
|
|
95
|
-
const entity = t.archetypes.Position.insert(args);
|
|
96
|
-
throw new Error("Simulated failure");
|
|
97
|
-
},
|
|
98
|
-
startGenerating(t, args) {
|
|
99
|
-
if (args.progress < 1.0) {
|
|
100
|
-
t.resources.generating = true;
|
|
101
|
-
}
|
|
102
|
-
return -1;
|
|
103
|
-
},
|
|
104
|
-
deletePositionEntities(t) {
|
|
105
|
-
for (const entity of t.select(["position"])) {
|
|
106
|
-
t.delete(entity);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
return { baseStore, transactions };
|
|
111
|
-
};
|
|
112
|
-
const createSequentialClock = (sequence, startFallback = 1) => {
|
|
113
|
-
let index = 0;
|
|
114
|
-
let current = Math.max(startFallback, 1);
|
|
115
|
-
return () => {
|
|
116
|
-
if (index < sequence.length) {
|
|
117
|
-
const value = sequence[index++];
|
|
118
|
-
current = Math.max(value, current);
|
|
119
|
-
return value;
|
|
120
|
-
}
|
|
121
|
-
current += 1;
|
|
122
|
-
return current;
|
|
123
|
-
};
|
|
124
|
-
};
|
|
125
|
-
function createTestDatabase(now = Date.now) {
|
|
126
|
-
const { baseStore, transactions } = createStoreConfig();
|
|
127
|
-
return createDatabase(baseStore, transactions, now);
|
|
128
|
-
}
|
|
129
|
-
describe("createDatabase", () => {
|
|
130
|
-
it("should replay out-of-order commits by absolute time in reconciling database", () => {
|
|
131
|
-
const { baseStore, transactions } = createStoreConfig();
|
|
132
|
-
const reconciling = createReconcilingDatabase(baseStore, transactions);
|
|
133
|
-
reconciling.apply({
|
|
134
|
-
id: 1,
|
|
135
|
-
name: "createPositionNameEntity",
|
|
136
|
-
args: { position: { x: 10, y: 20, z: 30 }, name: "LateCommit" },
|
|
137
|
-
time: 5,
|
|
138
|
-
});
|
|
139
|
-
reconciling.apply({
|
|
140
|
-
id: 2,
|
|
141
|
-
name: "createPositionNameEntity",
|
|
142
|
-
args: { position: { x: 40, y: 50, z: 60 }, name: "EarlyCommit" },
|
|
143
|
-
time: 1,
|
|
144
|
-
});
|
|
145
|
-
const entities = reconciling.select(["name"]);
|
|
146
|
-
const namesById = entities
|
|
147
|
-
.map(entity => reconciling.read(entity)?.name)
|
|
148
|
-
.filter((name) => !!name);
|
|
149
|
-
expect(namesById).toHaveLength(2);
|
|
150
|
-
expect(namesById).toEqual(["EarlyCommit", "LateCommit"]);
|
|
151
|
-
});
|
|
152
|
-
it("should support deleting entities", () => {
|
|
153
|
-
const store = createTestDatabase();
|
|
154
|
-
const entity = store.transactions.createPositionEntity({ position: { x: 1, y: 2, z: 3 } });
|
|
155
|
-
store.transactions.deletePositionEntities();
|
|
156
|
-
expect(store.locate(entity)).toBeNull();
|
|
157
|
-
});
|
|
158
|
-
it("should roll back state when a transaction throws synchronously", () => {
|
|
159
|
-
const store = createTestDatabase();
|
|
160
|
-
expect(() => store.transactions.createFailingPositionEntity({
|
|
161
|
-
position: { x: 1, y: 2, z: 3 },
|
|
162
|
-
})).toThrow("Simulated failure");
|
|
163
|
-
const entities = store.select(["position"]);
|
|
164
|
-
expect(entities).toHaveLength(0);
|
|
165
|
-
});
|
|
166
|
-
it("should support transaction functions that return an Entity", () => {
|
|
167
|
-
const store = createTestDatabase();
|
|
168
|
-
// Execute a transaction that returns an Entity
|
|
169
|
-
const returnedEntity = store.transactions.createEntityAndReturn({
|
|
170
|
-
position: { x: 10, y: 20, z: 30 },
|
|
171
|
-
name: "ReturnedEntity"
|
|
172
|
-
});
|
|
173
|
-
// Verify that an Entity was returned
|
|
174
|
-
expect(returnedEntity).toBeDefined();
|
|
175
|
-
expect(typeof returnedEntity).toBe("number");
|
|
176
|
-
// Verify the entity exists in the store
|
|
177
|
-
const entityValues = store.read(returnedEntity);
|
|
178
|
-
expect(entityValues).toBeDefined();
|
|
179
|
-
expect(entityValues?.position).toEqual({ x: 10, y: 20, z: 30 });
|
|
180
|
-
expect(entityValues?.name).toBe("ReturnedEntity");
|
|
181
|
-
// Verify the entity can be found in the store using select
|
|
182
|
-
const selectedEntities = store.select(["position", "name"]);
|
|
183
|
-
expect(selectedEntities).toContain(returnedEntity);
|
|
184
|
-
});
|
|
185
|
-
describe("AsyncArgs Support", () => {
|
|
186
|
-
it("should handle Promise-based async arguments", async () => {
|
|
187
|
-
const store = createTestDatabase();
|
|
188
|
-
const observer = vi.fn();
|
|
189
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
190
|
-
// Create a promise that resolves to entity data
|
|
191
|
-
const entityDataPromise = Promise.resolve({
|
|
192
|
-
position: { x: 100, y: 200, z: 300 },
|
|
193
|
-
name: "AsyncEntity"
|
|
194
|
-
});
|
|
195
|
-
// Execute transaction with promise argument wrapped in function
|
|
196
|
-
store.transactions.createPositionNameEntity(() => entityDataPromise);
|
|
197
|
-
// Wait for the promise to resolve
|
|
198
|
-
await new Promise(resolve => setTimeout(resolve, 0));
|
|
199
|
-
// Verify the entity was created with the resolved data
|
|
200
|
-
const entities = store.select(["position", "name"]);
|
|
201
|
-
const createdEntity = entities.find(entityId => {
|
|
202
|
-
const values = store.read(entityId);
|
|
203
|
-
return values?.name === "AsyncEntity";
|
|
204
|
-
});
|
|
205
|
-
expect(createdEntity).toBeDefined();
|
|
206
|
-
const entityValues = store.read(createdEntity);
|
|
207
|
-
expect(entityValues?.position).toEqual({ x: 100, y: 200, z: 300 });
|
|
208
|
-
expect(entityValues?.name).toBe("AsyncEntity");
|
|
209
|
-
// Verify observer was notified
|
|
210
|
-
expect(observer).toHaveBeenCalledTimes(1);
|
|
211
|
-
unsubscribe();
|
|
212
|
-
});
|
|
213
|
-
it("should handle AsyncGenerator streaming arguments", async () => {
|
|
214
|
-
const store = createTestDatabase();
|
|
215
|
-
const observer = vi.fn();
|
|
216
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
217
|
-
// Create an async generator that yields multiple entity data
|
|
218
|
-
async function* entityDataStream() {
|
|
219
|
-
yield { position: { x: 1, y: 1, z: 1 }, name: "Stream1" };
|
|
220
|
-
yield { position: { x: 2, y: 2, z: 2 }, name: "Stream2" };
|
|
221
|
-
yield { position: { x: 3, y: 3, z: 3 }, name: "Stream3" };
|
|
222
|
-
}
|
|
223
|
-
// Execute transaction with async generator wrapped in function
|
|
224
|
-
store.transactions.createPositionNameEntity(() => entityDataStream());
|
|
225
|
-
// Wait for all entities to be processed
|
|
226
|
-
await new Promise(resolve => setTimeout(resolve, 10));
|
|
227
|
-
// Verify only the final entity was created (each yield replaces the previous)
|
|
228
|
-
// Now that rollback is working correctly and observably, we should see only the final entity
|
|
229
|
-
const entities = store.select(["position", "name"]);
|
|
230
|
-
const streamEntities = entities.filter(entityId => {
|
|
231
|
-
const values = store.read(entityId);
|
|
232
|
-
return values?.name?.startsWith("Stream");
|
|
233
|
-
});
|
|
234
|
-
// Now that rollback is observable, we may have additional entities during processing
|
|
235
|
-
// The key is that the final entity has the correct data and rollback is working
|
|
236
|
-
const finalEntity = streamEntities.find(entityId => {
|
|
237
|
-
const values = store.read(entityId);
|
|
238
|
-
return values?.name === "Stream3";
|
|
239
|
-
});
|
|
240
|
-
expect(finalEntity).toBeDefined();
|
|
241
|
-
const finalEntityValues = store.read(finalEntity);
|
|
242
|
-
expect(finalEntityValues?.position).toEqual({ x: 3, y: 3, z: 3 });
|
|
243
|
-
expect(finalEntityValues?.name).toBe("Stream3");
|
|
244
|
-
// Verify rollback is working: intermediate entities should not exist
|
|
245
|
-
const intermediateEntities = streamEntities.filter(entityId => {
|
|
246
|
-
const values = store.read(entityId);
|
|
247
|
-
return values?.name === "Stream1" || values?.name === "Stream2";
|
|
248
|
-
});
|
|
249
|
-
// CRITICAL: Should have NO intermediate entities (rollback worked)
|
|
250
|
-
expect(intermediateEntities).toHaveLength(0);
|
|
251
|
-
// Verify observer was notified for each entity creation and rollback
|
|
252
|
-
// Now that rollback is observable, we should see more notifications
|
|
253
|
-
// The exact count isn't as important as ensuring rollback operations are observable
|
|
254
|
-
expect(observer.mock.calls.length >= 3);
|
|
255
|
-
unsubscribe();
|
|
256
|
-
});
|
|
257
|
-
it("should handle AsyncGenerator with delays", async () => {
|
|
258
|
-
const store = createTestDatabase();
|
|
259
|
-
const observer = vi.fn();
|
|
260
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
261
|
-
// Create an async generator with delays
|
|
262
|
-
async function* delayedEntityStream() {
|
|
263
|
-
yield { position: { x: 10, y: 10, z: 10 }, name: "Delayed1" };
|
|
264
|
-
await new Promise(resolve => setTimeout(resolve, 5));
|
|
265
|
-
yield { position: { x: 20, y: 20, z: 20 }, name: "Delayed2" };
|
|
266
|
-
await new Promise(resolve => setTimeout(resolve, 5));
|
|
267
|
-
yield { position: { x: 30, y: 30, z: 30 }, name: "Delayed3" };
|
|
268
|
-
}
|
|
269
|
-
// Execute transaction with delayed async generator wrapped in function
|
|
270
|
-
store.transactions.createPositionNameEntity(() => delayedEntityStream());
|
|
271
|
-
// Wait for all entities to be processed
|
|
272
|
-
await new Promise(resolve => setTimeout(resolve, 20));
|
|
273
|
-
// Verify all entities were created
|
|
274
|
-
const entities = store.select(["position", "name"]);
|
|
275
|
-
const delayedEntities = entities.filter(entityId => {
|
|
276
|
-
const values = store.read(entityId);
|
|
277
|
-
return values?.name?.startsWith("Delayed");
|
|
278
|
-
});
|
|
279
|
-
expect(delayedEntities.length >= 3);
|
|
280
|
-
expect(observer.mock.calls.length >= 3);
|
|
281
|
-
unsubscribe();
|
|
282
|
-
});
|
|
283
|
-
it("should handle mixed sync and async arguments in the same transaction", async () => {
|
|
284
|
-
const store = createTestDatabase();
|
|
285
|
-
const observer = vi.fn();
|
|
286
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
287
|
-
// Create entities with different argument types
|
|
288
|
-
store.transactions.createPositionNameEntity({
|
|
289
|
-
position: { x: 1, y: 1, z: 1 },
|
|
290
|
-
name: "SyncEntity"
|
|
291
|
-
});
|
|
292
|
-
store.transactions.createPositionNameEntity(() => Promise.resolve({
|
|
293
|
-
position: { x: 2, y: 2, z: 2 },
|
|
294
|
-
name: "PromiseEntity"
|
|
295
|
-
}));
|
|
296
|
-
async function* streamEntityGenerator() {
|
|
297
|
-
yield { position: { x: 3, y: 3, z: 3 }, name: "StreamEntity" };
|
|
298
|
-
}
|
|
299
|
-
store.transactions.createPositionNameEntity(() => streamEntityGenerator());
|
|
300
|
-
// Wait for async operations
|
|
301
|
-
await new Promise(resolve => setTimeout(resolve, 10));
|
|
302
|
-
// Verify all entities were created
|
|
303
|
-
const entities = store.select(["position", "name"]);
|
|
304
|
-
const testEntities = entities.filter(entityId => {
|
|
305
|
-
const values = store.read(entityId);
|
|
306
|
-
return values?.name?.endsWith("Entity");
|
|
307
|
-
});
|
|
308
|
-
expect(testEntities.length >= 3);
|
|
309
|
-
const syncEntity = store.read(testEntities.find(e => store.read(e)?.name === "SyncEntity"));
|
|
310
|
-
const promiseEntity = store.read(testEntities.find(e => store.read(e)?.name === "PromiseEntity"));
|
|
311
|
-
const streamEntity = store.read(testEntities.find(e => store.read(e)?.name === "StreamEntity"));
|
|
312
|
-
expect(syncEntity?.position).toEqual({ x: 1, y: 1, z: 1 });
|
|
313
|
-
expect(promiseEntity?.position).toEqual({ x: 2, y: 2, z: 2 });
|
|
314
|
-
expect(streamEntity?.position).toEqual({ x: 3, y: 3, z: 3 });
|
|
315
|
-
expect(observer.mock.calls.length >= 3);
|
|
316
|
-
unsubscribe();
|
|
317
|
-
});
|
|
318
|
-
it("should handle AsyncGenerator that yields no values", async () => {
|
|
319
|
-
const store = createTestDatabase();
|
|
320
|
-
const observer = vi.fn();
|
|
321
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
322
|
-
// Create an empty async generator
|
|
323
|
-
async function* emptyStream() {
|
|
324
|
-
// Yields nothing
|
|
325
|
-
}
|
|
326
|
-
// Execute transaction with empty async generator wrapped in function
|
|
327
|
-
store.transactions.createPositionNameEntity(() => emptyStream());
|
|
328
|
-
// Wait for processing
|
|
329
|
-
await new Promise(resolve => setTimeout(resolve, 10));
|
|
330
|
-
// Verify no entities were created
|
|
331
|
-
const entities = store.select(["position", "name"]);
|
|
332
|
-
expect(entities).toHaveLength(0);
|
|
333
|
-
expect(observer).toHaveBeenCalledTimes(0);
|
|
334
|
-
unsubscribe();
|
|
335
|
-
});
|
|
336
|
-
it("should handle AsyncGenerator with error handling", async () => {
|
|
337
|
-
const store = createTestDatabase();
|
|
338
|
-
const observer = vi.fn();
|
|
339
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
340
|
-
// Create an async generator that throws an error
|
|
341
|
-
async function* errorStream() {
|
|
342
|
-
yield { position: { x: 1, y: 1, z: 1 }, name: "BeforeError" };
|
|
343
|
-
throw new Error("Test error");
|
|
344
|
-
}
|
|
345
|
-
// Execute transaction with error-throwing async generator wrapped in function
|
|
346
|
-
// Now that async executions return promises, we need to await and catch the error
|
|
347
|
-
let error;
|
|
348
|
-
try {
|
|
349
|
-
await store.transactions.createPositionNameEntity(() => errorStream());
|
|
350
|
-
}
|
|
351
|
-
catch (e) {
|
|
352
|
-
error = e;
|
|
353
|
-
}
|
|
354
|
-
expect(error).toBeDefined();
|
|
355
|
-
expect(error.message).toBe("Test error");
|
|
356
|
-
// Wait for processing to complete
|
|
357
|
-
await new Promise(resolve => setTimeout(resolve, 10));
|
|
358
|
-
// Verify the transient entity was rolled back after the error
|
|
359
|
-
const entities = store.select(["position", "name"]);
|
|
360
|
-
const beforeErrorEntities = entities.filter(entityId => {
|
|
361
|
-
const values = store.read(entityId);
|
|
362
|
-
return values?.name === "BeforeError";
|
|
363
|
-
});
|
|
364
|
-
expect(beforeErrorEntities).toHaveLength(0);
|
|
365
|
-
expect(observer).toHaveBeenCalled();
|
|
366
|
-
unsubscribe();
|
|
367
|
-
});
|
|
368
|
-
it("should remove transient entries from reconciling queue when AsyncGenerator throws", async () => {
|
|
369
|
-
const store = createTestDatabase();
|
|
370
|
-
// Create an async generator that yields multiple times then throws
|
|
371
|
-
async function* multiYieldErrorStream() {
|
|
372
|
-
yield { position: { x: 1, y: 1, z: 1 }, name: "Yield1" };
|
|
373
|
-
await new Promise(resolve => setTimeout(resolve, 1));
|
|
374
|
-
yield { position: { x: 2, y: 2, z: 2 }, name: "Yield2" };
|
|
375
|
-
await new Promise(resolve => setTimeout(resolve, 1));
|
|
376
|
-
yield { position: { x: 3, y: 3, z: 3 }, name: "Yield3" };
|
|
377
|
-
throw new Error("Sequential transaction failed");
|
|
378
|
-
}
|
|
379
|
-
// Start the transaction
|
|
380
|
-
const transactionPromise = store.transactions.createPositionNameEntity(() => multiYieldErrorStream());
|
|
381
|
-
// Wait a bit to let some yields process
|
|
382
|
-
await new Promise(resolve => setTimeout(resolve, 5));
|
|
383
|
-
// Verify transient entry exists during processing
|
|
384
|
-
const serializedDuring = store.toData();
|
|
385
|
-
const transientEntries = serializedDuring.appliedEntries?.filter(e => e !== null && e !== undefined);
|
|
386
|
-
expect(transientEntries).toBeDefined();
|
|
387
|
-
if (transientEntries && transientEntries.length > 0) {
|
|
388
|
-
// If we caught it during processing, verify it's a transient entry
|
|
389
|
-
expect(transientEntries[0].args?.name).toMatch(/Yield[123]/);
|
|
390
|
-
}
|
|
391
|
-
// Wait for the error
|
|
392
|
-
let error;
|
|
393
|
-
try {
|
|
394
|
-
await transactionPromise;
|
|
395
|
-
}
|
|
396
|
-
catch (e) {
|
|
397
|
-
error = e;
|
|
398
|
-
}
|
|
399
|
-
expect(error).toBeDefined();
|
|
400
|
-
expect(error.message).toBe("Sequential transaction failed");
|
|
401
|
-
// Wait for cleanup to complete
|
|
402
|
-
await new Promise(resolve => setTimeout(resolve, 10));
|
|
403
|
-
// Verify the transient entry is removed from the reconciling queue
|
|
404
|
-
const serializedAfter = store.toData();
|
|
405
|
-
expect(serializedAfter.appliedEntries ?? []).toHaveLength(0);
|
|
406
|
-
// Verify all entities are rolled back
|
|
407
|
-
const entities = store.select(["position", "name"]);
|
|
408
|
-
const yieldEntities = entities.filter(entityId => {
|
|
409
|
-
const values = store.read(entityId);
|
|
410
|
-
return values?.name?.startsWith("Yield");
|
|
411
|
-
});
|
|
412
|
-
expect(yieldEntities).toHaveLength(0);
|
|
413
|
-
});
|
|
414
|
-
it("should handle complex AsyncGenerator with conditional yielding", async () => {
|
|
415
|
-
const store = createTestDatabase();
|
|
416
|
-
const observer = vi.fn();
|
|
417
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
418
|
-
// Create a complex async generator with conditional logic
|
|
419
|
-
async function* conditionalStream() {
|
|
420
|
-
for (let i = 0; i < 5; i++) {
|
|
421
|
-
if (i % 2 === 0) {
|
|
422
|
-
yield {
|
|
423
|
-
position: { x: i, y: i * 2, z: i * 3 },
|
|
424
|
-
name: `Even${i}`
|
|
425
|
-
};
|
|
426
|
-
}
|
|
427
|
-
await new Promise(resolve => setTimeout(resolve, 1));
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
// Execute transaction with conditional async generator wrapped in function
|
|
431
|
-
store.transactions.createPositionNameEntity(() => conditionalStream());
|
|
432
|
-
// Wait for processing
|
|
433
|
-
await new Promise(resolve => setTimeout(resolve, 20));
|
|
434
|
-
// Verify only the final entity was created (each yield replaces the previous)
|
|
435
|
-
// Now that rollback is working correctly and observably, we should see only the final entity
|
|
436
|
-
const entities = store.select(["position", "name"]);
|
|
437
|
-
const evenEntities = entities.filter(entityId => {
|
|
438
|
-
const values = store.read(entityId);
|
|
439
|
-
return values?.name?.startsWith("Even");
|
|
440
|
-
});
|
|
441
|
-
// Now that rollback is observable, we may have additional entities during processing
|
|
442
|
-
// The key is that the final entity has the correct data
|
|
443
|
-
const finalEntity = evenEntities.find(entityId => {
|
|
444
|
-
const values = store.read(entityId);
|
|
445
|
-
return values?.name === "Even4";
|
|
446
|
-
});
|
|
447
|
-
expect(finalEntity).toBeDefined();
|
|
448
|
-
const finalEntityValues = store.read(finalEntity);
|
|
449
|
-
expect(finalEntityValues?.position).toEqual({ x: 4, y: 8, z: 12 });
|
|
450
|
-
expect(finalEntityValues?.name).toBe("Even4");
|
|
451
|
-
// Verify observer was notified for each entity creation and rollback
|
|
452
|
-
// Now that rollback is observable, we should see more notifications
|
|
453
|
-
// The exact count isn't as important as ensuring rollback operations are observable
|
|
454
|
-
expect(observer.mock.calls.length >= 3);
|
|
455
|
-
unsubscribe();
|
|
456
|
-
});
|
|
457
|
-
it("should handle AsyncGenerator with yield then return", async () => {
|
|
458
|
-
const store = createTestDatabase();
|
|
459
|
-
const observer = vi.fn();
|
|
460
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
461
|
-
// Create an async generator that yields then returns
|
|
462
|
-
async function* yieldThenReturn() {
|
|
463
|
-
yield { position: { x: 1, y: 1, z: 1 }, name: "Yielded" };
|
|
464
|
-
return { position: { x: 2, y: 2, z: 2 }, name: "Returned" };
|
|
465
|
-
}
|
|
466
|
-
// Execute transaction with async generator
|
|
467
|
-
store.transactions.createPositionNameEntity(() => yieldThenReturn());
|
|
468
|
-
// Wait for processing
|
|
469
|
-
await new Promise(resolve => setTimeout(resolve, 10));
|
|
470
|
-
// Verify the return value was used (not the yield value)
|
|
471
|
-
const entities = store.select(["position", "name"]);
|
|
472
|
-
const returnedEntity = entities.find(entityId => {
|
|
473
|
-
const values = store.read(entityId);
|
|
474
|
-
return values?.name === "Returned";
|
|
475
|
-
});
|
|
476
|
-
expect(returnedEntity).toBeDefined();
|
|
477
|
-
const entityValues = store.read(returnedEntity);
|
|
478
|
-
expect(entityValues?.position).toEqual({ x: 2, y: 2, z: 2 });
|
|
479
|
-
expect(entityValues?.name).toBe("Returned");
|
|
480
|
-
// Verify observer was notified for both the yield and return operations
|
|
481
|
-
// Now that rollback is observable, we may get additional notifications
|
|
482
|
-
// The key is that we receive at least the minimum expected notifications
|
|
483
|
-
expect(observer).toHaveBeenCalledTimes(3); // 1 for yield + 1 for rollback + 1 for return
|
|
484
|
-
unsubscribe();
|
|
485
|
-
});
|
|
486
|
-
it("should handle AsyncGenerator with multiple yields vs yield then return", async () => {
|
|
487
|
-
const store = createTestDatabase();
|
|
488
|
-
const observer = vi.fn();
|
|
489
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
490
|
-
// Test multiple yields
|
|
491
|
-
async function* multipleYields() {
|
|
492
|
-
yield { position: { x: 1, y: 1, z: 1 }, name: "First" };
|
|
493
|
-
yield { position: { x: 2, y: 2, z: 2 }, name: "Second" };
|
|
494
|
-
yield { position: { x: 3, y: 3, z: 3 }, name: "Third" };
|
|
495
|
-
}
|
|
496
|
-
// Test yield then return
|
|
497
|
-
async function* yieldThenReturn() {
|
|
498
|
-
yield { position: { x: 10, y: 10, z: 10 }, name: "Yielded" };
|
|
499
|
-
return { position: { x: 20, y: 20, z: 20 }, name: "Returned" };
|
|
500
|
-
}
|
|
501
|
-
// Execute both transactions
|
|
502
|
-
store.transactions.createPositionNameEntity(() => multipleYields());
|
|
503
|
-
store.transactions.createPositionNameEntity(() => yieldThenReturn());
|
|
504
|
-
// Wait for processing
|
|
505
|
-
await new Promise(resolve => setTimeout(resolve, 10));
|
|
506
|
-
// Verify both patterns work correctly
|
|
507
|
-
const entities = store.select(["position", "name"]);
|
|
508
|
-
const multipleYieldsEntity = entities.find(entityId => {
|
|
509
|
-
const values = store.read(entityId);
|
|
510
|
-
return values?.name === "Third";
|
|
511
|
-
});
|
|
512
|
-
const returnEntity = entities.find(entityId => {
|
|
513
|
-
const values = store.read(entityId);
|
|
514
|
-
return values?.name === "Returned";
|
|
515
|
-
});
|
|
516
|
-
expect(multipleYieldsEntity).toBeDefined();
|
|
517
|
-
expect(returnEntity).toBeDefined();
|
|
518
|
-
// Verify the correct final values for each pattern
|
|
519
|
-
const multipleYieldsValues = store.read(multipleYieldsEntity);
|
|
520
|
-
const returnValues = store.read(returnEntity);
|
|
521
|
-
expect(multipleYieldsValues?.position).toEqual({ x: 3, y: 3, z: 3 });
|
|
522
|
-
expect(multipleYieldsValues?.name).toBe("Third");
|
|
523
|
-
expect(returnValues?.position).toEqual({ x: 20, y: 20, z: 20 });
|
|
524
|
-
expect(returnValues?.name).toBe("Returned");
|
|
525
|
-
unsubscribe();
|
|
526
|
-
});
|
|
527
|
-
it("should handle AsyncGenerator with return only (no yields)", async () => {
|
|
528
|
-
const store = createTestDatabase();
|
|
529
|
-
const observer = vi.fn();
|
|
530
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
531
|
-
// Create an async generator that only returns
|
|
532
|
-
async function* returnOnly() {
|
|
533
|
-
// This generator yields nothing but returns a value
|
|
534
|
-
return { position: { x: 100, y: 200, z: 300 }, name: "ReturnOnly" };
|
|
535
|
-
}
|
|
536
|
-
// Execute transaction with async generator
|
|
537
|
-
store.transactions.createPositionNameEntity(() => returnOnly());
|
|
538
|
-
// Wait for processing
|
|
539
|
-
await new Promise(resolve => setTimeout(resolve, 10));
|
|
540
|
-
// Verify the return value was used
|
|
541
|
-
const entities = store.select(["position", "name"]);
|
|
542
|
-
const returnedEntity = entities.find(entityId => {
|
|
543
|
-
const values = store.read(entityId);
|
|
544
|
-
return values?.name === "ReturnOnly";
|
|
545
|
-
});
|
|
546
|
-
expect(returnedEntity).toBeDefined();
|
|
547
|
-
const entityValues = store.read(returnedEntity);
|
|
548
|
-
expect(entityValues?.position).toEqual({ x: 100, y: 200, z: 300 });
|
|
549
|
-
expect(entityValues?.name).toBe("ReturnOnly");
|
|
550
|
-
// Verify observer was notified only once (no intermediate yields)
|
|
551
|
-
expect(observer).toHaveBeenCalledTimes(1);
|
|
552
|
-
unsubscribe();
|
|
553
|
-
});
|
|
554
|
-
it("should handle AsyncGenerator with yield, return, yield (unreachable code)", async () => {
|
|
555
|
-
const store = createTestDatabase();
|
|
556
|
-
const observer = vi.fn();
|
|
557
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
558
|
-
// Create an async generator with unreachable code after return
|
|
559
|
-
async function* yieldReturnYield() {
|
|
560
|
-
yield { position: { x: 1, y: 1, z: 1 }, name: "Yielded" };
|
|
561
|
-
return { position: { x: 2, y: 2, z: 2 }, name: "Returned" };
|
|
562
|
-
}
|
|
563
|
-
// Execute transaction with async generator
|
|
564
|
-
store.transactions.createPositionNameEntity(() => yieldReturnYield());
|
|
565
|
-
// Wait for processing
|
|
566
|
-
await new Promise(resolve => setTimeout(resolve, 10));
|
|
567
|
-
// Verify the return value was used (not the unreachable yield)
|
|
568
|
-
const entities = store.select(["position", "name"]);
|
|
569
|
-
const returnedEntity = entities.find(entityId => {
|
|
570
|
-
const values = store.read(entityId);
|
|
571
|
-
return values?.name === "Returned";
|
|
572
|
-
});
|
|
573
|
-
expect(returnedEntity).toBeDefined();
|
|
574
|
-
const entityValues = store.read(returnedEntity);
|
|
575
|
-
expect(entityValues?.position).toEqual({ x: 2, y: 2, z: 2 });
|
|
576
|
-
expect(entityValues?.name).toBe("Returned");
|
|
577
|
-
// Verify observer was notified for both the yield and return operations
|
|
578
|
-
// Now that rollback is observable, we may get additional notifications
|
|
579
|
-
// The key is that we receive at least the minimum expected notifications
|
|
580
|
-
expect(observer).toHaveBeenCalledTimes(3); // 1 for yield + 1 for rollback + 1 for return
|
|
581
|
-
unsubscribe();
|
|
582
|
-
});
|
|
583
|
-
it("should verify rollback behavior works correctly for each async generator pattern independently", async () => {
|
|
584
|
-
// Define the three test patterns
|
|
585
|
-
const testPatterns = [
|
|
586
|
-
{
|
|
587
|
-
name: "yield-yield-yield (exhaustion)",
|
|
588
|
-
generator: async function* yieldYieldPattern() {
|
|
589
|
-
yield { position: { x: 1, y: 1, z: 1 }, name: "Step1" };
|
|
590
|
-
yield { position: { x: 2, y: 2, z: 2 }, name: "Step2" };
|
|
591
|
-
yield { position: { x: 3, y: 3, z: 3 }, name: "Step3" };
|
|
592
|
-
},
|
|
593
|
-
expectedFinalName: "Step3",
|
|
594
|
-
expectedFinalPosition: { x: 3, y: 3, z: 3 }
|
|
595
|
-
},
|
|
596
|
-
{
|
|
597
|
-
name: "yield-then-return",
|
|
598
|
-
generator: async function* yieldThenReturn() {
|
|
599
|
-
yield { position: { x: 10, y: 10, z: 10 }, name: "StepA" };
|
|
600
|
-
return { position: { x: 20, y: 20, z: 20 }, name: "StepB" };
|
|
601
|
-
},
|
|
602
|
-
expectedFinalName: "StepB",
|
|
603
|
-
expectedFinalPosition: { x: 20, y: 20, z: 20 }
|
|
604
|
-
},
|
|
605
|
-
{
|
|
606
|
-
name: "return-only (no yields)",
|
|
607
|
-
generator: async function* returnOnly() {
|
|
608
|
-
// This generator yields nothing but returns a value
|
|
609
|
-
return { position: { x: 100, y: 200, z: 300 }, name: "ReturnOnly" };
|
|
610
|
-
},
|
|
611
|
-
expectedFinalName: "ReturnOnly",
|
|
612
|
-
expectedFinalPosition: { x: 100, y: 200, z: 300 }
|
|
613
|
-
}
|
|
614
|
-
];
|
|
615
|
-
// Test each pattern independently
|
|
616
|
-
for (const pattern of testPatterns) {
|
|
617
|
-
const store = createTestDatabase();
|
|
618
|
-
const transactionObserver = vi.fn();
|
|
619
|
-
const unsubscribe = store.observe.transactions(transactionObserver);
|
|
620
|
-
const entitiesBefore = store.select(["position", "name"]);
|
|
621
|
-
expect(entitiesBefore.length).toBe(0);
|
|
622
|
-
// Await completion this specific pattern
|
|
623
|
-
await store.transactions.createPositionNameEntity(() => pattern.generator());
|
|
624
|
-
// Verify that exactly ONE entity was created for this pattern
|
|
625
|
-
const entitiesAfter = store.select(["position", "name"]);
|
|
626
|
-
expect(entitiesAfter.length).toBe(1);
|
|
627
|
-
// Verify the final entity has the correct values
|
|
628
|
-
const finalEntity = entitiesAfter[0];
|
|
629
|
-
const finalEntityValues = store.read(finalEntity);
|
|
630
|
-
expect(finalEntityValues).toBeDefined();
|
|
631
|
-
expect(finalEntityValues?.position).toEqual(pattern.expectedFinalPosition);
|
|
632
|
-
expect(finalEntityValues?.name).toBe(pattern.expectedFinalName);
|
|
633
|
-
// Verify that NO intermediate entities exist for this pattern
|
|
634
|
-
const intermediateEntities = entitiesAfter.filter(entityId => {
|
|
635
|
-
const values = store.read(entityId);
|
|
636
|
-
// Check for any entities that might be intermediate steps
|
|
637
|
-
if (pattern.name.includes("yield-yield-yield")) {
|
|
638
|
-
return values?.name === "Step1" || values?.name === "Step2";
|
|
639
|
-
}
|
|
640
|
-
else if (pattern.name.includes("yield-then-return")) {
|
|
641
|
-
return values?.name === "StepA";
|
|
642
|
-
}
|
|
643
|
-
// return-only pattern has no intermediate entities
|
|
644
|
-
return false;
|
|
645
|
-
});
|
|
646
|
-
// CRITICAL: Should have NO intermediate entities (rollback worked)
|
|
647
|
-
expect(intermediateEntities).toHaveLength(0);
|
|
648
|
-
// Verify transaction observer was called appropriately
|
|
649
|
-
// Each pattern should have at least the minimum expected calls
|
|
650
|
-
const minExpectedCalls = pattern.name.includes("yield-yield-yield") ? 7 :
|
|
651
|
-
pattern.name.includes("yield-then-return") ? 3 : 1;
|
|
652
|
-
expect(transactionObserver).toHaveBeenCalledTimes(minExpectedCalls);
|
|
653
|
-
// Pattern verification complete
|
|
654
|
-
unsubscribe();
|
|
655
|
-
}
|
|
656
|
-
});
|
|
657
|
-
});
|
|
658
|
-
describe("toData/fromData functionality", () => {
|
|
659
|
-
it("should serialize and deserialize database state correctly", () => {
|
|
660
|
-
const store = createTestDatabase();
|
|
661
|
-
// Create some entities and update resources
|
|
662
|
-
const entity1 = store.transactions.createPositionEntity({
|
|
663
|
-
position: { x: 1, y: 2, z: 3 }
|
|
664
|
-
});
|
|
665
|
-
const entity2 = store.transactions.createFullEntity({
|
|
666
|
-
position: { x: 4, y: 5, z: 6 },
|
|
667
|
-
health: { current: 100, max: 100 },
|
|
668
|
-
name: "TestEntity"
|
|
669
|
-
});
|
|
670
|
-
store.transactions.updateTime({ delta: 0.033, elapsed: 1.5 });
|
|
671
|
-
// Serialize the database
|
|
672
|
-
const serializedData = store.toData();
|
|
673
|
-
// Create a new database and restore from serialized data
|
|
674
|
-
const newStore = createTestDatabase();
|
|
675
|
-
newStore.fromData(serializedData);
|
|
676
|
-
// Verify entities are restored
|
|
677
|
-
const restoredEntities = newStore.select(["position"]);
|
|
678
|
-
expect(restoredEntities).toHaveLength(2);
|
|
679
|
-
// Verify entity data is correct
|
|
680
|
-
const restoredData1 = newStore.read(restoredEntities[0]);
|
|
681
|
-
const restoredData2 = newStore.read(restoredEntities[1]);
|
|
682
|
-
expect(restoredData1).toEqual({
|
|
683
|
-
id: restoredEntities[0],
|
|
684
|
-
position: { x: 1, y: 2, z: 3 }
|
|
685
|
-
});
|
|
686
|
-
expect(restoredData2).toEqual({
|
|
687
|
-
id: restoredEntities[1],
|
|
688
|
-
position: { x: 4, y: 5, z: 6 },
|
|
689
|
-
health: { current: 100, max: 100 },
|
|
690
|
-
name: "TestEntity"
|
|
691
|
-
});
|
|
692
|
-
// Verify resources are restored
|
|
693
|
-
expect(newStore.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
|
|
694
|
-
});
|
|
695
|
-
it("should restore applied entry ordering after serialization", () => {
|
|
696
|
-
const store = createTestDatabase(createSequentialClock([2, 1], 2));
|
|
697
|
-
store.transactions.createPositionNameEntity({
|
|
698
|
-
position: { x: 10, y: 20, z: 30 },
|
|
699
|
-
name: "LateCommit",
|
|
700
|
-
});
|
|
701
|
-
store.transactions.createPositionNameEntity({
|
|
702
|
-
position: { x: 40, y: 50, z: 60 },
|
|
703
|
-
name: "EarlyCommit",
|
|
704
|
-
});
|
|
705
|
-
const serializedData = store.toData();
|
|
706
|
-
expect(Array.isArray(serializedData.appliedEntries)).toBe(true);
|
|
707
|
-
const newStore = createTestDatabase(createSequentialClock([0.5], 1));
|
|
708
|
-
newStore.fromData(serializedData);
|
|
709
|
-
newStore.transactions.createPositionNameEntity({
|
|
710
|
-
position: { x: 70, y: 80, z: 90 },
|
|
711
|
-
name: "EarliestCommit",
|
|
712
|
-
});
|
|
713
|
-
const entities = newStore.select(["name"]);
|
|
714
|
-
const names = entities
|
|
715
|
-
.map(entityId => newStore.read(entityId)?.name)
|
|
716
|
-
.filter((name) => Boolean(name));
|
|
717
|
-
expect(new Set(names)).toEqual(new Set(["EarliestCommit", "LateCommit", "EarlyCommit"]));
|
|
718
|
-
});
|
|
719
|
-
it("should remove cancelled applied entries", async () => {
|
|
720
|
-
const store = createTestDatabase();
|
|
721
|
-
let rejectGenerator = () => { };
|
|
722
|
-
const generator = async function* () {
|
|
723
|
-
yield { position: { x: 1, y: 1, z: 1 }, name: "Transient" };
|
|
724
|
-
await new Promise((_, reject) => {
|
|
725
|
-
rejectGenerator = reject;
|
|
726
|
-
});
|
|
727
|
-
};
|
|
728
|
-
const promise = store.transactions.createPositionNameEntity(generator);
|
|
729
|
-
// Allow the first yield to be processed
|
|
730
|
-
await new Promise(resolve => setTimeout(resolve, 0));
|
|
731
|
-
const serializedBefore = store.toData();
|
|
732
|
-
expect(serializedBefore.appliedEntries).toHaveLength(1);
|
|
733
|
-
const transientId = serializedBefore.appliedEntries[0].id;
|
|
734
|
-
store.cancelTransaction(transientId);
|
|
735
|
-
rejectGenerator(new Error("cancelled"));
|
|
736
|
-
await expect(promise).rejects.toThrow("cancelled");
|
|
737
|
-
const serializedAfter = store.toData();
|
|
738
|
-
expect(serializedAfter.appliedEntries ?? []).toHaveLength(0);
|
|
739
|
-
const entities = store.select(["position"]);
|
|
740
|
-
expect(entities).toHaveLength(0);
|
|
741
|
-
});
|
|
742
|
-
it("should preserve transaction functionality after restoration", () => {
|
|
743
|
-
const store = createTestDatabase();
|
|
744
|
-
// Create initial state
|
|
745
|
-
store.transactions.updateTime({ delta: 0.016, elapsed: 0 });
|
|
746
|
-
// Serialize the database
|
|
747
|
-
const serializedData = store.toData();
|
|
748
|
-
// Create a new database and restore
|
|
749
|
-
const newStore = createTestDatabase();
|
|
750
|
-
newStore.fromData(serializedData);
|
|
751
|
-
// Verify transactions still work
|
|
752
|
-
const entity = newStore.transactions.createPositionEntity({
|
|
753
|
-
position: { x: 1, y: 2, z: 3 }
|
|
754
|
-
});
|
|
755
|
-
expect(entity).toBeDefined();
|
|
756
|
-
expect(typeof entity).toBe("number");
|
|
757
|
-
const entityData = newStore.read(entity);
|
|
758
|
-
expect(entityData).toEqual({
|
|
759
|
-
id: entity,
|
|
760
|
-
position: { x: 1, y: 2, z: 3 }
|
|
761
|
-
});
|
|
762
|
-
// Verify resource transactions work
|
|
763
|
-
newStore.transactions.updateTime({ delta: 0.033, elapsed: 1.5 });
|
|
764
|
-
expect(newStore.resources.time).toEqual({ delta: 0.033, elapsed: 1.5 });
|
|
765
|
-
});
|
|
766
|
-
it("all transient operations should be rolled back", async () => {
|
|
767
|
-
const store = createTestDatabase();
|
|
768
|
-
const promise = store.transactions.startGenerating(async function* () {
|
|
769
|
-
yield { progress: 0 };
|
|
770
|
-
yield { progress: 1 };
|
|
771
|
-
});
|
|
772
|
-
// Check that the result is a promise
|
|
773
|
-
expect(promise).toBeInstanceOf(Promise);
|
|
774
|
-
const result = await promise;
|
|
775
|
-
expect(result).toBe(-1);
|
|
776
|
-
const generating = await toPromise(store.observe.resources.generating);
|
|
777
|
-
expect(generating).toBe(false);
|
|
778
|
-
});
|
|
779
|
-
});
|
|
780
|
-
describe("No-op transaction prevention", () => {
|
|
781
|
-
it("should not emit a transaction that makes no changes", () => {
|
|
782
|
-
const store = createTestDatabase();
|
|
783
|
-
// Track how many times the observer is called
|
|
784
|
-
const observer = vi.fn();
|
|
785
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
786
|
-
// Clear any initial calls
|
|
787
|
-
observer.mockClear();
|
|
788
|
-
// Create a no-op transaction (doesn't modify anything)
|
|
789
|
-
const { baseStore, transactions } = createStoreConfig();
|
|
790
|
-
const database = createDatabase(baseStore, {
|
|
791
|
-
...transactions,
|
|
792
|
-
noOpTransaction(t, _args) {
|
|
793
|
-
// This transaction does nothing
|
|
794
|
-
}
|
|
795
|
-
});
|
|
796
|
-
const positionObserver = vi.fn();
|
|
797
|
-
const unsub = database.observe.components.position(positionObserver);
|
|
798
|
-
positionObserver.mockClear();
|
|
799
|
-
// Execute the no-op transaction
|
|
800
|
-
database.transactions.noOpTransaction({});
|
|
801
|
-
// Verify no notification was sent
|
|
802
|
-
expect(positionObserver).not.toHaveBeenCalled();
|
|
803
|
-
unsub();
|
|
804
|
-
});
|
|
805
|
-
it("should not add no-op transactions to the undo stack", async () => {
|
|
806
|
-
const store = createTestDatabase();
|
|
807
|
-
// Create database with undo-redo service
|
|
808
|
-
const { baseStore, transactions } = createStoreConfig();
|
|
809
|
-
const database = createDatabase(baseStore, {
|
|
810
|
-
...transactions,
|
|
811
|
-
noOpTransaction(t, _args) {
|
|
812
|
-
t.undoable = { coalesce: false };
|
|
813
|
-
// This transaction does nothing
|
|
814
|
-
},
|
|
815
|
-
applyOperations(t, operations) {
|
|
816
|
-
applyOperations(t, operations);
|
|
817
|
-
}
|
|
818
|
-
});
|
|
819
|
-
const undoRedo = createUndoRedoService(database);
|
|
820
|
-
// Execute the no-op transaction
|
|
821
|
-
database.transactions.noOpTransaction({});
|
|
822
|
-
// Verify the undo stack is empty (need to await the observable)
|
|
823
|
-
const undoStack = await toPromise(undoRedo.undoStack);
|
|
824
|
-
expect(undoStack).toHaveLength(0);
|
|
825
|
-
});
|
|
826
|
-
it("should emit a transaction that makes changes", () => {
|
|
827
|
-
const store = createTestDatabase();
|
|
828
|
-
const observer = vi.fn();
|
|
829
|
-
const unsubscribe = store.observe.components.position(observer);
|
|
830
|
-
observer.mockClear();
|
|
831
|
-
// Create an entity (makes changes)
|
|
832
|
-
store.transactions.createPositionEntity({ position: { x: 1, y: 2, z: 3 } });
|
|
833
|
-
// Verify notification was sent
|
|
834
|
-
expect(observer).toHaveBeenCalled();
|
|
835
|
-
unsubscribe();
|
|
836
|
-
});
|
|
837
|
-
it("should detect true no-op when transaction reads but doesn't modify", async () => {
|
|
838
|
-
const { baseStore, transactions } = createStoreConfig();
|
|
839
|
-
const database = createDatabase(baseStore, {
|
|
840
|
-
...transactions,
|
|
841
|
-
readOnlyTransaction(t, args) {
|
|
842
|
-
t.undoable = { coalesce: false };
|
|
843
|
-
// Just read the entity but don't modify it
|
|
844
|
-
const current = t.read(args.entity);
|
|
845
|
-
// Do nothing with the data - this is a true no-op
|
|
846
|
-
},
|
|
847
|
-
applyOperations(t, operations) {
|
|
848
|
-
applyOperations(t, operations);
|
|
849
|
-
}
|
|
850
|
-
});
|
|
851
|
-
// Create an entity
|
|
852
|
-
const entity = database.transactions.createPositionEntity({ position: { x: 1, y: 2, z: 3 } });
|
|
853
|
-
const undoRedo = createUndoRedoService(database);
|
|
854
|
-
const initialStackLength = (await toPromise(undoRedo.undoStack)).length;
|
|
855
|
-
// Execute read-only transaction (true no-op)
|
|
856
|
-
database.transactions.readOnlyTransaction({ entity });
|
|
857
|
-
// Verify no new undo entry was added
|
|
858
|
-
const finalStackLength = (await toPromise(undoRedo.undoStack)).length;
|
|
859
|
-
expect(finalStackLength).toBe(initialStackLength);
|
|
860
|
-
});
|
|
861
|
-
});
|
|
862
|
-
describe("extend", () => {
|
|
863
|
-
it("extends schema and exposes new archetypes and resources", () => {
|
|
864
|
-
const baseStore = Store.create({
|
|
865
|
-
components: { position: { type: "number" } },
|
|
866
|
-
resources: { gravity: { type: "number", default: 9.8 } },
|
|
867
|
-
archetypes: { Position: ["position"] },
|
|
868
|
-
});
|
|
869
|
-
const database = createDatabase(baseStore, {
|
|
870
|
-
setPosition(t, args) {
|
|
871
|
-
t.update(args.entity, { position: args.position });
|
|
872
|
-
},
|
|
873
|
-
});
|
|
874
|
-
const original = baseStore.archetypes.Position.insert({ position: 1 });
|
|
875
|
-
database.transactions.setPosition({ entity: original, position: 2 });
|
|
876
|
-
expect(database.read(original)?.position).toBe(2);
|
|
877
|
-
const extendedDatabase = database.extend({
|
|
878
|
-
components: { velocity: { type: "number" } },
|
|
879
|
-
resources: { drag: { type: "number", default: 1 } },
|
|
880
|
-
archetypes: { Dynamic: ["position", "velocity"] },
|
|
881
|
-
});
|
|
882
|
-
const dynamic = baseStore.archetypes.Dynamic.insert({ position: 0, velocity: 5 });
|
|
883
|
-
expect(extendedDatabase.read(dynamic)?.velocity).toBe(5);
|
|
884
|
-
expect(extendedDatabase.resources.drag).toBe(1);
|
|
885
|
-
baseStore.resources.drag = 2;
|
|
886
|
-
expect(extendedDatabase.resources.drag).toBe(2);
|
|
887
|
-
});
|
|
888
|
-
it("throws when extending with conflicting schema", () => {
|
|
889
|
-
const baseStore = Store.create({
|
|
890
|
-
components: { position: { type: "number" } },
|
|
891
|
-
resources: {},
|
|
892
|
-
archetypes: { Position: ["position"] },
|
|
893
|
-
});
|
|
894
|
-
const database = createDatabase(baseStore, {});
|
|
895
|
-
expect(() => database.extend({
|
|
896
|
-
components: { position: { type: "string" } },
|
|
897
|
-
resources: {},
|
|
898
|
-
archetypes: {},
|
|
899
|
-
})).toThrow("Component schema for \"position\" must be identical when extending.");
|
|
900
|
-
});
|
|
901
|
-
});
|
|
902
|
-
});
|
|
903
|
-
//# sourceMappingURL=create-database.test.js.map
|