@adobe/data 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (591) hide show
  1. package/.cursorrules +28 -0
  2. package/.eslintrc.cjs +48 -0
  3. package/.github/CONTRIBUTING.md +47 -0
  4. package/CODE_OF_CONDUCT.md +79 -0
  5. package/LICENSE +21 -0
  6. package/README.md +2 -2
  7. package/asconfig.json +22 -0
  8. package/assembly/index.ts +85 -0
  9. package/assembly/tsconfig.json +17 -0
  10. package/c/build_run.sh +2 -0
  11. package/c/vector_addition +0 -0
  12. package/c/vector_addition.c +125 -0
  13. package/{cache/functions/types.js → config/license.js} +0 -2
  14. package/docs/perftest.html +28 -0
  15. package/index.html +10 -0
  16. package/package.json +49 -27
  17. package/scripts/deploy-docs.sh +41 -0
  18. package/{assembly-test/assembly.test.js → src/assembly-test/assembly.test.ts} +4 -4
  19. package/src/cache/async-cache.ts +38 -0
  20. package/{cache/blob-store.test.js → src/cache/blob-store.test.ts} +41 -7
  21. package/src/cache/blob-store.ts +278 -0
  22. package/src/cache/data-cache.test.ts +61 -0
  23. package/src/cache/data-cache.ts +183 -0
  24. package/src/cache/expiring-data-cache.test.ts +81 -0
  25. package/src/cache/expiring-data-cache.ts +61 -0
  26. package/src/cache/fallback-async-cache.ts +49 -0
  27. package/src/cache/functions/async-data-function.ts +25 -0
  28. package/src/cache/functions/functions.test.ts +84 -0
  29. package/{cache/functions/get-cached.test.js → src/cache/functions/get-cached.test.ts} +24 -7
  30. package/{cache/functions/get-cached.js → src/cache/functions/get-cached.ts} +12 -6
  31. package/{cache/functions/hashing/blob-to-hash.js → src/cache/functions/hashing/blob-to-hash.ts} +20 -18
  32. package/{cache/functions/hashing/buffer-to-hash.js → src/cache/functions/hashing/buffer-to-hash.ts} +7 -7
  33. package/src/cache/functions/hashing/hashing.test.ts +95 -0
  34. package/{cache/functions/hashing/index.js → src/cache/functions/hashing/index.ts} +1 -1
  35. package/{cache/functions/hashing/json-to-hash.js → src/cache/functions/hashing/json-to-hash.ts} +3 -3
  36. package/{cache/functions/hashing/string-to-hash.js → src/cache/functions/hashing/string-to-hash.ts} +11 -10
  37. package/{cache/functions/index.js → src/cache/functions/index.ts} +2 -4
  38. package/{cache/functions/memoize.js → src/cache/functions/memoize.ts} +22 -15
  39. package/src/cache/functions/prevent-parallel-execution.ts +50 -0
  40. package/src/cache/get-persistent-cache.ts +62 -0
  41. package/{cache/index.js → src/cache/index.ts} +9 -3
  42. package/src/cache/managed-array.ts +243 -0
  43. package/{cache/managed-async-cache.browser.test.js → src/cache/managed-async-cache.browser.test.ts} +27 -24
  44. package/src/cache/managed-async-cache.ts +78 -0
  45. package/src/cache/memory-allocator.ts +176 -0
  46. package/src/cache/memory-async-cache.ts +51 -0
  47. package/src/data.ts +38 -0
  48. package/src/ecs/README.md +21 -0
  49. package/src/ecs/archetype/archetype.ts +39 -0
  50. package/src/ecs/archetype/create-archetype.test.ts +115 -0
  51. package/src/ecs/archetype/create-archetype.ts +52 -0
  52. package/src/ecs/archetype/delete-row.test.ts +110 -0
  53. package/src/ecs/archetype/delete-row.ts +37 -0
  54. package/src/ecs/archetype/index.ts +24 -0
  55. package/src/ecs/component-schemas.ts +24 -0
  56. package/src/ecs/core-components.ts +443 -0
  57. package/src/ecs/database/create-database.test.ts +745 -0
  58. package/src/ecs/database/create-database.ts +205 -0
  59. package/src/ecs/database/database.ts +81 -0
  60. package/src/ecs/database/index.ts +24 -0
  61. package/src/ecs/database/observe-dependent-value.test.ts +198 -0
  62. package/src/ecs/database/observe-dependent-value.ts +78 -0
  63. package/src/ecs/database/transactional-store/create-transactional-store.test.ts +250 -0
  64. package/src/ecs/database/transactional-store/create-transactional-store.ts +281 -0
  65. package/{ecs/ecs/ecs-types.js → src/ecs/database/transactional-store/index.ts} +1 -2
  66. package/src/ecs/database/transactional-store/transactional-store.ts +80 -0
  67. package/src/ecs/entity-location-table/create-entity-location-table.test.ts +170 -0
  68. package/src/ecs/entity-location-table/create-entity-location-table.ts +96 -0
  69. package/src/ecs/entity-location-table/entity-location-table.ts +30 -0
  70. package/{core/schema/schema.js → src/ecs/entity-location-table/entity-location.ts} +11 -11
  71. package/src/ecs/entity-location-table/index.ts +23 -0
  72. package/src/ecs/entity.ts +26 -0
  73. package/src/ecs/index.ts +26 -0
  74. package/src/ecs/store/core/core.ts +71 -0
  75. package/src/ecs/store/core/create-core.test.ts +440 -0
  76. package/src/ecs/store/core/create-core.ts +168 -0
  77. package/{cache/async-cache.js → src/ecs/store/core/index.ts} +1 -2
  78. package/src/ecs/store/create-store.test.ts +562 -0
  79. package/src/ecs/store/create-store.ts +97 -0
  80. package/src/ecs/store/index.ts +23 -0
  81. package/{types/types.js → src/ecs/store/resource-components.ts} +2 -6
  82. package/src/ecs/store/store.ts +55 -0
  83. package/src/equals-shallow.test.ts +133 -0
  84. package/src/equals-shallow.ts +37 -0
  85. package/src/equals.test.ts +175 -0
  86. package/src/equals.ts +70 -0
  87. package/src/index.ts +27 -0
  88. package/src/internal/array-buffer-like/copy.ts +469 -0
  89. package/src/internal/array-buffer-like/grow.ts +53 -0
  90. package/{core/index.js → src/internal/array-buffer-like/index.ts} +4 -4
  91. package/src/internal/array-buffer-like/is-array-buffer.ts +445 -0
  92. package/src/internal/array-buffer-like/is-shared-array-buffer.ts +445 -0
  93. package/{core/functions/is-async-generator.js → src/internal/async-generator/is-async-generator.ts} +2 -2
  94. package/{core/schema.js → src/internal/data-view-32/create-data-view-32.ts} +8 -11
  95. package/src/internal/data-view-32/data-view-32.ts +447 -0
  96. package/{ecs/action-ecs/index.js → src/internal/data-view-32/index.ts} +2 -2
  97. package/src/internal/function/memoize-factory.ts +12 -0
  98. package/src/internal/object/index.ts +23 -0
  99. package/{cache/functions/bind-functions.js → src/internal/object/map-entries.ts} +6 -11
  100. package/src/internal/promise/is-promise.ts +28 -0
  101. package/src/internal/typed-array/get-byte-size.ts +50 -0
  102. package/src/internal/typed-array/index.ts +24 -0
  103. package/src/internal/typed-array/typed-array-constructer.ts +32 -0
  104. package/src/internal/typed-array/typed-array.ts +25 -0
  105. package/src/is-data.ts +47 -0
  106. package/src/lit/decorators/apply-decorator.ts +24 -0
  107. package/src/lit/decorators/apply-service-decorators.ts +13 -0
  108. package/src/lit/decorators/index.ts +24 -0
  109. package/src/lit/decorators/require-service.ts +19 -0
  110. package/src/lit/elements/index.ts +3 -0
  111. package/src/lit/elements/service-application.ts +26 -0
  112. package/src/lit/elements/service-context.ts +3 -0
  113. package/src/lit/elements/service-element.ts +18 -0
  114. package/src/lit/hooks/component/component.ts +10 -0
  115. package/src/lit/hooks/component/stack.ts +17 -0
  116. package/src/lit/hooks/index.ts +13 -0
  117. package/src/lit/hooks/use-connected.ts +39 -0
  118. package/src/lit/hooks/use-effect.ts +17 -0
  119. package/src/lit/hooks/use-element.ts +8 -0
  120. package/src/lit/hooks/use-memo.ts +14 -0
  121. package/src/lit/hooks/use-observable-values.ts +9 -0
  122. package/src/lit/hooks/use-observable.ts +13 -0
  123. package/src/lit/hooks/use-ref.ts +6 -0
  124. package/src/lit/hooks/use-resize-observer.ts +27 -0
  125. package/src/lit/hooks/use-state.ts +17 -0
  126. package/src/lit/hooks/use-window-event.ts +14 -0
  127. package/src/lit/hooks/with-hooks.ts +20 -0
  128. package/src/lit/index.ts +3 -0
  129. package/src/mutable-clone.ts +29 -0
  130. package/{core/data.test.js → src/normalize.test.ts} +22 -22
  131. package/src/normalize.ts +37 -0
  132. package/src/observe/create-observable-event.ts +47 -0
  133. package/src/observe/create-observable-state.ts +51 -0
  134. package/src/observe/create-persisted-state.test.ts +143 -0
  135. package/src/observe/create-persisted-state.ts +60 -0
  136. package/src/observe/create-query-state.ts +70 -0
  137. package/{observe/from-array.js → src/observe/from-array.ts} +14 -3
  138. package/{service/service.js → src/observe/from-constant.ts} +13 -4
  139. package/{observe/from-element-id.js → src/observe/from-element-id.ts} +44 -39
  140. package/src/observe/from-element-properties-and-events.ts +47 -0
  141. package/{observe/from-element-property.js → src/observe/from-element-property.ts} +33 -25
  142. package/src/observe/from-promise-with-error.ts +51 -0
  143. package/src/observe/from-promise.ts +49 -0
  144. package/src/observe/from-properties.ts +67 -0
  145. package/{observe/index.js → src/observe/index.ts} +4 -1
  146. package/src/observe/observe.test.ts +467 -0
  147. package/src/observe/to-promise.ts +40 -0
  148. package/src/observe/to-properties.ts +41 -0
  149. package/src/observe/types.ts +40 -0
  150. package/src/observe/with-async-map.ts +37 -0
  151. package/src/observe/with-batch.test.ts +141 -0
  152. package/src/observe/with-batch.ts +67 -0
  153. package/{core/data.js → src/observe/with-cache.ts} +32 -26
  154. package/src/observe/with-copy.ts +32 -0
  155. package/src/observe/with-deduplicate-data.ts +43 -0
  156. package/src/observe/with-deduplicate.ts +41 -0
  157. package/src/observe/with-default.ts +48 -0
  158. package/src/observe/with-lazy.test.ts +68 -0
  159. package/{core/functions/is-promise.js → src/observe/with-lazy.ts} +17 -5
  160. package/{observe/with-map-data.js → src/observe/with-map-data.ts} +9 -3
  161. package/src/observe/with-map.ts +36 -0
  162. package/src/observe/with-optional.ts +47 -0
  163. package/src/observe/with-unwrap.ts +54 -0
  164. package/src/old-ecs/action-ecs/action-ecs.test.ts +420 -0
  165. package/src/old-ecs/action-ecs/action-ecs.ts +274 -0
  166. package/src/old-ecs/action-ecs/action-types.ts +178 -0
  167. package/src/old-ecs/action-ecs/index.ts +29 -0
  168. package/{service/sequential-action.js → src/old-ecs/action-ecs/sequential-action.ts} +19 -4
  169. package/src/old-ecs/core-ecs/core-ecs-serialization.test.ts +244 -0
  170. package/src/old-ecs/core-ecs/core-ecs-types.ts +183 -0
  171. package/src/old-ecs/core-ecs/core-ecs.test.ts +474 -0
  172. package/src/old-ecs/core-ecs/core-ecs.ts +640 -0
  173. package/{core/functions/index.js → src/old-ecs/core-ecs/index.ts} +9 -4
  174. package/src/old-ecs/ecs/ecs-types.ts +189 -0
  175. package/src/old-ecs/ecs/ecs-where-functions.ts +95 -0
  176. package/src/old-ecs/ecs/ecs.test.ts +461 -0
  177. package/src/old-ecs/ecs/ecs.ts +279 -0
  178. package/{ecs/core-ecs/core-ecs-types.js → src/old-ecs/ecs/index.ts} +2 -2
  179. package/src/old-ecs/entity.ts +26 -0
  180. package/{ecs/index.js → src/old-ecs/index.ts} +1 -1
  181. package/{ecs/transaction-ecs/index.js → src/old-ecs/transaction-ecs/index.ts} +0 -1
  182. package/src/old-ecs/transaction-ecs/transaction-ecs.test.ts +725 -0
  183. package/src/old-ecs/transaction-ecs/transaction-ecs.ts +283 -0
  184. package/src/old-ecs/transaction-ecs/transaction-types.ts +248 -0
  185. package/src/old-ecs/transaction-ecs/transactions.ts +243 -0
  186. package/src/perftest/ecs-perf.ts +255 -0
  187. package/src/perftest/helper-functions.ts +31 -0
  188. package/src/perftest/horizon-perf.ts +132 -0
  189. package/{perftest/index.js → src/perftest/index.ts} +9 -7
  190. package/src/perftest/perf-test.ts +193 -0
  191. package/src/perftest/perf.md +90 -0
  192. package/src/perftest/vanilla-perf.ts +136 -0
  193. package/src/schema/boolean.ts +5 -0
  194. package/src/schema/dynamic/deep-merge.test.ts +100 -0
  195. package/src/schema/dynamic/deep-merge.ts +67 -0
  196. package/{core/schema/dynamic/enumerate-patches.test.js → src/schema/dynamic/enumerate-patches.test.ts} +49 -23
  197. package/{core/schema/dynamic/enumerate-patches.js → src/schema/dynamic/enumerate-patches.ts} +44 -4
  198. package/{core/schema/dynamic/get-dynamic-schema.test.js → src/schema/dynamic/get-dynamic-schema.test.ts} +41 -6
  199. package/src/schema/dynamic/get-dynamic-schema.ts +48 -0
  200. package/src/schema/dynamic/index.ts +22 -0
  201. package/src/schema/f32.ts +30 -0
  202. package/src/schema/i32.ts +31 -0
  203. package/src/schema/index.ts +32 -0
  204. package/{cache/functions/omit.js → src/schema/nullable.ts} +10 -7
  205. package/src/schema/schema.ts +229 -0
  206. package/src/schema/time.ts +5 -0
  207. package/src/schema/true.ts +26 -0
  208. package/src/schema/tuple.ts +5 -0
  209. package/src/schema/u32.ts +31 -0
  210. package/{core/schema/validation/is-valid.test.js → src/schema/validation/is-valid.test.ts} +6 -3
  211. package/{core/functions/array-equals.js → src/schema/validation/is-valid.ts} +8 -10
  212. package/{core/schema/validation/validate.test.js → src/schema/validation/validate.test.ts} +18 -4
  213. package/{core/schema/validation/validate.js → src/schema/validation/validate.ts} +9 -6
  214. package/{core/functions/with-validation.test.js → src/schema/validation/with-validation.test.ts} +28 -12
  215. package/{core/functions/with-validation.js → src/schema/validation/with-validation.ts} +14 -10
  216. package/src/schema.test.ts +55 -0
  217. package/src/service/add-observable-actions.ts +207 -0
  218. package/{service/index.js → src/service/index.ts} +4 -4
  219. package/src/service/is-service.ts +7 -0
  220. package/src/service/progressive-result.ts +141 -0
  221. package/src/service/service.ts +27 -0
  222. package/src/table/add-row.ts +42 -0
  223. package/src/table/create-table.ts +36 -0
  224. package/src/table/delete-row.ts +42 -0
  225. package/src/table/ensure-capacity.ts +37 -0
  226. package/src/table/get-row-data.ts +31 -0
  227. package/src/table/index.ts +29 -0
  228. package/src/table/row-index.ts +26 -0
  229. package/src/table/table.ts +32 -0
  230. package/src/table/update-row.ts +35 -0
  231. package/src/tsconfig.json +6 -0
  232. package/src/typed-buffer/copy-to-gpu-buffer.ts +23 -0
  233. package/{cache/expiring-data-cache.js → src/typed-buffer/create-array-buffer.ts} +31 -25
  234. package/src/typed-buffer/create-number-buffer.ts +90 -0
  235. package/src/typed-buffer/create-struct-buffer.ts +93 -0
  236. package/src/typed-buffer/create-typed-buffer.ts +49 -0
  237. package/src/typed-buffer/index.ts +26 -0
  238. package/src/typed-buffer/structs/assert-struct.ts +37 -0
  239. package/src/typed-buffer/structs/create-read-struct.test.ts +202 -0
  240. package/src/typed-buffer/structs/create-read-struct.ts +77 -0
  241. package/src/typed-buffer/structs/create-write-struct.ts +73 -0
  242. package/src/typed-buffer/structs/get-field-offset.ts +36 -0
  243. package/src/typed-buffer/structs/get-struct-layout.test.ts +146 -0
  244. package/src/typed-buffer/structs/get-struct-layout.ts +222 -0
  245. package/src/typed-buffer/structs/index.ts +22 -0
  246. package/src/typed-buffer/structs/read-struct.ts +25 -0
  247. package/src/typed-buffer/structs/struct-layout.ts +465 -0
  248. package/src/typed-buffer/structs/write-struct.test.ts +195 -0
  249. package/src/typed-buffer/structs/write-struct.ts +25 -0
  250. package/src/typed-buffer/typed-buffer.test.ts +253 -0
  251. package/src/typed-buffer/typed-buffer.ts +41 -0
  252. package/src/types/assert.ts +22 -0
  253. package/src/types/equal.ts +24 -0
  254. package/{types/index.js → src/types/index.ts} +3 -1
  255. package/src/types/types.ts +166 -0
  256. package/tsconfig-base.json +25 -0
  257. package/tsconfig.json +8 -0
  258. package/typedoc.json +22 -0
  259. package/vite.config.js +16 -0
  260. package/assembly/index.d.ts +0 -30
  261. package/assembly/index.js +0 -18
  262. package/assembly/index.wasm +0 -0
  263. package/assembly/index.wasm.map +0 -1
  264. package/assembly-test/assembly.test.d.ts +0 -1
  265. package/assembly-test/assembly.test.js.map +0 -1
  266. package/cache/async-cache.d.ts +0 -15
  267. package/cache/async-cache.js.map +0 -1
  268. package/cache/blob-store.d.ts +0 -94
  269. package/cache/blob-store.js +0 -191
  270. package/cache/blob-store.js.map +0 -1
  271. package/cache/blob-store.test.d.ts +0 -1
  272. package/cache/blob-store.test.js.map +0 -1
  273. package/cache/data-cache.d.ts +0 -38
  274. package/cache/data-cache.js +0 -96
  275. package/cache/data-cache.js.map +0 -1
  276. package/cache/data-cache.test.d.ts +0 -1
  277. package/cache/data-cache.test.js +0 -50
  278. package/cache/data-cache.test.js.map +0 -1
  279. package/cache/expiring-data-cache.d.ts +0 -6
  280. package/cache/expiring-data-cache.js.map +0 -1
  281. package/cache/expiring-data-cache.test.d.ts +0 -1
  282. package/cache/expiring-data-cache.test.js +0 -62
  283. package/cache/expiring-data-cache.test.js.map +0 -1
  284. package/cache/fallback-async-cache.d.ts +0 -7
  285. package/cache/fallback-async-cache.js +0 -22
  286. package/cache/fallback-async-cache.js.map +0 -1
  287. package/cache/functions/bind-functions.d.ts +0 -6
  288. package/cache/functions/bind-functions.js.map +0 -1
  289. package/cache/functions/functions.test.d.ts +0 -1
  290. package/cache/functions/functions.test.js +0 -79
  291. package/cache/functions/functions.test.js.map +0 -1
  292. package/cache/functions/get-cached.d.ts +0 -11
  293. package/cache/functions/get-cached.js.map +0 -1
  294. package/cache/functions/get-cached.test.d.ts +0 -1
  295. package/cache/functions/get-cached.test.js.map +0 -1
  296. package/cache/functions/hashing/blob-to-hash.d.ts +0 -4
  297. package/cache/functions/hashing/blob-to-hash.js.map +0 -1
  298. package/cache/functions/hashing/buffer-to-hash.d.ts +0 -4
  299. package/cache/functions/hashing/buffer-to-hash.js.map +0 -1
  300. package/cache/functions/hashing/hashing.test.d.ts +0 -1
  301. package/cache/functions/hashing/hashing.test.js +0 -95
  302. package/cache/functions/hashing/hashing.test.js.map +0 -1
  303. package/cache/functions/hashing/index.d.ts +0 -4
  304. package/cache/functions/hashing/index.js.map +0 -1
  305. package/cache/functions/hashing/json-to-hash.d.ts +0 -4
  306. package/cache/functions/hashing/json-to-hash.js.map +0 -1
  307. package/cache/functions/hashing/string-to-hash.d.ts +0 -4
  308. package/cache/functions/hashing/string-to-hash.js.map +0 -1
  309. package/cache/functions/index.d.ts +0 -5
  310. package/cache/functions/index.js.map +0 -1
  311. package/cache/functions/memoize.d.ts +0 -12
  312. package/cache/functions/memoize.js.map +0 -1
  313. package/cache/functions/omit.d.ts +0 -1
  314. package/cache/functions/omit.js.map +0 -1
  315. package/cache/functions/prevent-parallel-execution.d.ts +0 -7
  316. package/cache/functions/prevent-parallel-execution.js +0 -25
  317. package/cache/functions/prevent-parallel-execution.js.map +0 -1
  318. package/cache/functions/types.d.ts +0 -1
  319. package/cache/functions/types.js.map +0 -1
  320. package/cache/get-persistent-cache.d.ts +0 -12
  321. package/cache/get-persistent-cache.js +0 -23
  322. package/cache/get-persistent-cache.js.map +0 -1
  323. package/cache/index.d.ts +0 -3
  324. package/cache/index.js.map +0 -1
  325. package/cache/managed-array.d.ts +0 -23
  326. package/cache/managed-array.js +0 -160
  327. package/cache/managed-array.js.map +0 -1
  328. package/cache/managed-async-cache.browser.test.d.ts +0 -1
  329. package/cache/managed-async-cache.browser.test.js.map +0 -1
  330. package/cache/managed-async-cache.d.ts +0 -4
  331. package/cache/managed-async-cache.js +0 -45
  332. package/cache/managed-async-cache.js.map +0 -1
  333. package/cache/memory-allocator.d.ts +0 -23
  334. package/cache/memory-allocator.js +0 -94
  335. package/cache/memory-allocator.js.map +0 -1
  336. package/cache/memory-async-cache.d.ts +0 -6
  337. package/cache/memory-async-cache.js +0 -23
  338. package/cache/memory-async-cache.js.map +0 -1
  339. package/core/data.d.ts +0 -22
  340. package/core/data.js.map +0 -1
  341. package/core/data.test.d.ts +0 -1
  342. package/core/data.test.js.map +0 -1
  343. package/core/functions/array-equals.d.ts +0 -1
  344. package/core/functions/array-equals.js.map +0 -1
  345. package/core/functions/deep-merge.d.ts +0 -32
  346. package/core/functions/deep-merge.js +0 -54
  347. package/core/functions/deep-merge.js.map +0 -1
  348. package/core/functions/deep-merge.test.d.ts +0 -1
  349. package/core/functions/deep-merge.test.js +0 -94
  350. package/core/functions/deep-merge.test.js.map +0 -1
  351. package/core/functions/index.d.ts +0 -3
  352. package/core/functions/index.js.map +0 -1
  353. package/core/functions/is-async-generator.d.ts +0 -1
  354. package/core/functions/is-async-generator.js.map +0 -1
  355. package/core/functions/is-promise.d.ts +0 -1
  356. package/core/functions/is-promise.js.map +0 -1
  357. package/core/functions/with-validation.d.ts +0 -5
  358. package/core/functions/with-validation.js.map +0 -1
  359. package/core/functions/with-validation.test.d.ts +0 -1
  360. package/core/functions/with-validation.test.js.map +0 -1
  361. package/core/index.d.ts +0 -3
  362. package/core/index.js.map +0 -1
  363. package/core/schema/dynamic/dynamic-schema.d.ts +0 -27
  364. package/core/schema/dynamic/dynamic-schema.js +0 -2
  365. package/core/schema/dynamic/dynamic-schema.js.map +0 -1
  366. package/core/schema/dynamic/enumerate-patches.d.ts +0 -9
  367. package/core/schema/dynamic/enumerate-patches.js.map +0 -1
  368. package/core/schema/dynamic/enumerate-patches.test.d.ts +0 -134
  369. package/core/schema/dynamic/enumerate-patches.test.js.map +0 -1
  370. package/core/schema/dynamic/get-dynamic-schema.d.ts +0 -5
  371. package/core/schema/dynamic/get-dynamic-schema.js +0 -26
  372. package/core/schema/dynamic/get-dynamic-schema.js.map +0 -1
  373. package/core/schema/dynamic/get-dynamic-schema.test.d.ts +0 -1
  374. package/core/schema/dynamic/get-dynamic-schema.test.js.map +0 -1
  375. package/core/schema/dynamic/index.d.ts +0 -1
  376. package/core/schema/dynamic/index.js +0 -2
  377. package/core/schema/dynamic/index.js.map +0 -1
  378. package/core/schema/dynamic/schema-path-value-path.d.ts +0 -5
  379. package/core/schema/dynamic/schema-path-value-path.js +0 -12
  380. package/core/schema/dynamic/schema-path-value-path.js.map +0 -1
  381. package/core/schema/dynamic-schema.d.ts +0 -27
  382. package/core/schema/dynamic-schema.js +0 -2
  383. package/core/schema/dynamic-schema.js.map +0 -1
  384. package/core/schema/index.d.ts +0 -4
  385. package/core/schema/index.js +0 -26
  386. package/core/schema/index.js.map +0 -1
  387. package/core/schema/schema.d.ts +0 -122
  388. package/core/schema/schema.js.map +0 -1
  389. package/core/schema/schemas.d.ts +0 -45
  390. package/core/schema/schemas.js +0 -39
  391. package/core/schema/schemas.js.map +0 -1
  392. package/core/schema/ui-schema.d.ts +0 -25
  393. package/core/schema/ui-schema.js +0 -2
  394. package/core/schema/ui-schema.js.map +0 -1
  395. package/core/schema/validation/is-valid.d.ts +0 -2
  396. package/core/schema/validation/is-valid.js +0 -14
  397. package/core/schema/validation/is-valid.js.map +0 -1
  398. package/core/schema/validation/is-valid.test.d.ts +0 -1
  399. package/core/schema/validation/is-valid.test.js.map +0 -1
  400. package/core/schema/validation/validate.d.ts +0 -2
  401. package/core/schema/validation/validate.js.map +0 -1
  402. package/core/schema/validation/validate.test.d.ts +0 -1
  403. package/core/schema/validation/validate.test.js.map +0 -1
  404. package/core/schema/validation/with-validation.d.ts +0 -5
  405. package/core/schema/validation/with-validation.js +0 -16
  406. package/core/schema/validation/with-validation.js.map +0 -1
  407. package/core/schema/validation/with-validation.test.d.ts +0 -1
  408. package/core/schema/validation/with-validation.test.js +0 -96
  409. package/core/schema/validation/with-validation.test.js.map +0 -1
  410. package/core/schema.d.ts +0 -86
  411. package/core/schema.js.map +0 -1
  412. package/core/schema.test.d.ts +0 -1
  413. package/core/schema.test.js +0 -16
  414. package/core/schema.test.js.map +0 -1
  415. package/core/schemas.d.ts +0 -45
  416. package/core/schemas.js +0 -39
  417. package/core/schemas.js.map +0 -1
  418. package/ecs/action-ecs/action-ecs.d.ts +0 -19
  419. package/ecs/action-ecs/action-ecs.js +0 -203
  420. package/ecs/action-ecs/action-ecs.js.map +0 -1
  421. package/ecs/action-ecs/action-ecs.test.d.ts +0 -1
  422. package/ecs/action-ecs/action-ecs.test.js +0 -362
  423. package/ecs/action-ecs/action-ecs.test.js.map +0 -1
  424. package/ecs/action-ecs/action-types.d.ts +0 -106
  425. package/ecs/action-ecs/action-types.js +0 -19
  426. package/ecs/action-ecs/action-types.js.map +0 -1
  427. package/ecs/action-ecs/index.d.ts +0 -2
  428. package/ecs/action-ecs/index.js.map +0 -1
  429. package/ecs/core-ecs/core-ecs-serialization.test.d.ts +0 -1
  430. package/ecs/core-ecs/core-ecs-serialization.test.js +0 -230
  431. package/ecs/core-ecs/core-ecs-serialization.test.js.map +0 -1
  432. package/ecs/core-ecs/core-ecs-types.d.ts +0 -141
  433. package/ecs/core-ecs/core-ecs-types.js.map +0 -1
  434. package/ecs/core-ecs/core-ecs.d.ts +0 -7
  435. package/ecs/core-ecs/core-ecs.js +0 -492
  436. package/ecs/core-ecs/core-ecs.js.map +0 -1
  437. package/ecs/core-ecs/core-ecs.test.d.ts +0 -1
  438. package/ecs/core-ecs/core-ecs.test.js +0 -425
  439. package/ecs/core-ecs/core-ecs.test.js.map +0 -1
  440. package/ecs/core-ecs/index.d.ts +0 -1
  441. package/ecs/core-ecs/index.js +0 -2
  442. package/ecs/core-ecs/index.js.map +0 -1
  443. package/ecs/ecs/ecs-types.d.ts +0 -132
  444. package/ecs/ecs/ecs-types.js.map +0 -1
  445. package/ecs/ecs/ecs-where-functions.d.ts +0 -6
  446. package/ecs/ecs/ecs-where-functions.js +0 -91
  447. package/ecs/ecs/ecs-where-functions.js.map +0 -1
  448. package/ecs/ecs/ecs.d.ts +0 -13
  449. package/ecs/ecs/ecs.js +0 -177
  450. package/ecs/ecs/ecs.js.map +0 -1
  451. package/ecs/ecs/ecs.test.d.ts +0 -1
  452. package/ecs/ecs/ecs.test.js +0 -399
  453. package/ecs/ecs/ecs.test.js.map +0 -1
  454. package/ecs/ecs/index.d.ts +0 -3
  455. package/ecs/ecs/index.js +0 -3
  456. package/ecs/ecs/index.js.map +0 -1
  457. package/ecs/index.d.ts +0 -4
  458. package/ecs/index.js.map +0 -1
  459. package/ecs/transaction-ecs/index.d.ts +0 -2
  460. package/ecs/transaction-ecs/index.js.map +0 -1
  461. package/ecs/transaction-ecs/transaction-ecs.d.ts +0 -11
  462. package/ecs/transaction-ecs/transaction-ecs.js +0 -184
  463. package/ecs/transaction-ecs/transaction-ecs.js.map +0 -1
  464. package/ecs/transaction-ecs/transaction-ecs.test.d.ts +0 -1
  465. package/ecs/transaction-ecs/transaction-ecs.test.js +0 -599
  466. package/ecs/transaction-ecs/transaction-ecs.test.js.map +0 -1
  467. package/ecs/transaction-ecs/transaction-types.d.ts +0 -135
  468. package/ecs/transaction-ecs/transaction-types.js +0 -2
  469. package/ecs/transaction-ecs/transaction-types.js.map +0 -1
  470. package/ecs/transaction-ecs/transactions.d.ts +0 -5
  471. package/ecs/transaction-ecs/transactions.js +0 -158
  472. package/ecs/transaction-ecs/transactions.js.map +0 -1
  473. package/index.d.ts +0 -1
  474. package/index.js +0 -23
  475. package/index.js.map +0 -1
  476. package/observe/create-observable-event.d.ts +0 -10
  477. package/observe/create-observable-event.js +0 -22
  478. package/observe/create-observable-event.js.map +0 -1
  479. package/observe/create-observable-state.d.ts +0 -7
  480. package/observe/create-observable-state.js +0 -27
  481. package/observe/create-observable-state.js.map +0 -1
  482. package/observe/create-persisted-state.d.ts +0 -11
  483. package/observe/create-persisted-state.js +0 -31
  484. package/observe/create-persisted-state.js.map +0 -1
  485. package/observe/create-persisted-state.test.d.ts +0 -1
  486. package/observe/create-persisted-state.test.js +0 -124
  487. package/observe/create-persisted-state.test.js.map +0 -1
  488. package/observe/from-array.d.ts +0 -5
  489. package/observe/from-array.js.map +0 -1
  490. package/observe/from-constant.d.ts +0 -5
  491. package/observe/from-constant.js +0 -12
  492. package/observe/from-constant.js.map +0 -1
  493. package/observe/from-element-id.d.ts +0 -7
  494. package/observe/from-element-id.js.map +0 -1
  495. package/observe/from-element-properties-and-events.d.ts +0 -2
  496. package/observe/from-element-properties-and-events.js +0 -18
  497. package/observe/from-element-properties-and-events.js.map +0 -1
  498. package/observe/from-element-property.d.ts +0 -11
  499. package/observe/from-element-property.js.map +0 -1
  500. package/observe/from-promise-with-error.d.ts +0 -7
  501. package/observe/from-promise-with-error.js +0 -27
  502. package/observe/from-promise-with-error.js.map +0 -1
  503. package/observe/from-promise.d.ts +0 -6
  504. package/observe/from-promise.js +0 -22
  505. package/observe/from-promise.js.map +0 -1
  506. package/observe/from-properties.d.ts +0 -10
  507. package/observe/from-properties.js +0 -33
  508. package/observe/from-properties.js.map +0 -1
  509. package/observe/index.d.ts +0 -27
  510. package/observe/index.js.map +0 -1
  511. package/observe/observe.test.d.ts +0 -7
  512. package/observe/observe.test.js +0 -417
  513. package/observe/observe.test.js.map +0 -1
  514. package/observe/to-promise.d.ts +0 -8
  515. package/observe/to-promise.js +0 -18
  516. package/observe/to-promise.js.map +0 -1
  517. package/observe/to-properties.d.ts +0 -11
  518. package/observe/to-properties.js +0 -9
  519. package/observe/to-properties.js.map +0 -1
  520. package/observe/types.d.ts +0 -17
  521. package/observe/types.js +0 -2
  522. package/observe/types.js.map +0 -1
  523. package/observe/with-async-map.d.ts +0 -6
  524. package/observe/with-async-map.js +0 -12
  525. package/observe/with-async-map.js.map +0 -1
  526. package/observe/with-cache.d.ts +0 -6
  527. package/observe/with-cache.js +0 -33
  528. package/observe/with-cache.js.map +0 -1
  529. package/observe/with-copy.d.ts +0 -5
  530. package/observe/with-copy.js +0 -10
  531. package/observe/with-copy.js.map +0 -1
  532. package/observe/with-deduplicate-data.d.ts +0 -7
  533. package/observe/with-deduplicate-data.js +0 -18
  534. package/observe/with-deduplicate-data.js.map +0 -1
  535. package/observe/with-deduplicate.d.ts +0 -6
  536. package/observe/with-deduplicate.js +0 -19
  537. package/observe/with-deduplicate.js.map +0 -1
  538. package/observe/with-default.d.ts +0 -6
  539. package/observe/with-default.js +0 -21
  540. package/observe/with-default.js.map +0 -1
  541. package/observe/with-map-data.d.ts +0 -7
  542. package/observe/with-map-data.js.map +0 -1
  543. package/observe/with-map.d.ts +0 -5
  544. package/observe/with-map.js +0 -11
  545. package/observe/with-map.js.map +0 -1
  546. package/observe/with-optional.d.ts +0 -5
  547. package/observe/with-optional.js +0 -20
  548. package/observe/with-optional.js.map +0 -1
  549. package/observe/with-unwrap.d.ts +0 -5
  550. package/observe/with-unwrap.js +0 -26
  551. package/observe/with-unwrap.js.map +0 -1
  552. package/perftest/ecs-perf.d.ts +0 -49
  553. package/perftest/ecs-perf.js +0 -230
  554. package/perftest/ecs-perf.js.map +0 -1
  555. package/perftest/helper-functions.d.ts +0 -1
  556. package/perftest/helper-functions.js +0 -31
  557. package/perftest/helper-functions.js.map +0 -1
  558. package/perftest/horizon-perf.d.ts +0 -22
  559. package/perftest/horizon-perf.js +0 -126
  560. package/perftest/horizon-perf.js.map +0 -1
  561. package/perftest/index.d.ts +0 -1
  562. package/perftest/index.js.map +0 -1
  563. package/perftest/perf-test.d.ts +0 -18
  564. package/perftest/perf-test.js +0 -124
  565. package/perftest/perf-test.js.map +0 -1
  566. package/perftest/vanilla-perf.d.ts +0 -38
  567. package/perftest/vanilla-perf.js +0 -128
  568. package/perftest/vanilla-perf.js.map +0 -1
  569. package/schemas/index.d.ts +0 -1
  570. package/schemas/index.js +0 -23
  571. package/schemas/index.js.map +0 -1
  572. package/schemas/schemas.d.ts +0 -45
  573. package/schemas/schemas.js +0 -39
  574. package/schemas/schemas.js.map +0 -1
  575. package/service/add-observable-actions.d.ts +0 -29
  576. package/service/add-observable-actions.js +0 -108
  577. package/service/add-observable-actions.js.map +0 -1
  578. package/service/index.d.ts +0 -4
  579. package/service/index.js.map +0 -1
  580. package/service/progressive-result.d.ts +0 -96
  581. package/service/progressive-result.js +0 -99
  582. package/service/progressive-result.js.map +0 -1
  583. package/service/sequential-action.d.ts +0 -18
  584. package/service/sequential-action.js.map +0 -1
  585. package/service/service.d.ts +0 -4
  586. package/service/service.js.map +0 -1
  587. package/tsconfig.tsbuildinfo +0 -1
  588. package/types/index.d.ts +0 -1
  589. package/types/index.js.map +0 -1
  590. package/types/types.d.ts +0 -61
  591. package/types/types.js.map +0 -1
@@ -0,0 +1,253 @@
1
+ /*MIT License
2
+
3
+ © Copyright 2025 Adobe. All rights reserved.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.*/
22
+ import { describe, it, expect } from 'vitest';
23
+ import { createTypedBuffer } from './create-typed-buffer.js';
24
+ import { createNumberBuffer } from './create-number-buffer.js';
25
+ import { createArrayBuffer } from './create-array-buffer.js';
26
+ import { createStructBuffer } from './create-struct-buffer.js';
27
+
28
+ describe('TypedBuffer copyWithin', () => {
29
+ describe('NumberBuffer', () => {
30
+ it('should copy elements within the same buffer', () => {
31
+ const buffer = createNumberBuffer({
32
+ schema: { type: 'number', precision: 1 },
33
+ length: 5
34
+ });
35
+
36
+ // Initialize with values
37
+ for (let i = 0; i < 5; i++) {
38
+ buffer.set(i, i + 1);
39
+ }
40
+
41
+ // Copy elements 0-2 to position 2
42
+ buffer.copyWithin(2, 0, 3);
43
+ expect(buffer.get(0)).toBe(1);
44
+ expect(buffer.get(1)).toBe(2);
45
+ expect(buffer.get(2)).toBe(1);
46
+ expect(buffer.get(3)).toBe(2);
47
+ expect(buffer.get(4)).toBe(3);
48
+ });
49
+
50
+ it('should handle negative indices', () => {
51
+ const buffer = createNumberBuffer({
52
+ schema: { type: 'number', precision: 1 },
53
+ length: 5
54
+ });
55
+
56
+ // Initialize with values
57
+ for (let i = 0; i < 5; i++) {
58
+ buffer.set(i, i + 1);
59
+ }
60
+
61
+ // Copy last 2 elements to start (from index -2 to end of array)
62
+ buffer.copyWithin(0, -2, buffer.size);
63
+ expect(buffer.get(0)).toBe(4);
64
+ expect(buffer.get(1)).toBe(5);
65
+ expect(buffer.get(2)).toBe(3);
66
+ expect(buffer.get(3)).toBe(4);
67
+ expect(buffer.get(4)).toBe(5);
68
+ });
69
+
70
+ it('should handle out of bounds indices', () => {
71
+ const buffer = createNumberBuffer({
72
+ schema: { type: 'number', precision: 1 },
73
+ length: 5
74
+ });
75
+
76
+ // Initialize with values
77
+ for (let i = 0; i < 5; i++) {
78
+ buffer.set(i, i + 1);
79
+ }
80
+
81
+ // Copy with out of bounds target
82
+ buffer.copyWithin(10, 0, 2);
83
+ expect(buffer.get(0)).toBe(1);
84
+ expect(buffer.get(1)).toBe(2);
85
+ expect(buffer.get(2)).toBe(3);
86
+ expect(buffer.get(3)).toBe(4);
87
+ expect(buffer.get(4)).toBe(5);
88
+ });
89
+ });
90
+
91
+ describe('ArrayBuffer', () => {
92
+ it('should copy elements within the same buffer', () => {
93
+ const buffer = createArrayBuffer<string>({ length: 5 });
94
+
95
+ // Initialize with values
96
+ for (let i = 0; i < 5; i++) {
97
+ buffer.set(i, `value${i + 1}`);
98
+ }
99
+
100
+ // Copy elements 0-2 to position 2
101
+ buffer.copyWithin(2, 0, 3);
102
+ expect(buffer.get(0)).toBe('value1');
103
+ expect(buffer.get(1)).toBe('value2');
104
+ expect(buffer.get(2)).toBe('value1');
105
+ expect(buffer.get(3)).toBe('value2');
106
+ expect(buffer.get(4)).toBe('value3');
107
+ });
108
+
109
+ it('should handle negative indices', () => {
110
+ const buffer = createArrayBuffer<string>({ length: 5 });
111
+
112
+ // Initialize with values
113
+ for (let i = 0; i < 5; i++) {
114
+ buffer.set(i, `value${i + 1}`);
115
+ }
116
+
117
+ // Copy last 2 elements to start (from index -2 to end of array)
118
+ buffer.copyWithin(0, -2, buffer.size);
119
+ expect(buffer.get(0)).toBe('value4');
120
+ expect(buffer.get(1)).toBe('value5');
121
+ expect(buffer.get(2)).toBe('value3');
122
+ expect(buffer.get(3)).toBe('value4');
123
+ expect(buffer.get(4)).toBe('value5');
124
+ });
125
+
126
+ it('should handle out of bounds indices', () => {
127
+ const buffer = createArrayBuffer<string>({ length: 5 });
128
+
129
+ // Initialize with values
130
+ for (let i = 0; i < 5; i++) {
131
+ buffer.set(i, `value${i + 1}`);
132
+ }
133
+
134
+ // Copy with out of bounds target
135
+ buffer.copyWithin(10, 0, 2);
136
+ expect(buffer.get(0)).toBe('value1');
137
+ expect(buffer.get(1)).toBe('value2');
138
+ expect(buffer.get(2)).toBe('value3');
139
+ expect(buffer.get(3)).toBe('value4');
140
+ expect(buffer.get(4)).toBe('value5');
141
+ });
142
+ });
143
+
144
+ describe('StructBuffer', () => {
145
+ const vec2Schema = {
146
+ type: 'object',
147
+ properties: {
148
+ x: { type: 'number', precision: 1 },
149
+ y: { type: 'number', precision: 1 }
150
+ }
151
+ } as const;
152
+
153
+ it('should copy elements within the same buffer', () => {
154
+ const buffer = createStructBuffer({
155
+ schema: vec2Schema,
156
+ length: 5
157
+ });
158
+
159
+ // Initialize with values
160
+ for (let i = 0; i < 5; i++) {
161
+ buffer.set(i, { x: i + 1, y: i + 2 });
162
+ }
163
+
164
+ // Copy elements 0-2 to position 2
165
+ buffer.copyWithin(2, 0, 3);
166
+ expect(buffer.get(0)).toEqual({ x: 1, y: 2 });
167
+ expect(buffer.get(1)).toEqual({ x: 2, y: 3 });
168
+ expect(buffer.get(2)).toEqual({ x: 1, y: 2 });
169
+ expect(buffer.get(3)).toEqual({ x: 2, y: 3 });
170
+ expect(buffer.get(4)).toEqual({ x: 3, y: 4 });
171
+ });
172
+
173
+ it('should handle negative indices', () => {
174
+ const buffer = createStructBuffer({
175
+ schema: vec2Schema,
176
+ length: 5
177
+ });
178
+
179
+ // Initialize with values
180
+ for (let i = 0; i < 5; i++) {
181
+ buffer.set(i, { x: i + 1, y: i + 2 });
182
+ }
183
+
184
+ // Copy last 2 elements to start (from index -2 to end of array)
185
+ buffer.copyWithin(0, -2, buffer.size);
186
+ expect(buffer.get(0)).toEqual({ x: 4, y: 5 });
187
+ expect(buffer.get(1)).toEqual({ x: 5, y: 6 });
188
+ expect(buffer.get(2)).toEqual({ x: 3, y: 4 });
189
+ expect(buffer.get(3)).toEqual({ x: 4, y: 5 });
190
+ expect(buffer.get(4)).toEqual({ x: 5, y: 6 });
191
+ });
192
+
193
+ it('should handle out of bounds indices', () => {
194
+ const buffer = createStructBuffer({
195
+ schema: vec2Schema,
196
+ length: 5
197
+ });
198
+
199
+ // Initialize with values
200
+ for (let i = 0; i < 5; i++) {
201
+ buffer.set(i, { x: i + 1, y: i + 2 });
202
+ }
203
+
204
+ // Copy with out of bounds target
205
+ buffer.copyWithin(10, 0, 2);
206
+ expect(buffer.get(0)).toEqual({ x: 1, y: 2 });
207
+ expect(buffer.get(1)).toEqual({ x: 2, y: 3 });
208
+ expect(buffer.get(2)).toEqual({ x: 3, y: 4 });
209
+ expect(buffer.get(3)).toEqual({ x: 4, y: 5 });
210
+ expect(buffer.get(4)).toEqual({ x: 5, y: 6 });
211
+ });
212
+ });
213
+
214
+ describe('createTypedBuffer', () => {
215
+ it('should create appropriate buffer type and handle copyWithin', () => {
216
+ // Test number buffer
217
+ const numberBuffer = createTypedBuffer({
218
+ schema: { type: 'number', precision: 1 }
219
+ });
220
+ numberBuffer.set(0, 1);
221
+ numberBuffer.set(1, 2);
222
+ numberBuffer.copyWithin(2, 0, 2);
223
+ expect(numberBuffer.get(2)).toBe(1);
224
+ expect(numberBuffer.get(3)).toBe(2);
225
+
226
+ // Test array buffer
227
+ const arrayBuffer = createTypedBuffer({
228
+ schema: { type: 'array', items: { type: 'string' }, minItems: 2, maxItems: 2 } as const
229
+ });
230
+ arrayBuffer.set(0, ['a', 'b']);
231
+ arrayBuffer.set(1, ['c', 'd']);
232
+ arrayBuffer.copyWithin(2, 0, 2);
233
+ expect(arrayBuffer.get(2)).toEqual(['a', 'b']);
234
+ expect(arrayBuffer.get(3)).toEqual(['c', 'd']);
235
+
236
+ // Test struct buffer
237
+ const structBuffer = createTypedBuffer({
238
+ schema: {
239
+ type: 'object',
240
+ properties: {
241
+ x: { type: 'number', precision: 1 },
242
+ y: { type: 'number', precision: 1 }
243
+ }
244
+ }
245
+ });
246
+ structBuffer.set(0, { x: 1, y: 2 });
247
+ structBuffer.set(1, { x: 3, y: 4 });
248
+ structBuffer.copyWithin(2, 0, 2);
249
+ expect(structBuffer.get(2)).toEqual({ x: 1, y: 2 });
250
+ expect(structBuffer.get(3)).toEqual({ x: 3, y: 4 });
251
+ });
252
+ });
253
+ });
@@ -0,0 +1,41 @@
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 { TypedArray } from "../internal/typed-array/index.js";
23
+
24
+ export interface ReadonlyTypedBuffer<T> {
25
+ readonly size: number;
26
+ get(index: number): T;
27
+ [Symbol.iterator](): IterableIterator<T>;
28
+ }
29
+
30
+ export interface TypedBuffer<T> extends ReadonlyTypedBuffer<T> {
31
+ size: number; // drops `readonly`
32
+ set(index: number, value: T): void;
33
+ copyWithin(target: number, start: number, end: number): void;
34
+
35
+ /**
36
+ * Returns the typed array of the buffer.
37
+ * @throws If the buffer is not backed by a typed array.
38
+ */
39
+ getTypedArray(): TypedArray;
40
+ }
41
+
@@ -0,0 +1,22 @@
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
+ export type Assert<T extends true> = T;
@@ -0,0 +1,24 @@
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
+ export type Equal<X, Y> =
23
+ (<T>() => T extends X ? 1 : 2) extends
24
+ (<T>() => T extends Y ? 1 : 2) ? true : false;
@@ -19,5 +19,7 @@ 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 "./types.js";
23
- //# sourceMappingURL=index.js.map
24
+ export * from "./assert.js";
25
+ export * from "./equal.js";
@@ -0,0 +1,166 @@
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
+
23
+ /* eslint-disable @typescript-eslint/no-unused-vars -- we have many compile time checks which are unused */
24
+
25
+ /**
26
+ * Excludes all properties that have value type never.
27
+ */
28
+ export type NoNever<T> = {
29
+ [K in keyof T as T[K] extends never ? never : K]: T[K];
30
+ };
31
+
32
+ /**
33
+ * Expands the type so when viewing in the editor, it shows all properties.
34
+ */
35
+ export type Expand<T> = T extends {} ? T extends infer O ? { [K in keyof O]: O[K] } : T : T;
36
+
37
+ /**
38
+ * Extracts all function properties that return void.
39
+ */
40
+ export type VoidFunctions<T> = NoNever<{
41
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- safe usage.
42
+ [K in keyof T]: T[K] extends (...args: any[]) => infer R
43
+ ? IsVoid<R> extends true
44
+ ? T[K]
45
+ : never
46
+ : never;
47
+ }>;
48
+
49
+ /**
50
+ * @internal
51
+ */
52
+ export type Primitive = string | number | boolean | null | undefined;
53
+
54
+
55
+ /* eslint-disable @typescript-eslint/no-unused-vars -- we have many compile time checks which are unused */
56
+
57
+ export type KeysWithValueType<T, U> = {
58
+ [K in keyof T]: T[K] extends U ? K : never;
59
+ }[keyof T];
60
+
61
+ export type StringKeyof<T> = Extract<keyof T, string>;
62
+
63
+ export type IsVoid<T> = [void] extends [T]
64
+ ? T extends void
65
+ ? true
66
+ : false
67
+ : false;
68
+ // tuple types prevent typescript from distributing over union types
69
+ export type IsTrue<T> = [T] extends [true]
70
+ ? [true] extends [T]
71
+ ? true
72
+ : false
73
+ : false;
74
+ {
75
+ type CheckIsTrueTrueIsTrue = True<IsTrue<true>>;
76
+ type CheckIsTrueFalseIsFalse = False<IsTrue<false>>;
77
+ type CheckIsTrueBooleanIsFalse = False<IsTrue<boolean>>;
78
+ }
79
+
80
+ export type Not<T> = [T] extends [false]
81
+ ? true
82
+ : [T] extends [true]
83
+ ? false
84
+ : boolean;
85
+ {
86
+ type CheckNotFalseIsTrue = True<Not<false>>;
87
+ type CheckNotTrueIsFalse = False<Not<true>>;
88
+ type CheckNotBooleanIsBoolean = True<EquivalentTypes<Not<boolean>, boolean>>;
89
+ }
90
+
91
+ export type False<A extends false> = A extends boolean ? true : true;
92
+ export type True<A extends true> = A extends boolean ? true : true;
93
+ export type Extends<A, B> = [A] extends [B] ? true : false;
94
+
95
+ export type EquivalentTypes<A, B> = [A] extends [B]
96
+ ? [B] extends [A]
97
+ ? true
98
+ : false
99
+ : false;
100
+
101
+ export type AnyFunction = (...args: unknown[]) => unknown;
102
+
103
+ /**
104
+ * @internal
105
+ */
106
+ export type IsUnknown<T> = unknown extends T
107
+ ? T extends unknown
108
+ ? T extends
109
+ | string
110
+ | number
111
+ | boolean
112
+ | symbol
113
+ | bigint
114
+ | null
115
+ | undefined
116
+ | object
117
+ | AnyFunction
118
+ ? false
119
+ : true
120
+ : never
121
+ : false;
122
+
123
+
124
+ export type DeepReadonly<T> = T extends Function
125
+ ? T
126
+ : T extends Array<infer U>
127
+ ? IsTuple<T> extends true
128
+ ? { readonly [K in keyof T]: DeepReadonly<T[K]> } // T is a tuple
129
+ : ReadonlyArray<DeepReadonly<U>> // T is an array
130
+ : T extends object
131
+ ? { readonly [K in keyof T]: DeepReadonly<T[K]> }
132
+ : T;
133
+
134
+ type IsTuple<T> = T extends readonly [...infer Elements]
135
+ ? number extends T['length']
136
+ ? false
137
+ : true
138
+ : false;
139
+
140
+ export type Simplify<T> = T extends object ? { [K in keyof T]: T[K] } : T;
141
+
142
+ export type IsNever<T> = [T] extends [never] ? true : false;
143
+
144
+ export type RequiredKeys<T extends object> = {
145
+ // eslint-disable-next-line @typescript-eslint/ban-types -- we need {} to represent object
146
+ [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K;
147
+ }[keyof T];
148
+
149
+ export type OptionalKeys<T extends object> = Exclude<
150
+ {
151
+ [K in keyof T]: T extends Record<K, T[K]> ? never : K;
152
+ }[keyof T],
153
+ undefined
154
+ >;
155
+
156
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needed for dynamic type
157
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (
158
+ k: infer I
159
+ ) => void
160
+ ? I
161
+ : never;
162
+
163
+ export type NoUnion<Key> = [Key] extends [UnionToIntersection<Key>]
164
+ ? Key
165
+ : never;
166
+
@@ -0,0 +1,25 @@
1
+ {
2
+ "compilerOptions": {
3
+ "composite": true,
4
+ "target": "ESNext",
5
+ "experimentalDecorators": true,
6
+ "useDefineForClassFields": false,
7
+ "module": "NodeNext",
8
+ "moduleResolution": "NodeNext",
9
+ "lib": ["ESNext", "DOM", "DOM.Iterable"],
10
+ "types": ["@webgpu/types"],
11
+ "skipLibCheck": true,
12
+ "rootDir": "src",
13
+ "outDir": "dist",
14
+ "declaration": true,
15
+ "resolveJsonModule": true,
16
+ "isolatedModules": true,
17
+ "strict": true,
18
+ "noFallthroughCasesInSwitch": true,
19
+ "stripInternal": true,
20
+ "sourceMap": true
21
+ },
22
+ "files": [],
23
+ "include": [],
24
+ "exclude": ["node_modules", "dist"]
25
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "./tsconfig-base.json",
3
+ "references": [
4
+ {
5
+ "path": "./src"
6
+ }
7
+ ]
8
+ }
package/typedoc.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "entryPoints": [
3
+ "src/index.ts",
4
+ "src/cache/index.ts",
5
+ "src/ecs/index.ts",
6
+ "src/lit/index.ts",
7
+ "src/observe/index.ts",
8
+ "src/schema/index.ts",
9
+ "src/service/index.ts",
10
+ "src/table/index.ts",
11
+ "src/typed-buffer/index.ts",
12
+ "src/types/index.ts"
13
+ ],
14
+ "out": "docs/api",
15
+ "exclude": [
16
+ "**/__tests__/**",
17
+ "**/*.spec.ts"
18
+ ],
19
+ "excludePrivate": true,
20
+ "excludeProtected": true,
21
+ "includeVersion": true
22
+ }
package/vite.config.js ADDED
@@ -0,0 +1,16 @@
1
+ import { defineConfig } from 'vite'
2
+
3
+ // we have to turn off the webdriverio test runner when running in vscode debug mode
4
+ const IS_RUNNING_VSCODE_DEBUG = typeof process.env.VSCODE_INSPECTOR_OPTIONS === 'string';
5
+
6
+ export default defineConfig({
7
+ test: {
8
+ tsconfig: './tsconfig-base.json',
9
+ browser: IS_RUNNING_VSCODE_DEBUG ? {} : {
10
+ provider: 'webdriverio', // or 'webdriverio'
11
+ enabled: true,
12
+ name: 'chrome', // browser name is required
13
+ headless: true,
14
+ },
15
+ }
16
+ })
@@ -1,30 +0,0 @@
1
- /** Exported memory */
2
- export declare const memory: WebAssembly.Memory;
3
- /**
4
- * assembly/index/add
5
- * @param a `i32`
6
- * @param b `i32`
7
- * @returns `i32`
8
- */
9
- export declare function add(a: number, b: number): number;
10
- /**
11
- * assembly/index/addF32Arrays
12
- * @param aPtr `usize`
13
- * @param bPtr `usize`
14
- * @param length `u32`
15
- */
16
- export declare function addF32Arrays(aPtr: number, bPtr: number, length: number): void;
17
- /**
18
- * assembly/index/addF32ArraysSimd4
19
- * @param aPtr `usize`
20
- * @param bPtr `usize`
21
- * @param length `u32`
22
- */
23
- export declare function addF32ArraysSimd4(aPtr: number, bPtr: number, length: number): void;
24
- /**
25
- * assembly/index/addF32ArraysSimd4Unrolled
26
- * @param aPtr `usize`
27
- * @param bPtr `usize`
28
- * @param length `u32`
29
- */
30
- export declare function addF32ArraysSimd4Unrolled(aPtr: number, bPtr: number, length: number): void;
package/assembly/index.js DELETED
@@ -1,18 +0,0 @@
1
- async function instantiate(module, imports = {}) {
2
- const { exports } = await WebAssembly.instantiate(module, imports);
3
- return exports;
4
- }
5
- export const {
6
- memory,
7
- add,
8
- addF32Arrays,
9
- addF32ArraysSimd4,
10
- addF32ArraysSimd4Unrolled,
11
- } = await (async url => instantiate(
12
- await (async () => {
13
- const isNodeOrBun = typeof process != "undefined" && process.versions != null && (process.versions.node != null || process.versions.bun != null);
14
- if (isNodeOrBun) { return globalThis.WebAssembly.compile(await (await import("node:fs/promises")).readFile(url)); }
15
- else { return await globalThis.WebAssembly.compileStreaming(globalThis.fetch(url)); }
16
- })(), {
17
- }
18
- ))(new URL("index.wasm", import.meta.url));
Binary file