delectusnon 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,70 @@
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import { request } from "@esri/arcgis-rest-request";
|
5
|
+
import { IUserRequestOptions } from "@esri/arcgis-rest-auth";
|
6
|
+
import { ILayer, ITable } from "@esri/arcgis-rest-common-types";
|
7
|
+
|
8
|
+
export interface IAddToServiceDefinitionRequestOptions
|
9
|
+
extends IUserRequestOptions {
|
10
|
+
/**
|
11
|
+
* Layers to add
|
12
|
+
*/
|
13
|
+
layers?: ILayer[];
|
14
|
+
/**
|
15
|
+
* Tables to add
|
16
|
+
*/
|
17
|
+
tables?: ITable[];
|
18
|
+
}
|
19
|
+
|
20
|
+
export interface IAddToServiceDefinitionItemSummary {
|
21
|
+
name: string;
|
22
|
+
id: any;
|
23
|
+
}
|
24
|
+
|
25
|
+
export interface IAddToServiceDefinitionResult {
|
26
|
+
layers?: IAddToServiceDefinitionItemSummary[];
|
27
|
+
tables?: IAddToServiceDefinitionItemSummary[];
|
28
|
+
success: boolean;
|
29
|
+
}
|
30
|
+
|
31
|
+
/**
|
32
|
+
* Add layer(s) and/or table(s) to a hosted feature service.
|
33
|
+
*
|
34
|
+
* ```js
|
35
|
+
* import { addToServiceDefinition } from '@esri/arcgis-rest-feature-service-admin';
|
36
|
+
*
|
37
|
+
* addToServiceDefinition(serviceurl, {
|
38
|
+
* authentication: userSession,
|
39
|
+
* layers: [],
|
40
|
+
* tables: []
|
41
|
+
* });
|
42
|
+
* ```
|
43
|
+
*
|
44
|
+
* @param url - URL of feature service
|
45
|
+
* @param requestOptions - Options for the request
|
46
|
+
* @returns A Promise that resolves with service layer and/or table details once the definition
|
47
|
+
* has been updated
|
48
|
+
*/
|
49
|
+
export function addToServiceDefinition(
|
50
|
+
url: string,
|
51
|
+
requestOptions: IAddToServiceDefinitionRequestOptions
|
52
|
+
): Promise<IAddToServiceDefinitionResult> {
|
53
|
+
const adminUrl =
|
54
|
+
url.replace("/rest/services", "/rest/admin/services") + "/addToDefinition";
|
55
|
+
|
56
|
+
requestOptions.params = {
|
57
|
+
addToDefinition: {},
|
58
|
+
...requestOptions.params
|
59
|
+
};
|
60
|
+
|
61
|
+
if (requestOptions.layers && requestOptions.layers.length > 0) {
|
62
|
+
requestOptions.params.addToDefinition.layers = requestOptions.layers;
|
63
|
+
}
|
64
|
+
|
65
|
+
if (requestOptions.tables && requestOptions.tables.length > 0) {
|
66
|
+
requestOptions.params.addToDefinition.tables = requestOptions.tables;
|
67
|
+
}
|
68
|
+
|
69
|
+
return request(adminUrl, requestOptions);
|
70
|
+
}
|
@@ -0,0 +1,195 @@
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import { request, getPortalUrl } from "@esri/arcgis-rest-request";
|
5
|
+
import {
|
6
|
+
moveItem,
|
7
|
+
IItemCrudRequestOptions,
|
8
|
+
determineOwner
|
9
|
+
} from "@esri/arcgis-rest-items";
|
10
|
+
import { IExtent, ISpatialReference } from "@esri/arcgis-rest-common-types";
|
11
|
+
|
12
|
+
/**
|
13
|
+
* A [`createParameters` JSON object for a new
|
14
|
+
* service](https://developers.arcgis.com/rest/users-groups-and-items/create-service.htm).
|
15
|
+
*/
|
16
|
+
export interface ICreateServiceParams {
|
17
|
+
/**
|
18
|
+
* Name of the service to be created. This name must be unique. If the name already exists, the operation will fail. ArcGIS Enterprise does not allow spaces or special characters other than underscores in a service name.
|
19
|
+
*/
|
20
|
+
name: string;
|
21
|
+
/**
|
22
|
+
* Description given to the service.
|
23
|
+
*/
|
24
|
+
serviceDescription?: string;
|
25
|
+
/**
|
26
|
+
* Indicates whether the data changes.
|
27
|
+
*/
|
28
|
+
hasStaticData?: boolean;
|
29
|
+
/**
|
30
|
+
* A double value indicating any constraints enforced on query operations.
|
31
|
+
*/
|
32
|
+
maxRecordCount?: number;
|
33
|
+
/**
|
34
|
+
* The formats in which query results are returned.
|
35
|
+
*/
|
36
|
+
supportedQueryFormats?: string;
|
37
|
+
/**
|
38
|
+
* Specify feature service editing capabilities for Create, Delete, Query, Update, and Sync.
|
39
|
+
*/
|
40
|
+
capabilities?: string;
|
41
|
+
/**
|
42
|
+
* A user-friendly description for the published dataset.
|
43
|
+
*/
|
44
|
+
description?: string;
|
45
|
+
/**
|
46
|
+
* Copyright information associated with the dataset.
|
47
|
+
*/
|
48
|
+
copyrightText?: string;
|
49
|
+
/**
|
50
|
+
* All layers added to a hosted feature service need to have the same spatial reference defined for
|
51
|
+
* the feature service. When creating a new empty service without specifying its spatial reference,
|
52
|
+
* the spatial reference of the hosted feature service is set to the first layer added to that
|
53
|
+
* feature service.
|
54
|
+
*/
|
55
|
+
spatialReference?: ISpatialReference;
|
56
|
+
/**
|
57
|
+
* The initial extent set for the service.
|
58
|
+
*/
|
59
|
+
initialExtent?: IExtent;
|
60
|
+
/**
|
61
|
+
* Indicates if updating the geometry of the service is permitted.
|
62
|
+
*/
|
63
|
+
allowGeometryUpdates?: boolean;
|
64
|
+
/**
|
65
|
+
* Units used by the feature service
|
66
|
+
*/
|
67
|
+
units?: string;
|
68
|
+
/**
|
69
|
+
* A JSON object specifying the properties of cross-site scripting prevention.
|
70
|
+
*/
|
71
|
+
xssPreventionInfo?: any;
|
72
|
+
}
|
73
|
+
|
74
|
+
export interface ICreateServiceRequestOptions extends IItemCrudRequestOptions {
|
75
|
+
/**
|
76
|
+
* A JSON object specifying the properties of the newly-created service. See the [REST
|
77
|
+
* Documentation](https://developers.arcgis.com/rest/users-groups-and-items/working-with-users-groups-and-items.htm)
|
78
|
+
* for more information.
|
79
|
+
*/
|
80
|
+
item: ICreateServiceParams;
|
81
|
+
/**
|
82
|
+
* Alphanumeric id of folder to house moved item. If null, empty, or "/", the destination is the
|
83
|
+
* root folder.
|
84
|
+
*/
|
85
|
+
folderId?: string;
|
86
|
+
}
|
87
|
+
|
88
|
+
export interface ICreateServiceResult {
|
89
|
+
/**
|
90
|
+
* The encoded URL to the hosted service.
|
91
|
+
*/
|
92
|
+
encodedServiceURL: string;
|
93
|
+
|
94
|
+
/**
|
95
|
+
* Indicates if this feature service represents a view.
|
96
|
+
*/
|
97
|
+
isView: boolean;
|
98
|
+
|
99
|
+
/**
|
100
|
+
* The unique ID for this item.
|
101
|
+
*/
|
102
|
+
itemId: string;
|
103
|
+
|
104
|
+
/**
|
105
|
+
* Name of the service item.
|
106
|
+
*/
|
107
|
+
name: string;
|
108
|
+
|
109
|
+
/**
|
110
|
+
* The ID of the new service item.
|
111
|
+
*/
|
112
|
+
serviceItemId: string;
|
113
|
+
|
114
|
+
/**
|
115
|
+
* The URL to the hosted service.
|
116
|
+
*/
|
117
|
+
serviceurl: string;
|
118
|
+
|
119
|
+
/**
|
120
|
+
* The size of the item.
|
121
|
+
*/
|
122
|
+
size: number;
|
123
|
+
|
124
|
+
/**
|
125
|
+
* Indicates if the operation was successful.
|
126
|
+
*/
|
127
|
+
success: boolean;
|
128
|
+
|
129
|
+
/**
|
130
|
+
* The type of service created.
|
131
|
+
*/
|
132
|
+
type: string;
|
133
|
+
}
|
134
|
+
|
135
|
+
/**
|
136
|
+
* Create a new hosted feature service.
|
137
|
+
*
|
138
|
+
* ```js
|
139
|
+
* import { createFeatureService } from '@esri/arcgis-rest-feature-service-admin';
|
140
|
+
*
|
141
|
+
* createFeatureService({
|
142
|
+
* authentication: userSession,
|
143
|
+
* item: {
|
144
|
+
* "name": "NewEmptyService",
|
145
|
+
* "capabilities": "Create,Delete,Query,Update,Editing"
|
146
|
+
* }
|
147
|
+
* });
|
148
|
+
* ```
|
149
|
+
*
|
150
|
+
* @param requestOptions - Options for the request
|
151
|
+
* @returns A Promise that resolves with service details once the service has been created
|
152
|
+
*/
|
153
|
+
export function createFeatureService(
|
154
|
+
requestOptions: ICreateServiceRequestOptions
|
155
|
+
): Promise<ICreateServiceResult> {
|
156
|
+
const owner = determineOwner(requestOptions);
|
157
|
+
|
158
|
+
const baseUrl = `${getPortalUrl(requestOptions)}/content/users/${owner}`;
|
159
|
+
const url = `${baseUrl}/createService`;
|
160
|
+
|
161
|
+
// Create the service
|
162
|
+
requestOptions.params = {
|
163
|
+
createParameters: requestOptions.item,
|
164
|
+
outputType: "featureService",
|
165
|
+
...requestOptions.params
|
166
|
+
};
|
167
|
+
|
168
|
+
if (!requestOptions.folderId || requestOptions.folderId === "/") {
|
169
|
+
// If the service is destined for the root folder, just send the request and return the promise;
|
170
|
+
// services are created in the root folder
|
171
|
+
return request(url, requestOptions);
|
172
|
+
} else {
|
173
|
+
// If the service is destined for a subfolder, catch the results of the request and then move
|
174
|
+
// the item to the desired folder
|
175
|
+
return new Promise((resolve, reject) => {
|
176
|
+
request(url, requestOptions).then(createResults => {
|
177
|
+
if (createResults.success) {
|
178
|
+
moveItem({
|
179
|
+
itemId: createResults.itemId,
|
180
|
+
folderId: requestOptions.folderId,
|
181
|
+
authentication: requestOptions.authentication
|
182
|
+
}).then(moveResults => {
|
183
|
+
if (moveResults.success) {
|
184
|
+
resolve(createResults);
|
185
|
+
} else {
|
186
|
+
reject({ success: false });
|
187
|
+
}
|
188
|
+
});
|
189
|
+
} else {
|
190
|
+
reject({ success: false });
|
191
|
+
}
|
192
|
+
});
|
193
|
+
});
|
194
|
+
}
|
195
|
+
}
|
@@ -0,0 +1,310 @@
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import * as fetchMock from "fetch-mock";
|
5
|
+
|
6
|
+
import { addToServiceDefinition } from "../src/addTo";
|
7
|
+
|
8
|
+
import {
|
9
|
+
AddToFeatureServiceSuccessResponseFredAndGinger,
|
10
|
+
AddToFeatureServiceSuccessResponseFayardAndHarold,
|
11
|
+
AddToFeatureServiceSuccessResponseCydAndGene,
|
12
|
+
AddToFeatureServiceError
|
13
|
+
} from "./mocks/service";
|
14
|
+
|
15
|
+
import { UserSession } from "@esri/arcgis-rest-auth";
|
16
|
+
import { TOMORROW } from "@esri/arcgis-rest-auth/test/utils";
|
17
|
+
import { encodeParam, ErrorTypes } from "@esri/arcgis-rest-request";
|
18
|
+
import { ILayer, ITable } from "@esri/arcgis-rest-common-types";
|
19
|
+
|
20
|
+
describe("add to feature service", () => {
|
21
|
+
afterEach(fetchMock.restore);
|
22
|
+
|
23
|
+
describe("Authenticated methods", () => {
|
24
|
+
// setup a UserSession to use in all these tests
|
25
|
+
const MOCK_USER_SESSION = new UserSession({
|
26
|
+
clientId: "clientId",
|
27
|
+
redirectUri: "https://example-app.com/redirect-uri",
|
28
|
+
token: "fake-token",
|
29
|
+
tokenExpires: TOMORROW,
|
30
|
+
refreshToken: "refreshToken",
|
31
|
+
refreshTokenExpires: TOMORROW,
|
32
|
+
refreshTokenTTL: 1440,
|
33
|
+
username: "casey",
|
34
|
+
password: "123456",
|
35
|
+
portal: "https://myorg.maps.arcgis.com/sharing/rest"
|
36
|
+
});
|
37
|
+
|
38
|
+
const MOCK_USER_REQOPTS = {
|
39
|
+
authentication: MOCK_USER_SESSION
|
40
|
+
};
|
41
|
+
|
42
|
+
const layerDescriptionFred: ILayer = {
|
43
|
+
name: "Fred",
|
44
|
+
id: "1899",
|
45
|
+
layerType: "Feature Layer"
|
46
|
+
};
|
47
|
+
|
48
|
+
const layerDescriptionGinger: ILayer = {
|
49
|
+
name: "Ginger",
|
50
|
+
id: "1911",
|
51
|
+
layerType: "Feature Layer"
|
52
|
+
};
|
53
|
+
|
54
|
+
const layerDescriptionCyd: ILayer = {
|
55
|
+
name: "Cyd",
|
56
|
+
id: "1922",
|
57
|
+
layerType: "Feature Layer"
|
58
|
+
};
|
59
|
+
|
60
|
+
const layerDescriptionFail: ILayer = {
|
61
|
+
name: "",
|
62
|
+
id: "",
|
63
|
+
layerType: "Feature Layer"
|
64
|
+
};
|
65
|
+
|
66
|
+
const tableDescriptionFayard: ITable = {
|
67
|
+
name: "Fayard",
|
68
|
+
id: "1914"
|
69
|
+
};
|
70
|
+
|
71
|
+
const tableDescriptionHarold: ITable = {
|
72
|
+
name: "Harold",
|
73
|
+
id: "1921"
|
74
|
+
};
|
75
|
+
|
76
|
+
const tableDescriptionGene: ITable = {
|
77
|
+
name: "Gene",
|
78
|
+
id: "1912"
|
79
|
+
};
|
80
|
+
|
81
|
+
const tableDescriptionFail: ITable = {
|
82
|
+
name: "",
|
83
|
+
id: ""
|
84
|
+
};
|
85
|
+
|
86
|
+
it("should add a pair of layers", done => {
|
87
|
+
fetchMock.once("*", AddToFeatureServiceSuccessResponseFredAndGinger);
|
88
|
+
|
89
|
+
addToServiceDefinition(
|
90
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
|
91
|
+
{
|
92
|
+
layers: [layerDescriptionFred, layerDescriptionGinger],
|
93
|
+
...MOCK_USER_REQOPTS
|
94
|
+
}
|
95
|
+
)
|
96
|
+
.then(
|
97
|
+
response => {
|
98
|
+
// Check service call
|
99
|
+
expect(fetchMock.called()).toEqual(true);
|
100
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall(
|
101
|
+
"*"
|
102
|
+
);
|
103
|
+
|
104
|
+
expect(url).toEqual(
|
105
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
|
106
|
+
);
|
107
|
+
expect(options.method).toBe("POST");
|
108
|
+
expect(options.body).toContain("f=json");
|
109
|
+
expect(options.body).toContain(encodeParam("token", "fake-token"));
|
110
|
+
expect(options.body).toContain(
|
111
|
+
encodeParam(
|
112
|
+
"addToDefinition",
|
113
|
+
JSON.stringify({
|
114
|
+
layers: [layerDescriptionFred, layerDescriptionGinger]
|
115
|
+
})
|
116
|
+
)
|
117
|
+
);
|
118
|
+
|
119
|
+
// Check response
|
120
|
+
expect(response).toEqual(
|
121
|
+
AddToFeatureServiceSuccessResponseFredAndGinger
|
122
|
+
);
|
123
|
+
|
124
|
+
done();
|
125
|
+
},
|
126
|
+
() => {
|
127
|
+
fail(); // call is supposed to succeed
|
128
|
+
}
|
129
|
+
)
|
130
|
+
.catch(e => {
|
131
|
+
fail(e);
|
132
|
+
});
|
133
|
+
});
|
134
|
+
|
135
|
+
it("should add a pair of tables", done => {
|
136
|
+
fetchMock.once("*", AddToFeatureServiceSuccessResponseFayardAndHarold);
|
137
|
+
|
138
|
+
addToServiceDefinition(
|
139
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
|
140
|
+
{
|
141
|
+
tables: [tableDescriptionFayard, tableDescriptionHarold],
|
142
|
+
...MOCK_USER_REQOPTS
|
143
|
+
}
|
144
|
+
)
|
145
|
+
.then(
|
146
|
+
response => {
|
147
|
+
// Check service call
|
148
|
+
expect(fetchMock.called()).toEqual(true);
|
149
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall(
|
150
|
+
"*"
|
151
|
+
);
|
152
|
+
|
153
|
+
expect(url).toEqual(
|
154
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
|
155
|
+
);
|
156
|
+
expect(options.method).toBe("POST");
|
157
|
+
expect(options.body).toContain("f=json");
|
158
|
+
expect(options.body).toContain(encodeParam("token", "fake-token"));
|
159
|
+
expect(options.body).toContain(
|
160
|
+
encodeParam(
|
161
|
+
"addToDefinition",
|
162
|
+
JSON.stringify({
|
163
|
+
tables: [tableDescriptionFayard, tableDescriptionHarold]
|
164
|
+
})
|
165
|
+
)
|
166
|
+
);
|
167
|
+
|
168
|
+
// Check response
|
169
|
+
expect(response).toEqual(
|
170
|
+
AddToFeatureServiceSuccessResponseFayardAndHarold
|
171
|
+
);
|
172
|
+
|
173
|
+
done();
|
174
|
+
},
|
175
|
+
() => {
|
176
|
+
fail(); // call is supposed to succeed
|
177
|
+
}
|
178
|
+
)
|
179
|
+
.catch(e => {
|
180
|
+
fail(e);
|
181
|
+
});
|
182
|
+
});
|
183
|
+
|
184
|
+
it("should add a layer and a table", done => {
|
185
|
+
fetchMock.once("*", AddToFeatureServiceSuccessResponseCydAndGene);
|
186
|
+
|
187
|
+
addToServiceDefinition(
|
188
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
|
189
|
+
{
|
190
|
+
layers: [layerDescriptionCyd],
|
191
|
+
tables: [tableDescriptionGene],
|
192
|
+
...MOCK_USER_REQOPTS
|
193
|
+
}
|
194
|
+
)
|
195
|
+
.then(response => {
|
196
|
+
// Check service call
|
197
|
+
expect(fetchMock.called()).toEqual(true);
|
198
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
199
|
+
|
200
|
+
expect(url).toEqual(
|
201
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
|
202
|
+
);
|
203
|
+
expect(options.method).toBe("POST");
|
204
|
+
expect(options.body).toContain("f=json");
|
205
|
+
expect(options.body).toContain(encodeParam("token", "fake-token"));
|
206
|
+
expect(options.body).toContain(
|
207
|
+
encodeParam(
|
208
|
+
"addToDefinition",
|
209
|
+
JSON.stringify({
|
210
|
+
layers: [layerDescriptionCyd],
|
211
|
+
tables: [tableDescriptionGene]
|
212
|
+
})
|
213
|
+
)
|
214
|
+
);
|
215
|
+
|
216
|
+
// Check response
|
217
|
+
expect(response).toEqual(
|
218
|
+
AddToFeatureServiceSuccessResponseCydAndGene
|
219
|
+
);
|
220
|
+
done();
|
221
|
+
})
|
222
|
+
.catch(e => {
|
223
|
+
fail(e);
|
224
|
+
});
|
225
|
+
});
|
226
|
+
|
227
|
+
it("should fail to add a bad layer", done => {
|
228
|
+
fetchMock.once("*", AddToFeatureServiceError);
|
229
|
+
|
230
|
+
addToServiceDefinition(
|
231
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
|
232
|
+
{
|
233
|
+
layers: [layerDescriptionFail],
|
234
|
+
...MOCK_USER_REQOPTS
|
235
|
+
}
|
236
|
+
).catch(error => {
|
237
|
+
expect(error.name).toBe(ErrorTypes.ArcGISRequestError);
|
238
|
+
expect(error.message).toBe(
|
239
|
+
"400: Unable to add feature service definition."
|
240
|
+
);
|
241
|
+
expect(error instanceof Error).toBeTruthy();
|
242
|
+
expect(error.url).toBe(
|
243
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
|
244
|
+
);
|
245
|
+
// params added internally aren't surfaced in the error
|
246
|
+
expect(error.options.params.addToDefinition).toEqual({
|
247
|
+
layers: [layerDescriptionFail]
|
248
|
+
});
|
249
|
+
expect(error.options.httpMethod).toEqual("POST");
|
250
|
+
done();
|
251
|
+
});
|
252
|
+
});
|
253
|
+
|
254
|
+
it("should fail to add a bad table", done => {
|
255
|
+
fetchMock.once("*", AddToFeatureServiceError);
|
256
|
+
|
257
|
+
addToServiceDefinition(
|
258
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
|
259
|
+
{
|
260
|
+
tables: [tableDescriptionFail],
|
261
|
+
...MOCK_USER_REQOPTS
|
262
|
+
}
|
263
|
+
).catch(error => {
|
264
|
+
expect(error.name).toBe(ErrorTypes.ArcGISRequestError);
|
265
|
+
expect(error.message).toBe(
|
266
|
+
"400: Unable to add feature service definition."
|
267
|
+
);
|
268
|
+
expect(error instanceof Error).toBeTruthy();
|
269
|
+
expect(error.url).toBe(
|
270
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
|
271
|
+
);
|
272
|
+
// params added internally aren't surfaced in the error
|
273
|
+
expect(error.options.params.addToDefinition).toEqual({
|
274
|
+
tables: [tableDescriptionFail]
|
275
|
+
});
|
276
|
+
expect(error.options.httpMethod).toEqual("POST");
|
277
|
+
done();
|
278
|
+
});
|
279
|
+
});
|
280
|
+
|
281
|
+
it("should fail to add a bad layer and a bad table", done => {
|
282
|
+
fetchMock.once("*", AddToFeatureServiceError);
|
283
|
+
|
284
|
+
addToServiceDefinition(
|
285
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
|
286
|
+
{
|
287
|
+
layers: [layerDescriptionFail],
|
288
|
+
tables: [tableDescriptionFail],
|
289
|
+
...MOCK_USER_REQOPTS
|
290
|
+
}
|
291
|
+
).catch(error => {
|
292
|
+
expect(error.name).toBe(ErrorTypes.ArcGISRequestError);
|
293
|
+
expect(error.message).toBe(
|
294
|
+
"400: Unable to add feature service definition."
|
295
|
+
);
|
296
|
+
expect(error instanceof Error).toBeTruthy();
|
297
|
+
expect(error.url).toBe(
|
298
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
|
299
|
+
);
|
300
|
+
// params added internally aren't surfaced in the error
|
301
|
+
expect(error.options.params.addToDefinition).toEqual({
|
302
|
+
tables: [tableDescriptionFail],
|
303
|
+
layers: [layerDescriptionFail]
|
304
|
+
});
|
305
|
+
expect(error.options.httpMethod).toEqual("POST");
|
306
|
+
done();
|
307
|
+
});
|
308
|
+
});
|
309
|
+
}); // auth requests
|
310
|
+
});
|