delectusnon 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 +33 -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 +15 -0
- package/demos/batch-geocoder-node/batch-geocode.js +118 -0
- package/demos/batch-geocoder-node/config-template.js +18 -0
- package/demos/batch-geocoder-node/package-lock.json +116 -0
- package/demos/batch-geocoder-node/package.json +39 -0
- package/demos/express/README.md +10 -0
- package/demos/express/config.json.template +3 -0
- package/demos/express/package-lock.json +473 -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 +182 -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/oauth2-browser-retry/README.md +25 -0
- package/demos/oauth2-browser-retry/authenticate.html +21 -0
- package/demos/oauth2-browser-retry/index.html +116 -0
- package/demos/oauth2-browser-retry/logo.svg +4 -0
- package/demos/vue/.env.example +11 -0
- package/demos/vue/.eslintrc.js +17 -0
- package/demos/vue/.postcssrc.js +5 -0
- package/demos/vue/README.md +17 -0
- package/demos/vue/babel.config.js +3 -0
- package/demos/vue/package-lock.json +11323 -0
- package/demos/vue/package.json +33 -0
- package/demos/vue/public/favicon.ico +0 -0
- package/demos/vue/public/index.html +24 -0
- package/demos/vue/src/assets/logo.svg +29 -0
- package/demos/vue/src/components/App.vue +308 -0
- package/demos/vue/src/components/Authenticate.vue +65 -0
- package/demos/vue/src/components/Loader.vue +230 -0
- package/demos/vue/src/main.js +92 -0
- package/docs/FAQ.md +28 -0
- package/docs/HISTORY.md +62 -0
- package/docs/acetate.config.js +223 -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 +31 -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 +70 -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 +112 -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 +88 -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 +109 -0
- package/packages/arcgis-rest-auth/src/UserSession.ts +873 -0
- package/packages/arcgis-rest-auth/src/authenticated-request-options.ts +24 -0
- package/packages/arcgis-rest-auth/src/fetch-token.ts +52 -0
- package/packages/arcgis-rest-auth/src/generate-token.ts +39 -0
- package/packages/arcgis-rest-auth/src/index.ts +8 -0
- package/packages/arcgis-rest-auth/test/ApplicationSession.test.ts +124 -0
- package/packages/arcgis-rest-auth/test/UserSession.test.ts +995 -0
- package/packages/arcgis-rest-auth/test/fetchToken.test.ts +112 -0
- package/packages/arcgis-rest-auth/test/generateToken.test.ts +130 -0
- package/packages/arcgis-rest-auth/test/utils.ts +14 -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 +54 -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 +1232 -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 +81 -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 +80 -0
- package/packages/arcgis-rest-feature-service/src/index.ts +12 -0
- package/packages/arcgis-rest-feature-service/src/query.ts +172 -0
- package/packages/arcgis-rest-feature-service/src/queryRelated.ts +91 -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 +203 -0
- package/packages/arcgis-rest-feature-service/test/features.test.ts +252 -0
- package/packages/arcgis-rest-feature-service/test/mocks/feature.ts +279 -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-feature-service-admin/README.md +66 -0
- package/packages/arcgis-rest-feature-service-admin/package-lock.json +11 -0
- package/packages/arcgis-rest-feature-service-admin/package.json +53 -0
- package/packages/arcgis-rest-feature-service-admin/src/addTo.ts +70 -0
- package/packages/arcgis-rest-feature-service-admin/src/create.ts +195 -0
- package/packages/arcgis-rest-feature-service-admin/src/index.ts +2 -0
- package/packages/arcgis-rest-feature-service-admin/test/addTo.test.ts +310 -0
- package/packages/arcgis-rest-feature-service-admin/test/create.test.ts +412 -0
- package/packages/arcgis-rest-feature-service-admin/test/mocks/move.ts +14 -0
- package/packages/arcgis-rest-feature-service-admin/test/mocks/service.ts +72 -0
- package/packages/arcgis-rest-feature-service-admin/tsconfig.json +6 -0
- package/packages/arcgis-rest-geocoder/README.md +79 -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 +79 -0
- package/packages/arcgis-rest-geocoder/src/index.ts +8 -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/bulk.test.ts +113 -0
- package/packages/arcgis-rest-geocoder/test/geocode.test.ts +121 -0
- package/packages/arcgis-rest-geocoder/test/helpers.test.ts +113 -0
- package/packages/arcgis-rest-geocoder/test/mocks/responses.ts +591 -0
- package/packages/arcgis-rest-geocoder/test/reverse.test.ts +126 -0
- package/packages/arcgis-rest-geocoder/test/suggest.test.ts +77 -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/create.ts +34 -0
- package/packages/arcgis-rest-groups/src/get.ts +95 -0
- package/packages/arcgis-rest-groups/src/helpers.ts +26 -0
- package/packages/arcgis-rest-groups/src/index.ts +11 -0
- package/packages/arcgis-rest-groups/src/notification.ts +77 -0
- package/packages/arcgis-rest-groups/src/protect.ts +40 -0
- package/packages/arcgis-rest-groups/src/remove.ts +23 -0
- package/packages/arcgis-rest-groups/src/search.ts +64 -0
- package/packages/arcgis-rest-groups/src/update.ts +36 -0
- package/packages/arcgis-rest-groups/test/crud.test.ts +104 -0
- package/packages/arcgis-rest-groups/test/get.test.ts +101 -0
- package/packages/arcgis-rest-groups/test/mocks/responses.ts +141 -0
- package/packages/arcgis-rest-groups/test/notification.test.ts +102 -0
- package/packages/arcgis-rest-groups/test/protect.test.ts +64 -0
- package/packages/arcgis-rest-groups/test/search.test.ts +85 -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/add.ts +103 -0
- package/packages/arcgis-rest-items/src/create.ts +110 -0
- package/packages/arcgis-rest-items/src/get.ts +79 -0
- package/packages/arcgis-rest-items/src/helpers.ts +147 -0
- package/packages/arcgis-rest-items/src/index.ts +11 -0
- package/packages/arcgis-rest-items/src/protect.ts +38 -0
- package/packages/arcgis-rest-items/src/remove.ts +58 -0
- package/packages/arcgis-rest-items/src/search.ts +78 -0
- package/packages/arcgis-rest-items/src/update.ts +134 -0
- package/packages/arcgis-rest-items/test/add.test.ts +256 -0
- package/packages/arcgis-rest-items/test/create.test.ts +371 -0
- package/packages/arcgis-rest-items/test/get.test.ts +181 -0
- package/packages/arcgis-rest-items/test/mocks/foo.zip +0 -0
- package/packages/arcgis-rest-items/test/mocks/item.ts +33 -0
- package/packages/arcgis-rest-items/test/mocks/resources.ts +31 -0
- package/packages/arcgis-rest-items/test/mocks/search.ts +63 -0
- package/packages/arcgis-rest-items/test/protect.test.ts +122 -0
- package/packages/arcgis-rest-items/test/remove.test.ts +161 -0
- package/packages/arcgis-rest-items/test/search.test.ts +159 -0
- package/packages/arcgis-rest-items/test/update.test.ts +450 -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 +13 -0
- package/packages/arcgis-rest-request/src/request.ts +293 -0
- package/packages/arcgis-rest-request/src/utils/ArcGISAuthError.ts +67 -0
- package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +76 -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 +34 -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 +68 -0
- package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +13 -0
- package/packages/arcgis-rest-request/test/mocks/portal.ts +112 -0
- package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +41 -0
- package/packages/arcgis-rest-request/test/mocks/webmap.ts +41 -0
- package/packages/arcgis-rest-request/test/request.test.ts +299 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +170 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +51 -0
- package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +111 -0
- package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +133 -0
- package/packages/arcgis-rest-request/test/utils/get-portal-url.test.ts +37 -0
- package/packages/arcgis-rest-request/test/utils/portal.test.ts +97 -0
- package/packages/arcgis-rest-request/test/utils/process-params.test.ts +193 -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 +57 -0
- package/packages/arcgis-rest-sharing/src/access.ts +85 -0
- package/packages/arcgis-rest-sharing/src/group-sharing.ts +211 -0
- package/packages/arcgis-rest-sharing/src/helpers.ts +82 -0
- package/packages/arcgis-rest-sharing/src/index.ts +5 -0
- package/packages/arcgis-rest-sharing/test/access.test.ts +154 -0
- package/packages/arcgis-rest-sharing/test/group-sharing.test.ts +566 -0
- package/packages/arcgis-rest-sharing/test/helpers.test.ts +55 -0
- package/packages/arcgis-rest-sharing/test/mocks/sharing.ts +18 -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/get.ts +69 -0
- package/packages/arcgis-rest-users/src/index.ts +6 -0
- package/packages/arcgis-rest-users/src/invitation.ts +166 -0
- package/packages/arcgis-rest-users/src/notification.ts +73 -0
- package/packages/arcgis-rest-users/test/get.test.ts +99 -0
- package/packages/arcgis-rest-users/test/invitation.test.ts +169 -0
- package/packages/arcgis-rest-users/test/mocks/invitation.ts +70 -0
- package/packages/arcgis-rest-users/test/mocks/notification.ts +34 -0
- package/packages/arcgis-rest-users/test/mocks/user.ts +173 -0
- package/packages/arcgis-rest-users/test/notification.test.ts +83 -0
- package/packages/arcgis-rest-users/tsconfig.json +6 -0
- package/support/changelog.js +394 -0
- package/support/deploy-doc-site.js +16 -0
- package/support/publish.sh +43 -0
- package/support/test-helpers.js +8 -0
- package/tsconfig.json +69 -0
- package/tslint.json +15 -0
- package/umd-base-profile.js +82 -0
- package/umd-production-profile.js +13 -0
@@ -0,0 +1,172 @@
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import {
|
5
|
+
ISpatialReference,
|
6
|
+
IFeatureSet,
|
7
|
+
IFeature,
|
8
|
+
esriUnits,
|
9
|
+
IExtent
|
10
|
+
} from "@esri/arcgis-rest-common-types";
|
11
|
+
import { request, IRequestOptions } from "@esri/arcgis-rest-request";
|
12
|
+
|
13
|
+
import { ISharedQueryParams, appendCustomParams } from "./helpers";
|
14
|
+
/**
|
15
|
+
* Request options to fetch a feature by id.
|
16
|
+
*/
|
17
|
+
export interface IFeatureRequestOptions extends IRequestOptions {
|
18
|
+
/**
|
19
|
+
* Layer service url.
|
20
|
+
*/
|
21
|
+
url: string;
|
22
|
+
/**
|
23
|
+
* Unique identifier of the feature.
|
24
|
+
*/
|
25
|
+
id: number;
|
26
|
+
}
|
27
|
+
|
28
|
+
export interface IStatisticDefinition {
|
29
|
+
/**
|
30
|
+
* Statistical operation to perform (count, sum, min, max, avg, stddev, var).
|
31
|
+
*/
|
32
|
+
statisticType: "count" | "sum" | "min" | "max" | "avg" | "stddev" | "var";
|
33
|
+
/**
|
34
|
+
* Field on which to perform the statistical operation.
|
35
|
+
*/
|
36
|
+
onStatisticField: string;
|
37
|
+
/**
|
38
|
+
* Field name for the returned statistic field. If outStatisticFieldName is empty or missing, the server will assign one. A valid field name can only contain alphanumeric characters and an underscore. If the outStatisticFieldName is a reserved keyword of the underlying DBMS, the operation can fail. Try specifying an alternative outStatisticFieldName.
|
39
|
+
*/
|
40
|
+
outStatisticFieldName: string;
|
41
|
+
}
|
42
|
+
|
43
|
+
/**
|
44
|
+
* feature query request options. See [REST Documentation](https://developers.arcgis.com/rest/services-reference/query-feature-service-layer-.htm) for more information.
|
45
|
+
*/
|
46
|
+
export interface IQueryFeaturesRequestOptions
|
47
|
+
extends ISharedQueryParams,
|
48
|
+
IRequestOptions {
|
49
|
+
/**
|
50
|
+
* Layer service url.
|
51
|
+
*/
|
52
|
+
url: string;
|
53
|
+
objectIds?: number[];
|
54
|
+
relationParam?: string;
|
55
|
+
// NOTE: either time=1199145600000 or time=1199145600000, 1230768000000
|
56
|
+
time?: number | number[];
|
57
|
+
distance?: number;
|
58
|
+
units?: esriUnits;
|
59
|
+
outFields?: "*" | string[];
|
60
|
+
returnGeometry?: boolean;
|
61
|
+
maxAllowableOffset?: number;
|
62
|
+
geometryPrecision?: number;
|
63
|
+
// NOTE: either WKID or ISpatialReference
|
64
|
+
outSR?: string | ISpatialReference;
|
65
|
+
gdbVersion?: string;
|
66
|
+
returnDistinctValues?: boolean;
|
67
|
+
returnIdsOnly?: boolean;
|
68
|
+
returnCountOnly?: boolean;
|
69
|
+
returnExtentOnly?: boolean;
|
70
|
+
orderByFields?: string;
|
71
|
+
groupByFieldsForStatistics?: string;
|
72
|
+
outStatistics?: IStatisticDefinition[];
|
73
|
+
returnZ?: boolean;
|
74
|
+
returnM?: boolean;
|
75
|
+
multipatchOption?: "xyFootprint";
|
76
|
+
resultOffset?: number;
|
77
|
+
resultRecordCount?: number;
|
78
|
+
// TODO: IQuantizationParameters?
|
79
|
+
quantizationParameters?: any;
|
80
|
+
returnCentroid?: boolean;
|
81
|
+
resultType?: "none" | "standard" | "tile";
|
82
|
+
// to do: convert from Date() to epoch time internally
|
83
|
+
historicMoment?: number;
|
84
|
+
returnTrueCurves?: false;
|
85
|
+
sqlFormat?: "none" | "standard" | "native";
|
86
|
+
returnExceededLimitFeatures?: boolean;
|
87
|
+
}
|
88
|
+
|
89
|
+
export interface IQueryFeaturesResponse extends IFeatureSet {
|
90
|
+
exceededTransferLimit?: boolean;
|
91
|
+
}
|
92
|
+
|
93
|
+
export interface IQueryResponse {
|
94
|
+
count?: number;
|
95
|
+
extent?: IExtent;
|
96
|
+
objectIdFieldName?: string;
|
97
|
+
objectIds?: number[];
|
98
|
+
}
|
99
|
+
|
100
|
+
/**
|
101
|
+
* Get a feature by id.
|
102
|
+
*
|
103
|
+
* ```js
|
104
|
+
* import { getFeature } from '@esri/arcgis-rest-feature-service';
|
105
|
+
*
|
106
|
+
* const url = "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Landscape_Trees/FeatureServer/0";
|
107
|
+
*
|
108
|
+
* getFeature({
|
109
|
+
* url,
|
110
|
+
* id: 42
|
111
|
+
* }).then(feature => {
|
112
|
+
* console.log(feature.attributes.FID); // 42
|
113
|
+
* });
|
114
|
+
* ```
|
115
|
+
*
|
116
|
+
* @param requestOptions - Options for the request
|
117
|
+
* @returns A Promise that will resolve with the feature.
|
118
|
+
*/
|
119
|
+
export function getFeature(
|
120
|
+
requestOptions: IFeatureRequestOptions
|
121
|
+
): Promise<IFeature> {
|
122
|
+
const url = `${requestOptions.url}/${requestOptions.id}`;
|
123
|
+
|
124
|
+
// default to a GET request
|
125
|
+
const options: IFeatureRequestOptions = {
|
126
|
+
...{ httpMethod: "GET" },
|
127
|
+
...requestOptions
|
128
|
+
};
|
129
|
+
return request(url, options).then((response: any) => response.feature);
|
130
|
+
}
|
131
|
+
|
132
|
+
/**
|
133
|
+
* Query a feature service. See [REST Documentation](https://developers.arcgis.com/rest/services-reference/query-feature-service-layer-.htm) for more information.
|
134
|
+
*
|
135
|
+
* ```js
|
136
|
+
* import { queryFeatures } from '@esri/arcgis-rest-feature-service';
|
137
|
+
*
|
138
|
+
* const url = "http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3";
|
139
|
+
*
|
140
|
+
* queryFeatures({
|
141
|
+
* url,
|
142
|
+
* where: "STATE_NAME = 'Alaska"
|
143
|
+
* }).then(result => {
|
144
|
+
* console.log(result.features); // array of features
|
145
|
+
* });
|
146
|
+
* ```
|
147
|
+
*
|
148
|
+
* @param requestOptions - Options for the request
|
149
|
+
* @returns A Promise that will resolve with the query response.
|
150
|
+
*/
|
151
|
+
export function queryFeatures(
|
152
|
+
requestOptions: IQueryFeaturesRequestOptions
|
153
|
+
): Promise<IQueryFeaturesResponse | IQueryResponse> {
|
154
|
+
// default to a GET request
|
155
|
+
const options: IQueryFeaturesRequestOptions = {
|
156
|
+
params: {},
|
157
|
+
httpMethod: "GET",
|
158
|
+
url: requestOptions.url,
|
159
|
+
...requestOptions
|
160
|
+
};
|
161
|
+
|
162
|
+
appendCustomParams(requestOptions, options);
|
163
|
+
|
164
|
+
// set default query parameters
|
165
|
+
if (!options.params.where) {
|
166
|
+
options.params.where = "1=1";
|
167
|
+
}
|
168
|
+
if (!options.params.outFields) {
|
169
|
+
options.params.outFields = "*";
|
170
|
+
}
|
171
|
+
return request(`${options.url}/query`, options);
|
172
|
+
}
|
@@ -0,0 +1,91 @@
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import {
|
5
|
+
ISpatialReference,
|
6
|
+
IFeature,
|
7
|
+
IHasZM,
|
8
|
+
esriGeometryType,
|
9
|
+
IField
|
10
|
+
} from "@esri/arcgis-rest-common-types";
|
11
|
+
import { request, IRequestOptions } from "@esri/arcgis-rest-request";
|
12
|
+
import { appendCustomParams } from "./helpers";
|
13
|
+
|
14
|
+
/**
|
15
|
+
* Related record query request options. Additional arguments can be passed via the [params](/arcgis-rest-js/api/feature-service/IQueryRelatedRequestOptions/#params) property. See the [REST Documentation](https://developers.arcgis.com/rest/services-reference/query-related-feature-service-.htm) for more information and a full list of parameters.
|
16
|
+
*/
|
17
|
+
export interface IQueryRelatedRequestOptions extends IRequestOptions {
|
18
|
+
url: string;
|
19
|
+
relationshipId?: number;
|
20
|
+
objectIds?: number[];
|
21
|
+
outFields?: "*" | string[];
|
22
|
+
definitionExpression?: string;
|
23
|
+
}
|
24
|
+
|
25
|
+
/**
|
26
|
+
* Related record data structure
|
27
|
+
*/
|
28
|
+
|
29
|
+
export interface IRelatedRecordGroup {
|
30
|
+
objectId: number;
|
31
|
+
relatedRecords?: IFeature[];
|
32
|
+
count?: number;
|
33
|
+
}
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Related record response structure
|
37
|
+
*/
|
38
|
+
|
39
|
+
export interface IQueryRelatedResponse extends IHasZM {
|
40
|
+
geometryType?: esriGeometryType;
|
41
|
+
spatialReference?: ISpatialReference;
|
42
|
+
fields?: IField[];
|
43
|
+
relatedRecordGroups: IRelatedRecordGroup[];
|
44
|
+
}
|
45
|
+
/**
|
46
|
+
* Query the related records for a feature service. See the [REST Documentation](https://developers.arcgis.com/rest/services-reference/query-related-records-feature-service-.htm) for more information.
|
47
|
+
*
|
48
|
+
* ```js
|
49
|
+
* import { queryRelated } from '@esri/arcgis-rest-feature-service'
|
50
|
+
*
|
51
|
+
* const url = "http://services.myserver/OrgID/ArcGIS/rest/services/Petroleum/KSPetro/FeatureServer/0"
|
52
|
+
*
|
53
|
+
* queryRelated({
|
54
|
+
* url: url,
|
55
|
+
* relationshipId: 1,
|
56
|
+
* params: { returnCountOnly: true }
|
57
|
+
* })
|
58
|
+
* .then(response => {
|
59
|
+
* console.log(response.relatedRecords)
|
60
|
+
* })
|
61
|
+
* ```
|
62
|
+
*
|
63
|
+
* @param requestOptions
|
64
|
+
* @returns A Promise that will resolve with the query response
|
65
|
+
*/
|
66
|
+
export function queryRelated(
|
67
|
+
requestOptions: IQueryRelatedRequestOptions
|
68
|
+
): Promise<IQueryRelatedResponse> {
|
69
|
+
const options: IQueryRelatedRequestOptions = {
|
70
|
+
params: {},
|
71
|
+
httpMethod: "GET",
|
72
|
+
url: requestOptions.url,
|
73
|
+
...requestOptions
|
74
|
+
};
|
75
|
+
|
76
|
+
appendCustomParams(requestOptions, options);
|
77
|
+
|
78
|
+
if (!options.params.definitionExpression) {
|
79
|
+
options.params.definitionExpression = "1=1";
|
80
|
+
}
|
81
|
+
|
82
|
+
if (!options.params.outFields) {
|
83
|
+
options.params.outFields = "*";
|
84
|
+
}
|
85
|
+
|
86
|
+
if (!options.params.relationshipId) {
|
87
|
+
options.params.relationshipId = 0;
|
88
|
+
}
|
89
|
+
|
90
|
+
return request(`${options.url}/queryRelatedRecords`, options);
|
91
|
+
}
|
@@ -0,0 +1,81 @@
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import { IFeature } from "@esri/arcgis-rest-common-types";
|
5
|
+
import { request, IRequestOptions } from "@esri/arcgis-rest-request";
|
6
|
+
|
7
|
+
import {
|
8
|
+
IEditFeaturesParams,
|
9
|
+
IEditFeatureResult,
|
10
|
+
appendCustomParams
|
11
|
+
} from "./helpers";
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Update features request options. See the [REST Documentation](https://developers.arcgis.com/rest/services-reference/update-features.htm) for more information.
|
15
|
+
*
|
16
|
+
* @param url - Feature service url.
|
17
|
+
* @param updates - Array of JSON features to update.
|
18
|
+
* @param params - Query parameters to be sent to the feature service via the request.
|
19
|
+
*/
|
20
|
+
export interface IUpdateFeaturesRequestOptions
|
21
|
+
extends IEditFeaturesParams,
|
22
|
+
IRequestOptions {
|
23
|
+
/**
|
24
|
+
* Feature service url.
|
25
|
+
*/
|
26
|
+
url: string;
|
27
|
+
/**
|
28
|
+
* Array of JSON features to update.
|
29
|
+
*/
|
30
|
+
updates: IFeature[];
|
31
|
+
}
|
32
|
+
|
33
|
+
/**
|
34
|
+
* Update features results.
|
35
|
+
*/
|
36
|
+
export interface IUpdateFeaturesResult {
|
37
|
+
/**
|
38
|
+
* Array of JSON response Object(s) for each feature updated.
|
39
|
+
*/
|
40
|
+
updateResults?: IEditFeatureResult[];
|
41
|
+
}
|
42
|
+
|
43
|
+
/**
|
44
|
+
* Update features request. See the [REST Documentation](https://developers.arcgis.com/rest/services-reference/update-features.htm) for more information.
|
45
|
+
*
|
46
|
+
* ```js
|
47
|
+
* import { updateFeatures } from '@esri/arcgis-rest-feature-service';
|
48
|
+
*
|
49
|
+
* const url = "https://sampleserver6.arcgisonline.com/arcgis/rest/services/ServiceRequest/FeatureServer/0";
|
50
|
+
*
|
51
|
+
* updateFeatures({
|
52
|
+
* url,
|
53
|
+
* updates: [{
|
54
|
+
* geometry: { x: -120, y: 45, spatialReference: { wkid: 4326 } },
|
55
|
+
* attributes: { status: "alive" }
|
56
|
+
* }]
|
57
|
+
* });
|
58
|
+
* ```
|
59
|
+
*
|
60
|
+
* @param requestOptions - Options for the request.
|
61
|
+
* @returns A Promise that will resolve with the updateFeatures response.
|
62
|
+
*/
|
63
|
+
export function updateFeatures(
|
64
|
+
requestOptions: IUpdateFeaturesRequestOptions
|
65
|
+
): Promise<IUpdateFeaturesResult> {
|
66
|
+
const url = `${requestOptions.url}/updateFeatures`;
|
67
|
+
|
68
|
+
// edit operations are POST only
|
69
|
+
const options: IUpdateFeaturesRequestOptions = {
|
70
|
+
params: {},
|
71
|
+
...requestOptions
|
72
|
+
};
|
73
|
+
|
74
|
+
appendCustomParams(requestOptions, options);
|
75
|
+
|
76
|
+
// mixin, don't overwrite
|
77
|
+
options.params.features = requestOptions.updates;
|
78
|
+
delete options.params.updates;
|
79
|
+
|
80
|
+
return request(url, options);
|
81
|
+
}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import { request, IRequestOptions } from "@esri/arcgis-rest-request";
|
5
|
+
|
6
|
+
import { IEditFeatureResult } from "./helpers";
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Request options to for updating a related attachment to a feature by id. See [Update Attachment](https://developers.arcgis.com/rest/services-reference/update-attachment.htm) for more information.
|
10
|
+
*
|
11
|
+
*/
|
12
|
+
export interface IUpdateAttachmentOptions extends IRequestOptions {
|
13
|
+
/**
|
14
|
+
* Feature service url.
|
15
|
+
*/
|
16
|
+
url: string;
|
17
|
+
/**
|
18
|
+
* Unique identifier of feature to update related attachment.
|
19
|
+
*/
|
20
|
+
featureId: number;
|
21
|
+
/**
|
22
|
+
* File to be updated.
|
23
|
+
*/
|
24
|
+
attachment: File;
|
25
|
+
/**
|
26
|
+
* Unique identifier of the attachment.
|
27
|
+
*/
|
28
|
+
attachmentId: number;
|
29
|
+
}
|
30
|
+
|
31
|
+
/**
|
32
|
+
* `updateAttachment()` request response.
|
33
|
+
*/
|
34
|
+
export interface IUpdateAttachmentResponse {
|
35
|
+
/**
|
36
|
+
* Standard AGS add/update/edit result Object for the attachment.
|
37
|
+
*/
|
38
|
+
updateAttachmentResult: IEditFeatureResult;
|
39
|
+
}
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Update a related attachment to a feature by id. See [Update Attachment](https://developers.arcgis.com/rest/services-reference/update-attachment.htm) for more information.
|
43
|
+
*
|
44
|
+
* ```js
|
45
|
+
* import { updateAttachment } from '@esri/arcgis-rest-feature-service';
|
46
|
+
*
|
47
|
+
* updateAttachment({
|
48
|
+
* url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/ServiceRequest/FeatureServer/0",
|
49
|
+
* featureId: 8484,
|
50
|
+
* attachment: myFileInput.files[0],
|
51
|
+
* attachmentId: 306
|
52
|
+
* });
|
53
|
+
* ```
|
54
|
+
*
|
55
|
+
* @param requestOptions - Options for the request.
|
56
|
+
* @returns A Promise that will resolve with the `updateAttachment()` response.
|
57
|
+
*/
|
58
|
+
export function updateAttachment(
|
59
|
+
requestOptions: IUpdateAttachmentOptions
|
60
|
+
): Promise<IUpdateAttachmentResponse> {
|
61
|
+
const options: IUpdateAttachmentOptions = {
|
62
|
+
params: {},
|
63
|
+
...requestOptions
|
64
|
+
};
|
65
|
+
|
66
|
+
// `attachment` and `attachmentId` --> params: {}
|
67
|
+
options.params.attachment = requestOptions.attachment;
|
68
|
+
options.params.attachmentId = requestOptions.attachmentId;
|
69
|
+
|
70
|
+
return request(
|
71
|
+
`${options.url}/${options.featureId}/updateAttachment`,
|
72
|
+
options
|
73
|
+
);
|
74
|
+
}
|
@@ -0,0 +1,203 @@
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import * as fetchMock from "fetch-mock";
|
5
|
+
|
6
|
+
import {
|
7
|
+
getAttachments,
|
8
|
+
IGetAttachmentsOptions,
|
9
|
+
addAttachment,
|
10
|
+
IAddAttachmentOptions,
|
11
|
+
updateAttachment,
|
12
|
+
IUpdateAttachmentOptions,
|
13
|
+
deleteAttachments,
|
14
|
+
IDeleteAttachmentsOptions
|
15
|
+
} from "../src/index";
|
16
|
+
|
17
|
+
import {
|
18
|
+
getAttachmentsResponse,
|
19
|
+
addAttachmentResponse,
|
20
|
+
updateAttachmentResponse,
|
21
|
+
deleteAttachmentsResponse,
|
22
|
+
genericInvalidResponse
|
23
|
+
} from "./mocks/feature";
|
24
|
+
|
25
|
+
export function attachmentFile() {
|
26
|
+
if (typeof File !== "undefined" && File) {
|
27
|
+
return new File(["foo"], "foo.txt", { type: "text/plain" });
|
28
|
+
} else {
|
29
|
+
const fs = require("fs");
|
30
|
+
return fs.createReadStream(
|
31
|
+
"./packages/arcgis-rest-feature-service/test/mocks/foo.txt"
|
32
|
+
);
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
const serviceUrl =
|
37
|
+
"https://services.arcgis.com/f8b/arcgis/rest/services/Custom/FeatureServer/0";
|
38
|
+
|
39
|
+
describe("attachment methods", () => {
|
40
|
+
afterEach(fetchMock.restore);
|
41
|
+
|
42
|
+
it("should return an array of attachmentInfos for a feature by id", done => {
|
43
|
+
const requestOptions = {
|
44
|
+
url: serviceUrl,
|
45
|
+
featureId: 42,
|
46
|
+
params: {
|
47
|
+
gdbVersion: "SDE.DEFAULT"
|
48
|
+
},
|
49
|
+
httpMethod: "GET"
|
50
|
+
} as IGetAttachmentsOptions;
|
51
|
+
fetchMock.once("*", getAttachmentsResponse);
|
52
|
+
getAttachments(requestOptions)
|
53
|
+
.then(() => {
|
54
|
+
expect(fetchMock.called()).toBeTruthy();
|
55
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
56
|
+
expect(url).toEqual(
|
57
|
+
`${requestOptions.url}/${
|
58
|
+
requestOptions.featureId
|
59
|
+
}/attachments?f=json&gdbVersion=SDE.DEFAULT`
|
60
|
+
);
|
61
|
+
expect(options.method).toBe("GET");
|
62
|
+
expect(getAttachmentsResponse.attachmentInfos.length).toEqual(2);
|
63
|
+
expect(getAttachmentsResponse.attachmentInfos[0].id).toEqual(409);
|
64
|
+
done();
|
65
|
+
})
|
66
|
+
.catch(e => {
|
67
|
+
fail(e);
|
68
|
+
});
|
69
|
+
});
|
70
|
+
|
71
|
+
it("should return objectId of the added attachment and a truthy success", done => {
|
72
|
+
const requestOptions = {
|
73
|
+
url: serviceUrl,
|
74
|
+
featureId: 42,
|
75
|
+
attachment: attachmentFile(),
|
76
|
+
params: {
|
77
|
+
returnEditMoment: true
|
78
|
+
}
|
79
|
+
} as IAddAttachmentOptions;
|
80
|
+
fetchMock.once("*", addAttachmentResponse);
|
81
|
+
addAttachment(requestOptions)
|
82
|
+
.then(() => {
|
83
|
+
expect(fetchMock.called()).toBeTruthy();
|
84
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
85
|
+
expect(url).toEqual(
|
86
|
+
`${requestOptions.url}/${requestOptions.featureId}/addAttachment`
|
87
|
+
);
|
88
|
+
expect(options.method).toBe("POST");
|
89
|
+
|
90
|
+
const params = options.body as FormData;
|
91
|
+
expect(params instanceof FormData).toBeTruthy();
|
92
|
+
// we can introspect FormData in Chrome this way, but not Node.js
|
93
|
+
// more info: https://github.com/form-data/form-data/issues/124
|
94
|
+
if (params.get) {
|
95
|
+
expect(params.get("returnEditMoment")).toEqual("true");
|
96
|
+
}
|
97
|
+
expect(addAttachmentResponse.addAttachmentResult.objectId).toEqual(
|
98
|
+
1001
|
99
|
+
);
|
100
|
+
expect(addAttachmentResponse.addAttachmentResult.success).toEqual(true);
|
101
|
+
done();
|
102
|
+
})
|
103
|
+
.catch(e => {
|
104
|
+
fail(e);
|
105
|
+
});
|
106
|
+
});
|
107
|
+
|
108
|
+
it("should return an error for a service/feature which does not have attachments", done => {
|
109
|
+
const requestOptions = {
|
110
|
+
url:
|
111
|
+
"https://services.arcgis.com/f8b/arcgis/rest/services/NoAttachments/FeatureServer/0",
|
112
|
+
featureId: 654,
|
113
|
+
attachment: attachmentFile(),
|
114
|
+
params: {
|
115
|
+
returnEditMoment: true
|
116
|
+
}
|
117
|
+
} as IAddAttachmentOptions;
|
118
|
+
fetchMock.once("*", genericInvalidResponse);
|
119
|
+
addAttachment(requestOptions)
|
120
|
+
.then(() => {
|
121
|
+
// nothing to test here forcing error
|
122
|
+
fail();
|
123
|
+
})
|
124
|
+
.catch(error => {
|
125
|
+
expect(fetchMock.called()).toBeTruthy();
|
126
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
127
|
+
expect(url).toEqual(
|
128
|
+
`${requestOptions.url}/${requestOptions.featureId}/addAttachment`
|
129
|
+
);
|
130
|
+
expect(options.method).toBe("POST");
|
131
|
+
expect(error.response.error.code).toEqual(400);
|
132
|
+
expect(error.response.error.message).toEqual(
|
133
|
+
"Invalid or missing input parameters."
|
134
|
+
);
|
135
|
+
done();
|
136
|
+
});
|
137
|
+
});
|
138
|
+
|
139
|
+
it("should return objectId of the updated attachment and a truthy success", done => {
|
140
|
+
const requestOptions = {
|
141
|
+
url: serviceUrl,
|
142
|
+
featureId: 42,
|
143
|
+
attachmentId: 1001,
|
144
|
+
attachment: attachmentFile(),
|
145
|
+
params: {
|
146
|
+
returnEditMoment: true
|
147
|
+
}
|
148
|
+
} as IUpdateAttachmentOptions;
|
149
|
+
fetchMock.once("*", updateAttachmentResponse);
|
150
|
+
updateAttachment(requestOptions)
|
151
|
+
.then(() => {
|
152
|
+
expect(fetchMock.called()).toBeTruthy();
|
153
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
154
|
+
expect(url).toEqual(
|
155
|
+
`${requestOptions.url}/${requestOptions.featureId}/updateAttachment`
|
156
|
+
);
|
157
|
+
expect(options.method).toBe("POST");
|
158
|
+
expect(
|
159
|
+
updateAttachmentResponse.updateAttachmentResult.objectId
|
160
|
+
).toEqual(1001);
|
161
|
+
expect(updateAttachmentResponse.updateAttachmentResult.success).toEqual(
|
162
|
+
true
|
163
|
+
);
|
164
|
+
done();
|
165
|
+
})
|
166
|
+
.catch(e => {
|
167
|
+
fail(e);
|
168
|
+
});
|
169
|
+
});
|
170
|
+
|
171
|
+
it("should return objectId of the deleted attachment and a truthy success", done => {
|
172
|
+
const requestOptions = {
|
173
|
+
url: serviceUrl,
|
174
|
+
featureId: 42,
|
175
|
+
attachmentIds: [1001],
|
176
|
+
params: {
|
177
|
+
returnEditMoment: true
|
178
|
+
}
|
179
|
+
} as IDeleteAttachmentsOptions;
|
180
|
+
fetchMock.once("*", deleteAttachmentsResponse);
|
181
|
+
deleteAttachments(requestOptions)
|
182
|
+
.then(() => {
|
183
|
+
expect(fetchMock.called()).toBeTruthy();
|
184
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
185
|
+
expect(url).toEqual(
|
186
|
+
`${requestOptions.url}/${requestOptions.featureId}/deleteAttachments`
|
187
|
+
);
|
188
|
+
expect(options.body).toContain("attachmentIds=1001");
|
189
|
+
expect(options.body).toContain("returnEditMoment=true");
|
190
|
+
expect(options.method).toBe("POST");
|
191
|
+
expect(
|
192
|
+
deleteAttachmentsResponse.deleteAttachmentResults[0].objectId
|
193
|
+
).toEqual(1001);
|
194
|
+
expect(
|
195
|
+
deleteAttachmentsResponse.deleteAttachmentResults[0].success
|
196
|
+
).toEqual(true);
|
197
|
+
done();
|
198
|
+
})
|
199
|
+
.catch(e => {
|
200
|
+
fail(e);
|
201
|
+
});
|
202
|
+
});
|
203
|
+
});
|