diff --git a/types/kdbush/index.d.ts b/types/kdbush/index.d.ts new file mode 100644 index 0000000000..fa1581d09c --- /dev/null +++ b/types/kdbush/index.d.ts @@ -0,0 +1,26 @@ +// Type definitions for kdbush 1.0 +// Project: https://github.com/mourner/kdbush +// Definitions by: DenisCarriere +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +type Points = number[][]; +type Get = (point: T) => number; +type ArrayType = typeof Int32Array | typeof Array; + +declare class KDBush { + ids: number[]; + coords: number[]; + nodeSize: number; + points: T[]; + range(minX: number, minY: number, maxX: number, maxY: number): number[]; + within(x: number, y: number, r: number): number[]; +} + +interface KDBushStatic { + (points: Points): KDBush; + (points: T[], getX: Get, getY: Get, nodeSize?: number, ArrayType?: ArrayType): KDBush; +} + +declare const kdbush: KDBushStatic; +declare namespace kdbush {} +export = kdbush; diff --git a/types/kdbush/kdbush-tests.ts b/types/kdbush/kdbush-tests.ts new file mode 100644 index 0000000000..c9fd8ae11f --- /dev/null +++ b/types/kdbush/kdbush-tests.ts @@ -0,0 +1,35 @@ +import * as kdbush from 'kdbush'; + +// API +const points = [[110, 60], [130, 40]]; +const index = kdbush(points); + +// properties +index.nodeSize; +index.points; +index.ids; +index.coords; + +// range +index.range(10, 10, 20, 20); +index.range(10, 10, 20, 20).map(id => points[id]); + +// within +index.within(10, 10, 5); +index.within(10, 10, 5).map(id => points[id]); + +// custom points (object) +const xy = [{x: 110, y: 60}, {x: 130, y: 40}]; +const index2 = kdbush(xy, p => p.x, p => p.y); +index2.points[0].x; +index2.points[0].y; +index2.points.map(p => [p.x, p.y]); + +// custom points (latlng) +const latlng = [[60, 110], [40, 130]]; +kdbush(latlng, p => p[1], p => p[0]); +kdbush(latlng, p => p[1], p => p[0], 64, Int32Array); + +// z coordinate (does not require Get callbacks) +const pointsZ = [[110, 60, 4000], [130, 40, 3000]]; +kdbush(pointsZ); diff --git a/types/kdbush/tsconfig.json b/types/kdbush/tsconfig.json new file mode 100644 index 0000000000..16814b627e --- /dev/null +++ b/types/kdbush/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "kdbush-tests.ts" + ] +} diff --git a/types/kdbush/tslint.json b/types/kdbush/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/kdbush/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }