@adobe/data 0.4.6 → 0.4.8
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/README.md +310 -0
- package/dist/cache/functions/bind-functions.d.ts +6 -0
- package/dist/cache/functions/bind-functions.js +33 -0
- package/dist/cache/functions/bind-functions.js.map +1 -0
- package/dist/cache/functions/hashing/arrayBufferToHex.d.ts +1 -0
- package/dist/cache/functions/hashing/arrayBufferToHex.js +27 -0
- package/dist/cache/functions/hashing/arrayBufferToHex.js.map +1 -0
- package/dist/cache/functions/omit.d.ts +1 -0
- package/dist/cache/functions/omit.js +29 -0
- package/dist/cache/functions/omit.js.map +1 -0
- package/dist/cache/functions/types.d.ts +1 -0
- package/dist/{ecs/database/store-schema/store-schema.js → cache/functions/types.js} +1 -1
- package/dist/cache/functions/types.js.map +1 -0
- package/dist/core/data.d.ts +22 -0
- package/dist/core/data.js +52 -0
- package/dist/core/data.js.map +1 -0
- package/dist/{ecs/database/database-schema/create-store-schema-test.js → core/data.test.js} +26 -14
- package/dist/core/data.test.js.map +1 -0
- package/dist/core/functions/array-equals.d.ts +1 -0
- package/dist/core/functions/array-equals.js +34 -0
- package/dist/core/functions/array-equals.js.map +1 -0
- package/dist/core/functions/deep-merge.d.ts +32 -0
- package/dist/core/functions/deep-merge.js +54 -0
- package/dist/core/functions/deep-merge.js.map +1 -0
- package/dist/core/functions/deep-merge.test.js +94 -0
- package/dist/core/functions/deep-merge.test.js.map +1 -0
- package/dist/core/functions/index.d.ts +3 -0
- package/dist/core/functions/index.js +25 -0
- package/dist/core/functions/index.js.map +1 -0
- package/dist/core/functions/is-async-generator.d.ts +1 -0
- package/dist/{ecs/database/database-schema/create-store-schema.js → core/functions/is-async-generator.js} +3 -4
- package/dist/core/functions/is-async-generator.js.map +1 -0
- package/dist/core/functions/is-promise.d.ts +1 -0
- package/dist/core/functions/is-promise.js +26 -0
- package/dist/core/functions/is-promise.js.map +1 -0
- package/dist/core/functions/with-validation.d.ts +5 -0
- package/dist/core/functions/with-validation.js +38 -0
- package/dist/core/functions/with-validation.js.map +1 -0
- package/dist/core/functions/with-validation.test.js +96 -0
- package/dist/core/functions/with-validation.test.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.js +25 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/schema/dynamic/dynamic-schema.d.ts +27 -0
- package/dist/core/schema/dynamic/dynamic-schema.js +2 -0
- package/dist/core/schema/dynamic/dynamic-schema.js.map +1 -0
- package/dist/core/schema/dynamic/enumerate-patches.d.ts +9 -0
- package/dist/core/schema/dynamic/enumerate-patches.js +50 -0
- package/dist/core/schema/dynamic/enumerate-patches.js.map +1 -0
- package/dist/core/schema/dynamic/enumerate-patches.test.d.ts +134 -0
- package/dist/core/schema/dynamic/enumerate-patches.test.js +209 -0
- package/dist/core/schema/dynamic/enumerate-patches.test.js.map +1 -0
- package/dist/core/schema/dynamic/get-dynamic-schema.d.ts +5 -0
- package/dist/core/schema/dynamic/get-dynamic-schema.js +26 -0
- package/dist/core/schema/dynamic/get-dynamic-schema.js.map +1 -0
- package/dist/core/schema/dynamic/get-dynamic-schema.test.d.ts +1 -0
- package/dist/core/schema/dynamic/get-dynamic-schema.test.js +94 -0
- package/dist/core/schema/dynamic/get-dynamic-schema.test.js.map +1 -0
- package/dist/core/schema/dynamic/index.d.ts +1 -0
- package/dist/core/schema/dynamic/index.js +2 -0
- package/dist/core/schema/dynamic/index.js.map +1 -0
- package/dist/core/schema/dynamic/schema-path-value-path.d.ts +5 -0
- package/dist/core/schema/dynamic/schema-path-value-path.js +12 -0
- package/dist/core/schema/dynamic/schema-path-value-path.js.map +1 -0
- package/dist/core/schema/dynamic-schema.d.ts +27 -0
- package/dist/core/schema/dynamic-schema.js +2 -0
- package/dist/core/schema/dynamic-schema.js.map +1 -0
- package/dist/core/schema/index.d.ts +4 -0
- package/dist/{ecs/database/store-schema/create-store-schema.js → core/schema/index.js} +5 -5
- package/dist/core/schema/index.js.map +1 -0
- package/dist/core/schema/schema.d.ts +122 -0
- package/dist/core/schema/schema.js +34 -0
- package/dist/core/schema/schema.js.map +1 -0
- package/dist/core/schema/schemas.d.ts +45 -0
- package/dist/core/schema/schemas.js +39 -0
- package/dist/core/schema/schemas.js.map +1 -0
- package/dist/core/schema/ui-schema.d.ts +25 -0
- package/dist/core/schema/ui-schema.js +2 -0
- package/dist/core/schema/ui-schema.js.map +1 -0
- package/dist/core/schema/validation/is-valid.d.ts +2 -0
- package/dist/core/schema/validation/is-valid.js +14 -0
- package/dist/core/schema/validation/is-valid.js.map +1 -0
- package/dist/core/schema/validation/is-valid.test.d.ts +1 -0
- package/dist/core/schema/validation/is-valid.test.js +40 -0
- package/dist/core/schema/validation/is-valid.test.js.map +1 -0
- package/dist/core/schema/validation/validate.d.ts +2 -0
- package/dist/core/schema/validation/validate.js +38 -0
- package/dist/core/schema/validation/validate.js.map +1 -0
- package/dist/core/schema/validation/validate.test.d.ts +1 -0
- package/dist/core/schema/validation/validate.test.js +106 -0
- package/dist/core/schema/validation/validate.test.js.map +1 -0
- package/dist/core/schema/validation/with-validation.d.ts +5 -0
- package/dist/core/schema/validation/with-validation.js +16 -0
- package/dist/core/schema/validation/with-validation.js.map +1 -0
- package/dist/core/schema/validation/with-validation.test.d.ts +1 -0
- package/dist/core/schema/validation/with-validation.test.js +96 -0
- package/dist/core/schema/validation/with-validation.test.js.map +1 -0
- package/dist/core/schema.d.ts +86 -0
- package/dist/core/schema.js +33 -0
- package/dist/core/schema.js.map +1 -0
- package/dist/core/schema.test.d.ts +1 -0
- package/dist/core/schema.test.js +16 -0
- package/dist/core/schema.test.js.map +1 -0
- package/dist/core/schemas.d.ts +45 -0
- package/dist/core/schemas.js +39 -0
- package/dist/core/schemas.js.map +1 -0
- package/dist/ecs/action-ecs/action-ecs.d.ts +19 -0
- package/dist/ecs/action-ecs/action-ecs.js +203 -0
- package/dist/ecs/action-ecs/action-ecs.js.map +1 -0
- package/dist/ecs/action-ecs/action-ecs.test.d.ts +1 -0
- package/dist/ecs/action-ecs/action-ecs.test.js +362 -0
- package/dist/ecs/action-ecs/action-ecs.test.js.map +1 -0
- package/dist/ecs/action-ecs/action-types.d.ts +106 -0
- package/dist/ecs/action-ecs/action-types.js +19 -0
- package/dist/ecs/action-ecs/action-types.js.map +1 -0
- package/dist/ecs/action-ecs/index.d.ts +2 -0
- package/dist/ecs/{database/store-schema → action-ecs}/index.js +1 -2
- package/dist/ecs/action-ecs/index.js.map +1 -0
- package/dist/ecs/component-schemas.d.ts +2 -1
- package/dist/ecs/core-ecs/core-ecs-serialization.test.d.ts +1 -0
- package/dist/ecs/core-ecs/core-ecs-serialization.test.js +230 -0
- package/dist/ecs/core-ecs/core-ecs-serialization.test.js.map +1 -0
- package/dist/ecs/core-ecs/core-ecs-types.d.ts +141 -0
- package/dist/ecs/core-ecs/core-ecs-types.js +23 -0
- package/dist/ecs/core-ecs/core-ecs-types.js.map +1 -0
- package/dist/ecs/core-ecs/core-ecs.d.ts +7 -0
- package/dist/ecs/core-ecs/core-ecs.js +492 -0
- package/dist/ecs/core-ecs/core-ecs.js.map +1 -0
- package/dist/ecs/core-ecs/core-ecs.test.d.ts +1 -0
- package/dist/ecs/core-ecs/core-ecs.test.js +425 -0
- package/dist/ecs/core-ecs/core-ecs.test.js.map +1 -0
- package/dist/ecs/core-ecs/index.d.ts +1 -0
- package/dist/ecs/core-ecs/index.js +2 -0
- package/dist/ecs/core-ecs/index.js.map +1 -0
- package/dist/ecs/database/database-schema/create-database-schema-test.js +2 -2
- package/dist/ecs/database/database-schema/create-database-schema-test.js.map +1 -1
- package/dist/ecs/database/database-schema/create-database-schema.d.ts +4 -1
- package/dist/ecs/database/database-schema/create-database-schema.js +2 -2
- package/dist/ecs/database/database-schema/create-database-schema.js.map +1 -1
- package/dist/ecs/database/database-schema/database-schema.d.ts +5 -2
- package/dist/ecs/database/database-schema/index.d.ts +2 -2
- package/dist/ecs/database/database-schema/index.js +2 -2
- package/dist/ecs/database/database-schema/index.js.map +1 -1
- package/dist/ecs/database/register-database-codec.d.ts +1 -0
- package/dist/ecs/database/register-database-codec.js +35 -0
- package/dist/ecs/database/register-database-codec.js.map +1 -0
- package/dist/ecs/database/register-database-codecs.d.ts +1 -0
- package/dist/ecs/database/register-database-codecs.js +35 -0
- package/dist/ecs/database/register-database-codecs.js.map +1 -0
- package/dist/ecs/database/register-store-codec.d.ts +1 -0
- package/dist/ecs/database/register-store-codec.js +35 -0
- package/dist/ecs/database/register-store-codec.js.map +1 -0
- package/dist/ecs/database/register-typed-buffer-codecs.d.ts +1 -0
- package/dist/ecs/database/register-typed-buffer-codecs.js +80 -0
- package/dist/ecs/database/register-typed-buffer-codecs.js.map +1 -0
- package/dist/ecs/database/transactional-store/apply-write-operations.d.ts +7 -0
- package/dist/ecs/database/transactional-store/apply-write-operations.js +20 -0
- package/dist/ecs/database/transactional-store/apply-write-operations.js.map +1 -0
- package/dist/ecs/database/transactional-store/applyWriteOperations.d.ts +7 -0
- package/dist/ecs/database/transactional-store/applyWriteOperations.js +20 -0
- package/dist/ecs/database/transactional-store/applyWriteOperations.js.map +1 -0
- package/dist/ecs/database/transactional-store/create-test-transaction.d.ts +1 -0
- package/dist/ecs/database/transactional-store/create-test-transaction.js.map +1 -1
- package/dist/ecs/database/transactional-store/patch.d.ts +3 -0
- package/dist/ecs/database/transactional-store/patch.js +7 -0
- package/dist/ecs/database/transactional-store/patch.js.map +1 -0
- package/dist/ecs/database/transactional-store/undoable.d.ts +13 -0
- package/dist/ecs/database/{database-schema/store-schema.js → transactional-store/undoable.js} +1 -1
- package/dist/ecs/database/transactional-store/undoable.js.map +1 -0
- package/dist/ecs/database/transactional-store/with-undoable.d.ts +10 -0
- package/dist/ecs/database/transactional-store/with-undoable.js +13 -0
- package/dist/ecs/database/transactional-store/with-undoable.js.map +1 -0
- package/dist/ecs/database/with-undoable.d.ts +10 -0
- package/dist/ecs/database/with-undoable.js +13 -0
- package/dist/ecs/database/with-undoable.js.map +1 -0
- package/dist/ecs/ecs/ecs-types.d.ts +132 -0
- package/dist/ecs/ecs/ecs-types.js +23 -0
- package/dist/ecs/ecs/ecs-types.js.map +1 -0
- package/dist/ecs/ecs/ecs-where-functions.d.ts +6 -0
- package/dist/ecs/ecs/ecs-where-functions.js +91 -0
- package/dist/ecs/ecs/ecs-where-functions.js.map +1 -0
- package/dist/ecs/ecs/ecs.d.ts +13 -0
- package/dist/ecs/ecs/ecs.js +177 -0
- package/dist/ecs/ecs/ecs.js.map +1 -0
- package/dist/ecs/ecs/ecs.test.d.ts +1 -0
- package/dist/ecs/ecs/ecs.test.js +399 -0
- package/dist/ecs/ecs/ecs.test.js.map +1 -0
- package/dist/ecs/ecs/index.d.ts +3 -0
- package/dist/ecs/ecs/index.js +3 -0
- package/dist/ecs/ecs/index.js.map +1 -0
- package/dist/ecs/entity-location-table/register-database-codec.d.ts +1 -0
- package/dist/ecs/entity-location-table/register-database-codec.js +35 -0
- package/dist/ecs/entity-location-table/register-database-codec.js.map +1 -0
- package/dist/ecs/entity-location-table/register-entity-location-table-codec.d.ts +1 -0
- package/dist/{functions/serialization.test.js → ecs/entity-location-table/register-entity-location-table-codec.js} +20 -22
- package/dist/ecs/entity-location-table/register-entity-location-table-codec.js.map +1 -0
- package/dist/ecs/entity-location-table/register-entity-location-table-codec.test.d.ts +1 -0
- package/dist/ecs/entity-location-table/register-entity-location-table-codec.test.js +70 -0
- package/dist/ecs/entity-location-table/register-entity-location-table-codec.test.js.map +1 -0
- package/dist/ecs/persistence-service/create-persistence-service.d.ts +6 -0
- package/dist/ecs/persistence-service/create-persistence-service.js +24 -0
- package/dist/ecs/persistence-service/create-persistence-service.js.map +1 -0
- package/dist/ecs/persistence-service/create-session-persistence-service.d.ts +8 -0
- package/dist/ecs/persistence-service/create-session-persistence-service.js +49 -0
- package/dist/ecs/persistence-service/create-session-persistence-service.js.map +1 -0
- package/dist/ecs/persistence-service/persistence-service copy.d.ts +5 -0
- package/dist/ecs/persistence-service/persistence-service copy.js +2 -0
- package/dist/ecs/persistence-service/persistence-service copy.js.map +1 -0
- package/dist/ecs/persistence-service/to-blob-refs.d.ts +2 -0
- package/dist/ecs/persistence-service/to-blob-refs.js +3 -0
- package/dist/ecs/persistence-service/to-blob-refs.js.map +1 -0
- package/dist/ecs/persistence-service/undo-redo-service.d.ts +11 -0
- package/dist/ecs/persistence-service/undo-redo-service.js +23 -0
- package/dist/ecs/persistence-service/undo-redo-service.js.map +1 -0
- package/dist/ecs/resource-schemas.d.ts +4 -3
- package/dist/ecs/resource-schemas.js +21 -0
- package/dist/ecs/resource-schemas.js.map +1 -1
- package/dist/ecs/store/core/core.d.ts +8 -0
- package/dist/ecs/store/core/create-core.js +5 -0
- package/dist/ecs/store/core/create-core.js.map +1 -1
- package/dist/ecs/store/core/create-core.test.js +109 -0
- package/dist/ecs/store/core/create-core.test.js.map +1 -1
- package/dist/ecs/store/core/register-core-codec.d.ts +1 -0
- package/dist/ecs/{database/store-schema/create-store-schema-test.js → store/core/register-core-codec.js} +24 -15
- package/dist/ecs/store/core/register-core-codec.js.map +1 -0
- package/dist/ecs/store/core/register-core-codec.test.d.ts +1 -0
- package/dist/ecs/store/core/register-core-codec.test.js +136 -0
- package/dist/ecs/store/core/register-core-codec.test.js.map +1 -0
- package/dist/ecs/store/query.d.ts +47 -0
- package/dist/ecs/store/query.js +2 -0
- package/dist/ecs/store/query.js.map +1 -0
- package/dist/ecs/store/register-core-codec.d.ts +1 -0
- package/dist/ecs/store/register-core-codec.js +38 -0
- package/dist/ecs/store/register-core-codec.js.map +1 -0
- package/dist/ecs/store/register-store-codec.d.ts +1 -0
- package/dist/ecs/store/register-store-codec.js +38 -0
- package/dist/ecs/store/register-store-codec.js.map +1 -0
- package/dist/ecs/store/restore-store.d.ts +12 -0
- package/dist/ecs/store/restore-store.js +91 -0
- package/dist/ecs/store/restore-store.js.map +1 -0
- package/dist/ecs/store/select-options.d.ts +1 -0
- package/dist/ecs/store/select-options.js +16 -0
- package/dist/ecs/store/select-options.js.map +1 -0
- package/dist/ecs/store/select.d.ts +44 -0
- package/dist/ecs/store/select.js +2 -0
- package/dist/ecs/store/select.js.map +1 -0
- package/dist/ecs/transaction-ecs/index.d.ts +2 -0
- package/dist/ecs/transaction-ecs/index.js +24 -0
- package/dist/ecs/transaction-ecs/index.js.map +1 -0
- package/dist/ecs/transaction-ecs/transaction-ecs.d.ts +11 -0
- package/dist/ecs/transaction-ecs/transaction-ecs.js +184 -0
- package/dist/ecs/transaction-ecs/transaction-ecs.js.map +1 -0
- package/dist/ecs/transaction-ecs/transaction-ecs.test.d.ts +1 -0
- package/dist/ecs/transaction-ecs/transaction-ecs.test.js +599 -0
- package/dist/ecs/transaction-ecs/transaction-ecs.test.js.map +1 -0
- package/dist/ecs/transaction-ecs/transaction-types.d.ts +135 -0
- package/dist/ecs/transaction-ecs/transaction-types.js +2 -0
- package/dist/ecs/transaction-ecs/transaction-types.js.map +1 -0
- package/dist/ecs/transaction-ecs/transactions.d.ts +5 -0
- package/dist/ecs/transaction-ecs/transactions.js +158 -0
- package/dist/ecs/transaction-ecs/transactions.js.map +1 -0
- package/dist/ecs/undo-redo/create-undo-redo-actions.js +21 -0
- package/dist/ecs/undo-redo/create-undo-redo-actions.js.map +1 -1
- package/dist/ecs/undo-redo/create-undo-redo-actions.test.js.map +1 -1
- package/dist/ecs/undo-redo/do.d.ts +3 -0
- package/dist/ecs/undo-redo/do.js +3 -0
- package/dist/ecs/undo-redo/do.js.map +1 -0
- package/dist/ecs/undo-redo/index.d.ts +1 -0
- package/dist/ecs/undo-redo/index.js +23 -0
- package/dist/ecs/undo-redo/index.js.map +1 -0
- package/dist/functions/serialization/deserialize.d.ts +1 -4
- package/dist/functions/serialization/deserialize.js +1 -14
- package/dist/functions/serialization/deserialize.js.map +1 -1
- package/dist/functions/serialization/register-typed-array-codecs copy.d.ts +1 -0
- package/dist/functions/serialization/register-typed-array-codecs copy.js +13 -0
- package/dist/functions/serialization/register-typed-array-codecs copy.js.map +1 -0
- package/dist/functions/serialization/serialize-to-blobs copy.d.ts +8 -0
- package/dist/functions/serialization/serialize-to-blobs copy.js +21 -0
- package/dist/functions/serialization/serialize-to-blobs copy.js.map +1 -0
- package/dist/functions/serialization/serialize-to-blobs.js.map +1 -1
- package/dist/observe/to-async-generator.js +0 -4
- package/dist/observe/to-async-generator.js.map +1 -1
- package/dist/observe/with-map copy.d.ts +5 -0
- package/dist/observe/with-map copy.js +14 -0
- package/dist/observe/with-map copy.js.map +1 -0
- package/dist/package.json +129 -0
- package/dist/schema/f32 copy.d.ts +6 -0
- package/dist/schema/f32 copy.js +6 -0
- package/dist/schema/f32 copy.js.map +1 -0
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/index.js +23 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/schemas.d.ts +45 -0
- package/dist/schemas/schemas.js +39 -0
- package/dist/schemas/schemas.js.map +1 -0
- package/dist/service/progressive-result.d.ts +2 -1
- package/dist/service/progressive-result.js.map +1 -1
- package/dist/service/sequential-action.d.ts +18 -0
- package/dist/service/sequential-action.js +45 -0
- package/dist/service/sequential-action.js.map +1 -0
- package/dist/table/ensure-capacity copy.d.ts +2 -0
- package/dist/table/ensure-capacity copy.js +15 -0
- package/dist/table/ensure-capacity copy.js.map +1 -0
- package/dist/table/filter-rows.d.ts +2 -0
- package/dist/table/filter-rows.js +15 -0
- package/dist/table/filter-rows.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/ecs/database/database-schema/create-database-from-schema.d.ts +0 -12
- package/dist/ecs/database/database-schema/create-database-from-schema.js +0 -8
- package/dist/ecs/database/database-schema/create-database-from-schema.js.map +0 -1
- package/dist/ecs/database/database-schema/create-store-schema-test.js.map +0 -1
- package/dist/ecs/database/database-schema/create-store-schema.d.ts +0 -9
- package/dist/ecs/database/database-schema/create-store-schema.js.map +0 -1
- package/dist/ecs/database/database-schema/store-schema.d.ts +0 -12
- package/dist/ecs/database/database-schema/store-schema.js.map +0 -1
- package/dist/ecs/database/store-schema/create-store-schema-test.js.map +0 -1
- package/dist/ecs/database/store-schema/create-store-schema.d.ts +0 -9
- package/dist/ecs/database/store-schema/create-store-schema.js.map +0 -1
- package/dist/ecs/database/store-schema/index.d.ts +0 -2
- package/dist/ecs/database/store-schema/index.js.map +0 -1
- package/dist/ecs/database/store-schema/store-schema.d.ts +0 -12
- package/dist/ecs/database/store-schema/store-schema.js.map +0 -1
- package/dist/functions/serialization/serialization.d.ts +0 -23
- package/dist/functions/serialization/serialization.js +0 -58
- package/dist/functions/serialization/serialization.js.map +0 -1
- package/dist/functions/serialization.d.ts +0 -23
- package/dist/functions/serialization.js +0 -58
- package/dist/functions/serialization.js.map +0 -1
- package/dist/functions/serialization.test.js.map +0 -1
- package/dist/functions/serialize.d.ts +0 -17
- package/dist/functions/serialize.js +0 -66
- package/dist/functions/serialize.js.map +0 -1
- /package/dist/{ecs/database/database-schema/create-store-schema-test.d.ts → core/data.test.d.ts} +0 -0
- /package/dist/{ecs/database/store-schema/create-store-schema-test.d.ts → core/functions/deep-merge.test.d.ts} +0 -0
- /package/dist/{functions/serialization.test.d.ts → core/functions/with-validation.test.d.ts} +0 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { DeepReadonly } from "../types/types.js";
|
|
2
|
+
export type Schema = {
|
|
3
|
+
type?: 'number' | 'integer' | 'string' | 'boolean' | 'null' | 'array' | 'object';
|
|
4
|
+
minimum?: number;
|
|
5
|
+
precision?: 1 | 2;
|
|
6
|
+
default?: any;
|
|
7
|
+
maximum?: number;
|
|
8
|
+
pattern?: string;
|
|
9
|
+
minItems?: number;
|
|
10
|
+
maxItems?: number;
|
|
11
|
+
items?: Schema;
|
|
12
|
+
properties?: {
|
|
13
|
+
readonly [key: string]: Schema;
|
|
14
|
+
};
|
|
15
|
+
required?: readonly string[];
|
|
16
|
+
additionalProperties?: boolean | Schema;
|
|
17
|
+
oneOf?: readonly Schema[];
|
|
18
|
+
const?: any;
|
|
19
|
+
enum?: readonly any[];
|
|
20
|
+
};
|
|
21
|
+
export type FromSchema<T, Depth extends number = 5> = DeepReadonly<Depth extends 0 ? any : T extends {
|
|
22
|
+
const: infer Const;
|
|
23
|
+
} ? Const : T extends {
|
|
24
|
+
enum: infer Enum;
|
|
25
|
+
} ? Enum extends ReadonlyArray<any> ? Enum[number] : never : T extends {
|
|
26
|
+
oneOf: infer Schemas;
|
|
27
|
+
} ? Schemas extends ReadonlyArray<Schema> ? FromOneOfSchema<Schemas, Decrement<Depth>> : never : T extends {
|
|
28
|
+
type: 'number' | 'integer';
|
|
29
|
+
} ? number : T extends {
|
|
30
|
+
type: 'string';
|
|
31
|
+
} ? string : T extends {
|
|
32
|
+
type: 'boolean';
|
|
33
|
+
} ? boolean : T extends {
|
|
34
|
+
type: 'null';
|
|
35
|
+
} ? null : T extends {
|
|
36
|
+
type: 'array';
|
|
37
|
+
} | {
|
|
38
|
+
items: any;
|
|
39
|
+
} ? FromSchemaArray<T, Decrement<Depth>> : T extends {
|
|
40
|
+
type: 'object';
|
|
41
|
+
} | {
|
|
42
|
+
properties: any;
|
|
43
|
+
} ? FromSchemaObject<T, Decrement<Depth>> : any>;
|
|
44
|
+
type Decrement<N extends number> = ((...x: any[]) => void) extends (arg: any, ...rest: infer R) => void ? R['length'] : never;
|
|
45
|
+
type FromSchemaArray<T, Depth extends number> = T extends {
|
|
46
|
+
items: infer Items;
|
|
47
|
+
} ? T extends {
|
|
48
|
+
minItems: infer Min;
|
|
49
|
+
maxItems: infer Max;
|
|
50
|
+
} ? Equal<Min, Max> extends true ? BuildTuple<FromSchema<Items, Depth>, Min> : FromSchema<Items, Depth>[] : FromSchema<Items, Depth>[] : any[];
|
|
51
|
+
type BuildTuple<T, N, R extends unknown[] = []> = R['length'] extends N ? R : BuildTuple<T, N, [...R, T]>;
|
|
52
|
+
type FromSchemaObject<T extends Schema, Depth extends number> = T extends {
|
|
53
|
+
properties: infer P;
|
|
54
|
+
} ? Simplify<{
|
|
55
|
+
[K in RequiredKeys<T>]: FromSchema<P[K], Depth>;
|
|
56
|
+
} & {
|
|
57
|
+
[K in OptionalKeys<T>]?: FromSchema<P[K], Depth>;
|
|
58
|
+
} & (T extends {
|
|
59
|
+
additionalProperties: infer AP;
|
|
60
|
+
} ? AP extends false ? {} : AP extends Schema ? {
|
|
61
|
+
[key: string]: FromSchema<AP, Depth>;
|
|
62
|
+
} : {
|
|
63
|
+
[key: string]: any;
|
|
64
|
+
} : {
|
|
65
|
+
[key: string]: any;
|
|
66
|
+
})> : T extends {
|
|
67
|
+
additionalProperties: infer AP;
|
|
68
|
+
} ? AP extends Schema ? {
|
|
69
|
+
[key: string]: FromSchema<AP, Depth>;
|
|
70
|
+
} : {
|
|
71
|
+
[key: string]: any;
|
|
72
|
+
} : {
|
|
73
|
+
[key: string]: any;
|
|
74
|
+
};
|
|
75
|
+
type RequiredKeys<T> = T extends {
|
|
76
|
+
required: infer R;
|
|
77
|
+
} ? R extends readonly (infer K)[] ? K extends string ? K : never : never : never;
|
|
78
|
+
type OptionalKeys<T> = T extends {
|
|
79
|
+
properties: infer P;
|
|
80
|
+
} ? Exclude<keyof P, RequiredKeys<T>> : never;
|
|
81
|
+
type Equal<A, B> = (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2 ? true : false;
|
|
82
|
+
type Simplify<T> = T extends infer O ? {
|
|
83
|
+
[K in keyof O]: O[K];
|
|
84
|
+
} : never;
|
|
85
|
+
type FromOneOfSchema<Schemas extends ReadonlyArray<Schema>, Depth extends number> = Schemas[number] extends infer S ? S extends Schema ? FromSchema<S, Depth> : never : never;
|
|
86
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
const mySchema = {
|
|
23
|
+
type: 'object',
|
|
24
|
+
properties: {
|
|
25
|
+
a: { type: 'number' },
|
|
26
|
+
b: { type: 'string' },
|
|
27
|
+
c: { enum: [1, 2, 3] }
|
|
28
|
+
},
|
|
29
|
+
required: ['a', 'c'],
|
|
30
|
+
additionalProperties: false,
|
|
31
|
+
};
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AAqJX,MAAM,QAAQ,GAAG;IACf,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACrB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACrB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;KACvB;IACD,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IACpB,oBAAoB,EAAE,KAAK;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { describe, it } from "vitest";
|
|
2
|
+
describe("Schema", () => {
|
|
3
|
+
it("should provide compile time and runtime type validation", () => {
|
|
4
|
+
const mySchema = {
|
|
5
|
+
type: "object",
|
|
6
|
+
required: ["name", "aspect"],
|
|
7
|
+
properties: {
|
|
8
|
+
name: { type: "string" },
|
|
9
|
+
age: { type: "integer", minimum: 0 },
|
|
10
|
+
aspect: { enum: ["landscape", "portrait"] },
|
|
11
|
+
},
|
|
12
|
+
additionalProperties: false,
|
|
13
|
+
};
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=schema.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../src/core/schema.test.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEtC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC5B,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;gBACpC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE;aAC5C;YACD,oBAAoB,EAAE,KAAK;SACF,CAAC;IAiB9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Schema } from "./index.js";
|
|
2
|
+
export declare function Nullable<T extends Schema>(schema: T): {
|
|
3
|
+
oneOf: [T, {
|
|
4
|
+
type: "null";
|
|
5
|
+
}];
|
|
6
|
+
};
|
|
7
|
+
export declare function Tuple<T extends Schema, N extends number>(items: T, length: N): {
|
|
8
|
+
readonly type: "array";
|
|
9
|
+
readonly items: T;
|
|
10
|
+
readonly minItems: N;
|
|
11
|
+
readonly maxItems: N;
|
|
12
|
+
};
|
|
13
|
+
export declare const TrueSchema: {
|
|
14
|
+
readonly const: true;
|
|
15
|
+
};
|
|
16
|
+
export declare const BooleanSchema: {
|
|
17
|
+
readonly type: "boolean";
|
|
18
|
+
};
|
|
19
|
+
export declare const Float32Schema: {
|
|
20
|
+
readonly type: "number";
|
|
21
|
+
readonly precision: 1;
|
|
22
|
+
};
|
|
23
|
+
export declare const Float64Schema: {
|
|
24
|
+
readonly type: "number";
|
|
25
|
+
readonly precision: 2;
|
|
26
|
+
};
|
|
27
|
+
export declare const TimeSchema: {
|
|
28
|
+
readonly type: "number";
|
|
29
|
+
readonly precision: 2;
|
|
30
|
+
};
|
|
31
|
+
export declare const Uint8Schema: {
|
|
32
|
+
readonly type: "integer";
|
|
33
|
+
readonly minimum: 0;
|
|
34
|
+
readonly maximum: 255;
|
|
35
|
+
};
|
|
36
|
+
export declare const Uint16Schema: {
|
|
37
|
+
readonly type: "integer";
|
|
38
|
+
readonly minimum: 0;
|
|
39
|
+
readonly maximum: 65535;
|
|
40
|
+
};
|
|
41
|
+
export declare const Uint32Schema: {
|
|
42
|
+
readonly type: "integer";
|
|
43
|
+
readonly minimum: 0;
|
|
44
|
+
readonly maximum: 4294967295;
|
|
45
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export function Nullable(schema) {
|
|
2
|
+
return {
|
|
3
|
+
oneOf: [schema, { type: "null" }],
|
|
4
|
+
};
|
|
5
|
+
}
|
|
6
|
+
export function Tuple(items, length) {
|
|
7
|
+
return { type: "array", items, minItems: length, maxItems: length };
|
|
8
|
+
}
|
|
9
|
+
export const TrueSchema = {
|
|
10
|
+
const: true,
|
|
11
|
+
};
|
|
12
|
+
export const BooleanSchema = {
|
|
13
|
+
type: "boolean",
|
|
14
|
+
};
|
|
15
|
+
export const Float32Schema = {
|
|
16
|
+
type: "number",
|
|
17
|
+
precision: 1,
|
|
18
|
+
};
|
|
19
|
+
export const Float64Schema = {
|
|
20
|
+
type: "number",
|
|
21
|
+
precision: 2,
|
|
22
|
+
};
|
|
23
|
+
export const TimeSchema = Float64Schema;
|
|
24
|
+
export const Uint8Schema = {
|
|
25
|
+
type: "integer",
|
|
26
|
+
minimum: 0,
|
|
27
|
+
maximum: 0xff,
|
|
28
|
+
};
|
|
29
|
+
export const Uint16Schema = {
|
|
30
|
+
type: "integer",
|
|
31
|
+
minimum: 0,
|
|
32
|
+
maximum: 0xffff,
|
|
33
|
+
};
|
|
34
|
+
export const Uint32Schema = {
|
|
35
|
+
type: "integer",
|
|
36
|
+
minimum: 0,
|
|
37
|
+
maximum: 0xffffffff,
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,QAAQ,CACtB,MAAS;IAET,OAAO;QACL,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,KAAK,CAAqC,KAAQ,EAAE,MAAS;IAC3E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAA4B,CAAC;AAChG,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,IAAI;CACc,CAAC;AAE5B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,SAAS;CACU,CAAC;AAE5B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,CAAC;CACa,CAAC;AAE5B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,CAAC;CACa,CAAC;AAE5B,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,IAAI;CACY,CAAC;AAE5B,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,MAAM;CACU,CAAC;AAE5B,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,UAAU;CACM,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ECSArchetypes, ECSComponents, ECSResources } from "../ecs/ecs-types.js";
|
|
2
|
+
import { TransactionECS } from "../transaction-ecs/transaction-types.js";
|
|
3
|
+
import { ActionECS, ECSActionFunctions } from "./action-types.js";
|
|
4
|
+
export declare function createActionECS<C extends ECSComponents, A extends ECSArchetypes, R extends ECSResources, F extends ECSActionFunctions = {}>(options?: {
|
|
5
|
+
ecs?: TransactionECS<C, A, R>;
|
|
6
|
+
/**
|
|
7
|
+
* A unique user identifier for the current user.
|
|
8
|
+
*/
|
|
9
|
+
user?: string;
|
|
10
|
+
/**
|
|
11
|
+
* A function which returns a unique, increasing time in UTC milliseconds.
|
|
12
|
+
* The function cannot return the same value twice but must increment if needed.
|
|
13
|
+
*/
|
|
14
|
+
getUniqueTimeMs?: () => number;
|
|
15
|
+
/**
|
|
16
|
+
* Maximum time in milliseconds to wait for applied actions to be reordered.
|
|
17
|
+
*/
|
|
18
|
+
maxSynchronizeDurationMs?: number;
|
|
19
|
+
}): ActionECS<C, A, R, F>;
|
|
@@ -0,0 +1,203 @@
|
|
|
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 { isAsyncGenerator } from "../../core/functions/is-async-generator.js";
|
|
23
|
+
import { createObservableEvent } from "../../observe/create-observable-event.js";
|
|
24
|
+
import { createTransactionECS } from "../transaction-ecs/transaction-ecs.js";
|
|
25
|
+
import { compareActionOrder, isSameAction, } from "./action-types.js";
|
|
26
|
+
let lastTime = 0;
|
|
27
|
+
function uniqueTime() {
|
|
28
|
+
const currentTime = Date.now();
|
|
29
|
+
lastTime = Math.max(currentTime, lastTime + 1);
|
|
30
|
+
return lastTime;
|
|
31
|
+
}
|
|
32
|
+
export function createActionECS(options = {}) {
|
|
33
|
+
const { ecs = createTransactionECS(), getUniqueTimeMs = uniqueTime, user = "", maxSynchronizeDurationMs = 5000, } = options;
|
|
34
|
+
const { createTransaction, observe, withComponents, withArchetypes, withResources, ...rest } = ecs;
|
|
35
|
+
const transactionFunctions = {};
|
|
36
|
+
const actions = {};
|
|
37
|
+
const actionSequences = {};
|
|
38
|
+
// these are only stored in memory.
|
|
39
|
+
const applied = [];
|
|
40
|
+
const getInsertIndex = (action) => {
|
|
41
|
+
for (let i = applied.length - 1; i >= 0; i--) {
|
|
42
|
+
if (isSameAction(action, applied[i].action)) {
|
|
43
|
+
return i;
|
|
44
|
+
}
|
|
45
|
+
const sort = compareActionOrder(action, applied[i].action);
|
|
46
|
+
if (sort >= 0) {
|
|
47
|
+
return i + 1;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return 0;
|
|
51
|
+
};
|
|
52
|
+
const [observeActions, notifyActions] = createObservableEvent();
|
|
53
|
+
const apply = (newAction) => {
|
|
54
|
+
const index = getInsertIndex(newAction);
|
|
55
|
+
const actionAtIndex = applied[index]?.action;
|
|
56
|
+
const isSame = actionAtIndex && isSameAction(newAction, actionAtIndex);
|
|
57
|
+
const mainTransaction = ecs.createTransaction({ undoable: false, createdBy: newAction.createdBy, createdTime: newAction.createdTime });
|
|
58
|
+
for (let i = applied.length - 1; i >= index && i < applied.length; i--) {
|
|
59
|
+
mainTransaction.batch(applied[i].commit.undoOperations);
|
|
60
|
+
}
|
|
61
|
+
applied.splice(index, isSame ? 1 : 0, { action: newAction, commit: undefined });
|
|
62
|
+
for (let i = index; i < applied.length; i++) {
|
|
63
|
+
const oldAction = applied[i];
|
|
64
|
+
if (!oldAction) {
|
|
65
|
+
console.error(`Missing applied action. Shouldn't happen. Notify codeowner!`, { index, i, newAction, applied });
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const { action: reapplyAction } = oldAction;
|
|
69
|
+
if (reapplyAction.type !== "cancel") {
|
|
70
|
+
const childTransaction = mainTransaction.createTransaction();
|
|
71
|
+
transactionFunctions[reapplyAction.name](childTransaction, ...reapplyAction.args);
|
|
72
|
+
oldAction.commit = childTransaction.commit();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
mainTransaction.commit();
|
|
76
|
+
// notify action observers
|
|
77
|
+
notifyActions(newAction);
|
|
78
|
+
pruneOldActions(newAction.createdTime);
|
|
79
|
+
};
|
|
80
|
+
const pruneOldActions = (currentTime) => {
|
|
81
|
+
const canPrune = (action) => action.type !== "transient" &&
|
|
82
|
+
action.createdTime < currentTime - maxSynchronizeDurationMs;
|
|
83
|
+
// remove any actions which are no longer needed because they are older than the maxSynchronizeDurationMs
|
|
84
|
+
while (applied.length > 0 && canPrune(applied[0].action)) {
|
|
85
|
+
applied.shift();
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Implements async execution of actions.
|
|
90
|
+
* If the argProvider is an async generator, then the action is executed as a sequence.
|
|
91
|
+
* If the argProvider is a promise, then the action is executed directly once awaited.
|
|
92
|
+
*/
|
|
93
|
+
const execute = async (action, argProvider) => {
|
|
94
|
+
const argsGeneratorOrPromise = await argProvider();
|
|
95
|
+
if (isAsyncGenerator(argsGeneratorOrPromise)) {
|
|
96
|
+
let sequence;
|
|
97
|
+
try {
|
|
98
|
+
for await (const args of argsGeneratorOrPromise) {
|
|
99
|
+
sequence = sequence?.update(...args) ?? actionSequences[action](...args);
|
|
100
|
+
}
|
|
101
|
+
sequence?.commit();
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
// cancel the sequence
|
|
105
|
+
sequence?.cancel();
|
|
106
|
+
// rethrow the error
|
|
107
|
+
throw e;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// args is still a promise so we must await it.
|
|
112
|
+
const args = await argsGeneratorOrPromise;
|
|
113
|
+
actions[action](...args);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const getTransientActionCount = () => {
|
|
117
|
+
return applied.reduce((acc, a) => acc + (a.action.type === "transient" ? 1 : 0), 0);
|
|
118
|
+
};
|
|
119
|
+
const actionECS = {
|
|
120
|
+
...rest,
|
|
121
|
+
apply,
|
|
122
|
+
getTransientActionCount,
|
|
123
|
+
actions,
|
|
124
|
+
actionSequences,
|
|
125
|
+
withComponents: (newComponents) => {
|
|
126
|
+
withComponents(newComponents);
|
|
127
|
+
return actionECS;
|
|
128
|
+
},
|
|
129
|
+
withArchetypes: (newArchetypes) => {
|
|
130
|
+
withArchetypes(newArchetypes);
|
|
131
|
+
return actionECS;
|
|
132
|
+
},
|
|
133
|
+
withResources: (newResources) => {
|
|
134
|
+
withResources(newResources);
|
|
135
|
+
return actionECS;
|
|
136
|
+
},
|
|
137
|
+
withActions: (newTransactionFunctions) => {
|
|
138
|
+
for (const name in newTransactionFunctions) {
|
|
139
|
+
const action = newTransactionFunctions[name];
|
|
140
|
+
if (transactionFunctions[name]) {
|
|
141
|
+
throw new Error(`Action already exists: ${name}`);
|
|
142
|
+
}
|
|
143
|
+
transactionFunctions[name] = action;
|
|
144
|
+
actions[name] = (...args) => {
|
|
145
|
+
const firstArg = args[0];
|
|
146
|
+
// handle new async execution pattern.
|
|
147
|
+
if (typeof firstArg === "function") {
|
|
148
|
+
return execute(name, firstArg);
|
|
149
|
+
}
|
|
150
|
+
const createdTime = getUniqueTimeMs();
|
|
151
|
+
apply({ type: "commit", createdTime, createdBy: user, name, args });
|
|
152
|
+
};
|
|
153
|
+
actionSequences[name] = (...originalArgs) => {
|
|
154
|
+
const createdTime = getUniqueTimeMs();
|
|
155
|
+
if (typeof originalArgs[0] === "function") {
|
|
156
|
+
throw new Error("Cannot use a function as argument to a sequence. For async execution you want to use ecs.actions instead of ecs.actionSequences.");
|
|
157
|
+
}
|
|
158
|
+
let args = originalArgs;
|
|
159
|
+
const sequence = {
|
|
160
|
+
update: (...updateArgs) => {
|
|
161
|
+
args = updateArgs;
|
|
162
|
+
apply({
|
|
163
|
+
type: "transient",
|
|
164
|
+
createdTime,
|
|
165
|
+
createdBy: user,
|
|
166
|
+
name,
|
|
167
|
+
args,
|
|
168
|
+
});
|
|
169
|
+
return sequence;
|
|
170
|
+
},
|
|
171
|
+
commit: () => {
|
|
172
|
+
apply({
|
|
173
|
+
type: "commit",
|
|
174
|
+
createdTime,
|
|
175
|
+
createdBy: user,
|
|
176
|
+
name,
|
|
177
|
+
args,
|
|
178
|
+
});
|
|
179
|
+
},
|
|
180
|
+
cancel: () => {
|
|
181
|
+
apply({
|
|
182
|
+
type: "cancel",
|
|
183
|
+
createdTime,
|
|
184
|
+
createdBy: user,
|
|
185
|
+
name,
|
|
186
|
+
args,
|
|
187
|
+
});
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
sequence.update(...originalArgs);
|
|
191
|
+
return sequence;
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
return actionECS;
|
|
195
|
+
},
|
|
196
|
+
observe: {
|
|
197
|
+
...observe,
|
|
198
|
+
actions: observeActions,
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
return actionECS;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=action-ecs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-ecs.js","sourceRoot":"","sources":["../../../src/ecs/action-ecs/action-ecs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|