@adobe/data 0.9.7 → 0.9.11

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 (310) hide show
  1. package/data.d.ts +1 -1
  2. package/ecs/database/combine-plugins.d.ts +14 -7
  3. package/ecs/database/combine-plugins.js +6 -3
  4. package/ecs/database/combine-plugins.js.map +1 -1
  5. package/ecs/database/create-plugin.d.ts +37 -17
  6. package/ecs/database/create-plugin.js +3 -30
  7. package/ecs/database/create-plugin.js.map +1 -1
  8. package/ecs/database/create-plugin.test.js +55 -0
  9. package/ecs/database/create-plugin.test.js.map +1 -1
  10. package/ecs/database/create-plugin.type-test.js +157 -0
  11. package/ecs/database/create-plugin.type-test.js.map +1 -1
  12. package/ecs/database/database-schema/create-database-schema.js +3 -3
  13. package/ecs/database/database-schema/create-database-schema.js.map +1 -1
  14. package/ecs/database/database.d.ts +43 -5
  15. package/ecs/database/database.js.map +1 -1
  16. package/ecs/database/observe-dependent-value.test.js +39 -31
  17. package/ecs/database/observe-dependent-value.test.js.map +1 -1
  18. package/ecs/database/observe-select-entities.performance.test.js +30 -31
  19. package/ecs/database/observe-select-entities.performance.test.js.map +1 -1
  20. package/ecs/database/observe-select-entities.test.js +30 -31
  21. package/ecs/database/observe-select-entities.test.js.map +1 -1
  22. package/ecs/database/observed/create-observed-database.js +7 -0
  23. package/ecs/database/observed/create-observed-database.js.map +1 -1
  24. package/ecs/database/public/create-database.d.ts +5 -34
  25. package/ecs/database/public/create-database.js +68 -131
  26. package/ecs/database/public/create-database.js.map +1 -1
  27. package/ecs/database/public/create-database.test.js +324 -62
  28. package/ecs/database/public/create-database.test.js.map +1 -1
  29. package/ecs/database/transactional-store/create-transactional-store.js +16 -1
  30. package/ecs/database/transactional-store/create-transactional-store.js.map +1 -1
  31. package/ecs/plugins/scheduler/scheduler.d.ts +2 -2
  32. package/ecs/plugins/scheduler/scheduler.js +2 -2
  33. package/ecs/plugins/scheduler/scheduler.js.map +1 -1
  34. package/ecs/undo-redo-service/create-undo-redo-service.test.js +22 -23
  35. package/ecs/undo-redo-service/create-undo-redo-service.test.js.map +1 -1
  36. package/package.json +6 -24
  37. package/service/async-data-service/create-lazy.d.ts +40 -0
  38. package/service/async-data-service/create-lazy.js +194 -0
  39. package/service/async-data-service/create-lazy.js.map +1 -0
  40. package/service/async-data-service/create-lazy.test.js +477 -0
  41. package/service/async-data-service/create-lazy.test.js.map +1 -0
  42. package/service/async-data-service/example.d.ts +60 -0
  43. package/service/async-data-service/example.js +35 -0
  44. package/service/async-data-service/example.js.map +1 -0
  45. package/service/async-data-service/index.d.ts +1 -0
  46. package/service/async-data-service/index.js +3 -0
  47. package/service/async-data-service/index.js.map +1 -0
  48. package/service/{is-data-service.d.ts → async-data-service/is-valid.d.ts} +4 -4
  49. package/{lit/hooks/component/component.js → service/async-data-service/is-valid.js} +1 -1
  50. package/service/async-data-service/is-valid.js.map +1 -0
  51. package/service/async-data-service/public.d.ts +2 -0
  52. package/service/async-data-service/public.js +4 -0
  53. package/service/async-data-service/public.js.map +1 -0
  54. package/service/index.d.ts +1 -1
  55. package/service/index.js +1 -0
  56. package/service/index.js.map +1 -1
  57. package/tsconfig.tsbuildinfo +1 -1
  58. package/ecs/database/combine-plugins-test.d.ts +0 -39
  59. package/ecs/database/combine-plugins-test.js +0 -3
  60. package/ecs/database/combine-plugins-test.js.map +0 -1
  61. package/ecs/database/create-plugin-cryos-pattern.test.d.ts +0 -3
  62. package/ecs/database/create-plugin-cryos-pattern.test.js +0 -83
  63. package/ecs/database/create-plugin-cryos-pattern.test.js.map +0 -1
  64. package/ecs/database/create-plugin-graphics.test.d.ts +0 -93
  65. package/ecs/database/create-plugin-graphics.test.js +0 -135
  66. package/ecs/database/create-plugin-graphics.test.js.map +0 -1
  67. package/ecs/database/create-plugin-type.type-test.js +0 -563
  68. package/ecs/database/create-plugin-type.type-test.js.map +0 -1
  69. package/ecs/database/create-plugin-type.type.test.d.ts +0 -1
  70. package/ecs/database/create-plugin-type.type.test.js +0 -563
  71. package/ecs/database/create-plugin-type.type.test.js.map +0 -1
  72. package/ecs/database/experimental-action-types.d.ts +0 -1
  73. package/ecs/database/experimental-action-types.js +0 -275
  74. package/ecs/database/experimental-action-types.js.map +0 -1
  75. package/ecs/database/from-plugin.type-test.d.ts +0 -1
  76. package/ecs/database/from-plugin.type-test.js +0 -180
  77. package/ecs/database/from-plugin.type-test.js.map +0 -1
  78. package/ecs/database/plugin-types.d.ts +0 -1
  79. package/ecs/database/plugin-types.js +0 -5
  80. package/ecs/database/plugin-types.js.map +0 -1
  81. package/ecs/database/type-investigation.test.d.ts +0 -1
  82. package/ecs/database/type-investigation.test.js +0 -54
  83. package/ecs/database/type-investigation.test.js.map +0 -1
  84. package/lit/decorators/apply-decorator.d.ts +0 -1
  85. package/lit/decorators/apply-decorator.js +0 -19
  86. package/lit/decorators/apply-decorator.js.map +0 -1
  87. package/lit/decorators/apply-service-decorators.d.ts +0 -1
  88. package/lit/decorators/apply-service-decorators.js +0 -13
  89. package/lit/decorators/apply-service-decorators.js.map +0 -1
  90. package/lit/decorators/index.d.ts +0 -3
  91. package/lit/decorators/index.js +0 -5
  92. package/lit/decorators/index.js.map +0 -1
  93. package/lit/decorators/require-service.d.ts +0 -1
  94. package/lit/decorators/require-service.js +0 -14
  95. package/lit/decorators/require-service.js.map +0 -1
  96. package/lit/elements/application-element.d.ts +0 -9
  97. package/lit/elements/application-element.js +0 -42
  98. package/lit/elements/application-element.js.map +0 -1
  99. package/lit/elements/application-host.d.ts +0 -16
  100. package/lit/elements/application-host.js +0 -39
  101. package/lit/elements/application-host.js.map +0 -1
  102. package/lit/elements/database-element.d.ts +0 -10
  103. package/lit/elements/database-element.js +0 -40
  104. package/lit/elements/database-element.js.map +0 -1
  105. package/lit/elements/index.d.ts +0 -3
  106. package/lit/elements/index.js +0 -5
  107. package/lit/elements/index.js.map +0 -1
  108. package/lit/functions/index.d.ts +0 -1
  109. package/lit/functions/index.js +0 -3
  110. package/lit/functions/index.js.map +0 -1
  111. package/lit/functions/iterate-self-and-ancestors.d.ts +0 -1
  112. package/lit/functions/iterate-self-and-ancestors.js +0 -24
  113. package/lit/functions/iterate-self-and-ancestors.js.map +0 -1
  114. package/lit/hooks/attach-decorator.d.ts +0 -4
  115. package/lit/hooks/attach-decorator.js +0 -26
  116. package/lit/hooks/attach-decorator.js.map +0 -1
  117. package/lit/hooks/component/component.d.ts +0 -10
  118. package/lit/hooks/component/component.js.map +0 -1
  119. package/lit/hooks/component/stack.d.ts +0 -6
  120. package/lit/hooks/component/stack.js +0 -16
  121. package/lit/hooks/component/stack.js.map +0 -1
  122. package/lit/hooks/index.d.ts +0 -19
  123. package/lit/hooks/index.js +0 -21
  124. package/lit/hooks/index.js.map +0 -1
  125. package/lit/hooks/use-connected.d.ts +0 -2
  126. package/lit/hooks/use-connected.js +0 -32
  127. package/lit/hooks/use-connected.js.map +0 -1
  128. package/lit/hooks/use-debounce.d.ts +0 -8
  129. package/lit/hooks/use-debounce.js +0 -21
  130. package/lit/hooks/use-debounce.js.map +0 -1
  131. package/lit/hooks/use-drag-observe.d.ts +0 -25
  132. package/lit/hooks/use-drag-observe.js +0 -35
  133. package/lit/hooks/use-drag-observe.js.map +0 -1
  134. package/lit/hooks/use-drag-transaction.d.ts +0 -7
  135. package/lit/hooks/use-drag-transaction.js +0 -35
  136. package/lit/hooks/use-drag-transaction.js.map +0 -1
  137. package/lit/hooks/use-draggable.d.ts +0 -15
  138. package/lit/hooks/use-draggable.js +0 -96
  139. package/lit/hooks/use-draggable.js.map +0 -1
  140. package/lit/hooks/use-effect.d.ts +0 -3
  141. package/lit/hooks/use-effect.js +0 -14
  142. package/lit/hooks/use-effect.js.map +0 -1
  143. package/lit/hooks/use-element.d.ts +0 -7
  144. package/lit/hooks/use-element.js +0 -67
  145. package/lit/hooks/use-element.js.map +0 -1
  146. package/lit/hooks/use-memo.d.ts +0 -1
  147. package/lit/hooks/use-memo.js +0 -13
  148. package/lit/hooks/use-memo.js.map +0 -1
  149. package/lit/hooks/use-observable-values.d.ts +0 -4
  150. package/lit/hooks/use-observable-values.js +0 -9
  151. package/lit/hooks/use-observable-values.js.map +0 -1
  152. package/lit/hooks/use-observable.d.ts +0 -2
  153. package/lit/hooks/use-observable.js +0 -13
  154. package/lit/hooks/use-observable.js.map +0 -1
  155. package/lit/hooks/use-ref.d.ts +0 -3
  156. package/lit/hooks/use-ref.js +0 -7
  157. package/lit/hooks/use-ref.js.map +0 -1
  158. package/lit/hooks/use-resize-observer.d.ts +0 -12
  159. package/lit/hooks/use-resize-observer.js +0 -23
  160. package/lit/hooks/use-resize-observer.js.map +0 -1
  161. package/lit/hooks/use-state.d.ts +0 -2
  162. package/lit/hooks/use-state.js +0 -15
  163. package/lit/hooks/use-state.js.map +0 -1
  164. package/lit/hooks/use-updated.d.ts +0 -4
  165. package/lit/hooks/use-updated.js +0 -40
  166. package/lit/hooks/use-updated.js.map +0 -1
  167. package/lit/hooks/use-window-event.d.ts +0 -1
  168. package/lit/hooks/use-window-event.js +0 -11
  169. package/lit/hooks/use-window-event.js.map +0 -1
  170. package/lit/hooks/with-hooks.d.ts +0 -2
  171. package/lit/hooks/with-hooks.js +0 -16
  172. package/lit/hooks/with-hooks.js.map +0 -1
  173. package/lit/index.d.ts +0 -4
  174. package/lit/index.js +0 -5
  175. package/lit/index.js.map +0 -1
  176. package/normalize.test.d.ts +0 -1
  177. package/normalize.test.js +0 -28
  178. package/normalize.test.js.map +0 -1
  179. package/samples/index.d.ts +0 -13
  180. package/samples/index.js +0 -7
  181. package/samples/index.js.map +0 -1
  182. package/samples/todo/elements/todo-list/todo-list-presentation.d.ts +0 -8
  183. package/samples/todo/elements/todo-list/todo-list-presentation.js +0 -12
  184. package/samples/todo/elements/todo-list/todo-list-presentation.js.map +0 -1
  185. package/samples/todo/elements/todo-list/todo-list.css.d.ts +0 -1
  186. package/samples/todo/elements/todo-list/todo-list.css.js +0 -11
  187. package/samples/todo/elements/todo-list/todo-list.css.js.map +0 -1
  188. package/samples/todo/elements/todo-list/todo-list.d.ts +0 -12
  189. package/samples/todo/elements/todo-list/todo-list.js +0 -44
  190. package/samples/todo/elements/todo-list/todo-list.js.map +0 -1
  191. package/samples/todo/elements/todo-row/index.d.ts +0 -1
  192. package/samples/todo/elements/todo-row/index.js +0 -3
  193. package/samples/todo/elements/todo-row/index.js.map +0 -1
  194. package/samples/todo/elements/todo-row/todo-row-presentation.d.ts +0 -18
  195. package/samples/todo/elements/todo-row/todo-row-presentation.js +0 -50
  196. package/samples/todo/elements/todo-row/todo-row-presentation.js.map +0 -1
  197. package/samples/todo/elements/todo-row/todo-row.css.d.ts +0 -1
  198. package/samples/todo/elements/todo-row/todo-row.css.js +0 -49
  199. package/samples/todo/elements/todo-row/todo-row.css.js.map +0 -1
  200. package/samples/todo/elements/todo-row/todo-row.d.ts +0 -14
  201. package/samples/todo/elements/todo-row/todo-row.js +0 -44
  202. package/samples/todo/elements/todo-row/todo-row.js.map +0 -1
  203. package/samples/todo/elements/todo-toolbar/index.d.ts +0 -1
  204. package/samples/todo/elements/todo-toolbar/index.js +0 -3
  205. package/samples/todo/elements/todo-toolbar/index.js.map +0 -1
  206. package/samples/todo/elements/todo-toolbar/todo-toolbar-presentation.d.ts +0 -22
  207. package/samples/todo/elements/todo-toolbar/todo-toolbar-presentation.js +0 -41
  208. package/samples/todo/elements/todo-toolbar/todo-toolbar-presentation.js.map +0 -1
  209. package/samples/todo/elements/todo-toolbar/todo-toolbar.css.d.ts +0 -1
  210. package/samples/todo/elements/todo-toolbar/todo-toolbar.css.js +0 -34
  211. package/samples/todo/elements/todo-toolbar/todo-toolbar.css.js.map +0 -1
  212. package/samples/todo/elements/todo-toolbar/todo-toolbar.d.ts +0 -11
  213. package/samples/todo/elements/todo-toolbar/todo-toolbar.js +0 -61
  214. package/samples/todo/elements/todo-toolbar/todo-toolbar.js.map +0 -1
  215. package/samples/todo/elements/todo-undo-redo/index.d.ts +0 -1
  216. package/samples/todo/elements/todo-undo-redo/index.js +0 -3
  217. package/samples/todo/elements/todo-undo-redo/index.js.map +0 -1
  218. package/samples/todo/elements/todo-undo-redo/todo-undo-redo-presentation.d.ts +0 -17
  219. package/samples/todo/elements/todo-undo-redo/todo-undo-redo-presentation.js +0 -29
  220. package/samples/todo/elements/todo-undo-redo/todo-undo-redo-presentation.js.map +0 -1
  221. package/samples/todo/elements/todo-undo-redo/todo-undo-redo.css.d.ts +0 -1
  222. package/samples/todo/elements/todo-undo-redo/todo-undo-redo.css.js +0 -12
  223. package/samples/todo/elements/todo-undo-redo/todo-undo-redo.css.js.map +0 -1
  224. package/samples/todo/elements/todo-undo-redo/todo-undo-redo.d.ts +0 -11
  225. package/samples/todo/elements/todo-undo-redo/todo-undo-redo.js +0 -36
  226. package/samples/todo/elements/todo-undo-redo/todo-undo-redo.js.map +0 -1
  227. package/samples/todo/services/dependent-state-service/create-dependent-state-service.d.ts +0 -6
  228. package/samples/todo/services/dependent-state-service/create-dependent-state-service.js +0 -5
  229. package/samples/todo/services/dependent-state-service/create-dependent-state-service.js.map +0 -1
  230. package/samples/todo/services/dependent-state-service/dependent-state/all-todos.d.ts +0 -2
  231. package/samples/todo/services/dependent-state-service/dependent-state/all-todos.js +0 -2
  232. package/samples/todo/services/dependent-state-service/dependent-state/all-todos.js.map +0 -1
  233. package/samples/todo/services/dependent-state-service/dependent-state/complete-todos.d.ts +0 -2
  234. package/samples/todo/services/dependent-state-service/dependent-state/complete-todos.js +0 -2
  235. package/samples/todo/services/dependent-state-service/dependent-state/complete-todos.js.map +0 -1
  236. package/samples/todo/services/dependent-state-service/dependent-state/incomplete-todos.d.ts +0 -2
  237. package/samples/todo/services/dependent-state-service/dependent-state/incomplete-todos.js +0 -2
  238. package/samples/todo/services/dependent-state-service/dependent-state/incomplete-todos.js.map +0 -1
  239. package/samples/todo/services/dependent-state-service/dependent-state/index.d.ts +0 -3
  240. package/samples/todo/services/dependent-state-service/dependent-state/index.js +0 -5
  241. package/samples/todo/services/dependent-state-service/dependent-state/index.js.map +0 -1
  242. package/samples/todo/services/dependent-state-service/dependent-state-service.d.ts +0 -2
  243. package/samples/todo/services/dependent-state-service/dependent-state-service.js +0 -2
  244. package/samples/todo/services/dependent-state-service/dependent-state-service.js.map +0 -1
  245. package/samples/todo/services/main-service/create-main-service.d.ts +0 -8
  246. package/samples/todo/services/main-service/create-main-service.js +0 -39
  247. package/samples/todo/services/main-service/create-main-service.js.map +0 -1
  248. package/samples/todo/services/main-service/todo-main-service.d.ts +0 -18
  249. package/samples/todo/services/main-service/todo-main-service.js +0 -2
  250. package/samples/todo/services/main-service/todo-main-service.js.map +0 -1
  251. package/samples/todo/services/state-service/create-todo-database.d.ts +0 -37
  252. package/samples/todo/services/state-service/create-todo-database.js +0 -10
  253. package/samples/todo/services/state-service/create-todo-database.js.map +0 -1
  254. package/samples/todo/services/state-service/create-todo-store.d.ts +0 -37
  255. package/samples/todo/services/state-service/create-todo-store.js +0 -24
  256. package/samples/todo/services/state-service/create-todo-store.js.map +0 -1
  257. package/samples/todo/services/state-service/todo-state-service.d.ts +0 -5
  258. package/samples/todo/services/state-service/todo-state-service.js +0 -2
  259. package/samples/todo/services/state-service/todo-state-service.js.map +0 -1
  260. package/samples/todo/services/state-service/transactions/create-bulk-todos.d.ts +0 -2
  261. package/samples/todo/services/state-service/transactions/create-bulk-todos.js +0 -10
  262. package/samples/todo/services/state-service/transactions/create-bulk-todos.js.map +0 -1
  263. package/samples/todo/services/state-service/transactions/create-todo.d.ts +0 -5
  264. package/samples/todo/services/state-service/transactions/create-todo.js +0 -13
  265. package/samples/todo/services/state-service/transactions/create-todo.js.map +0 -1
  266. package/samples/todo/services/state-service/transactions/create-todo.test.d.ts +0 -1
  267. package/samples/todo/services/state-service/transactions/create-todo.test.js +0 -16
  268. package/samples/todo/services/state-service/transactions/create-todo.test.js.map +0 -1
  269. package/samples/todo/services/state-service/transactions/delete-all-todos.d.ts +0 -2
  270. package/samples/todo/services/state-service/transactions/delete-all-todos.js +0 -16
  271. package/samples/todo/services/state-service/transactions/delete-all-todos.js.map +0 -1
  272. package/samples/todo/services/state-service/transactions/delete-todo.d.ts +0 -3
  273. package/samples/todo/services/state-service/transactions/delete-todo.js +0 -8
  274. package/samples/todo/services/state-service/transactions/delete-todo.js.map +0 -1
  275. package/samples/todo/services/state-service/transactions/delete-todo.test.d.ts +0 -1
  276. package/samples/todo/services/state-service/transactions/delete-todo.test.js +0 -24
  277. package/samples/todo/services/state-service/transactions/delete-todo.test.js.map +0 -1
  278. package/samples/todo/services/state-service/transactions/drag-todo.d.ts +0 -7
  279. package/samples/todo/services/state-service/transactions/drag-todo.js +0 -17
  280. package/samples/todo/services/state-service/transactions/drag-todo.js.map +0 -1
  281. package/samples/todo/services/state-service/transactions/index.d.ts +0 -6
  282. package/samples/todo/services/state-service/transactions/index.js +0 -9
  283. package/samples/todo/services/state-service/transactions/index.js.map +0 -1
  284. package/samples/todo/services/state-service/transactions/reorder-todos.d.ts +0 -6
  285. package/samples/todo/services/state-service/transactions/reorder-todos.js +0 -11
  286. package/samples/todo/services/state-service/transactions/reorder-todos.js.map +0 -1
  287. package/samples/todo/services/state-service/transactions/toggle-complete.d.ts +0 -3
  288. package/samples/todo/services/state-service/transactions/toggle-complete.js +0 -11
  289. package/samples/todo/services/state-service/transactions/toggle-complete.js.map +0 -1
  290. package/samples/todo/services/state-service/transactions/toggle-complete.test.d.ts +0 -1
  291. package/samples/todo/services/state-service/transactions/toggle-complete.test.js +0 -65
  292. package/samples/todo/services/state-service/transactions/toggle-complete.test.js.map +0 -1
  293. package/samples/todo/todo-element.d.ts +0 -4
  294. package/samples/todo/todo-element.js +0 -4
  295. package/samples/todo/todo-element.js.map +0 -1
  296. package/samples/todo/todo-host.d.ts +0 -8
  297. package/samples/todo/todo-host.js +0 -35
  298. package/samples/todo/todo-host.js.map +0 -1
  299. package/samples/todo/todo-main-element.d.ts +0 -10
  300. package/samples/todo/todo-main-element.js +0 -47
  301. package/samples/todo/todo-main-element.js.map +0 -1
  302. package/samples/todo/todo-sample.d.ts +0 -3
  303. package/samples/todo/todo-sample.js +0 -19
  304. package/samples/todo/todo-sample.js.map +0 -1
  305. package/service/is-data-service.js +0 -2
  306. package/service/is-data-service.js.map +0 -1
  307. package/typed-buffer/public.d.ts +0 -2
  308. package/typed-buffer/public.js +0 -4
  309. package/typed-buffer/public.js.map +0 -1
  310. /package/{ecs/database/create-plugin-type.type-test.d.ts → service/async-data-service/create-lazy.test.d.ts} +0 -0
package/data.d.ts CHANGED
@@ -8,4 +8,4 @@
8
8
  */
9
9
  export type Data = string | number | boolean | null | undefined | ReadonlyArray<Data> | {
10
10
  readonly [K in string]?: Data;
11
- };
11
+ } | Blob;
@@ -3,22 +3,29 @@ import type { Database } from "./database.js";
3
3
  type IntersectAll<T extends readonly unknown[]> = Simplify<T extends readonly [infer H, ...infer R] ? H & IntersectAll<R> : unknown>;
4
4
  type UnionAll<T extends readonly unknown[]> = Simplify<T extends readonly [infer H, ...infer R] ? H | UnionAll<R> : never>;
5
5
  export type CombinePlugins<Plugins extends readonly Database.Plugin[]> = Database.Plugin<Simplify<{} & IntersectAll<{
6
- [K in keyof Plugins]: Plugins[K] extends Database.Plugin<infer C, any, any, any, any, any> ? C : never;
6
+ [K in keyof Plugins]: Plugins[K] extends Database.Plugin<infer C, any, any, any, any, any, any, any> ? C : never;
7
7
  }>>, Simplify<{} & IntersectAll<{
8
- [K in keyof Plugins]: Plugins[K] extends Database.Plugin<any, infer R, any, any, any, any> ? R : never;
8
+ [K in keyof Plugins]: Plugins[K] extends Database.Plugin<any, infer R, any, any, any, any, any, any> ? R : never;
9
9
  }>>, Simplify<{} & IntersectAll<{
10
- [K in keyof Plugins]: Plugins[K] extends Database.Plugin<any, any, infer A, any, any, any> ? A : never;
10
+ [K in keyof Plugins]: Plugins[K] extends Database.Plugin<any, any, infer A, any, any, any, any, any> ? A : never;
11
11
  }>>, Simplify<{} & IntersectAll<{
12
- [K in keyof Plugins]: Plugins[K] extends Database.Plugin<any, any, any, infer TD, any, any> ? TD : never;
12
+ [K in keyof Plugins]: Plugins[K] extends Database.Plugin<any, any, any, infer TD, any, any, any, any> ? TD : never;
13
13
  }>>, Extract<Simplify<UnionAll<{
14
- [K in keyof Plugins]: Plugins[K] extends Database.Plugin<any, any, any, any, infer S, any> ? S : never;
14
+ [K in keyof Plugins]: Plugins[K] extends Database.Plugin<any, any, any, any, infer S, any, any, any> ? S : never;
15
15
  }>>, string>, Simplify<{} & IntersectAll<{
16
- [K in keyof Plugins]: Plugins[K] extends Database.Plugin<any, any, any, any, any, infer AD> ? AD : never;
16
+ [K in keyof Plugins]: Plugins[K] extends Database.Plugin<any, any, any, any, any, infer AD, any, any> ? AD : never;
17
+ }>>, Simplify<{} & IntersectAll<{
18
+ [K in keyof Plugins]: Plugins[K] extends Database.Plugin<any, any, any, any, any, any, infer SVF, any> ? SVF : never;
19
+ }>>, Simplify<{} & IntersectAll<{
20
+ [K in keyof Plugins]: Plugins[K] extends Database.Plugin<any, any, any, any, any, any, any, infer CVF> ? CVF : never;
17
21
  }>>>;
18
22
  /**
19
23
  * Combines multiple plugins into a single plugin.
20
- * All plugin properties (components, resources, archetypes, transactions, systems, actions)
24
+ * All plugin properties (components, resources, archetypes, computed, transactions, systems, actions, services)
21
25
  * require identity (===) when the same key exists across plugins.
26
+ *
27
+ * IMPORTANT: Services are merged in order, preserving the initialization order
28
+ * so that extended plugin services are initialized before current plugin services.
22
29
  */
23
30
  export declare function combinePlugins<const Plugins extends readonly Database.Plugin[]>(...plugins: Plugins): CombinePlugins<Plugins>;
24
31
  export {};
@@ -1,11 +1,14 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
2
  /**
3
3
  * Combines multiple plugins into a single plugin.
4
- * All plugin properties (components, resources, archetypes, transactions, systems, actions)
4
+ * All plugin properties (components, resources, archetypes, computed, transactions, systems, actions, services)
5
5
  * require identity (===) when the same key exists across plugins.
6
+ *
7
+ * IMPORTANT: Services are merged in order, preserving the initialization order
8
+ * so that extended plugin services are initialized before current plugin services.
6
9
  */
7
10
  export function combinePlugins(...plugins) {
8
- const keys = ['components', 'resources', 'archetypes', 'transactions', 'actions', 'systems'];
11
+ const keys = ['services', 'components', 'resources', 'archetypes', 'computed', 'transactions', 'actions', 'systems'];
9
12
  const merge = (base, next) => Object.fromEntries(keys.map(key => {
10
13
  const baseObj = base[key] ?? {};
11
14
  const nextObj = next[key] ?? {};
@@ -19,7 +22,7 @@ export function combinePlugins(...plugins) {
19
22
  }
20
23
  return [key, merged];
21
24
  }));
22
- const emptyPlugin = { components: {}, resources: {}, archetypes: {}, transactions: {}, actions: {}, systems: {} };
25
+ const emptyPlugin = { components: {}, resources: {}, archetypes: {}, computed: {}, transactions: {}, actions: {}, systems: {}, services: {} };
23
26
  // Merge all plugins together
24
27
  const result = plugins.reduce(merge, emptyPlugin);
25
28
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"combine-plugins.js","sourceRoot":"","sources":["../../../src/ecs/database/combine-plugins.ts"],"names":[],"mappings":"AAAA,uDAAuD;AA+BvD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAE5B,GAAG,OAAgB;IACnB,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;IAEtG,MAAM,KAAK,GAAG,CAAC,IAAS,EAAE,IAAS,EAAE,EAAE,CACrC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAEhC,wCAAwC;QACxC,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,IAAI,CAAC,yCAAyC,CAC9E,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC,CAAC;IAEN,MAAM,WAAW,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAElH,6BAA6B;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAElD,OAAO,MAAiC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"combine-plugins.js","sourceRoot":"","sources":["../../../src/ecs/database/combine-plugins.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAiCvD;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAE5B,GAAG,OAAgB;IACnB,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;IAE9H,MAAM,KAAK,GAAG,CAAC,IAAS,EAAE,IAAS,EAAE,EAAE,CACrC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAEhC,wCAAwC;QACxC,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,IAAI,CAAC,yCAAyC,CAC9E,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC,CAAC;IAEN,MAAM,WAAW,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAE9I,6BAA6B;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAElD,OAAO,MAAiC,CAAC;AAC3C,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Database, SystemFunction } from "./database.js";
1
+ import { Database, SystemFunction, ServiceFactories, FromServiceFactories, type PluginComputedFactories } from "./database.js";
2
2
  import type { ComponentSchemas } from "../component-schemas.js";
3
3
  import type { ResourceSchemas } from "../resource-schemas.js";
4
4
  import type { ArchetypeComponents } from "../store/archetype-components.js";
@@ -18,40 +18,60 @@ type RemoveIndex<T> = Simplify<{
18
18
  *
19
19
  * Properties MUST be defined in this exact order:
20
20
  * 1. extends (optional) - Base plugin to extend
21
- * 2. components (optional) - Component schema definitions
22
- * 3. resources (optional) - Resource schema definitions
23
- * 4. archetypes (optional) - Archetype definitions
24
- * 5. transactions (optional) - Transaction declarations
25
- * 6. actions (optional) - Action declarations
26
- * 7. systems (optional) - System declarations
21
+ * 2. services (optional) - Service factory functions
22
+ * 3. components (optional) - Component schema definitions
23
+ * 4. resources (optional) - Resource schema definitions
24
+ * 5. archetypes (optional) - Archetype definitions
25
+ * 6. computed (optional) - Computed observe factories (each returns Observe<unknown>)
26
+ * 7. transactions (optional) - Transaction declarations
27
+ * 8. actions (optional) - Action declarations
28
+ * 9. systems (optional) - System declarations
27
29
  *
28
30
  * Example:
29
31
  * ```ts
30
32
  * Database.Plugin.create({
31
33
  * extends: basePlugin, // 1. extends first
32
- * components: { ... }, // 2. components
33
- * resources: { ... }, // 3. resources
34
- * archetypes: { ... }, // 4. archetypes
35
- * transactions: { ... }, // 5. transactions
36
- * actions: { ... }, // 6. actions
37
- * systems: { ... } // 7. systems last
34
+ * services: { // 2. services last
35
+ * myService: (db) => createMyService(db.resources.config),
36
+ * }
37
+ * components: { ... }, // 3. components
38
+ * resources: { ... }, // 4. resources
39
+ * archetypes: { ... }, // 5. archetypes
40
+ * computed: { ... }, // 6. computed
41
+ * transactions: { ... }, // 7. transactions
42
+ * actions: { ... }, // 8. actions
43
+ * systems: { ... }, // 9. systems
38
44
  * })
39
45
  * ```
40
46
  *
47
+ * **Services**: Factory functions that create singleton services. Services from
48
+ * extended plugins are initialized first, ensuring proper dependency order.
49
+ * Service factories receive the database with access to extended plugin's
50
+ * resources, transactions, actions, and services.
51
+ *
52
+ * **Computed**: Factory functions that return values extending Observe<unknown>. Each receives
53
+ * the full db (CS, RS, A from current plugin and extend). Database keeps ComputedFactories
54
+ * (unknown) for flexibility; createPlugin constrains to PluginComputedFactories.
55
+ *
41
56
  * @throws Error if properties are not in the correct order
42
57
  */
43
- export declare function createPlugin<const XP extends Database.Plugin<{}, {}, {}, {}, never, {}>, const CS extends ComponentSchemas, const RS extends ResourceSchemas, const A extends ArchetypeComponents<StringKeyof<RemoveIndex<CS> & XP['components']>>, const TD extends TransactionDeclarations<FromSchemas<RemoveIndex<CS> & XP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources']>, RemoveIndex<A> & XP['archetypes']>, const AD, const S extends string = never>(plugins: {
58
+ type FullDBForPlugin<CS, RS, A, TD, S extends string, AD, XP extends Database.Plugin, SVF extends ServiceFactories<Database.FromPlugin<XP>>> = Database<FromSchemas<CS & XP['components']>, FromSchemas<RS & XP['resources']>, A & XP['archetypes'], ToTransactionFunctions<TD & XP['transactions']>, S | StringKeyof<XP['systems']>, ToActionFunctions<AD & XP['actions']>, FromServiceFactories<RemoveIndex<SVF> & XP['services']>>;
59
+ export declare function createPlugin<const XP extends Database.Plugin<{}, {}, {}, {}, never, {}, {}, {}>, const CS extends ComponentSchemas, const RS extends ResourceSchemas, const A extends ArchetypeComponents<StringKeyof<RemoveIndex<CS> & XP['components']>>, const TD extends TransactionDeclarations<FromSchemas<RemoveIndex<CS> & XP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources']>, RemoveIndex<A> & XP['archetypes']>, const AD, const S extends string = never, const SVF extends ServiceFactories<Database.FromPlugin<XP>> = {}, const CVF extends PluginComputedFactories<FullDBForPlugin<RemoveIndex<CS>, RemoveIndex<RS>, RemoveIndex<A>, RemoveIndex<TD>, S, RemoveIndex<AD> & XP['actions'], XP, RemoveIndex<SVF>>> = {}>(plugins: {
44
60
  extends?: XP;
61
+ services?: SVF & {
62
+ readonly [K: string]: (db: Database.FromPlugin<XP>) => unknown;
63
+ };
45
64
  components?: CS;
46
65
  resources?: RS;
47
66
  archetypes?: A;
67
+ computed?: CVF & PluginComputedFactories<FullDBForPlugin<RemoveIndex<CS>, RemoveIndex<RS>, RemoveIndex<A>, RemoveIndex<TD>, string, RemoveIndex<AD> & XP['actions'], XP, RemoveIndex<SVF>>>;
48
68
  transactions?: TD;
49
69
  actions?: AD & {
50
- readonly [K: string]: (db: Database<FromSchemas<RemoveIndex<CS> & XP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources']>, RemoveIndex<A> & XP['archetypes'], ToTransactionFunctions<RemoveIndex<TD> & XP['transactions']>, string, ToActionFunctions<XP['actions']>>, input?: any) => any;
70
+ readonly [K: string]: (db: Database<FromSchemas<RemoveIndex<CS> & XP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources']>, RemoveIndex<A> & XP['archetypes'], ToTransactionFunctions<RemoveIndex<TD> & XP['transactions']>, string, ToActionFunctions<XP['actions']>, FromServiceFactories<RemoveIndex<SVF> & XP['services']>>, input?: any) => any;
51
71
  };
52
72
  systems?: {
53
73
  readonly [K in S]: {
54
- readonly create: (db: Database<FromSchemas<RemoveIndex<CS> & XP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources']>, RemoveIndex<A> & XP['archetypes'], ToTransactionFunctions<RemoveIndex<TD> & XP['transactions']>, string, ToActionFunctions<RemoveIndex<AD> & XP['actions']>> & {
74
+ readonly create: (db: Database<FromSchemas<RemoveIndex<CS> & XP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources']>, RemoveIndex<A> & XP['archetypes'], ToTransactionFunctions<RemoveIndex<TD> & XP['transactions']>, string, ToActionFunctions<RemoveIndex<AD> & XP['actions']>, FromServiceFactories<RemoveIndex<SVF> & XP['services']>> & {
55
75
  readonly store: Store<FromSchemas<RemoveIndex<CS> & XP['components']>, FromSchemas<RemoveIndex<RS> & XP['resources']>, RemoveIndex<A> & XP['archetypes']>;
56
76
  }) => SystemFunction | void;
57
77
  readonly schedule?: {
@@ -63,6 +83,6 @@ export declare function createPlugin<const XP extends Database.Plugin<{}, {}, {}
63
83
  };
64
84
  }): CombinePlugins<[
65
85
  XP,
66
- Database.Plugin<RemoveIndex<CS>, RemoveIndex<RS>, RemoveIndex<A>, RemoveIndex<TD>, S, AD & ActionDeclarations<FromSchemas<RemoveIndex<CS>>, FromSchemas<RemoveIndex<RS>>, RemoveIndex<A>, ToTransactionFunctions<RemoveIndex<TD>>, S>>
86
+ Database.Plugin<RemoveIndex<CS>, RemoveIndex<RS>, RemoveIndex<A>, RemoveIndex<TD>, S, AD & ActionDeclarations<FromSchemas<RemoveIndex<CS>>, FromSchemas<RemoveIndex<RS>>, RemoveIndex<A>, ToTransactionFunctions<RemoveIndex<TD>>, S>, RemoveIndex<SVF>, RemoveIndex<CVF>>
67
87
  ]>;
68
88
  export {};
@@ -1,7 +1,7 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
2
  import { combinePlugins } from "./combine-plugins.js";
3
3
  function validatePropertyOrder(plugins) {
4
- const expectedOrder = ['extends', 'components', 'resources', 'archetypes', 'transactions', 'actions', 'systems'];
4
+ const expectedOrder = ['extends', 'services', 'components', 'resources', 'archetypes', 'computed', 'transactions', 'actions', 'systems'];
5
5
  const actualKeys = Object.keys(plugins);
6
6
  const definedKeys = actualKeys.filter(key => key in plugins);
7
7
  for (let i = 0; i < definedKeys.length; i++) {
@@ -21,42 +21,15 @@ function validatePropertyOrder(plugins) {
21
21
  }
22
22
  }
23
23
  }
24
- /**
25
- * Creates a Database.Plugin from a plugin descriptor.
26
- *
27
- * **IMPORTANT: Property Order Requirement**
28
- *
29
- * Properties MUST be defined in this exact order:
30
- * 1. extends (optional) - Base plugin to extend
31
- * 2. components (optional) - Component schema definitions
32
- * 3. resources (optional) - Resource schema definitions
33
- * 4. archetypes (optional) - Archetype definitions
34
- * 5. transactions (optional) - Transaction declarations
35
- * 6. actions (optional) - Action declarations
36
- * 7. systems (optional) - System declarations
37
- *
38
- * Example:
39
- * ```ts
40
- * Database.Plugin.create({
41
- * extends: basePlugin, // 1. extends first
42
- * components: { ... }, // 2. components
43
- * resources: { ... }, // 3. resources
44
- * archetypes: { ... }, // 4. archetypes
45
- * transactions: { ... }, // 5. transactions
46
- * actions: { ... }, // 6. actions
47
- * systems: { ... } // 7. systems last
48
- * })
49
- * ```
50
- *
51
- * @throws Error if properties are not in the correct order
52
- */
53
24
  export function createPlugin(plugins) {
54
25
  validatePropertyOrder(plugins);
55
26
  // Normalize plugins descriptor to a plugin object in correct order
56
27
  const plugin = {
28
+ services: plugins.services ?? {},
57
29
  components: plugins.components ?? {},
58
30
  resources: plugins.resources ?? {},
59
31
  archetypes: plugins.archetypes ?? {},
32
+ computed: plugins.computed ?? {},
60
33
  transactions: plugins.transactions ?? {},
61
34
  actions: plugins.actions ?? {},
62
35
  systems: plugins.systems ?? {},
@@ -1 +1 @@
1
- {"version":3,"file":"create-plugin.js","sourceRoot":"","sources":["../../../src/ecs/database/create-plugin.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAUvD,OAAO,EAAkB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAYtE,SAAS,qBAAqB,CAAC,OAAgC;IAC3D,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACjH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;IAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,4BAA4B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5H,CAAC;QACD,uDAAuD;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,iBAAiB,GAAG,aAAa,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACX,qCAAqC,GAAG,uBAAuB,OAAO,KAAK;oBAC3E,mBAAmB,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrF,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,YAAY,CASxB,OAoCC;IASD,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,mEAAmE;IACnE,MAAM,MAAM,GAAQ;QAChB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACxC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;KACjC,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAQ,CAAC;IAC1D,CAAC;IACD,OAAO,MAAa,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"create-plugin.js","sourceRoot":"","sources":["../../../src/ecs/database/create-plugin.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAUvD,OAAO,EAAkB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA4BtE,SAAS,qBAAqB,CAAC,OAAgC;IAC3D,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACzI,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;IAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,4BAA4B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5H,CAAC;QACD,uDAAuD;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,iBAAiB,GAAG,aAAa,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACX,qCAAqC,GAAG,uBAAuB,OAAO,KAAK;oBAC3E,mBAAmB,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrF,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AA2DD,MAAM,UAAU,YAAY,CAWxB,OA4CC;IAWD,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,mEAAmE;IACnE,MAAM,MAAM,GAAQ;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACxC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;KACjC,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAQ,CAAC;IAC1D,CAAC;IACD,OAAO,MAAa,CAAC;AACzB,CAAC"}
@@ -2,6 +2,7 @@
2
2
  import { describe, it, expect } from "vitest";
3
3
  import { createPlugin } from "./create-plugin.js";
4
4
  import { Database } from "./database.js";
5
+ import { Observe } from "../../observe/index.js";
5
6
  describe("Database.Plugin.create", () => {
6
7
  describe("property order validation", () => {
7
8
  it("should throw error if properties are in wrong order", () => {
@@ -11,6 +12,12 @@ describe("Database.Plugin.create", () => {
11
12
  extends: undefined, // extends should come first
12
13
  });
13
14
  }).toThrow('Property "extends" must come before "components"');
15
+ expect(() => {
16
+ Database.Plugin.create({
17
+ components: {},
18
+ services: {}, // services should come before components
19
+ });
20
+ }).toThrow('Property "services" must come before "components"');
14
21
  expect(() => {
15
22
  Database.Plugin.create({
16
23
  systems: {},
@@ -23,14 +30,25 @@ describe("Database.Plugin.create", () => {
23
30
  archetypes: {}, // archetypes should come before transactions
24
31
  });
25
32
  }).toThrow('Property "archetypes" must come before "transactions"');
33
+ expect(() => {
34
+ Database.Plugin.create({
35
+ components: {},
36
+ resources: {},
37
+ archetypes: {},
38
+ transactions: {},
39
+ computed: {}, // computed should come before transactions
40
+ });
41
+ }).toThrow('Property "computed" must come before "transactions"');
26
42
  });
27
43
  it("should accept properties in correct order", () => {
28
44
  expect(() => {
29
45
  Database.Plugin.create({
30
46
  extends: undefined,
47
+ services: {},
31
48
  components: {},
32
49
  resources: {},
33
50
  archetypes: {},
51
+ computed: {},
34
52
  transactions: {},
35
53
  actions: {},
36
54
  systems: {},
@@ -38,6 +56,7 @@ describe("Database.Plugin.create", () => {
38
56
  }).not.toThrow();
39
57
  expect(() => {
40
58
  Database.Plugin.create({
59
+ services: {},
41
60
  components: {},
42
61
  resources: {},
43
62
  archetypes: {},
@@ -47,6 +66,42 @@ describe("Database.Plugin.create", () => {
47
66
  });
48
67
  }).not.toThrow();
49
68
  });
69
+ it("should create plugin with computed (Observe factories) in correct order", async () => {
70
+ const plugin = createPlugin({
71
+ components: {},
72
+ resources: { n: { default: 10 } },
73
+ archetypes: {},
74
+ computed: {
75
+ value: (_db) => Observe.fromConstant(42),
76
+ doubleN: (db) => Observe.withMap(db.observe.resources.n, (value) => value * 2),
77
+ },
78
+ transactions: {},
79
+ actions: {},
80
+ systems: {},
81
+ });
82
+ expect(plugin.computed).toBeDefined();
83
+ expect(plugin.computed.value).toBeDefined();
84
+ // computed.value is a factory (db) => Observe<T>, not the Observe itself
85
+ expect(typeof plugin.computed.value).toBe("function");
86
+ const db = Database.create(plugin);
87
+ const value = await Observe.toPromise(db.computed.value);
88
+ expect(value).toBe(42);
89
+ const doubleN = await Observe.toPromise(db.computed.doubleN);
90
+ expect(doubleN).toBe(20);
91
+ });
92
+ it("should allow actions to access services from the same plugin", () => {
93
+ const authService = { token: 'test', isAuthenticated: true };
94
+ const plugin = Database.Plugin.create({
95
+ services: {
96
+ auth: () => authService,
97
+ },
98
+ actions: {
99
+ getAuth: (db) => db.services.auth,
100
+ },
101
+ });
102
+ expect(plugin.services.auth).toBeDefined();
103
+ expect(plugin.actions.getAuth).toBeDefined();
104
+ });
50
105
  });
51
106
  describe("single descriptor (no dependencies)", () => {
52
107
  it("should create plugin with components, resources, and archetypes", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"create-plugin.test.js","sourceRoot":"","sources":["../../../src/ecs/database/create-plugin.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-plugin.test.js","sourceRoot":"","sources":["../../../src/ecs/database/create-plugin.test.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  import { createPlugin } from "./create-plugin.js";
3
3
  import { Database } from "./database.js";
4
4
  import { scheduler } from "../index.js";
5
+ import { Observe } from "../../observe/index.js";
5
6
  /**
6
7
  * Type-only tests for createPlugin type inference and constraints.
7
8
  *
@@ -54,6 +55,28 @@ function validTypeInferenceTests() {
54
55
  }
55
56
  },
56
57
  });
58
+ // Test: Valid plugin with computed (db type inferred, no cast; each factory returns Observe<unknown>)
59
+ const validComputedPlugin = createPlugin({
60
+ components: {
61
+ a: { type: "number" },
62
+ b: { type: "string" }
63
+ },
64
+ resources: {
65
+ c: { default: false }
66
+ },
67
+ archetypes: {
68
+ A: ["a", "b"],
69
+ },
70
+ computed: {
71
+ derived: (db) => {
72
+ const _c = db.resources.c;
73
+ return Observe.fromConstant(0);
74
+ },
75
+ },
76
+ transactions: {},
77
+ actions: {},
78
+ systems: {},
79
+ });
57
80
  // Test: Valid systems with transactions
58
81
  const validSystemPlugin = createPlugin({
59
82
  components: {
@@ -309,6 +332,21 @@ function invalidSystemReference() {
309
332
  },
310
333
  });
311
334
  }
335
+ // Test: Invalid computed return type (must extend Observe<unknown>)
336
+ function invalidComputedReturnType() {
337
+ createPlugin({
338
+ components: { a: { type: "number" } },
339
+ resources: {},
340
+ archetypes: {},
341
+ computed: {
342
+ // @ts-expect-error - computed factory must return something extending Observe<unknown>, not a plain number
343
+ bad: (_db) => 42,
344
+ },
345
+ transactions: {},
346
+ actions: {},
347
+ systems: {},
348
+ });
349
+ }
312
350
  // Test: Invalid transaction call in action
313
351
  function invalidTransactionCallInAction() {
314
352
  createPlugin({
@@ -664,4 +702,123 @@ function checkDatabaseTypeFromExtendedPlugin() {
664
702
  });
665
703
  const db = Database.create(extendedPlugin);
666
704
  }
705
+ // Test: Basic service factory inference
706
+ function validServiceFactoryBasic() {
707
+ const plugin = createPlugin({
708
+ services: {
709
+ auth: (_db) => ({ token: 'test', isAuthenticated: true }),
710
+ },
711
+ });
712
+ }
713
+ // Test: Service accessible in systems
714
+ function validServiceAccessInSystems() {
715
+ const plugin = createPlugin({
716
+ services: {
717
+ auth: (_db) => ({ token: 'test', isAuthenticated: true }),
718
+ },
719
+ systems: {
720
+ testSystem: {
721
+ create: (db) => () => {
722
+ },
723
+ },
724
+ },
725
+ });
726
+ }
727
+ // Test: Service factory with extended plugin - db has access to base plugin
728
+ function validServiceFactoryWithExtendedPlugin() {
729
+ const basePlugin = createPlugin({
730
+ resources: {
731
+ environment: { default: null },
732
+ },
733
+ transactions: {
734
+ setEnvironment: (store, env) => {
735
+ store.resources.environment = env;
736
+ },
737
+ },
738
+ });
739
+ const extendedPlugin = createPlugin({
740
+ extends: basePlugin,
741
+ services: {
742
+ // Service factory has access to base plugin's db type
743
+ auth: (db) => {
744
+ // Verify db has access to base plugin's transactions
745
+ // Note: ToTransactionFunctions wraps the input type with AsyncArgsProvider union
746
+ db.transactions.setEnvironment(null);
747
+ return { token: 'test', isAuthenticated: true };
748
+ },
749
+ },
750
+ });
751
+ }
752
+ // Test: Service accessible in actions (same plugin)
753
+ function validServiceAccessInActions() {
754
+ const plugin = createPlugin({
755
+ services: {
756
+ auth: (_db) => ({ token: 'test', isAuthenticated: true }),
757
+ },
758
+ actions: {
759
+ useAuth: (db) => {
760
+ },
761
+ },
762
+ });
763
+ }
764
+ // Test: Extended plugin services accessible in current plugin's actions
765
+ function validExtendedServiceAccessInActions() {
766
+ const basePlugin = createPlugin({
767
+ services: {
768
+ auth: (_db) => ({ token: 'test', isAuthenticated: true }),
769
+ },
770
+ });
771
+ const extendedPlugin = createPlugin({
772
+ extends: basePlugin,
773
+ actions: {
774
+ useAuth: (db) => {
775
+ },
776
+ },
777
+ });
778
+ }
779
+ // Test: Chained extension with services
780
+ function validChainedExtensionWithServices() {
781
+ const level1 = createPlugin({
782
+ resources: {
783
+ env: { default: null },
784
+ },
785
+ });
786
+ const level2 = createPlugin({
787
+ extends: level1,
788
+ services: {
789
+ // Service can access level1's resources
790
+ auth: (db) => {
791
+ return { token: 'test', isAuthenticated: true };
792
+ },
793
+ },
794
+ });
795
+ const level3 = createPlugin({
796
+ extends: level2,
797
+ services: {
798
+ // Service can access level1's resources and level2's services
799
+ session: (db) => {
800
+ return { sessionId: 'abc123' };
801
+ },
802
+ },
803
+ systems: {
804
+ testSystem: {
805
+ create: (db) => () => {
806
+ },
807
+ },
808
+ },
809
+ });
810
+ }
811
+ // Test: Service cannot access current plugin's services (only extended)
812
+ function invalidServiceAccessCurrentPluginServices() {
813
+ createPlugin({
814
+ services: {
815
+ a: (_db) => ({ value: 1 }),
816
+ b: (db) => {
817
+ // @ts-expect-error - Service 'a' is not accessible because it's in the same plugin
818
+ const _value = db.services.a;
819
+ return { value: 2 };
820
+ },
821
+ },
822
+ });
823
+ }
667
824
  //# sourceMappingURL=create-plugin.type-test.js.map