Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions types/s2-geometry/.npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
*
!**/*.d.ts
!**/*.d.cts
!**/*.d.mts
!**/*.d.*.ts
80 changes: 80 additions & 0 deletions types/s2-geometry/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
export namespace S2 {
function LatLngToXYZ(latLng: S2.L.LatLng): [number, number, number];
function XYZToLatLng(xyz: readonly [number, number, number]): S2.L.LatLng;
function XYZToFaceUV(xyz: readonly [number, number, number]): [number, [number, number]];
function FaceUVToXYZ(face: number, uv: readonly [number, number]): [number, number, number];
function STToUV(st: readonly [number, number]): [number, number];
function UVToST(uv: readonly [number, number]): [number, number];
function STToIJ(st: readonly [number, number], order: number): [number, number];
function IJToST(ij: readonly [number, number], order: number, offsets: readonly [number, number]): [number, number];
function latLngToNeighborKeys(lat: number, lng: number, level: number): [string, string, string, string];
const FACE_BITS: number;
const MAX_LEVEL: number;
const POS_BITS: number;
function facePosLevelToId(faceN: number, posS: string, levelN?: number): string;
function fromFacePosLevel(faceN: number, posS: string, levelN?: number): string;

function keyToId(key: string): string;
function toId(key: string): string;
function toCellId(key: string): string;
function fromKey(key: string): string;

function idToKey(idS: string): string;
function toKey(idS: string): string;
function fromId(idS: string): string;
function fromCellId(idS: string): string;
function toHilbertQuadkey(idS: string): string;

function keyToLatLng(key: string): S2.L.LatLng;
function idToLatLng(id: string): S2.L.LatLng;
function latLngToKey(lat: number, lng: number, level: number): string;
function latLngToQuadkey(lat: number, lng: number, level: number): string;
function stepKey(key: string, num: number): string;
function prevKey(key: string): string;
function nextKey(key: string): string;

interface S2Cell {
face: number;
ij: [number, number];
level: number;
toString(): string;
getLatLng(): S2.L.LatLng;
getCornerLatLngs(): [S2.L.LatLng, S2.L.LatLng, S2.L.LatLng, S2.L.LatLng];
getFaceAndQuads(): [number, number[]];
toHilbertQuadkey(): string;
getNeighbors(): [S2Cell, S2Cell, S2Cell, S2Cell];
}
}

export namespace S2.L {
function LatLng(rawLat: number, rawLng: number, noWrap?: boolean): LatLng;
interface LatLng {
lat: number;
lng: number;
}
}

export namespace S2.L.LatLng {
const DEG_TO_RAD: number;
const RAD_TO_DEG: number;
}

export namespace S2.S2Cell {
function FromHilbertQuadKey(hilbertQuadkey: string): S2.S2Cell;
function FromLatLng(latLng: S2.L.LatLng, level: number): S2.S2Cell;
function FromFaceIJ(face: number, ij: readonly [number, number], level: number): S2.S2Cell;
function latLngToNeighborKeys(lat: number, lng: number, level: number): [string, string, string, string];
function facePosLevelToId(faceN: number, posS: string, levelN?: number): string;

function keyToId(key: string): string;

function toHilbertQuadkey(idS: string): string;
function toKey(idS: string): string;
function idToKey(idS: string): string;

function keyToLatLng(key: string): S2.L.LatLng;
function idToLatLng(id: string): S2.L.LatLng;
function latLngToKey(lat: number, lng: number, level: number): string;
function prevKey(key: string): string;
function nextKey(key: string): string;
}
17 changes: 17 additions & 0 deletions types/s2-geometry/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"private": true,
"name": "@types/s2-geometry",
"version": "1.2.9999",
"projects": [
"https://git.coolaj86.com/coolaj86/s2-geometry.js#readme"
],
"devDependencies": {
"@types/s2-geometry": "workspace:."
},
"owners": [
{
"name": "Marius Lindvall",
"githubUsername": "bilde2910"
}
]
}
133 changes: 133 additions & 0 deletions types/s2-geometry/s2-geometry-tests.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
import { S2 } from "s2-geometry";

// $ExpectType LatLng
const ll = S2.L.LatLng(37.819737, -122.478562);
// { lat: 37.819737, lng: -122.478562 }

// $ExpectType [number, number, number]
const xyz = S2.LatLngToXYZ(ll);
// [ -0.42418720312180813, -0.6663906343183068, 0.6131792064319718 ]

// $ExpectType LatLng
S2.XYZToLatLng(xyz);
// { lat: 37.819737, lng: -122.478562 }

// $ExpectType [number, [number, number]]
const [face, uv] = S2.XYZToFaceUV(xyz);
// [ 4, [ -0.9201497963116357, -0.6365443649365452 ] ]

// $ExpectType [number, number, number]
S2.FaceUVToXYZ(face, uv);
// [ -0.6365443649365452, -1, 0.9201497963116357 ]

// $ExpectType [number, number]
const st = S2.UVToST(uv);
// [ 0.030406091585901684, 0.14711766714135244 ]

// $ExpectType [number, number]
S2.STToUV(st);
// [ -0.9201497963116357, -0.6365443649365452 ]

// $ExpectType [number, number]
const ij = S2.STToIJ(st, 10);
// [ 31, 150 ]

// $ExpectType [number, number]
S2.IJToST(ij, 10, [0, 0]);
// [ 0.0302734375, 0.146484375 ]

// $ExpectType S2Cell
S2.S2Cell.FromHilbertQuadKey("4/0010023002");
// { face: 4, ij: [ 30, 150 ], level: 10 }

// $ExpectType S2Cell
const cell = S2.S2Cell.FromLatLng(ll, 10);
// { face: 4, ij: [ 31, 150 ], level: 10 }

// $ExpectType S2Cell
S2.S2Cell.FromFaceIJ(face, ij, 10);
// { face: 4, ij: [ 31, 150 ], level: 10 }

// $ExpectType string
const quadkey = cell.toHilbertQuadkey();
// '4/0010023003'

// $ExpectType [string, string, string, string]
S2.latLngToNeighborKeys(ll.lat, ll.lng, 10);
// $ExpectType [string, string, string, string]
S2.S2Cell.latLngToNeighborKeys(ll.lat, ll.lng, 10);
// [ '4/0010023002', '4/0010023010', '4/0010132332', '4/0010023000' ]

// $ExpectType string
S2.facePosLevelToId(4, "0010023003", 10);
// $ExpectType string
S2.fromFacePosLevel(4, "0010023003", 10);
// $ExpectType string
S2.S2Cell.facePosLevelToId(4, "0010023003", 10);
// '9260956642827042816'

// $ExpectType string
const id = S2.keyToId(quadkey);
// $ExpectType string
S2.toId(quadkey);
// $ExpectType string
S2.toCellId(quadkey);
// $ExpectType string
S2.fromKey(quadkey);
// $ExpectType string
S2.S2Cell.keyToId(quadkey);
// '9260956642827042816'

// $ExpectType string
S2.idToKey(id);
// $ExpectType string
S2.toKey(id);
// $ExpectType string
S2.fromCellId(id);
// $ExpectType string
S2.fromId(id);
// $ExpectType string
S2.toHilbertQuadkey(id);
// $ExpectType string
S2.S2Cell.idToKey(id);
// $ExpectType string
S2.S2Cell.toKey(id);
// $ExpectType string
S2.S2Cell.toHilbertQuadkey(id);
// '4/0010023003'

// $ExpectType LatLng
S2.keyToLatLng(quadkey);
// $ExpectType LatLng
S2.S2Cell.keyToLatLng(quadkey);
// { lat: 37.7878524048216, lng: -122.49200878539423 }

// $ExpectType LatLng
S2.idToLatLng(id);
// $ExpectType LatLng
S2.S2Cell.idToLatLng(id);
// { lat: 37.7878524048216, lng: -122.49200878539423 }

// $ExpectType string
S2.latLngToKey(ll.lat, ll.lng, 10);
// $ExpectType string
S2.latLngToQuadkey(ll.lat, ll.lng, 10);
// $ExpectType string
S2.S2Cell.latLngToKey(ll.lat, ll.lng, 10);
// '4/0010023003'

// $ExpectType string
S2.prevKey(quadkey);
// $ExpectType string
S2.S2Cell.prevKey(quadkey);
// '4/0010023002'

// $ExpectType string
S2.nextKey(quadkey);
// $ExpectType string
S2.S2Cell.nextKey(quadkey);
// '4/0010023010'

// $ExpectType string
S2.stepKey(quadkey, 10);
// '4/0010023031'
19 changes: 19 additions & 0 deletions types/s2-geometry/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"compilerOptions": {
"module": "node16",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictFunctionTypes": true,
"strictNullChecks": true,
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"s2-geometry-tests.ts"
]
}