@adobe/data 0.9.19 → 0.9.21

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 (57) hide show
  1. package/dist/ecs/archetype/archetype.d.ts +13 -1
  2. package/dist/ecs/archetype/archetype.js.map +1 -1
  3. package/dist/ecs/archetype/create-archetype.js.map +1 -1
  4. package/dist/ecs/database/create-plugin.d.ts +1 -1
  5. package/dist/ecs/database/create-plugin.type-test.js +33 -0
  6. package/dist/ecs/database/create-plugin.type-test.js.map +1 -1
  7. package/dist/ecs/database/database.d.ts +1 -0
  8. package/dist/ecs/database/database.js +2 -0
  9. package/dist/ecs/database/database.js.map +1 -1
  10. package/dist/ecs/database/index.d.ts +1 -0
  11. package/dist/ecs/database/index.js +1 -0
  12. package/dist/ecs/database/index.js.map +1 -1
  13. package/dist/ecs/database/public/index.d.ts +1 -0
  14. package/dist/ecs/database/public/index.js +1 -0
  15. package/dist/ecs/database/public/index.js.map +1 -1
  16. package/dist/ecs/database/public/observe-select-deep.d.ts +26 -0
  17. package/dist/ecs/database/public/observe-select-deep.js +110 -0
  18. package/dist/ecs/database/public/observe-select-deep.js.map +1 -0
  19. package/dist/ecs/database/public/observe-select-deep.test.d.ts +1 -0
  20. package/dist/ecs/database/public/observe-select-deep.test.js +187 -0
  21. package/dist/ecs/database/public/observe-select-deep.test.js.map +1 -0
  22. package/dist/ecs/database/public/observe-select-deep.type-test.d.ts +1 -0
  23. package/dist/ecs/database/public/observe-select-deep.type-test.js +105 -0
  24. package/dist/ecs/database/public/observe-select-deep.type-test.js.map +1 -0
  25. package/dist/math/vec2/functions.d.ts +2 -0
  26. package/dist/math/vec2/functions.js +3 -0
  27. package/dist/math/vec2/functions.js.map +1 -1
  28. package/dist/schema/dynamic/enumerate-patches.test.d.ts +10 -37
  29. package/dist/schema/dynamic/enumerate-patches.test.js +18 -45
  30. package/dist/schema/dynamic/enumerate-patches.test.js.map +1 -1
  31. package/dist/schema/dynamic/get-dynamic-schema.test.js +23 -29
  32. package/dist/schema/dynamic/get-dynamic-schema.test.js.map +1 -1
  33. package/dist/schema/index.d.ts +2 -2
  34. package/dist/schema/schema.d.ts +1 -17
  35. package/dist/schema/schema.js.map +1 -1
  36. package/dist/schema/to-type.d.ts +1 -1
  37. package/dist/schema/to-type.js.map +1 -1
  38. package/dist/service/dynamic-service/create-from-ecs.d.ts +17 -0
  39. package/dist/service/dynamic-service/create-from-ecs.js +56 -0
  40. package/dist/service/dynamic-service/create-from-ecs.js.map +1 -0
  41. package/dist/service/dynamic-service/create-from-ecs.test.d.ts +1 -0
  42. package/dist/service/dynamic-service/create-from-ecs.test.js +636 -0
  43. package/dist/service/dynamic-service/create-from-ecs.test.js.map +1 -0
  44. package/dist/service/dynamic-service/dynamic-service.d.ts +28 -0
  45. package/dist/service/dynamic-service/dynamic-service.js +2 -0
  46. package/dist/service/dynamic-service/dynamic-service.js.map +1 -0
  47. package/dist/service/dynamic-service/index.d.ts +1 -0
  48. package/dist/service/dynamic-service/index.js +3 -0
  49. package/dist/service/dynamic-service/index.js.map +1 -0
  50. package/dist/service/dynamic-service/public.d.ts +2 -0
  51. package/dist/service/dynamic-service/public.js +3 -0
  52. package/dist/service/dynamic-service/public.js.map +1 -0
  53. package/dist/service/index.d.ts +1 -0
  54. package/dist/service/index.js +1 -0
  55. package/dist/service/index.js.map +1 -1
  56. package/dist/tsconfig.tsbuildinfo +1 -1
  57. package/package.json +1 -1
@@ -0,0 +1,636 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { describe, it, expect } from "vitest";
3
+ import { Database } from "../../ecs/index.js";
4
+ import { Observe } from "../../observe/index.js";
5
+ import { createFromEcs } from "./create-from-ecs.js";
6
+ import { createPlugin } from "../../ecs/database/create-plugin.js";
7
+ const testPlugin = createPlugin({
8
+ resources: {
9
+ health: { default: 100 },
10
+ name: { default: "" },
11
+ alive: { default: true },
12
+ },
13
+ });
14
+ const createTestDb = () => Database.create(testPlugin);
15
+ describe("createFromEcs", () => {
16
+ describe("type acceptance", () => {
17
+ it("should accept matching state schema and value types", () => {
18
+ const db = createTestDb();
19
+ createFromEcs(db, {
20
+ states: {
21
+ currentHealth: {
22
+ schema: { type: "number" },
23
+ enabled: (db) => db.observe.resources.alive,
24
+ value: (db) => db.observe.resources.health,
25
+ },
26
+ },
27
+ actions: {},
28
+ });
29
+ });
30
+ it("should accept string schema with string value", () => {
31
+ const db = createTestDb();
32
+ createFromEcs(db, {
33
+ states: {
34
+ playerName: {
35
+ schema: { type: "string" },
36
+ enabled: (db) => db.observe.resources.alive,
37
+ value: (db) => db.observe.resources.name,
38
+ },
39
+ },
40
+ actions: {},
41
+ });
42
+ });
43
+ it("should accept multiple states with different schemas", () => {
44
+ const db = createTestDb();
45
+ createFromEcs(db, {
46
+ states: {
47
+ currentHealth: {
48
+ schema: { type: "number" },
49
+ enabled: (db) => db.observe.resources.alive,
50
+ value: (db) => db.observe.resources.health,
51
+ },
52
+ playerName: {
53
+ schema: { type: "string" },
54
+ enabled: (db) => db.observe.resources.alive,
55
+ value: (db) => db.observe.resources.name,
56
+ },
57
+ },
58
+ actions: {},
59
+ });
60
+ });
61
+ it("should accept action with schema-typed input", () => {
62
+ const db = createTestDb();
63
+ createFromEcs(db, {
64
+ states: {},
65
+ actions: {
66
+ setHealth: {
67
+ schema: { type: "number" },
68
+ enabled: (db) => db.observe.resources.alive,
69
+ execute: async (db, input) => {
70
+ const _check = input;
71
+ },
72
+ },
73
+ },
74
+ });
75
+ });
76
+ it("should accept action with schema: false (void execute)", () => {
77
+ const db = createTestDb();
78
+ createFromEcs(db, {
79
+ states: {},
80
+ actions: {
81
+ reset: {
82
+ schema: false,
83
+ enabled: (db) => db.observe.resources.alive,
84
+ execute: async (db) => { },
85
+ },
86
+ },
87
+ });
88
+ });
89
+ it("should accept object schema with matching value type", () => {
90
+ const db = createTestDb();
91
+ createFromEcs(db, {
92
+ states: {
93
+ stats: {
94
+ schema: {
95
+ type: "object",
96
+ properties: {
97
+ hp: { type: "number" },
98
+ label: { type: "string" },
99
+ },
100
+ required: ["hp"],
101
+ additionalProperties: false,
102
+ },
103
+ enabled: (db) => db.observe.resources.alive,
104
+ value: (db) => Observe.fromConstant({ hp: 50, label: "test" }),
105
+ },
106
+ },
107
+ actions: {},
108
+ });
109
+ });
110
+ it("should accept action with object schema input", () => {
111
+ const db = createTestDb();
112
+ createFromEcs(db, {
113
+ states: {},
114
+ actions: {
115
+ configure: {
116
+ schema: {
117
+ type: "object",
118
+ properties: {
119
+ hp: { type: "number" },
120
+ name: { type: "string" },
121
+ },
122
+ required: ["hp", "name"],
123
+ additionalProperties: false,
124
+ },
125
+ enabled: (db) => db.observe.resources.alive,
126
+ execute: async (db, input) => {
127
+ const _hp = input.hp;
128
+ const _name = input.name;
129
+ },
130
+ },
131
+ },
132
+ });
133
+ });
134
+ it("should accept mixed actions with and without schemas", () => {
135
+ const db = createTestDb();
136
+ createFromEcs(db, {
137
+ states: {},
138
+ actions: {
139
+ heal: {
140
+ schema: { type: "number" },
141
+ enabled: (db) => db.observe.resources.alive,
142
+ execute: async (db, amount) => {
143
+ const _check = amount;
144
+ },
145
+ },
146
+ reset: {
147
+ schema: false,
148
+ enabled: (db) => db.observe.resources.alive,
149
+ execute: async (db) => { },
150
+ },
151
+ },
152
+ });
153
+ });
154
+ });
155
+ describe("type rejection", () => {
156
+ it("should reject mismatched state value type (number schema, string value)", () => {
157
+ const db = createTestDb();
158
+ createFromEcs(db, {
159
+ states: {
160
+ currentHealth: {
161
+ schema: { type: "number" },
162
+ enabled: (db) => db.observe.resources.alive,
163
+ // @ts-expect-error - string value does not match number schema
164
+ value: (db) => db.observe.resources.name,
165
+ },
166
+ },
167
+ actions: {},
168
+ });
169
+ });
170
+ it("should reject mismatched state value type (string schema, number value)", () => {
171
+ const db = createTestDb();
172
+ createFromEcs(db, {
173
+ states: {
174
+ playerName: {
175
+ schema: { type: "string" },
176
+ enabled: (db) => db.observe.resources.alive,
177
+ // @ts-expect-error - number value does not match string schema
178
+ value: (db) => db.observe.resources.health,
179
+ },
180
+ },
181
+ actions: {},
182
+ });
183
+ });
184
+ it("should reject access to nonexistent db resource in state value", () => {
185
+ const db = createTestDb();
186
+ createFromEcs(db, {
187
+ states: {
188
+ missing: {
189
+ schema: { type: "number" },
190
+ enabled: (db) => db.observe.resources.alive,
191
+ // @ts-expect-error - nonExistent resource does not exist on db
192
+ value: (db) => db.observe.resources.nonExistent,
193
+ },
194
+ },
195
+ actions: {},
196
+ });
197
+ });
198
+ it("should reject access to nonexistent db resource in enabled", () => {
199
+ const db = createTestDb();
200
+ createFromEcs(db, {
201
+ states: {
202
+ test: {
203
+ schema: { type: "number" },
204
+ // @ts-expect-error - nonExistent resource does not exist on db
205
+ enabled: (db) => db.observe.resources.nonExistent,
206
+ value: (db) => db.observe.resources.health,
207
+ },
208
+ },
209
+ actions: {},
210
+ });
211
+ });
212
+ it("should reject action execute with wrong input type", () => {
213
+ const db = createTestDb();
214
+ createFromEcs(db, {
215
+ states: {},
216
+ actions: {
217
+ setHealth: {
218
+ schema: { type: "number" },
219
+ enabled: (db) => db.observe.resources.alive,
220
+ // @ts-expect-error - execute receives string but schema requires number
221
+ execute: async (db, input) => { },
222
+ },
223
+ },
224
+ });
225
+ });
226
+ it("should reject void action that declares an input parameter", () => {
227
+ const db = createTestDb();
228
+ createFromEcs(db, {
229
+ states: {},
230
+ actions: {
231
+ reset: {
232
+ schema: false,
233
+ enabled: (db) => db.observe.resources.alive,
234
+ // @ts-expect-error - schema: false means no input parameter
235
+ execute: async (db, input) => { },
236
+ },
237
+ },
238
+ });
239
+ });
240
+ it("should reject access to nonexistent db resource in action", () => {
241
+ const db = createTestDb();
242
+ // Runtime throws because @ts-expect-error suppresses the type error
243
+ // but the nonexistent resource produces undefined at runtime.
244
+ // We only care that the type error is flagged at compile time.
245
+ try {
246
+ createFromEcs(db, {
247
+ states: {},
248
+ actions: {
249
+ doThing: {
250
+ schema: { type: "number" },
251
+ // @ts-expect-error - nonExistent resource does not exist on db
252
+ enabled: (db) => db.observe.resources.nonExistent,
253
+ execute: async (db, input) => { },
254
+ },
255
+ },
256
+ });
257
+ }
258
+ catch (_) { /* expected runtime error from undefined observable */ }
259
+ });
260
+ });
261
+ describe("serviceName", () => {
262
+ it("should set serviceName for isService compatibility", () => {
263
+ const db = createTestDb();
264
+ const service = createFromEcs(db, { states: {}, actions: {} });
265
+ expect(service.serviceName).toBe("dynamic-service");
266
+ });
267
+ });
268
+ describe("states observable", () => {
269
+ it("should emit enabled states with resolved values", async () => {
270
+ const db = createTestDb();
271
+ const service = createFromEcs(db, {
272
+ states: {
273
+ currentHealth: {
274
+ schema: { type: "number" },
275
+ enabled: () => Observe.fromConstant(true),
276
+ value: (db) => db.observe.resources.health,
277
+ },
278
+ },
279
+ actions: {},
280
+ });
281
+ const states = await Observe.toPromise(service.states);
282
+ expect(states).toHaveProperty("currentHealth");
283
+ expect(states.currentHealth.schema).toEqual({ type: "number" });
284
+ expect(states.currentHealth.value).toBe(100);
285
+ });
286
+ it("should omit disabled states", async () => {
287
+ const db = createTestDb();
288
+ const service = createFromEcs(db, {
289
+ states: {
290
+ visible: {
291
+ schema: { type: "number" },
292
+ enabled: () => Observe.fromConstant(true),
293
+ value: (db) => db.observe.resources.health,
294
+ },
295
+ hidden: {
296
+ schema: { type: "string" },
297
+ enabled: () => Observe.fromConstant(false),
298
+ value: (db) => db.observe.resources.name,
299
+ },
300
+ },
301
+ actions: {},
302
+ });
303
+ const states = await Observe.toPromise(service.states);
304
+ expect(states).toHaveProperty("visible");
305
+ expect(states).not.toHaveProperty("hidden");
306
+ });
307
+ it("should update when enabled changes", async () => {
308
+ const db = createTestDb();
309
+ const [enabledObserve, setEnabled] = Observe.createState(true);
310
+ const service = createFromEcs(db, {
311
+ states: {
312
+ health: {
313
+ schema: { type: "number" },
314
+ enabled: () => enabledObserve,
315
+ value: (db) => db.observe.resources.health,
316
+ },
317
+ },
318
+ actions: {},
319
+ });
320
+ const results = [];
321
+ service.states((s) => results.push(s));
322
+ expect(Object.keys(results[0])).toContain("health");
323
+ setEnabled(false);
324
+ expect(Object.keys(results[1])).not.toContain("health");
325
+ setEnabled(true);
326
+ expect(Object.keys(results[2])).toContain("health");
327
+ });
328
+ it("should update when value changes", async () => {
329
+ const db = createTestDb();
330
+ const [healthObserve, setHealth] = Observe.createState(100);
331
+ const service = createFromEcs(db, {
332
+ states: {
333
+ health: {
334
+ schema: { type: "number" },
335
+ enabled: () => Observe.fromConstant(true),
336
+ value: () => healthObserve,
337
+ },
338
+ },
339
+ actions: {},
340
+ });
341
+ const results = [];
342
+ service.states((s) => results.push(s));
343
+ expect(results[0].health.value).toBe(100);
344
+ setHealth(50);
345
+ expect(results[1].health.value).toBe(50);
346
+ });
347
+ });
348
+ describe("actions observable", () => {
349
+ it("should emit enabled actions with bound execute", async () => {
350
+ const db = createTestDb();
351
+ const service = createFromEcs(db, {
352
+ states: {},
353
+ actions: {
354
+ heal: {
355
+ schema: { type: "number" },
356
+ enabled: () => Observe.fromConstant(true),
357
+ execute: async (db, amount) => { },
358
+ },
359
+ },
360
+ });
361
+ const actions = await Observe.toPromise(service.actions);
362
+ expect(actions).toHaveProperty("heal");
363
+ expect(actions.heal.schema).toEqual({ type: "number" });
364
+ expect(typeof actions.heal.execute).toBe("function");
365
+ });
366
+ it("should omit disabled actions", async () => {
367
+ const db = createTestDb();
368
+ const service = createFromEcs(db, {
369
+ states: {},
370
+ actions: {
371
+ available: {
372
+ schema: { type: "number" },
373
+ enabled: () => Observe.fromConstant(true),
374
+ execute: async (db, input) => { },
375
+ },
376
+ unavailable: {
377
+ schema: false,
378
+ enabled: () => Observe.fromConstant(false),
379
+ execute: async (db) => { },
380
+ },
381
+ },
382
+ });
383
+ const actions = await Observe.toPromise(service.actions);
384
+ expect(actions).toHaveProperty("available");
385
+ expect(actions).not.toHaveProperty("unavailable");
386
+ });
387
+ it("should update when enabled changes", () => {
388
+ const db = createTestDb();
389
+ const [enabledObserve, setEnabled] = Observe.createState(true);
390
+ const service = createFromEcs(db, {
391
+ states: {},
392
+ actions: {
393
+ heal: {
394
+ schema: { type: "number" },
395
+ enabled: () => enabledObserve,
396
+ execute: async (db, input) => { },
397
+ },
398
+ },
399
+ });
400
+ const results = [];
401
+ service.actions((a) => results.push(a));
402
+ expect(Object.keys(results[0])).toContain("heal");
403
+ setEnabled(false);
404
+ expect(Object.keys(results[1])).not.toContain("heal");
405
+ });
406
+ });
407
+ describe("execute", () => {
408
+ it("should dispatch to the correct action with input", async () => {
409
+ const db = createTestDb();
410
+ let received;
411
+ const service = createFromEcs(db, {
412
+ states: {},
413
+ actions: {
414
+ setHealth: {
415
+ schema: { type: "number" },
416
+ enabled: () => Observe.fromConstant(true),
417
+ execute: async (db, input) => {
418
+ received = input;
419
+ },
420
+ },
421
+ },
422
+ });
423
+ const result = await service.execute("setHealth", 42);
424
+ expect(received).toBe(42);
425
+ expect(result).toBeUndefined();
426
+ });
427
+ it("should dispatch void action (no input)", async () => {
428
+ const db = createTestDb();
429
+ let called = false;
430
+ const service = createFromEcs(db, {
431
+ states: {},
432
+ actions: {
433
+ reset: {
434
+ schema: false,
435
+ enabled: () => Observe.fromConstant(true),
436
+ execute: async (db) => {
437
+ called = true;
438
+ },
439
+ },
440
+ },
441
+ });
442
+ await service.execute("reset", undefined);
443
+ expect(called).toBe(true);
444
+ });
445
+ it("should return error for unavailable action", async () => {
446
+ const db = createTestDb();
447
+ const service = createFromEcs(db, {
448
+ states: {},
449
+ actions: {
450
+ heal: {
451
+ schema: { type: "number" },
452
+ enabled: () => Observe.fromConstant(false),
453
+ execute: async (db, input) => { },
454
+ },
455
+ },
456
+ });
457
+ const result = await service.execute("heal", 10);
458
+ expect(typeof result).toBe("string");
459
+ });
460
+ it("should return error for nonexistent action", async () => {
461
+ const db = createTestDb();
462
+ const service = createFromEcs(db, {
463
+ states: {},
464
+ actions: {},
465
+ });
466
+ const result = await service.execute("doesNotExist", undefined);
467
+ expect(typeof result).toBe("string");
468
+ });
469
+ it("should propagate ActionError from execute", async () => {
470
+ const db = createTestDb();
471
+ const service = createFromEcs(db, {
472
+ states: {},
473
+ actions: {
474
+ fail: {
475
+ schema: false,
476
+ enabled: () => Observe.fromConstant(true),
477
+ execute: async (db) => "something went wrong",
478
+ },
479
+ },
480
+ });
481
+ const result = await service.execute("fail", undefined);
482
+ expect(result).toBe("something went wrong");
483
+ });
484
+ it("should reject action that was available but is now disabled", async () => {
485
+ const db = createTestDb();
486
+ const [enabledObserve, setEnabled] = Observe.createState(true);
487
+ let called = false;
488
+ const service = createFromEcs(db, {
489
+ states: {},
490
+ actions: {
491
+ heal: {
492
+ schema: { type: "number" },
493
+ enabled: () => enabledObserve,
494
+ execute: async (db, input) => { called = true; },
495
+ },
496
+ },
497
+ });
498
+ // Action is available, dispatch succeeds
499
+ const ok = await service.execute("heal", 10);
500
+ expect(called).toBe(true);
501
+ expect(ok).toBeUndefined();
502
+ // Disable the action
503
+ called = false;
504
+ setEnabled(false);
505
+ // Action is now unavailable, dispatch returns error
506
+ const err = await service.execute("heal", 10);
507
+ expect(called).toBe(false);
508
+ expect(typeof err).toBe("string");
509
+ });
510
+ });
511
+ describe("independent conditional toggles", () => {
512
+ it("should toggle states independently", () => {
513
+ const db = createTestDb();
514
+ const [enableA, setEnableA] = Observe.createState(true);
515
+ const [enableB, setEnableB] = Observe.createState(true);
516
+ const service = createFromEcs(db, {
517
+ states: {
518
+ health: {
519
+ schema: { type: "number" },
520
+ enabled: () => enableA,
521
+ value: (db) => db.observe.resources.health,
522
+ },
523
+ name: {
524
+ schema: { type: "string" },
525
+ enabled: () => enableB,
526
+ value: (db) => db.observe.resources.name,
527
+ },
528
+ },
529
+ actions: {},
530
+ });
531
+ const results = [];
532
+ service.states((s) => results.push(s));
533
+ // Both enabled initially
534
+ expect(Object.keys(results[0])).toEqual(expect.arrayContaining(["health", "name"]));
535
+ // Disable A only — B remains
536
+ setEnableA(false);
537
+ expect(results[1]).not.toHaveProperty("health");
538
+ expect(results[1]).toHaveProperty("name");
539
+ // Disable B too — empty
540
+ setEnableB(false);
541
+ expect(Object.keys(results[2])).toEqual([]);
542
+ // Re-enable B only — A stays off
543
+ setEnableB(true);
544
+ expect(results[3]).not.toHaveProperty("health");
545
+ expect(results[3]).toHaveProperty("name");
546
+ });
547
+ it("should toggle actions independently", () => {
548
+ const db = createTestDb();
549
+ const [enableHeal, setEnableHeal] = Observe.createState(true);
550
+ const [enableReset, setEnableReset] = Observe.createState(true);
551
+ const service = createFromEcs(db, {
552
+ states: {},
553
+ actions: {
554
+ heal: {
555
+ schema: { type: "number" },
556
+ enabled: () => enableHeal,
557
+ execute: async (db, input) => { },
558
+ },
559
+ reset: {
560
+ schema: false,
561
+ enabled: () => enableReset,
562
+ execute: async (db) => { },
563
+ },
564
+ },
565
+ });
566
+ const results = [];
567
+ service.actions((a) => results.push(a));
568
+ // Both enabled initially
569
+ expect(Object.keys(results[0])).toEqual(expect.arrayContaining(["heal", "reset"]));
570
+ // Disable heal only — reset remains
571
+ setEnableHeal(false);
572
+ expect(results[1]).not.toHaveProperty("heal");
573
+ expect(results[1]).toHaveProperty("reset");
574
+ // Re-enable heal, disable reset
575
+ setEnableHeal(true);
576
+ setEnableReset(false);
577
+ // Two emissions: one for heal re-enabled, one for reset disabled
578
+ const latest = results[results.length - 1];
579
+ expect(latest).toHaveProperty("heal");
580
+ expect(latest).not.toHaveProperty("reset");
581
+ });
582
+ });
583
+ describe("bound action execute", () => {
584
+ it("should execute bound action directly from actions observable", async () => {
585
+ const db = createTestDb();
586
+ let received;
587
+ const service = createFromEcs(db, {
588
+ states: {},
589
+ actions: {
590
+ heal: {
591
+ schema: { type: "number" },
592
+ enabled: () => Observe.fromConstant(true),
593
+ execute: async (db, input) => { received = input; },
594
+ },
595
+ },
596
+ });
597
+ const actions = await Observe.toPromise(service.actions);
598
+ await actions.heal.execute(77);
599
+ expect(received).toBe(77);
600
+ });
601
+ it("should execute bound void action directly from actions observable", async () => {
602
+ const db = createTestDb();
603
+ let called = false;
604
+ const service = createFromEcs(db, {
605
+ states: {},
606
+ actions: {
607
+ reset: {
608
+ schema: false,
609
+ enabled: () => Observe.fromConstant(true),
610
+ execute: async (db) => { called = true; },
611
+ },
612
+ },
613
+ });
614
+ const actions = await Observe.toPromise(service.actions);
615
+ await actions.reset.execute();
616
+ expect(called).toBe(true);
617
+ });
618
+ it("should propagate ActionError from bound action execute", async () => {
619
+ const db = createTestDb();
620
+ const service = createFromEcs(db, {
621
+ states: {},
622
+ actions: {
623
+ fail: {
624
+ schema: false,
625
+ enabled: () => Observe.fromConstant(true),
626
+ execute: async (db) => "bound error",
627
+ },
628
+ },
629
+ });
630
+ const actions = await Observe.toPromise(service.actions);
631
+ const result = await actions.fail.execute();
632
+ expect(result).toBe("bound error");
633
+ });
634
+ });
635
+ });
636
+ //# sourceMappingURL=create-from-ecs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-from-ecs.test.js","sourceRoot":"","sources":["../../../src/service/dynamic-service/create-from-ecs.test.ts"],"names":[],"mappings":"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"}