Skip to content

Commit fdc178c

Browse files
Merge pull request #21 from tpluscode/simplify-callbacks
Simplify callbacks
2 parents 09749b6 + 95f1e31 commit fdc178c

File tree

3 files changed

+31
-60
lines changed

3 files changed

+31
-60
lines changed

.changeset/seven-shrimps-build.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@rdfjs/types": minor
3+
---
4+
5+
Dataset: Use correct type of `dataset` in methods with callbacks

dataset.d.ts

Lines changed: 6 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -106,21 +106,21 @@ export interface Dataset<OutQuad extends BaseQuad = Quad, InQuad extends BaseQua
106106
*
107107
* This method is aligned with `Array.prototype.every()` in ECMAScript-262.
108108
*/
109-
every(iteratee: QuadFilterIteratee<OutQuad>['test']): boolean;
109+
every(iteratee: (quad: OutQuad, dataset: this) => boolean): boolean;
110110

111111
/**
112112
* Creates a new dataset with all the quads that pass the test implemented by the provided `iteratee`.
113113
*
114114
* This method is aligned with Array.prototype.filter() in ECMAScript-262.
115115
*/
116-
filter(iteratee: QuadFilterIteratee<OutQuad>['test']): Dataset<OutQuad, InQuad>;
116+
filter(iteratee: (quad: OutQuad, dataset: this) => boolean): Dataset<OutQuad, InQuad>;
117117

118118
/**
119119
* Executes the provided `iteratee` once on each quad in the dataset.
120120
*
121121
* This method is aligned with `Array.prototype.forEach()` in ECMAScript-262.
122122
*/
123-
forEach(iteratee: QuadRunIteratee<OutQuad>['run']): void;
123+
forEach(callback: (quad: OutQuad, dataset: this) => void): void;
124124

125125
/**
126126
* Imports all quads from the given stream into the dataset.
@@ -137,7 +137,7 @@ export interface Dataset<OutQuad extends BaseQuad = Quad, InQuad extends BaseQua
137137
/**
138138
* Returns a new dataset containing all quads returned by applying `iteratee` to each quad in the current dataset.
139139
*/
140-
map(iteratee: QuadMapIteratee<OutQuad>['map']): Dataset<OutQuad, InQuad>;
140+
map(iteratee: (quad: OutQuad, dataset: Dataset<OutQuad>) => OutQuad): Dataset<OutQuad, InQuad>;
141141

142142
/**
143143
* This method calls the `iteratee` on each `quad` of the `Dataset`. The first time the `iteratee` is called, the
@@ -148,7 +148,7 @@ export interface Dataset<OutQuad extends BaseQuad = Quad, InQuad extends BaseQua
148148
*
149149
* This method is aligned with `Array.prototype.reduce()` in ECMAScript-262.
150150
*/
151-
reduce<A = any>(iteratee: QuadReduceIteratee<A, OutQuad>['run'], initialValue?: A): A;
151+
reduce<A = any>(callback: (accumulator: A, quad: OutQuad, dataset: this) => A, initialValue?: A): A;
152152

153153
/**
154154
* Existential quantification method, tests whether some quads in the dataset pass the test implemented by the
@@ -158,7 +158,7 @@ export interface Dataset<OutQuad extends BaseQuad = Quad, InQuad extends BaseQua
158158
*
159159
* This method is aligned with `Array.prototype.some()` in ECMAScript-262.
160160
*/
161-
some(iteratee: QuadFilterIteratee<OutQuad>['test']): boolean;
161+
some(iteratee: (quad: OutQuad, dataset: this) => boolean): boolean;
162162

163163
/**
164164
* Returns the set of quads within the dataset as a host language native sequence, for example an `Array` in
@@ -202,33 +202,3 @@ export interface DatasetFactory<OutQuad extends BaseQuad = Quad, InQuad extends
202202
*/
203203
dataset(quads?: Dataset<InQuad>|InQuad[]): D;
204204
}
205-
206-
export interface QuadFilterIteratee<Q extends BaseQuad = Quad> {
207-
/**
208-
* A callable function that returns `true` if the input quad passes the test this function implements.
209-
*/
210-
test(quad: Q, dataset: Dataset<Q>): boolean;
211-
}
212-
213-
export interface QuadMapIteratee<Q extends BaseQuad = Quad> {
214-
/**
215-
* A callable function that can be executed on a quad and returns a quad.
216-
*
217-
* The returned quad can be the given quad or a new one.
218-
*/
219-
map(quad: Q, dataset: Dataset<Q>): Q;
220-
}
221-
222-
export interface QuadReduceIteratee<A = any, Q extends BaseQuad = Quad> {
223-
/**
224-
* A callable function that can be executed on an accumulator and quad and returns a new accumulator.
225-
*/
226-
run(accumulator: A, quad: Q, dataset: Dataset<Q>): A;
227-
}
228-
229-
export interface QuadRunIteratee<Q extends BaseQuad = Quad> {
230-
/**
231-
* A callable function that can be executed on a quad.
232-
*/
233-
run(quad: Q, dataset: Dataset<Q>): void;
234-
}

rdf-js-tests.ts

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -235,12 +235,6 @@ function test_dataset() {
235235
const stream1: Stream = <any> {};
236236
const stream2: Stream<QuadBnode> = <any> {};
237237

238-
const quadFilterIteratee: (quad: Quad, dataset: Dataset) => boolean = <any> {};
239-
const quadMapIteratee: (quad: Quad, dataset: Dataset) => Quad = <any> {};
240-
const quadReduceToStringIteratee: (reduced: string, quad: Quad) => string = <any> {};
241-
const quadReduceToArrayIteratee: (arr: boolean[], quad: Quad, dataset: Dataset) => boolean[] = <any> {};
242-
const quadForEachIteratee: (quad: Quad, dataset: Dataset) => void = <any> {};
243-
244238
const datasetFactory1: DatasetFactory = <any> {};
245239
const datasetFactory2: DatasetFactory<QuadBnode> = <any> {};
246240

@@ -265,22 +259,24 @@ function test_dataset() {
265259
const dataset2DeleteMatches5: Dataset = dataset2.deleteMatches(term, term, term, term);
266260
const dataset2Difference: Dataset = dataset2.difference(dataset1);
267261
const dataset2Equals: boolean = dataset2.equals(dataset1);
268-
const dataset2Every: boolean = dataset2.every(quadFilterIteratee);
269-
const dataset2Filter: Dataset = dataset2.filter(quadFilterIteratee);
270-
dataset2.forEach(quadForEachIteratee);
262+
const dataset2Every: boolean = dataset2.every((quad: Quad, dataset: Dataset) => true);
263+
const dataset2Filter: Dataset = dataset2.filter((quad: Quad, dataset: Dataset) => true);
264+
dataset2.forEach((quad: Quad, dataset: Dataset) => {
265+
return
266+
});
271267
const dataset2Has: boolean = dataset2.has(quad);
272268
const dataset2Import: Promise<Dataset> = dataset2.import(stream1);
273269
const dataset2Intersection: Dataset = dataset2.intersection(dataset1);
274-
const dataset2Map: Dataset = dataset2.map(quadMapIteratee);
270+
const dataset2Map: Dataset = dataset2.map((quad: Quad, dataset: Dataset) => quad);
275271
const dataset2Match1: Dataset = dataset2.match();
276272
const dataset2Match2: Dataset = dataset2.match(term);
277273
const dataset2Match3: Dataset = dataset2.match(term, term);
278274
const dataset2Match4: Dataset = dataset2.match(term, term, term);
279275
const dataset2Match5: Dataset = dataset2.match(term, term, term, term);
280-
const dataset2Reduce1: string = dataset2.reduce(quadReduceToStringIteratee);
281-
const dataset2Reduce2: boolean[] = dataset2.reduce(quadReduceToArrayIteratee, []);
282-
const dataset2Reduce3: string = dataset2.reduce(quadReduceToStringIteratee, '');
283-
const dataset2Some: boolean = dataset2.some(quadFilterIteratee);
276+
const dataset2Reduce1: string = dataset2.reduce((acc: string, quad: Quad, dataset: Dataset<Quad>) => acc);
277+
const dataset2Reduce2: boolean[] = dataset2.reduce((acc: boolean[], quad: Quad, dataset: Dataset<Quad>) => acc, []);
278+
const dataset2Reduce3: string = dataset2.reduce((acc: string, quad: Quad, dataset: Dataset<Quad>) => acc, '');
279+
const dataset2Some: boolean = dataset2.some((quad: Quad, dataset: Dataset) => true);
284280
const dataset2ToArray: Quad[] = dataset2.toArray();
285281
const dataset2ToCanonical: string = dataset2.toCanonical();
286282
const dataset2ToStream: Stream = dataset2.toStream();
@@ -302,24 +298,24 @@ function test_dataset() {
302298
const dataset4DeleteMatches5: Dataset<QuadBnode> = dataset4.deleteMatches(term, term, term, term);
303299
const dataset4Difference: Dataset<QuadBnode> = dataset4.difference(dataset3);
304300
const dataset4Equals: boolean = dataset4.equals(dataset3);
305-
const dataset4Every: boolean = dataset4.every(quadFilterIteratee);
306-
const dataset4Filter: Dataset<QuadBnode> = dataset4.filter(quadFilterIteratee);
307-
dataset4.forEach(quadForEachIteratee);
301+
const dataset4Every: boolean = dataset4.every((quad: QuadBnode, dataset: Dataset<QuadBnode>) => true);
302+
const dataset4Filter: Dataset<QuadBnode> = dataset4.filter((quad: QuadBnode, dataset: Dataset<QuadBnode>) => true);
303+
dataset4.forEach((quad: QuadBnode, dataset: Dataset<QuadBnode>) => {
304+
return
305+
});
308306
const dataset4Has: boolean = dataset4.has(quadBnode);
309307
const dataset4Import: Promise<Dataset<QuadBnode>> = dataset4.import(stream2);
310308
const dataset4Intersection: Dataset<QuadBnode> = dataset4.intersection(dataset3);
311-
const dataset4Map: Dataset<QuadBnode> = dataset4.map(quadMapIteratee);
309+
const dataset4Map: Dataset<QuadBnode> = dataset4.map((quad: QuadBnode, dataset: Dataset<QuadBnode>) => quad);
312310
const dataset4Match1: Dataset<QuadBnode> = dataset4.match();
313311
const dataset4Match2: Dataset<QuadBnode> = dataset4.match(term);
314312
const dataset4Match3: Dataset<QuadBnode> = dataset4.match(term, term);
315313
const dataset4Match4: Dataset<QuadBnode> = dataset4.match(term, term, term);
316314
const dataset4Match5: Dataset<QuadBnode> = dataset4.match(term, term, term, term);
317-
const dataset4Reduce1: string = dataset4.reduce(quadReduceToStringIteratee);
318-
const dataset4Reduce2: boolean[] = dataset4.reduce(quadReduceToArrayIteratee, []);
319-
const dataset4Reduce3: string = dataset4.reduce(quadReduceToStringIteratee, '');
320-
const dataset4Reduce4: string = dataset4.reduce(quadReduceToStringIteratee);
321-
const dataset4Reduce5: string = dataset4.reduce(quadReduceToStringIteratee, '');
322-
const dataset4Some: boolean = dataset4.some(quadFilterIteratee);
315+
const dataset4Reduce1: string = dataset4.reduce((acc: string, quad: QuadBnode, dataset: Dataset<QuadBnode>) => acc);
316+
const dataset4Reduce2: boolean[] = dataset4.reduce((acc: boolean[], quad: QuadBnode, dataset: Dataset<QuadBnode>) => acc, []);
317+
const dataset4Reduce3: string = dataset4.reduce((acc: string, quad: QuadBnode, dataset: Dataset<QuadBnode>) => acc, '');
318+
const dataset4Some: boolean = dataset4.some((quad: QuadBnode, dataset: Dataset<QuadBnode>) => true);
323319
const dataset4ToArray: QuadBnode[] = dataset4.toArray();
324320
const dataset4ToCanonical: string = dataset4.toCanonical();
325321
const dataset4ToStream: Stream<QuadBnode> = dataset4.toStream();

0 commit comments

Comments
 (0)