@adobe/data 0.7.0 → 0.7.2

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 (135) hide show
  1. package/dist/ecs/database/applied/applied-database.d.ts +47 -0
  2. package/dist/ecs/database/applied/applied-database.js +22 -0
  3. package/dist/ecs/database/applied/applied-database.js.map +1 -0
  4. package/dist/ecs/database/applied/applied-entry.d.ts +30 -0
  5. package/dist/ecs/database/applied/applied-entry.js +84 -0
  6. package/dist/ecs/database/applied/applied-entry.js.map +1 -0
  7. package/dist/ecs/database/applied/create-applied-database.d.ts +8 -0
  8. package/dist/ecs/database/applied/create-applied-database.js +266 -0
  9. package/dist/ecs/database/applied/create-applied-database.js.map +1 -0
  10. package/dist/ecs/database/applied/create-applied-database.test.js +94 -0
  11. package/dist/ecs/database/applied/create-applied-database.test.js.map +1 -0
  12. package/dist/ecs/database/create-applied-database.d.ts +49 -0
  13. package/dist/ecs/database/create-applied-database.js +275 -0
  14. package/dist/ecs/database/create-applied-database.js.map +1 -0
  15. package/dist/ecs/database/index.d.ts +1 -0
  16. package/dist/ecs/database/index.js +1 -0
  17. package/dist/ecs/database/index.js.map +1 -1
  18. package/dist/ecs/database/reconciling/applied-database.d.ts +47 -0
  19. package/dist/ecs/database/reconciling/applied-database.js +22 -0
  20. package/dist/ecs/database/reconciling/applied-database.js.map +1 -0
  21. package/dist/ecs/database/reconciling/applied-entry.d.ts +30 -0
  22. package/dist/ecs/database/reconciling/applied-entry.js +84 -0
  23. package/dist/ecs/database/reconciling/applied-entry.js.map +1 -0
  24. package/dist/ecs/database/reconciling/create-applied-database.d.ts +8 -0
  25. package/dist/ecs/database/reconciling/create-applied-database.js +266 -0
  26. package/dist/ecs/database/reconciling/create-applied-database.js.map +1 -0
  27. package/dist/ecs/database/reconciling/create-applied-database.test.js +94 -0
  28. package/dist/ecs/database/reconciling/create-applied-database.test.js.map +1 -0
  29. package/dist/ecs/database/replicate.d.ts +9 -0
  30. package/dist/ecs/database/replicate.js +66 -0
  31. package/dist/ecs/database/replicate.js.map +1 -0
  32. package/dist/ecs/database/replicate.test.js +235 -0
  33. package/dist/ecs/database/replicate.test.js.map +1 -0
  34. package/dist/ecs/database/transactional-store/create-transactional-store.test.js +20 -0
  35. package/dist/ecs/database/transactional-store/create-transactional-store.test.js.map +1 -1
  36. package/dist/ecs/database/transactional-store/patch-entity-values.js +4 -1
  37. package/dist/ecs/database/transactional-store/patch-entity-values.js.map +1 -1
  38. package/dist/ecs/store/core/core.d.ts +2 -2
  39. package/dist/ecs/store/core/create-core.js +5 -2
  40. package/dist/ecs/store/core/create-core.js.map +1 -1
  41. package/dist/ecs/store/store-schema/create-store-schema-test.js +2 -2
  42. package/dist/ecs/store/store-schema/create-store-schema-test.js.map +1 -1
  43. package/dist/ecs/store/store-schema/create-store-schema.d.ts +11 -1
  44. package/dist/ecs/store/store-schema/create-store-schema.js +30 -44
  45. package/dist/ecs/store/store-schema/create-store-schema.js.map +1 -1
  46. package/dist/ecs/store/store-schema/index.d.ts +2 -1
  47. package/dist/ecs/store/store-schema/index.js +23 -20
  48. package/dist/ecs/store/store-schema/index.js.map +1 -1
  49. package/dist/ecs/store/store-schema/store-schema.d.ts +12 -1
  50. package/dist/ecs/store/store-schema/store-schema.js +21 -55
  51. package/dist/ecs/store/store-schema/store-schema.js.map +1 -1
  52. package/dist/graphics/frame.d.ts +22 -1
  53. package/dist/graphics/frame.js +11 -14
  54. package/dist/graphics/frame.js.map +1 -1
  55. package/dist/graphics/get-web-gpu-device-and-context.d.ts +2 -1
  56. package/dist/graphics/get-web-gpu-device-and-context.js +20 -23
  57. package/dist/graphics/get-web-gpu-device-and-context.js.map +1 -1
  58. package/dist/graphics/graphics-context.d.ts +5 -1
  59. package/dist/graphics/graphics-context.js +0 -5
  60. package/dist/graphics/graphics-context.js.map +1 -1
  61. package/dist/lit/elements/service-application.d.ts +9 -0
  62. package/dist/lit/elements/service-application.js +55 -0
  63. package/dist/lit/elements/service-application.js.map +1 -0
  64. package/dist/lit/elements/service-context.d.ts +1 -0
  65. package/dist/{ecs/entity/u32.js → lit/elements/service-context.js} +3 -3
  66. package/dist/lit/elements/service-context.js.map +1 -0
  67. package/dist/lit/elements/service-element.d.ts +6 -0
  68. package/dist/lit/elements/service-element.js +43 -0
  69. package/dist/lit/elements/service-element.js.map +1 -0
  70. package/dist/math/picking/get-closest-entity-to-line.js +1 -1
  71. package/dist/math/picking/get-closest-entity-to-line.js.map +1 -1
  72. package/dist/math/picking/get-closest-entity-to-point.js +1 -1
  73. package/dist/math/picking/get-closest-entity-to-point.js.map +1 -1
  74. package/dist/math/picking/pick-from-tables.js +1 -1
  75. package/dist/math/picking/pick-from-tables.js.map +1 -1
  76. package/dist/math/picking/pick-result.d.ts +2 -4
  77. package/dist/samples/todo/services/state-service/create-todo-database.d.ts +1 -1
  78. package/dist/samples/todo/services/state-service/create-todo-store.d.ts +1 -1
  79. package/dist/table/compact-table.d.ts +7 -0
  80. package/dist/table/compact-table.js +15 -0
  81. package/dist/table/compact-table.js.map +1 -0
  82. package/dist/table/compact-table.test.js +121 -0
  83. package/dist/table/compact-table.test.js.map +1 -0
  84. package/dist/tsconfig.tsbuildinfo +1 -1
  85. package/package.json +1 -1
  86. package/dist/ecs/database/transactional-store/entity-id-preservation.test.js +0 -106
  87. package/dist/ecs/database/transactional-store/entity-id-preservation.test.js.map +0 -1
  88. package/dist/ecs/entity/entity.d.ts +0 -8
  89. package/dist/ecs/entity/entity.js +0 -3
  90. package/dist/ecs/entity/entity.js.map +0 -1
  91. package/dist/ecs/entity/u32.d.ts +0 -8
  92. package/dist/ecs/entity/u32.js.map +0 -1
  93. package/dist/math/aabb-face/face.d.ts +0 -51
  94. package/dist/math/aabb-face/face.js +0 -110
  95. package/dist/math/aabb-face/face.js.map +0 -1
  96. package/dist/math/aabb-face/face.test.js +0 -94
  97. package/dist/math/aabb-face/face.test.js.map +0 -1
  98. package/dist/math/box/box.d.ts +0 -50
  99. package/dist/math/box/box.js +0 -23
  100. package/dist/math/box/box.js.map +0 -1
  101. package/dist/math/face/face.d.ts +0 -51
  102. package/dist/math/face/face.js +0 -110
  103. package/dist/math/face/face.js.map +0 -1
  104. package/dist/math/face/face.test.js +0 -94
  105. package/dist/math/face/face.test.js.map +0 -1
  106. package/dist/math/picking/face.js +0 -2
  107. package/dist/math/picking/face.js.map +0 -1
  108. package/dist/math/picking/getClosestEntityToLine.d.ts +0 -4
  109. package/dist/math/picking/getClosestEntityToLine.js +0 -29
  110. package/dist/math/picking/getClosestEntityToLine.js.map +0 -1
  111. package/dist/math/picking/getClosestEntityToPoint.d.ts +0 -4
  112. package/dist/math/picking/getClosestEntityToPoint.js +0 -27
  113. package/dist/math/picking/getClosestEntityToPoint.js.map +0 -1
  114. package/dist/math/picking/getIntersectingEntities.d.ts +0 -12
  115. package/dist/math/picking/getIntersectingEntities.js +0 -15
  116. package/dist/math/picking/getIntersectingEntities.js.map +0 -1
  117. package/dist/math/transform/debug-inverse.d.ts +0 -1
  118. package/dist/math/transform/debug-inverse.js +0 -28
  119. package/dist/math/transform/debug-inverse.js.map +0 -1
  120. package/dist/math/transform/debug-quat.d.ts +0 -1
  121. package/dist/math/transform/debug-quat.js +0 -23
  122. package/dist/math/transform/debug-quat.js.map +0 -1
  123. package/dist/math/transform/debug-test.d.ts +0 -1
  124. package/dist/math/transform/debug-test.js +0 -34
  125. package/dist/math/transform/debug-test.js.map +0 -1
  126. package/dist/math/transform/transform.d.ts +0 -58
  127. package/dist/math/transform/transform.js +0 -101
  128. package/dist/math/transform/transform.js.map +0 -1
  129. package/dist/math/transform/transform.test.d.ts +0 -1
  130. package/dist/math/transform/transform.test.js +0 -309
  131. package/dist/math/transform/transform.test.js.map +0 -1
  132. /package/dist/ecs/database/{transactional-store/entity-id-preservation.test.d.ts → applied/create-applied-database.test.d.ts} +0 -0
  133. /package/dist/{math/aabb-face/face.test.d.ts → ecs/database/reconciling/create-applied-database.test.d.ts} +0 -0
  134. /package/dist/{math/face/face.test.d.ts → ecs/database/replicate.test.d.ts} +0 -0
  135. /package/dist/{math/picking/face.d.ts → table/compact-table.test.d.ts} +0 -0
@@ -1,309 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { Transform } from "./transform.js";
3
- import { Vec3 } from "../vec3/vec3.js";
4
- import { Quat } from "../quat/quat.js";
5
- import { Mat4x4 } from "../mat4x4/mat4x4.js";
6
- const EPSILON = 1e-6;
7
- const expectVec3Close = (a, b, epsilon = EPSILON) => {
8
- expect(Math.abs(a[0] - b[0])).toBeLessThan(epsilon);
9
- expect(Math.abs(a[1] - b[1])).toBeLessThan(epsilon);
10
- expect(Math.abs(a[2] - b[2])).toBeLessThan(epsilon);
11
- };
12
- describe("Transform", () => {
13
- describe("identity transform", () => {
14
- it("should not change a point when applying identity transform", () => {
15
- const point = [1, 2, 3];
16
- const result = Transform.transform(Transform.identity, point);
17
- expectVec3Close(result, point);
18
- });
19
- it("should match matrix transformation for identity", () => {
20
- const point = [1, 2, 3];
21
- const matrix = Transform.toMatrix(Transform.identity);
22
- const matrixResult = Mat4x4.multiplyVec3(matrix, point);
23
- const directResult = Transform.transform(Transform.identity, point);
24
- expectVec3Close(directResult, matrixResult);
25
- });
26
- });
27
- describe("translation only", () => {
28
- it("should translate a point correctly", () => {
29
- const transform = {
30
- position: [5, -3, 2],
31
- rotation: Quat.identity,
32
- scale: Vec3.one,
33
- };
34
- const point = [1, 2, 3];
35
- const result = Transform.transform(transform, point);
36
- expectVec3Close(result, [6, -1, 5]);
37
- });
38
- it("should match matrix transformation for translation", () => {
39
- const transform = {
40
- position: [5, -3, 2],
41
- rotation: Quat.identity,
42
- scale: Vec3.one,
43
- };
44
- const point = [1, 2, 3];
45
- const matrix = Transform.toMatrix(transform);
46
- const matrixResult = Mat4x4.multiplyVec3(matrix, point);
47
- const directResult = Transform.transform(transform, point);
48
- expectVec3Close(directResult, matrixResult);
49
- });
50
- });
51
- describe("scale only", () => {
52
- it("should scale a point correctly", () => {
53
- const transform = {
54
- position: Vec3.zero,
55
- rotation: Quat.identity,
56
- scale: [2, 3, 0.5],
57
- };
58
- const point = [1, 2, 4];
59
- const result = Transform.transform(transform, point);
60
- expectVec3Close(result, [2, 6, 2]);
61
- });
62
- it("should match matrix transformation for scale", () => {
63
- const transform = {
64
- position: Vec3.zero,
65
- rotation: Quat.identity,
66
- scale: [2, 3, 0.5],
67
- };
68
- const point = [1, 2, 4];
69
- const matrix = Transform.toMatrix(transform);
70
- const matrixResult = Mat4x4.multiplyVec3(matrix, point);
71
- const directResult = Transform.transform(transform, point);
72
- expectVec3Close(directResult, matrixResult);
73
- });
74
- });
75
- describe("rotation only", () => {
76
- it("should rotate a point 90 degrees around Z axis", () => {
77
- const transform = {
78
- position: Vec3.zero,
79
- rotation: Quat.fromAxisAngle([0, 0, 1], Math.PI / 2),
80
- scale: Vec3.one,
81
- };
82
- const point = [1, 0, 0];
83
- const result = Transform.transform(transform, point);
84
- expectVec3Close(result, [0, 1, 0]);
85
- });
86
- it("should rotate a point 90 degrees around Y axis", () => {
87
- const transform = {
88
- position: Vec3.zero,
89
- rotation: Quat.fromAxisAngle([0, 1, 0], Math.PI / 2),
90
- scale: Vec3.one,
91
- };
92
- const point = [1, 0, 0];
93
- const result = Transform.transform(transform, point);
94
- expectVec3Close(result, [0, 0, -1]);
95
- });
96
- it("should match matrix transformation for rotation", () => {
97
- const transform = {
98
- position: Vec3.zero,
99
- rotation: Quat.fromAxisAngle([0, 0, 1], Math.PI / 2),
100
- scale: Vec3.one,
101
- };
102
- const point = [1, 2, 3];
103
- const matrix = Transform.toMatrix(transform);
104
- const matrixResult = Mat4x4.multiplyVec3(matrix, point);
105
- const directResult = Transform.transform(transform, point);
106
- expectVec3Close(directResult, matrixResult);
107
- });
108
- });
109
- describe("combined transformations", () => {
110
- it("should apply scale, rotation, and translation in correct order", () => {
111
- const transform = {
112
- position: [10, 20, 30],
113
- rotation: Quat.fromAxisAngle([0, 0, 1], Math.PI / 2),
114
- scale: [2, 2, 2],
115
- };
116
- const point = [1, 0, 0];
117
- const result = Transform.transform(transform, point);
118
- // Scale: [2, 0, 0]
119
- // Rotate 90° around Z: [0, 2, 0]
120
- // Translate: [10, 22, 30]
121
- expectVec3Close(result, [10, 22, 30]);
122
- });
123
- it("should match matrix transformation for complex transform", () => {
124
- const transform = {
125
- position: [5, -3, 7],
126
- rotation: Quat.fromAxisAngle([1, 1, 0], Math.PI / 4),
127
- scale: [2, 0.5, 3],
128
- };
129
- const point = [1, 2, 3];
130
- const matrix = Transform.toMatrix(transform);
131
- const matrixResult = Mat4x4.multiplyVec3(matrix, point);
132
- const directResult = Transform.transform(transform, point);
133
- expectVec3Close(directResult, matrixResult);
134
- });
135
- it("should match matrix transformation with arbitrary rotation", () => {
136
- const transform = {
137
- position: [-2, 4, -1],
138
- rotation: Quat.fromEuler(0.5, 1.2, -0.3),
139
- scale: [1.5, 0.8, 2.2],
140
- };
141
- const point = [3, -1, 2];
142
- const matrix = Transform.toMatrix(transform);
143
- const matrixResult = Mat4x4.multiplyVec3(matrix, point);
144
- const directResult = Transform.transform(transform, point);
145
- expectVec3Close(directResult, matrixResult);
146
- });
147
- });
148
- describe("multiple points consistency", () => {
149
- it("should consistently match matrix transformation for various points", () => {
150
- const transform = {
151
- position: [1, 2, 3],
152
- rotation: Quat.fromAxisAngle([1, 0.5, 0.3], 1.5),
153
- scale: [2, 1.5, 0.75],
154
- };
155
- const testPoints = [
156
- [0, 0, 0],
157
- [1, 0, 0],
158
- [0, 1, 0],
159
- [0, 0, 1],
160
- [1, 1, 1],
161
- [-1, -1, -1],
162
- [5, -3, 2],
163
- [0.1, 0.2, 0.3],
164
- ];
165
- const matrix = Transform.toMatrix(transform);
166
- for (const point of testPoints) {
167
- const matrixResult = Mat4x4.multiplyVec3(matrix, point);
168
- const directResult = Transform.transform(transform, point);
169
- expectVec3Close(directResult, matrixResult);
170
- }
171
- });
172
- });
173
- describe("edge cases", () => {
174
- it("should handle zero point", () => {
175
- const transform = {
176
- position: [1, 2, 3],
177
- rotation: Quat.fromAxisAngle([0, 1, 0], Math.PI / 4),
178
- scale: [2, 3, 4],
179
- };
180
- const point = [0, 0, 0];
181
- const matrix = Transform.toMatrix(transform);
182
- const matrixResult = Mat4x4.multiplyVec3(matrix, point);
183
- const directResult = Transform.transform(transform, point);
184
- expectVec3Close(directResult, matrixResult);
185
- });
186
- it("should handle zero scale components", () => {
187
- const transform = {
188
- position: [1, 2, 3],
189
- rotation: Quat.fromAxisAngle([0, 1, 0], Math.PI / 4),
190
- scale: [0, 1, 1],
191
- };
192
- const point = [5, 5, 5];
193
- const matrix = Transform.toMatrix(transform);
194
- const matrixResult = Mat4x4.multiplyVec3(matrix, point);
195
- const directResult = Transform.transform(transform, point);
196
- expectVec3Close(directResult, matrixResult);
197
- });
198
- it("should handle negative scale", () => {
199
- const transform = {
200
- position: [0, 0, 0],
201
- rotation: Quat.identity,
202
- scale: [-1, 1, -1],
203
- };
204
- const point = [1, 2, 3];
205
- const matrix = Transform.toMatrix(transform);
206
- const matrixResult = Mat4x4.multiplyVec3(matrix, point);
207
- const directResult = Transform.transform(transform, point);
208
- expectVec3Close(directResult, matrixResult);
209
- });
210
- });
211
- describe("transformInverse", () => {
212
- it("should be the inverse of transform for identity", () => {
213
- const point = [1, 2, 3];
214
- const transformed = Transform.transform(Transform.identity, point);
215
- const result = Transform.transformInverse(Transform.identity, transformed);
216
- expectVec3Close(result, point);
217
- });
218
- it("should be the inverse of transform for translation only", () => {
219
- const transform = {
220
- position: [5, -3, 2],
221
- rotation: Quat.identity,
222
- scale: Vec3.one,
223
- };
224
- const point = [1, 2, 3];
225
- const transformed = Transform.transform(transform, point);
226
- const result = Transform.transformInverse(transform, transformed);
227
- expectVec3Close(result, point);
228
- });
229
- it("should be the inverse of transform for scale only", () => {
230
- const transform = {
231
- position: Vec3.zero,
232
- rotation: Quat.identity,
233
- scale: [2, 3, 0.5],
234
- };
235
- const point = [1, 2, 4];
236
- const transformed = Transform.transform(transform, point);
237
- const result = Transform.transformInverse(transform, transformed);
238
- expectVec3Close(result, point);
239
- });
240
- it("should be the inverse of transform for rotation only", () => {
241
- const transform = {
242
- position: Vec3.zero,
243
- rotation: Quat.fromAxisAngle([0, 0, 1], Math.PI / 2),
244
- scale: Vec3.one,
245
- };
246
- const point = [1, 2, 3];
247
- const transformed = Transform.transform(transform, point);
248
- const result = Transform.transformInverse(transform, transformed);
249
- expectVec3Close(result, point);
250
- });
251
- it("should be the inverse of transform for combined transformations", () => {
252
- const transform = {
253
- position: [5, -3, 7],
254
- rotation: Quat.fromAxisAngle([1, 1, 0], Math.PI / 4),
255
- scale: [2, 0.5, 3],
256
- };
257
- const point = [1, 2, 3];
258
- const transformed = Transform.transform(transform, point);
259
- const result = Transform.transformInverse(transform, transformed);
260
- expectVec3Close(result, point);
261
- });
262
- it("should handle multiple points correctly", () => {
263
- const transform = {
264
- position: [1, 2, 3],
265
- rotation: Quat.fromEuler(0.5, 1.2, -0.3),
266
- scale: [2, 1.5, 0.75],
267
- };
268
- const testPoints = [
269
- [0, 0, 0],
270
- [1, 0, 0],
271
- [0, 1, 0],
272
- [0, 0, 1],
273
- [1, 1, 1],
274
- [-1, -1, -1],
275
- [5, -3, 2],
276
- ];
277
- for (const point of testPoints) {
278
- const transformed = Transform.transform(transform, point);
279
- const result = Transform.transformInverse(transform, transformed);
280
- expectVec3Close(result, point);
281
- }
282
- });
283
- it("should match inverse matrix transformation", () => {
284
- const transform = {
285
- position: [2, -1, 3],
286
- rotation: Quat.fromAxisAngle([1, 0, 1], 0.8),
287
- scale: [1.5, 2, 0.8],
288
- };
289
- const point = [3, -1, 2];
290
- const matrix = Transform.toMatrix(transform);
291
- const inverseMatrix = Mat4x4.inverse(matrix);
292
- const matrixResult = Mat4x4.multiplyVec3(inverseMatrix, point);
293
- const directResult = Transform.transformInverse(transform, point);
294
- expectVec3Close(directResult, matrixResult);
295
- });
296
- it("should handle negative scale", () => {
297
- const transform = {
298
- position: [1, 2, 3],
299
- rotation: Quat.fromAxisAngle([0, 1, 0], Math.PI / 6),
300
- scale: [-2, 1, -1],
301
- };
302
- const point = [4, 5, 6];
303
- const transformed = Transform.transform(transform, point);
304
- const result = Transform.transformInverse(transform, transformed);
305
- expectVec3Close(result, point);
306
- });
307
- });
308
- });
309
- //# sourceMappingURL=transform.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform.test.js","sourceRoot":"","sources":["../../../src/math/transform/transform.test.ts"],"names":[],"mappings":"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"}