driftdetect-galaxy 0.4.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 (149) hide show
  1. package/dist/audio/index.d.ts +8 -0
  2. package/dist/audio/index.d.ts.map +1 -0
  3. package/dist/audio/index.js +8 -0
  4. package/dist/audio/index.js.map +1 -0
  5. package/dist/audio/sound-effects.d.ts +78 -0
  6. package/dist/audio/sound-effects.d.ts.map +1 -0
  7. package/dist/audio/sound-effects.js +660 -0
  8. package/dist/audio/sound-effects.js.map +1 -0
  9. package/dist/audio/useGalaxySound.d.ts +70 -0
  10. package/dist/audio/useGalaxySound.d.ts.map +1 -0
  11. package/dist/audio/useGalaxySound.js +127 -0
  12. package/dist/audio/useGalaxySound.js.map +1 -0
  13. package/dist/components/canvas/GalaxyCamera.d.ts +16 -0
  14. package/dist/components/canvas/GalaxyCamera.d.ts.map +1 -0
  15. package/dist/components/canvas/GalaxyCamera.js +74 -0
  16. package/dist/components/canvas/GalaxyCamera.js.map +1 -0
  17. package/dist/components/canvas/GalaxyCanvas.d.ts +16 -0
  18. package/dist/components/canvas/GalaxyCanvas.d.ts.map +1 -0
  19. package/dist/components/canvas/GalaxyCanvas.js +104 -0
  20. package/dist/components/canvas/GalaxyCanvas.js.map +1 -0
  21. package/dist/components/canvas/GalaxyLighting.d.ts +8 -0
  22. package/dist/components/canvas/GalaxyLighting.d.ts.map +1 -0
  23. package/dist/components/canvas/GalaxyLighting.js +36 -0
  24. package/dist/components/canvas/GalaxyLighting.js.map +1 -0
  25. package/dist/components/canvas/index.d.ts +11 -0
  26. package/dist/components/canvas/index.d.ts.map +1 -0
  27. package/dist/components/canvas/index.js +9 -0
  28. package/dist/components/canvas/index.js.map +1 -0
  29. package/dist/components/connections/DataPathLane.d.ts +26 -0
  30. package/dist/components/connections/DataPathLane.d.ts.map +1 -0
  31. package/dist/components/connections/DataPathLane.js +71 -0
  32. package/dist/components/connections/DataPathLane.js.map +1 -0
  33. package/dist/components/connections/TableRelationship.d.ts +19 -0
  34. package/dist/components/connections/TableRelationship.d.ts.map +1 -0
  35. package/dist/components/connections/TableRelationship.js +46 -0
  36. package/dist/components/connections/TableRelationship.js.map +1 -0
  37. package/dist/components/connections/index.d.ts +10 -0
  38. package/dist/components/connections/index.d.ts.map +1 -0
  39. package/dist/components/connections/index.js +8 -0
  40. package/dist/components/connections/index.js.map +1 -0
  41. package/dist/components/effects/AccessPulse.d.ts +23 -0
  42. package/dist/components/effects/AccessPulse.d.ts.map +1 -0
  43. package/dist/components/effects/AccessPulse.js +72 -0
  44. package/dist/components/effects/AccessPulse.js.map +1 -0
  45. package/dist/components/effects/GalaxyBloom.d.ts +8 -0
  46. package/dist/components/effects/GalaxyBloom.d.ts.map +1 -0
  47. package/dist/components/effects/GalaxyBloom.js +23 -0
  48. package/dist/components/effects/GalaxyBloom.js.map +1 -0
  49. package/dist/components/effects/StarField.d.ts +18 -0
  50. package/dist/components/effects/StarField.d.ts.map +1 -0
  51. package/dist/components/effects/StarField.js +86 -0
  52. package/dist/components/effects/StarField.js.map +1 -0
  53. package/dist/components/effects/index.d.ts +11 -0
  54. package/dist/components/effects/index.d.ts.map +1 -0
  55. package/dist/components/effects/index.js +9 -0
  56. package/dist/components/effects/index.js.map +1 -0
  57. package/dist/components/index.d.ts +11 -0
  58. package/dist/components/index.d.ts.map +1 -0
  59. package/dist/components/index.js +16 -0
  60. package/dist/components/index.js.map +1 -0
  61. package/dist/components/nodes/EntryPointStation.d.ts +22 -0
  62. package/dist/components/nodes/EntryPointStation.d.ts.map +1 -0
  63. package/dist/components/nodes/EntryPointStation.js +120 -0
  64. package/dist/components/nodes/EntryPointStation.js.map +1 -0
  65. package/dist/components/nodes/FieldMoon.d.ts +30 -0
  66. package/dist/components/nodes/FieldMoon.d.ts.map +1 -0
  67. package/dist/components/nodes/FieldMoon.js +92 -0
  68. package/dist/components/nodes/FieldMoon.js.map +1 -0
  69. package/dist/components/nodes/TablePlanet.d.ts +22 -0
  70. package/dist/components/nodes/TablePlanet.d.ts.map +1 -0
  71. package/dist/components/nodes/TablePlanet.js +101 -0
  72. package/dist/components/nodes/TablePlanet.js.map +1 -0
  73. package/dist/components/nodes/index.d.ts +12 -0
  74. package/dist/components/nodes/index.d.ts.map +1 -0
  75. package/dist/components/nodes/index.js +9 -0
  76. package/dist/components/nodes/index.js.map +1 -0
  77. package/dist/components/ui/ControlsPanel.d.ts +7 -0
  78. package/dist/components/ui/ControlsPanel.d.ts.map +1 -0
  79. package/dist/components/ui/ControlsPanel.js +59 -0
  80. package/dist/components/ui/ControlsPanel.js.map +1 -0
  81. package/dist/components/ui/DetailsPanel.d.ts +8 -0
  82. package/dist/components/ui/DetailsPanel.d.ts.map +1 -0
  83. package/dist/components/ui/DetailsPanel.js +44 -0
  84. package/dist/components/ui/DetailsPanel.js.map +1 -0
  85. package/dist/components/ui/SearchOverlay.d.ts +7 -0
  86. package/dist/components/ui/SearchOverlay.d.ts.map +1 -0
  87. package/dist/components/ui/SearchOverlay.js +68 -0
  88. package/dist/components/ui/SearchOverlay.js.map +1 -0
  89. package/dist/components/ui/SecurityPanel.d.ts +8 -0
  90. package/dist/components/ui/SecurityPanel.d.ts.map +1 -0
  91. package/dist/components/ui/SecurityPanel.js +65 -0
  92. package/dist/components/ui/SecurityPanel.js.map +1 -0
  93. package/dist/components/ui/StatsOverlay.d.ts +7 -0
  94. package/dist/components/ui/StatsOverlay.d.ts.map +1 -0
  95. package/dist/components/ui/StatsOverlay.js +29 -0
  96. package/dist/components/ui/StatsOverlay.js.map +1 -0
  97. package/dist/components/ui/index.d.ts +11 -0
  98. package/dist/components/ui/index.d.ts.map +1 -0
  99. package/dist/components/ui/index.js +11 -0
  100. package/dist/components/ui/index.js.map +1 -0
  101. package/dist/constants/index.d.ts +244 -0
  102. package/dist/constants/index.d.ts.map +1 -0
  103. package/dist/constants/index.js +289 -0
  104. package/dist/constants/index.js.map +1 -0
  105. package/dist/hooks/index.d.ts +10 -0
  106. package/dist/hooks/index.d.ts.map +1 -0
  107. package/dist/hooks/index.js +8 -0
  108. package/dist/hooks/index.js.map +1 -0
  109. package/dist/hooks/useAccessStream.d.ts +23 -0
  110. package/dist/hooks/useAccessStream.d.ts.map +1 -0
  111. package/dist/hooks/useAccessStream.js +86 -0
  112. package/dist/hooks/useAccessStream.js.map +1 -0
  113. package/dist/hooks/useGalaxyData.d.ts +83 -0
  114. package/dist/hooks/useGalaxyData.d.ts.map +1 -0
  115. package/dist/hooks/useGalaxyData.js +176 -0
  116. package/dist/hooks/useGalaxyData.js.map +1 -0
  117. package/dist/index.d.ts +28 -0
  118. package/dist/index.d.ts.map +1 -0
  119. package/dist/index.js +38 -0
  120. package/dist/index.js.map +1 -0
  121. package/dist/store/galaxy-store.d.ts +85 -0
  122. package/dist/store/galaxy-store.d.ts.map +1 -0
  123. package/dist/store/galaxy-store.js +254 -0
  124. package/dist/store/galaxy-store.js.map +1 -0
  125. package/dist/store/index.d.ts +5 -0
  126. package/dist/store/index.d.ts.map +1 -0
  127. package/dist/store/index.js +5 -0
  128. package/dist/store/index.js.map +1 -0
  129. package/dist/types/index.d.ts +337 -0
  130. package/dist/types/index.d.ts.map +1 -0
  131. package/dist/types/index.js +8 -0
  132. package/dist/types/index.js.map +1 -0
  133. package/dist/utils/color-utils.d.ts +100 -0
  134. package/dist/utils/color-utils.d.ts.map +1 -0
  135. package/dist/utils/color-utils.js +217 -0
  136. package/dist/utils/color-utils.js.map +1 -0
  137. package/dist/utils/geometry-utils.d.ts +97 -0
  138. package/dist/utils/geometry-utils.d.ts.map +1 -0
  139. package/dist/utils/geometry-utils.js +245 -0
  140. package/dist/utils/geometry-utils.js.map +1 -0
  141. package/dist/utils/index.d.ts +7 -0
  142. package/dist/utils/index.d.ts.map +1 -0
  143. package/dist/utils/index.js +7 -0
  144. package/dist/utils/index.js.map +1 -0
  145. package/dist/utils/layout-engine.d.ts +40 -0
  146. package/dist/utils/layout-engine.d.ts.map +1 -0
  147. package/dist/utils/layout-engine.js +343 -0
  148. package/dist/utils/layout-engine.js.map +1 -0
  149. package/package.json +58 -0
@@ -0,0 +1,343 @@
1
+ /**
2
+ * Layout Engine
3
+ *
4
+ * Force-directed layout algorithm for positioning tables in 3D space.
5
+ * Groups tables by domain clusters and applies physics simulation.
6
+ */
7
+ import { GALAXY_LAYOUT, DOMAIN_CLUSTERS } from '../constants/index.js';
8
+ // ============================================================================
9
+ // Cluster Detection
10
+ // ============================================================================
11
+ /**
12
+ * Detect which cluster a table belongs to based on its name
13
+ */
14
+ export function detectCluster(tableName) {
15
+ const name = tableName.toLowerCase();
16
+ for (const [cluster, keywords] of Object.entries(DOMAIN_CLUSTERS)) {
17
+ if (keywords.some((keyword) => name.includes(keyword))) {
18
+ return cluster;
19
+ }
20
+ }
21
+ return 'other';
22
+ }
23
+ /**
24
+ * Group tables by cluster
25
+ */
26
+ export function groupByCluster(tables) {
27
+ const groups = new Map();
28
+ for (const table of tables) {
29
+ const cluster = table.cluster || detectCluster(table.name);
30
+ const existing = groups.get(cluster) || [];
31
+ groups.set(cluster, [...existing, table]);
32
+ }
33
+ return groups;
34
+ }
35
+ // ============================================================================
36
+ // Force Simulation
37
+ // ============================================================================
38
+ /**
39
+ * Apply repulsion force between nodes
40
+ */
41
+ function applyRepulsion(nodes, strength) {
42
+ for (let i = 0; i < nodes.length; i++) {
43
+ for (let j = i + 1; j < nodes.length; j++) {
44
+ const a = nodes[i];
45
+ const b = nodes[j];
46
+ if (a.fixed && b.fixed)
47
+ continue;
48
+ const dx = b.x - a.x;
49
+ const dy = b.y - a.y;
50
+ const dz = b.z - a.z;
51
+ const dist = Math.sqrt(dx * dx + dy * dy + dz * dz) || 0.1;
52
+ // Stronger repulsion for same cluster
53
+ const clusterMultiplier = a.cluster === b.cluster ? 0.5 : 1;
54
+ const force = (strength * clusterMultiplier) / (dist * dist);
55
+ const fx = (dx / dist) * force;
56
+ const fy = (dy / dist) * force;
57
+ const fz = (dz / dist) * force;
58
+ if (!a.fixed) {
59
+ a.vx -= fx / a.mass;
60
+ a.vy -= fy / a.mass;
61
+ a.vz -= fz / a.mass;
62
+ }
63
+ if (!b.fixed) {
64
+ b.vx += fx / b.mass;
65
+ b.vy += fy / b.mass;
66
+ b.vz += fz / b.mass;
67
+ }
68
+ }
69
+ }
70
+ }
71
+ /**
72
+ * Apply attraction force along links
73
+ */
74
+ function applyAttraction(nodes, links, distance) {
75
+ const nodeMap = new Map(nodes.map((n) => [n.id, n]));
76
+ for (const link of links) {
77
+ const source = nodeMap.get(link.source);
78
+ const target = nodeMap.get(link.target);
79
+ if (!source || !target)
80
+ continue;
81
+ if (source.fixed && target.fixed)
82
+ continue;
83
+ const dx = target.x - source.x;
84
+ const dy = target.y - source.y;
85
+ const dz = target.z - source.z;
86
+ const dist = Math.sqrt(dx * dx + dy * dy + dz * dz) || 0.1;
87
+ const force = (dist - distance) * link.strength * 0.1;
88
+ const fx = (dx / dist) * force;
89
+ const fy = (dy / dist) * force;
90
+ const fz = (dz / dist) * force;
91
+ if (!source.fixed) {
92
+ source.vx += fx / source.mass;
93
+ source.vy += fy / source.mass;
94
+ source.vz += fz / source.mass;
95
+ }
96
+ if (!target.fixed) {
97
+ target.vx -= fx / target.mass;
98
+ target.vy -= fy / target.mass;
99
+ target.vz -= fz / target.mass;
100
+ }
101
+ }
102
+ }
103
+ /**
104
+ * Apply cluster centering force
105
+ */
106
+ function applyClusterCentering(nodes, clusterCenters, strength) {
107
+ for (const node of nodes) {
108
+ if (node.fixed)
109
+ continue;
110
+ const center = clusterCenters.get(node.cluster);
111
+ if (!center)
112
+ continue;
113
+ const dx = center.x - node.x;
114
+ const dy = center.y - node.y;
115
+ const dz = center.z - node.z;
116
+ node.vx += dx * strength;
117
+ node.vy += dy * strength;
118
+ node.vz += dz * strength;
119
+ }
120
+ }
121
+ /**
122
+ * Apply velocity and damping
123
+ */
124
+ function applyVelocity(nodes, damping) {
125
+ for (const node of nodes) {
126
+ if (node.fixed)
127
+ continue;
128
+ node.x += node.vx;
129
+ node.y += node.vy;
130
+ node.z += node.vz;
131
+ node.vx *= damping;
132
+ node.vy *= damping;
133
+ node.vz *= damping;
134
+ }
135
+ }
136
+ /**
137
+ * Constrain nodes to galaxy bounds
138
+ */
139
+ function constrainToBounds(nodes, radius, height) {
140
+ for (const node of nodes) {
141
+ const dist = Math.sqrt(node.x * node.x + node.z * node.z);
142
+ if (dist > radius) {
143
+ const scale = radius / dist;
144
+ node.x *= scale;
145
+ node.z *= scale;
146
+ }
147
+ node.y = Math.max(-height / 2, Math.min(height / 2, node.y));
148
+ }
149
+ }
150
+ // ============================================================================
151
+ // Main Layout Function
152
+ // ============================================================================
153
+ /**
154
+ * Calculate cluster center positions
155
+ */
156
+ function calculateClusterCenters(clusters) {
157
+ const centers = new Map();
158
+ const angleStep = (2 * Math.PI) / clusters.length;
159
+ const radius = GALAXY_LAYOUT.RADIUS * 0.6;
160
+ clusters.forEach((cluster, i) => {
161
+ const angle = i * angleStep;
162
+ centers.set(cluster, {
163
+ x: Math.cos(angle) * radius,
164
+ y: (Math.random() - 0.5) * GALAXY_LAYOUT.HEIGHT * 0.3,
165
+ z: Math.sin(angle) * radius,
166
+ });
167
+ });
168
+ return centers;
169
+ }
170
+ /**
171
+ * Initialize node positions
172
+ */
173
+ function initializeNodes(tables, clusterCenters) {
174
+ return tables.map((table) => {
175
+ const cluster = table.cluster || detectCluster(table.name);
176
+ const center = clusterCenters.get(cluster) || { x: 0, y: 0, z: 0 };
177
+ // Start near cluster center with some randomness
178
+ const spread = GALAXY_LAYOUT.CLUSTER_SEPARATION * 0.3;
179
+ return {
180
+ id: table.id,
181
+ x: center.x + (Math.random() - 0.5) * spread,
182
+ y: center.y + (Math.random() - 0.5) * spread,
183
+ z: center.z + (Math.random() - 0.5) * spread,
184
+ vx: 0,
185
+ vy: 0,
186
+ vz: 0,
187
+ mass: 1 + Math.log10(table.accessCount + 1),
188
+ cluster,
189
+ fixed: false,
190
+ };
191
+ });
192
+ }
193
+ /**
194
+ * Create links from relationships
195
+ */
196
+ function createLinks(relationships) {
197
+ return relationships.map((rel) => ({
198
+ source: rel.sourceTableId,
199
+ target: rel.targetTableId,
200
+ strength: rel.type === 'one-to-one' ? 1 : 0.5,
201
+ }));
202
+ }
203
+ /**
204
+ * Position entry points around the galaxy edge
205
+ */
206
+ function positionEntryPoints(entryPoints, tables, tablePositions) {
207
+ const positions = new Map();
208
+ const radius = GALAXY_LAYOUT.RADIUS + 15;
209
+ // Group entry points by their primary reachable table cluster
210
+ const grouped = new Map();
211
+ for (const ep of entryPoints) {
212
+ // Find the most common cluster among reachable tables
213
+ const clusterCounts = new Map();
214
+ for (const tableId of ep.reachableTables) {
215
+ const table = tables.find((t) => t.id === tableId);
216
+ if (table) {
217
+ const cluster = table.cluster || detectCluster(table.name);
218
+ clusterCounts.set(cluster, (clusterCounts.get(cluster) || 0) + 1);
219
+ }
220
+ }
221
+ let maxCluster = 'other';
222
+ let maxCount = 0;
223
+ for (const [cluster, count] of clusterCounts) {
224
+ if (count > maxCount) {
225
+ maxCluster = cluster;
226
+ maxCount = count;
227
+ }
228
+ }
229
+ const existing = grouped.get(maxCluster) || [];
230
+ grouped.set(maxCluster, [...existing, ep]);
231
+ }
232
+ // Position each group
233
+ let globalIndex = 0;
234
+ for (const [_cluster, eps] of grouped) {
235
+ for (let i = 0; i < eps.length; i++) {
236
+ const angle = (globalIndex / entryPoints.length) * 2 * Math.PI;
237
+ const height = (Math.random() - 0.5) * GALAXY_LAYOUT.HEIGHT;
238
+ positions.set(eps[i].id, {
239
+ x: Math.cos(angle) * radius,
240
+ y: height,
241
+ z: Math.sin(angle) * radius,
242
+ });
243
+ globalIndex++;
244
+ }
245
+ }
246
+ return positions;
247
+ }
248
+ /**
249
+ * Main layout calculation
250
+ */
251
+ export function calculateLayout(tables, entryPoints, relationships) {
252
+ // Get unique clusters
253
+ const clusters = [...new Set(tables.map((t) => t.cluster || detectCluster(t.name)))];
254
+ // Calculate cluster centers
255
+ const clusterCenters = calculateClusterCenters(clusters);
256
+ // Initialize nodes
257
+ const nodes = initializeNodes(tables, clusterCenters);
258
+ // Create links
259
+ const links = createLinks(relationships);
260
+ // Run simulation
261
+ const iterations = GALAXY_LAYOUT.SIMULATION_ITERATIONS;
262
+ const damping = 0.9;
263
+ for (let i = 0; i < iterations; i++) {
264
+ const alpha = 1 - i / iterations;
265
+ applyRepulsion(nodes, GALAXY_LAYOUT.FORCE_STRENGTH * alpha);
266
+ applyAttraction(nodes, links, GALAXY_LAYOUT.LINK_DISTANCE);
267
+ applyClusterCentering(nodes, clusterCenters, 0.05 * alpha);
268
+ applyVelocity(nodes, damping);
269
+ constrainToBounds(nodes, GALAXY_LAYOUT.RADIUS, GALAXY_LAYOUT.HEIGHT);
270
+ }
271
+ // Extract final positions
272
+ const tablePositions = new Map();
273
+ for (const node of nodes) {
274
+ tablePositions.set(node.id, { x: node.x, y: node.y, z: node.z });
275
+ }
276
+ // Position entry points
277
+ const entryPointPositions = positionEntryPoints(entryPoints, tables, tablePositions);
278
+ return {
279
+ tables: tablePositions,
280
+ entryPoints: entryPointPositions,
281
+ clusters: clusterCenters,
282
+ };
283
+ }
284
+ /**
285
+ * Apply layout to galaxy data (mutates positions)
286
+ */
287
+ export function applyLayout(tables, entryPoints, relationships) {
288
+ const layout = calculateLayout(tables, entryPoints, relationships);
289
+ for (const table of tables) {
290
+ const pos = layout.tables.get(table.id);
291
+ if (pos) {
292
+ table.position = pos;
293
+ }
294
+ }
295
+ for (const ep of entryPoints) {
296
+ const pos = layout.entryPoints.get(ep.id);
297
+ if (pos) {
298
+ ep.position = pos;
299
+ }
300
+ }
301
+ }
302
+ /**
303
+ * Compute galaxy layout and return tables/entryPoints with positions
304
+ */
305
+ export function computeGalaxyLayout(tables, entryPoints, dataPaths) {
306
+ // Create relationships from data paths for layout
307
+ const relationships = [];
308
+ const seenPairs = new Set();
309
+ for (const path of dataPaths) {
310
+ const key = `${path.sourceId}-${path.targetTableId}`;
311
+ if (!seenPairs.has(key)) {
312
+ seenPairs.add(key);
313
+ // Only create relationships between tables
314
+ const sourceTable = tables.find(t => t.id === path.sourceId);
315
+ if (sourceTable) {
316
+ relationships.push({
317
+ id: key,
318
+ sourceTableId: path.sourceId,
319
+ sourceFieldId: '',
320
+ targetTableId: path.targetTableId,
321
+ targetFieldId: '',
322
+ type: 'one-to-many',
323
+ });
324
+ }
325
+ }
326
+ }
327
+ // Calculate layout
328
+ const layout = calculateLayout(tables, entryPoints, relationships);
329
+ // Apply positions to copies
330
+ const tablesWithPositions = tables.map(table => ({
331
+ ...table,
332
+ position: layout.tables.get(table.id),
333
+ }));
334
+ const entryPointsWithPositions = entryPoints.map(ep => ({
335
+ ...ep,
336
+ position: layout.entryPoints.get(ep.id),
337
+ }));
338
+ return {
339
+ tables: tablesWithPositions,
340
+ entryPoints: entryPointsWithPositions,
341
+ };
342
+ }
343
+ //# sourceMappingURL=layout-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-engine.js","sourceRoot":"","sources":["../../src/utils/layout-engine.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "driftdetect-galaxy",
3
+ "version": "0.4.2",
4
+ "description": "3D database galaxy visualization for Drift",
5
+ "license": "MIT",
6
+ "author": "Geoffrey Fernald",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/dadbodgeoff/drift"
10
+ },
11
+ "keywords": [
12
+ "drift",
13
+ "visualization",
14
+ "3d",
15
+ "database",
16
+ "react-three-fiber",
17
+ "security",
18
+ "data-access"
19
+ ],
20
+ "type": "module",
21
+ "main": "./dist/index.js",
22
+ "types": "./dist/index.d.ts",
23
+ "exports": {
24
+ ".": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/index.js"
27
+ }
28
+ },
29
+ "files": [
30
+ "dist"
31
+ ],
32
+ "scripts": {
33
+ "build": "tsc",
34
+ "dev": "tsc --watch",
35
+ "lint": "eslint src --ext .ts,.tsx",
36
+ "typecheck": "tsc --noEmit"
37
+ },
38
+ "dependencies": {
39
+ "@react-three/drei": "^9.92.0",
40
+ "@react-three/fiber": "^8.15.12",
41
+ "@react-three/postprocessing": "^2.15.11",
42
+ "jsfxr": "^1.2.2",
43
+ "three": "^0.160.0",
44
+ "zustand": "^4.4.7"
45
+ },
46
+ "devDependencies": {
47
+ "@types/react": "^18.2.45",
48
+ "@types/react-dom": "^18.2.18",
49
+ "@types/three": "^0.160.0",
50
+ "react": "^18.2.0",
51
+ "react-dom": "^18.2.0",
52
+ "typescript": "^5.3.0"
53
+ },
54
+ "peerDependencies": {
55
+ "react": "^18.2.0",
56
+ "react-dom": "^18.2.0"
57
+ }
58
+ }