@adobe/data 0.9.5 → 0.9.6
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.
- package/ecs/database/create-plugin-cryos-pattern.test.d.ts +3 -0
- package/ecs/database/create-plugin-cryos-pattern.test.js +83 -0
- package/ecs/database/create-plugin-cryos-pattern.test.js.map +1 -0
- package/ecs/database/create-plugin-graphics.test.d.ts +93 -0
- package/ecs/database/create-plugin-graphics.test.js +135 -0
- package/ecs/database/create-plugin-graphics.test.js.map +1 -0
- package/ecs/database/create-plugin-type.type-test.js +563 -0
- package/ecs/database/create-plugin-type.type-test.js.map +1 -0
- package/ecs/database/create-plugin-type.type.test.js +563 -0
- package/ecs/database/create-plugin-type.type.test.js.map +1 -0
- package/ecs/database/database.d.ts +6 -1
- package/ecs/database/database.js.map +1 -1
- package/ecs/database/experimental-action-types.js +275 -0
- package/ecs/database/experimental-action-types.js.map +1 -0
- package/ecs/database/from-plugin.type-test.js +180 -0
- package/ecs/database/from-plugin.type-test.js.map +1 -0
- package/ecs/database/plugin-types.js +5 -0
- package/ecs/database/plugin-types.js.map +1 -0
- package/ecs/database/type-investigation.test.js +54 -0
- package/ecs/database/type-investigation.test.js.map +1 -0
- package/ecs/store/core/create-core.test.js +21 -0
- package/ecs/store/core/create-core.test.js.map +1 -1
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/typed-buffer/create-array-buffer.js +10 -0
- package/typed-buffer/create-array-buffer.js.map +1 -1
- package/typed-buffer/create-array-buffer.test.js +50 -0
- package/typed-buffer/create-array-buffer.test.js.map +1 -1
- package/typed-buffer/create-const-buffer.js +3 -0
- package/typed-buffer/create-const-buffer.js.map +1 -1
- package/typed-buffer/create-const-buffer.test.js +24 -0
- package/typed-buffer/create-const-buffer.test.js.map +1 -1
- package/typed-buffer/create-number-buffer.js +4 -0
- package/typed-buffer/create-number-buffer.js.map +1 -1
- package/typed-buffer/create-number-buffer.test.js +38 -0
- package/typed-buffer/create-number-buffer.test.js.map +1 -1
- package/typed-buffer/create-struct-buffer.js +11 -0
- package/typed-buffer/create-struct-buffer.js.map +1 -1
- package/typed-buffer/create-struct-buffer.test.js +60 -0
- package/typed-buffer/create-struct-buffer.test.js.map +1 -1
- package/typed-buffer/typed-buffer.d.ts +2 -0
- package/typed-buffer/typed-buffer.js.map +1 -1
- package/assembly/package.json +0 -1
- package/blob/package.json +0 -1
- package/cache/package.json +0 -1
- package/debug-type-test.js +0 -12
- package/debug-type-test.js.map +0 -1
- package/ecs/database/archetype-type-safety-test.d.ts +0 -21
- package/ecs/database/archetype-type-safety-test.js +0 -36
- package/ecs/database/archetype-type-safety-test.js.map +0 -1
- package/ecs/database/create-database-schema-test.js +0 -150
- package/ecs/database/create-database-schema-test.js.map +0 -1
- package/ecs/database/create-plugin-v2.d.ts +0 -79
- package/ecs/database/create-plugin-v2.js +0 -68
- package/ecs/database/create-plugin-v2.js.map +0 -1
- package/ecs/database/create-plugin-v2.test.js +0 -362
- package/ecs/database/create-plugin-v2.test.js.map +0 -1
- package/ecs/database/create-plugin.OLD.d.ts +0 -138
- package/ecs/database/create-plugin.OLD.js +0 -59
- package/ecs/database/create-plugin.OLD.js.map +0 -1
- package/ecs/database/database-with-systems.test.js +0 -292
- package/ecs/database/database-with-systems.test.js.map +0 -1
- package/ecs/database/database.plugin.create.test.OLD.js +0 -601
- package/ecs/database/database.plugin.create.test.OLD.js.map +0 -1
- package/ecs/database/database.plugin.create.test.js +0 -321
- package/ecs/database/database.plugin.create.test.js.map +0 -1
- package/ecs/database/database.plugin.test.d.ts +0 -1
- package/ecs/database/database.plugin.test.js +0 -90
- package/ecs/database/database.plugin.test.js.map +0 -1
- package/ecs/database/database.test copy.d.ts +0 -1
- package/ecs/database/database.test copy.js +0 -199
- package/ecs/database/database.test copy.js.map +0 -1
- package/ecs/database/multi-param-inference-poc.test.d.ts +0 -1
- package/ecs/database/multi-param-inference-poc.test.js +0 -96
- package/ecs/database/multi-param-inference-poc.test.js.map +0 -1
- package/ecs/database/old-plugin-create-with-dependencies-array.d.ts +0 -61
- package/ecs/database/old-plugin-create-with-dependencies-array.js +0 -76
- package/ecs/database/old-plugin-create-with-dependencies-array.js.map +0 -1
- package/ecs/database/overload-inference-poc.test.d.ts +0 -1
- package/ecs/database/overload-inference-poc.test.js +0 -109
- package/ecs/database/overload-inference-poc.test.js.map +0 -1
- package/ecs/database/schedule-type-check-demo.d.ts +0 -10
- package/ecs/database/schedule-type-check-demo.js +0 -71
- package/ecs/database/schedule-type-check-demo.js.map +0 -1
- package/ecs/database/test-archetype-validation.d.ts +0 -9
- package/ecs/database/test-archetype-validation.js +0 -14
- package/ecs/database/test-archetype-validation.js.map +0 -1
- package/ecs/database/test-exactkeys.d.ts +0 -1
- package/ecs/database/test-exactkeys.js +0 -17
- package/ecs/database/test-exactkeys.js.map +0 -1
- package/ecs/database/transactional-store/coalesce-transactions.test.js +0 -433
- package/ecs/database/transactional-store/coalesce-transactions.test.js.map +0 -1
- package/ecs/database/type-inference-demo.d.ts +0 -75
- package/ecs/database/type-inference-demo.js +0 -73
- package/ecs/database/type-inference-demo.js.map +0 -1
- package/ecs/database/type-inference-poc.test.d.ts +0 -1
- package/ecs/database/type-inference-poc.test.js +0 -73
- package/ecs/database/type-inference-poc.test.js.map +0 -1
- package/ecs/package.json +0 -1
- package/ecs/plugins/scheduler/create-scheduler-plugin.d.ts +0 -8
- package/ecs/plugins/scheduler/create-scheduler-plugin.js +0 -54
- package/ecs/plugins/scheduler/create-scheduler-plugin.js.map +0 -1
- package/ecs/plugins/scheduler/create-scheduler-plugin.test.d.ts +0 -1
- package/ecs/plugins/scheduler/create-scheduler-plugin.test.js +0 -198
- package/ecs/plugins/scheduler/create-scheduler-plugin.test.js.map +0 -1
- package/ecs/plugins/scheduler/type-inference-test.d.ts +0 -1
- package/ecs/plugins/scheduler/type-inference-test.js +0 -2
- package/ecs/plugins/scheduler/type-inference-test.js.map +0 -1
- package/ecs/store/entity-functions.d.ts +0 -7
- package/ecs/store/entity-functions.js +0 -2
- package/ecs/store/entity-functions.js.map +0 -1
- package/ecs/store/functions.d.ts +0 -2
- package/ecs/store/functions.js +0 -2
- package/ecs/store/functions.js.map +0 -1
- package/ecs/system/system-declaration.d.ts +0 -7
- package/ecs/system/system-declaration.js +0 -23
- package/ecs/system/system-declaration.js.map +0 -1
- package/ecs/system/system-declarations.d.ts +0 -4
- package/ecs/system/system-declarations.js +0 -23
- package/ecs/system/system-declarations.js.map +0 -1
- package/ecs/system/system-factory/public/create copy.d.ts +0 -12
- package/ecs/system/system-factory/public/create copy.js +0 -8
- package/ecs/system/system-factory/public/create copy.js.map +0 -1
- package/ecs/system/system-factory/public/create.d.ts +0 -12
- package/ecs/system/system-factory/public/create.js +0 -8
- package/ecs/system/system-factory/public/create.js.map +0 -1
- package/ecs/system/system-factory/public/create.test.d.ts +0 -1
- package/ecs/system/system-factory/public/create.test.js +0 -42
- package/ecs/system/system-factory/public/create.test.js.map +0 -1
- package/ecs/system/system-factory/public/index.d.ts +0 -1
- package/ecs/system/system-factory/public/index.js +0 -2
- package/ecs/system/system-factory/public/index.js.map +0 -1
- package/ecs/system/system-factory/system-factory.d.ts +0 -17
- package/ecs/system/system-factory/system-factory.js +0 -23
- package/ecs/system/system-factory/system-factory.js.map +0 -1
- package/ecs/system/system-factory.d.ts +0 -9
- package/ecs/system/system-factory.js +0 -23
- package/ecs/system/system-factory.js.map +0 -1
- package/ecs/system/system-interface.d.ts +0 -5
- package/ecs/system/system-interface.js +0 -2
- package/ecs/system/system-interface.js.map +0 -1
- package/ecs/system/system.d.ts +0 -4
- package/ecs/system/system.js +0 -23
- package/ecs/system/system.js.map +0 -1
- package/ecs/system/systems-type.d.ts +0 -2
- package/ecs/system/systems-type.js +0 -2
- package/ecs/system/systems-type.js.map +0 -1
- package/ecs/system/systems.d.ts +0 -2
- package/ecs/system/systems.js +0 -23
- package/ecs/system/systems.js.map +0 -1
- package/ecs/system/world-schema/public/create.d.ts +0 -12
- package/ecs/system/world-schema/public/create.js +0 -8
- package/ecs/system/world-schema/public/create.js.map +0 -1
- package/ecs/system/world-schema/public/create.test.d.ts +0 -1
- package/ecs/system/world-schema/public/create.test.js +0 -42
- package/ecs/system/world-schema/public/create.test.js.map +0 -1
- package/ecs/system/world-schema/public/index.d.ts +0 -1
- package/ecs/system/world-schema/public/index.js +0 -2
- package/ecs/system/world-schema/public/index.js.map +0 -1
- package/ecs/system/world-schema/system-factory.d.ts +0 -17
- package/ecs/system/world-schema/system-factory.js +0 -23
- package/ecs/system/world-schema/system-factory.js.map +0 -1
- package/ecs/world/calculate-system-order.d.ts +0 -18
- package/ecs/world/calculate-system-order.js +0 -113
- package/ecs/world/calculate-system-order.js.map +0 -1
- package/ecs/world/calculate-system-order.test.d.ts +0 -1
- package/ecs/world/calculate-system-order.test.js +0 -168
- package/ecs/world/calculate-system-order.test.js.map +0 -1
- package/ecs/world/create-world-schema-test.d.ts +0 -1
- package/ecs/world/create-world-schema-test.js +0 -294
- package/ecs/world/create-world-schema-test.js.map +0 -1
- package/ecs/world/create-world-type-test.d.ts +0 -1
- package/ecs/world/create-world-type-test.js +0 -129
- package/ecs/world/create-world-type-test.js.map +0 -1
- package/ecs/world/create-world.d.ts +0 -19
- package/ecs/world/create-world.js +0 -80
- package/ecs/world/create-world.js.map +0 -1
- package/ecs/world/create-world.test.d.ts +0 -1
- package/ecs/world/create-world.test.js +0 -292
- package/ecs/world/create-world.test.js.map +0 -1
- package/ecs/world/public/world-schema/public/create.d.ts +0 -12
- package/ecs/world/public/world-schema/public/create.js +0 -8
- package/ecs/world/public/world-schema/public/create.js.map +0 -1
- package/ecs/world/public/world-schema/public/create.test.d.ts +0 -1
- package/ecs/world/public/world-schema/public/create.test.js +0 -42
- package/ecs/world/public/world-schema/public/create.test.js.map +0 -1
- package/ecs/world/public/world-schema/public/index.d.ts +0 -1
- package/ecs/world/public/world-schema/public/index.js +0 -2
- package/ecs/world/public/world-schema/public/index.js.map +0 -1
- package/ecs/world/public/world-schema/world-schema.d.ts +0 -17
- package/ecs/world/public/world-schema/world-schema.js +0 -23
- package/ecs/world/public/world-schema/world-schema.js.map +0 -1
- package/ecs/world/system-declaration.d.ts +0 -1
- package/ecs/world/system-declaration.js +0 -23
- package/ecs/world/system-declaration.js.map +0 -1
- package/ecs/world/system-schedule-typing-test.d.ts +0 -1
- package/ecs/world/system-schedule-typing-test.js +0 -83
- package/ecs/world/system-schedule-typing-test.js.map +0 -1
- package/ecs/world/world-schema/public/create.d.ts +0 -12
- package/ecs/world/world-schema/public/create.js +0 -10
- package/ecs/world/world-schema/public/create.js.map +0 -1
- package/ecs/world/world-schema/public/create.test.d.ts +0 -1
- package/ecs/world/world-schema/public/create.test.js +0 -41
- package/ecs/world/world-schema/public/create.test.js.map +0 -1
- package/ecs/world/world-schema/public/index.d.ts +0 -1
- package/ecs/world/world-schema/public/index.js +0 -2
- package/ecs/world/world-schema/public/index.js.map +0 -1
- package/ecs/world/world-schema/system-factory.d.ts +0 -17
- package/ecs/world/world-schema/system-factory.js +0 -23
- package/ecs/world/world-schema/system-factory.js.map +0 -1
- package/ecs/world/world-schema/world-schema.d.ts +0 -19
- package/ecs/world/world-schema/world-schema.js +0 -23
- package/ecs/world/world-schema/world-schema.js.map +0 -1
- package/ecs/world/world.d.ts +0 -86
- package/ecs/world/world.js +0 -81
- package/ecs/world/world.js.map +0 -1
- package/ecs/world/world.test.d.ts +0 -1
- package/ecs/world/world.test.js +0 -176
- package/ecs/world/world.test.js.map +0 -1
- package/functions/package.json +0 -1
- package/lit/elements/application-element copy.d.ts +0 -9
- package/lit/elements/application-element copy.js +0 -62
- package/lit/elements/application-element copy.js.map +0 -1
- package/lit/package.json +0 -1
- package/math/package.json +0 -1
- package/observe/package.json +0 -1
- package/old-ecs/package.json +0 -1
- package/perftest/package.json +0 -1
- package/samples/package.json +0 -1
- package/schema/package.json +0 -1
- package/service/package.json +0 -1
- package/table/package.json +0 -1
- package/typed-buffer/package.json +0 -1
- package/types/package.json +0 -1
- /package/{debug-type-test.d.ts → ecs/database/create-plugin-type.type-test.d.ts} +0 -0
- /package/ecs/database/{create-database-schema-test.d.ts → create-plugin-type.type.test.d.ts} +0 -0
- /package/ecs/database/{create-plugin-v2.test.d.ts → experimental-action-types.d.ts} +0 -0
- /package/ecs/database/{database-with-systems.test.d.ts → from-plugin.type-test.d.ts} +0 -0
- /package/ecs/database/{database.plugin.create.test.OLD.d.ts → plugin-types.d.ts} +0 -0
- /package/ecs/database/{database.plugin.create.test.d.ts → type-investigation.test.d.ts} +0 -0
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
/*MIT License
|
|
2
|
-
|
|
3
|
-
© Copyright 2025 Adobe. All rights reserved.
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.*/
|
|
22
|
-
import { describe, it, expect } from "vitest";
|
|
23
|
-
import { createPlugin } from "./create-plugin.js";
|
|
24
|
-
describe("Database.Plugin.create (v2 - descriptor + dependencies)", () => {
|
|
25
|
-
describe("single descriptor (no dependencies)", () => {
|
|
26
|
-
it("should create plugin with components, resources, and archetypes", () => {
|
|
27
|
-
const plugin = createPlugin({
|
|
28
|
-
components: {
|
|
29
|
-
velocity: { type: "number" },
|
|
30
|
-
particle: { type: "boolean" },
|
|
31
|
-
},
|
|
32
|
-
resources: {
|
|
33
|
-
mousePosition: { type: "number", default: 0 },
|
|
34
|
-
fooPosition: { type: "number", default: 0 },
|
|
35
|
-
},
|
|
36
|
-
archetypes: {
|
|
37
|
-
Particle: ["particle"],
|
|
38
|
-
DynamicParticle: ["particle", "velocity"],
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
expect(plugin.components).toBeDefined();
|
|
42
|
-
expect("velocity" in plugin.components).toBe(true);
|
|
43
|
-
expect("particle" in plugin.components).toBe(true);
|
|
44
|
-
expect(plugin.resources).toBeDefined();
|
|
45
|
-
expect("mousePosition" in plugin.resources).toBe(true);
|
|
46
|
-
expect("fooPosition" in plugin.resources).toBe(true);
|
|
47
|
-
expect(plugin.archetypes).toBeDefined();
|
|
48
|
-
expect("Particle" in plugin.archetypes).toBe(true);
|
|
49
|
-
expect("DynamicParticle" in plugin.archetypes).toBe(true);
|
|
50
|
-
});
|
|
51
|
-
it("should infer db type correctly with single descriptor", () => {
|
|
52
|
-
const plugin = createPlugin({
|
|
53
|
-
resources: {
|
|
54
|
-
time: { default: 0 },
|
|
55
|
-
},
|
|
56
|
-
systems: {
|
|
57
|
-
physicsSystem: {
|
|
58
|
-
create: (db) => () => {
|
|
59
|
-
const time = db.resources.time;
|
|
60
|
-
// @ts-expect-error - this should be an error
|
|
61
|
-
const dt = db.resources.deltaTime2;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
expect(plugin).toBeDefined();
|
|
67
|
-
expect(plugin.systems).toBeDefined();
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
describe("with dependencies", () => {
|
|
71
|
-
it("should merge components from dependencies", () => {
|
|
72
|
-
const basePlugin = createPlugin({
|
|
73
|
-
components: {
|
|
74
|
-
position: { type: "number" },
|
|
75
|
-
health: { type: "number" }
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
const extendedPlugin = createPlugin({
|
|
79
|
-
components: {
|
|
80
|
-
velocity: { type: "number" }
|
|
81
|
-
}
|
|
82
|
-
}, [basePlugin]);
|
|
83
|
-
expect("position" in extendedPlugin.components).toBe(true);
|
|
84
|
-
expect("health" in extendedPlugin.components).toBe(true);
|
|
85
|
-
expect("velocity" in extendedPlugin.components).toBe(true);
|
|
86
|
-
});
|
|
87
|
-
it("should merge resources from dependencies", () => {
|
|
88
|
-
const basePlugin = createPlugin({
|
|
89
|
-
resources: {
|
|
90
|
-
time: { default: 0 },
|
|
91
|
-
config: { default: "default" }
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
const extendedPlugin = createPlugin({
|
|
95
|
-
resources: {
|
|
96
|
-
delta: { default: 0 }
|
|
97
|
-
}
|
|
98
|
-
}, [basePlugin]);
|
|
99
|
-
expect("time" in extendedPlugin.resources).toBe(true);
|
|
100
|
-
expect("config" in extendedPlugin.resources).toBe(true);
|
|
101
|
-
expect("delta" in extendedPlugin.resources).toBe(true);
|
|
102
|
-
});
|
|
103
|
-
it("should merge systems from dependencies", () => {
|
|
104
|
-
const basePlugin = createPlugin({
|
|
105
|
-
systems: {
|
|
106
|
-
inputSystem: {
|
|
107
|
-
create: (_db) => () => { }
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
const extendedPlugin = createPlugin({
|
|
112
|
-
systems: {
|
|
113
|
-
renderSystem: {
|
|
114
|
-
create: (_db) => () => { }
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}, [basePlugin]);
|
|
118
|
-
expect("inputSystem" in extendedPlugin.systems).toBe(true);
|
|
119
|
-
expect("renderSystem" in extendedPlugin.systems).toBe(true);
|
|
120
|
-
});
|
|
121
|
-
it("should allow systems to access dependency resources", () => {
|
|
122
|
-
const basePlugin = createPlugin({
|
|
123
|
-
resources: {
|
|
124
|
-
time: { default: 0 }
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
const extendedPlugin = createPlugin({
|
|
128
|
-
systems: {
|
|
129
|
-
mySystem: {
|
|
130
|
-
create: (db) => () => {
|
|
131
|
-
const time = db.resources.time; // Should work!
|
|
132
|
-
expect(typeof time).toBe("number");
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}, [basePlugin]);
|
|
137
|
-
expect(extendedPlugin).toBeDefined();
|
|
138
|
-
});
|
|
139
|
-
it("should allow multiple dependencies", () => {
|
|
140
|
-
const plugin1 = createPlugin({
|
|
141
|
-
components: { a: { type: "number" } }
|
|
142
|
-
});
|
|
143
|
-
const plugin2 = createPlugin({
|
|
144
|
-
components: { b: { type: "string" } }
|
|
145
|
-
});
|
|
146
|
-
const plugin3 = createPlugin({
|
|
147
|
-
components: { c: { type: "boolean" } }
|
|
148
|
-
});
|
|
149
|
-
const merged = createPlugin({
|
|
150
|
-
components: { d: { type: "number" } }
|
|
151
|
-
}, [plugin1, plugin2, plugin3]);
|
|
152
|
-
expect("a" in merged.components).toBe(true);
|
|
153
|
-
expect("b" in merged.components).toBe(true);
|
|
154
|
-
expect("c" in merged.components).toBe(true);
|
|
155
|
-
expect("d" in merged.components).toBe(true);
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
describe("schedule validation", () => {
|
|
159
|
-
it("should throw error for non-existent system in schedule.after", () => {
|
|
160
|
-
expect(() => {
|
|
161
|
-
createPlugin({
|
|
162
|
-
systems: {
|
|
163
|
-
system1: {
|
|
164
|
-
create: (_db) => () => { }
|
|
165
|
-
},
|
|
166
|
-
system2: {
|
|
167
|
-
create: (_db) => () => { },
|
|
168
|
-
schedule: {
|
|
169
|
-
after: ["nonExistentSystem"]
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
}).toThrow('System "system2" references non-existent system "nonExistentSystem" in schedule.after');
|
|
175
|
-
});
|
|
176
|
-
it("should throw error for non-existent system in schedule.before", () => {
|
|
177
|
-
expect(() => {
|
|
178
|
-
createPlugin({
|
|
179
|
-
systems: {
|
|
180
|
-
system1: {
|
|
181
|
-
create: (_db) => () => { },
|
|
182
|
-
schedule: {
|
|
183
|
-
before: ["anotherNonExistentSystem"]
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
}).toThrow('System "system1" references non-existent system "anotherNonExistentSystem" in schedule.before');
|
|
189
|
-
});
|
|
190
|
-
it("should not throw error for valid system references in schedule", () => {
|
|
191
|
-
expect(() => {
|
|
192
|
-
createPlugin({
|
|
193
|
-
systems: {
|
|
194
|
-
system1: {
|
|
195
|
-
create: (_db) => () => { }
|
|
196
|
-
},
|
|
197
|
-
system2: {
|
|
198
|
-
create: (_db) => () => { },
|
|
199
|
-
schedule: {
|
|
200
|
-
after: ["system1"]
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
}).not.toThrow();
|
|
206
|
-
});
|
|
207
|
-
it("should allow referencing dependency systems in schedule", () => {
|
|
208
|
-
const basePlugin = createPlugin({
|
|
209
|
-
systems: {
|
|
210
|
-
inputSystem: {
|
|
211
|
-
create: (_db) => () => { }
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
expect(() => {
|
|
216
|
-
createPlugin({
|
|
217
|
-
systems: {
|
|
218
|
-
renderSystem: {
|
|
219
|
-
create: (_db) => () => { },
|
|
220
|
-
schedule: {
|
|
221
|
-
after: ["inputSystem"] // Reference from dependency!
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}, [basePlugin]);
|
|
226
|
-
}).not.toThrow();
|
|
227
|
-
});
|
|
228
|
-
it("should validate across multiple dependencies", () => {
|
|
229
|
-
const plugin1 = createPlugin({
|
|
230
|
-
systems: {
|
|
231
|
-
system1: {
|
|
232
|
-
create: (_db) => () => { }
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
const plugin2 = createPlugin({
|
|
237
|
-
systems: {
|
|
238
|
-
system2: {
|
|
239
|
-
create: (_db) => () => { }
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
expect(() => {
|
|
244
|
-
createPlugin({
|
|
245
|
-
systems: {
|
|
246
|
-
system3: {
|
|
247
|
-
create: (_db) => () => { },
|
|
248
|
-
schedule: {
|
|
249
|
-
after: ["system1", "system2"] // Both from dependencies
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
}, [plugin1, plugin2]);
|
|
254
|
-
}).not.toThrow();
|
|
255
|
-
});
|
|
256
|
-
it("should still catch errors when using dependencies", () => {
|
|
257
|
-
const basePlugin = createPlugin({
|
|
258
|
-
systems: {
|
|
259
|
-
realSystem: {
|
|
260
|
-
create: (_db) => () => { }
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
expect(() => {
|
|
265
|
-
createPlugin({
|
|
266
|
-
systems: {
|
|
267
|
-
mySystem: {
|
|
268
|
-
create: (_db) => () => { },
|
|
269
|
-
schedule: {
|
|
270
|
-
after: ["nonExistentSystem"]
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}, [basePlugin]);
|
|
275
|
-
}).toThrow('System "mySystem" references non-existent system "nonExistentSystem" in schedule.after');
|
|
276
|
-
});
|
|
277
|
-
});
|
|
278
|
-
describe("type inference edge cases", () => {
|
|
279
|
-
it("should block arbitrary property access on resources", () => {
|
|
280
|
-
const plugin = createPlugin({
|
|
281
|
-
resources: {
|
|
282
|
-
time: { default: 0 }
|
|
283
|
-
},
|
|
284
|
-
systems: {
|
|
285
|
-
testSystem: {
|
|
286
|
-
create: (db) => () => {
|
|
287
|
-
const time = db.resources.time; // OK
|
|
288
|
-
// @ts-expect-error - should error
|
|
289
|
-
const invalid = db.resources.nonExistent;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
});
|
|
294
|
-
expect(plugin).toBeDefined();
|
|
295
|
-
});
|
|
296
|
-
it("should block arbitrary property access with dependencies", () => {
|
|
297
|
-
const basePlugin = createPlugin({
|
|
298
|
-
resources: {
|
|
299
|
-
time: { default: 0 }
|
|
300
|
-
}
|
|
301
|
-
});
|
|
302
|
-
const extendedPlugin = createPlugin({
|
|
303
|
-
resources: {
|
|
304
|
-
delta: { default: 0 }
|
|
305
|
-
},
|
|
306
|
-
systems: {
|
|
307
|
-
testSystem: {
|
|
308
|
-
create: (db) => () => {
|
|
309
|
-
const time = db.resources.time; // OK - from dependency
|
|
310
|
-
const delta = db.resources.delta; // OK - from descriptor
|
|
311
|
-
// @ts-expect-error - should error
|
|
312
|
-
const invalid = db.resources.nonExistent;
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
}, [basePlugin]);
|
|
317
|
-
expect(extendedPlugin).toBeDefined();
|
|
318
|
-
});
|
|
319
|
-
});
|
|
320
|
-
});
|
|
321
|
-
//# sourceMappingURL=database.plugin.create.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"database.plugin.create.test.js","sourceRoot":"","sources":["../../../src/ecs/database/database.plugin.create.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/*MIT License
|
|
2
|
-
|
|
3
|
-
© Copyright 2025 Adobe. All rights reserved.
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.*/
|
|
22
|
-
import { describe, it, expect } from "vitest";
|
|
23
|
-
import { Database } from "./database.js";
|
|
24
|
-
import { Vec3 } from "../../math/index.js";
|
|
25
|
-
describe("Database.Plugin.create type inference", () => {
|
|
26
|
-
it("should infer db type correctly with 2 args", () => {
|
|
27
|
-
const plugin = Database.Plugin.create({
|
|
28
|
-
resources: {
|
|
29
|
-
time: { default: 0 },
|
|
30
|
-
},
|
|
31
|
-
}, {
|
|
32
|
-
systems: {
|
|
33
|
-
physicsSystem: {
|
|
34
|
-
create: (db /* should have type correctly inferred */) => () => {
|
|
35
|
-
const time = db.resources.time;
|
|
36
|
-
const dt = db.resources.deltaTime;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
expect(plugin).toBeDefined();
|
|
42
|
-
expect(plugin.components).toBeDefined();
|
|
43
|
-
expect(plugin.resources).toBeDefined();
|
|
44
|
-
expect(plugin.systems).toBeDefined();
|
|
45
|
-
});
|
|
46
|
-
it("should infer db type correctly with 3 args", () => {
|
|
47
|
-
const plugin = Database.Plugin.create({
|
|
48
|
-
resources: {
|
|
49
|
-
time: { default: 0 },
|
|
50
|
-
},
|
|
51
|
-
}, {}, {
|
|
52
|
-
systems: {
|
|
53
|
-
physicsSystem: {
|
|
54
|
-
create: (db /* should have type correctly inferred */) => () => {
|
|
55
|
-
const time = db.resources.time;
|
|
56
|
-
const dt = db.resources.deltaTime;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
expect(plugin).toBeDefined();
|
|
62
|
-
expect(plugin.components).toBeDefined();
|
|
63
|
-
expect(plugin.resources).toBeDefined();
|
|
64
|
-
expect(plugin.systems).toBeDefined();
|
|
65
|
-
});
|
|
66
|
-
it("should infer db type correctly with 4 args", () => {
|
|
67
|
-
const plugin = Database.Plugin.create({
|
|
68
|
-
components: {
|
|
69
|
-
position: Vec3.schema,
|
|
70
|
-
},
|
|
71
|
-
resources: {
|
|
72
|
-
time: { default: 0 },
|
|
73
|
-
},
|
|
74
|
-
}, {}, {}, {
|
|
75
|
-
systems: {
|
|
76
|
-
physicsSystem: {
|
|
77
|
-
create: (db /* should have type correctly inferred */) => () => {
|
|
78
|
-
const entities = db.select(["position"]);
|
|
79
|
-
const time = db.resources.time;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
expect(plugin).toBeDefined();
|
|
85
|
-
expect(plugin.components).toBeDefined();
|
|
86
|
-
expect(plugin.resources).toBeDefined();
|
|
87
|
-
expect(plugin.systems).toBeDefined();
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
//# sourceMappingURL=database.plugin.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"database.plugin.test.js","sourceRoot":"","sources":["../../../src/ecs/database/database.plugin.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
/*MIT License
|
|
2
|
-
|
|
3
|
-
© Copyright 2025 Adobe. All rights reserved.
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.*/
|
|
22
|
-
import { describe, it, expect } from "vitest";
|
|
23
|
-
import { Database } from "./database.js";
|
|
24
|
-
describe("Database.create", () => {
|
|
25
|
-
it("should create an empty database without errors when called with no arguments", () => {
|
|
26
|
-
const db = Database.create();
|
|
27
|
-
expect(db).toBeDefined();
|
|
28
|
-
expect(db.store).toBeDefined();
|
|
29
|
-
expect(db.transactions).toBeDefined();
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
describe("Database.Plugin.create", () => {
|
|
33
|
-
describe("partial schema creation", () => {
|
|
34
|
-
it("should create a schema with all properties defaulting to empty objects when given empty schema", () => {
|
|
35
|
-
const schema = Database.Plugin.create({});
|
|
36
|
-
expect(schema.components).toEqual({});
|
|
37
|
-
expect(schema.resources).toEqual({});
|
|
38
|
-
expect(schema.archetypes).toEqual({});
|
|
39
|
-
expect(schema.transactions).toEqual({});
|
|
40
|
-
});
|
|
41
|
-
it("should create a schema with components and default empty objects for other properties when given only components", () => {
|
|
42
|
-
const schema = Database.Plugin.create({
|
|
43
|
-
components: {
|
|
44
|
-
position: { type: "number" },
|
|
45
|
-
velocity: { type: "number" }
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
expect(schema.components).toHaveProperty("position");
|
|
49
|
-
expect(schema.components).toHaveProperty("velocity");
|
|
50
|
-
expect(Object.keys(schema.resources)).toHaveLength(0);
|
|
51
|
-
expect(Object.keys(schema.archetypes)).toHaveLength(0);
|
|
52
|
-
expect(Object.keys(schema.transactions)).toHaveLength(0);
|
|
53
|
-
});
|
|
54
|
-
it("should create a schema with transactions and default empty objects for other properties when given only transactions", () => {
|
|
55
|
-
const testTransaction = () => { };
|
|
56
|
-
const schema = Database.Plugin.create({
|
|
57
|
-
transactions: {
|
|
58
|
-
updateEntity: testTransaction
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
expect(schema.transactions).toHaveProperty("updateEntity");
|
|
62
|
-
expect(schema.transactions.updateEntity).toBe(testTransaction);
|
|
63
|
-
expect(Object.keys(schema.components)).toHaveLength(0);
|
|
64
|
-
expect(Object.keys(schema.resources)).toHaveLength(0);
|
|
65
|
-
expect(Object.keys(schema.archetypes)).toHaveLength(0);
|
|
66
|
-
});
|
|
67
|
-
it("should create a schema with specified properties and defaults for omitted ones when given multiple partial properties", () => {
|
|
68
|
-
const schema = Database.Plugin.create({
|
|
69
|
-
components: {
|
|
70
|
-
health: { type: "number" }
|
|
71
|
-
},
|
|
72
|
-
resources: {
|
|
73
|
-
time: { default: 0 }
|
|
74
|
-
},
|
|
75
|
-
transactions: {
|
|
76
|
-
updateHealth: () => { }
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
expect(schema.components).toHaveProperty("health");
|
|
80
|
-
expect(schema.resources).toHaveProperty("time");
|
|
81
|
-
expect(schema.transactions).toHaveProperty("updateHealth");
|
|
82
|
-
expect(Object.keys(schema.archetypes)).toHaveLength(0);
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
describe("schema merging with dependencies", () => {
|
|
86
|
-
it("should merge both schemas with all properties preserved when given partial schema with dependencies", () => {
|
|
87
|
-
const baseSchema = Database.Plugin.create({
|
|
88
|
-
components: {
|
|
89
|
-
position: { type: "number" }
|
|
90
|
-
},
|
|
91
|
-
resources: {
|
|
92
|
-
time: { default: 0 }
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
const extendedSchema = Database.Plugin.create({
|
|
96
|
-
components: {
|
|
97
|
-
velocity: { type: "number" }
|
|
98
|
-
}
|
|
99
|
-
}, [baseSchema]);
|
|
100
|
-
expect(extendedSchema.components).toHaveProperty("position");
|
|
101
|
-
expect(extendedSchema.components).toHaveProperty("velocity");
|
|
102
|
-
expect(extendedSchema.resources).toHaveProperty("time");
|
|
103
|
-
expect(Object.keys(extendedSchema.components)).toHaveLength(2);
|
|
104
|
-
expect(Object.keys(extendedSchema.resources)).toHaveLength(1);
|
|
105
|
-
});
|
|
106
|
-
it("should create a schema containing only the dependency properties when given empty schema with dependencies", () => {
|
|
107
|
-
const baseSchema = Database.Plugin.create({
|
|
108
|
-
components: {
|
|
109
|
-
transform: { type: "number" }
|
|
110
|
-
},
|
|
111
|
-
transactions: {
|
|
112
|
-
updateTransform: () => { }
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
const emptyExtension = Database.Plugin.create({}, [baseSchema]);
|
|
116
|
-
expect(emptyExtension.components).toHaveProperty("transform");
|
|
117
|
-
expect(emptyExtension.transactions).toHaveProperty("updateTransform");
|
|
118
|
-
expect(Object.keys(emptyExtension.components)).toHaveLength(1);
|
|
119
|
-
expect(Object.keys(emptyExtension.transactions)).toHaveLength(1);
|
|
120
|
-
});
|
|
121
|
-
it("should merge all plugins together with properties from all dependencies when given multiple dependencies", () => {
|
|
122
|
-
const pluginA = Database.Plugin.create({
|
|
123
|
-
components: { a: { type: "number" } }
|
|
124
|
-
});
|
|
125
|
-
const pluginB = Database.Plugin.create({
|
|
126
|
-
components: { b: { type: "number" } }
|
|
127
|
-
});
|
|
128
|
-
const pluginC = Database.Plugin.create({
|
|
129
|
-
components: { c: { type: "number" } }
|
|
130
|
-
});
|
|
131
|
-
const merged = Database.Plugin.create({
|
|
132
|
-
components: { d: { type: "number" } }
|
|
133
|
-
}, [pluginA, pluginB, pluginC]);
|
|
134
|
-
expect(merged.components).toHaveProperty("a");
|
|
135
|
-
expect(merged.components).toHaveProperty("b");
|
|
136
|
-
expect(merged.components).toHaveProperty("c");
|
|
137
|
-
expect(merged.components).toHaveProperty("d");
|
|
138
|
-
expect(Object.keys(merged.components)).toHaveLength(4);
|
|
139
|
-
});
|
|
140
|
-
it("should merge transactions from dependencies", () => {
|
|
141
|
-
const baseSchema = Database.Plugin.create({
|
|
142
|
-
transactions: {
|
|
143
|
-
baseAction: () => { }
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
const extendedSchema = Database.Plugin.create({
|
|
147
|
-
transactions: {
|
|
148
|
-
extendedAction: () => { }
|
|
149
|
-
}
|
|
150
|
-
}, [baseSchema]);
|
|
151
|
-
expect(extendedSchema.transactions).toHaveProperty("baseAction");
|
|
152
|
-
expect(extendedSchema.transactions).toHaveProperty("extendedAction");
|
|
153
|
-
expect(Object.keys(extendedSchema.transactions)).toHaveLength(2);
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
describe("edge cases", () => {
|
|
157
|
-
it("should merge schemas with dependencies taking precedence for overlapping properties", () => {
|
|
158
|
-
const baseSchema = Database.Plugin.create({
|
|
159
|
-
components: {
|
|
160
|
-
position: { type: "number" },
|
|
161
|
-
velocity: { type: "number" }
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
const extendedSchema = Database.Plugin.create({
|
|
165
|
-
components: {
|
|
166
|
-
position: { type: "number" },
|
|
167
|
-
mass: { type: "number" }
|
|
168
|
-
}
|
|
169
|
-
}, [baseSchema]);
|
|
170
|
-
// All components should be present
|
|
171
|
-
expect(extendedSchema.components).toHaveProperty("position");
|
|
172
|
-
expect(extendedSchema.components).toHaveProperty("velocity");
|
|
173
|
-
expect(extendedSchema.components).toHaveProperty("mass");
|
|
174
|
-
expect(Object.keys(extendedSchema.components)).toHaveLength(3);
|
|
175
|
-
});
|
|
176
|
-
it("should handle archetypes that reference components from dependencies", () => {
|
|
177
|
-
const baseSchema = Database.Plugin.create({
|
|
178
|
-
components: {
|
|
179
|
-
position: { type: "number" },
|
|
180
|
-
health: { type: "number" }
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
const extendedSchema = Database.Plugin.create({
|
|
184
|
-
components: {
|
|
185
|
-
velocity: { type: "number" }
|
|
186
|
-
},
|
|
187
|
-
archetypes: {
|
|
188
|
-
DynamicEntity: ["position", "velocity"],
|
|
189
|
-
LivingEntity: ["position", "health"]
|
|
190
|
-
}
|
|
191
|
-
}, [baseSchema]);
|
|
192
|
-
expect(extendedSchema.archetypes).toHaveProperty("DynamicEntity");
|
|
193
|
-
expect(extendedSchema.archetypes).toHaveProperty("LivingEntity");
|
|
194
|
-
expect(extendedSchema.archetypes.DynamicEntity).toEqual(["position", "velocity"]);
|
|
195
|
-
expect(extendedSchema.archetypes.LivingEntity).toEqual(["position", "health"]);
|
|
196
|
-
});
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
//# sourceMappingURL=database.test%20copy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"database.test copy.js","sourceRoot":"","sources":["../../../src/ecs/database/database.test copy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|