Skip to content

Commit 2df57eb

Browse files
committed
test
1 parent 4312340 commit 2df57eb

File tree

10 files changed

+146
-143
lines changed

10 files changed

+146
-143
lines changed

apps/meteor/client/lib/cachedCollections/Cursor.ts

+5-9
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { EJSON } from 'meteor/ejson';
22
import { Meteor } from 'meteor/meteor';
33
import type { Filter, Hint, Sort } from 'mongodb';
44

5-
import type { IIdMap } from './IdMap';
5+
import type { IIdMap } from './IIdMap';
66
import { IdMap } from './IdMap';
77
import { LocalCollection } from './LocalCollection';
88
import { Matcher } from './Matcher';
@@ -13,14 +13,10 @@ import type { Query } from './Query';
1313
import { Sorter } from './Sorter';
1414
import { hasOwn } from './common';
1515

16-
export type SortSpecifier = Sort;
17-
1816
type FieldSpecifier = {
1917
[id: string]: number | boolean;
2018
};
2119

22-
export type Selector<T> = Filter<T>;
23-
2420
type Transform<T> = ((doc: T) => any) | null | undefined;
2521

2622
export type DispatchTransform<TTransform, T, TProjection> = TTransform extends (...args: any) => any
@@ -31,7 +27,7 @@ export type DispatchTransform<TTransform, T, TProjection> = TTransform extends (
3127

3228
export type Options<T> = {
3329
/** Sort order (default: natural order) */
34-
sort?: SortSpecifier | undefined;
30+
sort?: Sort | undefined;
3531
/** Number of results to skip at the beginning */
3632
skip?: number | undefined;
3733
/** Maximum number of results to return */
@@ -75,7 +71,7 @@ export class Cursor<T extends { _id: string }, TOptions extends Options<T>, TPro
7571
reactive: boolean | undefined;
7672

7773
// don't call this ctor directly. use LocalCollection.find().
78-
constructor(collection: LocalCollection<T>, selector: Selector<T>, options?: TOptions) {
74+
constructor(collection: LocalCollection<T>, selector: Filter<T>, options?: TOptions) {
7975
this.collection = collection;
8076
this.sorter = null;
8177
this.matcher = new Matcher(selector);
@@ -353,12 +349,12 @@ export class Cursor<T extends { _id: string }, TOptions extends Options<T>, TPro
353349
sorter: null,
354350
};
355351

356-
let qid: number;
352+
let qid: string;
357353

358354
// Non-reactive queries call added[Before] and then never call anything
359355
// else.
360356
if (this.reactive) {
361-
qid = this.collection.next_qid++;
357+
qid = this.collection.claimNextQueryId();
362358
this.collection.queries[qid] = query;
363359
}
364360

apps/meteor/client/lib/cachedCollections/DiffSequence.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { EJSON } from 'meteor/ejson';
22

3-
import type { IIdMap } from './IdMap';
3+
import type { IIdMap } from './IIdMap';
44
import { hasOwn } from './common';
55

66
function isObjEmpty(obj: Record<string, unknown>): boolean {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export interface IIdMap<TId, TValue> {
2+
get(id: TId): TValue | undefined;
3+
set(id: TId, value: TValue): void;
4+
remove(id: TId): void;
5+
has(id: TId): boolean;
6+
empty(): boolean;
7+
clear(): void;
8+
forEach(iterator: (value: TValue, key: TId) => boolean | void): void;
9+
forEachAsync(iterator: (value: TValue, key: TId) => Promise<boolean | void>): Promise<void>;
10+
size(): number;
11+
}

apps/meteor/client/lib/cachedCollections/ILocalCollection.ts

+31-31
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,53 @@
1-
import type { CountDocumentsOptions } from 'mongodb';
1+
import type { CountDocumentsOptions, Filter, UpdateFilter } from 'mongodb';
22

3-
import type { Cursor, Options, Selector, DispatchTransform } from './Cursor';
4-
import type { IIdMap } from './IdMap';
3+
import type { Cursor, Options, DispatchTransform } from './Cursor';
4+
import type { IIdMap } from './IIdMap';
55
import type { Query } from './Query';
66

77
export interface ILocalCollection<T extends { _id: string }> {
88
_docs: IIdMap<T['_id'], T>;
99
_recomputeResults(query: Query<T, Options<T>, any>, snapshot?: IIdMap<T['_id'], T> | T[]): void;
10-
next_qid: number;
10+
// next_qid: number;
1111
queries: Record<string, Query<T, Options<T>, any>>;
1212
paused: boolean;
13-
countDocuments(selector?: Selector<T>, options?: CountDocumentsOptions): Promise<number>;
13+
countDocuments(selector?: Filter<T>, options?: CountDocumentsOptions): Promise<number>;
1414
estimatedDocumentCount(options: CountDocumentsOptions): Promise<number>;
15-
find(selector?: Selector<T>): Cursor<T, Options<T>, T>;
16-
find<O extends Options<T>>(selector?: Selector<T>, options?: O): Cursor<T, O, DispatchTransform<O['transform'], T, T>>;
17-
findOne(selector?: Selector<T>): T | undefined;
18-
findOne<O extends Omit<Options<T>, 'limit'>>(selector?: Selector<T>, options?: O): DispatchTransform<O['transform'], T, T> | undefined;
19-
findOneAsync(selector?: Selector<T>): Promise<T | undefined>;
15+
find(selector?: Filter<T>): Cursor<T, Options<T>, T>;
16+
find<O extends Options<T>>(selector?: Filter<T>, options?: O): Cursor<T, O, DispatchTransform<O['transform'], T, T>>;
17+
findOne(selector?: Filter<T>): T | undefined;
18+
findOne<O extends Omit<Options<T>, 'limit'>>(selector?: Filter<T>, options?: O): DispatchTransform<O['transform'], T, T> | undefined;
19+
findOneAsync(selector?: Filter<T>): Promise<T | undefined>;
2020
findOneAsync<O extends Omit<Options<T>, 'limit'>>(
21-
selector?: Selector<T>,
21+
selector?: Filter<T>,
2222
options?: O,
2323
): Promise<DispatchTransform<O['transform'], T, T> | undefined>;
2424
prepareInsert(doc: T): string;
2525
insert(doc: T, callback?: (error: Error | null, id: string) => void): string;
2626
insertAsync(doc: T, callback?: (error: Error | null, id: string) => void): Promise<string>;
2727
pauseObservers(): void;
2828
clearResultQueries(callback: (error: Error | null, result: number) => void): number;
29-
prepareRemove(selector: Selector<T>): {
29+
prepareRemove(selector: Filter<T>): {
3030
queriesToRecompute: string[];
3131
queryRemove: { qid: string; doc: T }[];
3232
remove: T['_id'][];
3333
};
34-
remove(selector: Selector<T>, callback?: (error: Error | null, result: number) => void): number;
34+
remove(selector: Filter<T>, callback?: (error: Error | null, result: number) => void): number;
3535
resumeObserversServer(): Promise<void>;
3636
resumeObserversClient(): void;
3737
retrieveOriginals(): IIdMap<T['_id'], T | undefined>;
3838
saveOriginals(): void;
39-
prepareUpdate(selector: Selector<T>): Record<string, IIdMap<T['_id'], T> | T[]>;
39+
prepareUpdate(selector: Filter<T>): Record<string, IIdMap<T['_id'], T> | T[]>;
4040
finishUpdate(params: {
4141
options: { _returnObject?: boolean };
4242
updateCount: number;
4343
callback: (error: Error | null, result: number | { numberAffected: number; insertedId?: string }) => void;
4444
insertedId?: string;
4545
selector?: unknown;
46-
mod?: unknown;
46+
mod?: UpdateFilter<T>;
4747
}): { numberAffected: number; insertedId?: string } | number;
4848
updateAsync(
49-
selector: Selector<T>,
50-
mod: unknown,
49+
selector: Filter<T>,
50+
mod: UpdateFilter<T>,
5151
callback: (
5252
error: Error | null,
5353
result:
@@ -59,8 +59,8 @@ export interface ILocalCollection<T extends { _id: string }> {
5959
) => void,
6060
): Promise<{ numberAffected: number; insertedId?: string } | number>;
6161
updateAsync(
62-
selector: Selector<T>,
63-
mod: unknown,
62+
selector: Filter<T>,
63+
mod: UpdateFilter<T>,
6464
options: { multi?: boolean; upsert?: boolean; insertedId?: string; _returnObject?: boolean } | null,
6565
callback: (
6666
error: Error | null,
@@ -73,8 +73,8 @@ export interface ILocalCollection<T extends { _id: string }> {
7373
) => void,
7474
): Promise<{ numberAffected: number; insertedId?: string } | number>;
7575
update(
76-
selector: Selector<T>,
77-
mod: unknown,
76+
selector: Filter<T>,
77+
mod: UpdateFilter<T>,
7878
callback: (
7979
error: Error | null,
8080
result:
@@ -86,8 +86,8 @@ export interface ILocalCollection<T extends { _id: string }> {
8686
) => void,
8787
): { numberAffected: number; insertedId?: string } | number;
8888
update(
89-
selector: Selector<T>,
90-
mod: unknown,
89+
selector: Filter<T>,
90+
mod: UpdateFilter<T>,
9191
options: { multi?: boolean; upsert?: boolean; insertedId?: string; _returnObject?: boolean } | null,
9292
callback: (
9393
error: Error | null,
@@ -100,8 +100,8 @@ export interface ILocalCollection<T extends { _id: string }> {
100100
) => void,
101101
): { numberAffected: number; insertedId?: string } | number;
102102
upsert(
103-
selector: Selector<T>,
104-
mod: unknown,
103+
selector: Filter<T>,
104+
mod: UpdateFilter<T>,
105105
callback: (
106106
error: Error | null,
107107
result:
@@ -113,8 +113,8 @@ export interface ILocalCollection<T extends { _id: string }> {
113113
) => void,
114114
): { numberAffected: number; insertedId?: string } | number;
115115
upsert(
116-
selector: Selector<T>,
117-
mod: unknown,
116+
selector: Filter<T>,
117+
mod: UpdateFilter<T>,
118118
options: { multi?: boolean; upsert?: boolean; insertedId?: string; _returnObject?: boolean } | null,
119119
callback: (
120120
error: Error | null,
@@ -127,8 +127,8 @@ export interface ILocalCollection<T extends { _id: string }> {
127127
) => void,
128128
): { numberAffected: number; insertedId?: string } | number;
129129
upsertAsync(
130-
selector: Selector<T>,
131-
mod: unknown,
130+
selector: Filter<T>,
131+
mod: UpdateFilter<T>,
132132
callback: (
133133
error: Error | null,
134134
result:
@@ -140,8 +140,8 @@ export interface ILocalCollection<T extends { _id: string }> {
140140
) => void,
141141
): Promise<{ numberAffected: number; insertedId?: string } | number>;
142142
upsertAsync(
143-
selector: Selector<T>,
144-
mod: unknown,
143+
selector: Filter<T>,
144+
mod: UpdateFilter<T>,
145145
options: { multi?: boolean; upsert?: boolean; insertedId?: string; _returnObject?: boolean } | null,
146146
callback: (
147147
error: Error | null,

apps/meteor/client/lib/cachedCollections/IdMap.ts

+1-13
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,6 @@
11
import { EJSON } from 'meteor/ejson';
22

3-
export interface IIdMap<TId, TValue> {
4-
get(id: TId): TValue | undefined;
5-
set(id: TId, value: TValue): void;
6-
remove(id: TId): void;
7-
has(id: TId): boolean;
8-
empty(): boolean;
9-
clear(): void;
10-
forEach(iterator: (value: TValue, key: TId) => boolean | void): void;
11-
forEachAsync(iterator: (value: TValue, key: TId) => Promise<boolean | void>): Promise<void>;
12-
size(): number;
13-
setDefault(id: TId, def: TValue): TValue;
14-
clone(): IIdMap<TId, TValue>;
15-
}
3+
import type { IIdMap } from './IIdMap';
164

175
export class IdMap<TId, TValue> implements IIdMap<TId, TValue> {
186
private _map: Map<TId, TValue> = new Map();

0 commit comments

Comments
 (0)