Merge pull request #5 from DefinitelyTyped/master

sync
This commit is contained in:
PopGoesTheWza
2019-04-09 14:29:52 +02:00
committed by GitHub
4909 changed files with 184244 additions and 37321 deletions
+505 -349
View File
File diff suppressed because it is too large Load Diff
+4 -2
View File
@@ -2,7 +2,9 @@ language: node_js
node_js:
- 8
sudo: false
notifications:
email: false
script:
- npm run test
- if [[ $TRAVIS_EVENT_TYPE == "cron" ]]; then npm run update-codeowners || travis_terminate 1; fi
-2
View File
@@ -332,5 +332,3 @@ Es más apropiado importar este módulo utilizando la sintaxis `import foo = req
Este proyecto es licenciado bajo la licencia MIT.
Los derechos de autor de cada archivo de definición son respectivos de cada contribuidor listado al comienzo de cada archivo de definición.
[![Analytics](https://ga-beacon.appspot.com/UA-47495295-4/borisyankov/DefinitelyTyped)](https://github.com/igrigorik/ga-beacon)
-2
View File
@@ -334,5 +334,3 @@ NPM 패키지의 경우, `node -p 'require("foo")'` 가 원하는 값이라면 `
이 프로젝트는 MIT license 가 적용되어 있습니다.
각 자료형 정의(Type definition) 파일들의 저작권은 각 기여자들에게 있으며, 기여자들은 해당 자료형 정의(Type definition) 파일들의 맨 위에 나열되어 있습니다.
[![Analytics](https://ga-beacon.appspot.com/UA-47495295-4/borisyankov/DefinitelyTyped)](https://github.com/igrigorik/ga-beacon)
+33 -22
View File
@@ -57,7 +57,7 @@ You may need to add manual [references](http://www.typescriptlang.org/docs/handb
## How can I contribute?
DefinitelyTyped only works because of contributions by users like you!
Definitely Typed only works because of contributions by users like you!
### Test
@@ -89,7 +89,7 @@ then follow the instructions to [edit an existing package](#edit-an-existing-pac
### Make a pull request
Once you've tested your package, you can share it on DefinitelyTyped.
Once you've tested your package, you can share it on Definitely Typed.
First, [fork](https://guides.github.com/activities/forking/) this repository, install [node](https://nodejs.org/), and run `npm install`.
@@ -117,7 +117,7 @@ If it doesn't, you can do so yourself in the comment associated with the PR.
#### Create a new package
If you are the library author and your package is written in TypeScript, [bundle the autogenerated declaration files](http://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html) in your package instead of publishing to DefinitelyTyped.
If you are the library author and your package is written in TypeScript, [bundle the autogenerated declaration files](http://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html) in your package instead of publishing to Definitely Typed.
If you are adding typings for an NPM package, create a directory with the same name.
If the package you are adding typings for is not on NPM, make sure the name you choose for it does not conflict with the name of a package on NPM.
@@ -137,7 +137,7 @@ See all options at [dts-gen](https://github.com/Microsoft/dts-gen).
You may edit the `tsconfig.json` to add new files, to add `"target": "es6"` (needed for async functions), to add to `"lib"`, or to add the `"jsx"` compiler option.
DefinitelyTyped members routinely monitor for new PRs, though keep in mind that the number of other PRs may slow things down.
Definitely Typed members routinely monitor for new PRs, though keep in mind that the number of other PRs may slow things down.
For a good example package, see [base64-js](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/base64-js).
@@ -165,18 +165,31 @@ For a good example package, see [base64-js](https://github.com/DefinitelyTyped/D
#### Removing a package
When a package [bundles](http://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html) its own types, types should be removed from DefinitelyTyped to avoid confusion.
When a package [bundles](http://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html) its own types, types should be removed from Definitely Typed to avoid confusion.
You can remove it by running `npm run not-needed -- typingsPackageName asOfVersion sourceRepoURL [libraryName]`.
- `typingsPackageName`: This is the name of the directory to delete.
- `asOfVersion`: A stub will be published to `@types/foo` with this version. Should be higher than any currently published version.
- `asOfVersion`: A stub will be published to `@types/foo` with this version. Should be higher than any currently published version, and should be a version of `foo` on npm.
- `sourceRepoURL`: This should point to the repository that contains the typings.
- `libraryName`: Descriptive name of the library, e.g. "Angular 2" instead of "angular2". (If ommitted, will be identical to "typingsPackageName".)
- `libraryName`: Name of npm package that replaces the Definitely Typed types. Usually this is identical to "typingsPackageName", in which case you can omit it.
Any other packages in DefinitelyTyped that referenced the deleted package should be updated to reference the bundled types. To do this, add a `package.json` with `"dependencies": { "foo": "x.y.z" }`.
Any other packages in Definitely Typed that referenced the deleted package should be updated to reference the bundled types.
You can get this list by looking at the errors from `npm run test`.
To fix the errors, add a `package.json` with `"dependencies": { "foo": "x.y.z" }`.
For example:
If a package was never on DefinitelyTyped, it does not need to be added to `notNeededPackages.json`.
```json
{
"private": true,
"dependencies": {
"foo": "^2.6.0"
}
}
```
When you add a `package.json` to dependents of `foo`, you will also need to open a PR to add `foo` [to dependenciesWhitelist.txt in types-publisher](https://github.com/Microsoft/types-publisher/blob/master/dependenciesWhitelist.txt).
If a package was never on Definitely Typed, it does not need to be added to `notNeededPackages.json`.
#### Lint
@@ -225,11 +238,11 @@ The `master` branch is automatically published to the `@types` scope on NPM than
#### I've submitted a pull request. How long until it is merged?
It depends, but most pull requests will be merged within a week. PRs that have been approved by an author listed in the definition's header are usually merged more quickly; PRs for new definitions will take more time as they require more review from maintainers. Each PR is reviewed by a TypeScript or DefinitelyTyped team member before being merged, so please be patient as human factors may cause delays. Check the [PR Burndown Board](https://github.com/DefinitelyTyped/DefinitelyTyped/projects/3?card_filter_query=is%3Aopen) to see progress as maintainers work through the open PRs.
It depends, but most pull requests will be merged within a week. PRs that have been approved by an author listed in the definition's header are usually merged more quickly; PRs for new definitions will take more time as they require more review from maintainers. Each PR is reviewed by a TypeScript or Definitely Typed team member before being merged, so please be patient as human factors may cause delays. Check the [PR Burndown Board](https://github.com/DefinitelyTyped/DefinitelyTyped/projects/3?card_filter_query=is%3Aopen) to see progress as maintainers work through the open PRs.
#### My PR is merged; when will the `@types` NPM package be updated?
NPM packages should update within a few minutes. If it's been more than an hour, mention the PR number on [the DefinitelyTyped Gitter channel](https://gitter.im/DefinitelyTyped/DefinitelyTyped) and the current maintainer will get the correct team member to investigate.
NPM packages should update within a few minutes. If it's been more than an hour, mention the PR number on [the Definitely Typed Gitter channel](https://gitter.im/DefinitelyTyped/DefinitelyTyped) and the current maintainer will get the correct team member to investigate.
#### I'm writing a definition that depends on another definition. Should I use `<reference types="" />` or an import?
@@ -325,13 +338,13 @@ You can look [here](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/mast
This may belong in [TSJS-Lib-Generator](https://github.com/Microsoft/TSJS-lib-generator#readme). See the guidelines there.
If the standard is still a draft, it belongs here.
Use a name beginning with `dom-` and include a link to the standard as the "Project" link in the header.
When it graduates draft mode, we may remove it from DefinitelyTyped and deprecate the associated `@types` package.
When it graduates draft mode, we may remove it from Definitely Typed and deprecate the associated `@types` package.
#### How do DefinitelyTyped package versions relate to versions of the corresponding library?
#### How do Definitely Typed package versions relate to versions of the corresponding library?
_NOTE: The discussion in this section assumes familiarity with [Semantic versioning](https://semver.org/)_
Each DefinitelyTyped package is versioned when published to NPM.
Each Definitely Typed package is versioned when published to NPM.
The [types-publisher](https://github.com/Microsoft/types-publisher) (the tool that publishes `@types` packages to npm) will set the declaration package's version by using the `major.minor` version number listed in the first line of its `index.d.ts` file.
For example, here are the first few lines of [Node's type declarations](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/1253faabf5e0d2c5470db6ea87795d7f96fef7e2/types/node/index.d.ts) for version `10.12.x` at the time of writing:
@@ -339,24 +352,24 @@ For example, here are the first few lines of [Node's type declarations](https://
// Type definitions for Node.js 10.12
// Project: http://nodejs.org/
// Definitions by: Microsoft TypeScript <https://github.com/Microsoft>
// DefinitelyTyped <https://github.com/DefinitelyTyped>
// Definitely Typed <https://github.com/DefinitelyTyped>
// Alberto Schiabel <https://github.com/jkomyno>
```
Because `10.12` is at the end the first line, the npm version of the `@types/node` package will also be `10.12.x`.
Note that the first-line comment in the `index.d.ts` file should only contain the `major.minor` version (e.g. `10.12`) and should not contain a patch version (e.g. `10.12.4`).
This is because only the major and minor release numbers are aligned between library packages and type declaration packages.
The patch release number of the type declaration package (e.g. `.0` in `10.12.0`) is initialized to zero by DefinitelyTyped and is incremented each time a new `@types/node` package is published to NPM for the same major/minor version of the corresponding library.
The patch release number of the type declaration package (e.g. `.0` in `10.12.0`) is initialized to zero by Definitely Typed and is incremented each time a new `@types/node` package is published to NPM for the same major/minor version of the corresponding library.
Sometimes type declaration package versions and library package versions can get out of sync.
Below are a few common reasons why, in order of how much they inconvenience users of a library.
Only the last case is typically problematic.
* As noted above, the patch version of the type declaration package is unrelated to the library patch version.
This allows DefinitelyTyped to safely update type declarations for the same major/minor version of a library.
This allows Definitely Typed to safely update type declarations for the same major/minor version of a library.
* If updating a package for new functionality, don't forget to update the version number to line up with that version of the library.
If users make sure versions correspond between JavaScript packages and their respective `@types` packages, then `npm update` should typically just work.
* It's common for type declaration package updates to lag behind library updates because it's often library users, not maintainers, who update DefinitelyTyped when new library features are released.
* It's common for type declaration package updates to lag behind library updates because it's often library users, not maintainers, who update Definitely Typed when new library features are released.
So there may be a lag of days, weeks, or even months before a helpful community member sends a PR to update the type declaration package for a new library release.
If you're impacted by this, you can be the change you want to see in the world and you can be that helpful community member!
@@ -366,7 +379,7 @@ Only the last case is typically problematic.
[Semantic versioning](https://semver.org/) requires that versions with breaking changes must increment the major version number.
For example, a library that removes a publicly exported function after its `3.5.8` release must bump its version to `4.0.0` in its next release.
Furthermore, when the library's `4.0.0` release is out, its DefinitelyTyped type declaration package should also be updated to `4.0.0`, including any breaking changes to the library's API.
Furthermore, when the library's `4.0.0` release is out, its Definitely Typed type declaration package should also be updated to `4.0.0`, including any breaking changes to the library's API.
Many libraries have a large installed base of developers (including maintainers of other packages using that library as a dependency) who won't move right away to a new version that has breaking changes, because it might be months until a maintainer has time to rewrite code to adapt to the new version.
In the meantime, users of old library versions still may want to update type declarations for older versions.
@@ -398,7 +411,7 @@ At the time of writing, the [history v2 `tsconfig.json`](https://github.com/Defi
}
```
If there are other packages in DefinitelyTyped that are incompatible with the new version, you will need to add path mappings to the old version.
If there are other packages in Definitely Typed that are incompatible with the new version, you will need to add path mappings to the old version.
You will also need to do this recursively for packages depending on packages depending on the old version.
For example, `react-router` depends on `history@2`, so [react-router `tsconfig.json`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react-router/v2/tsconfig.json) has a path mapping to `"history": [ "history/v2" ]`.
@@ -439,5 +452,3 @@ GitHub doesn't [support](http://stackoverflow.com/questions/5646174/how-to-make-
This project is licensed under the MIT license.
Copyrights on the definition files are respective of each contributor listed at the beginning of each definition file.
[![Analytics](https://ga-beacon.appspot.com/UA-47495295-4/borisyankov/DefinitelyTyped)](https://github.com/igrigorik/ga-beacon)
-2
View File
@@ -346,8 +346,6 @@ GitHub не [поддерживает](http://stackoverflow.com/questions/564617
Авторские права на файлы определений принадлежат каждому участнику, указанному в начале каждого файла определения.
[![Analytics](https://ga-beacon.appspot.com/UA-47495295-4/borisyankov/DefinitelyTyped)](https://github.com/igrigorik/ga-beacon)
[![Build Status](https://typescript.visualstudio.com/TypeScript/_apis/build/status/sandersn.types-publisher-watchdog)](https://typescript.visualstudio.com/TypeScript/_build/latest?definitionId=13) В среднем пакеты публикуются на npm менее чем за 10000 секунд?
[![Build Status](https://typescript.visualstudio.com/TypeScript/_apis/build/status/sandersn.typescript-bot-watchdog)](https://typescript.visualstudio.com/TypeScript/_build/latest?definitionId=14) Был ли typescript-bot активным на DefinitelyTyped в последние два часа?
+24
View File
@@ -0,0 +1,24 @@
# Learn more at: https://aka.ms/yaml
jobs:
- job: npmRunTest
pool:
vmImage: 'Ubuntu 16.04'
demands: npm
timeoutInMinutes: 360
steps:
- task: Npm@1
displayName: 'npm install'
inputs:
verbose: false
- script: |
git checkout -- . && npm run test
if [[ $BUILD_REASON == "Schedule" ]]; then git config --global user.email "types@microsoft.com" && git config --global user.name "TypeScript Bot" && npm run update-codeowners; fi
displayName: 'npm run test'
trigger:
- master
+566 -2
View File
@@ -18,6 +18,12 @@
"sourceRepoURL": "https://github.com/ceolter/ag-grid",
"asOfVersion": "3.2.0"
},
{
"libraryName": "aggregate-error",
"typingsPackageName": "aggregate-error",
"sourceRepoURL": "https://github.com/sindresorhus/aggregate-error",
"asOfVersion": "2.2.0"
},
{
"libraryName": "ajv",
"typingsPackageName": "ajv",
@@ -198,6 +204,12 @@
"sourceRepoURL": "https://github.com/ded/bowser",
"asOfVersion": "1.1.1"
},
{
"libraryName": "boxen",
"typingsPackageName": "boxen",
"sourceRepoURL": "https://github.com/sindresorhus/boxen",
"asOfVersion": "3.0.1"
},
{
"libraryName": "Bugsnag Browser",
"typingsPackageName": "bugsnag-js",
@@ -216,12 +228,24 @@
"sourceRepoURL": "https://github.com/blakeembrey/camel-case",
"asOfVersion": "1.2.1"
},
{
"libraryName": "camelcase",
"typingsPackageName": "camelcase",
"sourceRepoURL": "https://github.com/sindresorhus/camelcase",
"asOfVersion": "5.2.0"
},
{
"libraryName": "catalog",
"typingsPackageName": "catalog",
"sourceRepoURL": "https://github.com/interactivethings/catalog",
"asOfVersion": "3.5.0"
},
{
"libraryName": "chai-http",
"typingsPackageName": "chai-http",
"sourceRepoURL": "https://github.com/chaijs/chai-http",
"asOfVersion": "4.2.0"
},
{
"libraryName": "chalk",
"typingsPackageName": "chalk",
@@ -240,12 +264,24 @@
"sourceRepoURL": "https://github.com/mapbox/cheap-ruler",
"asOfVersion": "2.5.0"
},
{
"libraryName": "chokidar",
"typingsPackageName": "chokidar",
"sourceRepoURL": "https://github.com/paulmillr/chokidar",
"asOfVersion": "2.1.3"
},
{
"libraryName": "chunked-dc",
"typingsPackageName": "chunked-dc",
"sourceRepoURL": "https://github.com/saltyrtc/chunked-dc-js",
"asOfVersion": "0.2.2"
},
{
"libraryName": "clean-webpack-plugin",
"typingsPackageName": "clean-webpack-plugin",
"sourceRepoURL": "https://github.com/johnagan/clean-webpack-plugin",
"asOfVersion": "2.0.0"
},
{
"libraryName": "colors.js (colors)",
"typingsPackageName": "colors",
@@ -258,6 +294,12 @@
"sourceRepoURL": "https://github.com/tj/commander.js",
"asOfVersion": "2.12.2"
},
{
"libraryName": "conf",
"typingsPackageName": "conf",
"sourceRepoURL": "https://github.com/sindresorhus/conf",
"asOfVersion": "3.0.0"
},
{
"libraryName": "confirmdialog",
"typingsPackageName": "confirmdialog",
@@ -270,6 +312,12 @@
"sourceRepoURL": "https://github.com/blakeembrey/constant-case",
"asOfVersion": "1.1.2"
},
{
"libraryName": "copy-text-to-clipboard",
"typingsPackageName": "copy-text-to-clipboard",
"sourceRepoURL": "https://github.com/sindresorhus/copy-text-to-clipboard",
"asOfVersion": "2.0.1"
},
{
"libraryName": "cordova-plugin-battery-status",
"typingsPackageName": "cordova-plugin-battery-status",
@@ -384,6 +432,18 @@
"sourceRepoURL": "https://github.com/jayphelps/core-decorators.js",
"asOfVersion": "0.20.0"
},
{
"libraryName": "cp-file",
"typingsPackageName": "cp-file",
"sourceRepoURL": "https://github.com/sindresorhus/cp-file",
"asOfVersion": "6.1.1"
},
{
"libraryName": "cpy",
"typingsPackageName": "cpy",
"sourceRepoURL": "https://github.com/sindresorhus/cpy",
"asOfVersion": "7.1.1"
},
{
"libraryName": "cypress",
"typingsPackageName": "cypress",
@@ -402,18 +462,36 @@
"sourceRepoURL": "https://github.com/DataDog/dd-trace-js",
"asOfVersion": "0.9.0"
},
{
"libraryName": "decamelize",
"typingsPackageName": "decamelize",
"sourceRepoURL": "https://github.com/sindresorhus/decamelize",
"asOfVersion": "3.0.1"
},
{
"libraryName": "decimal.js",
"typingsPackageName": "decimal.js",
"sourceRepoURL": "https://github.com/MikeMcl/decimal.js",
"asOfVersion": "7.4.0"
},
{
"libraryName": "decompress-response",
"typingsPackageName": "decompress-response",
"sourceRepoURL": "https://github.com/sindresorhus/decompress-response",
"asOfVersion": "4.1.0"
},
{
"libraryName": "deepmerge",
"typingsPackageName": "deepmerge",
"sourceRepoURL": "git@github.com:KyleAMathews/deepmerge.git",
"asOfVersion": "2.2.0"
},
{
"libraryName": "del",
"typingsPackageName": "del",
"sourceRepoURL": "https://github.com/sindresorhus/del",
"asOfVersion": "4.0.0"
},
{
"libraryName": "delay",
"typingsPackageName": "delay",
@@ -444,6 +522,12 @@
"sourceRepoURL": "https://github.com/joyent/docker-file-parser",
"asOfVersion": "1.0.3"
},
{
"libraryName": "dom-loaded",
"typingsPackageName": "dom-loaded",
"sourceRepoURL": "https://github.com/sindresorhus/dom-loaded",
"asOfVersion": "1.1.0"
},
{
"libraryName": "dot-case",
"typingsPackageName": "dot-case",
@@ -486,6 +570,12 @@
"sourceRepoURL": "https://github.com/eggjs/egg",
"asOfVersion": "1.5.0"
},
{
"libraryName": "elastic-apm-node",
"typingsPackageName": "elastic-apm-node",
"sourceRepoURL": "https://github.com/elastic/apm-agent-nodejs",
"asOfVersion": "2.7.0"
},
{
"libraryName": "electron",
"typingsPackageName": "electron",
@@ -498,6 +588,12 @@
"sourceRepoURL": "https://github.com/loopline-systems/electron-builder",
"asOfVersion": "2.8.0"
},
{
"libraryName": "element-ready",
"typingsPackageName": "element-ready",
"sourceRepoURL": "https://github.com/sindresorhus/element-ready",
"asOfVersion": "3.1.0"
},
{
"libraryName": "email-addresses",
"typingsPackageName": "email-addresses",
@@ -510,6 +606,12 @@
"sourceRepoURL": "https://github.com/Sembiance/email-validator",
"asOfVersion": "1.0.6"
},
{
"libraryName": "env-paths",
"typingsPackageName": "env-paths",
"sourceRepoURL": "https://github.com/sindresorhus/env-paths",
"asOfVersion": "2.1.0"
},
{
"libraryName": "error-stack-parser",
"typingsPackageName": "error-stack-parser",
@@ -606,6 +708,24 @@
"sourceRepoURL": "https://github.com/taylorhakes/fecha",
"asOfVersion": "2.3.1"
},
{
"libraryName": "file-type",
"typingsPackageName": "file-type",
"sourceRepoURL": "https://github.com/sindresorhus/file-type",
"asOfVersion": "10.9.1"
},
{
"libraryName": "filenamify",
"typingsPackageName": "filenamify",
"sourceRepoURL": "https://github.com/sindresorhus/filenamify",
"asOfVersion": "3.0.0"
},
{
"libraryName": "filenamify-url",
"typingsPackageName": "filenamify-url",
"sourceRepoURL": "https://github.com/sindresorhus/filenamify-url",
"asOfVersion": "2.0.0"
},
{
"libraryName": "FineUploader",
"typingsPackageName": "fine-uploader",
@@ -618,6 +738,12 @@
"sourceRepoURL": "https://www.firebase.com/docs/javascript/firebase",
"asOfVersion": "3.2.1"
},
{
"libraryName": "fkill",
"typingsPackageName": "fkill",
"sourceRepoURL": "https://github.com/sindresorhus/fkill",
"asOfVersion": "6.0.0"
},
{
"libraryName": "flatpickr",
"typingsPackageName": "flatpickr",
@@ -666,6 +792,18 @@
"sourceRepoURL": "https://github.com/manuelbieh/Geolib",
"asOfVersion": "2.0.23"
},
{
"libraryName": "get-port",
"typingsPackageName": "get-port",
"sourceRepoURL": "https://github.com/sindresorhus/get-port",
"asOfVersion": "4.2.0"
},
{
"libraryName": "get-stream",
"typingsPackageName": "get-stream",
"sourceRepoURL": "https://github.com/sindresorhus/get-stream",
"asOfVersion": "5.0.0"
},
{
"libraryName": "github",
"typingsPackageName": "github",
@@ -678,6 +816,12 @@
"sourceRepoURL": "https://github.com/jdalrymple/node-gitlab",
"asOfVersion": "2.0.0"
},
{
"libraryName": "globby",
"typingsPackageName": "globby",
"sourceRepoURL": "https://github.com/sindresorhus/globby",
"asOfVersion": "9.1.0"
},
{
"libraryName": "Google Cloud Storage",
"typingsPackageName": "google-cloud__storage",
@@ -714,12 +858,30 @@
"sourceRepoURL": "https://github.com/ivogabe/gulp-typescript",
"asOfVersion": "2.13.0"
},
{
"libraryName": "handlebars",
"typingsPackageName": "handlebars",
"sourceRepoURL": "https://github.com/wycats/handlebars.js",
"asOfVersion": "4.1.0"
},
{
"libraryName": "handsontable",
"typingsPackageName": "handsontable",
"sourceRepoURL": "https://handsontable.com/",
"asOfVersion": "0.35.0"
},
{
"libraryName": "has-yarn",
"typingsPackageName": "has-yarn",
"sourceRepoURL": "https://github.com/sindresorhus/has-yarn",
"asOfVersion": "2.0.0"
},
{
"libraryName": "hasha",
"typingsPackageName": "hasha",
"sourceRepoURL": "https://github.com/sindresorhus/hasha",
"asOfVersion": "4.0.0"
},
{
"libraryName": "hibp",
"typingsPackageName": "hibp",
@@ -738,6 +900,12 @@
"sourceRepoURL": "https://github.com/prettymuchbryce/node-http-status",
"asOfVersion": "1.2.0"
},
{
"libraryName": "humanize-string",
"typingsPackageName": "humanize-string",
"sourceRepoURL": "https://github.com/sindresorhus/humanize-string",
"asOfVersion": "2.0.1"
},
{
"libraryName": "i18next-browser-languagedetector",
"typingsPackageName": "i18next-browser-languagedetector",
@@ -762,6 +930,12 @@
"sourceRepoURL": "https://github.com/bpmn-io/ids",
"asOfVersion": "0.2.2"
},
{
"libraryName": "image-type",
"typingsPackageName": "image-type",
"sourceRepoURL": "https://github.com/sindresorhus/image-type",
"asOfVersion": "4.0.1"
},
{
"libraryName": "immutability-helper",
"typingsPackageName": "immutability-helper",
@@ -786,6 +960,12 @@
"sourceRepoURL": "https://github.com/sindresorhus/internal-ip",
"asOfVersion": "4.1.0"
},
{
"libraryName": "into-stream",
"typingsPackageName": "into-stream",
"sourceRepoURL": "https://github.com/sindresorhus/into-stream",
"asOfVersion": "5.0.0"
},
{
"libraryName": "inversify",
"typingsPackageName": "inversify",
@@ -834,12 +1014,30 @@
"sourceRepoURL": "https://github.com/blakeembrey/is-lower-case",
"asOfVersion": "1.1.2"
},
{
"libraryName": "is-online",
"typingsPackageName": "is-online",
"sourceRepoURL": "https://github.com/sindresorhus/is-online",
"asOfVersion": "8.1.0"
},
{
"libraryName": "is-plain-object",
"typingsPackageName": "is-plain-object",
"sourceRepoURL": "https://github.com/jonschlinkert/is-plain-object",
"asOfVersion": "2.0.4"
},
{
"libraryName": "is-scoped",
"typingsPackageName": "is-scoped",
"sourceRepoURL": "https://github.com/sindresorhus/is-scoped",
"asOfVersion": "2.0.0"
},
{
"libraryName": "is-svg",
"typingsPackageName": "is-svg",
"sourceRepoURL": "https://github.com/sindresorhus/is-svg",
"asOfVersion": "4.0.1"
},
{
"libraryName": "is-upper-case",
"typingsPackageName": "is-upper-case",
@@ -918,6 +1116,12 @@
"sourceRepoURL": "https://github.com/keycloak/keycloak",
"asOfVersion": "3.4.1"
},
{
"libraryName": "knex",
"typingsPackageName": "knex",
"sourceRepoURL": "https://github.com/tgriesser/knex",
"asOfVersion": "0.16.1"
},
{
"libraryName": "knockout-paging",
"typingsPackageName": "knockout-paging",
@@ -942,6 +1146,12 @@
"sourceRepoURL": "https://github.com/elitechance/lambda-phi",
"asOfVersion": "1.0.1"
},
{
"libraryName": "latest-version",
"typingsPackageName": "latest-version",
"sourceRepoURL": "https://github.com/sindresorhus/latest-version",
"asOfVersion": "5.0.0"
},
{
"libraryName": "ldclient-js",
"typingsPackageName": "ldclient-js",
@@ -954,6 +1164,12 @@
"sourceRepoURL": "https://github.com/stevemao/left-pad",
"asOfVersion": "1.2.0"
},
{
"libraryName": "leven",
"typingsPackageName": "leven",
"sourceRepoURL": "https://github.com/sindresorhus/leven",
"asOfVersion": "3.0.0"
},
{
"libraryName": "Linq.JS",
"typingsPackageName": "linq",
@@ -990,6 +1206,12 @@
"sourceRepoURL": "https://github.com/steelsojka/lodash-decorators",
"asOfVersion": "4.0.0"
},
{
"libraryName": "log-update",
"typingsPackageName": "log-update",
"sourceRepoURL": "https://github.com/sindresorhus/log-update",
"asOfVersion": "3.1.0"
},
{
"libraryName": "log4javascript",
"typingsPackageName": "log4javascript",
@@ -1014,6 +1236,12 @@
"sourceRepoURL": "https://github.com/blakeembrey/lower-case-first",
"asOfVersion": "1.0.1"
},
{
"libraryName": "make-dir",
"typingsPackageName": "make-dir",
"sourceRepoURL": "https://github.com/sindresorhus/make-dir",
"asOfVersion": "2.1.0"
},
{
"libraryName": "mali",
"typingsPackageName": "mali",
@@ -1032,6 +1260,12 @@
"sourceRepoURL": "https://github.com/runk/node-maxmind",
"asOfVersion": "2.0.5"
},
{
"libraryName": "mem",
"typingsPackageName": "mem",
"sourceRepoURL": "https://github.com/sindresorhus/mem",
"asOfVersion": "4.2.0"
},
{
"libraryName": "mendixmodelsdk",
"typingsPackageName": "mendixmodelsdk",
@@ -1086,6 +1320,12 @@
"sourceRepoURL": "https://github.com/LearnBoost/monk.git",
"asOfVersion": "6.0.0"
},
{
"libraryName": "move-file",
"typingsPackageName": "move-file",
"sourceRepoURL": "https://github.com/sindresorhus/move-file",
"asOfVersion": "1.1.0"
},
{
"libraryName": "MQTT",
"typingsPackageName": "mqtt",
@@ -1116,12 +1356,48 @@
"sourceRepoURL": "http://fian.my.id/Waves",
"asOfVersion": "0.7.6"
},
{
"libraryName": "normalize-url",
"typingsPackageName": "normalize-url",
"sourceRepoURL": "https://github.com/sindresorhus/normalize-url",
"asOfVersion": "4.2.0"
},
{
"libraryName": "Normalizr",
"typingsPackageName": "normalizr",
"sourceRepoURL": "https://github.com/paularmstrong/normalizr",
"asOfVersion": "2.0.18"
},
{
"libraryName": "npm-email",
"typingsPackageName": "npm-email",
"sourceRepoURL": "https://github.com/sindresorhus/npm-email",
"asOfVersion": "3.1.0"
},
{
"libraryName": "npm-keyword",
"typingsPackageName": "npm-keyword",
"sourceRepoURL": "https://github.com/sindresorhus/npm-keyword",
"asOfVersion": "6.0.0"
},
{
"libraryName": "npm-name",
"typingsPackageName": "npm-name",
"sourceRepoURL": "https://github.com/sindresorhus/npm-name",
"asOfVersion": "5.2.1"
},
{
"libraryName": "npm-run-path",
"typingsPackageName": "npm-run-path",
"sourceRepoURL": "https://github.com/sindresorhus/npm-run-path",
"asOfVersion": "3.0.1"
},
{
"libraryName": "npm-user",
"typingsPackageName": "npm-user",
"sourceRepoURL": "https://github.com/sindresorhus/npm-user",
"asOfVersion": "4.0.0"
},
{
"libraryName": "Nuka Carousel",
"typingsPackageName": "nuka-carousel",
@@ -1134,24 +1410,186 @@
"sourceRepoURL": "https://github.com/foretagsplatsen/numbro/",
"asOfVersion": "1.9.3"
},
{
"libraryName": "on-change",
"typingsPackageName": "on-change",
"sourceRepoURL": "https://github.com/sindresorhus/on-change",
"asOfVersion": "1.1.0"
},
{
"libraryName": "Onsen UI",
"typingsPackageName": "onsenui",
"sourceRepoURL": "http://onsen.io",
"asOfVersion": "2.0.0"
},
{
"libraryName": "opn",
"typingsPackageName": "opn",
"sourceRepoURL": "https://github.com/sindresorhus/opn",
"asOfVersion": "5.5.0"
},
{
"libraryName": "ora",
"typingsPackageName": "ora",
"sourceRepoURL": "https://github.com/sindresorhus/ora",
"asOfVersion": "3.2.0"
},
{
"libraryName": "p-any",
"typingsPackageName": "p-any",
"sourceRepoURL": "https://github.com/sindresorhus/p-any",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-cancelable",
"typingsPackageName": "p-cancelable",
"sourceRepoURL": "https://github.com/sindresorhus/p-cancelable",
"asOfVersion": "1.1.0"
},
{
"libraryName": "p-catch-if",
"typingsPackageName": "p-catch-if",
"sourceRepoURL": "https://github.com/sindresorhus/p-catch-if",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-debounce",
"typingsPackageName": "p-debounce",
"sourceRepoURL": "https://github.com/sindresorhus/p-debounce",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-each-series",
"typingsPackageName": "p-each-series",
"sourceRepoURL": "https://github.com/sindresorhus/p-each-series",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-event",
"typingsPackageName": "p-event",
"sourceRepoURL": "https://github.com/sindresorhus/p-event",
"asOfVersion": "3.0.0"
},
{
"libraryName": "p-every",
"typingsPackageName": "p-every",
"sourceRepoURL": "https://github.com/kevva/p-every",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-limit",
"typingsPackageName": "p-limit",
"sourceRepoURL": "https://github.com/sindresorhus/p-limit",
"asOfVersion": "2.2.0"
},
{
"libraryName": "p-locate",
"typingsPackageName": "p-locate",
"sourceRepoURL": "https://github.com/sindresorhus/p-locate",
"asOfVersion": "4.0.0"
},
{
"libraryName": "p-log",
"typingsPackageName": "p-log",
"sourceRepoURL": "https://github.com/sindresorhus/p-log",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-map",
"typingsPackageName": "p-map",
"sourceRepoURL": "https://github.com/sindresorhus/p-map",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-map-series",
"typingsPackageName": "p-map-series",
"sourceRepoURL": "https://github.com/sindresorhus/p-map-series",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-memoize",
"typingsPackageName": "p-memoize",
"sourceRepoURL": "https://github.com/sindresorhus/p-memoize",
"asOfVersion": "3.0.0"
},
{
"libraryName": "p-one",
"typingsPackageName": "p-one",
"sourceRepoURL": "https://github.com/kevva/p-one",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-pipe",
"typingsPackageName": "p-pipe",
"sourceRepoURL": "https://github.com/sindresorhus/p-pipe",
"asOfVersion": "2.0.1"
},
{
"libraryName": "p-progress",
"typingsPackageName": "p-progress",
"sourceRepoURL": "https://github.com/sindresorhus/p-progress",
"asOfVersion": "0.3.0"
},
{
"libraryName": "p-props",
"typingsPackageName": "p-props",
"sourceRepoURL": "https://github.com/sindresorhus/p-props",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-queue",
"typingsPackageName": "p-queue",
"sourceRepoURL": "https://github.com/sindresorhus/p-queue",
"asOfVersion": "3.2.1"
},
{
"libraryName": "p-reduce",
"typingsPackageName": "p-reduce",
"sourceRepoURL": "https://github.com/sindresorhus/p-reduce",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-retry",
"typingsPackageName": "p-retry",
"sourceRepoURL": "https://github.com/sindresorhus/p-retry",
"asOfVersion": "4.0.0"
},
{
"libraryName": "p-series",
"typingsPackageName": "p-series",
"sourceRepoURL": "https://github.com/sindresorhus/p-series",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-some",
"typingsPackageName": "p-some",
"sourceRepoURL": "https://github.com/sindresorhus/p-some",
"asOfVersion": "4.0.1"
},
{
"libraryName": "p-tap",
"typingsPackageName": "p-tap",
"sourceRepoURL": "https://github.com/sindresorhus/p-tap",
"asOfVersion": "2.0.0"
},
{
"libraryName": "p-throttle",
"typingsPackageName": "p-throttle",
"sourceRepoURL": "https://github.com/sindresorhus/p-throttle",
"asOfVersion": "2.1.0"
},
{
"libraryName": "p-timeout",
"typingsPackageName": "p-timeout",
"sourceRepoURL": "https://github.com/sindresorhus/p-timeout",
"asOfVersion": "3.0.0"
},
{
"libraryName": "package-json",
"typingsPackageName": "package-json",
"sourceRepoURL": "https://github.com/sindresorhus/package-json",
"asOfVersion": "6.1.0"
},
{
"libraryName": "param-case",
"typingsPackageName": "param-case",
@@ -1176,12 +1614,24 @@
"sourceRepoURL": "https://github.com/blakeembrey/path-case",
"asOfVersion": "1.1.2"
},
{
"libraryName": "path-key",
"typingsPackageName": "path-key",
"sourceRepoURL": "https://github.com/sindresorhus/path-key",
"asOfVersion": "3.0.1"
},
{
"libraryName": "path-to-regexp",
"typingsPackageName": "path-to-regexp",
"sourceRepoURL": "https://github.com/pillarjs/path-to-regexp",
"asOfVersion": "1.7.0"
},
{
"libraryName": "path-type",
"typingsPackageName": "path-type",
"sourceRepoURL": "https://github.com/sindresorhus/path-type",
"asOfVersion": "4.0.0"
},
{
"libraryName": "perfect-scrollbar",
"typingsPackageName": "perfect-scrollbar",
@@ -1218,12 +1668,36 @@
"sourceRepoURL": "https://github.com/PeculiarVentures/pkcs11js",
"asOfVersion": "1.0.4"
},
{
"libraryName": "pkg-conf",
"typingsPackageName": "pkg-conf",
"sourceRepoURL": "https://github.com/sindresorhus/pkg-conf",
"asOfVersion": "3.0.0"
},
{
"libraryName": "pkg-dir",
"typingsPackageName": "pkg-dir",
"sourceRepoURL": "https://github.com/sindresorhus/pkg-dir",
"asOfVersion": "4.0.0"
},
{
"libraryName": "pkg-versions",
"typingsPackageName": "pkg-versions",
"sourceRepoURL": "https://github.com/sindresorhus/pkg-versions",
"asOfVersion": "2.0.0"
},
{
"libraryName": "plottable",
"typingsPackageName": "plottable",
"sourceRepoURL": "http://plottablejs.org/",
"asOfVersion": "3.7.0"
},
{
"libraryName": "png-async",
"typingsPackageName": "png-async",
"sourceRepoURL": "https://github.com/kanreisa/node-png-async",
"asOfVersion": "0.9.4"
},
{
"libraryName": "poly2tri.js",
"typingsPackageName": "poly2tri",
@@ -1254,6 +1728,12 @@
"sourceRepoURL": "https://github.com/angular/protractor",
"asOfVersion": "4.0.0"
},
{
"libraryName": "ps-list",
"typingsPackageName": "ps-list",
"sourceRepoURL": "https://github.com/sindresorhus/ps-list",
"asOfVersion": "6.2.1"
},
{
"libraryName": "qiniu",
"typingsPackageName": "qiniu",
@@ -1266,6 +1746,18 @@
"sourceRepoURL": "https://github.com/kazuhikoarase/qrcode-generator",
"asOfVersion": "1.0.6"
},
{
"libraryName": "query-string",
"typingsPackageName": "query-string",
"sourceRepoURL": "https://github.com/sindresorhus/query-string",
"asOfVersion": "6.3.0"
},
{
"libraryName": "quick-lru",
"typingsPackageName": "quick-lru",
"sourceRepoURL": "https://github.com/sindresorhus/quick-lru",
"asOfVersion": "3.0.0"
},
{
"libraryName": "Raven JS",
"typingsPackageName": "raven-js",
@@ -1392,6 +1884,12 @@
"sourceRepoURL": "https://github.com/tanem/react-svg",
"asOfVersion": "5.0.0"
},
{
"libraryName": "read-chunk",
"typingsPackageName": "read-chunk",
"sourceRepoURL": "https://github.com/sindresorhus/read-chunk",
"asOfVersion": "3.1.0"
},
{
"libraryName": "realm",
"typingsPackageName": "realm",
@@ -1530,6 +2028,12 @@
"sourceRepoURL": "https://github.com/Lellansin/node-scanf",
"asOfVersion": "0.7.3"
},
{
"libraryName": "screenfull",
"typingsPackageName": "screenfull",
"sourceRepoURL": "https://github.com/sindresorhus/screenfull.js",
"asOfVersion": "4.1.0"
},
{
"libraryName": "sendgrid",
"typingsPackageName": "sendgrid",
@@ -1566,6 +2070,18 @@
"sourceRepoURL": "https://github.com/zeh/simplesignal",
"asOfVersion": "1.0.0"
},
{
"libraryName": "@sindresorhus/df",
"typingsPackageName": "sindresorhus__df",
"sourceRepoURL": "https://github.com/sindresorhus/df",
"asOfVersion": "3.0.0"
},
{
"libraryName": "@sindresorhus/slugify",
"typingsPackageName": "sindresorhus__slugify",
"sourceRepoURL": "https://github.com/sindresorhus/slugify",
"asOfVersion": "0.9.1"
},
{
"libraryName": "sip.js",
"typingsPackageName": "sip.js",
@@ -1626,6 +2142,12 @@
"sourceRepoURL": "https://servicestack.net/",
"asOfVersion": "0.1.5"
},
{
"libraryName": "@storybook/addon-notes",
"typingsPackageName": "storybook__addon-notes",
"sourceRepoURL": "https://github.com/storybooks/storybook",
"asOfVersion": "5.0.0"
},
{
"libraryName": "striptags",
"typingsPackageName": "striptags",
@@ -1674,6 +2196,12 @@
"sourceRepoURL": "http://tabrisjs.com",
"asOfVersion": "1.8.0"
},
{
"libraryName": "tabris-plugin-firebase",
"typingsPackageName": "tabris-plugin-firebase",
"sourceRepoURL": "https://github.com/eclipsesource/tabris-plugin-firebase",
"asOfVersion": "2.1.0"
},
{
"libraryName": "tcomb",
"typingsPackageName": "tcomb",
@@ -1686,6 +2214,12 @@
"sourceRepoURL": "https://github.com/terser-js/terser",
"asOfVersion": "3.12.0"
},
{
"libraryName": "time-span",
"typingsPackageName": "time-span",
"sourceRepoURL": "https://github.com/sindresorhus/time-span",
"asOfVersion": "3.0.1"
},
{
"libraryName": "timezonecomplete",
"typingsPackageName": "timezonecomplete",
@@ -1698,6 +2232,12 @@
"sourceRepoURL": "https://github.com/blakeembrey/title-case",
"asOfVersion": "1.1.2"
},
{
"libraryName": "trash",
"typingsPackageName": "trash",
"sourceRepoURL": "https://github.com/sindresorhus/trash",
"asOfVersion": "5.0.1"
},
{
"libraryName": "TsMonad",
"typingsPackageName": "tsmonad",
@@ -1746,6 +2286,12 @@
"sourceRepoURL": "https://github.com/kriasoft/universal-router",
"asOfVersion": "8.0.0"
},
{
"libraryName": "unused-filename",
"typingsPackageName": "unused-filename",
"sourceRepoURL": "https://github.com/sindresorhus/unused-filename",
"asOfVersion": "2.0.0"
},
{
"libraryName": "upper-case",
"typingsPackageName": "upper-case",
@@ -1800,6 +2346,18 @@
"sourceRepoURL": "https://github.com/vuejs/vue-router",
"asOfVersion": "2.0.0"
},
{
"libraryName": "wait-for-localhost",
"typingsPackageName": "wait-for-localhost",
"sourceRepoURL": "https://github.com/sindresorhus/wait-for-localhost",
"asOfVersion": "3.1.0"
},
{
"libraryName": "wallpaper",
"typingsPackageName": "wallpaper",
"sourceRepoURL": "https://github.com/sindresorhus/wallpaper",
"asOfVersion": "4.3.0"
},
{
"libraryName": "webcola",
"typingsPackageName": "webcola",
@@ -1880,9 +2438,9 @@
},
{
"libraryName": "@xmpp/jid",
"typingsPackageName": "xmpp-jid",
"typingsPackageName": "xmpp__jid",
"sourceRepoURL": "github.com/node-xmpp/node-xmpp/",
"asOfVersion": "1.2.0"
"asOfVersion": "1.2.1"
},
{
"libraryName": "xterm.js",
@@ -1896,6 +2454,12 @@
"sourceRepoURL": "none",
"asOfVersion": "2.1.0"
},
{
"libraryName": "zapier-platform-core",
"typingsPackageName": "zapier-platform-core",
"sourceRepoURL": "https://github.com/zapier/zapier-platform-core",
"asOfVersion": "6.1.1"
},
{
"libraryName": "zetapush-js",
"typingsPackageName": "zetapush-js",
+1
View File
@@ -17,6 +17,7 @@
"scripts": {
"compile-scripts": "tsc -p scripts",
"not-needed": "node scripts/not-needed.js",
"update-codeowners": "node scripts/update-codeowners.js",
"test": "node node_modules/types-publisher/bin/tester/test.js --run-from-definitely-typed",
"lint": "dtslint types"
},
+4 -7
View File
@@ -1,13 +1,10 @@
{
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"strictNullChecks": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"strict": true,
"baseUrl": "../types",
"typeRoots": [
"../types"
@@ -15,4 +12,4 @@
"types": [],
"forceConsistentCasingInFileNames": true
}
}
}
+126
View File
@@ -0,0 +1,126 @@
/// <reference lib="esnext.asynciterable" />
// Must reference esnext.asynciterable lib, since octokit uses AsyncIterable internally
const cp = require("child_process");
const Octokit = require("@octokit/rest");
const { AllPackages, getDefinitelyTyped, loggerWithErrors,
parseDefinitions, parseNProcesses, clean } = require("types-publisher");
const { writeFile } = require("fs-extra");
async function main() {
const options = { definitelyTypedPath: ".", progress: false, parseInParallel: true };
const log = loggerWithErrors()[0];
clean();
const dt = await getDefinitelyTyped(options, log);
await parseDefinitions(dt, { nProcesses: parseNProcesses(), definitelyTypedPath: "." }, log);
const allPackages = await AllPackages.read(dt);
const typings = allPackages.allTypings();
const maxPathLen = Math.max(...typings.map(t => t.subDirectoryPath.length));
const entries = mapDefined(typings, t => getEntry(t, maxPathLen));
await writeFile([options.definitelyTypedPath, ".github", "CODEOWNERS"].join("/"), `${header}\n\n${entries.join("\n")}\n`, { encoding: "utf-8" });
}
const token = /** @type {string} */(process.env.GH_TOKEN);
const gh = new Octokit();
const reviewers = ["weswigham", "sandersn", "RyanCavanaugh"]
const now = new Date();
const branchName = `codeowner-update-${now.getFullYear()}${padNum(now.getMonth())}${padNum(now.getDay())}`;
const remoteUrl = `https://${token}@github.com/DefinitelyTyped/DefinitelyTyped.git`;
runSequence([
["git", ["checkout", "."]], // reset any changes
]);
main().then(() => {
runSequence([
["git", ["checkout", "-b", branchName]], // create a branch
["git", ["add", ".github/CODEOWNERS"]], // Add CODEOWNERS
["git", ["commit", "-m", `"Update CODEOWNERS"`]], // Commit all changes
["git", ["remote", "add", "fork", remoteUrl]], // Add the remote fork
["git", ["push", "--set-upstream", "fork", branchName, "-f"]] // push the branch
]);
gh.authenticate({
type: "token",
token,
});
return gh.pulls.create({
owner: "DefinitelyTyped",
repo: "DefinitelyTyped",
maintainer_can_modify: true,
title: `🤖 CODEOWNERS has changed`,
head: `DefinitelyTyped:${branchName}`,
base: "master",
body:
`Please review the diff and merge if no changes are unexpected.
cc ${reviewers.map(r => "@" + r).join(" ")}`,
})
}).then(r => {
const num = r.data.number;
console.log(`Pull request ${num} created.`);
return gh.pulls.createReviewRequest({
owner: "DefinitelyTyped",
repo: "DefinitelyTyped",
number: num,
reviewers,
});
}).then(() => {
console.log(`Reviewers requested, done.`);
}).catch(e => {
console.error(e);
process.exit(1);
});
/** @param {[string, string[]][]} tasks */
function runSequence(tasks) {
for (const task of tasks) {
console.log(`${task[0]} ${task[1].join(" ")}`);
const result = cp.spawnSync(task[0], task[1], { timeout: 100000, shell: true, stdio: "inherit" });
if (result.status !== 0) throw new Error(`${task[0]} ${task[1].join(" ")} failed: ${result.stderr && result.stderr.toString()}`);
}
}
/** @param {number} number */
function padNum(number) {
const str = "" + number;
return str.length >= 2 ? str : "0" + str;
}
const header =
`# This file is generated.
# Add yourself to the "Definitions by:" list instead.
# See https://github.com/DefinitelyTyped/DefinitelyTyped#edit-an-existing-package`;
/**
* @param { { contributors: ReadonlyArray<{githubUsername?: string }>, subDirectoryPath: string} } pkg
* @param {number} maxPathLen
* @return {string | undefined}
*/
function getEntry(pkg, maxPathLen) {
const users = mapDefined(pkg.contributors, c => c.githubUsername);
if (!users.length) {
return undefined;
}
const path = `${pkg.subDirectoryPath}/`.padEnd(maxPathLen);
return `/types/${path} ${users.map(u => `@${u}`).join(" ")}`;
}
/**
* @template T,U
* @param {ReadonlyArray<T>} arr
* @param {(t: T) => U | undefined} mapper
* @return U[]
*/
function mapDefined(arr, mapper) {
const out = [];
for (const a of arr) {
const res = mapper(a);
if (res !== undefined) {
out.push(res);
}
}
return out;
}
+1
View File
@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,
+1
View File
@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,
+1
View File
@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,
+1
View File
@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,
+1 -1
View File
@@ -13,7 +13,7 @@ export class DirectUpload {
file: File;
url: string;
constructor(file: File, url: string, delegate: DirectUploadDelegate)
constructor(file: File, url: string, delegate?: DirectUploadDelegate)
create(callback: (error: Error, blob: Blob) => void): void;
}
+1 -1
View File
@@ -1,3 +1,3 @@
import addZero from "add-zero";
import addZero = require("add-zero");
addZero(5, 2);
+2 -1
View File
@@ -3,4 +3,5 @@
// Definitions by: Giles Roadnight <https://github.com/Roaders>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
export default function addZero(value: string | number, digits?: number): string;
export = addZero;
declare function addZero(value: string | number, digits?: number): string;
+1
View File
@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,
+1 -1
View File
@@ -30,7 +30,7 @@ declare namespace adone.collection {
/**
* Ends the stream
*/
end(chunk?: Buffer): void;
end(chunk?: Buffer | string): void;
end(chunk?: () => void): void;
/**
+1 -1
View File
@@ -2,7 +2,7 @@
// Project: https://github.com/ciferox/adone
// Definitions by: am <https://github.com/s0m3on3>, Maximus <https://github.com/maxveres>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.6
// TypeScript Version: 2.8
/// <reference path="./adone.d.ts" />
/// <reference path="./glosses/app.d.ts" />
+2 -2
View File
@@ -223,7 +223,7 @@ namespace adoneTests.system.process {
});
ret.on("message", () => {});
ret.stdout.pipe(adone.fs.createWriteStream(__filename));
ret.stdout!.pipe(adone.fs.createWriteStream(__filename));
}
}
@@ -811,7 +811,7 @@ namespace adoneTests.system.process {
});
ret.on("message", () => {});
ret.stdout.pipe(adone.fs.createWriteStream(__filename));
ret.stdout!.pipe(adone.fs.createWriteStream(__filename));
}
}
+3 -2
View File
@@ -13,6 +13,7 @@
"no-unnecessary-qualifier": false,
"unified-signatures": false,
"space-before-function-paren": false,
"await-promise": false
"await-promise": false,
"no-restricted-globals": false
}
}
}
+1
View File
@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,
@@ -1,9 +0,0 @@
import AggregateError = require('aggregate-error');
const err = new AggregateError([new Error('foo'), 'bar']);
for (const el of Array.from(err)) {
const err: Error = el;
}
throw err;
-12
View File
@@ -1,12 +0,0 @@
// Type definitions for aggregate-error 1.0
// Project: https://github.com/sindresorhus/aggregate-error#readme
// Definitions by: BendingBender <https://github.com/BendingBender>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
export = AggregateError;
declare class AggregateError extends Error implements Iterable<Error> {
constructor(errors: Iterable<Error | string>);
[Symbol.iterator](): Iterator<Error>;
}
@@ -104,12 +104,13 @@ AirbnbPropTypes.forbidExtraProps<ForbidShape>({
// $ExpectType Requireable<number>
AirbnbPropTypes.integer();
// $ExpectType Requireable<{}>
AirbnbPropTypes.keysOf(PropTypes.number);
// $ExpectType Requireable<{}>
AirbnbPropTypes.keysOf(PropTypes.number, 'foo');
// $ExpectType Requireable<{}>
AirbnbPropTypes.keysOf(PropTypes.oneOf(['foo', 'bar']));
const top = (<T>(x?: T): T => x!)();
type Top = typeof top;
declare function validateRequireableTop(x: React.Requireable<Top>): void;
validateRequireableTop(AirbnbPropTypes.keysOf(PropTypes.number));
validateRequireableTop(AirbnbPropTypes.keysOf(PropTypes.number, 'foo'));
validateRequireableTop(AirbnbPropTypes.keysOf(PropTypes.oneOf(['foo', 'bar'])));
// $ExpectType Requireable<number>
AirbnbPropTypes.mutuallyExclusiveProps(PropTypes.number);
@@ -137,8 +138,8 @@ AirbnbPropTypes.nonNegativeNumber();
// $ExpectType Requireable<string>
AirbnbPropTypes.numericString();
// $ExpectType Requireable<{}>
AirbnbPropTypes.object();
// $ExpectType Requireable<object>
const props: PropTypes.Requireable<object> = AirbnbPropTypes.object();
// $ExpectType Requireable<{ foo: string; }>
AirbnbPropTypes.object<{ foo: string }>();
@@ -151,28 +152,25 @@ AirbnbPropTypes.range(0, 10);
// $ExpectType Requireable<5>
AirbnbPropTypes.range<5>(0, 10);
// $ExpectType Requireable<ReactLegacyRefLike<HTMLElement>>
AirbnbPropTypes.ref();
// $ExpectType Requireable<string | null>
AirbnbPropTypes.requiredBy('foo', PropTypes.string);
// $ExpectType Validator<number>
AirbnbPropTypes.requiredBy('bar', PropTypes.number, 42).isRequired;
// $ExpectType Requireable<{}>
AirbnbPropTypes.restrictedProp();
// $ExpectType Requireable<{}>
AirbnbPropTypes.restrictedProp(() => 'Error');
// $ExpectType Requireable<{}>
AirbnbPropTypes.restrictedProp(() => new Error('Error'));
validateRequireableTop(AirbnbPropTypes.restrictedProp());
validateRequireableTop(AirbnbPropTypes.restrictedProp(() => 'Error'));
validateRequireableTop(AirbnbPropTypes.restrictedProp(() => new Error('Error')));
// $ExpectType Requireable<{}>
AirbnbPropTypes.sequenceOf({ validator: PropTypes.number });
// $ExpectType Requireable<{}>
AirbnbPropTypes.sequenceOf({ validator: PropTypes.number }, { validator: PropTypes.string });
// $ExpectType Requireable<{}>
AirbnbPropTypes.sequenceOf(
validateRequireableTop(AirbnbPropTypes.sequenceOf({ validator: PropTypes.number }));
validateRequireableTop(AirbnbPropTypes.sequenceOf({ validator: PropTypes.number }, { validator: PropTypes.string }));
validateRequireableTop(AirbnbPropTypes.sequenceOf(
{ validator: PropTypes.number, min: 0, max: 10 },
{ validator: PropTypes.string },
{ validator: PropTypes.bool },
);
));
interface ShapeShape {
foo: string;
+9 -1
View File
@@ -1,4 +1,4 @@
// Type definitions for airbnb-prop-types 2.11
// Type definitions for airbnb-prop-types 2.13
// Project: https://github.com/airbnb/prop-types
// Definitions by: Miles Johnson <https://github.com/milesj>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
@@ -24,6 +24,12 @@ export type ReactFunctionComponentLike = (...args: any[]) => PropTypes.ReactNode
export type ReactTypeLike = string | ReactClassComponentLike | ReactFunctionComponentLike;
export interface ReactRefLike<T> {
readonly current: T | null;
}
export type ReactLegacyRefLike<T> = ((instance: T | null) => void) | ReactRefLike<T>;
export interface Specifier<T = any> {
max?: number;
min?: number;
@@ -156,6 +162,8 @@ export function range<T extends number>(min?: number, max?: number): PropTypes.R
export function range(min?: number, max?: number): PropTypes.Requireable<number>;
export function ref<T = HTMLElement>(): PropTypes.Requireable<ReactLegacyRefLike<T>>;
export function requiredBy<P>(
requiredByPropName: string,
propType: PropTypes.Validator<P>,
+43
View File
@@ -0,0 +1,43 @@
import * as Airtable from 'airtable';
interface Row extends Airtable.FieldSet {
field1: string;
attachments: Airtable.Attachment[];
}
const airtable = new Airtable();
const base = airtable.base('app id');
const table = base('table name') as Airtable.Table<Row>;
async () => {
const query = table.select();
{
const rows = await query.all();
for (const row of rows) {
row.id; // $ExpectType string
row.fields.field1; // $ExpectType string
for (const attachment of row.fields.attachments) {
attachment.id; // $ExpectType string
attachment.filename; // $ExpectType string
attachment.size; // $ExpectType number
attachment.type; // $ExpectType string
attachment.url; // $ExpectType string
if (attachment.thumbnails) {
attachment.thumbnails.full.height; // $ExpectType number
attachment.thumbnails.full.width; // $ExpectType number
attachment.thumbnails.full.url; // $ExpectType string
attachment.thumbnails.large.height; // $ExpectType number
attachment.thumbnails.large.width; // $ExpectType number
attachment.thumbnails.large.url; // $ExpectType string
attachment.thumbnails.small.height; // $ExpectType number
attachment.thumbnails.small.width; // $ExpectType number
attachment.thumbnails.small.url; // $ExpectType string
}
}
}
}
};
+62
View File
@@ -0,0 +1,62 @@
// Type definitions for airtable 0.5
// Project: https://github.com/airtable/airtable.js
// Definitions by: Brandon Valosek <https://github.com/bvalosek>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2
export = Airtable;
declare global {
class Airtable {
base(appId: string): Airtable.Base;
}
namespace Airtable {
interface FieldSet {
[ key: string ]: undefined | string | ReadonlyArray<Attachment>;
}
interface Base {
(tableName: string): Table<{}>;
}
interface Table<TFields extends FieldSet> {
select(opt?: SelectOptions): Query<TFields>;
}
interface SelectOptions {
view?: string;
}
interface Query<TFields extends object> {
all(): Promise<Response<TFields>>;
firstPage(): Promise<Response<TFields>>;
}
type Response<TFields> = ReadonlyArray<Row<TFields>>;
interface Row<TFields> {
id: string;
fields: TFields;
}
interface Attachment {
id: string;
url: string;
filename: string;
size: number;
type: string;
thumbnails?: {
small: Thumbnail;
large: Thumbnail;
full: Thumbnail;
};
}
interface Thumbnail {
url: string;
width: number;
height: number;
}
}
}
@@ -18,6 +18,6 @@
},
"files": [
"index.d.ts",
"has-yarn-tests.ts"
"airtable-tests.ts"
]
}
+1
View File
@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,
@@ -98,6 +98,7 @@ let _algoliaIndexSettings: IndexSettings = {
placeholders: { '': [''] },
camelCaseAttributes: [''],
sortFacetValuesBy: 'count',
queryLanguages: ['fr', 'es'],
};
let _algoliaQueryParameters: QueryParameters = {
@@ -147,6 +148,7 @@ let _algoliaQueryParameters: QueryParameters = {
tagFilters: [''],
facetFilters: [''],
analytics: false,
clickAnalytics: true,
analyticsTags: [''],
synonyms: true,
replaceSynonymsInHighlight: false,
@@ -205,6 +207,11 @@ browser.on('error', function onError(err) {
browser.stop();
index.setSettings({ hitsPerPage: 10 }, () => {})
index.setSettings({ hitsPerPage: 10 }, { forwardToReplicas: true }, () => {})
index.setSettings({ hitsPerPage: 10 }).then(() => {})
index.setSettings({ hitsPerPage: 10 }, { forwardToReplicas: true }).then(() => {})
index.browse("", {
advancedSyntax: false,
attributesToRetrieve: ['dogs']
+30 -5
View File
@@ -1,4 +1,4 @@
// Type definitions for algoliasearch-client-js 3.30.0
// Type definitions for algoliasearch-client-js 3.30.1
// Project: https://github.com/algolia/algoliasearch-client-js
// Definitions by: Baptiste Coquelle <https://github.com/cbaptiste>
// Haroen Viaene <https://github.com/haroenv>
@@ -6,6 +6,8 @@
// Samuel Vaillant <https://github.com/samouss>
// Kai Eichinger <https://github.com/keichinger>
// Nery Ortez <https://github.com/neryortez>
// Antoine Rousseau <https://github.com/antoinerousseau>
// Luca Pasquale <https://github.com/lucapasquale>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
@@ -358,6 +360,15 @@ declare namespace algoliasearch {
settings: IndexSettings,
cb: (err: Error, res: Task) => void
): void;
/**
* Set an index settings
* https://github.com/algolia/algoliasearch-client-js#set-settings---setsettings
*/
setSettings(
settings: IndexSettings,
extra: { forwardToReplicas: boolean },
cb: (err: Error, res: Task) => void
): void;
/**
* Clear cache of an index
* https://github.com/algolia/algoliasearch-client-js#cache
@@ -586,7 +597,7 @@ declare namespace algoliasearch {
* Set an index settings
* https://github.com/algolia/algoliasearch-client-js#set-settings---setsettings
*/
setSettings(settings: IndexSettings): Promise<Task>;
setSettings(settings: IndexSettings, extra?: { forwardToReplicas: boolean }): Promise<Task>;
/**
* Search in an index
* https://github.com/algolia/algoliasearch-client-js#search-in-an-index---search
@@ -1425,6 +1436,12 @@ declare namespace algoliasearch {
* https://www.algolia.com/doc/api-reference/api-parameters/analytics/
*/
analytics?: boolean;
/**
* If set to true, enables the Click Analytics feature
* default false
* https://www.algolia.com/doc/api-reference/api-parameters/clickAnalytics/
*/
clickAnalytics?: boolean;
/**
* If set, tag your query with the specified identifiers
* default: []
@@ -1778,12 +1795,20 @@ declare namespace algoliasearch {
};
/**
* List of attributes on which to do a decomposition of camel case words.
*
https://www.algolia.com/doc/api-reference/api-parameters/camelCaseAttributes/
* https://www.algolia.com/doc/api-reference/api-parameters/camelCaseAttributes/
*/
camelCaseAttributes?: string[];
/**
* Controls how facet values are sorted.
* https://www.algolia.com/doc/api-reference/api-parameters/sortFacetValuesBy/
*/
sortFacetValuesBy?: 'count' | 'alpha';
/**
* Sets the languages to be used by language-specific settings and functionalities
* such as ignorePlurals, removeStopWords, and CJK word-detection.
* https://www.algolia.com/doc/api-reference/api-parameters/queryLanguages/
*/
queryLanguages?: Array<'af' | 'ar' | 'az' | 'bg' | 'bn' | 'ca' | 'cs' | 'cy' | 'da' | 'de' | 'el' | 'en' | 'eo' | 'es' | 'et' | 'eu' | 'fa' | 'fi' | 'fo' | 'fr' | 'ga' | 'gl' | 'he' | 'hi' | 'hu' | 'hy' | 'id' | 'is' | 'it' | 'ja' | 'ka' | 'kk' | 'ko' | 'ku' | 'ky' | 'lt' | 'lv' | 'mi' | 'mn' | 'mr' | 'ms' | 'mt' | 'nb' | 'nl' | 'no' | 'ns' | 'pl' | 'ps' | 'pt' | 'pt-br' | 'qu' | 'ro' | 'ru' | 'sk' | 'sq' | 'sv' | 'sw' | 'ta' | 'te' | 'th' | 'tl' | 'tn' | 'tr' | 'tt' | 'uk' | 'ur' | 'uz' | 'zh'>;
}
interface Response<T=any> {
+15 -1
View File
@@ -1,4 +1,4 @@
// Type definitions for algoliasearch-client-js 3.30.0
// Type definitions for algoliasearch-client-js 3.30.1
// Project: https://github.com/algolia/algoliasearch-client-js
// Definitions by: Baptiste Coquelle <https://github.com/cbaptiste>
// Haroen Viaene <https://github.com/haroenv>
@@ -7,6 +7,7 @@
// Claas Brüggemann <https://github.com/ClaasBrueggemann>
// Kai Eichinger <https://github.com/keichinger>
// Nery Ortez <https://github.com/neryortez>
// Antoine Rousseau <https://github.com/antoinerousseau>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
@@ -505,6 +506,12 @@ declare namespace algoliasearch {
* https://www.algolia.com/doc/api-reference/api-parameters/analytics/
*/
analytics?: boolean;
/**
* If set to true, enables the Click Analytics feature
* default false
* https://www.algolia.com/doc/api-reference/api-parameters/clickAnalytics/
*/
clickAnalytics?: boolean;
/**
* If set, tag your query with the specified identifiers
* default: []
@@ -534,9 +541,16 @@ declare namespace algoliasearch {
userData?: string | object;
/**
* Controls how facet values are sorted.
* https://www.algolia.com/doc/api-reference/api-parameters/sortFacetValuesBy/
*/
sortFacetValuesBy?: 'count' | 'alpha';
/**
* Sets the languages to be used by language-specific settings and functionalities
* such as ignorePlurals, removeStopWords, and CJK word-detection.
* https://www.algolia.com/doc/api-reference/api-parameters/queryLanguages/
*/
queryLanguages?: Array<'af' | 'ar' | 'az' | 'bg' | 'bn' | 'ca' | 'cs' | 'cy' | 'da' | 'de' | 'el' | 'en' | 'eo' | 'es' | 'et' | 'eu' | 'fa' | 'fi' | 'fo' | 'fr' | 'ga' | 'gl' | 'he' | 'hi' | 'hu' | 'hy' | 'id' | 'is' | 'it' | 'ja' | 'ka' | 'kk' | 'ko' | 'ku' | 'ky' | 'lt' | 'lv' | 'mi' | 'mn' | 'mr' | 'ms' | 'mt' | 'nb' | 'nl' | 'no' | 'ns' | 'pl' | 'ps' | 'pt' | 'pt-br' | 'qu' | 'ro' | 'ru' | 'sk' | 'sq' | 'sv' | 'sw' | 'ta' | 'te' | 'th' | 'tl' | 'tn' | 'tr' | 'tt' | 'uk' | 'ur' | 'uz' | 'zh'>;
}
namespace SearchForFacetValues {
+1
View File
@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,
+37
View File
@@ -0,0 +1,37 @@
// Type definitions for align-text 1.0
// Project: https://github.com/jonschlinkert/align-text
// Definitions by: Claas Ahlrichs <https://github.com/claasahl>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.1
interface TransformResult {
/**
* the amount of indentation to use. Default is 0 when an object is returned.
*/
indent: number;
/**
* the character to use for indentation. Default is '' (empty string) when an object is returned.
*/
character: string;
/**
* leading characters to use at the beginning of each line. '' (empty string) when an object is returned.
*/
prefix: string;
}
interface Callback {
/**
* @param len the length of the "current" line
* @param longest the length of the longest line
* @param line the current line (string) being aligned
* @param lines the array of all lines
*/
(len: number, longest: number, line: string, lines: string[]):
| number
| TransformResult;
}
declare function align_text(text: string, fn?: number | Callback): string;
declare function align_text(text: any[], fn?: number | Callback): string[];
export = align_text;
+6
View File
@@ -0,0 +1,6 @@
import align from "align-text";
const text = ["abc", true, 123456, { hello: "world" }];
align(text, 4);
align(text);
+12
View File
@@ -0,0 +1,12 @@
import align from "align-text";
function centerAlign(len: number, longest: number) {
return {
character: "\t",
indent: Math.floor((longest - len) / 2),
prefix: "~ "
};
}
const text = ["abc", "abc", "abc"];
align(text, centerAlign);
+8
View File
@@ -0,0 +1,8 @@
import align from "align-text";
function centerAlign(len: number, longest: number) {
return Math.floor((longest - len) / 2);
}
const text = ["abc", "abc", "abc"];
align(text, centerAlign);
+8
View File
@@ -0,0 +1,8 @@
import align from "align-text";
const text = ["abc", "abc", "abc"];
align(text, 4);
align("abc", 2);
align("abc");
+23
View File
@@ -0,0 +1,23 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": ["es6"],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": ["../"],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true,
"allowSyntheticDefaultImports": true
},
"files": [
"index.d.ts",
"test/simple.ts",
"test/center-simple.ts",
"test/center-complex.ts",
"test/array.ts"
]
}
+1
View File
@@ -8,6 +8,7 @@
"callable-types": false,
"comment-format": false,
"dt-header": false,
"npm-naming": false,
"eofline": false,
"export-just-namespace": false,
"import-spacing": false,
@@ -0,0 +1,108 @@
declare const div: HTMLDivElement;
const input = document.createElement('input');
// $ExpectType Autocomplete
const autoComplete = new AMap.Autocomplete();
// $ExpectType Autocomplete
new AMap.Autocomplete({});
// $ExpectType Autocomplete
new AMap.Autocomplete({
type: 'type',
city: 'city',
datatype: 'all',
citylimit: true,
input: 'input',
output: 'output',
outPutDirAuto: true
});
// $ExpectType Autocomplete
new AMap.Autocomplete({
type: 'type',
city: 'city',
datatype: 'all',
citylimit: true,
input,
output: div,
outPutDirAuto: true
});
autoComplete.search('keyword', (status, result) => {
const temp: 'error' | 'complete' | 'no_data' = status;
if (typeof result !== 'string') {
// $ExpectType number
result.count;
// $ExpectType string
result.info;
// $ExpectType Tip[]
result.tips;
{
const tip = result.tips[0];
// $ExpectType string
tip.adcode;
// $ExpectType string
tip.address;
// $ExpectType any[]
tip.city;
// $ExpectType string
tip.district;
// $ExpectType string
tip.id;
// $ExpectType LngLat
tip.location;
// $ExpectType string
tip.name;
// $ExpectType string
tip.typecode;
}
} else {
// $ExpectType string
result;
}
});
// $ExpectType void
autoComplete.setType();
// $ExpectType void
autoComplete.setType('type');
// $ExpectType void
autoComplete.setCity();
// $ExpectType void
autoComplete.setCity('city');
// $ExpectType void
autoComplete.setCityLimit(false);
autoComplete.on('complete', (event: AMap.Autocomplete.EventMap['complete']) => {
// $ExpectType "complete"
event.type;
// $ExpectType string
event.info;
if ('tips' in event) {
// $ExpectType number
event.count;
// $ExpectType Tip[]
event.tips;
}
});
autoComplete.on('error', (event: AMap.Autocomplete.EventMap['error']) => {
// $ExpectType "error"
event.type;
// $ExpectType string
event.info;
});
autoComplete.on('select', (event: AMap.Autocomplete.EventMap['select']) => {
// $ExpectType "select"
event.type;
// $ExpectType Tip
event.tip;
});
autoComplete.on('choose', (event: AMap.Autocomplete.EventMap['choose']) => {
// $ExpectType "choose"
event.type;
// $ExpectType Tip
event.tip;
});
+144
View File
@@ -0,0 +1,144 @@
// Type definitions for non-npm package amap-js-api-autocomplete 1.4
// Project: https://lbs.amap.com/api/javascript-api/reference/search#m_AMap.Autocomplete
// Definitions by: breeze9527 <https://github.com/breeze9527>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
/// <reference types="amap-js-api" />
declare namespace AMap {
namespace Autocomplete {
interface EventMap {
complete: Event<'complete', SearchResult | { info: string }>;
error: Event<'error', { info: string }>;
select: Event<'select', { tip: Tip }>;
choose: Event<'choose', { tip: Tip }>;
}
type DataType = 'all' | 'bus' | 'poi' | 'busline';
interface Options {
/**
* 输入提示时限定POI类型,多个类型用“|”分隔
*/
type?: string;
/**
* 输入提示时限定城市
*/
city?: string;
/**
* 返回的数据类型
*/
datatype?: DataType;
/**
* 是否强制限制在设置的城市内搜索
*/
citylimit?: boolean;
/**
* 指定输入框
*/
input?: string | HTMLInputElement;
/**
* 指定输出面板
*/
output?: string | HTMLDivElement;
/**
* 是否在input位于页面较下方的时候自动将输入面板显示在input上方以避免被遮挡
*/
outPutDirAuto?: boolean;
// internal
closeResultOnScroll?: boolean;
lang?: Lang;
}
interface Tip {
/**
* 名称
*/
name: string;
/**
* 所属区域
*/
district: string;
/**
* 区域编码
*/
adcode: string;
/**
* 地址
*/
address: string;
/**
* 城市
*/
city: any[];
/**
* ID
*/
id: string;
/**
* 坐标经纬度
*/
location: LngLat;
/**
* 类型编码
*/
typecode: string;
}
interface SearchResult {
/**
* 查询状态说明
*/
info: string;
/**
* 输入提示条数
*/
count: number;
/**
* 输入提示列表
*/
tips: Tip[];
}
type SearchStatus = 'complete' | 'error' | 'no_data';
}
class Autocomplete extends EventEmitter {
/**
* 输入提示,根据输入关键字提示匹配信息
* @param options 选项
*/
constructor(options?: Autocomplete.Options);
/**
* 根据输入关键字提示匹配信息
* @param keyword 关键字
* @param callback 回调
*/
search(
keyword: string,
callback: (status: Autocomplete.SearchStatus, result: Autocomplete.SearchResult | string) => void
): void;
/**
* 设置提示Poi类型,多个类型用“|”分隔
* @param type Poi类型
*/
setType(type?: string): void;
/**
* 设置城市
* @param city 城市
*/
setCity(city?: string): void;
/**
* 设置是否强制限制城市
* @param cityLimit 是否强制限制城市
*/
setCityLimit(cityLimit: boolean): void;
// internal
/**
* 设置查询语言
* @param lang 语言
*/
setLang(lang?: Lang): void;
/**
* 返回查询语言
*/
getLang(): Lang | undefined;
}
}
@@ -0,0 +1,24 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"dom"
],
"noEmit": true,
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"amap-js-api-autocomplete-tests.ts"
]
}
@@ -0,0 +1,227 @@
declare const lnglat: AMap.LngLat;
declare const lnglatTuple: [number, number];
// $ExpectType Geocoder
new AMap.Geocoder();
// $ExpectType Geocoder
new AMap.Geocoder({});
// $ExpectType Geocoder
const geocoder = new AMap.Geocoder({
city: 'city',
radius: 10,
lang: 'zh_cn',
batch: true,
extensions: 'all'
});
// $ExpectType void
geocoder.getLocation('address', (status, result) => {
// $ExpectType SearchStatus
status;
if (typeof result !== 'string') {
const geocode = result.geocodes[0];
const addressComponent = geocode.addressComponent;
// $ExpectType string
result.info;
// $ExpectType string
result.resultNum;
// $ExpectType string
geocode.adcode;
// $ExpectType string
geocode.formattedAddress;
// $ExpectType string
geocode.level;
// $ExpectType LngLat
geocode.location;
// $ExpectType string
addressComponent.building;
// $ExpectType string
addressComponent.building;
// $ExpectType string
addressComponent.buildingType;
// $ExpectType string
addressComponent.city;
// $ExpectType string
addressComponent.citycode;
// $ExpectType string
addressComponent.district;
// $ExpectType string
addressComponent.neighborhood;
// $ExpectType string
addressComponent.neighborhoodType;
// $ExpectType string
addressComponent.province;
// $ExpectType string
addressComponent.street;
// $ExpectType string
addressComponent.streetNumber;
// $ExpectType string
addressComponent.township;
} else {
// $ExpectType string
result;
}
});
// $ExpectType void
geocoder.getLocation(['address', 'address'], () => { });
// $ExpectType void
geocoder.setCity();
// $ExpectType void
geocoder.setCity('city');
// $ExpectType void
geocoder.getAddress(lnglat, (status, result) => {
// $ExpectType SearchStatus
status;
if (typeof result !== 'string') {
// $ExpectType string
result.info;
// $ExpectType ReGeocode
const regeocode = result.regeocode;
// $ExpectType ReGeocodeAddressComponent
const addressComponent = regeocode.addressComponent;
{
// $ExpectType string
addressComponent.adcode;
// $ExpectType string
addressComponent.building;
// $ExpectType string
addressComponent.buildingType;
// $ExpectType BuildingArea[]
addressComponent.businessAreas;
{
const businessArea = addressComponent.businessAreas[0];
// $ExpectType string
businessArea.id;
// $ExpectType LngLat
businessArea.location;
// $ExpectType string
businessArea.name;
}
// $ExpectType string
addressComponent.city;
// $ExpectType string
addressComponent.citycode;
// $ExpectType string
addressComponent.district;
// $ExpectType string
addressComponent.neighborhood;
// $ExpectType string
addressComponent.neighborhoodType;
// $ExpectType string
addressComponent.province;
// $ExpectType string
addressComponent.street;
// $ExpectType string
addressComponent.streetNumber;
// $ExpectType string
addressComponent.township;
}
// $ExpectType Cross[]
regeocode.crosses;
{
const cross = regeocode.crosses[0];
// $ExpectType string
cross.direction;
// $ExpectType number
cross.distance;
// $ExpectType string
cross.first_id;
// $ExpectType string
cross.first_name;
// $ExpectType LngLat
cross.location;
// $ExpectType string
cross.second_id;
// $ExpectType string
cross.second_name;
}
// $ExpectType string
regeocode.formattedAddress;
// $ExpectType ReGeocodePoi[]
regeocode.pois;
{
const poi = regeocode.pois[0];
// $ExpectType string
poi.address;
// $ExpectType string
poi.businessArea;
// $ExpectType string
poi.direction;
// $ExpectType number
poi.distance;
// $ExpectType string
poi.id;
// $ExpectType LngLat
poi.location;
// $ExpectType string
poi.name;
// $ExpectType string
poi.tel;
// $ExpectType string
poi.type;
}
// $ExpectType Road[]
regeocode.roads;
{
const road = regeocode.roads[0];
// $ExpectType string
road.direction;
// $ExpectType number
road.distance;
// $ExpectType string
road.id;
// $ExpectType LngLat
road.location;
// $ExpectType string
road.name;
}
} else {
// $ExpectType string
result;
}
});
// $ExpectType void
geocoder.getAddress([lnglat, lnglat], (status, result) => {
if (typeof result !== 'string') {
// $ExpectType ReGeocode[]
result.regeocodes;
}
});
geocoder.on('error', (event: AMap.Geocoder.EventMap['error']) => {
// $ExpectType "error"
event.type;
// $ExpectType string
event.info;
});
geocoder.on('complete', (event: AMap.Geocoder.EventMap['complete']) => {
// $ExpectType "complete"
event.type;
if ('info' in event) {
// $ExpectType string
event.info;
}
if ('geocodes' in event) {
// $ExpectType string
event.resultNum;
}
if ('regeocode' in event) {
// $ExpectType ReGeocode
event.regeocode;
}
if ('regeocodes' in event) {
// $ExpectType ReGeocode[]
event.regeocodes;
}
});
// $ExpectType void
geocoder.getAddress(lnglatTuple, () => { });
// $ExpectType void
geocoder.getAddress([lnglatTuple, lnglatTuple], () => { });
+373
View File
@@ -0,0 +1,373 @@
// Type definitions for non-npm package amap-js-api-geocoder 1.4
// Project: https://lbs.amap.com/api/javascript-api/reference/lnglat-to-address#m_AMap.Geocoder
// Definitions by: breeze9527 <https://github.com/breeze9527>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
/// <reference types="amap-js-api" />
declare namespace AMap {
namespace Geocoder {
interface EventMap {
complete: Event<'complete', GeocodeResult | {} | ReGeocodeResult | BatchReGeocodeResult>;
error: Event<'error', { info: string }>;
}
interface Options {
/**
* 城市
*/
city?: string;
/**
* 中心点
*/
radius?: number;
/**
* 语言类型
*/
lang?: Lang;
/**
* 是否批量查询
*/
batch?: boolean;
/**
* 是否返回详细信息
*/
extensions?: 'base' | 'all';
}
interface BuildingArea {
/**
* 唯一标识
*/
id: string;
/**
* 名称
*/
name: string;
/**
* 中心点经纬度
*/
location: LngLat;
}
interface GeocodeAddressComponent {
/**
* 社区
*/
neighborhood: string;
/**
* 社区类型
*/
neighborhoodType: string;
/**
* 楼/大厦
*/
building: string;
/**
* 楼类型
*/
buildingType: string;
/**
* 省
*/
province: string;
/**
* 城市
*/
city: string;
/**
* 区
*/
district: string;
/**
* 乡镇
*/
township: string;
/**
* 城市编码
*/
citycode: string;
/**
* 街道
*/
street: string;
/**
* 门牌号
*/
streetNumber: string;
}
interface ReGeocodeAddressComponent {
/**
* 城市编码
*/
citycode: string;
/**
* 区域编码
*/
adcode: string;
/**
* 所属商圈信息
*/
businessAreas: BuildingArea[];
/**
* 社区
*/
neighborhoodType: string;
/**
* 社区类型
*/
neighborhood: string;
/**
* 楼/大厦
*/
building: string;
/**
* 楼类型
*/
buildingType: string;
/**
* 街道
*/
street: string;
/**
* 门牌号
*/
streetNumber: string;
/**
* 省
*/
province: string;
/**
* 城市
*/
city: string;
/**
* 区
*/
district: string;
/**
* 乡镇
*/
township: string;
}
interface Geocode {
/**
* 地址组成元素
*/
addressComponent: GeocodeAddressComponent;
/**
* 格式化地址
*/
formattedAddress: string;
/**
* 坐标
*/
location: LngLat;
/**
* 区域编码
*/
adcode: string;
/**
* 给定地址匹配级别
*/
level: string;
}
interface GeocodeResult {
/**
* 状态说明
*/
info: string;
/**
* 地理编码结果数目
*/
resultNum: string;
/**
* 地理编码结果
*/
geocodes: Geocode[];
}
interface Road {
/**
* 唯一标识
*/
id: string;
/**
* 名称
*/
name: string;
/**
* 道路离查询点最近距离
*/
distance: number;
/**
* 道路上离查询点最近的点坐标
*/
location: LngLat;
/**
* 与查询点的相对方位
*/
direction: string;
}
interface Cross {
/**
* 道路离查询点最近距离
*/
distance: number;
/**
* 与查询点的相对方位
*/
direction: string;
/**
* 经纬度
*/
location: LngLat;
/**
* 第一条道路id
*/
first_id: string;
/**
* 第一条道路名称
*/
first_name: string;
/**
* 第二条道路id
*/
second_id: string;
/**
* 第二条道路名称
*/
second_name: string;
}
interface ReGeocodePoi {
/**
* 唯一标识
*/
id: string;
/**
* 名称
*/
name: string;
/**
* 类型
*/
type: string;
/**
* 电话
*/
tel: string;
/**
* 该Poi到请求坐标的距离
*/
distance: number;
/**
* 该Poi相对于请求坐标的方向
*/
direction: string;
/**
* 址信息
*/
address: string;
/**
* 坐标
*/
location: LngLat;
/**
* 商圈名称
*/
businessArea: string;
}
interface ReGeocodeAoi {
adcode: string;
area: string;
id: string;
location: LngLat;
name: string;
type: string;
}
interface ReGeocode {
/**
* 地址组成元素
*/
addressComponent: ReGeocodeAddressComponent;
/**
* 格式化地址
*/
formattedAddress: string;
/**
* 道路信息列表
*/
roads: Road[];
/**
* 道路路口列表
*/
crosses: Cross[];
/**
* 兴趣点列表
*/
pois: ReGeocodePoi[];
aois?: ReGeocodeAoi[];
}
interface ReGeocodeResult {
/**
* 状态说明
*/
info: string;
/**
* 逆地理编码结果
*/
regeocode: ReGeocode;
}
interface BatchReGeocodeResult {
/**
* 状态说明
*/
info: string;
/**
* 批量逆地理编码结果
*/
regeocodes: ReGeocode[];
}
type SearchStatus = 'complete' | 'no_data' | 'error';
}
class Geocoder extends EventEmitter {
/**
* 地理编码与逆地理编码
* @param options 选项
*/
constructor(options?: Geocoder.Options);
/**
* 根据给定的地址描述进行解析
* @param address 地址描述
* @param callback 回调
*/
getLocation(
address: string | string[],
callback: (status: Geocoder.SearchStatus, result: Geocoder.GeocodeResult | string) => void
): void;
/**
* 设置地址描述所在城市
* @param city 城市
*/
setCity(city?: string): void;
/**
* 根据给定坐标进行解析
* @param location 坐标
* @param callback 回调
*/
getAddress(
location: LocationValue,
callback: (status: Geocoder.SearchStatus, result: Geocoder.ReGeocodeResult | string) => void
): void;
/**
* 根据给定坐标进行解析
* @param locations 坐标数组
* @param callback 回调
*/
getAddress(
locations: LocationValue[],
callback: (status: Geocoder.SearchStatus, result: Geocoder.BatchReGeocodeResult | string) => void
): void;
// internal
setLang(lang?: Lang): void;
getLang(): Lang | undefined;
}
}
+24
View File
@@ -0,0 +1,24 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"dom"
],
"noEmit": true,
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"amap-js-api-geocoder-tests.ts"
]
}
@@ -0,0 +1,114 @@
// $ExpectType IndoorMap
new AMap.IndoorMap();
// $ExpectType IndoorMap
new AMap.IndoorMap({});
// $ExpectType IndoorMap
const indoorMap = new AMap.IndoorMap({
zIndex: 1,
opacity: 0.5,
cursor: 'cursor',
hideFloorBar: false,
alaysShow: true
});
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId');
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', (error, result) => {
// $ExpectType Error | null
error;
// $ExpectType SearchResult
result;
// $ExpectType string
result.id;
// $ExpectType 0 | 1
result.status;
if (result.status === 0) {
// $ExpectType Building
const building = result.building;
{
// $ExpectType number
building.floor;
// $ExpectType FloorDetails
const floorDetails = building.floor_details;
{
// $ExpectType number[]
floorDetails.floor_indexs;
// $ExpectType string[]
floorDetails.floor_names;
// $ExpectType string[]
floorDetails.floor_nonas;
}
// $ExpectType string
building.id;
// $ExpectType LngLat
building.lnglat;
// $ExpectType string
building.name;
}
} else {
// $ExpectType Error
result.error;
}
});
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', 1);
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', 1, () => { });
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', 1, 'shopId');
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', 1, 'shopId', () => { });
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', 1, 'shopId', true);
// $ExpectType void
indoorMap.showIndoorMap('indoorMapId', 1, 'shopId', true, () => { });
let floor: undefined | false;
floor = indoorMap.showFloor(1);
floor = indoorMap.showFloor(1, true);
// $ExpectType void
indoorMap.showFloorBar();
// $ExpectType void
indoorMap.hideFloorBar();
// $ExpectType void
indoorMap.hideLabels();
// $ExpectType string | null
indoorMap.getSelectedBuildingId();
// $ExpectType Building | null
const building = indoorMap.getSelectedBuilding();
if (building) {
// $ExpectType number
building.floor;
// $ExpectType FloorDetails
building.floor_details;
// $ExpectType string
building.id;
// $ExpectType LngLat
building.lnglat;
// $ExpectType string
building.name;
}
indoorMap.on('complete', (event: AMap.IndoorMap.EventMap['complete']) => {
// $ExpectType "complete"
event.type;
});
indoorMap.on('click', (event: AMap.IndoorMap.EventMap['click']) => {
// $ExpectType string
event.building_id;
// $ExpectType number
event.floor;
// $ExpectType LngLat
event.lnglat;
// $ExpectType Shop
event.shop;
// $ExpectType "click"
event.type;
});
+239
View File
@@ -0,0 +1,239 @@
// Type definitions for non-npm package amap-js-api-indoor-map 1.4
// Project: https://lbs.amap.com/api/javascript-api/reference/indoormap
// Definitions by: breeze9527 <https://github.com/breeze9527>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
/// <reference types="amap-js-api" />
declare namespace AMap {
namespace IndoorMap {
interface EventMap {
complete: Event<'complete'>;
click: MouseEvent<'click'>;
floor_complete: Event<'floor_complete', SearchResult>;
mouseover: MouseEvent<'mouseover'>;
mouseout: MouseEvent<'mouseout'>;
}
type MouseEvent<N extends string> = Event<N, {
/**
* 店铺所属楼宇信息
*/
building_id: string;
/**
* 经纬度
*/
lnglat: LngLat;
/**
* 楼层
*/
floor: number;
/**
* 商店
*/
shop: Shop;
}>;
interface Options extends Layer.Options {
/**
* 图层叠加的顺序值
*/
zIndex?: number;
/**
* 图层的透明度
*/
opacity?: number;
/**
* 鼠标悬停到店铺面时的鼠标样式
*/
cursor?: string;
/**
* 是否隐藏楼层切换控件
*/
hideFloorBar?: boolean;
/**
* 是否持续显示
*/
alaysShow?: boolean;
// internal
visible?: boolean;
featurezIndex?: number;
zooms?: [number, number];
disableIconRender?: boolean;
disableLabelRender?: boolean;
disableHoverMarker?: boolean;
autoLoadBuildingsInTile?: boolean;
}
interface FloorDetails {
/**
* 各楼层索引
*/
floor_indexs: number[];
/**
* 各楼层英文
*/
floor_nonas: string[];
/**
* 各楼层名字
*/
floor_names: string[];
}
type ShopCategory = 'public' | 'connection' | 'shop';
interface Shop {
/**
* 店铺的id
*/
id: string;
/**
* 兴趣点ID
*/
poiId: string;
/**
* 店铺所属楼宇ID
*/
building_id: string;
/**
* 店铺名称
*/
name: string;
/**
* 店铺的经纬度
*/
lnglat: LngLat;
/**
* 分类
*/
category: ShopCategory;
}
interface Building {
/**
* 所属楼宇ID
*/
id: string;
/**
* 楼层名称
*/
name: string;
/**
* 楼层的经纬度
*/
lnglat: LngLat;
/**
* 所在楼层
*/
floor: number;
floor_details: FloorDetails;
}
interface SearchSuccessResult {
/**
* 楼层的id
*/
id: string;
status: 0;
/**
* 建筑信息
*/
building: Building;
}
interface SearchErrorResult {
/**
* 楼宇id
*/
id: string;
status: 1;
error: Error;
}
type SearchResult = SearchSuccessResult | SearchErrorResult;
}
class IndoorMap extends Layer {
/**
* 室内地图
* @param options 选项
*/
constructor(options?: IndoorMap.Options);
/**
* 显示指定室内地图信息
* @param indoorId 建筑物ID
* @param callback 回调
*/
showIndoorMap(
indoorId: string,
callback?: (error: null | Error, result: IndoorMap.SearchResult) => void
): void;
/**
* 显示指定室内地图信息
* @param indoorId 建筑物ID
* @param floor 楼层
* @param callback 回调
*/
showIndoorMap(
indoorId: string,
floor?: number,
callback?: (error: null | Error, result: IndoorMap.SearchResult) => void
): void;
/**
* 显示指定室内地图信息
* @param indoorId 建筑物ID
* @param floor 楼层
* @param shopId 商铺ID
* @param callback 回调
*/
showIndoorMap(
indoorId: string,
floor?: number,
shopId?: string,
callback?: (error: null | Error, result: IndoorMap.SearchResult) => void
): void;
/**
* 显示指定室内地图信息
* @param indoorId 建筑物ID
* @param floor 楼层
* @param shopId 商铺ID
* @param noMove 阻止移动
* @param callback 回调
*/
showIndoorMap(
indoorId: string,
floor?: number,
shopId?: string,
noMove?: boolean,
callback?: (error: null | Error, result: IndoorMap.SearchResult) => void
): void;
/**
* 显示指定的楼层
* @param floor 楼层
* @param noMove 禁止移动
*/
showFloor(floor: number, noMove?: boolean): false | undefined;
/**
* 显示楼层切换控件
*/
showFloorBar(): void;
/**
* 隐藏楼层切换控件
*/
hideFloorBar(): void;
/**
* 显示室内地图标注
*/
showLabels(): void;
/**
* 隐藏室内地图标注
*/
hideLabels(): void;
/**
* 获取处于被选中状态的室内地图的ID
*/
getSelectedBuildingId(): string | null;
/**
* 获取处于被选中状态的室内地图的一些基本信息
*/
getSelectedBuilding(): IndoorMap.Building | null;
// internal
getFloorBar(): void;
setSelectedBuildingId(id: string): void;
}
}
@@ -0,0 +1,24 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"dom"
],
"noEmit": true,
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"amap-js-api-indoor-map-tests.ts"
]
}
@@ -0,0 +1,489 @@
/**
* preset.ts
*/
declare const map: AMap.Map;
declare const lnglat: AMap.LngLat;
declare const size: AMap.Size;
declare const lnglatTuple: [number, number];
declare const pixel: AMap.Pixel;
declare const layer: AMap.Layer;
declare const ambientLight: AMap.Lights.AmbientLight;
declare const directionLight: AMap.Lights.DirectionLight;
declare const line: AMap.Object3D.Line;
declare const mesh: AMap.Object3D.Mesh;
declare const object3d: AMap.Object3D;
declare const geometry: AMap.Geometry3D.Mesh;
/**
* lights.ts
*/
// $ExpectType AmbientLight
const testAmbientLight = new AMap.Lights.AmbientLight([0.1, 0, 0.1], 1);
// $ExpectType void
testAmbientLight.setColor([0.1, 1, 0.5]);
// $ExpectType void
testAmbientLight.setIntensity(1);
// $ExpectType DirectionLight
const testDirectionLight = new AMap.Lights.DirectionLight([1, 2, 3], [1, 2, 3], 1);
// $ExpectType void
testDirectionLight.setColor([1, 2, 3]);
// $ExpectType void
testDirectionLight.setIntensity(1);
// $ExpectType void
testDirectionLight.setDirection([1, 2, 3]);
/**
* map3d.ts
*/
// $ExpectType Object3DResult | null
map.getObject3DByContainerPos(pixel);
// $ExpectType Object3DResult | null
const containserPos = map.getObject3DByContainerPos(pixel, [layer], true);
if (containserPos) {
// $ExpectType number
containserPos.index;
// $ExpectType Vector3
containserPos.point;
// $ExpectType number
containserPos.distance;
// $ExpectType Object3D
containserPos.object;
} else {
// $ExpectType null
containserPos;
}
map.AmbientLight = ambientLight;
map.AmbientLight = undefined;
map.DirectionLight = directionLight;
map.DirectionLight = undefined;
/**
* object3d-group.ts
*/
// $ExpectType Object3DGroup<Object3D>
const testObject3dGroup1 = new AMap.Object3DGroup();
// $ExpectType Object3DGroup<Mesh>
const testObject3dGroup2 = new AMap.Object3DGroup<AMap.Object3D.Mesh>();
// $ExpectType Object3D[]
testObject3dGroup1.children;
// $ExpectType Mesh[]
testObject3dGroup2.children;
// $ExoectType void
testObject3dGroup1.add(line);
// $ExoectType void
testObject3dGroup1.add(mesh);
// $ExoectType void
testObject3dGroup2.add(mesh);
// $ExpectError
testObject3dGroup2.add(line);
// $ExoectType void
testObject3dGroup1.remove(line);
// $ExoectType void
testObject3dGroup1.remove(mesh);
// $ExoectType void
testObject3dGroup2.remove(mesh);
// $ExpectError
testObject3dGroup2.remove(line);
/**
* object3d-Layer.ts
*/
// $ExpectType Object3DLayer
new AMap.Object3DLayer();
// $ExpectType Object3DLayer
new AMap.Object3DLayer({});
// $ExpectType Object3DLayer
const testObject3DLayer = new AMap.Object3DLayer({
map,
visible: true,
opacity: 0.1,
zIndex: 2,
zooms: [1, 2]
});
// $ExpectType void
testObject3DLayer.setMap(null);
// $ExpectType void
testObject3DLayer.setMap(map);
// $ExpectType Map | null | undefined
testObject3DLayer.getMap();
// $ExpectType void
testObject3DLayer.hide();
// $ExpectType void
testObject3DLayer.show();
// $ExpectType void
testObject3DLayer.setOpacity(1);
// $ExpectType number
testObject3DLayer.getOpacity();
// $ExpectType void
testObject3DLayer.setzIndex(1);
// $ExpectType number
testObject3DLayer.getzIndex();
// $ExpectType [number, number]
testObject3DLayer.getZooms();
// $ExpectType void
testObject3DLayer.add(object3d);
// $ExpectType void
testObject3DLayer.remove(object3d);
// $ExpectType void
testObject3DLayer.clear();
// $ExpectType void
testObject3DLayer.reDraw();
/**
* vector3.ts
*/
// $ExpectType Vector3
const testVector = new AMap.Vector3([1, 2, 3]);
// $ExpectType Vector3
new AMap.Vector3(testVector);
// $ExpectType [number, number, number]
testVector.elements;
// $ExpectType void
testVector.set(1, 2, 3);
// $ExpectType number
testVector.dot();
// $ExpectType Vector3
testVector.clone();
// $ExpectType Vector3
testVector.add(testVector);
// $ExpectType Vector3
testVector.add([1, 2, 3]);
// $ExpectType Vector3
testVector.sub(testVector);
// $ExpectType Vector3
testVector.sub([1, 2, 3]);
// $ExpectType Vector3
testVector.addVectors(testVector, testVector);
// $ExpectType Vector3
testVector.subVectors(testVector, testVector);
// $ExpectType Vector3
testVector.crossVectors(testVector, testVector);
// $ExpectType Vector3
testVector.normalize();
// $ExpectType number
testVector.length();
/**
* object3d/mesh.ts
*/
// $ExpectType Mesh
const testMesh = new AMap.Object3D.Mesh();
// $ExpectError
testMesh.geometry = geometry;
// $ExpectType number[]
testMesh.geometry.vertices;
// $ExpectError
testMesh.geometry.vertices = [];
testMesh.geometry.vertices.shift();
// $ExpectType number[]
testMesh.geometry.vertexColors;
// $ExpectError
testMesh.geometry.vertexColors = [];
testMesh.geometry.vertexColors.shift();
// $ExpectType number[]
testMesh.geometry.vertexUVs;
// $ExpectError
testMesh.geometry.vertexUVs = [];
testMesh.geometry.vertexUVs.shift();
// $ExpectType number[]
testMesh.geometry.faces;
// $ExpectError
testMesh.geometry.faces = [];
testMesh.geometry.faces.shift();
// $ExpectType number[]
testMesh.geometry.textureIndices;
// $ExpectError
testMesh.geometry.textureIndices = [];
testMesh.geometry.textureIndices.shift();
// $ExpectType (string | HTMLCanvasElement)[]
testMesh.textures;
// $ExpectType boolean
testMesh.needUpdate;
// $ExpectType boolean
testMesh.transparent;
// $ExpectType boolean
testMesh.DEPTH_TEST;
// $ExpectType void
testMesh.reDraw();
/**
* object3d/meshAcceptLights.ts
*/
// $ExpectType MeshAcceptLights
const testMeshAcceptLights = new AMap.Object3D.MeshAcceptLights();
// $ExpectError
testMeshAcceptLights.geometry = geometry;
// $ExpectType number[]
testMeshAcceptLights.geometry.vertices;
// $ExpectError
testMeshAcceptLights.geometry.vertices = [];
testMeshAcceptLights.geometry.vertices.shift();
// $ExpectType number[]
testMeshAcceptLights.geometry.vertexColors;
// $ExpectError
testMeshAcceptLights.geometry.vertexColors = [];
testMeshAcceptLights.geometry.vertexColors.shift();
// $ExpectType number[]
testMeshAcceptLights.geometry.vertexUVs;
// $ExpectError
testMeshAcceptLights.geometry.vertexUVs = [];
testMeshAcceptLights.geometry.vertexUVs.shift();
// $ExpectType number[]
testMeshAcceptLights.geometry.faces;
// $ExpectError
testMeshAcceptLights.geometry.faces = [];
testMeshAcceptLights.geometry.faces.shift();
// $ExpectType number[]
testMeshAcceptLights.geometry.textureIndices;
// $ExpectError
testMeshAcceptLights.geometry.textureIndices = [];
testMeshAcceptLights.geometry.textureIndices.shift();
// $ExpectType number[]
testMeshAcceptLights.geometry.vertexNormals;
// $ExpectError
testMeshAcceptLights.geometry.vertexNormals = [];
testMeshAcceptLights.geometry.vertexNormals.shift();
// $ExpectType (string | HTMLCanvasElement)[]
testMeshAcceptLights.textures;
// $ExpectType boolean
testMeshAcceptLights.needUpdate;
// $ExpectType boolean
testMeshAcceptLights.transparent;
// $ExpectType boolean
testMeshAcceptLights.DEPTH_TEST;
// $ExpectType void
testMeshAcceptLights.reDraw();
/**
* object3d/meshLine.ts
*/
// $ExpectError
new AMap.Object3D.MeshLine();
// $ExpectError
new AMap.Object3D.MeshLine({});
// $ExpectType MeshLine
const testMeshLine = new AMap.Object3D.MeshLine({
path: [lnglat],
width: 1,
height: 1,
color: 'red'
});
// $ExpectType MeshLine
new AMap.Object3D.MeshLine({
path: [lnglat],
color: [0, 0, 1, 1]
});
// $ExpectType MeshLine
new AMap.Object3D.MeshLine({
path: [[1, 2]]
});
// $ExpectType MeshLine
new AMap.Object3D.MeshLine({
path: [lnglat],
unit: 'meter'
});
// $ExpectType MeshLine
new AMap.Object3D.MeshLine({
path: [pixel],
unit: 'px'
});
// $ExpectError
new AMap.Object3D.MeshLine({
path: [lnglat],
unit: 'px'
});
// $ExpectError
new AMap.Object3D.MeshLine({
path: [pixel],
unit: 'meter'
});
// $ExpectType number[]
testMeshLine.geometry.vertices;
// $ExpectError
testMeshLine.geometry.vertices = [];
testMeshLine.geometry.vertices.shift();
// $ExpectType number[]
testMeshLine.geometry.vertexUVs;
// $ExpectError
testMeshLine.geometry.vertexUVs = [];
testMeshLine.geometry.vertexUVs.shift();
// $ExpectType number[]
testMeshLine.geometry.vertexColors;
// $ExpectError
testMeshLine.geometry.vertexColors = [];
testMeshLine.geometry.vertexColors.shift();
// $ExpectType number[]
testMeshLine.geometry.vertexColors;
// $ExpectError
testMeshLine.geometry.vertexColors = [];
testMeshLine.geometry.vertexColors.shift();
// $ExpectType number[]
testMeshLine.geometry.vertexIndices;
// $ExpectError
testMeshLine.geometry.vertexIndices = [];
testMeshLine.geometry.vertexIndices.shift();
// $ExpectType number[]
testMeshLine.geometry.directions;
// $ExpectError
testMeshLine.geometry.directions = [];
testMeshLine.geometry.directions.shift();
// $ExpectType number[]
testMeshLine.geometry.textureIndices;
// $ExpectError
testMeshLine.geometry.textureIndices = [];
testMeshLine.geometry.textureIndices.shift();
// $ExpectType number
testMeshLine.width;
// $ExpectType void
testMeshLine.setPath([lnglat]);
// $ExpectType void
testMeshLine.setPath([lnglatTuple]);
// $ExpectType void
testMeshLine.setPath([pixel]);
// $ExpectType void
testMeshLine.setWidth(10);
// $ExpectType void
testMeshLine.setHeight(10);
// $ExpectType void
testMeshLine.setColor('red');
/**
* object3d/prism.ts
*/
// $ExpectError
new AMap.Object3D.Prism();
// $ExpectError
new AMap.Object3D.Prism({});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [lnglat],
color: 'red'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [lnglat],
color: 'red',
height: 1,
color2: 'blue'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [pixel],
color: 'red'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [lnglat],
color: 'red'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [[lnglat]],
color: 'red'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [[pixel]],
color: 'red'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [[lnglatTuple]],
color: 'red'
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [lnglat],
color: ['red']
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [lnglat],
color: [1, 1, 1, 1]
});
// $ExpectType Prism
new AMap.Object3D.Prism({
path: [lnglat],
color: [[1, 1, 1, 1]]
});
+28
View File
@@ -0,0 +1,28 @@
declare namespace AMap {
abstract class Geometry3D {
readonly vertices: number[];
readonly vertexUVs: number[];
readonly vertexColors: number[];
}
namespace Geometry3D {
class Mesh extends Geometry3D {
readonly type: 'mesh';
readonly faces: number[];
readonly textureIndices: number[];
}
class Line extends Geometry3D {
readonly type: 'line';
readonly segments: number[];
readonly textureIndices: number[];
}
class Points extends Geometry3D {
readonly type: 'points';
readonly pointSizes: number[];
readonly pointAreas: number[];
readonly textureIndices: number[];
}
}
}
+15
View File
@@ -0,0 +1,15 @@
// Type definitions for non-npm package amap-js-api-map3d 1.4
// Project: https://lbs.amap.com/api/javascript-api/reference/maps-3d
// Definitions by: breeze9527 <https://github.com/breeze9527>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
/// <reference types="amap-js-api" />
/// <reference path="geometry-3d.d.ts" />
/// <reference path="lights.d.ts" />
/// <reference path="map3d.d.ts" />
/// <reference path="object3d-group.d.ts" />
/// <reference path="object3d-layer.d.ts" />
/// <reference path="object3d.d.ts" />
/// <reference path="vector3.d.ts" />
+17
View File
@@ -0,0 +1,17 @@
declare namespace AMap {
namespace Lights {
class AmbientLight {
constructor(color: [number, number, number], intensity: number);
setColor(color: [number, number, number]): void;
setIntensity(intensity: number): void;
}
class DirectionLight {
constructor(direction: [number, number, number], color: [number, number, number], intensity: number);
update(): void;
setDirection(direction: [number, number, number]): void;
setColor(direction: [number, number, number]): void;
setIntensity(intensity: number): void;
}
}
}
+15
View File
@@ -0,0 +1,15 @@
declare namespace AMap {
namespace Map {
interface Object3DResult {
index: number;
point: Vector3;
distance: number;
object: Object3D;
}
}
interface Map {
AmbientLight?: Lights.AmbientLight;
DirectionLight?: Lights.DirectionLight;
getObject3DByContainerPos(pixel: Pixel, layers?: Layer[], all?: boolean): Map.Object3DResult | null;
}
}
+8
View File
@@ -0,0 +1,8 @@
declare namespace AMap {
class Object3DGroup<C extends Object3D = Object3D> extends Object3D {
constructor();
children: C[];
add(object3d: C): void;
remove(object3d: C): void;
}
}
+27
View File
@@ -0,0 +1,27 @@
declare namespace AMap {
namespace Object3DLayer {
interface Options {
map?: Map;
visible?: boolean;
opacity?: number;
zIndex?: number;
zooms?: [number, number];
}
}
class Object3DLayer extends Layer {
constructor(options?: Object3DLayer.Options)
add(object3d: Object3D): void;
remove(object3d: Object3D): void;
clear(): void;
reDraw(): void;
// internal
setOption(options: {
position?: number;
scale?: number;
height?: number;
scene?: number;
}): void;
}
}
+92
View File
@@ -0,0 +1,92 @@
declare namespace AMap {
class Object3D {
readonly geometry: Geometry3D;
transparent: boolean;
DEPTH_TEST: boolean;
textures: Array<string | HTMLCanvasElement>;
needUpdate: boolean;
reDraw(): void;
// internal
reset(): void;
}
namespace Object3D {
class Mesh extends Object3D {
readonly geometry: Geometry3D.Mesh;
}
class MeshAcceptLights extends Mesh {
readonly geometry: Geometry3D.Mesh & { readonly vertexNormals: number[] };
}
namespace Prism {
interface Options {
path: LngLat[] | Pixel[] | Array<LngLat[] | Pixel[] | Array<[number, number]>>;
color: string | number[] | Array<string | number[]>;
height?: number;
color2?: string | number[] | Array<string | number[]>;
}
}
class Prism extends MeshAcceptLights {
constructor(options: Prism.Options);
}
// tslint:disable-next-line
class Wall extends Prism { }
class Line extends Object3D {
readonly geometry: Geometry3D.Line;
}
namespace ThinLine {
interface Options {
path: Array<[number, number]>;
color: string;
altitude?: number;
dashArray?: number[];
}
}
class ThinLine extends Line {
constructor(options: ThinLine.Options);
}
class Points extends Object3D {
readonly geometry: Geometry3D.Points;
borderColor: string;
borderWeight: number;
}
class RoundPoints extends Points {
merge: boolean;
}
namespace MeshLine {
type Options = {
width?: number;
height?: number | number[];
color?: string | number[];
} & ({
unit?: 'meter';
path: Array<[number, number]> | LngLat[];
} | {
unit: 'px';
path: Array<[number, number]> | Pixel[];
});
}
// inherit from WideLine
class MeshLine extends Object3D {
constructor(options: MeshLine.Options);
readonly geometry: Geometry3D & {
readonly vertexIndices: number[];
readonly directions: number[];
readonly textureIndices: number[];
};
width: number;
setPath(path: LngLat[] | Pixel[] | Array<[number, number]>): void;
setWidth(width: number): void;
setHeight(height: number | number[]): void;
setColor(color: string): void;
}
}
}
+31
View File
@@ -0,0 +1,31 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"dom"
],
"noEmit": true,
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"forceConsistentCasingInFileNames": true
},
"files": [
"geometry-3d.d.ts",
"index.d.ts",
"lights.d.ts",
"map3d.d.ts",
"object3d-group.d.ts",
"object3d-layer.d.ts",
"object3d.d.ts",
"vector3.d.ts",
"amap-js-api-map3d-tests.ts"
]
}
+16
View File
@@ -0,0 +1,16 @@
declare namespace AMap {
class Vector3 {
readonly elements: [number, number, number];
constructor(elements: [number, number, number] | Vector3);
set(x: number, y: number, z: number): void;
dot(): number;
clone(): Vector3;
add(elements: [number, number, number] | Vector3): this;
sub(elements: [number, number, number] | Vector3): this;
addVectors(a: Vector3, b: Vector3): this;
subVectors(a: Vector3, b: Vector3): this;
crossVectors(a: Vector3, b: Vector3): this;
normalize(): this;
length(): number;
}
}
@@ -0,0 +1,435 @@
declare const map: AMap.Map;
declare const div: HTMLElement;
declare const lnglat: AMap.LngLat;
declare const lnglatTuple: [number, number];
declare const bounds: AMap.Bounds;
declare const polygon: AMap.Polygon;
declare const lang: AMap.Lang;
// $ExpectType PlaceSearch
const placeSearch = new AMap.PlaceSearch();
// $ExpectType PlaceSearch
new AMap.PlaceSearch({});
// $ExpectType PlaceSearch
new AMap.PlaceSearch({
city: '深圳',
citylimit: true,
children: 1,
type: '餐饮服务',
lang: 'zh_cn',
pageSize: 10,
pageIndex: 10,
extensions: 'all',
map,
panel: div,
showCover: true,
renderStyle: 'newpc',
autoFitView: true
});
// $ExpectType void
placeSearch.search('keyword', (status, result) => {
const temp: 'error' | 'complete' | 'no_data' = status;
// $ExpectType string | SearchResult
result;
if (typeof result !== 'string') {
// $ExpectType string
result.info;
// $ExpectType PoiList
result.poiList;
// $ExpectType string[] | undefined
result.keywordList;
// $ExpectType CityInfo[] | undefined
result.cityList;
const poiList = result.poiList;
// $ExpectType number
poiList.pageIndex;
// $ExpectType number
poiList.pageSize;
// $ExpectType number
poiList.count;
const poi = poiList.pois[0];
// $ExpectType string
poi.address;
// $ExpectType number
poi.distance;
// $ExpectType string
poi.id;
// $ExpectType LngLat | null
poi.location;
// $ExpectType string
poi.name;
// $ExpectType string
poi.shopinfo;
// $ExpectType string
poi.tel;
// $ExpectType string
poi.type;
if ('website' in poi) {
// $ExpectType string
poi.adcode;
// $ExpectType string
poi.adname;
// $ExpectType string
poi.citycode;
// $ExpectType string
poi.cityname;
// $ExpectType boolean
poi.discount;
// $ExpectType string
poi.email;
// $ExpectType LngLat | null
poi.entr_location;
// $ExpectType LngLat | null
poi.exit_location;
// $ExpectType boolean
poi.groupbuy;
if (poi.indoor_map) {
const indoorData = poi.indoor_data;
// $ExpectType string
indoorData.cpid;
// $ExpectType string
indoorData.floor;
// $ExpectType string
indoorData.truefloor;
}
poi.pcode;
// $ExpectType PoiPhoto[]
poi.photos;
// $ExpectType string
poi.pname;
// $ExpectType string
poi.postcode;
// $ExpectType string
poi.website;
const photo = poi.photos[0];
// $ExpectType string
photo.title;
// $ExpectType string
photo.url;
// $ExpectType Groupbuy[] | undefined
poi.groupbuys;
if (poi.groupbuys) {
const groupbuy = poi.groupbuys[0];
// $ExpectType string
groupbuy.title;
// $ExpectType string
groupbuy.type_code;
// $ExpectType string
groupbuy.type;
// $ExpectType string
groupbuy.detail;
// $ExpectType string
groupbuy.stime;
// $ExpectType string
groupbuy.etime;
// $ExpectType number
groupbuy.count;
// $ExpectType number
groupbuy.sold_num;
// $ExpectType number
groupbuy.original_price;
// $ExpectType number
groupbuy.groupbuy_price;
// $ExpectType number
groupbuy.discount;
// $ExpectType string
groupbuy.ticket_address;
// $ExpectType string
groupbuy.ticket_tel;
// $ExpectType PoiPhoto[]
groupbuy.photos;
// $ExpectType string
groupbuy.url;
// $ExpectType string
groupbuy.provider;
}
// $ExpectType Discount[] | undefined
poi.discounts;
if (poi.discounts) {
const discount = poi.discounts[0];
// $ExpectType string
discount.title;
// $ExpectType string
discount.detail;
// $ExpectType string
discount.start_time;
// $ExpectType string
discount.end_time;
// $ExpectType number
discount.sold_num;
// $ExpectType PoiPhoto[]
discount.photos;
// $ExpectType string
discount.url;
// $ExpectType string
discount.provider;
}
if (poi.deep_type === 'CINEMA') {
// $ExpectType Cinema
const cinema = poi.cinema;
// $ExpectType string
cinema.intro;
// $ExpectType string
cinema.rating;
// $ExpectType string
cinema.deep_src;
// $ExpectType string
cinema.parking;
// $ExpectType string
cinema.opentime_GDF;
// $ExpectType string
cinema.opentime;
// $ExpectType PoiPhoto[]
cinema.photos;
}
if (poi.deep_type === 'DINING') {
// $ExpectType Dining
const dining = poi.dining;
// $ExpectType string
dining.cuisines;
// $ExpectType string
dining.tag;
// $ExpectType string
dining.intro;
// $ExpectType string
dining.rating;
// $ExpectType string
dining.cp_rating;
// $ExpectType string
dining.deep_src;
// $ExpectType string
dining.taste_rating;
// $ExpectType string
dining.environment_rating;
// $ExpectType string
dining.service_rating;
// $ExpectType string
dining.cost;
// $ExpectType string
dining.recommend;
// $ExpectType string
dining.atmosphere;
// $ExpectType string
dining.ordering_wap_url;
// $ExpectType string
dining.ordering_web_url;
// $ExpectType string
dining.ordering_app_url;
// $ExpectType string
dining.opentime_GDF;
// $ExpectType string
dining.opentime;
// $ExpectType string
dining.addition;
// $ExpectType PoiPhoto[]
dining.photos;
}
if (poi.deep_type === 'SCENIC') {
// $ExpectType Scenic
const scenic = poi.scenic;
// $ExpectType string
scenic.intro;
// $ExpectType string
scenic.rating;
// $ExpectType string
scenic.deep_src;
// $ExpectType string
scenic.level;
// $ExpectType string
scenic.price;
// $ExpectType string
scenic.season;
// $ExpectType string
scenic.recommend;
// $ExpectType string
scenic.theme;
// $ExpectType string
scenic.ordering_wap_url;
// $ExpectType string
scenic.ordering_web_url;
// $ExpectType string
scenic.opentime_GDF;
// $ExpectType string
scenic.opentime;
// $ExpectType PoiPhoto[]
scenic.photos;
}
if (poi.deep_type === 'HOTEL') {
// $ExpectType Hotel
const hotel = poi.hotel;
// $ExpectType string
hotel.rating;
// $ExpectType string
hotel.star;
// $ExpectType string
hotel.intro;
// $ExpectType string
hotel.lowest_price;
// $ExpectType string
hotel.faci_rating;
// $ExpectType string
hotel.health_rating;
// $ExpectType string
hotel.environment_rating;
// $ExpectType string
hotel.service_rating;
// $ExpectType string
hotel.traffic;
// $ExpectType string
hotel.addition;
// $ExpectType string
hotel.deep_src;
// $ExpectType PoiPhoto[]
hotel.photos;
}
}
if (result.cityList) {
const city = result.cityList[0];
// $ExpectType string
city.adcode;
// $ExpectType string
city.citycode;
// $ExpectType number
city.count;
// $ExpectType string
city.name;
}
} else {
// $ExpectType string
result;
}
});
// $ExpectType void
placeSearch.searchNearBy('keyword', lnglat, 10, (status, result) => {
const temp: 'error' | 'complete' | 'no_data' = status;
// $ExpectType string | SearchResult
result;
});
// $ExpectType void
placeSearch.searchNearBy('keyword', lnglatTuple, 10, () => { });
// $ExpectType void
placeSearch.searchInBounds('keyword', bounds, (status, result) => {
const temp: 'error' | 'complete' | 'no_data' = status;
// $ExpectType string | SearchResult
result;
});
// $ExpectType void
placeSearch.searchInBounds('keyword', polygon, () => { });
// $ExpectType void
placeSearch.getDetails('id', (status, result) => {
const temp: 'error' | 'complete' | 'no_data' = status;
// $ExpectType string | SearchResult
result;
});
// $ExpectType void
placeSearch.setType('type');
// $ExpectType void
placeSearch.setType();
// $ExpectType void
placeSearch.setCityLimit(true);
// $ExpectType void
placeSearch.setCityLimit();
// $ExpectType void
placeSearch.setPageIndex(1);
// $ExpectType void
placeSearch.setPageIndex();
// $ExpectType void
placeSearch.setPageSize(1);
// $ExpectType void
placeSearch.setPageSize();
// $ExpectType void
placeSearch.setCity('city');
// $ExpectType void
placeSearch.setCity();
// $ExpectType void
placeSearch.setLang(lang);
// $ExpectType void
placeSearch.setLang();
// $ExpectType "zh_cn" | "en" | "zh_en" | undefined
placeSearch.getLang();
// $ExpectType void
placeSearch.clear();
// $ExpectType void
placeSearch.poiOnAMAP({
id: 'id',
});
// $ExpectType void
placeSearch.poiOnAMAP({
location: lnglat,
id: 'id',
name: 'name'
});
// $ExpectType void
placeSearch.detailOnAMAP({
id: 'id',
});
// $ExpectType void
placeSearch.detailOnAMAP({
location: lnglat,
id: 'id',
name: 'name'
});
// $ExpectType void
placeSearch.open();
// $ExpectType void
placeSearch.close();
placeSearch.on('complete', (event: AMap.PlaceSearch.EventMap['complete']) => {
// $ExpectType "complete"
event.type;
// $ExpectType string
event.info;
// $ExpectType PoiList
event.poiList;
// $ExpectType string[] | undefined
event.keywordList;
// $ExpectType CityInfo[] | undefined
event.cityList;
});
placeSearch.on('listElementClick', (event: AMap.PlaceSearch.EventMap['listElementClick']) => {
// $ExpectType MouseEvent
event.event;
// $ExpectType string
event.id;
// $ExpectType number
event.index;
// $ExpectType Marker<any>
event.marker;
// $ExpectType HTMLLIElement
event.listElement;
});
placeSearch.on('markerClick', (event: AMap.PlaceSearch.EventMap['markerClick']) => {
const markerEvent = event.event;
// $ExpectType Marker<any>
markerEvent.target;
// $ExpectType string
event.id;
// $ExpectType number
event.index;
// $ExpectType Marker<any>
event.marker;
// $ExpectType HTMLLIElement
event.listElement;
});
+737
View File
@@ -0,0 +1,737 @@
// Type definitions for non-npm package amap-js-api-place-search 1.4
// Project: https://lbs.amap.com/api/javascript-api/reference/search#m_AMap.PlaceSearch
// Definitions by: breeze9527 <https://github.com/breeze9527>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
/// <reference types="amap-js-api" />
declare namespace AMap {
namespace PlaceSearch {
interface EventMap {
complete: Event<'complete', SearchResult>;
error: Event<'error', { info: string }>;
selectChanged: Event<'selectChanged', {
selected: SelectChangeEventData | EventMap['markerClick'] | EventMap['listElementClick'];
lastSelected: SelectChangeEventData | EventMap['markerClick'] | EventMap['listElementClick'] | null;
}>;
listElementClick: SelectChangeEvent<'listElementClick', MouseEvent>;
markerClick: SelectChangeEvent<'markerClick', Marker.EventMap['click']>;
// internal
renderComplete: Event<'renderComplete', {
result: SelectChangeEventData[];
markers: Marker[];
listElements: HTMLElement[];
}>;
infoWindowClick: Event<'infoWindowClick', SelectChangeEventData & {
event: MouseEvent;
infoWindow: InfoWindow;
infoWindowContentDom: HTMLDivElement;
}>;
willClear: Event<'willClear', {
id: string;
index: number;
data: Poi[];
}>;
markerDestoryed: Event<'markerDestoryed', SelectChangeEventData>; // typo in source code
listElementDetroyed: Event<'listElementDetroyed', SelectChangeEventData>; // typo too
}
interface SelectChangeEventData {
/**
* 当前选中的POI的ID
*/
id: string;
/**
* 索引
*/
index: number;
/**
* 当前选中的POI对应的在地图中的Marker对象
*/
marker: Marker;
/**
* 当前选中的POI在结果面板中对应的列表项
*/
listElement: HTMLLIElement;
/**
* 当前选中的POI的信息
*/
data: Poi[];
}
type SelectChangeEvent<N extends string, E> = Event<N, SelectChangeEventData & {
event: E;
}>;
interface PoiPhoto {
/**
* 图片名称
*/
title: string;
/**
* 图片url
*/
url: string;
}
interface PoiBase {
/**
* 全局唯一ID
*/
id: string;
/**
* 名称
*/
name: string;
/**
* 兴趣点类型
*/
type: string;
/**
* 兴趣点经纬度
*/
location: LngLat | null;
/**
* 地址
*/
address: string;
/**
* 离中心点距离
*/
distance: number;
/**
* 电话
*/
tel: string;
shopinfo: string;
children?: any[]; // TODO Array<{location: LngLat | null}>
}
interface Groupbuy {
/**
* 团购标题
*/
title: string;
/**
* 团购分类代码
*/
type_code: string;
/**
* 团购分类
*/
type: string;
/**
* 团购详情
*/
detail: string;
/**
* 团购开始时间
*/
stime: string;
/**
* 团购结束时间
*/
etime: string;
/**
* 团购总量
*/
count: number;
/**
* 已卖出数量
*/
sold_num: number;
/**
* 原价
*/
original_price: number;
/**
* 折扣价
*/
groupbuy_price: number;
/**
* 折扣
*/
discount: number;
/**
* 取票地址
*/
ticket_address: string;
/**
* 取票电话
*/
ticket_tel: string;
/**
* 图片信息
*/
photos: PoiPhoto[];
/**
* 来源url
*/
url: string;
/**
* 来源标识
*/
provider: string;
}
interface Discount {
/**
* 优惠标题
*/
title: string;
/**
* 优惠详情
*/
detail: string;
/**
* 开始时间
*/
start_time: string;
/**
* 结束时间
*/
end_time: string;
/**
* 已卖出数量
*/
sold_num: number;
/**
* 图片信息列表
*/
photos: PoiPhoto[];
/**
* 来源url
*/
url: string;
/**
* 来源标识
*/
provider: string;
}
interface Cinema {
/**
* 简介
*/
intro: string;
/**
* 综合评分
*/
rating: string;
/**
* 信息来源
*/
deep_src: string;
/**
* 停车场设施
*/
parking: string;
/**
* 规范格式的营业时间
*/
opentime_GDF: string;
/**
* 非规范格式的营业时间
*/
opentime: string;
/**
* 图片信息列表
*/
photos: PoiPhoto[];
}
interface Dining {
/**
* 菜系
*/
cuisines: string;
/**
* 标签
*/
tag: string;
/**
* 简介
*/
intro: string;
/**
* 综合评分
*/
rating: string;
/**
* 单数据源的评分
*/
cp_rating: string;
/**
* 信息来源
*/
deep_src: string;
/**
* 口味评分
*/
taste_rating: string;
/**
* 环境评分
*/
environment_rating: string;
/**
* 服务评分
*/
service_rating: string;
/**
* 人均消费
*/
cost: string;
/**
* 特色菜
*/
recommend: string;
/**
* 氛围
*/
atmosphere: string;
/**
* 订餐wap链接
*/
ordering_wap_url: string;
/**
* 订餐web链接
*/
ordering_web_url: string;
/**
* 订餐APP URL
*/
ordering_app_url: string;
/**
* 规范格式的营业时间
*/
opentime_GDF: string;
/**
* 非规范格式的营业时间
*/
opentime: string;
/**
* 餐厅特色
*/
addition: string;
/**
* 图片信息列表
*/
photos: PoiPhoto[];
}
interface Scenic {
/**
* 简介
*/
intro: string;
/**
* 综合评分
*/
rating: string;
/**
* 信息来源
*/
deep_src: string;
/**
* 景区国标级别
*/
level: string;
/**
* 门票价格
*/
price: string;
/**
* 适合游玩的季节
*/
season: string;
/**
* 推荐景点
*/
recommend: string;
/**
* 景区主题
*/
theme: string;
/**
* wap购票链接
*/
ordering_wap_url: string;
/**
* web购票链接
*/
ordering_web_url: string;
/**
* 规范格式的营业时间
*/
opentime_GDF: string;
/**
* 非规范格式的营业时间
*/
opentime: string;
/**
* 图片信息列表
*/
photos: PoiPhoto[];
}
interface Hotel {
/**
* 综合评分
*/
rating: string;
/**
* 星级
*/
star: string;
/**
* 简介
*/
intro: string;
/**
* 最低房价
*/
lowest_price: string;
/**
* 设施评分
*/
faci_rating: string;
/**
* 卫生评分
*/
health_rating: string;
/**
* 环境评分
*/
environment_rating: string;
/**
* 服务评分
*/
service_rating: string;
/**
* 交通提示
*/
traffic: string;
/**
* 特色服务
*/
addition: string;
/**
* 信息来源
*/
deep_src: string;
/**
* 图片信息列表
*/
photos: PoiPhoto[];
}
type PoiExt = PoiBase & {
/**
* 网址
*/
website: string;
/**
* 所在省份编码
*/
pcode: string;
/**
* 所在城市编码
*/
citycode: string;
/**
* 所在区域编码
*/
adcode: string;
/**
* 邮编
*/
postcode: string;
/**
* 所在省份
*/
pname: string;
/**
* 所在城市名称
*/
cityname: string;
/**
* 所在行政区名称
*/
adname: string;
/**
* 电子邮箱
*/
email: string;
/**
* 照片
*/
photos: PoiPhoto[];
/**
* 入口经纬度
*/
entr_location: LngLat | null;
/**
* 出口经纬度
*/
exit_location: LngLat | null;
/**
* @deprecated 是否有团购信息
*/
groupbuy: boolean;
/**
* @deprecated 是否有优惠信息
*/
discount: boolean;
} & ({
indoor_map: true;
indoor_data: {
cpid: string;
floor: string;
truefloor: string;
};
} | {
indoor_map: false;
}) & {
/**
* @deprecated 团购信息
*/
groupbuys?: Groupbuy[];
/**
* @deprecated 优惠信息
*/
discounts?: Discount[];
} & ({
deep_type: 'CINEMA';
/**
* @deprecated 影院类深度信息
*/
cinema: Cinema;
} | {
deep_type: 'DINING';
/**
* @deprecated 餐饮类深度信息
*/
dining: Dining;
} | {
deep_type: 'SCENIC';
/**
* @deprecated 景点类深度信息
*/
scenic: Scenic;
} | {
deep_type: 'HOTEL';
/**
* @deprecated 酒店类深度信息
*/
hotel: Hotel;
});
interface Options {
/**
* 兴趣点城市
*/
city?: string;
/**
* 是否强制限制在设置的城市内搜索
*/
citylimit?: boolean;
/**
* 是否按照层级展示子POI数据
* children=1,展示子节点POI数据,children=0,不展示子节点数据
*/
children?: number;
/**
* 兴趣点类别,多个类别用“|”分割
*/
type?: string;
/**
* 检索语言类型
*/
lang?: Lang;
/**
* 单页显示结果条数
*/
pageSize?: number;
/**
* 页码
*/
pageIndex?: number;
/**
* 是否返回详细信息
* base返回基本地址信息;all返回基本+详细信息
*/
extensions?: 'base' | 'all';
/**
* Map对象
*/
map?: Map;
/**
* 结果列表的HTML容器id或容器元素
*/
panel?: string | HTMLElement;
/**
* 是否在地图上显示周边搜索的圆或者范围搜索的多边形
*/
showCover?: boolean;
/**
* 绘制的UI风格
*/
renderStyle?: 'newpc' | 'default';
/**
* 是否自动调整地图视野使绘制的Marker点都处于视口的可见范围
*/
autoFitView?: boolean;
// internal
renderEngine?: string;
rankBy?: string;
}
interface PoiList {
/**
* Poi列表
*/
pois: Poi[]; // PlaceSearchPoiBase[] | PlaceSearchPoiExt[];
/**
* 页码
*/
pageIndex: number;
/**
* 单页结果数
*/
pageSize: number;
/**
* 查询结果总数
*/
count: number;
}
interface CityInfo {
/**
* 建议城市名称
*/
name: string;
/**
* 城市编码
*/
citycode: string;
/**
* 行政区编码
*/
adcode: string;
/**
* 该城市的建议结果数目
*/
count: number;
}
interface SearchResult {
/**
* 成功状态说明
*/
info: string;
/**
* 兴趣点列表
*/
poiList: PoiList;
/**
* 建议关键字列表
*/
keywordList?: string[];
/**
* 城市建议列表
*/
cityList?: CityInfo[];
}
type Poi = PoiBase | PoiExt;
type SearchStatus = 'complete' | 'error' | 'no_data';
}
class PlaceSearch extends EventEmitter {
/**
* 地点搜索服务
* @param options 选项
*/
constructor(options?: PlaceSearch.Options);
/**
* 根据关键字搜索
* @param keyword 根据关键字搜索
* @param callback 回调
*/
search(
keyword: string,
callback: (status: PlaceSearch.SearchStatus, result: string | PlaceSearch.SearchResult) => void
): void;
/**
* 周边查询
* @param keyword 关键字
* @param center 搜索中心
* @param radius 搜索半径
* @param callback 回调
*/
searchNearBy(
keyword: string,
center: LocationValue,
radius: number,
callback: (status: PlaceSearch.SearchStatus, result: string | PlaceSearch.SearchResult) => void
): void;
/**
* 根据范围和关键词进行范围查询
* @param keyword 关键字
* @param bounds 搜索范围
* @param callback 回调
*/
searchInBounds(
keyword: string,
bounds: Bounds | Polygon,
callback: (status: PlaceSearch.SearchStatus, result: string | PlaceSearch.SearchResult) => void
): void;
/**
* 根据POIID 查询POI 详细信息
* @param POIID POIID
* @param callback 搜索回调
*/
getDetails(
POIID: string,
callback: (status: PlaceSearch.SearchStatus, result: string | PlaceSearch.SearchResult) => void
): void;
/**
* 设置查询类别
* @param type 查询类别
*/
setType(type?: string): void;
/**
* 设置是否强制限制城市
* @param limit 是否强制限制城市
*/
setCityLimit(limit?: boolean): void;
/**
* 设置查询结果特定页数
* @param pageIndex 页码
*/
setPageIndex(pageIndex?: number): void;
/**
* 设置查询单页结果数
* @param pageSize 结果数
*/
setPageSize(pageSize?: number): void;
/**
* 设置查询城市
* @param city 城市
*/
setCity(city?: string): void;
/**
* 设置检索语言类型
* @param lang 语言类型
*/
setLang(lang?: Lang): void;
/**
* 获取检索语言类型
*/
getLang(): Lang | undefined;
/**
* 清除搜索结果
*/
clear(): void;
/**
* 唤起高德地图客户端marker页
* @param obj 唤起参数
*/
poiOnAMAP(obj: { location?: LocationValue; id: string; name?: string; }): void;
/**
* 唤起高德地图客户端POI详情页
* @param obj 唤起参数
*/
detailOnAMAP(obj: { location?: LocationValue; id: string; name?: string; }): void;
// internal
open(): void;
close(): void;
}
}
@@ -0,0 +1,24 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"dom"
],
"noEmit": true,
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"amap-js-api-place-search-tests.ts"
]
}
File diff suppressed because it is too large Load Diff
+15
View File
@@ -0,0 +1,15 @@
declare namespace AMap {
class ArrayBounds {
constructor(bounds: LocationValue[]);
bounds: LngLat[];
/**
* 判断传入的点是否在ArrayBounds内
* @param point 目标点
*/
contains(point: LocationValue): boolean;
// internal
toBounds(): Bounds;
getCenter(): LngLat;
}
}
+39
View File
@@ -0,0 +1,39 @@
declare namespace AMap {
class Bounds {
/**
* 地物对象的经纬度矩形范围。
* @param southWest 西南角经纬度
* @param northEast 东北角经纬度
*/
constructor(southWest: LngLat, northEast: LngLat);
/**
* 指定点坐标是否在矩形范围内
* @param point 制定坐标
*/
contains(point: LocationValue): boolean;
/**
* 获取当前Bounds的中心点经纬度坐标
*/
getCenter(): LngLat;
/**
* 获取西南角坐标
*/
getSouthWest(): LngLat;
/**
* 获取东南角坐标
*/
getSouthEast(): LngLat;
/**
* 获取东北角坐标
*/
getNorthEast(): LngLat;
/**
* 获取西北角坐标
*/
getNorthWest(): LngLat;
/**
* 以字符串形式返回地物对象的矩形范围
*/
toString(): string;
}
}
+192
View File
@@ -0,0 +1,192 @@
declare namespace AMap {
namespace Browser {
/**
* 当前浏览器userAgent
*/
const ua: string;
/**
* 是否移动设备
*/
const mobile: boolean;
/**
* 平台类型,如:'windows'、'mac'、'ios'、'android'、'other'
*/
const plat: 'android' | 'ios' | 'windows' | 'mac' | 'other';
/**
* 是否mac设备
*/
const mac: boolean;
/**
* 是否windows设备
*/
const windows: boolean;
/**
* 是否iOS设备
*/
const ios: boolean;
/**
* 是否iPad
*/
const iPad: boolean;
/**
* 是否iPhone
*/
const iPhone: boolean;
/**
* 是否安卓设备
*/
const android: boolean;
/**
* 是否安卓4以下系统
*/
const android23: boolean;
/**
* 是否Chrome浏览器
*/
const chrome: boolean;
/**
* 是否火狐浏览器
*/
const firefox: boolean;
/**
* 是否Safari浏览器
*/
const safari: boolean;
/**
* 是否微信
*/
const wechat: boolean;
/**
* 是否UC浏览器
*/
const uc: boolean;
/**
* 是否QQ或者QQ浏览器
*/
const qq: boolean;
/**
* 是否IE
*/
const ie: boolean;
/**
* 是否IE6
*/
const ie6: boolean;
/**
* 是否IE7
*/
const ie7: boolean;
/**
* 是否IE8
*/
const ie8: boolean;
/**
* 是否IE9
*/
const ie9: boolean;
/**
* 是否IE10
*/
const ie10: boolean;
/**
* 是否IE11
*/
const ie11: boolean;
/**
* 是否Edge浏览器
*/
const edge: boolean;
/**
* 是否IE9以下
*/
const ielt9: boolean;
/**
* 是否百度浏览器
*/
const baidu: boolean;
/**
* 是否支持LocaStorage
*/
const isLocalStorage: boolean;
/**
* 是否支持Geolocation
*/
const isGeolocation: boolean;
/**
* 是否Webkit移动浏览器
*/
const mobileWebkit: boolean;
/**
* 是否支持Css3D的Webkit移动端浏览器
*/
const mobileWebkit3d: boolean;
/**
* 是否Opera移动浏览器
*/
const mobileOpera: boolean;
/**
* 是否高清屏幕,devicePixelRatio>1
*/
const retina: boolean;
/**
* 是否触屏
*/
const touch: boolean;
/**
* 是否msPointer设备
*/
const msPointer: boolean;
/**
* 是否pointer设备
*/
const pointer: boolean;
/**
* 是否webkit浏览器
*/
const webkit: boolean;
/**
* 是否支持Css3D的ie浏览器
*/
const ie3d: boolean;
/**
* 是否支持Css3D的Webkit浏览器
*/
const webkit3d: boolean;
/**
* 是否支持Css3D的gecko浏览器
*/
const gecko3d: boolean;
/**
* 是否支持Css3D的opera浏览器
*/
const opera3d: boolean;
/**
* 是否支持Css3D的浏览器
*/
const any3d: boolean;
/**
* 是否支持canvas
*/
const isCanvas: boolean;
/**
* 是否支持svg
*/
const isSvg: boolean;
/**
* 是否支持vml
*/
const isVML: boolean;
/**
* 是否支持WebWorker
*/
const isWorker: boolean;
/**
* 是否支持WebSocket
*/
const isWebsocket: boolean;
/**
* 判断是否支持webgl
*/
function isWebGL(): boolean;
}
}
+31
View File
@@ -0,0 +1,31 @@
declare namespace AMap {
type SizeValue = Size | [number, number];
type LocationValue = LngLat | [number, number];
type Lang = 'zh_cn' | 'en' | 'zh_en';
type Event<N extends string = string, V = undefined> = { type: N } &
(V extends HTMLElement ? { value: V }
: V extends object ? V
: V extends undefined ? {}
: { value: V });
type MapsEvent<N extends string, I> = Event<N, {
/**
* 经纬度坐标
*/
lnglat: LngLat;
/**
* 像素坐标
*/
pixel: Pixel;
/**
* 触发对象
*/
target: I
}>;
type StrokeLineJoin = 'miter' | 'round' | 'bevel';
type StrokeLineCap = 'butt' | 'round' | 'square';
type StrokeStyle = 'dashed' | 'solid';
type AnimationName = 'AMAP_ANIMATION_NONE' | 'AMAP_ANIMATION_DROP' | 'AMAP_ANIMATION_BOUNCE';
}
+27
View File
@@ -0,0 +1,27 @@
declare namespace AMap {
namespace convertFrom {
interface Result {
/**
* 成功状态文字描述
*/
info: string; // 'ok'
/**
* 高德坐标集合
*/
locations: LngLat[];
}
type Type = 'gps' | 'baidu' | 'mapbar';
type SearchStatus = 'complete' | 'error';
}
/**
* 为坐标转换类,支持将其他坐标系的坐标点转换为高德坐标系。
* @param lnglat 待转换坐标
* @param type 用于说明是哪个服务商的坐标
* @param callback 转换完成后的回调函数
*/
function convertFrom(
lnglat: LocationValue | LocationValue[],
type: convertFrom.Type | null,
callback: (status: convertFrom.SearchStatus, result: string | convertFrom.Result) => void
): void;
}
+78
View File
@@ -0,0 +1,78 @@
declare namespace AMap {
namespace DomUtil {
/**
* 获取DOM元素的大小
* @param dom DOM元素
*/
function getViewport(dom: HTMLElement): Size;
/**
* 获取DOM元素距离窗口左上角的距离
* @param dom DOM元素
*/
function getViewportOffset(dom: HTMLElement): Pixel;
/**
* 在parentNode内部创建一个className类名的tagName元素
* @param tagName 标签名称
* @param parent 父节点
* @param className 类名
*/
function create<K extends keyof HTMLElementTagNameMap>(
tagName: K,
parent?: HTMLElement,
className?: string
): HTMLElementTagNameMap[K];
/**
* 给DOM元素设置为className样式
* @param dom DOM元素
* @param className 类名
*/
function setClass(dom: HTMLElement, className?: string): void;
/**
* DOM元素是否包含className
* @param dom DOM元素
* @param className 类名
*/
function hasClass(dom: HTMLElement, className: string): boolean;
/**
* 给DOM元素添加一个className
* @param dom DOM元素
* @param className 类名
*/
function addClass(dom: HTMLElement, className: string): void;
/**
* 给DOM元素删除一个className
* @param dom DOM元素
* @param className 类名
*/
function removeClass(dom: HTMLElement, className: string): void;
/**
* 给DOM元素设定一个透明度
* @param dom DOM元素
* @param opacity 透明度(0-1)
*/
function setOpacity(dom: HTMLElement, opacity: number): void;
/**
* 给DOM元素旋转一个角度,以center为中心,center以元素左上角为坐标原点
* @param dom DOM元素
* @param deg 旋转角度
* @param origin 旋转中心
*/
function rotate(dom: HTMLElement, deg: number, origin?: { x: number, y: number }): void;
/**
* 给DOM元素删除一组样式,Object同样式表
* @param dom DOM元素
* @param style 样式
*/
function setCss(dom: HTMLElement | HTMLElement[], style: Partial<CSSStyleDeclaration>): typeof DomUtil; // this
/**
* 清空DOM元素
* @param dom DOM元素
*/
function empty(dom: HTMLElement): void;
/**
* 将DOM元素从父节点删除
* @param dom DOM元素
*/
function remove(dom: HTMLElement): void;
}
}
+102
View File
@@ -0,0 +1,102 @@
declare namespace AMap {
abstract class EventEmitter {
/**
* 注册事件
* @param eventName 事件名称
* @param handler 事件回调函数
* @param context 事件回调中的上下文
* @param once 触发一次
* @param unshift 更改事件顺序
*/
on<E extends Event, C = this>(
eventName: string,
// tslint:disable-next-line:no-unnecessary-generics
handler: (this: C, event: E) => void,
context?: C,
once?: boolean,
unshift?: boolean
): this;
/**
* 移除事件绑定
* @param eventName 事件名称
* @param handler 事件功能函数
* @param context 事件上下文
*/
off<E extends Event, C = this>(
eventName: string,
// tslint:disable-next-line
handler: ((this: C, event: E) => void) | 'mv',
context?: C
): this;
/**
* 触发事件
* @param eventName 事件名称
* @param data 事件数据
*/
emit(eventName: string, data?: any): this;
}
namespace event {
interface EventListener<T extends 0 | 1> {
type: T;
}
/**
* 注册DOM对象事件
* @param instance 需注册事件的DOM对象
* @param eventName 事件名称
* @param handler 事件功能函数
* @param context 事件上下文
*/
function addDomListener<N extends keyof HTMLElementTagNameMap, E extends keyof HTMLElementEventMap, C = HTMLElementTagNameMap[N]>(
// tslint:disable-next-line: no-unnecessary-generics
instance: HTMLElementTagNameMap[N],
eventName: E,
handler: (this: C, event: HTMLElementEventMap[E]) => void,
context?: C
): EventListener<0>;
/**
* 给对象注册事件
* @param instance 需注册事件的对象
* @param eventName 事件名称
* @param handler 事件功能函数
* @param context 事件上下文
*/
function addListener<I extends EventEmitter, E extends Event, C = I>(
// tslint:disable-next-line: no-unnecessary-generics
instance: I,
eventName: string,
// tslint:disable-next-line: no-unnecessary-generics
handler: (this: C, event: E) => void,
// tslint:disable-next-line: no-unnecessary-generics
context?: C
): EventListener<1>;
/**
* 给对象注册一次性事件
* @param instance 需注册事件的对象
* @param eventName 事件名称
* @param handler 事件功能函数
* @param context 事件上下文
*/
function addListenerOnce<I extends EventEmitter, E extends Event, C = I>(
// tslint:disable-next-line: no-unnecessary-generics
instance: I,
eventName: string,
// tslint:disable-next-line: no-unnecessary-generics
handler: (this: C, event: E) => void,
// tslint:disable-next-line: no-unnecessary-generics
context?: C
): EventListener<1>;
/**
* 删除事件
* @param listener 侦听器
*/
function removeListener(listener: EventListener<0 | 1>): void;
/**
* 触发非DOM事件
* @param instance 触发对象
* @param eventName 事件名称
* @param data 事件数据
*/
function trigger(instance: EventEmitter, eventName: string, data?: any): void;
}
}
+192
View File
@@ -0,0 +1,192 @@
declare namespace AMap {
namespace GeometryUtil {
/**
* 计算两个经纬度点之间的实际距离
*/
function distance(
point1: LocationValue,
point2: LocationValue | LocationValue[]
): number;
/**
* 计算一个经纬度路径围成区域的实际面积
*/
function ringArea(ring: LocationValue[]): number;
/**
* 判断一个经纬度路径是否为顺时针
*/
function isClockwise(path: LocationValue[]): boolean;
/**
* 计算一个经纬度路径的实际长度
*/
function distanceOfLine(line: LocationValue[]): number;
/**
* 计算两个经纬度面的交叉区域
*/
function ringRingClip(
ring1: LocationValue[],
ring2: LocationValue[]
): Array<[number, number]>;
/**
* 判断两个经纬度面是否交叉
*/
function doesRingRingIntersect(
ring1: LocationValue[],
ring2: LocationValue[]
): boolean;
/**
* 判断经纬度路径和经纬度面是否交叉
*/
function doesLineRingIntersect(
line: LocationValue[],
ring: LocationValue[]
): boolean;
/**
* 判断两个经纬度路径是否相交
*/
function doesLineLineIntersect(
line1: LocationValue[],
line2: LocationValue[]
): boolean;
/**
* 判断线段和多个环是否相交
*/
function doesSegmentPolygonIntersect(
point1: LocationValue,
point2: LocationValue,
polygon: LocationValue[][]
): boolean;
/**
* 判断线段和一个环是否相交
*/
function doesSegmentRingIntersect(
point1: LocationValue,
point2: LocationValue,
ring: LocationValue[]
): boolean;
/**
* 判断线段和一个路径是否相交
*/
function doesSegmentLineIntersect(
point1: LocationValue,
point2: LocationValue,
line: LocationValue[]
): boolean;
/**
* 判断两个线段是否相交
*/
function doesSegmentsIntersect(
point1: LocationValue,
point2: LocationValue,
point3: LocationValue,
point4: LocationValue
): boolean;
/**
* 判断点是否在环内
*/
function isPointInRing(point: LocationValue, ring: LocationValue[]): boolean;
/**
* 判断环是否在另一个环内
*/
function isRingInRing(ring1: LocationValue[], ring2: LocationValue[]): boolean;
/**
* 判断点是否在多个环组成区域内
*/
function isPointInPolygon(point: LocationValue, polygon: LocationValue[][]): boolean;
/**
* 判断点是否在多个环组成区域内
*/
function makesureClockwise(path: Array<[number, number]>): Array<[number, number]>;
/**
* 将一个路径变为逆时针
*/
function makesureAntiClockwise(path: Array<[number, number]>): Array<[number, number]>;
/**
* 计算P2P3上距离P1最近的点
* @param point1 P1
* @param point2 P2
* @param point3 P3
*/
function closestOnSegment(
point1: LocationValue,
point2: LocationValue,
point3: LocationValue
): [number, number];
/**
* 计算line上距离P最近的点
*/
function closestOnLine(point: LocationValue, line: LocationValue[]): [number, number];
/**
* 计算P2P3到P1的距离
* @param point1 P1
* @param point2 P2
* @param point3 P3
*/
function distanceToSegment(
point1: LocationValue,
point2: LocationValue,
point3: LocationValue
): number;
/**
* 计算P到line的距离
*/
function distanceToLine(point: LocationValue, line: LocationValue[]): number;
/**
* 判断P1是否在P2P3上
* @param point1 P1
* @param point2 P2
* @param point3 P3
* @param tolerance 误差范围
*/
function isPointOnSegment(
point1: LocationValue,
point2: LocationValue,
point3: LocationValue,
tolerance?: number
): boolean;
/**
* 判断P是否在line上
* @param point 点P
* @param line 线
* @param tolerance 误差范围
*/
function isPointOnLine(
point: LocationValue,
line: LocationValue[],
tolerance?: number
): boolean;
/**
* 判断P是否在ring的边上
* @param point 点P
* @param ring 环
* @param tolerance 误差范围
*/
function isPointOnRing(
point: LocationValue,
ring: LocationValue[],
tolerance?: number
): boolean;
/**
* 判断P是否在多个ring的边上
* @param point 点P
* @param polygon 多边形
* @param tolerance 误差范围
*/
function isPointOnPolygon(
point: LocationValue,
polygon: LocationValue[][],
tolerance?: number
): boolean;
function doesPolygonPolygonIntersect(
polygon1: LocationValue[],
polygon2: LocationValue[]
): boolean;
function distanceToPolygon(point: LocationValue, polygon: LocationValue[]): number;
function triangulateShape(
shape1: LngLat[] | Pixel[] | [number, number],
shape2: LngLat[] | Pixel[] | [number, number]
): number[];
}
}
+48
View File
@@ -0,0 +1,48 @@
// Type definitions for non-npm package amap-js-api 1.4
// Project: https://lbs.amap.com/api/javascript-api/summary
// Definitions by: breeze9527 <https://github.com/breeze9527>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
/// <reference path="array-bounds.d.ts" />
/// <reference path="bounds.d.ts" />
/// <reference path="browser.d.ts" />
/// <reference path="common.d.ts" />
/// <reference path="convert-from.d.ts" />
/// <reference path="dom-util.d.ts" />
/// <reference path="event.d.ts" />
/// <reference path="geometry-util.d.ts" />
/// <reference path="lngLat.d.ts" />
/// <reference path="map.d.ts" />
/// <reference path="pixel.d.ts" />
/// <reference path="size.d.ts" />
/// <reference path="type-util.d.ts" />
/// <reference path="util.d.ts" />
/// <reference path="view2D.d.ts" />
/// <reference path="layer/building.d.ts" />
/// <reference path="layer/flexible.d.ts" />
/// <reference path="layer/layer.d.ts" />
/// <reference path="layer/layerGroup.d.ts" />
/// <reference path="layer/massMarks.d.ts" />
/// <reference path="layer/mediaLayer.d.ts" />
/// <reference path="layer/tileLayer.d.ts" />
/// <reference path="layer/wms.d.ts" />
/// <reference path="layer/wmts.d.ts" />
/// <reference path="overlay/bezierCurve.d.ts" />
/// <reference path="overlay/circle.d.ts" />
/// <reference path="overlay/circleMarker.d.ts" />
/// <reference path="overlay/contextMenu.d.ts" />
/// <reference path="overlay/ellipse.d.ts" />
/// <reference path="overlay/geoJSON.d.ts" />
/// <reference path="overlay/icon.d.ts" />
/// <reference path="overlay/infoWindow.d.ts" />
/// <reference path="overlay/marker.d.ts" />
/// <reference path="overlay/markerShape.d.ts" />
/// <reference path="overlay/overlay.d.ts" />
/// <reference path="overlay/overlayGroup.d.ts" />
/// <reference path="overlay/pathOverlay.d.ts" />
/// <reference path="overlay/polygon.d.ts" />
/// <reference path="overlay/polyline.d.ts" />
/// <reference path="overlay/rectangle.d.ts" />
/// <reference path="overlay/shapeOverlay.d.ts" />
/// <reference path="overlay/text.d.ts" />
+54
View File
@@ -0,0 +1,54 @@
declare namespace AMap {
namespace Buildings {
interface Options extends Layer.Options {
/**
* 可见级别范围
*/
zooms?: [number, number];
/**
* 不透明度
*/
opacity?: number;
/**
* 高度比例系数,可控制3D视图下的楼块高度
*/
heightFactor?: number;
/**
* 是否可见
*/
visible?: boolean;
/**
* 层级
*/
zIndex?: number;
// inner
merge?: boolean;
sort?: boolean;
}
interface AreaStyle {
color1: string;
path: LocationValue[];
color2?: string;
visible?: boolean;
rejectTexture?: boolean;
}
interface Style {
hideWithoutStyle?: boolean;
areas: AreaStyle[];
}
}
class Buildings extends Layer {
/**
* 楼块图层,单独展示矢量化的楼块图层
* @param opts 图层选项
*/
constructor(opts?: Buildings.Options);
/**
* 按区域设置楼块的颜色
* @param style 颜色设置
*/
setStyle(style: Buildings.Style): void;
}
}
+38
View File
@@ -0,0 +1,38 @@
declare namespace AMap {
namespace TileLayer {
namespace Flexible {
interface Options extends TileLayer.Options {
/**
* 创建切片回调
* @param x 横坐标
* @param y 纵坐标
* @param z 层级
* @param success 成功回调
* @param fail 失败回调
*/
createTile?(
x: number,
y: number,
z: number,
success: (tile: HTMLImageElement | HTMLCanvasElement) => void,
fail: () => void
): void;
/**
* 内存中缓存的切片的数量上限
*/
cacheSize?: number;
/**
* 是否显示
*/
visible?: boolean;
}
}
class Flexible extends TileLayer {
/**
* 灵活切片图层
* @param options 图层选项
*/
constructor(options?: Flexible.Options);
}
}
}
+56
View File
@@ -0,0 +1,56 @@
declare namespace AMap {
namespace Layer {
interface Options {
/**
* 所属的地图对象
*/
map?: Map;
}
}
abstract class Layer extends EventEmitter {
/**
* 图层获取DOM节点
*/
getContainer(): HTMLDivElement | undefined;
/**
* 获取图层缩放范围
*/
getZooms(): [number, number];
/**
* 设置透明度
* @param alpha 透明度
*/
setOpacity(alpha: number): void;
/**
* 设置透明度
*/
getOpacity(): number;
/**
* 显示图层
*/
show(): void;
/**
* 隐藏图层
*/
hide(): void;
/**
* 设置图层所属地图
* @param map map对象
*/
setMap(map?: Map | null): void;
/**
* 获取图层所属地图
*/
getMap(): Map | null | undefined;
/**
* 设置图层的层级
* @param index 层级
*/
setzIndex(index: number): void;
/**
* 获取图层的层级
*/
getzIndex(): number;
}
}
+56
View File
@@ -0,0 +1,56 @@
declare namespace AMap {
class LayerGroup<L = any> extends Layer {
/**
* 图层集合
* @param layers 集合中的图层
*/
constructor(layers: L | L[]);
/**
* 添加单个图层到集合中,不支持添加重复的图层
* @param layer 图层
*/
addLayer(layer: L | L[]): this;
/**
* 添加图层数组到集合中,不支持添加重复的图层
* @param layers 图层数组
*/
addLayers(layers: L | L[]): this;
/**
* 返回当前集合中所有的图层
*/
getLayers(): L[];
getLayer(finder: (this: null, item: L, index: number, list: L[]) => boolean): L | null;
/**
* 判断传入的图层实例是否在集合中
* @param layer 目标图层
*/
hasLayer(layer: L | ((this: null, item: L, index: number, list: L[]) => boolean)): boolean;
/**
* 从集合中删除传入的图层实例
* @param layer 图层
*/
removeLayer(layer: L | L[]): this;
/**
* 从集合中删除传入的图层实例数组
* @param layers 图层数组
*/
removeLayers(layers: L | L[]): this;
/**
* 清空集合
*/
clearLayers(): this;
/**
* 对集合中的图层做迭代操作
* @param iterator 迭代回调
* @param context 执行上下文
*/
eachLayer<C = L>(iterator: (this: C, layer: L, index: number, list: L[]) => void, context?: C): void;
// overwrite
setMap(map?: Map): this;
hide(): this;
show(): this;
reload(): this;
setOptions(options: any): this;
}
}
+99
View File
@@ -0,0 +1,99 @@
declare namespace AMap {
namespace MassMarks {
interface EventMap<I = MassMarks> {
click: UIEvent<'click', I>;
dblclick: UIEvent<'dblclick', I>;
mousedown: UIEvent<'mousedown', I>;
mouseup: UIEvent<'mouseup', I>;
mouseover: UIEvent<'mouseover', I>;
mouseout: UIEvent<'mouseout', I>;
touchstart: UIEvent<'touchstart', I>;
touchend: UIEvent<'touchend', I>;
}
interface Style {
/**
* 图标显示位置偏移量,以图标的左上角为基准点(0,0)点
*/
anchor: Pixel;
/**
* 图标的地址
*/
url: string;
/**
* 图标的尺寸
*/
size: Size;
/**
* 旋转角度
*/
rotation?: number;
}
type UIEvent<N extends string, I> = Event<N, {
/**
* 事件触发目标
*/
target: I;
/**
* 目标点的数据
*/
data: I extends MassMarks<infer D> ? D : Data;
}>;
interface Options extends Layer.Options {
/**
* 显示层级
*/
zIndex?: number;
/**
* 指针样式
*/
cursor?: string;
/**
* 是否在拖拽缩放过程中实时重绘
*/
alwayRender?: boolean;
/**
* 设置点的样式
*/
style: Style | Style[];
// rejectMapMask
}
interface Data {
lnglat: LocationValue;
style?: number;
}
}
class MassMarks<D extends MassMarks.Data = MassMarks.Data> extends Layer {
/**
* 海量点类,利用该类可同时在地图上展示万级别的点
* @param data 点对象数组或url
* @param opts 选项
*/
constructor(data: D[] | string, opts: MassMarks.Options);
/**
* 设置显示样式
* @param style 样式设置
*/
setStyle(style: MassMarks.Style | MassMarks.Style[]): void;
/**
* 获取显示样式
*/
getStyle(): MassMarks.Style | MassMarks.Style[];
/**
* 设置数据集
* @param data 数据集
*/
setData(data: D[] | string): void;
/**
* 获取数据集
*/
getData(): Array<Pick<D, Exclude<keyof D, 'lnglat'>> & { lnglat: LngLat }>;
/**
* 清除海量点
*/
clear(): void;
}
}
+94
View File
@@ -0,0 +1,94 @@
declare namespace AMap {
namespace MediaLayer {
interface Options extends Layer.Options {
/**
* 显示范围
*/
bounds?: Bounds;
/**
* 是否可见
*/
visible?: boolean;
/**
* 缩放范围
*/
zooms?: [number, number];
/**
* 透明度
*/
opacity?: number;
}
}
abstract class MediaLayer<E extends HTMLElement> extends Layer {
/**
* @param options 图层选项
*/
constructor(options?: MediaLayer.Options);
/**
* 设置显示范围
* @param bounds 显示范围
*/
setBounds(bounds: Bounds): void;
/**
* 获取显示的范围
*/
getBounds(): Bounds;
/**
* 设置图层选项
* @param options 图层选项
*/
setOptions(options: Partial<MediaLayer.Options>): void;
/**
* 获取图层选项
*/
getOptions(): Partial<MediaLayer.Options>;
/**
* 获取元素
*/
getElement(): E | null;
}
/**
* 图片图层
*/
class ImageLayer extends MediaLayer<HTMLImageElement> {
/**
* 修改Image的Url
* @param url url
*/
setImageUrl(url: string): void;
/**
* 返回Image的Url
*/
getImageUrl(): string | undefined;
}
class VideoLayer extends MediaLayer<HTMLVideoElement> {
/**
* 修改Video的Url
* @param source url
*/
setVideoUrl(source: string | string[]): void;
/**
* 返回Video的Url
*/
getVideoUrl(): string | string[] | undefined;
}
class CanvasLayer extends MediaLayer<HTMLCanvasElement> {
/**
* 修改显示的Canvas
* @param canvas Canvas对象
*/
setCanvas(canvas: HTMLCanvasElement): void;
/**
* 返回Canvas对象
*/
getCanvas(): HTMLCanvasElement | undefined;
/**
* 当canvas的内容发生改变是用于刷新图层
*/
reFresh(): void;
}
}
+91
View File
@@ -0,0 +1,91 @@
declare namespace AMap {
namespace TileLayer {
interface EventMap {
complete: Event<'complete'>;
}
interface Options extends Layer.Options {
/**
* 切片大小
*/
tileSize?: number;
/**
* 切片取图地址(自1.3版本起,该属性与getTileUrl属性合并)
*/
tileUrl?: string;
/**
* 取图错误时的代替地址
*/
errorUrl?: string;
/**
* 获取图块取图地址
*/
getTileUrl?: string | ((x: number, y: number, level: number) => string);
/**
* 图层叠加的顺序值
*/
zIndex?: number;
/**
* 图层的透明度
*/
opacity?: number;
/**
* 支持的缩放级别范围
*/
zooms?: [number, number];
/**
* 是否在高清屏下进行清晰度适配
*/
detectRetina?: boolean;
}
/**
* 卫星图层
*/
class Satellite extends TileLayer { }
/**
* 路网图层
*/
class RoadNet extends TileLayer { }
namespace Traffic {
interface Options extends TileLayer.Options {
/**
* 是否设置可以自动刷新实时路况信息
*/
autoRefresh?: boolean;
/**
* 设置刷新间隔时长
*/
interval?: number;
}
}
class Traffic extends TileLayer {
/**
* 实时交通图层
* @param options 图层选项
*/
constructor(options?: Traffic.Options);
}
}
class TileLayer extends Layer {
/**
* 切片图层
* @param options 图层选项
*/
constructor(options?: TileLayer.Options);
/**
* 获取当前图层所有切片号
*/
getTiles(): string[];
/**
* 重新加载此图层
*/
reload(): void;
/**
* 设置图层的取图地址
* @param url 取图地址
*/
setTileUrl(url: string | ((x: number, y: number, level: number) => string)): void;
}
}
+56
View File
@@ -0,0 +1,56 @@
declare namespace AMap {
namespace TileLayer {
namespace WMS {
interface Params {
VERSION?: string;
LAYERS?: string;
STYLES?: string;
FORMAT?: string;
TRANSPARENT?: 'TRUE' | 'FALSE';
BGCOLOR?: string;
EXCEPTIONS?: string;
TIME?: string;
ELEVATION?: string;
}
interface Options extends Flexible.Options {
/**
* wms服务的url地址
*/
url: string;
/**
* OGC标准的WMS地图服务的GetMap接口的参数
*/
params: Params;
/**
* 地图级别切换时,不同级别的图片是否进行混合
*/
blend?: boolean;
}
}
class WMS extends Flexible {
/**
* WMS图层
* @param options 图层选项
*/
constructor(options: WMS.Options);
/**
* 设置wms服务地址
* @param url 服务地址
*/
setUrl(url: string): void;
/**
* 返回wms服务地址
*/
getUrl(): string;
/**
* 设置OGC标准的WMS getMap接口的参数
* @param params 接口参数
*/
setParams(params: WMS.Params): void;
/**
* 返回OGC标准的WMS getMap接口的参数
*/
getParams(): WMS.Params;
}
}
}
+52
View File
@@ -0,0 +1,52 @@
declare namespace AMap {
namespace TileLayer {
namespace WMTS {
interface Params {
Version?: string;
Layer?: string;
Style?: string;
Format?: string;
}
interface Options extends Flexible.Options {
/**
* wmts服务的url地址
*/
url: string;
/**
* OGC标准的WMTS地图服务的GetTile接口的参数
*/
params: Params;
/**
* 地图级别切换时,不同级别的图片是否进行混合
*/
blend?: boolean;
}
}
class WMTS extends Flexible {
/**
* WMTS图层
* @param options 图层选项
*/
constructor(options: WMTS.Options);
/**
* 设置wmts服务地址
* @param url 服务地址
*/
setUrl(url: string): void;
/**
* 返回wmts服务地址
*/
getUrl(): string;
/**
* 设置OGC标准的WMTS getTile接口的参数
* @param params 接口参数
*/
setParams(params: WMTS.Params): void;
/**
* 返回OGC标准的WMTS getTile接口的参数
*/
getParams(): WMTS.Params;
}
}
}
+45
View File
@@ -0,0 +1,45 @@
declare namespace AMap {
class LngLat {
/**
* 构造一个地理坐标对象
* @param lng 经度
* @param lat 纬度
* @param noAutofix 是否自动修正
*/
constructor(lng: number, lat: number, noAutofix?: boolean);
/**
* 移动当前经纬度坐标得到新的坐标
* @param east 移动经度,向右为正值
* @param north 移动维度,向上为正值
*/
offset(east: number, north: number): LngLat;
/**
* 当前经纬度和传入经纬度或者经纬度数组连线之间的地面距离,单位为米
* @param lnglat 对比目标
*/
distance(lnglat: LngLat | LngLat[]): number;
/**
* 获取经度值
*/
getLng(): number;
/**
* 获取纬度值
*/
getLat(): number;
/**
* 判断当前坐标对象与传入坐标对象是否相等
* @param lnglat 判断目标
*/
equals(lnglat: LngLat): boolean;
/**
* 以字符串的形式返回
*/
toString(): string;
// internal
add(lnglat: LngLat, noAutofix?: boolean): LngLat;
subtract(lnglat: LngLat, noAutofix?: boolean): LngLat;
divideBy(num: number, noAutofix?: boolean): LngLat;
multiplyBy(num: number, noAutofix?: boolean): LngLat;
}
}
+568
View File
@@ -0,0 +1,568 @@
declare namespace AMap {
namespace Map {
type Feature = 'bg' | 'point' | 'road' | 'building';
type ViewMode = '2D' | '3D';
interface Options {
/**
* 地图视口,用于控制影响地图静态显示的属性
*/
view?: View2D;
/**
* 地图图层数组,数组可以是图层 中的一个或多个,默认为普通二维地图
*/
layers?: Layer[];
/**
* 地图显示的缩放级别
*/
zoom?: number;
/**
* 地图中心点坐标值
*/
center?: LocationValue;
/**
* 地图标注显示顺序
*/
labelzIndex?: number;
/**
* 地图显示的缩放级别范围
*/
zooms?: [number, number];
/**
* 地图语言类型
*/
lang?: Lang;
/**
* 地图默认鼠标样式
*/
defaultCursor?: string;
/**
* 地图显示的参考坐标系
*/
crs?: 'EPSG3857' | 'EPSG3395' | 'EPSG4326';
/**
* 地图平移过程中是否使用动画
*/
animateEnable?: boolean;
/**
* 是否开启地图热点和标注的hover效果
*/
isHotspot?: boolean;
/**
* 当前地图中默认显示的图层
*/
defaultLayer?: TileLayer;
/**
* 地图是否可旋转
*/
rotateEnable?: boolean;
/**
* 是否监控地图容器尺寸变化
*/
resizeEnable?: boolean;
/**
* 是否在有矢量底图的时候自动展示室内地图
*/
showIndoorMap?: boolean;
/**
* 在展示矢量图的时候自动展示室内地图图层
*/
// indoorMap?: IndorMap
/**
* 是否支持可以扩展最大缩放级别
*/
expandZoomRange?: boolean;
/**
* 地图是否可通过鼠标拖拽平移
*/
dragEnable?: boolean;
/**
* 地图是否可缩放
*/
zoomEnable?: boolean;
/**
* 地图是否可通过双击鼠标放大地图
*/
doubleClickZoom?: boolean;
/**
* 地图是否可通过键盘控制
*/
keyboardEnable?: boolean;
/**
* 地图是否使用缓动效果
*/
jogEnable?: boolean;
/**
* 地图是否可通过鼠标滚轮缩放浏览
*/
scrollWheel?: boolean;
/**
* 地图在移动终端上是否可通过多点触控缩放浏览地图
*/
touchZoom?: boolean;
/**
* 当touchZoomCenter=1的时候,手机端双指缩放的以地图中心为中心,否则默认以双指中间点为中心
*/
touchZoomCenter?: number;
/**
* 设置地图的显示样式
*/
mapStyle?: string;
/**
* 设置地图上显示的元素种类
*/
features?: Feature[] | 'all' | Feature;
/**
* 设置地图显示3D楼块效果
*/
showBuildingBlock?: boolean;
/**
* 视图模式
*/
viewMode?: ViewMode;
/**
* 俯仰角度
*/
pitch?: number;
/**
* 是否允许设置俯仰角度
*/
pitchEnable?: boolean;
/**
* 楼块出现和消失的时候是否显示动画过程
*/
buildingAnimation?: boolean;
/**
* 调整天空颜色
*/
skyColor?: string;
/**
* 设置地图的预加载模式
*/
preloadMode?: boolean;
/**
* 为 Map 实例指定掩模的路径,各图层将只显示路径范围内图像
*/
mask?: Array<[number, number]> | Array<Array<[number, number]>> | Array<Array<Array<[number, number]>>>;
maxPitch?: number;
rotation?: number;
forceVector?: boolean;
// internal
baseRender?: 'vw' | 'd' | 'dv' | 'v';
overlayRender?: 'c' | 'd';
showLabel?: boolean;
gridMapForeign?: boolean;
logoUrl?: string;
logoUrlRetina?: string;
copyright?: string;
turboMode?: boolean;
workerMode?: boolean;
// continuousZoomEnable?: boolean;
// showFog: boolean;
// yaw: number;
// scale: number;
// detectRetina: number;
}
interface Status {
/**
* 是否开启动画
*/
animateEnable: boolean;
/**
* 是否双击缩放
*/
doubleClickZoom: boolean;
/**
* 是否支持拖拽
*/
dragEnable: boolean;
isHotspot: boolean;
/**
* 是否开启缓动效果
*/
jogEnable: boolean;
/**
* 是否支持键盘
*/
keyboardEnable: boolean;
/**
* 是否支持调整俯仰角
*/
pitchEnable: boolean;
resizeEnable: boolean;
/**
* 是否支持旋转
*/
rotateEnable: boolean;
/**
* 是否支持滚轮缩放
*/
scrollWheel: boolean;
/**
* 是否支持触摸缩放
*/
touchZoom: boolean;
/**
* 是否支持缩放
*/
zoomEnable: boolean;
}
type HotspotEvent<N extends string> = Event<N, {
/**
* 经纬度坐标
*/
lnglat: LngLat;
/**
* 热点名称
*/
name: string;
/**
* 热点id
*/
id: string;
// internal
/**
* 是否室内热点
*/
isIndoorPOI: boolean;
}>;
interface EventMap {
click: MapsEvent<'click', Map>;
dblclick: MapsEvent<'dblclick', Map>;
rightclick: MapsEvent<'rightclick', Map>;
rdblclick: MapsEvent<'rdblclick', Map>;
mouseup: MapsEvent<'mouseup', Map>;
mousedown: MapsEvent<'mousedown', Map>;
mousemove: MapsEvent<'mousemove', Map>;
mousewheel: MapsEvent<'mousewheel', Map>;
mouseover: MapsEvent<'mouseover', Map>;
mouseout: MapsEvent<'mouseout', Map>;
touchstart: MapsEvent<'touchstart', Map>;
touchmove: MapsEvent<'touchmove', Map>;
touchend: MapsEvent<'touchend', Map>;
contextmenu: MapsEvent<'contextmenu', Map>;
hotspotclick: HotspotEvent<'hotspotclick'>;
hotspotover: HotspotEvent<'hotspotover'>;
hotspotout: HotspotEvent<'hotspotout'>;
complete: Event<'complete'>;
mapmove: Event<'mapmove'>;
movestart: Event<'movestart'>;
moveend: Event<'moveend'>;
zoomchange: Event<'zoomchange'>;
zoomstart: Event<'zoomstart'>;
zoomend: Event<'zoomend'>;
dragstart: Event<'dragstart'>;
dragging: Event<'dragging'>;
dragend: Event<'dragend'>;
resize: Event<'resize'>;
}
}
class Map extends EventEmitter {
/**
* 构造一个地图对象
* @param container 地图容器的id或者是DOM元素
* @param opts 选项
*/
constructor(container: string | HTMLElement, opts?: Map.Options);
/**
* 唤起高德地图客户端marker页
* @param obj 唤起参数
*/
poiOnAMAP(obj: { id: string; location?: LocationValue; name?: string }): void;
/**
* 唤起高德地图客户端marker详情页
* @param obj 唤起参数
*/
detailOnAMAP(obj: { id: string; location?: LocationValue; name?: string }): void;
/**
* 获取当前地图缩放级别
*/
getZoom(): number;
/**
* 获取地图图层数组
*/
getLayers(): Layer[];
/**
* 获取地图中心点经纬度坐标值
*/
getCenter(): LngLat;
/**
* 返回地图对象的容器
*/
getContainer(): HTMLElement | null;
/**
* 获取地图中心点所在区域
*/
getCity(callback: (cityData: {
/**
* 市名称
*/
city: string;
/**
* 市代码
*/
citycode: string;
/**
* 区名称
*/
district: string;
/**
* 省
*/
province: string | never[]; // province is empty array when getCity fail
}) => void): void;
/**
* 获取当前地图视图范围,获取当前可视区域
*/
getBounds(): Bounds;
/**
* 获取当前地图标注的显示顺序
*/
getLabelzIndex(): number;
/**
* 获取Map的限制区域
*/
getLimitBounds(): Bounds;
/**
* 获取地图语言类型
*/
getLang(): Lang;
/**
* 获取地图容器像素大小
*/
getSize(): Size;
/**
* 获取地图顺时针旋转角度
*/
getRotation(): number;
/**
* 获取当前地图状态信息
*/
getStatus(): Map.Status;
/**
* 获取地图默认鼠标指针样式
*/
getDefaultCursor(): string;
/**
* 获取指定位置的地图分辨率
* @param point 指定经纬度
*/
getResolution(point?: LocationValue): number;
/**
* 获取当前地图比例尺
* @param dpi dpi
*/
getScale(dpi?: number): number;
/**
* 设置地图显示的缩放级别
* @param level 缩放级别
*/
setZoom(level: number): void;
/**
* 设置地图标注显示的顺序
* @param index 显示顺序
*/
setLabelzIndex(index: number): void;
/**
* 设置地图图层数组
* @param layers 图层数组
*/
setLayers(layers: Layer[]): void;
/**
* 添加覆盖物/图层
* @param overlay 覆盖物/图层
*/
add(overlay: Overlay | Overlay[]): void;
/**
* 删除覆盖物/图层
* @param overlay 覆盖物/图层
*/
remove(overlay: Overlay | Overlay[]): void;
/**
* 返回添加的覆盖物对象
* @param type 覆盖物类型
*/
getAllOverlays(type?: 'marker' | 'circle' | 'polyline' | 'polygon'): Overlay[];
/**
* 设置地图显示的中心点
* @param center 中心点经纬度
*/
setCenter(center: LocationValue): void;
/**
* 地图缩放至指定级别并以指定点为地图显示中心点
* @param zoomLevel 缩放等级
* @param center 缩放中心
*/
setZoomAndCenter(zoomLevel: number, center: LocationValue): void;
/**
* 按照行政区名称或adcode来设置地图显示的中心点。
* @param city 城市名称或城市编码
* @param callback 回调
*/
setCity(city: string, callback: (this: this, coord: [string, string], zoom: number) => void): void;
/**
* 指定当前地图显示范围
* @param bound 显示范围
*/
setBounds(bound: Bounds): Bounds;
/**
* 设置Map的限制区域
* @param bound 限制区域
*/
setLimitBounds(bound: Bounds): void;
/**
* 清除限制区域
*/
clearLimitBounds(): void;
/**
* 设置地图语言类型
* @param lang 语言类型
*/
setLang(lang: Lang): void;
/**
* 设置地图顺时针旋转角度,旋转原点为地图容器中心点
* @param rotation 旋转角度
*/
setRotation(rotation: number): void;
/**
* 设置当前地图显示状态
* @param status 状态
*/
setStatus(status: Partial<Map.Status>): void;
/**
* 设置鼠标指针默认样式
* @param cursor 指针样式
*/
setDefaultCursor(cursor: string): void;
/**
* 地图放大一级显示
*/
zoomIn(): void;
/**
* 地图缩小一级显示
*/
zoomOut(): void;
/**
* 地图中心点平移至指定点位置
* @param position 目标位置经纬度
*/
panTo(position: LocationValue): void;
/**
* 以像素为单位,沿x方向和y方向移动地图
* @param x 横向移动像素,向右为正
* @param y 纵向移动像素,向下为正
*/
panBy(x: number, y: number): void;
/**
* 根据地图上添加的覆盖物分布情况,自动缩放地图到合适的视野级别
* @param overlayList 覆盖物数组
* @param immediately 是否需要动画过程
* @param avoid 上下左右的像素避让宽度
* @param maxZoom 最大缩放级别
*/
setFitView(
overlayList?: Overlay | Overlay[],
immediately?: boolean,
avoid?: [number, number, number, number],
maxZoom?: number
): Bounds | false | undefined;
/**
* 删除地图上所有的覆盖物
*/
clearMap(): void;
/**
* 注销地图对象,并清空地图容器
*/
destroy(): void;
/**
* 加载插件,
* tips: 插件的类型定义不在本类型定义中给出,需要另行安装例如
* 3d地图:@types/amap-js-api-map3d
* 地区搜索:@types/amap-js-api-place-search
* @param name 插件名称
* @param callback 插件加载完成后的回调函数
*/
plugin(name: string | string[], callback: () => void): this;
/**
* 添加控件
* @param control 控件
*/
addControl(control: {}): void; // TODO
/**
* 移除控件
* @param control 控件
*/
removeControl(control: {}): void; // TODO
/**
* 清除地图上的信息窗体。
*/
clearInfoWindow(): void;
/**
* 平面地图像素坐标转换为地图经纬度坐标
* @param pixel 像素坐标
* @param level 缩放等级
*/
pixelToLngLat(pixel: Pixel, level?: number): LngLat;
/**
* 地图经纬度坐标转换为平面地图像素坐标
* @param lnglat 经纬度坐标
* @param level 缩放等级
*/
lnglatToPixel(lnglat: LocationValue, level?: number): Pixel;
/**
* 地图容器像素坐标转为地图经纬度坐标
* @param pixel 地图像素坐标
*/
containerToLngLat(pixel: Pixel): LngLat;
/**
* 地图经纬度坐标转为地图容器像素坐标
* @param lnglat 经纬度坐标
*/
lngLatToContainer(lnglat: LocationValue): Pixel;
/**
* 地图经纬度坐标转为地图容器像素坐标
* @param lnglat 经纬度坐标
*/
lnglatTocontainer(lnglat: LocationValue): Pixel;
/**
* 设置地图的显示样式
* @param style 地图样式
*/
setMapStyle(style: string): void;
/**
* 获取地图显示样式
*/
getMapStyle(): string;
/**
* 设置地图上显示的元素种类
* @param feature 元素
*/
setFeatures(feature: Map.Feature | Map.Feature[] | 'all'): void;
/**
* 获取地图显示元素种类
*/
getFeatures(): Map.Feature | Map.Feature[] | 'all';
/**
* 修改底图图层
* @param layer 图层
*/
setDefaultLayer(layer: TileLayer): void;
/**
* 设置俯仰角
* @param pitch 俯仰角
*/
setPitch(pitch: number): void;
/**
* 获取俯仰角
*/
getPitch(): number;
getViewMode_(): Map.ViewMode;
lngLatToGeodeticCoord(lnglat: LocationValue): Pixel;
geodeticCoordToLngLat(pixel: Pixel): LngLat;
}
}
+35
View File
@@ -0,0 +1,35 @@
declare namespace AMap {
namespace BezierCurve {
interface EventMap<I = BezierCurve> extends Polyline.EventMap<I> { }
type Options<ExtraData = any> = Merge<Polyline.Options<ExtraData>, {
/**
* 贝瑟尔曲线的路径
*/
path: Array<Array<number | string | Array<string | number>>>;
// internal
tolerance?: number;
interpolateNumLimit?: [number | number];
}>;
interface GetOptionsResult<ExtraData = any> extends Polyline.GetOptionsResult<ExtraData> {
/**
* 贝瑟尔曲线的路径
*/
path: Array<LngLat & { controlPoints: LngLat[] }>;
}
}
class BezierCurve<ExtraData = any> extends Polyline<ExtraData> {
/**
* 贝瑟尔曲线
* @param options 覆盖物选项
*/
constructor(options: BezierCurve.Options<ExtraData>);
/**
* 获取覆盖物选项
*/
getOptions(): Partial<BezierCurve.GetOptionsResult<ExtraData>>;
// internal
getInterpolateLngLats(): LngLat[];
getSerializedPath(): number[][];
}
}
+84
View File
@@ -0,0 +1,84 @@
declare namespace AMap {
namespace Circle {
interface EventMap<I = Circle> extends ShapeOverlay.EventMap<I> {
setCenter: Event<'setCenter'>;
setRadius: Event<'setRadius'>;
}
interface Options<ExtraData = any> {
map?: Map;
zIndex?: number;
center?: LocationValue;
bubble?: boolean;
cursor?: string;
radius?: number;
strokeColor?: string;
strokeOpacity?: number;
strokeWeight?: number;
fillColor?: string;
fillOpacity?: number;
strokeStyle?: StrokeStyle;
extData?: ExtraData;
strokeDasharray?: number[];
// internal
visible?: boolean;
unit?: 'meter' | 'px'; // 'might be typo'
}
type GetOptionsResult<ExtraData = any> = Merge<Polygon.GetOptionsResult<ExtraData>, {
path: LngLat[];
center: LngLat;
radius: number;
}>;
}
class Circle<ExtraData = any> extends ShapeOverlay<ExtraData> {
/**
* 圆形覆盖物
* @param options 覆盖物选项
*/
constructor(options?: Circle.Options<ExtraData>);
/**
* 设置圆中心点
* @param center 中心点经纬度
* @param preventEvent 阻止触发事件
*/
setCenter(center: LocationValue, preventEvent?: boolean): void;
/**
* 获取圆中心点
*/
getCenter(): LngLat | undefined;
/**
* 获取圆外切矩形范围
*/
getBounds(): Bounds | null;
/**
* 设置圆形的半径
* @param radius 半径
* @param preventEvent 阻止触发事件
*/
setRadius(radius: number, preventEvent?: boolean): void;
/**
* 获取圆形的半径
*/
getRadius(): number;
/**
* 修改选项
* @param options 选项
*/
setOptions(options?: Circle.Options<ExtraData>): void;
/**
* 获取选项
*/
getOptions(): Partial<Circle.GetOptionsResult<ExtraData>>;
/**
* 判断指定点坐标是否在圆内
* @param point 坐标
*/
contains(point: LocationValue): boolean;
// internal
getPath(count?: number): LngLat[];
}
}
+7
View File
@@ -0,0 +1,7 @@
declare namespace AMap {
// tslint:disable-next-line;
/**
* 圆点标记
*/
class CircleMarker<ExtraData = any> extends Circle<ExtraData> {}
}
+50
View File
@@ -0,0 +1,50 @@
declare namespace AMap {
namespace ContextMenu {
interface Options {
/**
* 右键菜单内容
*/
content?: string | HTMLElement;
// internal
visible?: boolean;
}
interface EventMap<I> {
items: Event<'items'>;
open: Event<'open', { target: I }>;
close: Event<'close', { target: I }>;
}
}
class ContextMenu<ExtraData = any> extends Overlay<ExtraData> {
/**
* 地图右键菜单
* @param options 选项
*/
constructor(options?: ContextMenu.Options);
/**
* 右键菜单中添加菜单项
* @param text 菜单显示内容
* @param fn 该菜单下需进行的操作
* @param num 当前菜单项在右键菜单中的排序位置,以0开始
*/
addItem(text: string, fn: (this: HTMLLIElement) => void, num?: number): void;
/**
* 删除一个菜单项
* @param text 菜单显示内容
* @param fn 该菜单下需进行的操作
*/
removeItem(text: string, fn: (this: HTMLLIElement) => void): void;
/**
* 在地图的指定位置打开右键菜单。
* @param map 目标地图
* @param position 打开位置经纬度
*/
open(map: Map, position: LocationValue): void;
/**
* 关闭右键菜单
*/
close(): void;
}
}
+49
View File
@@ -0,0 +1,49 @@
declare namespace AMap {
namespace Ellipse {
interface EventMap<I = Ellipse> extends ShapeOverlay.EventMap<I> {
setPath: Event<'setPath'>;
setCenter: Event<'setCenter'>;
}
interface Options<ExtraData = any> extends Polygon.Options<ExtraData> {
/**
* 椭圆的中心
*/
center?: LocationValue;
/**
* 椭圆半径
*/
radius?: [number, number];
}
type GetOptionsResult<ExtraData = any> = Merge<Circle.GetOptionsResult<ExtraData>, {
radius: [number, number];
}>;
}
class Ellipse<ExtraData = any> extends Polygon<ExtraData> {
/**
* 椭圆
* @param options 选项
*/
constructor(options?: Ellipse.Options<ExtraData>);
/**
* 获取椭圆的中心点
*/
getCenter(): LngLat | undefined;
/**
* 设置椭圆的中心点
* @param center 中心点
* @param preventEvent 阻止触发事件
*/
setCenter(center: LocationValue, preventEvent?: boolean): void;
/**
* 修改椭圆属性
* @param options 属性
*/
setOptions(options: Ellipse.Options<ExtraData>): void;
// internal
setRadius(radius: [number, number], preventEvent?: boolean): void;
getRadius(): [number, number];
}
}
+72
View File
@@ -0,0 +1,72 @@
declare namespace AMap {
namespace GeoJSON {
type Geometry = {
type: 'Point';
coordinates: [number, number];
} | {
type: 'MultiPoint' | 'LineString' | 'Polygon';
coordinates: Array<[number, number]>;
} | {
type: 'MultiLineString' | 'MultiPolygon';
coordinates: Array<Array<[number, number]>>;
} | {
type: 'GeometryCollection';
geometries: Geometry[];
};
type GeoJSONObject = {
type: 'Feature';
properties: any;
geometry: Geometry;
} | {
type: 'FeatureCollection',
properties: any;
features: GeoJSONObject[];
};
interface Options {
/**
* 要加载的标准GeoJSON对象
*/
geoJSON?: GeoJSONObject | GeoJSONObject[];
/**
* 指定点要素的绘制方式
* @param obj GeoJSON对象
* @param lnglat 点的位置
*/
getMarker?(obj: GeoJSONObject, lnglat: LngLat): Marker;
/**
* 指定线要素的绘制方式
* @param obj GeoJSON对象
* @param lnglats 线的路径
*/
getPolyline?(obj: GeoJSONObject, lnglats: LngLat[]): Polyline;
/**
* 指定面要素的绘制方式
* @param obj GeoJSON对象
* @param lnglats 面的路径
*/
getPolygon?(obj: GeoJSONObject, lnglats: LngLat[]): Polygon;
coordsToLatLng?(lnglat: LngLat): LngLat;
// internal
coordsToLatLngs?(lnglats: LngLat[]): LngLat[];
}
}
class GeoJSON<ExtraData = any> extends OverlayGroup<Overlay, ExtraData> {
/**
* GeoJSON
* @param options 选项
*/
constructor(options?: GeoJSON.Options);
/**
* 加载新的GeoJSON对象,转化为覆盖物,旧的覆盖物将移除
* @param obj GeoJSON对象
*/
importData(obj: GeoJSON.GeoJSONObject | GeoJSON.GeoJSONObject[]): void;
/**
* 将当前对象包含的覆盖物转换为GeoJSON对象
*/
toGeoJSON(): GeoJSON.GeoJSONObject[];
}
}
+39
View File
@@ -0,0 +1,39 @@
declare namespace AMap {
namespace Icon {
interface Options {
/**
* 图标尺寸
*/
size?: SizeValue;
/**
* 图标取图偏移量
*/
imageOffset?: Pixel;
/**
* 图标的取图地址
*/
image?: string;
/**
* 图标所用图片大小
*/
imageSize?: SizeValue;
}
}
class Icon extends EventEmitter {
/**
* 点标记的图标
* @param options 选项
*/
constructor(options?: Icon.Options);
/**
* 设置图标图片大小
* @param size 大小
*/
setImageSize(size: SizeValue): void;
/**
* 获取图标图片大小
*/
getImageSize(): Size;
}
}

Some files were not shown because too many files have changed in this diff Show More