@adobe/data 0.4.6 → 0.4.7

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 (334) hide show
  1. package/dist/README.md +310 -0
  2. package/dist/cache/functions/bind-functions.d.ts +6 -0
  3. package/dist/cache/functions/bind-functions.js +33 -0
  4. package/dist/cache/functions/bind-functions.js.map +1 -0
  5. package/dist/cache/functions/hashing/arrayBufferToHex.d.ts +1 -0
  6. package/dist/cache/functions/hashing/arrayBufferToHex.js +27 -0
  7. package/dist/cache/functions/hashing/arrayBufferToHex.js.map +1 -0
  8. package/dist/cache/functions/omit.d.ts +1 -0
  9. package/dist/cache/functions/omit.js +29 -0
  10. package/dist/cache/functions/omit.js.map +1 -0
  11. package/dist/cache/functions/types.d.ts +1 -0
  12. package/dist/{ecs/database/store-schema/store-schema.js → cache/functions/types.js} +1 -1
  13. package/dist/cache/functions/types.js.map +1 -0
  14. package/dist/core/data.d.ts +22 -0
  15. package/dist/core/data.js +52 -0
  16. package/dist/core/data.js.map +1 -0
  17. package/dist/{ecs/database/database-schema/create-store-schema-test.js → core/data.test.js} +26 -14
  18. package/dist/core/data.test.js.map +1 -0
  19. package/dist/core/functions/array-equals.d.ts +1 -0
  20. package/dist/core/functions/array-equals.js +34 -0
  21. package/dist/core/functions/array-equals.js.map +1 -0
  22. package/dist/core/functions/deep-merge.d.ts +32 -0
  23. package/dist/core/functions/deep-merge.js +54 -0
  24. package/dist/core/functions/deep-merge.js.map +1 -0
  25. package/dist/core/functions/deep-merge.test.js +94 -0
  26. package/dist/core/functions/deep-merge.test.js.map +1 -0
  27. package/dist/core/functions/index.d.ts +3 -0
  28. package/dist/core/functions/index.js +25 -0
  29. package/dist/core/functions/index.js.map +1 -0
  30. package/dist/core/functions/is-async-generator.d.ts +1 -0
  31. package/dist/{ecs/database/database-schema/create-store-schema.js → core/functions/is-async-generator.js} +3 -4
  32. package/dist/core/functions/is-async-generator.js.map +1 -0
  33. package/dist/core/functions/is-promise.d.ts +1 -0
  34. package/dist/core/functions/is-promise.js +26 -0
  35. package/dist/core/functions/is-promise.js.map +1 -0
  36. package/dist/core/functions/with-validation.d.ts +5 -0
  37. package/dist/core/functions/with-validation.js +38 -0
  38. package/dist/core/functions/with-validation.js.map +1 -0
  39. package/dist/core/functions/with-validation.test.js +96 -0
  40. package/dist/core/functions/with-validation.test.js.map +1 -0
  41. package/dist/core/index.d.ts +3 -0
  42. package/dist/core/index.js +25 -0
  43. package/dist/core/index.js.map +1 -0
  44. package/dist/core/schema/dynamic/dynamic-schema.d.ts +27 -0
  45. package/dist/core/schema/dynamic/dynamic-schema.js +2 -0
  46. package/dist/core/schema/dynamic/dynamic-schema.js.map +1 -0
  47. package/dist/core/schema/dynamic/enumerate-patches.d.ts +9 -0
  48. package/dist/core/schema/dynamic/enumerate-patches.js +50 -0
  49. package/dist/core/schema/dynamic/enumerate-patches.js.map +1 -0
  50. package/dist/core/schema/dynamic/enumerate-patches.test.d.ts +134 -0
  51. package/dist/core/schema/dynamic/enumerate-patches.test.js +209 -0
  52. package/dist/core/schema/dynamic/enumerate-patches.test.js.map +1 -0
  53. package/dist/core/schema/dynamic/get-dynamic-schema.d.ts +5 -0
  54. package/dist/core/schema/dynamic/get-dynamic-schema.js +26 -0
  55. package/dist/core/schema/dynamic/get-dynamic-schema.js.map +1 -0
  56. package/dist/core/schema/dynamic/get-dynamic-schema.test.d.ts +1 -0
  57. package/dist/core/schema/dynamic/get-dynamic-schema.test.js +94 -0
  58. package/dist/core/schema/dynamic/get-dynamic-schema.test.js.map +1 -0
  59. package/dist/core/schema/dynamic/index.d.ts +1 -0
  60. package/dist/core/schema/dynamic/index.js +2 -0
  61. package/dist/core/schema/dynamic/index.js.map +1 -0
  62. package/dist/core/schema/dynamic/schema-path-value-path.d.ts +5 -0
  63. package/dist/core/schema/dynamic/schema-path-value-path.js +12 -0
  64. package/dist/core/schema/dynamic/schema-path-value-path.js.map +1 -0
  65. package/dist/core/schema/dynamic-schema.d.ts +27 -0
  66. package/dist/core/schema/dynamic-schema.js +2 -0
  67. package/dist/core/schema/dynamic-schema.js.map +1 -0
  68. package/dist/core/schema/index.d.ts +4 -0
  69. package/dist/{ecs/database/store-schema/create-store-schema.js → core/schema/index.js} +5 -5
  70. package/dist/core/schema/index.js.map +1 -0
  71. package/dist/core/schema/schema.d.ts +122 -0
  72. package/dist/core/schema/schema.js +34 -0
  73. package/dist/core/schema/schema.js.map +1 -0
  74. package/dist/core/schema/schemas.d.ts +45 -0
  75. package/dist/core/schema/schemas.js +39 -0
  76. package/dist/core/schema/schemas.js.map +1 -0
  77. package/dist/core/schema/ui-schema.d.ts +25 -0
  78. package/dist/core/schema/ui-schema.js +2 -0
  79. package/dist/core/schema/ui-schema.js.map +1 -0
  80. package/dist/core/schema/validation/is-valid.d.ts +2 -0
  81. package/dist/core/schema/validation/is-valid.js +14 -0
  82. package/dist/core/schema/validation/is-valid.js.map +1 -0
  83. package/dist/core/schema/validation/is-valid.test.d.ts +1 -0
  84. package/dist/core/schema/validation/is-valid.test.js +40 -0
  85. package/dist/core/schema/validation/is-valid.test.js.map +1 -0
  86. package/dist/core/schema/validation/validate.d.ts +2 -0
  87. package/dist/core/schema/validation/validate.js +38 -0
  88. package/dist/core/schema/validation/validate.js.map +1 -0
  89. package/dist/core/schema/validation/validate.test.d.ts +1 -0
  90. package/dist/core/schema/validation/validate.test.js +106 -0
  91. package/dist/core/schema/validation/validate.test.js.map +1 -0
  92. package/dist/core/schema/validation/with-validation.d.ts +5 -0
  93. package/dist/core/schema/validation/with-validation.js +16 -0
  94. package/dist/core/schema/validation/with-validation.js.map +1 -0
  95. package/dist/core/schema/validation/with-validation.test.d.ts +1 -0
  96. package/dist/core/schema/validation/with-validation.test.js +96 -0
  97. package/dist/core/schema/validation/with-validation.test.js.map +1 -0
  98. package/dist/core/schema.d.ts +86 -0
  99. package/dist/core/schema.js +33 -0
  100. package/dist/core/schema.js.map +1 -0
  101. package/dist/core/schema.test.d.ts +1 -0
  102. package/dist/core/schema.test.js +16 -0
  103. package/dist/core/schema.test.js.map +1 -0
  104. package/dist/core/schemas.d.ts +45 -0
  105. package/dist/core/schemas.js +39 -0
  106. package/dist/core/schemas.js.map +1 -0
  107. package/dist/ecs/action-ecs/action-ecs.d.ts +19 -0
  108. package/dist/ecs/action-ecs/action-ecs.js +203 -0
  109. package/dist/ecs/action-ecs/action-ecs.js.map +1 -0
  110. package/dist/ecs/action-ecs/action-ecs.test.d.ts +1 -0
  111. package/dist/ecs/action-ecs/action-ecs.test.js +362 -0
  112. package/dist/ecs/action-ecs/action-ecs.test.js.map +1 -0
  113. package/dist/ecs/action-ecs/action-types.d.ts +106 -0
  114. package/dist/ecs/action-ecs/action-types.js +19 -0
  115. package/dist/ecs/action-ecs/action-types.js.map +1 -0
  116. package/dist/ecs/action-ecs/index.d.ts +2 -0
  117. package/dist/ecs/{database/store-schema → action-ecs}/index.js +1 -2
  118. package/dist/ecs/action-ecs/index.js.map +1 -0
  119. package/dist/ecs/component-schemas.d.ts +2 -1
  120. package/dist/ecs/core-ecs/core-ecs-serialization.test.d.ts +1 -0
  121. package/dist/ecs/core-ecs/core-ecs-serialization.test.js +230 -0
  122. package/dist/ecs/core-ecs/core-ecs-serialization.test.js.map +1 -0
  123. package/dist/ecs/core-ecs/core-ecs-types.d.ts +141 -0
  124. package/dist/ecs/core-ecs/core-ecs-types.js +23 -0
  125. package/dist/ecs/core-ecs/core-ecs-types.js.map +1 -0
  126. package/dist/ecs/core-ecs/core-ecs.d.ts +7 -0
  127. package/dist/ecs/core-ecs/core-ecs.js +492 -0
  128. package/dist/ecs/core-ecs/core-ecs.js.map +1 -0
  129. package/dist/ecs/core-ecs/core-ecs.test.d.ts +1 -0
  130. package/dist/ecs/core-ecs/core-ecs.test.js +425 -0
  131. package/dist/ecs/core-ecs/core-ecs.test.js.map +1 -0
  132. package/dist/ecs/core-ecs/index.d.ts +1 -0
  133. package/dist/ecs/core-ecs/index.js +2 -0
  134. package/dist/ecs/core-ecs/index.js.map +1 -0
  135. package/dist/ecs/database/database-schema/create-database-schema-test.js +2 -2
  136. package/dist/ecs/database/database-schema/create-database-schema-test.js.map +1 -1
  137. package/dist/ecs/database/database-schema/create-database-schema.d.ts +4 -1
  138. package/dist/ecs/database/database-schema/create-database-schema.js +2 -2
  139. package/dist/ecs/database/database-schema/create-database-schema.js.map +1 -1
  140. package/dist/ecs/database/database-schema/database-schema.d.ts +5 -2
  141. package/dist/ecs/database/database-schema/index.d.ts +2 -2
  142. package/dist/ecs/database/database-schema/index.js +2 -2
  143. package/dist/ecs/database/database-schema/index.js.map +1 -1
  144. package/dist/ecs/database/register-database-codec.d.ts +1 -0
  145. package/dist/ecs/database/register-database-codec.js +35 -0
  146. package/dist/ecs/database/register-database-codec.js.map +1 -0
  147. package/dist/ecs/database/register-database-codecs.d.ts +1 -0
  148. package/dist/ecs/database/register-database-codecs.js +35 -0
  149. package/dist/ecs/database/register-database-codecs.js.map +1 -0
  150. package/dist/ecs/database/register-store-codec.d.ts +1 -0
  151. package/dist/ecs/database/register-store-codec.js +35 -0
  152. package/dist/ecs/database/register-store-codec.js.map +1 -0
  153. package/dist/ecs/database/register-typed-buffer-codecs.d.ts +1 -0
  154. package/dist/ecs/database/register-typed-buffer-codecs.js +80 -0
  155. package/dist/ecs/database/register-typed-buffer-codecs.js.map +1 -0
  156. package/dist/ecs/database/transactional-store/apply-write-operations.d.ts +7 -0
  157. package/dist/ecs/database/transactional-store/apply-write-operations.js +20 -0
  158. package/dist/ecs/database/transactional-store/apply-write-operations.js.map +1 -0
  159. package/dist/ecs/database/transactional-store/applyWriteOperations.d.ts +7 -0
  160. package/dist/ecs/database/transactional-store/applyWriteOperations.js +20 -0
  161. package/dist/ecs/database/transactional-store/applyWriteOperations.js.map +1 -0
  162. package/dist/ecs/database/transactional-store/create-test-transaction.d.ts +1 -0
  163. package/dist/ecs/database/transactional-store/create-test-transaction.js.map +1 -1
  164. package/dist/ecs/database/transactional-store/patch.d.ts +3 -0
  165. package/dist/ecs/database/transactional-store/patch.js +7 -0
  166. package/dist/ecs/database/transactional-store/patch.js.map +1 -0
  167. package/dist/ecs/database/transactional-store/undoable.d.ts +13 -0
  168. package/dist/ecs/database/{database-schema/store-schema.js → transactional-store/undoable.js} +1 -1
  169. package/dist/ecs/database/transactional-store/undoable.js.map +1 -0
  170. package/dist/ecs/database/transactional-store/with-undoable.d.ts +10 -0
  171. package/dist/ecs/database/transactional-store/with-undoable.js +13 -0
  172. package/dist/ecs/database/transactional-store/with-undoable.js.map +1 -0
  173. package/dist/ecs/database/with-undoable.d.ts +10 -0
  174. package/dist/ecs/database/with-undoable.js +13 -0
  175. package/dist/ecs/database/with-undoable.js.map +1 -0
  176. package/dist/ecs/ecs/ecs-types.d.ts +132 -0
  177. package/dist/ecs/ecs/ecs-types.js +23 -0
  178. package/dist/ecs/ecs/ecs-types.js.map +1 -0
  179. package/dist/ecs/ecs/ecs-where-functions.d.ts +6 -0
  180. package/dist/ecs/ecs/ecs-where-functions.js +91 -0
  181. package/dist/ecs/ecs/ecs-where-functions.js.map +1 -0
  182. package/dist/ecs/ecs/ecs.d.ts +13 -0
  183. package/dist/ecs/ecs/ecs.js +177 -0
  184. package/dist/ecs/ecs/ecs.js.map +1 -0
  185. package/dist/ecs/ecs/ecs.test.d.ts +1 -0
  186. package/dist/ecs/ecs/ecs.test.js +399 -0
  187. package/dist/ecs/ecs/ecs.test.js.map +1 -0
  188. package/dist/ecs/ecs/index.d.ts +3 -0
  189. package/dist/ecs/ecs/index.js +3 -0
  190. package/dist/ecs/ecs/index.js.map +1 -0
  191. package/dist/ecs/entity-location-table/register-database-codec.d.ts +1 -0
  192. package/dist/ecs/entity-location-table/register-database-codec.js +35 -0
  193. package/dist/ecs/entity-location-table/register-database-codec.js.map +1 -0
  194. package/dist/ecs/entity-location-table/register-entity-location-table-codec.d.ts +1 -0
  195. package/dist/{functions/serialization.test.js → ecs/entity-location-table/register-entity-location-table-codec.js} +20 -22
  196. package/dist/ecs/entity-location-table/register-entity-location-table-codec.js.map +1 -0
  197. package/dist/ecs/entity-location-table/register-entity-location-table-codec.test.d.ts +1 -0
  198. package/dist/ecs/entity-location-table/register-entity-location-table-codec.test.js +70 -0
  199. package/dist/ecs/entity-location-table/register-entity-location-table-codec.test.js.map +1 -0
  200. package/dist/ecs/persistence-service/create-persistence-service.d.ts +6 -0
  201. package/dist/ecs/persistence-service/create-persistence-service.js +24 -0
  202. package/dist/ecs/persistence-service/create-persistence-service.js.map +1 -0
  203. package/dist/ecs/persistence-service/create-session-persistence-service.d.ts +8 -0
  204. package/dist/ecs/persistence-service/create-session-persistence-service.js +49 -0
  205. package/dist/ecs/persistence-service/create-session-persistence-service.js.map +1 -0
  206. package/dist/ecs/persistence-service/persistence-service copy.d.ts +5 -0
  207. package/dist/ecs/persistence-service/persistence-service copy.js +2 -0
  208. package/dist/ecs/persistence-service/persistence-service copy.js.map +1 -0
  209. package/dist/ecs/persistence-service/to-blob-refs.d.ts +2 -0
  210. package/dist/ecs/persistence-service/to-blob-refs.js +3 -0
  211. package/dist/ecs/persistence-service/to-blob-refs.js.map +1 -0
  212. package/dist/ecs/persistence-service/undo-redo-service.d.ts +11 -0
  213. package/dist/ecs/persistence-service/undo-redo-service.js +23 -0
  214. package/dist/ecs/persistence-service/undo-redo-service.js.map +1 -0
  215. package/dist/ecs/resource-schemas.d.ts +4 -3
  216. package/dist/ecs/resource-schemas.js +21 -0
  217. package/dist/ecs/resource-schemas.js.map +1 -1
  218. package/dist/ecs/store/core/core.d.ts +8 -0
  219. package/dist/ecs/store/core/create-core.js +5 -0
  220. package/dist/ecs/store/core/create-core.js.map +1 -1
  221. package/dist/ecs/store/core/create-core.test.js +109 -0
  222. package/dist/ecs/store/core/create-core.test.js.map +1 -1
  223. package/dist/ecs/store/core/register-core-codec.d.ts +1 -0
  224. package/dist/ecs/{database/store-schema/create-store-schema-test.js → store/core/register-core-codec.js} +24 -15
  225. package/dist/ecs/store/core/register-core-codec.js.map +1 -0
  226. package/dist/ecs/store/core/register-core-codec.test.d.ts +1 -0
  227. package/dist/ecs/store/core/register-core-codec.test.js +136 -0
  228. package/dist/ecs/store/core/register-core-codec.test.js.map +1 -0
  229. package/dist/ecs/store/query.d.ts +47 -0
  230. package/dist/ecs/store/query.js +2 -0
  231. package/dist/ecs/store/query.js.map +1 -0
  232. package/dist/ecs/store/register-core-codec.d.ts +1 -0
  233. package/dist/ecs/store/register-core-codec.js +38 -0
  234. package/dist/ecs/store/register-core-codec.js.map +1 -0
  235. package/dist/ecs/store/register-store-codec.d.ts +1 -0
  236. package/dist/ecs/store/register-store-codec.js +38 -0
  237. package/dist/ecs/store/register-store-codec.js.map +1 -0
  238. package/dist/ecs/store/restore-store.d.ts +12 -0
  239. package/dist/ecs/store/restore-store.js +91 -0
  240. package/dist/ecs/store/restore-store.js.map +1 -0
  241. package/dist/ecs/store/select-options.d.ts +1 -0
  242. package/dist/ecs/store/select-options.js +16 -0
  243. package/dist/ecs/store/select-options.js.map +1 -0
  244. package/dist/ecs/store/select.d.ts +44 -0
  245. package/dist/ecs/store/select.js +2 -0
  246. package/dist/ecs/store/select.js.map +1 -0
  247. package/dist/ecs/transaction-ecs/index.d.ts +2 -0
  248. package/dist/ecs/transaction-ecs/index.js +24 -0
  249. package/dist/ecs/transaction-ecs/index.js.map +1 -0
  250. package/dist/ecs/transaction-ecs/transaction-ecs.d.ts +11 -0
  251. package/dist/ecs/transaction-ecs/transaction-ecs.js +184 -0
  252. package/dist/ecs/transaction-ecs/transaction-ecs.js.map +1 -0
  253. package/dist/ecs/transaction-ecs/transaction-ecs.test.d.ts +1 -0
  254. package/dist/ecs/transaction-ecs/transaction-ecs.test.js +599 -0
  255. package/dist/ecs/transaction-ecs/transaction-ecs.test.js.map +1 -0
  256. package/dist/ecs/transaction-ecs/transaction-types.d.ts +135 -0
  257. package/dist/ecs/transaction-ecs/transaction-types.js +2 -0
  258. package/dist/ecs/transaction-ecs/transaction-types.js.map +1 -0
  259. package/dist/ecs/transaction-ecs/transactions.d.ts +5 -0
  260. package/dist/ecs/transaction-ecs/transactions.js +158 -0
  261. package/dist/ecs/transaction-ecs/transactions.js.map +1 -0
  262. package/dist/ecs/undo-redo/create-undo-redo-actions.js +21 -0
  263. package/dist/ecs/undo-redo/create-undo-redo-actions.js.map +1 -1
  264. package/dist/ecs/undo-redo/create-undo-redo-actions.test.js.map +1 -1
  265. package/dist/ecs/undo-redo/do.d.ts +3 -0
  266. package/dist/ecs/undo-redo/do.js +3 -0
  267. package/dist/ecs/undo-redo/do.js.map +1 -0
  268. package/dist/ecs/undo-redo/index.d.ts +1 -0
  269. package/dist/ecs/undo-redo/index.js +23 -0
  270. package/dist/ecs/undo-redo/index.js.map +1 -0
  271. package/dist/functions/serialization/deserialize.d.ts +1 -4
  272. package/dist/functions/serialization/deserialize.js +1 -14
  273. package/dist/functions/serialization/deserialize.js.map +1 -1
  274. package/dist/functions/serialization/register-typed-array-codecs copy.d.ts +1 -0
  275. package/dist/functions/serialization/register-typed-array-codecs copy.js +13 -0
  276. package/dist/functions/serialization/register-typed-array-codecs copy.js.map +1 -0
  277. package/dist/functions/serialization/serialize-to-blobs copy.d.ts +8 -0
  278. package/dist/functions/serialization/serialize-to-blobs copy.js +21 -0
  279. package/dist/functions/serialization/serialize-to-blobs copy.js.map +1 -0
  280. package/dist/functions/serialization/serialize-to-blobs.js.map +1 -1
  281. package/dist/observe/to-async-generator.js +0 -4
  282. package/dist/observe/to-async-generator.js.map +1 -1
  283. package/dist/observe/with-map copy.d.ts +5 -0
  284. package/dist/observe/with-map copy.js +14 -0
  285. package/dist/observe/with-map copy.js.map +1 -0
  286. package/dist/package.json +129 -0
  287. package/dist/schema/f32 copy.d.ts +6 -0
  288. package/dist/schema/f32 copy.js +6 -0
  289. package/dist/schema/f32 copy.js.map +1 -0
  290. package/dist/schemas/index.d.ts +1 -0
  291. package/dist/schemas/index.js +23 -0
  292. package/dist/schemas/index.js.map +1 -0
  293. package/dist/schemas/schemas.d.ts +45 -0
  294. package/dist/schemas/schemas.js +39 -0
  295. package/dist/schemas/schemas.js.map +1 -0
  296. package/dist/service/sequential-action.d.ts +18 -0
  297. package/dist/service/sequential-action.js +45 -0
  298. package/dist/service/sequential-action.js.map +1 -0
  299. package/dist/table/ensure-capacity copy.d.ts +2 -0
  300. package/dist/table/ensure-capacity copy.js +15 -0
  301. package/dist/table/ensure-capacity copy.js.map +1 -0
  302. package/dist/table/filter-rows.d.ts +2 -0
  303. package/dist/table/filter-rows.js +15 -0
  304. package/dist/table/filter-rows.js.map +1 -0
  305. package/dist/tsconfig.tsbuildinfo +1 -1
  306. package/package.json +3 -3
  307. package/dist/ecs/database/database-schema/create-database-from-schema.d.ts +0 -12
  308. package/dist/ecs/database/database-schema/create-database-from-schema.js +0 -8
  309. package/dist/ecs/database/database-schema/create-database-from-schema.js.map +0 -1
  310. package/dist/ecs/database/database-schema/create-store-schema-test.js.map +0 -1
  311. package/dist/ecs/database/database-schema/create-store-schema.d.ts +0 -9
  312. package/dist/ecs/database/database-schema/create-store-schema.js.map +0 -1
  313. package/dist/ecs/database/database-schema/store-schema.d.ts +0 -12
  314. package/dist/ecs/database/database-schema/store-schema.js.map +0 -1
  315. package/dist/ecs/database/store-schema/create-store-schema-test.js.map +0 -1
  316. package/dist/ecs/database/store-schema/create-store-schema.d.ts +0 -9
  317. package/dist/ecs/database/store-schema/create-store-schema.js.map +0 -1
  318. package/dist/ecs/database/store-schema/index.d.ts +0 -2
  319. package/dist/ecs/database/store-schema/index.js.map +0 -1
  320. package/dist/ecs/database/store-schema/store-schema.d.ts +0 -12
  321. package/dist/ecs/database/store-schema/store-schema.js.map +0 -1
  322. package/dist/functions/serialization/serialization.d.ts +0 -23
  323. package/dist/functions/serialization/serialization.js +0 -58
  324. package/dist/functions/serialization/serialization.js.map +0 -1
  325. package/dist/functions/serialization.d.ts +0 -23
  326. package/dist/functions/serialization.js +0 -58
  327. package/dist/functions/serialization.js.map +0 -1
  328. package/dist/functions/serialization.test.js.map +0 -1
  329. package/dist/functions/serialize.d.ts +0 -17
  330. package/dist/functions/serialize.js +0 -66
  331. package/dist/functions/serialize.js.map +0 -1
  332. /package/dist/{ecs/database/database-schema/create-store-schema-test.d.ts → core/data.test.d.ts} +0 -0
  333. /package/dist/{ecs/database/store-schema/create-store-schema-test.d.ts → core/functions/deep-merge.test.d.ts} +0 -0
  334. /package/dist/{functions/serialization.test.d.ts → core/functions/with-validation.test.d.ts} +0 -0
@@ -0,0 +1,230 @@
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, expect, test } from "vitest";
23
+ import { createCoreECS } from "./core-ecs.js";
24
+ const createEcsWithMassAndSize = (data, precision = 2) => {
25
+ return createCoreECS({ data })
26
+ .withComponents({
27
+ mass: { type: "number", minimum: 0, precision },
28
+ size: { enum: ["small", "medium", "large"] },
29
+ })
30
+ .withResources({
31
+ gravity: 9.8,
32
+ });
33
+ };
34
+ const createEcsWithMassAndSizeAndShape = (data) => {
35
+ return createCoreECS({ data })
36
+ .withComponents({
37
+ mass: { type: "number", minimum: 0, precision: 2 },
38
+ shape: { enum: ["circle", "square", "triangle"] },
39
+ size: { enum: ["small", "medium", "large"] },
40
+ })
41
+ .withResources({
42
+ gravity: 9.8,
43
+ });
44
+ };
45
+ describe("ecs-functions", () => {
46
+ test("toJSON with base64 encoded binary data, mass is float64array", () => {
47
+ const ecs = createEcsWithMassAndSize();
48
+ const physical = ecs.getArchetype("id", "mass", "size");
49
+ for (let i = 1; i < 10; i++) {
50
+ ecs.createEntity(physical, {
51
+ mass: 3123123123121.232 / i,
52
+ size: "medium",
53
+ });
54
+ }
55
+ const data = ecs.toJSON();
56
+ expect(data).toEqual({
57
+ ecs: true,
58
+ version: 4,
59
+ components: {
60
+ id: { type: "integer", minimum: +0, maximum: 4294967295 },
61
+ mass: { type: "number", minimum: +0, precision: 2 },
62
+ size: { enum: ["small", "medium", "large"] },
63
+ gravity: {},
64
+ },
65
+ entities: [1, +0, 2, +0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8],
66
+ tables: [
67
+ { rows: +0, columns: { id: [] } },
68
+ { rows: 1, columns: { gravity: [9.8], id: [+0] } },
69
+ {
70
+ rows: 9,
71
+ columns: {
72
+ // id is not base 64 encoded because the json is shorter.
73
+ id: [1, 2, 3, 4, 5, 6, 7, 8, 9],
74
+ // mass is base 64 encoded because the encoded form is shorter.
75
+ // This one is longer than the
76
+ mass: "24mdJ0W5hkLbiZ0nRbl2QiQN0jRcTG5C24mdJ0W5ZkLiB37s0C1iQiQN0jRcTF5CQwu0CE/4WULbiZ0nRblWQm2zNiPoMlRC",
77
+ // size could be compressed efficiently by any general compression algorithm.
78
+ // we don't expect large data sets to use strings for components so we don't compress it.
79
+ size: [
80
+ "medium",
81
+ "medium",
82
+ "medium",
83
+ "medium",
84
+ "medium",
85
+ "medium",
86
+ "medium",
87
+ "medium",
88
+ "medium",
89
+ ],
90
+ },
91
+ },
92
+ ],
93
+ });
94
+ });
95
+ test("toJSON with base64 encoded binary data, mass is float32array", () => {
96
+ const precision = 1;
97
+ const ecs = createEcsWithMassAndSize(undefined, precision);
98
+ const physical = ecs.getArchetype("id", "mass", "size");
99
+ for (let i = 1; i < 10; i++) {
100
+ ecs.createEntity(physical, {
101
+ mass: 3123123123121.232 / i,
102
+ size: "medium",
103
+ });
104
+ }
105
+ const data = ecs.toJSON();
106
+ expect(data).toEqual({
107
+ ecs: true,
108
+ version: 4,
109
+ components: {
110
+ id: { type: "integer", minimum: +0, maximum: 4294967295 },
111
+ mass: { type: "number", minimum: +0, precision: 1 },
112
+ size: { enum: ["small", "medium", "large"] },
113
+ gravity: {},
114
+ },
115
+ entities: [1, +0, 2, +0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8],
116
+ tables: [
117
+ { rows: +0, columns: { id: [] } },
118
+ { rows: 1, columns: { gravity: [9.8], id: [+0] } },
119
+ {
120
+ rows: 9,
121
+ columns: {
122
+ // id is not base 64 encoded because the json is shorter.
123
+ id: [1, 2, 3, 4, 5, 6, 7, 8, 9],
124
+ // mass is base 64 encoded because the encoded form is shorter.
125
+ mass: "Kco1VCnKtVPiYnJTKco1U4duEVPiYvJSeMLPUinKtVJBl6FS",
126
+ // size could be compressed efficiently by any general compression algorithm.
127
+ // we don't expect large data sets to use strings for components so we don't compress it.
128
+ size: [
129
+ "medium",
130
+ "medium",
131
+ "medium",
132
+ "medium",
133
+ "medium",
134
+ "medium",
135
+ "medium",
136
+ "medium",
137
+ "medium",
138
+ ],
139
+ },
140
+ },
141
+ ],
142
+ });
143
+ });
144
+ test("toJSON and fromJSON round trip", () => {
145
+ const ecs = createEcsWithMassAndSize();
146
+ const physical = ecs.getArchetype("id", "mass", "size");
147
+ for (let i = 1; i < 10; i++) {
148
+ ecs.createEntity(physical, {
149
+ mass: 3123123123121.232 / i,
150
+ size: "medium",
151
+ });
152
+ }
153
+ const data = ecs.toJSON();
154
+ const ecs2 = createEcsWithMassAndSize(data);
155
+ const data2 = ecs2.toJSON();
156
+ expect(data2).toEqual(data);
157
+ });
158
+ test("toJSON and fromJSON round trip with new components", () => {
159
+ const ecs = createEcsWithMassAndSize();
160
+ const physical = ecs.getArchetype("id", "mass", "size");
161
+ for (let i = 1; i < 10; i++) {
162
+ ecs.createEntity(physical, {
163
+ mass: 3123123123121.232 / i,
164
+ size: "medium",
165
+ });
166
+ }
167
+ const data = ecs.toJSON();
168
+ const ecs2 = createEcsWithMassAndSizeAndShape(data);
169
+ const physicalAndShaped = ecs2.getArchetype("id", "mass", "size", "shape");
170
+ ecs2.createEntity(physicalAndShaped, {
171
+ mass: 98,
172
+ size: "medium",
173
+ shape: "circle",
174
+ });
175
+ const data2 = ecs2.toJSON();
176
+ const ecs3 = createEcsWithMassAndSizeAndShape(data2);
177
+ const data3 = ecs3.toJSON();
178
+ expect(data3).toEqual(data2);
179
+ });
180
+ test("verify entity data consistency when changing archetypes", () => {
181
+ const ecs = createEcsWithMassAndSizeAndShape();
182
+ const initialArchetype = ecs.getArchetype("id", "mass");
183
+ const targetArchetype = ecs.getArchetype("id", "mass", "shape");
184
+ // Create 100 entities with just mass
185
+ const entities = [];
186
+ for (let i = 0; i < 100; i++) {
187
+ const entity = ecs.createEntity(initialArchetype, {
188
+ mass: i + 1.5
189
+ });
190
+ entities.push(entity);
191
+ }
192
+ // Update each entity one by one, adding the shape component
193
+ for (let i = 0; i < entities.length; i++) {
194
+ const entity = entities[i];
195
+ const expectedMass = i + 1.5;
196
+ // Update entity to add shape component
197
+ ecs.updateEntity(entity, {
198
+ mass: expectedMass,
199
+ shape: "circle"
200
+ });
201
+ // Verify the entity data immediately after update
202
+ const entityData = ecs.getEntityValues(entity);
203
+ if (!entityData) {
204
+ throw new Error(`Entity ${entity} not found after update`);
205
+ }
206
+ if (entityData.mass !== expectedMass) {
207
+ throw new Error(`Entity ${entity} has incorrect mass. Expected ${expectedMass}, got ${entityData.mass}`);
208
+ }
209
+ if (entityData.shape !== "circle") {
210
+ throw new Error(`Entity ${entity} has incorrect shape. Expected "circle", got ${entityData.shape}`);
211
+ }
212
+ // Also verify all previously updated entities still have correct data
213
+ for (let j = 0; j <= i; j++) {
214
+ const prevEntity = entities[j];
215
+ const prevData = ecs.getEntityValues(prevEntity);
216
+ if (!prevData) {
217
+ throw new Error(`Previously updated entity ${prevEntity} not found`);
218
+ }
219
+ const prevExpectedMass = j + 1.5;
220
+ if (prevData.mass !== prevExpectedMass) {
221
+ throw new Error(`Previously updated entity ${prevEntity} has incorrect mass. Expected ${prevExpectedMass}, got ${prevData.mass}`);
222
+ }
223
+ if (prevData.shape !== "circle") {
224
+ throw new Error(`Previously updated entity ${prevEntity} has incorrect shape. Expected "circle", got ${prevData.shape}`);
225
+ }
226
+ }
227
+ }
228
+ });
229
+ });
230
+ //# sourceMappingURL=core-ecs-serialization.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-ecs-serialization.test.js","sourceRoot":"","sources":["../../../src/ecs/core-ecs/core-ecs-serialization.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { Data, FromSchema, Schema } from "../../core/index.js";
2
+ import { DeepReadonly, Simplify } from "../../types/types.js";
3
+ import { NativeArray } from "../../cache/managed-array.js";
4
+ /**
5
+ * An Entity represents a single object within the ECS.
6
+ * It is a unique positive integer identifier that can be used to access the components of the entity.
7
+ */
8
+ export type Entity = number;
9
+ /**
10
+ * Represents all of an entities values for the given ECS components.
11
+ * This will always contain an id property which is the entity id.
12
+ * All other components are optional.
13
+ */
14
+ export type EntityValues<C> = {
15
+ id: number;
16
+ } & {
17
+ [K in keyof C]?: C[K] | undefined;
18
+ };
19
+ /**
20
+ * Represents the values you can use when creating an entity.
21
+ * You cannot provide an id as this is always generated by the ECS.
22
+ */
23
+ export type EntityCreateValues<A> = Omit<A, "id">;
24
+ /**
25
+ * Represents the values you can use when updating an entity.
26
+ * Providing a value of undefined for a component will delete it.
27
+ */
28
+ export type EntityUpdateValues<C> = Omit<{
29
+ [K in keyof C]?: C[K] | undefined;
30
+ }, "id">;
31
+ /**
32
+ * The JSON data type that is used to serialize and deserialize ECS data.
33
+ */
34
+ export type ECSJSON = {
35
+ ecs: true;
36
+ version: number;
37
+ components: Record<string, Schema>;
38
+ entities: readonly number[];
39
+ tables: {
40
+ rows: number;
41
+ columns: Record<string, Data>;
42
+ }[];
43
+ };
44
+ export type CoreComponents = {
45
+ id: number;
46
+ };
47
+ export type CoreResources = {
48
+ [K: string]: Data;
49
+ };
50
+ export interface CoreECS<C extends CoreComponents = CoreComponents, R extends CoreResources = {}> extends CoreECSRead<C, R>, CoreECSWrite<C, R> {
51
+ /**
52
+ * Creates new components within this ecs and returns the same ecs with the new expanded type information.
53
+ */
54
+ withComponents<S extends {
55
+ readonly [K: string]: DeepReadonly<Schema>;
56
+ }, T = {
57
+ -readonly [K in keyof S]: FromSchema<S[K]>;
58
+ }>(components: S): CoreECS<Simplify<C & T>, R>;
59
+ withResources<T extends {
60
+ readonly [K: string]: Data;
61
+ }>(resources: T): CoreECS<C, Simplify<R & T>>;
62
+ }
63
+ export interface CoreECSRead<C extends CoreComponents = CoreComponents, R extends CoreResources = {}> {
64
+ components: {
65
+ readonly [K in keyof C]: Schema;
66
+ };
67
+ resources: R;
68
+ /**
69
+ * Returns the component value for the given entity.
70
+ * @param component the component to read.
71
+ * @param id if not provided, uses the component own entity id as with resources.
72
+ */
73
+ getComponentValue<Name extends keyof C>(id: Entity, component: Name): C[Name] | undefined;
74
+ getArchetype<Components extends (keyof C)[]>(...components: Components): CoreArchetype<{
75
+ [K in Components[number]]: C[K];
76
+ }>;
77
+ getEntityValues(id: Entity): EntityValues<C> | undefined;
78
+ getEntityArchetype(id: Entity): CoreArchetype;
79
+ countEntities<T extends CoreComponents>(archetype: CoreArchetype<T>): number;
80
+ selectEntities<T extends CoreComponents>(archetype: CoreArchetype<T>): Entity[];
81
+ toJSON(): ECSJSON;
82
+ }
83
+ export interface CoreECSWrite<C extends CoreComponents = CoreComponents, R extends CoreResources = {}> {
84
+ createEntity(): Entity;
85
+ createEntity<T extends CoreComponents>(archetype: CoreArchetype<T>, values: Omit<T, "id">): Entity;
86
+ createBatch<T extends CoreComponents>(archetype: CoreArchetype<T>, count: number): Table<T>;
87
+ /**
88
+ * Sets the value of a component for the given entity.
89
+ * @param component the component to write.
90
+ * @param value the value of the component or undefined to delete the component.
91
+ * @param id if not provided, uses the components own entity id as with resources.
92
+ */
93
+ setComponentValue<Name extends keyof C>(id: Entity, component: Name, value: C[Name] | undefined): void;
94
+ /**
95
+ * Gets the tables for the given archetype in read or write mode.
96
+ * @param exact if true, only returns the single table that exactly matches the archetype.
97
+ */
98
+ getTables<T extends CoreComponents>(archetype: CoreArchetype<T>, options: {
99
+ mode: "read" | "write";
100
+ exact?: boolean;
101
+ }): Table<C>[];
102
+ updateEntity(id: Entity, values: EntityUpdateValues<C>): void;
103
+ deleteEntity(id: Entity): void;
104
+ }
105
+ export interface CoreArchetype<C = {
106
+ [K: string]: unknown;
107
+ }> {
108
+ readonly components: (keyof C)[];
109
+ }
110
+ /**
111
+ * A Table represents a collection of entities with the same exact archetype.
112
+ */
113
+ export interface Table<C = {
114
+ [K: string]: unknown;
115
+ }> {
116
+ readonly rows: number;
117
+ readonly columns: {
118
+ [K in keyof C]: Column<C[K]>;
119
+ };
120
+ }
121
+ /**
122
+ * A column represents an array of values for a single component.
123
+ * Each row in the column corresponds to a single entity within the containing Table.
124
+ * The ECS stores data as a structure of arrays.
125
+ */
126
+ export interface Column<T> {
127
+ get(row: number): T;
128
+ set(row: number, value: T): void;
129
+ /**
130
+ * Allows unsafe direct access to the underlying native array if present.
131
+ * Not present for constant columns.
132
+ * For numeric tuples, the array will be of the form [a0, a1, a2, b0, b1, b2, ...]
133
+ */
134
+ native?: NativeArray<T extends number[] ? number : T>;
135
+ /**
136
+ * Is every value in this column the same?
137
+ */
138
+ constant: boolean;
139
+ toJSON(length: number): Data;
140
+ fromJSON(data: Data, length: number): void;
141
+ }
@@ -0,0 +1,23 @@
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 {};
23
+ //# sourceMappingURL=core-ecs-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-ecs-types.js","sourceRoot":"","sources":["../../../src/ecs/core-ecs/core-ecs-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW"}
@@ -0,0 +1,7 @@
1
+ import { MemoryAllocator } from "../../cache/memory-allocator.js";
2
+ import { CoreECS, CoreComponents, ECSJSON, CoreResources } from "./core-ecs-types.js";
3
+ export declare const DELETE: unknown;
4
+ export declare function createCoreECS<C extends CoreComponents, R extends CoreResources>(options?: {
5
+ data?: ECSJSON;
6
+ allocator?: MemoryAllocator;
7
+ }): CoreECS<CoreComponents, {}>;