@adobe/data 0.1.3 → 0.2.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/.cursorrules +28 -0
- package/.eslintrc.cjs +48 -0
- package/.github/CONTRIBUTING.md +47 -0
- package/CODE_OF_CONDUCT.md +79 -0
- package/LICENSE +21 -0
- package/README.md +2 -2
- package/asconfig.json +22 -0
- package/assembly/index.ts +85 -0
- package/assembly/tsconfig.json +17 -0
- package/c/build_run.sh +2 -0
- package/c/vector_addition +0 -0
- package/c/vector_addition.c +125 -0
- package/{cache/functions/types.js → config/license.js} +0 -2
- package/docs/perftest.html +28 -0
- package/index.html +10 -0
- package/package.json +50 -28
- package/scripts/deploy-docs.sh +41 -0
- package/{assembly-test/assembly.test.js → src/assembly-test/assembly.test.ts} +4 -4
- package/src/cache/async-cache.ts +38 -0
- package/{cache/blob-store.test.js → src/cache/blob-store.test.ts} +41 -7
- package/src/cache/blob-store.ts +278 -0
- package/src/cache/data-cache.test.ts +61 -0
- package/src/cache/data-cache.ts +183 -0
- package/src/cache/expiring-data-cache.test.ts +81 -0
- package/src/cache/expiring-data-cache.ts +61 -0
- package/src/cache/fallback-async-cache.ts +49 -0
- package/src/cache/functions/async-data-function.ts +25 -0
- package/src/cache/functions/functions.test.ts +84 -0
- package/{cache/functions/get-cached.test.js → src/cache/functions/get-cached.test.ts} +24 -7
- package/{cache/functions/get-cached.js → src/cache/functions/get-cached.ts} +12 -6
- package/{cache/functions/hashing/blob-to-hash.js → src/cache/functions/hashing/blob-to-hash.ts} +20 -18
- package/{cache/functions/hashing/buffer-to-hash.js → src/cache/functions/hashing/buffer-to-hash.ts} +7 -7
- package/src/cache/functions/hashing/hashing.test.ts +95 -0
- package/{cache/functions/hashing/index.js → src/cache/functions/hashing/index.ts} +1 -1
- package/{cache/functions/hashing/json-to-hash.js → src/cache/functions/hashing/json-to-hash.ts} +3 -3
- package/{cache/functions/hashing/string-to-hash.js → src/cache/functions/hashing/string-to-hash.ts} +11 -10
- package/{cache/functions/index.js → src/cache/functions/index.ts} +2 -4
- package/{cache/functions/memoize.js → src/cache/functions/memoize.ts} +22 -15
- package/src/cache/functions/prevent-parallel-execution.ts +50 -0
- package/src/cache/get-persistent-cache.ts +62 -0
- package/{cache/index.js → src/cache/index.ts} +9 -3
- package/src/cache/managed-array.ts +243 -0
- package/{cache/managed-async-cache.browser.test.js → src/cache/managed-async-cache.browser.test.ts} +27 -24
- package/src/cache/managed-async-cache.ts +78 -0
- package/src/cache/memory-allocator.ts +176 -0
- package/src/cache/memory-async-cache.ts +51 -0
- package/src/data.ts +38 -0
- package/src/ecs/README.md +21 -0
- package/src/ecs/archetype/archetype.ts +39 -0
- package/src/ecs/archetype/create-archetype.test.ts +115 -0
- package/src/ecs/archetype/create-archetype.ts +52 -0
- package/src/ecs/archetype/delete-row.test.ts +110 -0
- package/src/ecs/archetype/delete-row.ts +37 -0
- package/src/ecs/archetype/index.ts +24 -0
- package/src/ecs/component-schemas.ts +24 -0
- package/src/ecs/core-components.ts +443 -0
- package/src/ecs/database/create-database.test.ts +745 -0
- package/src/ecs/database/create-database.ts +205 -0
- package/src/ecs/database/database.ts +81 -0
- package/src/ecs/database/index.ts +24 -0
- package/src/ecs/database/observe-dependent-value.test.ts +198 -0
- package/src/ecs/database/observe-dependent-value.ts +78 -0
- package/src/ecs/database/transactional-store/create-transactional-store.test.ts +250 -0
- package/src/ecs/database/transactional-store/create-transactional-store.ts +281 -0
- package/{ecs/ecs/ecs-types.js → src/ecs/database/transactional-store/index.ts} +1 -2
- package/src/ecs/database/transactional-store/transactional-store.ts +80 -0
- package/src/ecs/entity-location-table/create-entity-location-table.test.ts +170 -0
- package/src/ecs/entity-location-table/create-entity-location-table.ts +96 -0
- package/src/ecs/entity-location-table/entity-location-table.ts +30 -0
- package/{core/schema/schema.js → src/ecs/entity-location-table/entity-location.ts} +11 -11
- package/src/ecs/entity-location-table/index.ts +23 -0
- package/src/ecs/entity.ts +26 -0
- package/src/ecs/index.ts +26 -0
- package/src/ecs/store/core/core.ts +71 -0
- package/src/ecs/store/core/create-core.test.ts +440 -0
- package/src/ecs/store/core/create-core.ts +168 -0
- package/{cache/async-cache.js → src/ecs/store/core/index.ts} +1 -2
- package/src/ecs/store/create-store.test.ts +562 -0
- package/src/ecs/store/create-store.ts +97 -0
- package/src/ecs/store/index.ts +23 -0
- package/{types/types.js → src/ecs/store/resource-components.ts} +2 -6
- package/src/ecs/store/store.ts +55 -0
- package/src/equals-shallow.test.ts +133 -0
- package/src/equals-shallow.ts +37 -0
- package/src/equals.test.ts +175 -0
- package/src/equals.ts +70 -0
- package/src/index.ts +27 -0
- package/src/internal/array-buffer-like/copy.ts +469 -0
- package/src/internal/array-buffer-like/grow.ts +53 -0
- package/{core/index.js → src/internal/array-buffer-like/index.ts} +4 -4
- package/src/internal/array-buffer-like/is-array-buffer.ts +445 -0
- package/src/internal/array-buffer-like/is-shared-array-buffer.ts +445 -0
- package/{core/functions/is-async-generator.js → src/internal/async-generator/is-async-generator.ts} +2 -2
- package/{core/schema.js → src/internal/data-view-32/create-data-view-32.ts} +8 -11
- package/src/internal/data-view-32/data-view-32.ts +447 -0
- package/{ecs/action-ecs/index.js → src/internal/data-view-32/index.ts} +2 -2
- package/src/internal/function/memoize-factory.ts +12 -0
- package/src/internal/object/index.ts +23 -0
- package/{cache/functions/bind-functions.js → src/internal/object/map-entries.ts} +6 -11
- package/src/internal/promise/is-promise.ts +28 -0
- package/src/internal/typed-array/get-byte-size.ts +50 -0
- package/src/internal/typed-array/index.ts +24 -0
- package/src/internal/typed-array/typed-array-constructer.ts +32 -0
- package/src/internal/typed-array/typed-array.ts +25 -0
- package/src/is-data.ts +47 -0
- package/src/lit/decorators/apply-decorator.ts +24 -0
- package/src/lit/decorators/apply-service-decorators.ts +13 -0
- package/src/lit/decorators/index.ts +24 -0
- package/src/lit/decorators/require-service.ts +19 -0
- package/src/lit/elements/index.ts +3 -0
- package/src/lit/elements/service-application.ts +26 -0
- package/src/lit/elements/service-context.ts +3 -0
- package/src/lit/elements/service-element.ts +18 -0
- package/src/lit/hooks/component/component.ts +10 -0
- package/src/lit/hooks/component/stack.ts +17 -0
- package/src/lit/hooks/index.ts +13 -0
- package/src/lit/hooks/use-connected.ts +39 -0
- package/src/lit/hooks/use-effect.ts +17 -0
- package/src/lit/hooks/use-element.ts +8 -0
- package/src/lit/hooks/use-memo.ts +14 -0
- package/src/lit/hooks/use-observable-values.ts +9 -0
- package/src/lit/hooks/use-observable.ts +13 -0
- package/src/lit/hooks/use-ref.ts +6 -0
- package/src/lit/hooks/use-resize-observer.ts +27 -0
- package/src/lit/hooks/use-state.ts +17 -0
- package/src/lit/hooks/use-window-event.ts +14 -0
- package/src/lit/hooks/with-hooks.ts +20 -0
- package/src/lit/index.ts +3 -0
- package/src/mutable-clone.ts +29 -0
- package/{core/data.test.js → src/normalize.test.ts} +22 -22
- package/src/normalize.ts +37 -0
- package/src/observe/create-observable-event.ts +47 -0
- package/src/observe/create-observable-state.ts +51 -0
- package/src/observe/create-persisted-state.test.ts +143 -0
- package/src/observe/create-persisted-state.ts +60 -0
- package/src/observe/create-query-state.ts +70 -0
- package/{observe/from-array.js → src/observe/from-array.ts} +14 -3
- package/{service/service.js → src/observe/from-constant.ts} +13 -4
- package/{observe/from-element-id.js → src/observe/from-element-id.ts} +44 -39
- package/src/observe/from-element-properties-and-events.ts +47 -0
- package/{observe/from-element-property.js → src/observe/from-element-property.ts} +33 -25
- package/src/observe/from-promise-with-error.ts +51 -0
- package/src/observe/from-promise.ts +49 -0
- package/src/observe/from-properties.ts +67 -0
- package/{observe/index.js → src/observe/index.ts} +4 -1
- package/src/observe/observe.test.ts +467 -0
- package/src/observe/to-promise.ts +40 -0
- package/src/observe/to-properties.ts +41 -0
- package/src/observe/types.ts +40 -0
- package/src/observe/with-async-map.ts +37 -0
- package/src/observe/with-batch.test.ts +141 -0
- package/src/observe/with-batch.ts +67 -0
- package/{core/data.js → src/observe/with-cache.ts} +32 -26
- package/src/observe/with-copy.ts +32 -0
- package/src/observe/with-deduplicate-data.ts +43 -0
- package/src/observe/with-deduplicate.ts +41 -0
- package/src/observe/with-default.ts +48 -0
- package/src/observe/with-lazy.test.ts +68 -0
- package/{core/functions/is-promise.js → src/observe/with-lazy.ts} +17 -5
- package/{observe/with-map-data.js → src/observe/with-map-data.ts} +9 -3
- package/src/observe/with-map.ts +36 -0
- package/src/observe/with-optional.ts +47 -0
- package/src/observe/with-unwrap.ts +54 -0
- package/src/old-ecs/action-ecs/action-ecs.test.ts +420 -0
- package/src/old-ecs/action-ecs/action-ecs.ts +274 -0
- package/src/old-ecs/action-ecs/action-types.ts +178 -0
- package/src/old-ecs/action-ecs/index.ts +29 -0
- package/{service/sequential-action.js → src/old-ecs/action-ecs/sequential-action.ts} +19 -4
- package/src/old-ecs/core-ecs/core-ecs-serialization.test.ts +244 -0
- package/src/old-ecs/core-ecs/core-ecs-types.ts +183 -0
- package/src/old-ecs/core-ecs/core-ecs.test.ts +474 -0
- package/src/old-ecs/core-ecs/core-ecs.ts +640 -0
- package/{core/functions/index.js → src/old-ecs/core-ecs/index.ts} +9 -4
- package/src/old-ecs/ecs/ecs-types.ts +189 -0
- package/src/old-ecs/ecs/ecs-where-functions.ts +95 -0
- package/src/old-ecs/ecs/ecs.test.ts +461 -0
- package/src/old-ecs/ecs/ecs.ts +279 -0
- package/{ecs/core-ecs/core-ecs-types.js → src/old-ecs/ecs/index.ts} +2 -2
- package/src/old-ecs/entity.ts +26 -0
- package/{ecs/index.js → src/old-ecs/index.ts} +1 -1
- package/{ecs/transaction-ecs/index.js → src/old-ecs/transaction-ecs/index.ts} +0 -1
- package/src/old-ecs/transaction-ecs/transaction-ecs.test.ts +725 -0
- package/src/old-ecs/transaction-ecs/transaction-ecs.ts +283 -0
- package/src/old-ecs/transaction-ecs/transaction-types.ts +248 -0
- package/src/old-ecs/transaction-ecs/transactions.ts +243 -0
- package/src/perftest/ecs-perf.ts +255 -0
- package/src/perftest/helper-functions.ts +31 -0
- package/src/perftest/horizon-perf.ts +132 -0
- package/{perftest/index.js → src/perftest/index.ts} +9 -7
- package/src/perftest/perf-test.ts +193 -0
- package/src/perftest/perf.md +90 -0
- package/src/perftest/vanilla-perf.ts +136 -0
- package/src/schema/boolean.ts +5 -0
- package/src/schema/dynamic/deep-merge.test.ts +100 -0
- package/src/schema/dynamic/deep-merge.ts +67 -0
- package/{core/schema/dynamic/enumerate-patches.test.js → src/schema/dynamic/enumerate-patches.test.ts} +49 -23
- package/{core/schema/dynamic/enumerate-patches.js → src/schema/dynamic/enumerate-patches.ts} +44 -4
- package/{core/schema/dynamic/get-dynamic-schema.test.js → src/schema/dynamic/get-dynamic-schema.test.ts} +41 -6
- package/src/schema/dynamic/get-dynamic-schema.ts +48 -0
- package/src/schema/dynamic/index.ts +22 -0
- package/src/schema/f32.ts +30 -0
- package/src/schema/i32.ts +31 -0
- package/src/schema/index.ts +32 -0
- package/{cache/functions/omit.js → src/schema/nullable.ts} +10 -7
- package/src/schema/schema.ts +229 -0
- package/src/schema/time.ts +5 -0
- package/src/schema/true.ts +26 -0
- package/src/schema/tuple.ts +5 -0
- package/src/schema/u32.ts +31 -0
- package/{core/schema/validation/is-valid.test.js → src/schema/validation/is-valid.test.ts} +6 -3
- package/{core/functions/array-equals.js → src/schema/validation/is-valid.ts} +8 -10
- package/{core/schema/validation/validate.test.js → src/schema/validation/validate.test.ts} +18 -4
- package/{core/schema/validation/validate.js → src/schema/validation/validate.ts} +9 -6
- package/{core/functions/with-validation.test.js → src/schema/validation/with-validation.test.ts} +28 -12
- package/{core/functions/with-validation.js → src/schema/validation/with-validation.ts} +14 -10
- package/src/schema.test.ts +55 -0
- package/src/service/add-observable-actions.ts +207 -0
- package/{service/index.js → src/service/index.ts} +4 -4
- package/src/service/is-service.ts +7 -0
- package/src/service/progressive-result.ts +141 -0
- package/src/service/service.ts +27 -0
- package/src/table/add-row.ts +42 -0
- package/src/table/create-table.ts +36 -0
- package/src/table/delete-row.ts +42 -0
- package/src/table/ensure-capacity.ts +37 -0
- package/src/table/get-row-data.ts +31 -0
- package/src/table/index.ts +29 -0
- package/src/table/row-index.ts +26 -0
- package/src/table/table.ts +32 -0
- package/src/table/update-row.ts +35 -0
- package/src/tsconfig.json +6 -0
- package/src/typed-buffer/copy-to-gpu-buffer.ts +23 -0
- package/{cache/expiring-data-cache.js → src/typed-buffer/create-array-buffer.ts} +31 -25
- package/src/typed-buffer/create-number-buffer.ts +90 -0
- package/src/typed-buffer/create-struct-buffer.ts +93 -0
- package/src/typed-buffer/create-typed-buffer.ts +49 -0
- package/src/typed-buffer/index.ts +26 -0
- package/src/typed-buffer/structs/assert-struct.ts +37 -0
- package/src/typed-buffer/structs/create-read-struct.test.ts +202 -0
- package/src/typed-buffer/structs/create-read-struct.ts +77 -0
- package/src/typed-buffer/structs/create-write-struct.ts +73 -0
- package/src/typed-buffer/structs/get-field-offset.ts +36 -0
- package/src/typed-buffer/structs/get-struct-layout.test.ts +146 -0
- package/src/typed-buffer/structs/get-struct-layout.ts +222 -0
- package/src/typed-buffer/structs/index.ts +22 -0
- package/src/typed-buffer/structs/read-struct.ts +25 -0
- package/src/typed-buffer/structs/struct-layout.ts +465 -0
- package/src/typed-buffer/structs/write-struct.test.ts +195 -0
- package/src/typed-buffer/structs/write-struct.ts +25 -0
- package/src/typed-buffer/typed-buffer.test.ts +253 -0
- package/src/typed-buffer/typed-buffer.ts +41 -0
- package/src/types/assert.ts +22 -0
- package/src/types/equal.ts +24 -0
- package/{types/index.js → src/types/index.ts} +3 -1
- package/src/types/types.ts +166 -0
- package/tsconfig-base.json +25 -0
- package/tsconfig.json +8 -0
- package/typedoc.json +22 -0
- package/vite.config.js +16 -0
- package/assembly/index.d.ts +0 -30
- package/assembly/index.js +0 -18
- package/assembly/index.wasm +0 -0
- package/assembly/index.wasm.map +0 -1
- package/assembly-test/assembly.test.d.ts +0 -1
- package/assembly-test/assembly.test.js.map +0 -1
- package/cache/async-cache.d.ts +0 -15
- package/cache/async-cache.js.map +0 -1
- package/cache/blob-store.d.ts +0 -94
- package/cache/blob-store.js +0 -191
- package/cache/blob-store.js.map +0 -1
- package/cache/blob-store.test.d.ts +0 -1
- package/cache/blob-store.test.js.map +0 -1
- package/cache/data-cache.d.ts +0 -38
- package/cache/data-cache.js +0 -96
- package/cache/data-cache.js.map +0 -1
- package/cache/data-cache.test.d.ts +0 -1
- package/cache/data-cache.test.js +0 -50
- package/cache/data-cache.test.js.map +0 -1
- package/cache/expiring-data-cache.d.ts +0 -6
- package/cache/expiring-data-cache.js.map +0 -1
- package/cache/expiring-data-cache.test.d.ts +0 -1
- package/cache/expiring-data-cache.test.js +0 -62
- package/cache/expiring-data-cache.test.js.map +0 -1
- package/cache/fallback-async-cache.d.ts +0 -7
- package/cache/fallback-async-cache.js +0 -22
- package/cache/fallback-async-cache.js.map +0 -1
- package/cache/functions/bind-functions.d.ts +0 -6
- package/cache/functions/bind-functions.js.map +0 -1
- package/cache/functions/functions.test.d.ts +0 -1
- package/cache/functions/functions.test.js +0 -79
- package/cache/functions/functions.test.js.map +0 -1
- package/cache/functions/get-cached.d.ts +0 -11
- package/cache/functions/get-cached.js.map +0 -1
- package/cache/functions/get-cached.test.d.ts +0 -1
- package/cache/functions/get-cached.test.js.map +0 -1
- package/cache/functions/hashing/blob-to-hash.d.ts +0 -4
- package/cache/functions/hashing/blob-to-hash.js.map +0 -1
- package/cache/functions/hashing/buffer-to-hash.d.ts +0 -4
- package/cache/functions/hashing/buffer-to-hash.js.map +0 -1
- package/cache/functions/hashing/hashing.test.d.ts +0 -1
- package/cache/functions/hashing/hashing.test.js +0 -95
- package/cache/functions/hashing/hashing.test.js.map +0 -1
- package/cache/functions/hashing/index.d.ts +0 -4
- package/cache/functions/hashing/index.js.map +0 -1
- package/cache/functions/hashing/json-to-hash.d.ts +0 -4
- package/cache/functions/hashing/json-to-hash.js.map +0 -1
- package/cache/functions/hashing/string-to-hash.d.ts +0 -4
- package/cache/functions/hashing/string-to-hash.js.map +0 -1
- package/cache/functions/index.d.ts +0 -5
- package/cache/functions/index.js.map +0 -1
- package/cache/functions/memoize.d.ts +0 -12
- package/cache/functions/memoize.js.map +0 -1
- package/cache/functions/omit.d.ts +0 -1
- package/cache/functions/omit.js.map +0 -1
- package/cache/functions/prevent-parallel-execution.d.ts +0 -7
- package/cache/functions/prevent-parallel-execution.js +0 -25
- package/cache/functions/prevent-parallel-execution.js.map +0 -1
- package/cache/functions/types.d.ts +0 -1
- package/cache/functions/types.js.map +0 -1
- package/cache/get-persistent-cache.d.ts +0 -12
- package/cache/get-persistent-cache.js +0 -23
- package/cache/get-persistent-cache.js.map +0 -1
- package/cache/index.d.ts +0 -3
- package/cache/index.js.map +0 -1
- package/cache/managed-array.d.ts +0 -23
- package/cache/managed-array.js +0 -160
- package/cache/managed-array.js.map +0 -1
- package/cache/managed-async-cache.browser.test.d.ts +0 -1
- package/cache/managed-async-cache.browser.test.js.map +0 -1
- package/cache/managed-async-cache.d.ts +0 -4
- package/cache/managed-async-cache.js +0 -45
- package/cache/managed-async-cache.js.map +0 -1
- package/cache/memory-allocator.d.ts +0 -23
- package/cache/memory-allocator.js +0 -94
- package/cache/memory-allocator.js.map +0 -1
- package/cache/memory-async-cache.d.ts +0 -6
- package/cache/memory-async-cache.js +0 -23
- package/cache/memory-async-cache.js.map +0 -1
- package/core/data.d.ts +0 -22
- package/core/data.js.map +0 -1
- package/core/data.test.d.ts +0 -1
- package/core/data.test.js.map +0 -1
- package/core/functions/array-equals.d.ts +0 -1
- package/core/functions/array-equals.js.map +0 -1
- package/core/functions/deep-merge.d.ts +0 -32
- package/core/functions/deep-merge.js +0 -54
- package/core/functions/deep-merge.js.map +0 -1
- package/core/functions/deep-merge.test.d.ts +0 -1
- package/core/functions/deep-merge.test.js +0 -94
- package/core/functions/deep-merge.test.js.map +0 -1
- package/core/functions/index.d.ts +0 -3
- package/core/functions/index.js.map +0 -1
- package/core/functions/is-async-generator.d.ts +0 -1
- package/core/functions/is-async-generator.js.map +0 -1
- package/core/functions/is-promise.d.ts +0 -1
- package/core/functions/is-promise.js.map +0 -1
- package/core/functions/with-validation.d.ts +0 -5
- package/core/functions/with-validation.js.map +0 -1
- package/core/functions/with-validation.test.d.ts +0 -1
- package/core/functions/with-validation.test.js.map +0 -1
- package/core/index.d.ts +0 -3
- package/core/index.js.map +0 -1
- package/core/schema/dynamic/dynamic-schema.d.ts +0 -27
- package/core/schema/dynamic/dynamic-schema.js +0 -2
- package/core/schema/dynamic/dynamic-schema.js.map +0 -1
- package/core/schema/dynamic/enumerate-patches.d.ts +0 -9
- package/core/schema/dynamic/enumerate-patches.js.map +0 -1
- package/core/schema/dynamic/enumerate-patches.test.d.ts +0 -134
- package/core/schema/dynamic/enumerate-patches.test.js.map +0 -1
- package/core/schema/dynamic/get-dynamic-schema.d.ts +0 -5
- package/core/schema/dynamic/get-dynamic-schema.js +0 -26
- package/core/schema/dynamic/get-dynamic-schema.js.map +0 -1
- package/core/schema/dynamic/get-dynamic-schema.test.d.ts +0 -1
- package/core/schema/dynamic/get-dynamic-schema.test.js.map +0 -1
- package/core/schema/dynamic/index.d.ts +0 -1
- package/core/schema/dynamic/index.js +0 -2
- package/core/schema/dynamic/index.js.map +0 -1
- package/core/schema/dynamic/schema-path-value-path.d.ts +0 -5
- package/core/schema/dynamic/schema-path-value-path.js +0 -12
- package/core/schema/dynamic/schema-path-value-path.js.map +0 -1
- package/core/schema/dynamic-schema.d.ts +0 -27
- package/core/schema/dynamic-schema.js +0 -2
- package/core/schema/dynamic-schema.js.map +0 -1
- package/core/schema/index.d.ts +0 -4
- package/core/schema/index.js +0 -26
- package/core/schema/index.js.map +0 -1
- package/core/schema/schema.d.ts +0 -122
- package/core/schema/schema.js.map +0 -1
- package/core/schema/schemas.d.ts +0 -45
- package/core/schema/schemas.js +0 -39
- package/core/schema/schemas.js.map +0 -1
- package/core/schema/ui-schema.d.ts +0 -25
- package/core/schema/ui-schema.js +0 -2
- package/core/schema/ui-schema.js.map +0 -1
- package/core/schema/validation/is-valid.d.ts +0 -2
- package/core/schema/validation/is-valid.js +0 -14
- package/core/schema/validation/is-valid.js.map +0 -1
- package/core/schema/validation/is-valid.test.d.ts +0 -1
- package/core/schema/validation/is-valid.test.js.map +0 -1
- package/core/schema/validation/validate.d.ts +0 -2
- package/core/schema/validation/validate.js.map +0 -1
- package/core/schema/validation/validate.test.d.ts +0 -1
- package/core/schema/validation/validate.test.js.map +0 -1
- package/core/schema/validation/with-validation.d.ts +0 -5
- package/core/schema/validation/with-validation.js +0 -16
- package/core/schema/validation/with-validation.js.map +0 -1
- package/core/schema/validation/with-validation.test.d.ts +0 -1
- package/core/schema/validation/with-validation.test.js +0 -96
- package/core/schema/validation/with-validation.test.js.map +0 -1
- package/core/schema.d.ts +0 -86
- package/core/schema.js.map +0 -1
- package/core/schema.test.d.ts +0 -1
- package/core/schema.test.js +0 -16
- package/core/schema.test.js.map +0 -1
- package/core/schemas.d.ts +0 -45
- package/core/schemas.js +0 -39
- package/core/schemas.js.map +0 -1
- package/ecs/action-ecs/action-ecs.d.ts +0 -19
- package/ecs/action-ecs/action-ecs.js +0 -203
- package/ecs/action-ecs/action-ecs.js.map +0 -1
- package/ecs/action-ecs/action-ecs.test.d.ts +0 -1
- package/ecs/action-ecs/action-ecs.test.js +0 -362
- package/ecs/action-ecs/action-ecs.test.js.map +0 -1
- package/ecs/action-ecs/action-types.d.ts +0 -106
- package/ecs/action-ecs/action-types.js +0 -19
- package/ecs/action-ecs/action-types.js.map +0 -1
- package/ecs/action-ecs/index.d.ts +0 -2
- package/ecs/action-ecs/index.js.map +0 -1
- package/ecs/core-ecs/core-ecs-serialization.test.d.ts +0 -1
- package/ecs/core-ecs/core-ecs-serialization.test.js +0 -230
- package/ecs/core-ecs/core-ecs-serialization.test.js.map +0 -1
- package/ecs/core-ecs/core-ecs-types.d.ts +0 -141
- package/ecs/core-ecs/core-ecs-types.js.map +0 -1
- package/ecs/core-ecs/core-ecs.d.ts +0 -7
- package/ecs/core-ecs/core-ecs.js +0 -492
- package/ecs/core-ecs/core-ecs.js.map +0 -1
- package/ecs/core-ecs/core-ecs.test.d.ts +0 -1
- package/ecs/core-ecs/core-ecs.test.js +0 -425
- package/ecs/core-ecs/core-ecs.test.js.map +0 -1
- package/ecs/core-ecs/index.d.ts +0 -1
- package/ecs/core-ecs/index.js +0 -2
- package/ecs/core-ecs/index.js.map +0 -1
- package/ecs/ecs/ecs-types.d.ts +0 -132
- package/ecs/ecs/ecs-types.js.map +0 -1
- package/ecs/ecs/ecs-where-functions.d.ts +0 -6
- package/ecs/ecs/ecs-where-functions.js +0 -91
- package/ecs/ecs/ecs-where-functions.js.map +0 -1
- package/ecs/ecs/ecs.d.ts +0 -13
- package/ecs/ecs/ecs.js +0 -177
- package/ecs/ecs/ecs.js.map +0 -1
- package/ecs/ecs/ecs.test.d.ts +0 -1
- package/ecs/ecs/ecs.test.js +0 -399
- package/ecs/ecs/ecs.test.js.map +0 -1
- package/ecs/ecs/index.d.ts +0 -3
- package/ecs/ecs/index.js +0 -3
- package/ecs/ecs/index.js.map +0 -1
- package/ecs/index.d.ts +0 -4
- package/ecs/index.js.map +0 -1
- package/ecs/transaction-ecs/index.d.ts +0 -2
- package/ecs/transaction-ecs/index.js.map +0 -1
- package/ecs/transaction-ecs/transaction-ecs.d.ts +0 -11
- package/ecs/transaction-ecs/transaction-ecs.js +0 -184
- package/ecs/transaction-ecs/transaction-ecs.js.map +0 -1
- package/ecs/transaction-ecs/transaction-ecs.test.d.ts +0 -1
- package/ecs/transaction-ecs/transaction-ecs.test.js +0 -599
- package/ecs/transaction-ecs/transaction-ecs.test.js.map +0 -1
- package/ecs/transaction-ecs/transaction-types.d.ts +0 -135
- package/ecs/transaction-ecs/transaction-types.js +0 -2
- package/ecs/transaction-ecs/transaction-types.js.map +0 -1
- package/ecs/transaction-ecs/transactions.d.ts +0 -5
- package/ecs/transaction-ecs/transactions.js +0 -158
- package/ecs/transaction-ecs/transactions.js.map +0 -1
- package/index.d.ts +0 -1
- package/index.js +0 -23
- package/index.js.map +0 -1
- package/observe/create-observable-event.d.ts +0 -10
- package/observe/create-observable-event.js +0 -22
- package/observe/create-observable-event.js.map +0 -1
- package/observe/create-observable-state.d.ts +0 -7
- package/observe/create-observable-state.js +0 -27
- package/observe/create-observable-state.js.map +0 -1
- package/observe/create-persisted-state.d.ts +0 -11
- package/observe/create-persisted-state.js +0 -31
- package/observe/create-persisted-state.js.map +0 -1
- package/observe/create-persisted-state.test.d.ts +0 -1
- package/observe/create-persisted-state.test.js +0 -124
- package/observe/create-persisted-state.test.js.map +0 -1
- package/observe/from-array.d.ts +0 -5
- package/observe/from-array.js.map +0 -1
- package/observe/from-constant.d.ts +0 -5
- package/observe/from-constant.js +0 -12
- package/observe/from-constant.js.map +0 -1
- package/observe/from-element-id.d.ts +0 -7
- package/observe/from-element-id.js.map +0 -1
- package/observe/from-element-properties-and-events.d.ts +0 -2
- package/observe/from-element-properties-and-events.js +0 -18
- package/observe/from-element-properties-and-events.js.map +0 -1
- package/observe/from-element-property.d.ts +0 -11
- package/observe/from-element-property.js.map +0 -1
- package/observe/from-promise-with-error.d.ts +0 -7
- package/observe/from-promise-with-error.js +0 -27
- package/observe/from-promise-with-error.js.map +0 -1
- package/observe/from-promise.d.ts +0 -6
- package/observe/from-promise.js +0 -22
- package/observe/from-promise.js.map +0 -1
- package/observe/from-properties.d.ts +0 -10
- package/observe/from-properties.js +0 -33
- package/observe/from-properties.js.map +0 -1
- package/observe/index.d.ts +0 -27
- package/observe/index.js.map +0 -1
- package/observe/observe.test.d.ts +0 -7
- package/observe/observe.test.js +0 -417
- package/observe/observe.test.js.map +0 -1
- package/observe/to-promise.d.ts +0 -8
- package/observe/to-promise.js +0 -18
- package/observe/to-promise.js.map +0 -1
- package/observe/to-properties.d.ts +0 -11
- package/observe/to-properties.js +0 -9
- package/observe/to-properties.js.map +0 -1
- package/observe/types.d.ts +0 -17
- package/observe/types.js +0 -2
- package/observe/types.js.map +0 -1
- package/observe/with-async-map.d.ts +0 -6
- package/observe/with-async-map.js +0 -12
- package/observe/with-async-map.js.map +0 -1
- package/observe/with-cache.d.ts +0 -6
- package/observe/with-cache.js +0 -33
- package/observe/with-cache.js.map +0 -1
- package/observe/with-copy.d.ts +0 -5
- package/observe/with-copy.js +0 -10
- package/observe/with-copy.js.map +0 -1
- package/observe/with-deduplicate-data.d.ts +0 -7
- package/observe/with-deduplicate-data.js +0 -18
- package/observe/with-deduplicate-data.js.map +0 -1
- package/observe/with-deduplicate.d.ts +0 -6
- package/observe/with-deduplicate.js +0 -19
- package/observe/with-deduplicate.js.map +0 -1
- package/observe/with-default.d.ts +0 -6
- package/observe/with-default.js +0 -21
- package/observe/with-default.js.map +0 -1
- package/observe/with-map-data.d.ts +0 -7
- package/observe/with-map-data.js.map +0 -1
- package/observe/with-map.d.ts +0 -5
- package/observe/with-map.js +0 -11
- package/observe/with-map.js.map +0 -1
- package/observe/with-optional.d.ts +0 -5
- package/observe/with-optional.js +0 -20
- package/observe/with-optional.js.map +0 -1
- package/observe/with-unwrap.d.ts +0 -5
- package/observe/with-unwrap.js +0 -26
- package/observe/with-unwrap.js.map +0 -1
- package/perftest/ecs-perf.d.ts +0 -49
- package/perftest/ecs-perf.js +0 -230
- package/perftest/ecs-perf.js.map +0 -1
- package/perftest/helper-functions.d.ts +0 -1
- package/perftest/helper-functions.js +0 -31
- package/perftest/helper-functions.js.map +0 -1
- package/perftest/horizon-perf.d.ts +0 -22
- package/perftest/horizon-perf.js +0 -126
- package/perftest/horizon-perf.js.map +0 -1
- package/perftest/index.d.ts +0 -1
- package/perftest/index.js.map +0 -1
- package/perftest/perf-test.d.ts +0 -18
- package/perftest/perf-test.js +0 -124
- package/perftest/perf-test.js.map +0 -1
- package/perftest/vanilla-perf.d.ts +0 -38
- package/perftest/vanilla-perf.js +0 -128
- package/perftest/vanilla-perf.js.map +0 -1
- package/schemas/index.d.ts +0 -1
- package/schemas/index.js +0 -23
- package/schemas/index.js.map +0 -1
- package/schemas/schemas.d.ts +0 -45
- package/schemas/schemas.js +0 -39
- package/schemas/schemas.js.map +0 -1
- package/service/add-observable-actions.d.ts +0 -29
- package/service/add-observable-actions.js +0 -108
- package/service/add-observable-actions.js.map +0 -1
- package/service/index.d.ts +0 -4
- package/service/index.js.map +0 -1
- package/service/progressive-result.d.ts +0 -96
- package/service/progressive-result.js +0 -99
- package/service/progressive-result.js.map +0 -1
- package/service/sequential-action.d.ts +0 -18
- package/service/sequential-action.js.map +0 -1
- package/service/service.d.ts +0 -4
- package/service/service.js.map +0 -1
- package/tsconfig.tsbuildinfo +0 -1
- package/types/index.d.ts +0 -1
- package/types/index.js.map +0 -1
- package/types/types.d.ts +0 -61
- package/types/types.js.map +0 -1
|
@@ -19,31 +19,37 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.*/
|
|
22
|
+
|
|
22
23
|
// Create a WeakMap to store cached values for each object
|
|
23
|
-
const cache = new WeakMap();
|
|
24
|
+
const cache = new WeakMap<object, Map<Function, unknown>>();
|
|
25
|
+
|
|
24
26
|
/**
|
|
25
27
|
* Gets a cached value for an object using a factory function.
|
|
26
28
|
* If the value hasn't been cached yet, the factory function will be called to create it.
|
|
27
29
|
* The cache is stored on the object itself using a WeakMap, allowing for garbage collection
|
|
28
30
|
* when the object is no longer referenced.
|
|
29
|
-
*
|
|
31
|
+
*
|
|
30
32
|
* @param context The object to cache the value on
|
|
31
33
|
* @param factory A function that creates the value to be cached
|
|
32
34
|
* @returns The cached value or a newly created value from the factory
|
|
33
35
|
*/
|
|
34
|
-
export function getCached
|
|
36
|
+
export function getCached<A extends object, B>(
|
|
37
|
+
context: A,
|
|
38
|
+
factory: (obj: A) => B
|
|
39
|
+
): B {
|
|
35
40
|
// Get or create the factory map for this object
|
|
36
|
-
let factoryMap = cache.get(context);
|
|
41
|
+
let factoryMap = cache.get(context) as Map<Function, B> | undefined;
|
|
37
42
|
if (!factoryMap) {
|
|
38
43
|
factoryMap = new Map();
|
|
39
44
|
cache.set(context, factoryMap);
|
|
40
45
|
}
|
|
46
|
+
|
|
41
47
|
// Get or create the cached value for this factory
|
|
42
48
|
let value = factoryMap.get(factory);
|
|
43
49
|
if (value === undefined) {
|
|
44
50
|
value = factory(context);
|
|
45
51
|
factoryMap.set(factory, value);
|
|
46
52
|
}
|
|
53
|
+
|
|
47
54
|
return value;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=get-cached.js.map
|
|
55
|
+
}
|
package/{cache/functions/hashing/blob-to-hash.js → src/cache/functions/hashing/blob-to-hash.ts}
RENAMED
|
@@ -20,25 +20,27 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.*/
|
|
22
22
|
import { bufferToHash } from "./buffer-to-hash.js";
|
|
23
|
+
|
|
23
24
|
/**
|
|
24
25
|
* Converts a Blob to a hash using the blob content and type using SHA-256.
|
|
25
26
|
*/
|
|
26
|
-
export async function blobToHash(blob) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
27
|
+
export async function blobToHash(blob: Blob): Promise<string> {
|
|
28
|
+
const { type } = blob;
|
|
29
|
+
// create a single buffer to hold both the type and the blob
|
|
30
|
+
const typeByteLength = type.length * 2;
|
|
31
|
+
const buffer = new ArrayBuffer(typeByteLength + blob.size);
|
|
32
|
+
|
|
33
|
+
// write the type into the first part of the buffer
|
|
34
|
+
const charView = new Uint16Array(buffer, 0, type.length);
|
|
35
|
+
for (let i = 0, strLen = type.length; i < strLen; i++) {
|
|
36
|
+
charView[i] = type.charCodeAt(i);
|
|
37
|
+
}
|
|
38
|
+
// write the blob into the second part of the buffer
|
|
39
|
+
const byteView = new Uint8Array(buffer);
|
|
40
|
+
const blobArrayBuffer = await blob.arrayBuffer();
|
|
41
|
+
byteView.set(new Uint8Array(blobArrayBuffer), typeByteLength);
|
|
42
|
+
|
|
43
|
+
// finally create the hash off the combined buffer
|
|
44
|
+
const hash = await bufferToHash(buffer);
|
|
45
|
+
return hash;
|
|
43
46
|
}
|
|
44
|
-
//# sourceMappingURL=blob-to-hash.js.map
|
package/{cache/functions/hashing/buffer-to-hash.js → src/cache/functions/hashing/buffer-to-hash.ts}
RENAMED
|
@@ -19,15 +19,15 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.*/
|
|
22
|
-
function arrayBufferToHex(buffer) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
function arrayBufferToHex(buffer: ArrayBuffer): string {
|
|
23
|
+
return [...new Uint8Array(buffer)]
|
|
24
|
+
.map((x) => x.toString(16).padStart(2, "0"))
|
|
25
|
+
.join("");
|
|
26
26
|
}
|
|
27
|
+
|
|
27
28
|
/**
|
|
28
29
|
* Converts an ArrayBuffer to a hash using SHA-256.
|
|
29
30
|
*/
|
|
30
|
-
export async function bufferToHash(buffer) {
|
|
31
|
-
|
|
31
|
+
export async function bufferToHash(buffer: ArrayBuffer): Promise<string> {
|
|
32
|
+
return arrayBufferToHex(await crypto.subtle.digest("SHA-256", buffer));
|
|
32
33
|
}
|
|
33
|
-
//# sourceMappingURL=buffer-to-hash.js.map
|
|
@@ -0,0 +1,95 @@
|
|
|
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 { blobToHash } from "./blob-to-hash.js";
|
|
23
|
+
import { jsonToHash } from "./json-to-hash.js";
|
|
24
|
+
import { describe, expect, it } from "vitest";
|
|
25
|
+
|
|
26
|
+
describe("test hashing", () => {
|
|
27
|
+
it("blobToHash should avoid collisions based on content and type", async () => {
|
|
28
|
+
const blobs = [
|
|
29
|
+
new Blob([
|
|
30
|
+
new Uint8Array([
|
|
31
|
+
45, 255, 128, 0, 1, 33, 33, 85, 129, 250, 245, 12, 33, 89, 7,
|
|
32
|
+
]),
|
|
33
|
+
]),
|
|
34
|
+
new Blob([
|
|
35
|
+
new Uint8Array([
|
|
36
|
+
45, 255, 128, 0, 1, 33, 33, 85, 129, 250, 245, 12, 33, 89, 8,
|
|
37
|
+
]),
|
|
38
|
+
]),
|
|
39
|
+
new Blob(["long text sample here"]),
|
|
40
|
+
new Blob(["long text sample here."]),
|
|
41
|
+
new Blob(["a"]),
|
|
42
|
+
new Blob(["b"]),
|
|
43
|
+
new Blob(["a"], { type: "octet/binary" }),
|
|
44
|
+
new Blob(["a"], { type: "text/plain" }),
|
|
45
|
+
// empty blobs should work
|
|
46
|
+
new Blob([""]),
|
|
47
|
+
new Blob([""], { type: "octet/binary" }),
|
|
48
|
+
new Blob([""], { type: "text/plain" }),
|
|
49
|
+
];
|
|
50
|
+
const hashPromises = blobs.map((blob) => blobToHash(blob));
|
|
51
|
+
const hashes = await Promise.all(hashPromises);
|
|
52
|
+
const unique = new Set(hashes);
|
|
53
|
+
const collisions = hashes.length - unique.size;
|
|
54
|
+
expect(collisions).toBe(0);
|
|
55
|
+
});
|
|
56
|
+
it("blobToHash should generate consistent hashes", async () => {
|
|
57
|
+
const blobs = [
|
|
58
|
+
new Blob(["long text sample here"], { type: "text/plain" }),
|
|
59
|
+
new Blob(["long text sample here"], { type: "text/plain" }),
|
|
60
|
+
new Blob(["long text sample here"], { type: "text/plain" }),
|
|
61
|
+
];
|
|
62
|
+
const hashPromises = blobs.map((blob) => blobToHash(blob));
|
|
63
|
+
const hashes = await Promise.all(hashPromises);
|
|
64
|
+
const unique = new Set(hashes);
|
|
65
|
+
expect(unique.size).toBe(1);
|
|
66
|
+
});
|
|
67
|
+
it("jsonToHash should avoid collisions", async () => {
|
|
68
|
+
const values = [
|
|
69
|
+
"foo",
|
|
70
|
+
{ a: 1 },
|
|
71
|
+
{},
|
|
72
|
+
[],
|
|
73
|
+
{ a: 2 },
|
|
74
|
+
null,
|
|
75
|
+
"",
|
|
76
|
+
{ alpha: "bravo" },
|
|
77
|
+
];
|
|
78
|
+
const hashPromises = values.map((value) => jsonToHash(value));
|
|
79
|
+
const hashes = await Promise.all(hashPromises);
|
|
80
|
+
const unique = new Set(hashes);
|
|
81
|
+
const collisions = hashes.length - unique.size;
|
|
82
|
+
expect(collisions).toBe(0);
|
|
83
|
+
});
|
|
84
|
+
it("jsonToHash should generate consistent hashes", async () => {
|
|
85
|
+
const values = [
|
|
86
|
+
{ a: 1, b: 2, foo: "bar" },
|
|
87
|
+
{ a: 1, b: 2, foo: "bar" },
|
|
88
|
+
{ a: 1, b: 2, foo: "bar" },
|
|
89
|
+
];
|
|
90
|
+
const hashPromises = values.map((value) => jsonToHash(value));
|
|
91
|
+
const hashes = await Promise.all(hashPromises);
|
|
92
|
+
const unique = new Set(hashes);
|
|
93
|
+
expect(unique.size).toBe(1);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
@@ -19,8 +19,8 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.*/
|
|
22
|
+
|
|
22
23
|
export * from "./blob-to-hash.js";
|
|
23
24
|
export * from "./buffer-to-hash.js";
|
|
24
25
|
export * from "./json-to-hash.js";
|
|
25
26
|
export * from "./string-to-hash.js";
|
|
26
|
-
//# sourceMappingURL=index.js.map
|
package/{cache/functions/hashing/json-to-hash.js → src/cache/functions/hashing/json-to-hash.ts}
RENAMED
|
@@ -20,10 +20,10 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.*/
|
|
22
22
|
import { stringToHash } from "./string-to-hash.js";
|
|
23
|
+
|
|
23
24
|
/**
|
|
24
25
|
* Converts a JSON object to a hash using SHA-256.
|
|
25
26
|
*/
|
|
26
|
-
export async function jsonToHash(value) {
|
|
27
|
-
|
|
27
|
+
export async function jsonToHash(value: unknown): Promise<string> {
|
|
28
|
+
return stringToHash(JSON.stringify(value));
|
|
28
29
|
}
|
|
29
|
-
//# sourceMappingURL=json-to-hash.js.map
|
package/{cache/functions/hashing/string-to-hash.js → src/cache/functions/hashing/string-to-hash.ts}
RENAMED
|
@@ -20,18 +20,19 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.*/
|
|
22
22
|
import { bufferToHash } from "./buffer-to-hash.js";
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
|
|
24
|
+
function stringToArrayBuffer(value: string): ArrayBuffer {
|
|
25
|
+
const buf = new ArrayBuffer(value.length * 2);
|
|
26
|
+
const view = new Uint16Array(buf);
|
|
27
|
+
for (let i = 0, strLen = value.length; i < strLen; i++) {
|
|
28
|
+
view[i] = value.charCodeAt(i);
|
|
29
|
+
}
|
|
30
|
+
return buf;
|
|
30
31
|
}
|
|
32
|
+
|
|
31
33
|
/**
|
|
32
34
|
* Converts a string to a hash using SHA-256.
|
|
33
35
|
*/
|
|
34
|
-
export async function stringToHash(value) {
|
|
35
|
-
|
|
36
|
+
export async function stringToHash(value: string): Promise<string> {
|
|
37
|
+
return bufferToHash(stringToArrayBuffer(value));
|
|
36
38
|
}
|
|
37
|
-
//# sourceMappingURL=string-to-hash.js.map
|
|
@@ -19,11 +19,9 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.*/
|
|
22
|
+
|
|
22
23
|
export * from "./hashing/index.js";
|
|
23
|
-
// export * from './bind-functions.js';
|
|
24
24
|
export * from "./memoize.js";
|
|
25
|
-
// export * from './omit.js';
|
|
26
25
|
export * from "./prevent-parallel-execution.js";
|
|
27
|
-
export * from "./
|
|
26
|
+
export * from "./async-data-function.js";
|
|
28
27
|
export * from "./get-cached.js";
|
|
29
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -19,8 +19,13 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.*/
|
|
22
|
+
|
|
22
23
|
import { preventParallelExecution } from "./prevent-parallel-execution.js";
|
|
24
|
+
import { AsyncDataFunction } from "./async-data-function.js";
|
|
25
|
+
|
|
26
|
+
import { type Data } from "../../data.js";
|
|
23
27
|
import { getDataCache } from "../index.js";
|
|
28
|
+
|
|
24
29
|
/**
|
|
25
30
|
* Uses datacache to store results so we can avoid expensive recomputations of the same input.
|
|
26
31
|
* This function also uses preventParallelExecution to prevent multiple executions of the same function at the same time with the same arguments.
|
|
@@ -30,19 +35,21 @@ import { getDataCache } from "../index.js";
|
|
|
30
35
|
* @param name The name of this function which should be application unique to avoid hash collisions.
|
|
31
36
|
* @returns A function with the same signature but memoized results.
|
|
32
37
|
*/
|
|
33
|
-
export function memoize
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
38
|
+
export function memoize<In extends Array<Data>, Out extends Data>(
|
|
39
|
+
uniqueNameAndVersion: string,
|
|
40
|
+
fn: AsyncDataFunction<In, Out>
|
|
41
|
+
): AsyncDataFunction<In, Out> {
|
|
42
|
+
// synchronize the function to prevent executing same requests simultaneously.
|
|
43
|
+
fn = preventParallelExecution(fn);
|
|
44
|
+
const cache = getDataCache(uniqueNameAndVersion);
|
|
45
|
+
const memoized = async (...args: Array<Data>): Promise<Data> => {
|
|
46
|
+
const cachedResult = await cache.match(args);
|
|
47
|
+
if (cachedResult !== undefined) {
|
|
48
|
+
return cachedResult;
|
|
49
|
+
}
|
|
50
|
+
const result = await fn(...(args as In));
|
|
51
|
+
await cache.put(args, result);
|
|
52
|
+
return result;
|
|
53
|
+
};
|
|
54
|
+
return memoized as unknown as AsyncDataFunction<In, Out>;
|
|
47
55
|
}
|
|
48
|
-
//# sourceMappingURL=memoize.js.map
|
|
@@ -0,0 +1,50 @@
|
|
|
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 { type AsyncDataFunction } from "./async-data-function.js";
|
|
23
|
+
|
|
24
|
+
import { type Data } from "../../data.js";
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Returns an async function which can NOT be executed simultaneously with the same arguments.
|
|
28
|
+
* Any attempt to call again while a prior call with same args is executing will return the first promise.
|
|
29
|
+
* Once a promise completes, then a new call with same args could occur.
|
|
30
|
+
*/
|
|
31
|
+
export function preventParallelExecution<In extends Array<unknown>, Out>(
|
|
32
|
+
fn: AsyncDataFunction<In, Out>
|
|
33
|
+
): AsyncDataFunction<In, Out> {
|
|
34
|
+
const executing = new Map<string, Promise<Out>>();
|
|
35
|
+
const synchronized = async (...args: Array<Data>): Promise<Out> => {
|
|
36
|
+
const key = JSON.stringify(args);
|
|
37
|
+
let promise = executing.get(key);
|
|
38
|
+
if (!promise) {
|
|
39
|
+
promise = fn(...(args as In));
|
|
40
|
+
executing.set(key, promise);
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
return await promise;
|
|
44
|
+
} finally {
|
|
45
|
+
// we delete the key after execution to prevent memory leak.
|
|
46
|
+
executing.delete(key);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
return synchronized as unknown as AsyncDataFunction<In, Out>;
|
|
50
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
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 type { AsyncCache, AsyncCacheWithKeys } from "./async-cache.js";
|
|
23
|
+
import { createFallbackAsyncCache } from "./fallback-async-cache.js";
|
|
24
|
+
import { createManagedAsyncCache } from "./managed-async-cache.js";
|
|
25
|
+
import { createMemoryAsyncCache } from "./memory-async-cache.js";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Gets a persistent async cache.
|
|
29
|
+
* @param name the namespace name for the cache.
|
|
30
|
+
*/
|
|
31
|
+
async function getUnmanagedPersistentCache(
|
|
32
|
+
name: string
|
|
33
|
+
): Promise<AsyncCacheWithKeys<Request, Response>> {
|
|
34
|
+
return globalThis.caches.open(name) as unknown as Promise<
|
|
35
|
+
AsyncCacheWithKeys<Request, Response>
|
|
36
|
+
>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Gets a managed persistent cache using both fast memory layer and slower storage layer.
|
|
41
|
+
* @param name The namespace for this persistent cache, used to isolate cache storage.
|
|
42
|
+
* @param maximumMemoryEntries
|
|
43
|
+
* @param maximumStorageEntries
|
|
44
|
+
* @returns
|
|
45
|
+
*/
|
|
46
|
+
export async function getManagedPersistentCache(
|
|
47
|
+
name: string,
|
|
48
|
+
options: {
|
|
49
|
+
maximumMemoryEntries: number;
|
|
50
|
+
maximumStorageEntries: number;
|
|
51
|
+
}
|
|
52
|
+
): Promise<AsyncCache<Request, Response>> {
|
|
53
|
+
const memoryCache = createManagedAsyncCache(
|
|
54
|
+
createMemoryAsyncCache(),
|
|
55
|
+
options.maximumMemoryEntries
|
|
56
|
+
);
|
|
57
|
+
const storageCache = createManagedAsyncCache(
|
|
58
|
+
await getUnmanagedPersistentCache(name),
|
|
59
|
+
options.maximumStorageEntries
|
|
60
|
+
);
|
|
61
|
+
return createFallbackAsyncCache(memoryCache, storageCache);
|
|
62
|
+
}
|
|
@@ -19,7 +19,13 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.*/
|
|
22
|
-
|
|
23
|
-
export {
|
|
22
|
+
|
|
23
|
+
export {
|
|
24
|
+
type BlobStore,
|
|
25
|
+
type BlobRef,
|
|
26
|
+
blobStore,
|
|
27
|
+
isBlobRef,
|
|
28
|
+
BlobRefSchema,
|
|
29
|
+
} from "./blob-store.js";
|
|
30
|
+
export { getDataCache, type DataCache } from "./data-cache.js";
|
|
24
31
|
export * from "./functions/index.js";
|
|
25
|
-
//# sourceMappingURL=index.js.map
|