diff --git a/types/knex-postgis/index.d.ts b/types/knex-postgis/index.d.ts index c885dfc3a3..63da132307 100644 --- a/types/knex-postgis/index.d.ts +++ b/types/knex-postgis/index.d.ts @@ -7,17 +7,15 @@ import * as GeoJSON from 'geojson'; import * as Knex from 'knex'; -// Knex does not export this +// Same as in Knex but not exported type ColumnName = string | Knex.Raw | Knex.QueryBuilder; -type KnexPostgis = KnexPostgis.KnexPostgis; +interface KnexPostgis extends KnexPostgis.KnexPostgis {} declare function KnexPostgis(knex: Knex): KnexPostgis; -// TODO: .as not working declare namespace KnexPostgis { interface KnexPostgis { - /** * Returns the area of the surface if it is a Polygon or MultiPolygon. For geometry, a * 2D Cartesian area is determined with units specified by the SRID. For geography, area @@ -25,42 +23,42 @@ declare namespace KnexPostgis { * * @see {@link https://postgis.net/docs/ST_Area.html} */ - area(geom: ColumnName): Knex.Raw; + area(geom: ColumnName): Knex.QueryBuilder; /** * Return the Well-Known Text (WKT) representation of the geometry/geography without SRID metadata. * * @see {@link https://postgis.net/docs/ST_AsText.html} */ - asText(column: ColumnName): Knex.Raw; + asText(column: ColumnName): Knex.QueryBuilder; /** * Return the geometry as a GeoJSON element. * * @see {@link https://postgis.net/docs/ST_AsGeoJSON.html} */ - asGeoJSON(column: ColumnName): Knex.Raw; + asGeoJSON(column: ColumnName): Knex.QueryBuilder; /** * Return the Well-Known Text (WKT) representation of the geometry with SRID meta data. * * @see {@link https://postgis.net/docs/ST_AsEWKT.html} */ - asEWKT(column: ColumnName): Knex.Raw; + asEWKT(column: ColumnName): Knex.QueryBuilder; /** * Returns a geometry covering all points within a given distance from the input geometry. * * @see {@link https://postgis.net/docs/ST_Buffer.html} */ - buffer(geom: ColumnName, radius: number): Knex.Raw; + buffer(geom: ColumnName, radius: number): Knex.QueryBuilder; /** * Returns the geometric center of a geometry. * * @see {@link https://postgis.net/docs/ST_Centroid.html} */ - centroid(geom: ColumnName): Knex.Raw; + centroid(geom: ColumnName): Knex.QueryBuilder; /** * For geometry type Returns the 2D Cartesian distance between two geometries in projected @@ -69,7 +67,7 @@ declare namespace KnexPostgis { * * @see {@link https://postgis.net/docs/ST_Distance.html} */ - distance(geom1: ColumnName, geom2: ColumnName): Knex.Raw; + distance(geom1: ColumnName, geom2: ColumnName): Knex.QueryBuilder; /** * Returns true if the geometries are within the specified distance of one another. For @@ -79,14 +77,14 @@ declare namespace KnexPostgis { * * @see {@link https://postgis.net/docs/ST_DWithin.html} */ - dwithin(geom1: ColumnName, geom2: ColumnName, distance: number, spheroid?: boolean): Knex.Raw; + dwithin(geom1: ColumnName, geom2: ColumnName, distance: number, spheroid?: boolean): Knex.QueryBuilder; /** * Returns a geometry that represents the shared portion of geomA and geomB. * * @see {@link https://postgis.net/docs/ST_Intersection.html} */ - intersection(geom1: ColumnName, geom2: ColumnName): Knex.Raw; + intersection(geom1: ColumnName, geom2: ColumnName): Knex.QueryBuilder; /** * Returns TRUE if the Geometries/Geography "spatially intersect in 2D" - (share any portion @@ -95,35 +93,31 @@ declare namespace KnexPostgis { * * @see {@link https://postgis.net/docs/ST_Intersects.html} */ - intersects(geom1: ColumnName, geom2: ColumnName): Knex.Raw; + intersects(geom1: ColumnName, geom2: ColumnName): Knex.QueryBuilder; /** - * - * - * @see {@link } + * Casts geometry to geography */ - geography(geom: ColumnName): Knex.Raw; + geography(geom: ColumnName): Knex.QueryBuilder; /** - * - * - * @see {@link } + * Casts geography to geometry */ - geometry(geography: ColumnName): Knex.Raw; + geometry(geography: ColumnName): Knex.QueryBuilder; /** * Return a specified ST_Geometry value from Well-Known Text representation (WKT). * * @see {@link https://postgis.net/docs/ST_GeomFromText.html} */ - geomFromText(wkt: string, srid?: number): Knex.Raw; + geomFromText(wkt: string, srid?: number): Knex.QueryBuilder; /** * Takes as input a geojson representation of a geometry and outputs a PostGIS geometry object * * @see {@link https://postgis.net/docs/ST_GeomFromGeoJSON.html} */ - geomFromGeoJSON(geojson: GeoJSON.GeoJsonObject|ColumnName): Knex.Raw; + geomFromGeoJSON(geojson: GeoJSON.GeoJsonObject|ColumnName): Knex.QueryBuilder; /** * Creates a rectangular Polygon formed from the given minimums and maximums. Input values @@ -131,56 +125,56 @@ declare namespace KnexPostgis { * * @see {@link https://postgis.net/docs/ST_MakeEnvelope.html} */ - makeEnvelope(minlon: number, minlat: number, maxlon: number, maxlat: number, srid?: number): Knex.Raw; + makeEnvelope(minlon: number, minlat: number, maxlon: number, maxlat: number, srid?: number): Knex.QueryBuilder; /** * Creates a 2D,3DZ or 4D point geometry. * * @see {@link https://postgis.net/docs/ST_MakePoint.html} */ - makePoint(lon: number, lat: number, z?: number, measure?: number): Knex.Raw; + makePoint(lon: number, lat: number, z?: number, measure?: number): Knex.QueryBuilder; /** * Attempts to make an invalid geometry valid without losing vertices. * * @see {@link https://postgis.net/docs/ST_MakeValid.html} */ - makeValid(geom: ColumnName): Knex.Raw; + makeValid(geom: ColumnName): Knex.QueryBuilder; /** * eturns an ST_Point with the given coordinate values. OGC alias for ST_MakePoint. * * @see {@link https://postgis.net/docs/ST_Point.html} */ - point(lon: number, lat: number): Knex.Raw; + point(lon: number, lat: number): Knex.QueryBuilder; /** * Return a new geometry with its coordinates transformed to a different spatial reference. * * @see {@link https://postgis.net/docs/ST_Transform.html} */ - transform(geom: ColumnName, srid: number): Knex.Raw; + transform(geom: ColumnName, srid: number): Knex.QueryBuilder; /** * Returns true if the geometry A is completely inside geometry B * * @see {@link https://postgis.net/docs/ST_Within.html} */ - within(geom1: ColumnName, geom2: ColumnName): Knex.Raw; + within(geom1: ColumnName, geom2: ColumnName): Knex.QueryBuilder; /** * Return the X coordinate of the point, or NULL if not available. Input must be a point. * * @see {@link https://postgis.net/docs/ST_X.html} */ - x(geom: ColumnName): Knex.Raw; + x(geom: ColumnName): Knex.QueryBuilder; /** * Return the Y coordinate of the point, or NULL if not available. Input must be a point. * * @see {@link https://postgis.net/docs/ST_Y.html} */ - y(geom: ColumnName): Knex.Raw; + y(geom: ColumnName): Knex.QueryBuilder; } }