Skip to content

Commit c589887

Browse files
committed
fix(clownface): support iterables in overloads
1 parent 9eac318 commit c589887

2 files changed

Lines changed: 20 additions & 8 deletions

File tree

types/clownface/clownface-tests.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,14 +276,17 @@ function testHas() {
276276
const cf: AnyPointer<Term, Dataset> = <any> {};
277277
let has: AnyPointer<Array<NamedNode | BlankNode>, Dataset> = cf.has(predicate, "Stuart");
278278
has = cf.has([predicate, predicate], "Stuart");
279+
has = cf.has(new Set([predicate, predicate]), "Stuart");
279280
has = cf.has(predicate, [literal, literal]);
281+
has = cf.has(predicate, new Set([literal, literal]));
280282
}
281283

282284
function testIn() {
283285
const cf: AnyPointer<Literal, Dataset> = <any> {};
284286
let cfIn: MultiPointer<NamedNode | BlankNode, Dataset> = cf.in();
285287
cfIn = cf.in(node);
286288
cfIn = cf.in([node, node]);
289+
cfIn = cf.in(new Set([node, node]));
287290
cfIn = cf.in(cf.node(node));
288291
cfIn = cf.in(cf.node([node, node]));
289292

@@ -363,6 +366,7 @@ function testNode() {
363366
let cfLit: AnyPointer<Literal, Dataset> = cf.node("foo");
364367
cfLit = cf.node(123);
365368
const cfLitMany: AnyPointer<Literal[], Dataset> = cf.node(["foo", "bar"]);
369+
const cfLitManyFromSet: AnyPointer<Literal[], Dataset> = cf.node(new Set(["foo", "bar"]));
366370
singleTerm = cf.node("http://example.org/", { type: "NamedNode" });
367371
const cfBlank: AnyPointer<BlankNode, Dataset> = cf.node(null, { type: "BlankNode" });
368372
cfLit = cf.node("example", { datatype: node.value });
@@ -385,6 +389,7 @@ function testOut() {
385389
let cfTerm: AnyPointer<Term[], Dataset> = cf.out();
386390
cfTerm = cf.out(node);
387391
cfTerm = cf.out([node, node]);
392+
cfTerm = cf.out(new Set([node, node]));
388393
cfTerm = cf.out(cf.node([node, node]));
389394

390395
const singleContext: AnyPointer<NamedNode, Dataset> = <any> {};
@@ -458,7 +463,14 @@ function addInAddOutRetainsType() {
458463

459464
const addOutSingle: AnyPointer<NamedNode, Dataset> = singleNamed.addOut(predicate, "foo");
460465
const addOutSingleObjectArray: AnyPointer<NamedNode, Dataset> = singleNamed.addOut(predicate, ["foo", "bar"]);
466+
const addOutSingleObjectSet: AnyPointer<NamedNode, Dataset> = singleNamed.addOut(
467+
predicate,
468+
new Set(["foo", "bar"]),
469+
);
461470
const addOutSinglePredicateArray: AnyPointer<NamedNode, Dataset> = singleNamed.addOut([predicate, predicate]);
471+
const addOutSinglePredicateSet: AnyPointer<NamedNode, Dataset> = singleNamed.addOut(
472+
new Set([predicate, predicate]),
473+
);
462474
const addOutSingleNoObject: AnyPointer<NamedNode, Dataset> = singleNamed.addOut(predicate);
463475
const addOutSingleWithCallback: AnyPointer<NamedNode, Dataset> = singleNamed.addOut(predicate, () => {});
464476
const addOutSingleWithObjectAndCallback: AnyPointer<NamedNode, Dataset> = singleNamed.addOut(
@@ -469,7 +481,9 @@ function addInAddOutRetainsType() {
469481

470482
const addInSingle: AnyPointer<NamedNode, Dataset> = singleNamed.addIn(predicate, "foo");
471483
const addInSingleObjectArray: AnyPointer<NamedNode, Dataset> = singleNamed.addIn(predicate, ["foo", "bar"]);
484+
const addInSingleObjectSet: AnyPointer<NamedNode, Dataset> = singleNamed.addIn(predicate, new Set(["foo", "bar"]));
472485
const addInSinglePredicateArray: AnyPointer<NamedNode, Dataset> = singleNamed.addIn([predicate, predicate]);
486+
const addInSinglePredicateSet: AnyPointer<NamedNode, Dataset> = singleNamed.addIn(new Set([predicate, predicate]));
473487
const addInSingleNoObject: AnyPointer<NamedNode, Dataset> = singleNamed.addIn(predicate);
474488
const addInSingleWithCallback: AnyPointer<NamedNode, Dataset> = singleNamed.addIn(predicate, () => {});
475489
const addInSingleWithObjectAndCallback: AnyPointer<NamedNode, Dataset> = singleNamed.addIn(

types/clownface/index.d.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type TermOrClownface<X extends Term = Term> = MultiPointer<X> | X;
1717
type TermOrLiteral<X extends Term = Term> = TermOrClownface<X> | string | number | boolean;
1818

1919
type AddCallback<D extends DatasetCore, X extends Term> = (added: AnyPointer<X, D>) => void;
20-
type SingleOrArray<T> = T | readonly T[];
20+
type SingleOrArray<T> = T | readonly T[] | Iterable<T>;
2121
type SingleOrOneElementArray<T> = T | readonly [T];
2222

2323
type SingleOrArrayOfTerms<X extends Term> = SingleOrArray<X> | MultiPointer<X>;
@@ -85,7 +85,7 @@ export interface AnyPointer<T extends AnyContext = AnyContext, D extends Dataset
8585

8686
node(value: SingleOrOneElementArray<boolean | string | number>, options?: NodeOptions): AnyPointer<Literal, D>;
8787

88-
node(values: Array<boolean | string | number>, options?: NodeOptions): AnyPointer<Literal[], D>;
88+
node(values: Iterable<boolean | string | number>, options?: NodeOptions): AnyPointer<Literal[], D>;
8989

9090
node<X extends Term>(value: SingleOrOneElementArray<X> | AnyPointer<X, D>, options?: NodeOptions): AnyPointer<X, D>;
9191

@@ -100,14 +100,14 @@ export interface AnyPointer<T extends AnyContext = AnyContext, D extends Dataset
100100
node(values: null[] | Iterable<BlankNode>, options?: NodeOptions): AnyPointer<BlankNode[], D>;
101101

102102
node(
103-
values: Array<boolean | string | number | Term | null> | Iterable<Term>,
103+
values: Iterable<boolean | string | number | Term | null>,
104104
options?: NodeOptions,
105105
): AnyPointer<Term[], D>;
106106

107107
blankNode(value?: SingleOrOneElementArray<string> | AnyPointer<BlankNode, D>): AnyPointer<BlankNode, D>;
108108

109109
blankNode(
110-
values: string[] | MultiPointer<BlankNode, D> | Iterable<BlankNode> | Iterable<GraphPointer<BlankNode, D>>,
110+
values: MultiPointer<BlankNode, D> | Iterable<BlankNode | string> | Iterable<GraphPointer<BlankNode, D>>,
111111
): AnyPointer<BlankNode[], D>;
112112

113113
literal(
@@ -117,9 +117,8 @@ export interface AnyPointer<T extends AnyContext = AnyContext, D extends Dataset
117117

118118
literal(
119119
values:
120-
| Array<boolean | string | number | null>
120+
| Iterable<boolean | string | number | null | Literal>
121121
| MultiPointer<Literal, D>
122-
| Iterable<Literal>
123122
| Iterable<GraphPointer<Literal, D>>,
124123
languageOrDatatype?: string | NamedNode,
125124
): AnyPointer<Literal[], D>;
@@ -130,9 +129,8 @@ export interface AnyPointer<T extends AnyContext = AnyContext, D extends Dataset
130129

131130
namedNode(
132131
values:
133-
| Array<string | NamedNode>
132+
| Iterable<string | NamedNode>
134133
| MultiPointer<NamedNode, D>
135-
| Iterable<NamedNode>
136134
| Iterable<GraphPointer<NamedNode, D>>,
137135
): AnyPointer<NamedNode[], D>;
138136

0 commit comments

Comments
 (0)