Skip to content

Commit c69b57a

Browse files
authored
Merge pull request #147 from pmndrs/refactor/remove-query-class
refactor: remove Query class, streamline internal usage
2 parents 73e0ffa + f659cbe commit c69b57a

File tree

8 files changed

+464
-408
lines changed

8 files changed

+464
-408
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"ship": "pnpm -F koota build && pnpm -F koota test run && pnpm -F koota publish",
1010
"prepublish": "pnpm -F koota build && pnpm -F koota generate-tests",
1111
"test": "pnpm -F core test run && pnpm -F react test run",
12+
"test:build": "pnpm prepublish && pnpm -F koota test run",
1213
"lint": "pnpm -r lint"
1314
},
1415
"devDependencies": {

packages/core/src/query/query-result.ts

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,22 @@ import { shallowEqual } from '../utils/shallow-equal';
77
import type { World } from '../world/world';
88
import { isModifier } from './modifier';
99
import { setChanged } from './modifiers/changed';
10-
import type { Query } from './query';
1110
import type {
1211
InstancesFromParameters,
12+
Query,
1313
QueryParameter,
1414
QueryResult,
1515
QueryResultOptions,
1616
StoresFromParameters,
1717
} from './types';
1818

1919
export function createQueryResult<T extends QueryParameter[]>(
20-
query: Query,
2120
world: World,
22-
params: T
21+
entities: Entity[],
22+
query: Query
2323
): QueryResult<T> {
24-
query.commitRemovals(world);
25-
const entities = query.entities.dense.slice() as Entity[];
26-
27-
// Clear so it can accumulate again.
28-
if (query.isTracking) {
29-
query.entities.clear();
30-
31-
// @todo: Need to improve the performance of this loop.
32-
for (const eid of entities) {
33-
query.resetTrackingBitmasks(eid);
34-
}
35-
}
36-
37-
const stores: Store<any>[] = [];
38-
const traits: Trait[] = [];
39-
40-
// Get the traits for the query parameters in the order they are defined
41-
// and not the order they are sorted for the query hash.
42-
getQueryStores<T>(params, traits, stores, world);
24+
const traits = [...query.resultTraits];
25+
const stores = [...query.resultStores];
4326

4427
const results = Object.assign(entities, {
4528
updateEach(
@@ -236,7 +219,7 @@ export function createQueryResult<T extends QueryParameter[]>(
236219
}
237220
}
238221

239-
/* @inline */ function getQueryStores<T extends QueryParameter[]>(
222+
/* @inline */ export function getQueryStores<T extends QueryParameter[]>(
240223
params: T,
241224
traits: Trait[],
242225
stores: Store<any>[],
@@ -262,3 +245,14 @@ export function createQueryResult<T extends QueryParameter[]>(
262245
}
263246
}
264247
}
248+
249+
export function createEmptyQueryResult(): QueryResult<QueryParameter[]> {
250+
const results = Object.assign([], {
251+
updateEach: () => results,
252+
useStores: () => results,
253+
select: () => results,
254+
sort: () => results,
255+
}) as QueryResult<QueryParameter[]>;
256+
257+
return results;
258+
}

0 commit comments

Comments
 (0)