etincidunt 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierignore +2 -0
- package/.travis.yml +29 -0
- package/.vscode/launch.json +24 -0
- package/.vscode/settings.json +3 -0
- package/demos/ago-node-cli/README.md +29 -0
- package/demos/ago-node-cli/ago.js +32 -0
- package/demos/ago-node-cli/index.js +11 -0
- package/demos/ago-node-cli/lib/item-export-command.js +48 -0
- package/demos/ago-node-cli/lib/item-search-command.js +35 -0
- package/demos/ago-node-cli/package-lock.json +172 -0
- package/demos/ago-node-cli/package.json +30 -0
- package/demos/attachments/README.md +5 -0
- package/demos/attachments/index.html +164 -0
- package/demos/attachments/package-lock.json +182 -0
- package/demos/attachments/package.json +18 -0
- package/demos/batch-geocoder-node/NYC_Restaurant_Inspection_Results.csv +100 -0
- package/demos/batch-geocoder-node/README.md +14 -0
- package/demos/batch-geocoder-node/batch-geocode.js +112 -0
- package/demos/batch-geocoder-node/config-template.js +18 -0
- package/demos/batch-geocoder-node/package-lock.json +109 -0
- package/demos/batch-geocoder-node/package.json +37 -0
- package/demos/express/README.md +10 -0
- package/demos/express/config.json.template +3 -0
- package/demos/express/package-lock.json +388 -0
- package/demos/express/package.json +18 -0
- package/demos/express/server.js +28 -0
- package/demos/feature-service-browser/README.md +6 -0
- package/demos/feature-service-browser/index.html +122 -0
- package/demos/feature-service-browser/package-lock.json +182 -0
- package/demos/feature-service-browser/package.json +18 -0
- package/demos/geocoder-browser/README.md +10 -0
- package/demos/geocoder-browser/config.js.template +1 -0
- package/demos/geocoder-browser/index.html +131 -0
- package/demos/geocoder-browser/package-lock.json +163 -0
- package/demos/geocoder-browser/package.json +19 -0
- package/demos/geocoder-browser/post-sign-in.html +25 -0
- package/demos/jsapi-integration/README.md +8 -0
- package/demos/jsapi-integration/config.js +6 -0
- package/demos/jsapi-integration/index.html +79 -0
- package/demos/jsapi-integration/package-lock.json +184 -0
- package/demos/jsapi-integration/package.json +19 -0
- package/demos/oauth2-browser/README.md +12 -0
- package/demos/oauth2-browser/authenticate.html +32 -0
- package/demos/oauth2-browser/config.js.template +6 -0
- package/demos/oauth2-browser/index.html +202 -0
- package/demos/oauth2-browser/logo.svg +4 -0
- package/demos/oauth2-browser/package-lock.json +163 -0
- package/demos/oauth2-browser/package.json +18 -0
- package/demos/oauth2-browser/style.css +36 -0
- package/demos/vue/.babelrc +6 -0
- package/demos/vue/.env.example +8 -0
- package/demos/vue/README.md +17 -0
- package/demos/vue/index.html +21 -0
- package/demos/vue/package-lock.json +7236 -0
- package/demos/vue/package.json +39 -0
- package/demos/vue/src/assets/logo.svg +29 -0
- package/demos/vue/src/components/App.vue +302 -0
- package/demos/vue/src/components/Authenticate.vue +68 -0
- package/demos/vue/src/components/Loader.vue +216 -0
- package/demos/vue/src/main.js +75 -0
- package/demos/vue/webpack.config.js +84 -0
- package/docs/FAQ.md +28 -0
- package/docs/HISTORY.md +62 -0
- package/docs/acetate.config.js +214 -0
- package/docs/build-typedoc.js +301 -0
- package/docs/src/_layout.html +82 -0
- package/docs/src/api/_declaration.html +496 -0
- package/docs/src/api/_layout.html +127 -0
- package/docs/src/api/_package.html +13 -0
- package/docs/src/api/index.html +23 -0
- package/docs/src/guides/_layout.html +24 -0
- package/docs/src/guides/amd-requirejs-dojo.md +40 -0
- package/docs/src/guides/babel-and-rollup.md +30 -0
- package/docs/src/guides/babel-and-webpack.md +30 -0
- package/docs/src/guides/browser-authentication.md +9 -0
- package/docs/src/guides/browserify.md +9 -0
- package/docs/src/guides/cli-authentication.md +9 -0
- package/docs/src/guides/client-server-authentication.md +9 -0
- package/docs/src/guides/from-a-cdn.md +36 -0
- package/docs/src/guides/index.md +52 -0
- package/docs/src/guides/node.md +30 -0
- package/docs/src/guides/package-overview.md +8 -0
- package/docs/src/guides/server-authentication.md +9 -0
- package/docs/src/guides/typescript-and-webpack.md +9 -0
- package/docs/src/img/icons.png +0 -0
- package/docs/src/img/icons@2x.png +0 -0
- package/docs/src/index.html +12 -0
- package/docs/src/js/api-search.js +113 -0
- package/docs/src/js/index.js +1 -0
- package/docs/src/js/nav-toggle.js +41 -0
- package/docs/src/sass/_highlight.scss +96 -0
- package/docs/src/sass/_icons.scss +157 -0
- package/docs/src/sass/style.scss +169 -0
- package/jasmine.json +7 -0
- package/karma.conf.js +100 -0
- package/lerna.json +8 -0
- package/notes/README.md +88 -0
- package/package.json +91 -0
- package/packages/arcgis-rest-auth/README.md +64 -0
- package/packages/arcgis-rest-auth/package-lock.json +11 -0
- package/packages/arcgis-rest-auth/package.json +51 -0
- package/packages/arcgis-rest-auth/src/ApplicationSession.ts +91 -0
- package/packages/arcgis-rest-auth/src/UserSession.ts +829 -0
- package/packages/arcgis-rest-auth/src/authenticated-request-options.ts +21 -0
- package/packages/arcgis-rest-auth/src/fetch-token.ts +55 -0
- package/packages/arcgis-rest-auth/src/generate-token.ts +36 -0
- package/packages/arcgis-rest-auth/src/index.ts +5 -0
- package/packages/arcgis-rest-auth/test/ApplicationSession.test.ts +121 -0
- package/packages/arcgis-rest-auth/test/UserSession.test.ts +883 -0
- package/packages/arcgis-rest-auth/test/fetchToken.test.ts +76 -0
- package/packages/arcgis-rest-auth/test/generateToken.test.ts +36 -0
- package/packages/arcgis-rest-auth/test/utils.ts +11 -0
- package/packages/arcgis-rest-auth/tsconfig.json +6 -0
- package/packages/arcgis-rest-common-types/README.md +61 -0
- package/packages/arcgis-rest-common-types/package.json +38 -0
- package/packages/arcgis-rest-common-types/src/group.ts +51 -0
- package/packages/arcgis-rest-common-types/src/index.ts +467 -0
- package/packages/arcgis-rest-common-types/src/item.ts +45 -0
- package/packages/arcgis-rest-common-types/src/webmap.ts +1225 -0
- package/packages/arcgis-rest-common-types/tsconfig.json +11 -0
- package/packages/arcgis-rest-feature-service/README.md +70 -0
- package/packages/arcgis-rest-feature-service/package-lock.json +11 -0
- package/packages/arcgis-rest-feature-service/package.json +50 -0
- package/packages/arcgis-rest-feature-service/src/add.ts +82 -0
- package/packages/arcgis-rest-feature-service/src/addAttachment.ts +65 -0
- package/packages/arcgis-rest-feature-service/src/delete.ts +85 -0
- package/packages/arcgis-rest-feature-service/src/deleteAttachments.ts +68 -0
- package/packages/arcgis-rest-feature-service/src/getAttachments.ts +64 -0
- package/packages/arcgis-rest-feature-service/src/helpers.ts +77 -0
- package/packages/arcgis-rest-feature-service/src/index.ts +8 -0
- package/packages/arcgis-rest-feature-service/src/query.ts +174 -0
- package/packages/arcgis-rest-feature-service/src/update.ts +81 -0
- package/packages/arcgis-rest-feature-service/src/updateAttachment.ts +74 -0
- package/packages/arcgis-rest-feature-service/test/attachments.test.ts +179 -0
- package/packages/arcgis-rest-feature-service/test/features.test.ts +172 -0
- package/packages/arcgis-rest-feature-service/test/mocks/feature.ts +220 -0
- package/packages/arcgis-rest-feature-service/test/mocks/foo.txt +1 -0
- package/packages/arcgis-rest-feature-service/tsconfig.json +6 -0
- package/packages/arcgis-rest-geocoder/README.md +73 -0
- package/packages/arcgis-rest-geocoder/package-lock.json +11 -0
- package/packages/arcgis-rest-geocoder/package.json +52 -0
- package/packages/arcgis-rest-geocoder/src/bulk.ts +102 -0
- package/packages/arcgis-rest-geocoder/src/geocode.ts +117 -0
- package/packages/arcgis-rest-geocoder/src/helpers.ts +81 -0
- package/packages/arcgis-rest-geocoder/src/index.ts +4 -0
- package/packages/arcgis-rest-geocoder/src/reverse.ts +84 -0
- package/packages/arcgis-rest-geocoder/src/suggest.ts +72 -0
- package/packages/arcgis-rest-geocoder/test/geocoder.test.ts +510 -0
- package/packages/arcgis-rest-geocoder/test/mocks/responses.ts +588 -0
- package/packages/arcgis-rest-geocoder/tsconfig.json +6 -0
- package/packages/arcgis-rest-groups/README.md +64 -0
- package/packages/arcgis-rest-groups/package-lock.json +11 -0
- package/packages/arcgis-rest-groups/package.json +52 -0
- package/packages/arcgis-rest-groups/src/groups.ts +272 -0
- package/packages/arcgis-rest-groups/src/index.ts +1 -0
- package/packages/arcgis-rest-groups/test/groups.test.ts +280 -0
- package/packages/arcgis-rest-groups/test/mocks/responses.ts +137 -0
- package/packages/arcgis-rest-groups/tsconfig.json +6 -0
- package/packages/arcgis-rest-items/README.md +66 -0
- package/packages/arcgis-rest-items/package-lock.json +11 -0
- package/packages/arcgis-rest-items/package.json +52 -0
- package/packages/arcgis-rest-items/src/index.ts +1 -0
- package/packages/arcgis-rest-items/src/items.ts +498 -0
- package/packages/arcgis-rest-items/test/items.test.ts +1153 -0
- package/packages/arcgis-rest-items/test/mocks/foo.zip +0 -0
- package/packages/arcgis-rest-items/test/mocks/item.ts +30 -0
- package/packages/arcgis-rest-items/test/mocks/resources.ts +28 -0
- package/packages/arcgis-rest-items/test/mocks/search.ts +60 -0
- package/packages/arcgis-rest-items/tsconfig.json +6 -0
- package/packages/arcgis-rest-request/README.md +65 -0
- package/packages/arcgis-rest-request/package-lock.json +11 -0
- package/packages/arcgis-rest-request/package.json +42 -0
- package/packages/arcgis-rest-request/src/index.ts +10 -0
- package/packages/arcgis-rest-request/src/request.ts +259 -0
- package/packages/arcgis-rest-request/src/utils/ArcGISAuthError.ts +67 -0
- package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +73 -0
- package/packages/arcgis-rest-request/src/utils/ErrorTypes.ts +29 -0
- package/packages/arcgis-rest-request/src/utils/check-for-errors.ts +65 -0
- package/packages/arcgis-rest-request/src/utils/encode-form-data.ts +29 -0
- package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +23 -0
- package/packages/arcgis-rest-request/src/utils/get-portal-url.ts +25 -0
- package/packages/arcgis-rest-request/src/utils/get-portal.ts +45 -0
- package/packages/arcgis-rest-request/src/utils/process-params.ts +99 -0
- package/packages/arcgis-rest-request/test/mocks/errors.ts +59 -0
- package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +10 -0
- package/packages/arcgis-rest-request/test/mocks/portal.ts +109 -0
- package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +38 -0
- package/packages/arcgis-rest-request/test/mocks/webmap.ts +38 -0
- package/packages/arcgis-rest-request/test/request.test.ts +296 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +167 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +40 -0
- package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +101 -0
- package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +112 -0
- package/packages/arcgis-rest-request/test/utils/get-portal-url.test.ts +34 -0
- package/packages/arcgis-rest-request/test/utils/portal.test.ts +94 -0
- package/packages/arcgis-rest-request/test/utils/process-params.test.ts +190 -0
- package/packages/arcgis-rest-request/tsconfig.json +6 -0
- package/packages/arcgis-rest-sharing/README.md +67 -0
- package/packages/arcgis-rest-sharing/package-lock.json +11 -0
- package/packages/arcgis-rest-sharing/package.json +55 -0
- package/packages/arcgis-rest-sharing/src/access.ts +91 -0
- package/packages/arcgis-rest-sharing/src/group-sharing.ts +212 -0
- package/packages/arcgis-rest-sharing/src/helpers.ts +92 -0
- package/packages/arcgis-rest-sharing/src/index.ts +2 -0
- package/packages/arcgis-rest-sharing/test/access.test.ts +153 -0
- package/packages/arcgis-rest-sharing/test/group-sharing.test.ts +436 -0
- package/packages/arcgis-rest-sharing/test/mocks/sharing.ts +15 -0
- package/packages/arcgis-rest-sharing/tsconfig.json +6 -0
- package/packages/arcgis-rest-users/README.md +71 -0
- package/packages/arcgis-rest-users/package-lock.json +11 -0
- package/packages/arcgis-rest-users/package.json +51 -0
- package/packages/arcgis-rest-users/src/index.ts +1 -0
- package/packages/arcgis-rest-users/src/users.ts +70 -0
- package/packages/arcgis-rest-users/test/mocks/responses.ts +170 -0
- package/packages/arcgis-rest-users/test/users.test.ts +97 -0
- package/packages/arcgis-rest-users/tsconfig.json +6 -0
- package/support/FormData.d.ts +1 -0
- package/support/changelog.js +388 -0
- package/support/commit-template.txt +19 -0
- package/support/deploy-doc-site.js +16 -0
- package/support/publish.sh +40 -0
- package/support/test-helpers.js +8 -0
- package/tsconfig.json +69 -0
- package/tslint.json +14 -0
- package/umd-base-profile.js +82 -0
- package/umd-production-profile.js +13 -0
|
Binary file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { IItem } from "@esri/arcgis-rest-common-types";
|
|
2
|
+
|
|
3
|
+
export const ItemSuccessResponse: any = {
|
|
4
|
+
success: true,
|
|
5
|
+
id: "3efakeitemid0000"
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export const ItemResponse: IItem = {
|
|
9
|
+
id: "4bc",
|
|
10
|
+
owner: "jeffvader",
|
|
11
|
+
title: "DS Plans",
|
|
12
|
+
description: "The plans",
|
|
13
|
+
snippet: "Yeah these are the ones",
|
|
14
|
+
tags: ["plans", "star dust"],
|
|
15
|
+
type: "Web Map",
|
|
16
|
+
typeKeywords: ["Javascript", "hubSiteApplication"],
|
|
17
|
+
properties: {
|
|
18
|
+
parentId: "3eb"
|
|
19
|
+
},
|
|
20
|
+
created: 123,
|
|
21
|
+
modified: 456,
|
|
22
|
+
protected: false
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const ItemDataResponse: any = {
|
|
26
|
+
source: "3ef",
|
|
27
|
+
values: {
|
|
28
|
+
key: "value"
|
|
29
|
+
}
|
|
30
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const GetItemResourcesResponse: any = {
|
|
2
|
+
total: 3,
|
|
3
|
+
start: 1,
|
|
4
|
+
num: 3,
|
|
5
|
+
nextStart: -1,
|
|
6
|
+
resources: [
|
|
7
|
+
{
|
|
8
|
+
resource: "image/banner.jpg"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
resource: "image/logo.jpg"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
resource: "text/desc.txt"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const RemoveItemResourceResponse: any = {
|
|
20
|
+
success: true
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const UpdateItemResourceResponse: any = {
|
|
24
|
+
success: true,
|
|
25
|
+
itemId: "0c66beb52dff4994be67937cdadbdbf1",
|
|
26
|
+
owner: "jsmith",
|
|
27
|
+
folder: null
|
|
28
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ISearchResult } from "../../src/items";
|
|
2
|
+
|
|
3
|
+
export const SearchResponse: ISearchResult = {
|
|
4
|
+
query: "",
|
|
5
|
+
total: 10795,
|
|
6
|
+
start: 1,
|
|
7
|
+
num: 1,
|
|
8
|
+
nextStart: 2,
|
|
9
|
+
results: [
|
|
10
|
+
{
|
|
11
|
+
id: "a5b",
|
|
12
|
+
owner: "dcadminqa",
|
|
13
|
+
created: 1496748288000,
|
|
14
|
+
modified: 1508856526000,
|
|
15
|
+
name: "survey123_7d7a9fabcb0c44bcaf1d6473cd088a07",
|
|
16
|
+
title: " Drug Activity Reporter",
|
|
17
|
+
type: "Feature Service",
|
|
18
|
+
typeKeywords: [
|
|
19
|
+
"ArcGIS Server",
|
|
20
|
+
"Data",
|
|
21
|
+
"Feature Access",
|
|
22
|
+
"Feature Service",
|
|
23
|
+
"OwnerView",
|
|
24
|
+
"Service",
|
|
25
|
+
"Survey123",
|
|
26
|
+
"Survey123 Hub",
|
|
27
|
+
"Hosted Service"
|
|
28
|
+
],
|
|
29
|
+
description: "Some Description",
|
|
30
|
+
tags: [],
|
|
31
|
+
snippet: "Some Snippet",
|
|
32
|
+
thumbnail: "thumbnail/ago_downloaded.png",
|
|
33
|
+
documentation: "WAT docs",
|
|
34
|
+
extent: [[-180, -90], [180, 90]],
|
|
35
|
+
categories: [],
|
|
36
|
+
spatialReference: null,
|
|
37
|
+
accessInformation: null,
|
|
38
|
+
licenseInfo: null,
|
|
39
|
+
culture: null,
|
|
40
|
+
properties: {},
|
|
41
|
+
url:
|
|
42
|
+
"https://servicesqa.arcgis.com/97KLIFOSt5CxbiRI/arcgis/rest/services/survey123_7d7a9fabcb0c44bcaf1d6473cd088a07/FeatureServer",
|
|
43
|
+
proxyFilter: null,
|
|
44
|
+
access: "shared",
|
|
45
|
+
size: -1,
|
|
46
|
+
appCategories: [],
|
|
47
|
+
industries: [],
|
|
48
|
+
languages: [],
|
|
49
|
+
largeThumbnail: null,
|
|
50
|
+
banner: null,
|
|
51
|
+
screenshots: [],
|
|
52
|
+
listed: false,
|
|
53
|
+
numComments: 0,
|
|
54
|
+
numRatings: 0,
|
|
55
|
+
avgRating: 0,
|
|
56
|
+
numViews: 4,
|
|
57
|
+
protected: false
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
[![npm version][npm-img]][npm-url]
|
|
2
|
+
[![build status][travis-img]][travis-url]
|
|
3
|
+
[](https://raw.githubusercontent.com/Esri/arcgis-rest-js/master/LICENSE)
|
|
4
|
+
|
|
5
|
+
[npm-img]: https://img.shields.io/npm/v/@esri/arcgis-rest-request.svg?style=flat-square
|
|
6
|
+
[npm-url]: https://www.npmjs.com/package/@esri/arcgis-rest-request
|
|
7
|
+
[travis-img]: https://img.shields.io/travis/Esri/arcgis-rest-js/master.svg?style=flat-square
|
|
8
|
+
[travis-url]: https://travis-ci.org/Esri/arcgis-rest-js
|
|
9
|
+
|
|
10
|
+
# @esri/arcgis-rest-request
|
|
11
|
+
|
|
12
|
+
> A module for making requests to the ArcGIS REST API that runs in Node.js and modern browsers.
|
|
13
|
+
|
|
14
|
+
### Example
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install @esri/arcgis-rest-request
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
import { request } from '@esri/arcgis-rest-request';
|
|
22
|
+
|
|
23
|
+
const url = "https://www.arcgis.com/sharing/rest/content/items/6e03e8c26aad4b9c92a87c1063ddb0e3/data";
|
|
24
|
+
|
|
25
|
+
request(url)
|
|
26
|
+
.then(response => {
|
|
27
|
+
console.log(response) // WebMap JSON
|
|
28
|
+
});
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### [API Reference](https://esri.github.io/arcgis-rest-js/api/request/)
|
|
32
|
+
|
|
33
|
+
### Issues
|
|
34
|
+
|
|
35
|
+
If something isn't working the way you expected, please take a look at [previously logged issues](https://github.com/Esri/arcgis-rest-js/issues) first. Have you found a new bug? Want to request a new feature? We'd [**love**](https://github.com/Esri/arcgis-rest-js/issues/new) to hear from you.
|
|
36
|
+
|
|
37
|
+
If you're looking for help you can also post issues on [GIS Stackexchange](http://gis.stackexchange.com/questions/ask?tags=esri-oss).
|
|
38
|
+
|
|
39
|
+
### Versioning
|
|
40
|
+
|
|
41
|
+
For transparency into the release cycle and in striving to maintain backward compatibility, @esri/arcgis-rest-js is maintained under Semantic Versioning guidelines and will adhere to these rules whenever possible.
|
|
42
|
+
|
|
43
|
+
For more information on SemVer, please visit <http://semver.org/>.
|
|
44
|
+
|
|
45
|
+
### Contributing
|
|
46
|
+
|
|
47
|
+
Esri welcomes contributions from anyone and everyone. Please see our [guidelines for contributing](CONTRIBUTING.md).
|
|
48
|
+
|
|
49
|
+
### License
|
|
50
|
+
|
|
51
|
+
Copyright © 2017-2018 Esri
|
|
52
|
+
|
|
53
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
54
|
+
you may not use this file except in compliance with the License.
|
|
55
|
+
You may obtain a copy of the License at
|
|
56
|
+
|
|
57
|
+
> http://www.apache.org/licenses/LICENSE-2.0
|
|
58
|
+
|
|
59
|
+
Unless required by applicable law or agreed to in writing, software
|
|
60
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
61
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
62
|
+
See the License for the specific language governing permissions and
|
|
63
|
+
limitations under the License.
|
|
64
|
+
|
|
65
|
+
A copy of the license is available in the repository's [LICENSE](../../LICENSE) file.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@esri/arcgis-rest-request",
|
|
3
|
+
"version": "1.6.0",
|
|
4
|
+
"description": "Common methods and utilities for @esri/arcgis-rest-* packages.",
|
|
5
|
+
"main": "dist/node/index.js",
|
|
6
|
+
"browser": "dist/umd/request.umd.js",
|
|
7
|
+
"module": "dist/esm/index.js",
|
|
8
|
+
"js:next": "dist/esm/index.js",
|
|
9
|
+
"types": "dist/esm/index.d.ts",
|
|
10
|
+
"license": "Apache-2.0",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"tslib": "^1.7.1"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist/**"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"prepare": "npm run build",
|
|
19
|
+
"build": "npm run build:node && npm run build:umd && npm run build:esm",
|
|
20
|
+
"build:esm": "tsc --module es2015 --outDir ./dist/esm --declaration",
|
|
21
|
+
"build:umd": "rollup -c ../../umd-base-profile.js && rollup -c ../../umd-production-profile.js",
|
|
22
|
+
"build:node": "tsc --module commonjs --outDir ./dist/node"
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "git+https://github.com/Esri/arcgis-rest-js.git"
|
|
30
|
+
},
|
|
31
|
+
"contributors": [
|
|
32
|
+
{
|
|
33
|
+
"name": "Patrick Arlt",
|
|
34
|
+
"email": "parlt@esri.com",
|
|
35
|
+
"url": "http://patrickarlt.com/"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"bugs": {
|
|
39
|
+
"url": "https://github.com/Esri/arcgis-rest-js/issues"
|
|
40
|
+
},
|
|
41
|
+
"homepage": "https://github.com/Esri/arcgis-rest-js#readme"
|
|
42
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from "./request";
|
|
2
|
+
export * from "./utils/encode-form-data";
|
|
3
|
+
export * from "./utils/encode-query-string";
|
|
4
|
+
export * from "./utils/check-for-errors";
|
|
5
|
+
export * from "./utils/ArcGISRequestError";
|
|
6
|
+
export * from "./utils/ArcGISAuthError";
|
|
7
|
+
export * from "./utils/ErrorTypes";
|
|
8
|
+
export * from "./utils/process-params";
|
|
9
|
+
export * from "./utils/get-portal";
|
|
10
|
+
export * from "./utils/get-portal-url";
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
import { checkForErrors } from "./utils/check-for-errors";
|
|
5
|
+
import { encodeFormData } from "./utils/encode-form-data";
|
|
6
|
+
import { encodeQueryString } from "./utils/encode-query-string";
|
|
7
|
+
import { requiresFormData } from "./utils/process-params";
|
|
8
|
+
import { ArcGISRequestError } from "./utils/ArcGISRequestError";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Authentication can be supplied to `request` via [`UserSession`](../../auth/UserSession/) or [`ApplicationSession`](../../auth/ApplicationSession/). Both classes extend `IAuthenticationManager`.
|
|
12
|
+
* ```js
|
|
13
|
+
* const session = new UserSession({
|
|
14
|
+
* username: "jsmith",
|
|
15
|
+
* password: "123456",
|
|
16
|
+
* // optional
|
|
17
|
+
* portal: "https://[yourserver]/arcgis/sharing/rest"
|
|
18
|
+
* })
|
|
19
|
+
*
|
|
20
|
+
* request(url, { authentication: session })
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export interface IAuthenticationManager {
|
|
24
|
+
/**
|
|
25
|
+
* Defaults to 'https://www.arcgis.com/sharing/rest'.
|
|
26
|
+
*/
|
|
27
|
+
portal: string;
|
|
28
|
+
getToken(url: string): Promise<string>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* HTTP methods used by the ArcGIS REST API.
|
|
33
|
+
*/
|
|
34
|
+
export type HTTPMethods = "GET" | "POST";
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Valid response formats for the `f` parameter.
|
|
38
|
+
*/
|
|
39
|
+
export type ResponseFormats =
|
|
40
|
+
| "json"
|
|
41
|
+
| "geojson"
|
|
42
|
+
| "text"
|
|
43
|
+
| "html"
|
|
44
|
+
| "image"
|
|
45
|
+
| "zip";
|
|
46
|
+
|
|
47
|
+
export interface IParams {
|
|
48
|
+
f?: ResponseFormats;
|
|
49
|
+
[key: string]: any;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Options for the `request()` method.
|
|
54
|
+
*/
|
|
55
|
+
export interface IRequestOptions {
|
|
56
|
+
/**
|
|
57
|
+
* Additional parameters to pass in the request.
|
|
58
|
+
*/
|
|
59
|
+
params?: IParams;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The HTTP method to send the request with.
|
|
63
|
+
*/
|
|
64
|
+
httpMethod?: HTTPMethods;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* The instance of `IAuthenticationManager` to use to authenticate this request.
|
|
68
|
+
*/
|
|
69
|
+
authentication?: IAuthenticationManager;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Base url for the portal you want to make the request to. Defaults to 'https://www.arcgis.com/sharing/rest'.
|
|
73
|
+
*/
|
|
74
|
+
portal?: string;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* The implementation of `fetch` to use. Defaults to a global `fetch`.
|
|
78
|
+
*/
|
|
79
|
+
fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* If the length of a GET request's URL exceeds `maxUrlLength` the request will use POST instead.
|
|
83
|
+
*/
|
|
84
|
+
maxUrlLength?: number;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Generic method for making HTTP requests to ArcGIS REST API endpoints.
|
|
89
|
+
*
|
|
90
|
+
* ```js
|
|
91
|
+
* import { request } from '@esri/arcgis-rest-request';
|
|
92
|
+
*
|
|
93
|
+
* request('https://www.arcgis.com/sharing/rest')
|
|
94
|
+
* .then((response) => {
|
|
95
|
+
* console.log(response.currentVersion); // => 5.2
|
|
96
|
+
* });
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* ```js
|
|
100
|
+
* import { request, HTTPMethods } from '@esri/arcgis-rest-request';
|
|
101
|
+
*
|
|
102
|
+
* request('https://www.arcgis.com/sharing/rest', {
|
|
103
|
+
* httpMethod: "GET"
|
|
104
|
+
* }).then((response) => {
|
|
105
|
+
* console.log(response.currentVersion); // => 5.2
|
|
106
|
+
* });
|
|
107
|
+
* ```
|
|
108
|
+
*
|
|
109
|
+
* ```js
|
|
110
|
+
* import { request, HTTPMethods } from '@esri/arcgis-rest-request';
|
|
111
|
+
*
|
|
112
|
+
* request('https://www.arcgis.com/sharing/rest/search', {
|
|
113
|
+
* params: { q: 'parks' }
|
|
114
|
+
* }).then((response) => {
|
|
115
|
+
* console.log(response.total); // => 78379
|
|
116
|
+
* });
|
|
117
|
+
* ```
|
|
118
|
+
*
|
|
119
|
+
* @param url - The URL of the ArcGIS REST API endpoint.
|
|
120
|
+
* @param requestOptions - Options for the request, including parameters relevant to the endpoint.
|
|
121
|
+
* @returns A Promise that will resolve with the data from the response.
|
|
122
|
+
*/
|
|
123
|
+
export function request(
|
|
124
|
+
url: string,
|
|
125
|
+
requestOptions: IRequestOptions = { params: { f: "json" } }
|
|
126
|
+
): Promise<any> {
|
|
127
|
+
const options: IRequestOptions = {
|
|
128
|
+
httpMethod: "POST",
|
|
129
|
+
fetch,
|
|
130
|
+
...requestOptions
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
const missingGlobals: string[] = [];
|
|
134
|
+
const recommendedPackages: string[] = [];
|
|
135
|
+
|
|
136
|
+
if (!options.fetch) {
|
|
137
|
+
missingGlobals.push("`fetch`");
|
|
138
|
+
recommendedPackages.push("`isomorphic-fetch`");
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (!Promise) {
|
|
142
|
+
missingGlobals.push("`Promise`");
|
|
143
|
+
recommendedPackages.push("`es6-promise`");
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (!FormData) {
|
|
147
|
+
missingGlobals.push("`FormData`");
|
|
148
|
+
recommendedPackages.push("`isomorphic-form-data`");
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (!options.fetch || !Promise || !FormData) {
|
|
152
|
+
throw new Error(
|
|
153
|
+
`\`arcgis-rest-request\` requires global variables for \`fetch\`, \`Promise\` and \`FormData\` to be present in the global scope. You are missing ${missingGlobals.join(
|
|
154
|
+
", "
|
|
155
|
+
)}. We recommend installing the ${recommendedPackages.join(
|
|
156
|
+
", "
|
|
157
|
+
)} modules at the root of your application to add these to the global scope. See https://bit.ly/2KNwWaJ for more info.`
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (options.fetch === fetch) {
|
|
162
|
+
options.fetch = fetch.bind(Function("return this")());
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const { httpMethod, authentication } = options;
|
|
166
|
+
|
|
167
|
+
const params: IParams = {
|
|
168
|
+
...{ f: "json" },
|
|
169
|
+
...requestOptions.params
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
const fetchOptions: RequestInit = {
|
|
173
|
+
method: httpMethod,
|
|
174
|
+
// ensures behavior mimics XMLHttpRequest. needed to support sending IWA cookies
|
|
175
|
+
credentials: "same-origin"
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
return (authentication ? authentication.getToken(url) : Promise.resolve(""))
|
|
179
|
+
.then(token => {
|
|
180
|
+
if (token.length) {
|
|
181
|
+
params.token = token;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (fetchOptions.method === "GET") {
|
|
185
|
+
// encode the parameters into the query string
|
|
186
|
+
const queryParams = encodeQueryString(params);
|
|
187
|
+
// dont append a '?' unless parameters are actually present
|
|
188
|
+
const urlWithQueryString =
|
|
189
|
+
queryParams === "" ? url : url + "?" + encodeQueryString(params);
|
|
190
|
+
|
|
191
|
+
if (
|
|
192
|
+
options.maxUrlLength &&
|
|
193
|
+
urlWithQueryString.length > options.maxUrlLength
|
|
194
|
+
) {
|
|
195
|
+
// the consumer specified a maximum length for URLs
|
|
196
|
+
// and this would exceed it, so use post instead
|
|
197
|
+
fetchOptions.method = "POST";
|
|
198
|
+
} else {
|
|
199
|
+
// just use GET
|
|
200
|
+
url = urlWithQueryString;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
if (fetchOptions.method === "POST") {
|
|
205
|
+
fetchOptions.body = encodeFormData(params);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/* istanbul ignore else blob responses are difficult to make cross platform we will just have to trust the isomorphic fetch will do its job */
|
|
209
|
+
if (!requiresFormData(params)) {
|
|
210
|
+
fetchOptions.headers = new Headers();
|
|
211
|
+
fetchOptions.headers.append(
|
|
212
|
+
"Content-Type",
|
|
213
|
+
"application/x-www-form-urlencoded"
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return options.fetch(url, fetchOptions);
|
|
218
|
+
})
|
|
219
|
+
.then(response => {
|
|
220
|
+
if (!response.ok) {
|
|
221
|
+
// server responded w/ an actual error (404, 500, etc)
|
|
222
|
+
const { status, statusText } = response;
|
|
223
|
+
throw new ArcGISRequestError(
|
|
224
|
+
statusText,
|
|
225
|
+
`HTTP ${status}`,
|
|
226
|
+
response,
|
|
227
|
+
url,
|
|
228
|
+
options
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
switch (params.f) {
|
|
232
|
+
case "json":
|
|
233
|
+
return response.json();
|
|
234
|
+
case "geojson":
|
|
235
|
+
return response.json();
|
|
236
|
+
case "html":
|
|
237
|
+
return response.text();
|
|
238
|
+
case "text":
|
|
239
|
+
return response.text();
|
|
240
|
+
/* istanbul ignore next blob responses are difficult to make cross platform we will just have to trust the isomorphic fetch will do its job */
|
|
241
|
+
case "image":
|
|
242
|
+
return response.blob();
|
|
243
|
+
/* istanbul ignore next */
|
|
244
|
+
case "zip":
|
|
245
|
+
return response.blob();
|
|
246
|
+
/* istanbul ignore next */
|
|
247
|
+
default:
|
|
248
|
+
// hopefully we never need to handle JSON payloads when no f= parameter is set
|
|
249
|
+
return response.blob();
|
|
250
|
+
}
|
|
251
|
+
})
|
|
252
|
+
.then(data => {
|
|
253
|
+
if (params.f === "json" || params.f === "geojson") {
|
|
254
|
+
return checkForErrors(data, url, params, options);
|
|
255
|
+
} else {
|
|
256
|
+
return data;
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
import { request, IRequestOptions, IAuthenticationManager } from "../request";
|
|
5
|
+
import { ArcGISRequestError } from "./ArcGISRequestError";
|
|
6
|
+
|
|
7
|
+
export type IRetryAuthError = (
|
|
8
|
+
url: string,
|
|
9
|
+
options: IRequestOptions
|
|
10
|
+
) => Promise<IAuthenticationManager>;
|
|
11
|
+
|
|
12
|
+
export class ArcGISAuthError extends ArcGISRequestError {
|
|
13
|
+
/**
|
|
14
|
+
* Create a new `ArcGISAuthError` object.
|
|
15
|
+
*
|
|
16
|
+
* @param message - The error message from the API
|
|
17
|
+
* @param code - The error code from the API
|
|
18
|
+
* @param response - The original response from the API that caused the error
|
|
19
|
+
* @param url - The original url of the request
|
|
20
|
+
* @param options - The original options of the request
|
|
21
|
+
*/
|
|
22
|
+
constructor(
|
|
23
|
+
message = "AUTHENTICATION_ERROR",
|
|
24
|
+
code: string | number = "AUTHENTICATION_ERROR_CODE",
|
|
25
|
+
response?: any,
|
|
26
|
+
url?: string,
|
|
27
|
+
options?: IRequestOptions
|
|
28
|
+
) {
|
|
29
|
+
super(message, code, response, url, options);
|
|
30
|
+
this.name = "ArcGISAuthError";
|
|
31
|
+
this.message =
|
|
32
|
+
code === "AUTHENTICATION_ERROR_CODE" ? message : `${code}: ${message}`;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
retry(getSession: IRetryAuthError, retryLimit = 3) {
|
|
36
|
+
let tries = 0;
|
|
37
|
+
|
|
38
|
+
const retryRequest = (resolve: any, reject: any) => {
|
|
39
|
+
getSession(this.url, this.options)
|
|
40
|
+
.then(session => {
|
|
41
|
+
const newOptions = {
|
|
42
|
+
...this.options,
|
|
43
|
+
...{ authentication: session }
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
tries = tries + 1;
|
|
47
|
+
return request(this.url, newOptions);
|
|
48
|
+
})
|
|
49
|
+
.then(response => {
|
|
50
|
+
resolve(response);
|
|
51
|
+
})
|
|
52
|
+
.catch(e => {
|
|
53
|
+
if (e.name === "ArcGISAuthError" && tries < retryLimit) {
|
|
54
|
+
retryRequest(resolve, reject);
|
|
55
|
+
} else if (e.name === "ArcGISAuthError" && tries >= retryLimit) {
|
|
56
|
+
reject(this);
|
|
57
|
+
} else {
|
|
58
|
+
reject(e);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
return new Promise((resolve, reject) => {
|
|
64
|
+
retryRequest(resolve, reject);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
import { IRequestOptions } from "../request";
|
|
5
|
+
|
|
6
|
+
// TypeScript 2.1 no longer allows you to extend built in types. See https://github.com/Microsoft/TypeScript/issues/12790#issuecomment-265981442
|
|
7
|
+
// and https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
8
|
+
//
|
|
9
|
+
// This code is from MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types.
|
|
10
|
+
export class ArcGISRequestError {
|
|
11
|
+
/**
|
|
12
|
+
* The name of this error. Will always be `"ArcGISRequestError"` to conform with the [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) class.
|
|
13
|
+
*/
|
|
14
|
+
name: string;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Formatted error message. See the [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) class for more details.
|
|
18
|
+
*/
|
|
19
|
+
message: string;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The errror message return from the request.
|
|
23
|
+
*/
|
|
24
|
+
originalMessage: string;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The error code returned from the request.
|
|
28
|
+
*/
|
|
29
|
+
code: string | number;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The original JSON response the caused the error.
|
|
33
|
+
*/
|
|
34
|
+
response: any;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The URL of the original request that caused the error
|
|
38
|
+
*/
|
|
39
|
+
url: string;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The options of the original request that caused the error
|
|
43
|
+
*/
|
|
44
|
+
options: IRequestOptions;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Create a new `ArcGISRequestError` object.
|
|
48
|
+
*
|
|
49
|
+
* @param message - The error message from the API
|
|
50
|
+
* @param code - The error code from the API
|
|
51
|
+
* @param response - The original response from the API that caused the error
|
|
52
|
+
* @param url - The original url of the request
|
|
53
|
+
* @param options - The original options and parameters of the request
|
|
54
|
+
*/
|
|
55
|
+
constructor(
|
|
56
|
+
message = "UNKNOWN_ERROR",
|
|
57
|
+
code: string | number = "UNKNOWN_ERROR_CODE",
|
|
58
|
+
response?: any,
|
|
59
|
+
url?: string,
|
|
60
|
+
options?: IRequestOptions
|
|
61
|
+
) {
|
|
62
|
+
this.name = "ArcGISRequestError";
|
|
63
|
+
this.message =
|
|
64
|
+
code === "UNKNOWN_ERROR_CODE" ? message : `${code}: ${message}`;
|
|
65
|
+
this.originalMessage = message;
|
|
66
|
+
this.code = code;
|
|
67
|
+
this.response = response;
|
|
68
|
+
this.url = url;
|
|
69
|
+
this.options = options;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
ArcGISRequestError.prototype = Object.create(Error.prototype);
|
|
73
|
+
ArcGISRequestError.prototype.constructor = ArcGISRequestError;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Enum describing the different errors that might be thrown by a request.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { request, ErrorTypes } from '@esri/arcgis-rest-request';
|
|
9
|
+
*
|
|
10
|
+
* request("...").catch((e) => {
|
|
11
|
+
* switch(e.name) {
|
|
12
|
+
* case ErrorType.ArcGISRequestError:
|
|
13
|
+
* // handle a general error from the API
|
|
14
|
+
* break;
|
|
15
|
+
*
|
|
16
|
+
* case ErrorType.ArcGISAuthError:
|
|
17
|
+
* // handle an authentication error
|
|
18
|
+
* break;
|
|
19
|
+
*
|
|
20
|
+
* default:
|
|
21
|
+
* // handle some other error (usually a network error)
|
|
22
|
+
* }
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export enum ErrorTypes {
|
|
27
|
+
ArcGISRequestError = "ArcGISRequestError",
|
|
28
|
+
ArcGISAuthError = "ArcGISAuthError"
|
|
29
|
+
}
|