@adobe/data 0.1.2 → 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 (541) 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 +50 -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/src/ecs/entity-location-table/entity-location.ts +34 -0
  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/{core/functions/index.js → src/old-ecs/action-ecs/index.ts} +8 -5
  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/src/old-ecs/core-ecs/index.ts +30 -0
  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/src/schema/dynamic/enumerate-patches.test.ts +235 -0
  197. package/src/schema/dynamic/enumerate-patches.ts +90 -0
  198. package/src/schema/dynamic/get-dynamic-schema.test.ts +129 -0
  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/src/schema/validation/is-valid.test.ts +43 -0
  211. package/{core/functions/array-equals.js → src/schema/validation/is-valid.ts} +8 -10
  212. package/src/schema/validation/validate.test.ts +120 -0
  213. package/src/schema/validation/validate.ts +41 -0
  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 -31
  346. package/core/functions/deep-merge.js +0 -51
  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 -4
  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.d.ts +0 -86
  364. package/core/schema.js.map +0 -1
  365. package/core/schema.test.d.ts +0 -1
  366. package/core/schema.test.js +0 -16
  367. package/core/schema.test.js.map +0 -1
  368. package/ecs/action-ecs/action-ecs.d.ts +0 -19
  369. package/ecs/action-ecs/action-ecs.js +0 -203
  370. package/ecs/action-ecs/action-ecs.js.map +0 -1
  371. package/ecs/action-ecs/action-ecs.test.d.ts +0 -1
  372. package/ecs/action-ecs/action-ecs.test.js +0 -362
  373. package/ecs/action-ecs/action-ecs.test.js.map +0 -1
  374. package/ecs/action-ecs/action-types.d.ts +0 -106
  375. package/ecs/action-ecs/action-types.js +0 -19
  376. package/ecs/action-ecs/action-types.js.map +0 -1
  377. package/ecs/action-ecs/index.d.ts +0 -2
  378. package/ecs/action-ecs/index.js.map +0 -1
  379. package/ecs/core-ecs/core-ecs-serialization.test.d.ts +0 -1
  380. package/ecs/core-ecs/core-ecs-serialization.test.js +0 -230
  381. package/ecs/core-ecs/core-ecs-serialization.test.js.map +0 -1
  382. package/ecs/core-ecs/core-ecs-types.d.ts +0 -141
  383. package/ecs/core-ecs/core-ecs-types.js.map +0 -1
  384. package/ecs/core-ecs/core-ecs.d.ts +0 -7
  385. package/ecs/core-ecs/core-ecs.js +0 -492
  386. package/ecs/core-ecs/core-ecs.js.map +0 -1
  387. package/ecs/core-ecs/core-ecs.test.d.ts +0 -1
  388. package/ecs/core-ecs/core-ecs.test.js +0 -404
  389. package/ecs/core-ecs/core-ecs.test.js.map +0 -1
  390. package/ecs/core-ecs/index.d.ts +0 -1
  391. package/ecs/core-ecs/index.js +0 -2
  392. package/ecs/core-ecs/index.js.map +0 -1
  393. package/ecs/ecs/ecs-types.d.ts +0 -132
  394. package/ecs/ecs/ecs-types.js.map +0 -1
  395. package/ecs/ecs/ecs-where-functions.d.ts +0 -6
  396. package/ecs/ecs/ecs-where-functions.js +0 -91
  397. package/ecs/ecs/ecs-where-functions.js.map +0 -1
  398. package/ecs/ecs/ecs.d.ts +0 -13
  399. package/ecs/ecs/ecs.js +0 -177
  400. package/ecs/ecs/ecs.js.map +0 -1
  401. package/ecs/ecs/ecs.test.d.ts +0 -1
  402. package/ecs/ecs/ecs.test.js +0 -399
  403. package/ecs/ecs/ecs.test.js.map +0 -1
  404. package/ecs/ecs/index.d.ts +0 -3
  405. package/ecs/ecs/index.js +0 -3
  406. package/ecs/ecs/index.js.map +0 -1
  407. package/ecs/index.d.ts +0 -4
  408. package/ecs/index.js.map +0 -1
  409. package/ecs/transaction-ecs/index.d.ts +0 -2
  410. package/ecs/transaction-ecs/index.js.map +0 -1
  411. package/ecs/transaction-ecs/transaction-ecs.d.ts +0 -11
  412. package/ecs/transaction-ecs/transaction-ecs.js +0 -184
  413. package/ecs/transaction-ecs/transaction-ecs.js.map +0 -1
  414. package/ecs/transaction-ecs/transaction-ecs.test.d.ts +0 -1
  415. package/ecs/transaction-ecs/transaction-ecs.test.js +0 -599
  416. package/ecs/transaction-ecs/transaction-ecs.test.js.map +0 -1
  417. package/ecs/transaction-ecs/transaction-types.d.ts +0 -135
  418. package/ecs/transaction-ecs/transaction-types.js +0 -2
  419. package/ecs/transaction-ecs/transaction-types.js.map +0 -1
  420. package/ecs/transaction-ecs/transactions.d.ts +0 -5
  421. package/ecs/transaction-ecs/transactions.js +0 -158
  422. package/ecs/transaction-ecs/transactions.js.map +0 -1
  423. package/index.d.ts +0 -1
  424. package/index.js +0 -23
  425. package/index.js.map +0 -1
  426. package/observe/create-observable-event.d.ts +0 -10
  427. package/observe/create-observable-event.js +0 -22
  428. package/observe/create-observable-event.js.map +0 -1
  429. package/observe/create-observable-state.d.ts +0 -7
  430. package/observe/create-observable-state.js +0 -27
  431. package/observe/create-observable-state.js.map +0 -1
  432. package/observe/create-persisted-state.d.ts +0 -11
  433. package/observe/create-persisted-state.js +0 -31
  434. package/observe/create-persisted-state.js.map +0 -1
  435. package/observe/create-persisted-state.test.d.ts +0 -1
  436. package/observe/create-persisted-state.test.js +0 -124
  437. package/observe/create-persisted-state.test.js.map +0 -1
  438. package/observe/from-array.d.ts +0 -5
  439. package/observe/from-array.js.map +0 -1
  440. package/observe/from-constant.d.ts +0 -5
  441. package/observe/from-constant.js +0 -12
  442. package/observe/from-constant.js.map +0 -1
  443. package/observe/from-element-id.d.ts +0 -7
  444. package/observe/from-element-id.js.map +0 -1
  445. package/observe/from-element-properties-and-events.d.ts +0 -2
  446. package/observe/from-element-properties-and-events.js +0 -18
  447. package/observe/from-element-properties-and-events.js.map +0 -1
  448. package/observe/from-element-property.d.ts +0 -11
  449. package/observe/from-element-property.js.map +0 -1
  450. package/observe/from-promise-with-error.d.ts +0 -7
  451. package/observe/from-promise-with-error.js +0 -27
  452. package/observe/from-promise-with-error.js.map +0 -1
  453. package/observe/from-promise.d.ts +0 -6
  454. package/observe/from-promise.js +0 -22
  455. package/observe/from-promise.js.map +0 -1
  456. package/observe/from-properties.d.ts +0 -10
  457. package/observe/from-properties.js +0 -33
  458. package/observe/from-properties.js.map +0 -1
  459. package/observe/index.d.ts +0 -27
  460. package/observe/index.js.map +0 -1
  461. package/observe/observe.test.d.ts +0 -7
  462. package/observe/observe.test.js +0 -417
  463. package/observe/observe.test.js.map +0 -1
  464. package/observe/to-promise.d.ts +0 -8
  465. package/observe/to-promise.js +0 -18
  466. package/observe/to-promise.js.map +0 -1
  467. package/observe/to-properties.d.ts +0 -11
  468. package/observe/to-properties.js +0 -9
  469. package/observe/to-properties.js.map +0 -1
  470. package/observe/types.d.ts +0 -17
  471. package/observe/types.js +0 -2
  472. package/observe/types.js.map +0 -1
  473. package/observe/with-async-map.d.ts +0 -6
  474. package/observe/with-async-map.js +0 -12
  475. package/observe/with-async-map.js.map +0 -1
  476. package/observe/with-cache.d.ts +0 -6
  477. package/observe/with-cache.js +0 -33
  478. package/observe/with-cache.js.map +0 -1
  479. package/observe/with-copy.d.ts +0 -5
  480. package/observe/with-copy.js +0 -10
  481. package/observe/with-copy.js.map +0 -1
  482. package/observe/with-deduplicate-data.d.ts +0 -7
  483. package/observe/with-deduplicate-data.js +0 -18
  484. package/observe/with-deduplicate-data.js.map +0 -1
  485. package/observe/with-deduplicate.d.ts +0 -6
  486. package/observe/with-deduplicate.js +0 -19
  487. package/observe/with-deduplicate.js.map +0 -1
  488. package/observe/with-default.d.ts +0 -6
  489. package/observe/with-default.js +0 -21
  490. package/observe/with-default.js.map +0 -1
  491. package/observe/with-map-data.d.ts +0 -7
  492. package/observe/with-map-data.js.map +0 -1
  493. package/observe/with-map.d.ts +0 -5
  494. package/observe/with-map.js +0 -11
  495. package/observe/with-map.js.map +0 -1
  496. package/observe/with-optional.d.ts +0 -5
  497. package/observe/with-optional.js +0 -20
  498. package/observe/with-optional.js.map +0 -1
  499. package/observe/with-unwrap.d.ts +0 -5
  500. package/observe/with-unwrap.js +0 -26
  501. package/observe/with-unwrap.js.map +0 -1
  502. package/perftest/ecs-perf.d.ts +0 -49
  503. package/perftest/ecs-perf.js +0 -230
  504. package/perftest/ecs-perf.js.map +0 -1
  505. package/perftest/helper-functions.d.ts +0 -1
  506. package/perftest/helper-functions.js +0 -31
  507. package/perftest/helper-functions.js.map +0 -1
  508. package/perftest/horizon-perf.d.ts +0 -22
  509. package/perftest/horizon-perf.js +0 -126
  510. package/perftest/horizon-perf.js.map +0 -1
  511. package/perftest/index.d.ts +0 -1
  512. package/perftest/index.js.map +0 -1
  513. package/perftest/perf-test.d.ts +0 -18
  514. package/perftest/perf-test.js +0 -124
  515. package/perftest/perf-test.js.map +0 -1
  516. package/perftest/vanilla-perf.d.ts +0 -38
  517. package/perftest/vanilla-perf.js +0 -128
  518. package/perftest/vanilla-perf.js.map +0 -1
  519. package/schemas/index.d.ts +0 -1
  520. package/schemas/index.js +0 -23
  521. package/schemas/index.js.map +0 -1
  522. package/schemas/schemas.d.ts +0 -45
  523. package/schemas/schemas.js +0 -39
  524. package/schemas/schemas.js.map +0 -1
  525. package/service/add-observable-actions.d.ts +0 -29
  526. package/service/add-observable-actions.js +0 -108
  527. package/service/add-observable-actions.js.map +0 -1
  528. package/service/index.d.ts +0 -4
  529. package/service/index.js.map +0 -1
  530. package/service/progressive-result.d.ts +0 -96
  531. package/service/progressive-result.js +0 -99
  532. package/service/progressive-result.js.map +0 -1
  533. package/service/sequential-action.d.ts +0 -18
  534. package/service/sequential-action.js.map +0 -1
  535. package/service/service.d.ts +0 -4
  536. package/service/service.js.map +0 -1
  537. package/tsconfig.tsbuildinfo +0 -1
  538. package/types/index.d.ts +0 -1
  539. package/types/index.js.map +0 -1
  540. package/types/types.d.ts +0 -61
  541. package/types/types.js.map +0 -1
@@ -0,0 +1,222 @@
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 { memoizeFactory } from "../../internal/function/memoize-factory.js";
23
+ import { I32Schema } from "../../schema/i32.js";
24
+ import { type Schema } from "../../schema/schema.js";
25
+ import { U32Schema } from "../../schema/u32.js";
26
+ import type { StructFieldPrimitiveType, StructLayout } from "./struct-layout.js";
27
+
28
+ // Constants for std140 layout
29
+ const VEC4_SIZE = 16; // size in bytes
30
+
31
+ /**
32
+ * Gets alignment in bytes for a field within a struct
33
+ * Adheres to WebGPU std140 layout rules
34
+ */
35
+ const getStructFieldAlignment = (type: StructFieldPrimitiveType | StructLayout): number => {
36
+ // Primitive types are 4-byte aligned
37
+ if (typeof type === "string") {
38
+ return 4;
39
+ }
40
+ // Arrays are aligned to vec4 (16 bytes)
41
+ if (type.type === "array") {
42
+ return VEC4_SIZE;
43
+ }
44
+ // Structs are aligned to 4 bytes within other structs
45
+ return 4;
46
+ };
47
+
48
+ /**
49
+ * Gets size in bytes for a field type
50
+ */
51
+ const getFieldSize = (type: StructFieldPrimitiveType | StructLayout): number => {
52
+ if (typeof type === "string") {
53
+ return 4; // All primitives are 4 bytes
54
+ }
55
+ return type.size;
56
+ };
57
+
58
+ /**
59
+ * Gets stride in bytes for an array element type
60
+ * In std140, array elements are aligned to vec4 if they are arrays/structs
61
+ * but primitives just use their natural alignment
62
+ */
63
+ const getArrayElementStride = (type: StructFieldPrimitiveType | StructLayout): number => {
64
+ // For primitives in arrays, use 4 bytes
65
+ if (typeof type === "string") {
66
+ return 4;
67
+ }
68
+ // For structs and arrays, round up to vec4
69
+ return roundUpToAlignment(type.size, VEC4_SIZE);
70
+ };
71
+
72
+ /**
73
+ * Gets alignment for array elements
74
+ * In std140, array elements are aligned to vec4 if they are arrays/structs
75
+ * but primitives just use their natural alignment
76
+ */
77
+ const getArrayElementAlignment = (type: StructFieldPrimitiveType | StructLayout): number => {
78
+ if (typeof type === "string") {
79
+ return 4; // Primitives use natural alignment
80
+ }
81
+ return VEC4_SIZE; // Arrays and structs align to vec4
82
+ };
83
+
84
+ /**
85
+ * Rounds up to the next multiple of alignment
86
+ */
87
+ const roundUpToAlignment = (offset: number, alignment: number): number => {
88
+ return Math.ceil(offset / alignment) * alignment;
89
+ };
90
+
91
+ /**
92
+ * Converts a primitive schema type to a StructFieldPrimitiveType or returns null if not a valid primitive type
93
+ */
94
+ const getPrimitiveType = (schema: Schema): StructFieldPrimitiveType | null => {
95
+ if (schema.type === "number" || schema.type === "integer") {
96
+ if (schema.type === "integer") {
97
+ if (schema.minimum !== undefined && schema.minimum >= 0 && schema.maximum && schema.maximum <= U32Schema.maximum) {
98
+ return "u32";
99
+ }
100
+ if (schema.minimum !== undefined && schema.minimum < 0 && schema.maximum && schema.maximum <= I32Schema.maximum) {
101
+ return "i32";
102
+ }
103
+ }
104
+ else if (schema.precision === 1 || schema.precision === 2) {
105
+ return "f32";
106
+ }
107
+ }
108
+
109
+ return null;
110
+ };
111
+
112
+ /**
113
+ * Analyzes a Schema and returns a StructLayout.
114
+ * Returns null if schema is not a valid struct schema.
115
+ */
116
+ const getStructLayoutInternal = memoizeFactory((schema: Schema): StructLayout | null => {
117
+ // Handle root array/tuple case
118
+ if (schema.type === "array") {
119
+ if (!schema.items || Array.isArray(schema.items)) {
120
+ throw new Error("Array schema must have single item type");
121
+ }
122
+ if (schema.minItems !== schema.maxItems || !schema.minItems) {
123
+ throw new Error("Array must have fixed length");
124
+ }
125
+ if (schema.minItems < 2) {
126
+ throw new Error("Array length must be at least 2");
127
+ }
128
+
129
+ // Special case for vec3
130
+ const primitiveType = getPrimitiveType(schema.items);
131
+ if (primitiveType && schema.minItems === 3) {
132
+ const fields: StructLayout["fields"] = {};
133
+ for (let i = 0; i < 3; i++) {
134
+ fields[i.toString()] = {
135
+ offset: i * 4,
136
+ type: primitiveType
137
+ };
138
+ }
139
+ return {
140
+ type: "array",
141
+ size: VEC4_SIZE, // vec3 is padded to vec4
142
+ fields
143
+ };
144
+ }
145
+
146
+ // Regular array case
147
+ const fields: StructLayout["fields"] = {};
148
+ const elementType = primitiveType ?? getStructLayoutInternal(schema.items);
149
+ if (!elementType) {
150
+ return null;
151
+ }
152
+ let currentOffset = 0;
153
+
154
+ // Arrays are aligned to vec4 boundary
155
+ currentOffset = roundUpToAlignment(currentOffset, VEC4_SIZE);
156
+ const elementAlignment = getArrayElementAlignment(elementType);
157
+ const stride = getArrayElementStride(elementType);
158
+
159
+ for (let i = 0; i < schema.minItems; i++) {
160
+ // Align each element according to its type
161
+ currentOffset = roundUpToAlignment(currentOffset, elementAlignment);
162
+ fields[i.toString()] = {
163
+ offset: currentOffset,
164
+ type: elementType
165
+ };
166
+ currentOffset += stride;
167
+ }
168
+
169
+ // Total size must be rounded up to vec4
170
+ const size = roundUpToAlignment(currentOffset, VEC4_SIZE);
171
+ return {
172
+ type: "array",
173
+ size,
174
+ fields
175
+ };
176
+ }
177
+
178
+ // Handle object case
179
+ if (schema.type !== "object" || !schema.properties) {
180
+ return null;
181
+ }
182
+
183
+ const fields: StructLayout["fields"] = {};
184
+ let currentOffset = 0;
185
+
186
+ // First pass: create all fields and calculate alignments
187
+ for (const [name, fieldSchema] of Object.entries(schema.properties)) {
188
+ const primitiveType = getPrimitiveType(fieldSchema);
189
+ const fieldType = primitiveType ?? getStructLayoutInternal(fieldSchema);
190
+ if (!fieldType) {
191
+ return null;
192
+ }
193
+ const alignment = getStructFieldAlignment(fieldType);
194
+
195
+ // Align field to its required alignment
196
+ currentOffset = roundUpToAlignment(currentOffset, alignment);
197
+ fields[name] = {
198
+ offset: currentOffset,
199
+ type: fieldType
200
+ };
201
+ currentOffset += getFieldSize(fieldType);
202
+ }
203
+
204
+ // Round up total size to vec4
205
+ const size = roundUpToAlignment(currentOffset, VEC4_SIZE);
206
+ return {
207
+ type: "object",
208
+ size,
209
+ fields
210
+ };
211
+ });
212
+
213
+ export function getStructLayout(schema: Schema): StructLayout
214
+ export function getStructLayout(schema: Schema, throwError: true): StructLayout
215
+ export function getStructLayout(schema: Schema, throwError: boolean): StructLayout | null
216
+ export function getStructLayout(schema: Schema, throwError = true): StructLayout | null {
217
+ const layout = getStructLayoutInternal(schema);
218
+ if (layout === null && throwError) {
219
+ throw new Error("Invalid structure schema");
220
+ }
221
+ return layout;
222
+ }
@@ -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 { getStructLayout } from "./get-struct-layout.js";
@@ -0,0 +1,25 @@
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 { DataView32 } from "../../internal/data-view-32/data-view-32.js";
23
+
24
+ export type ReadStruct<T> = (data: DataView32, index: number) => T;
25
+