diff --git a/types/esri-leaflet/esri-leaflet-tests.ts b/types/esri-leaflet/esri-leaflet-tests.ts new file mode 100644 index 0000000000..cd3b6cbcf9 --- /dev/null +++ b/types/esri-leaflet/esri-leaflet-tests.ts @@ -0,0 +1,48 @@ +import L = require('esri-leaflet'); + +let basemapLayer: L.esri.BasemapLayer; +basemapLayer = L.esri.basemapLayer('Streets'); +basemapLayer = L.esri.basemapLayer('Topographic'); +basemapLayer = L.esri.basemapLayer('NationalGeographic'); +basemapLayer = L.esri.basemapLayer('Oceans'); +basemapLayer = L.esri.basemapLayer('Gray'); +basemapLayer = L.esri.basemapLayer('DarkGray'); +basemapLayer = L.esri.basemapLayer('Imagery'); +basemapLayer = L.esri.basemapLayer('ShadedRelief'); +basemapLayer = L.esri.basemapLayer('Terrain'); +basemapLayer = L.esri.basemapLayer('USATopo'); +basemapLayer = L.esri.basemapLayer('OceansLabels'); +basemapLayer = L.esri.basemapLayer('GrayLabels'); +basemapLayer = L.esri.basemapLayer('DarkGrayLabels'); +basemapLayer = L.esri.basemapLayer('ImageryLabels'); +basemapLayer = L.esri.basemapLayer('ImageryTransportation'); +basemapLayer = L.esri.basemapLayer('ShadedReliefLabels'); +basemapLayer = L.esri.basemapLayer('TerrainLabels'); + +// should be an error +// basemapLayer = L.esri.basemapLayer('Test'); + +basemapLayer = new L.esri.BasemapLayer('Streets'); +basemapLayer = new L.esri.BasemapLayer('Topographic'); +basemapLayer = new L.esri.BasemapLayer('NationalGeographic'); +basemapLayer = new L.esri.BasemapLayer('Oceans'); +basemapLayer = new L.esri.BasemapLayer('Gray'); +basemapLayer = new L.esri.BasemapLayer('DarkGray'); +basemapLayer = new L.esri.BasemapLayer('Imagery'); +basemapLayer = new L.esri.BasemapLayer('ShadedRelief'); +basemapLayer = new L.esri.BasemapLayer('Terrain'); +basemapLayer = new L.esri.BasemapLayer('USATopo'); +basemapLayer = new L.esri.BasemapLayer('OceansLabels'); +basemapLayer = new L.esri.BasemapLayer('GrayLabels'); +basemapLayer = new L.esri.BasemapLayer('DarkGrayLabels'); +basemapLayer = new L.esri.BasemapLayer('ImageryLabels'); +basemapLayer = new L.esri.BasemapLayer('ImageryTransportation'); +basemapLayer = new L.esri.BasemapLayer('ShadedReliefLabels'); +basemapLayer = new L.esri.BasemapLayer('TerrainLabels'); + +// should be an error +// basemapLayer = new L.esri.BasemapLayer('Test'); + +basemapLayer = L.esri.basemapLayer('Streets', { token: 'token' }); +basemapLayer = new L.esri.BasemapLayer('Streets', { token: 'token' }); + diff --git a/types/esri-leaflet/index.d.ts b/types/esri-leaflet/index.d.ts new file mode 100644 index 0000000000..fae5e0c8c6 --- /dev/null +++ b/types/esri-leaflet/index.d.ts @@ -0,0 +1,141 @@ +// Type definitions for esri-leaflet 2.0 +// Project: http://esri.github.io/esri-leaflet +// Definitions by: strajuser +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +declare namespace L { + namespace esri { + type CallbackHandlerFn = (error: any, metadata: any) => void; + + type Basemaps = + 'Streets' + | 'Topographic' + | 'NationalGeographic' + | 'Oceans' + | 'Gray' + | 'DarkGray' + | 'Imagery' + | 'ShadedRelief' + | 'Terrain' + | 'USATopo' + | 'OceansLabels' + | 'GrayLabels' + | 'DarkGrayLabels' + | 'ImageryLabels' + | 'ImageryTransportation' + | 'ShadedReliefLabels' + | 'TerrainLabels'; + + interface BasemapLayerOptions extends L.TileLayerOptions { + /** + * Will use this token to authenticate all calls to the service. + * + * @type {string} + * @memberof BasemapLayerOptions + */ + token?: string; + } + + /** + * L.esri.BasemapLayer is used to display Esri hosted basemaps and attributes data providers appropriately. The Terms of Use for Esri hosted services apply to all Leaflet applications. + * + * @class BasemapLayer + * @extends {L.TileLayer} + */ + class BasemapLayer extends L.TileLayer { + constructor(key: Basemaps, options?: BasemapLayerOptions); + } + + /** + * L.esri.basemapLayer is used to display Esri hosted basemaps and attributes data providers appropriately. The Terms of Use for Esri hosted services apply to all Leaflet applications. + * + * @param {Basemaps} key + * @param {BasemapLayerOptions} [options] + * @returns {BasemapLayer} + */ + function basemapLayer(key: Basemaps, options?: BasemapLayerOptions): BasemapLayer; + + interface EsriTileLayerOptions extends L.TileLayerOptions { + /** + * URL of the Map Service with a tile cache. + * + * @type {string} + * @memberof EsriTileLayerOptions + */ + url: string; + /** + * If correctZoomLevels is enabled this controls the amount of tolerance for the difference at each scale level for remapping tile levels. + * Default 0.1 + * + * @type {number} + * @memberof EsriTileLayerOptions + */ + zoomOffsetAllowance?: number; + /** + * URL of an ArcGIS API for JavaScript proxy or ArcGIS Resource Proxy to use for proxying requests. + * + * @type {string} + * @memberof EsriTileLayerOptions + */ + proxy?: string; + /** + * Dictates if the service should use CORS when making GET requests. + * + * @type {boolean} + * @memberof EsriTileLayerOptions + */ + userCors?: boolean; + /** + * Will use this token to authenticate all calls to the service. + * + * @type {string} + * @memberof EsriTileLayerOptions + */ + token?: string; + } + + /** + * Access tiles from ArcGIS Online and ArcGIS Server to visualize and identify features. Copyright text from the service is added to map attribution automatically. + * + * @class TiledMapLayer + * @extends {L.TileLayer} + */ + class TiledMapLayer extends L.TileLayer { + constructor(options: EsriTileLayerOptions); + /** + * Authenticates this service with a new token and runs any pending requests that required a token. + * + * @param {string} token + * @returns {this} + * @memberof TiledMapLayer + */ + authenticate(token: string): this; + /** + * Requests metadata about this Feature Layer. Callback will be called with error and metadata. + * + * @param {CallbackHandlerFn} callback + * @param {*} context + * @returns {this} + * @memberof TiledMapLayer + */ + metadata(callback: CallbackHandlerFn, context: any): this; + identify() : any; + find(): any; + query(): any; + } + + /** + * Access tiles from ArcGIS Online and ArcGIS Server to visualize and identify features. Copyright text from the service is added to map attribution automatically. + * + * @param {EsriTileLayerOptions} options + * @returns {TiledMapLayer} + */ + function tiledMapLayer(options: EsriTileLayerOptions): TiledMapLayer; + } +} + +declare module 'esri-leaflet' { + export = L; +} diff --git a/types/esri-leaflet/tsconfig.json b/types/esri-leaflet/tsconfig.json new file mode 100644 index 0000000000..f342a7b92c --- /dev/null +++ b/types/esri-leaflet/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", + "esri-leaflet-tests.ts" + ] +} diff --git a/types/esri-leaflet/tslint.json b/types/esri-leaflet/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/esri-leaflet/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }