delectusnon 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (276) hide show
  1. package/.prettierignore +2 -0
  2. package/.travis.yml +33 -0
  3. package/.vscode/launch.json +24 -0
  4. package/.vscode/settings.json +3 -0
  5. package/demos/ago-node-cli/README.md +29 -0
  6. package/demos/ago-node-cli/ago.js +32 -0
  7. package/demos/ago-node-cli/index.js +11 -0
  8. package/demos/ago-node-cli/lib/item-export-command.js +48 -0
  9. package/demos/ago-node-cli/lib/item-search-command.js +35 -0
  10. package/demos/ago-node-cli/package-lock.json +172 -0
  11. package/demos/ago-node-cli/package.json +30 -0
  12. package/demos/attachments/README.md +5 -0
  13. package/demos/attachments/index.html +164 -0
  14. package/demos/attachments/package-lock.json +182 -0
  15. package/demos/attachments/package.json +18 -0
  16. package/demos/batch-geocoder-node/NYC_Restaurant_Inspection_Results.csv +100 -0
  17. package/demos/batch-geocoder-node/README.md +15 -0
  18. package/demos/batch-geocoder-node/batch-geocode.js +118 -0
  19. package/demos/batch-geocoder-node/config-template.js +18 -0
  20. package/demos/batch-geocoder-node/package-lock.json +116 -0
  21. package/demos/batch-geocoder-node/package.json +39 -0
  22. package/demos/express/README.md +10 -0
  23. package/demos/express/config.json.template +3 -0
  24. package/demos/express/package-lock.json +473 -0
  25. package/demos/express/package.json +18 -0
  26. package/demos/express/server.js +28 -0
  27. package/demos/feature-service-browser/README.md +6 -0
  28. package/demos/feature-service-browser/index.html +122 -0
  29. package/demos/feature-service-browser/package-lock.json +182 -0
  30. package/demos/feature-service-browser/package.json +18 -0
  31. package/demos/geocoder-browser/README.md +10 -0
  32. package/demos/geocoder-browser/config.js.template +1 -0
  33. package/demos/geocoder-browser/index.html +131 -0
  34. package/demos/geocoder-browser/package-lock.json +182 -0
  35. package/demos/geocoder-browser/package.json +19 -0
  36. package/demos/geocoder-browser/post-sign-in.html +25 -0
  37. package/demos/jsapi-integration/README.md +8 -0
  38. package/demos/jsapi-integration/config.js +6 -0
  39. package/demos/jsapi-integration/index.html +79 -0
  40. package/demos/jsapi-integration/package-lock.json +184 -0
  41. package/demos/jsapi-integration/package.json +19 -0
  42. package/demos/oauth2-browser/README.md +12 -0
  43. package/demos/oauth2-browser/authenticate.html +32 -0
  44. package/demos/oauth2-browser/config.js.template +6 -0
  45. package/demos/oauth2-browser/index.html +202 -0
  46. package/demos/oauth2-browser/logo.svg +4 -0
  47. package/demos/oauth2-browser/package-lock.json +163 -0
  48. package/demos/oauth2-browser/package.json +18 -0
  49. package/demos/oauth2-browser/style.css +36 -0
  50. package/demos/oauth2-browser-retry/README.md +25 -0
  51. package/demos/oauth2-browser-retry/authenticate.html +21 -0
  52. package/demos/oauth2-browser-retry/index.html +116 -0
  53. package/demos/oauth2-browser-retry/logo.svg +4 -0
  54. package/demos/vue/.env.example +11 -0
  55. package/demos/vue/.eslintrc.js +17 -0
  56. package/demos/vue/.postcssrc.js +5 -0
  57. package/demos/vue/README.md +17 -0
  58. package/demos/vue/babel.config.js +3 -0
  59. package/demos/vue/package-lock.json +11323 -0
  60. package/demos/vue/package.json +33 -0
  61. package/demos/vue/public/favicon.ico +0 -0
  62. package/demos/vue/public/index.html +24 -0
  63. package/demos/vue/src/assets/logo.svg +29 -0
  64. package/demos/vue/src/components/App.vue +308 -0
  65. package/demos/vue/src/components/Authenticate.vue +65 -0
  66. package/demos/vue/src/components/Loader.vue +230 -0
  67. package/demos/vue/src/main.js +92 -0
  68. package/docs/FAQ.md +28 -0
  69. package/docs/HISTORY.md +62 -0
  70. package/docs/acetate.config.js +223 -0
  71. package/docs/build-typedoc.js +301 -0
  72. package/docs/src/_layout.html +82 -0
  73. package/docs/src/api/_declaration.html +496 -0
  74. package/docs/src/api/_layout.html +127 -0
  75. package/docs/src/api/_package.html +13 -0
  76. package/docs/src/api/index.html +23 -0
  77. package/docs/src/guides/_layout.html +24 -0
  78. package/docs/src/guides/amd-requirejs-dojo.md +40 -0
  79. package/docs/src/guides/babel-and-rollup.md +30 -0
  80. package/docs/src/guides/babel-and-webpack.md +30 -0
  81. package/docs/src/guides/browser-authentication.md +31 -0
  82. package/docs/src/guides/browserify.md +9 -0
  83. package/docs/src/guides/cli-authentication.md +9 -0
  84. package/docs/src/guides/client-server-authentication.md +9 -0
  85. package/docs/src/guides/from-a-cdn.md +36 -0
  86. package/docs/src/guides/index.md +52 -0
  87. package/docs/src/guides/node.md +70 -0
  88. package/docs/src/guides/package-overview.md +8 -0
  89. package/docs/src/guides/server-authentication.md +9 -0
  90. package/docs/src/guides/typescript-and-webpack.md +9 -0
  91. package/docs/src/img/icons.png +0 -0
  92. package/docs/src/img/icons@2x.png +0 -0
  93. package/docs/src/index.html +12 -0
  94. package/docs/src/js/api-search.js +112 -0
  95. package/docs/src/js/nav-toggle.js +41 -0
  96. package/docs/src/sass/_highlight.scss +96 -0
  97. package/docs/src/sass/_icons.scss +157 -0
  98. package/docs/src/sass/style.scss +169 -0
  99. package/jasmine.json +7 -0
  100. package/karma.conf.js +100 -0
  101. package/lerna.json +8 -0
  102. package/notes/README.md +88 -0
  103. package/package.json +88 -0
  104. package/packages/arcgis-rest-auth/README.md +64 -0
  105. package/packages/arcgis-rest-auth/package-lock.json +11 -0
  106. package/packages/arcgis-rest-auth/package.json +51 -0
  107. package/packages/arcgis-rest-auth/src/ApplicationSession.ts +109 -0
  108. package/packages/arcgis-rest-auth/src/UserSession.ts +873 -0
  109. package/packages/arcgis-rest-auth/src/authenticated-request-options.ts +24 -0
  110. package/packages/arcgis-rest-auth/src/fetch-token.ts +52 -0
  111. package/packages/arcgis-rest-auth/src/generate-token.ts +39 -0
  112. package/packages/arcgis-rest-auth/src/index.ts +8 -0
  113. package/packages/arcgis-rest-auth/test/ApplicationSession.test.ts +124 -0
  114. package/packages/arcgis-rest-auth/test/UserSession.test.ts +995 -0
  115. package/packages/arcgis-rest-auth/test/fetchToken.test.ts +112 -0
  116. package/packages/arcgis-rest-auth/test/generateToken.test.ts +130 -0
  117. package/packages/arcgis-rest-auth/test/utils.ts +14 -0
  118. package/packages/arcgis-rest-auth/tsconfig.json +6 -0
  119. package/packages/arcgis-rest-common-types/README.md +61 -0
  120. package/packages/arcgis-rest-common-types/package.json +38 -0
  121. package/packages/arcgis-rest-common-types/src/group.ts +54 -0
  122. package/packages/arcgis-rest-common-types/src/index.ts +467 -0
  123. package/packages/arcgis-rest-common-types/src/item.ts +45 -0
  124. package/packages/arcgis-rest-common-types/src/webmap.ts +1232 -0
  125. package/packages/arcgis-rest-common-types/tsconfig.json +11 -0
  126. package/packages/arcgis-rest-feature-service/README.md +70 -0
  127. package/packages/arcgis-rest-feature-service/package-lock.json +11 -0
  128. package/packages/arcgis-rest-feature-service/package.json +50 -0
  129. package/packages/arcgis-rest-feature-service/src/add.ts +81 -0
  130. package/packages/arcgis-rest-feature-service/src/addAttachment.ts +65 -0
  131. package/packages/arcgis-rest-feature-service/src/delete.ts +85 -0
  132. package/packages/arcgis-rest-feature-service/src/deleteAttachments.ts +68 -0
  133. package/packages/arcgis-rest-feature-service/src/getAttachments.ts +64 -0
  134. package/packages/arcgis-rest-feature-service/src/helpers.ts +80 -0
  135. package/packages/arcgis-rest-feature-service/src/index.ts +12 -0
  136. package/packages/arcgis-rest-feature-service/src/query.ts +172 -0
  137. package/packages/arcgis-rest-feature-service/src/queryRelated.ts +91 -0
  138. package/packages/arcgis-rest-feature-service/src/update.ts +81 -0
  139. package/packages/arcgis-rest-feature-service/src/updateAttachment.ts +74 -0
  140. package/packages/arcgis-rest-feature-service/test/attachments.test.ts +203 -0
  141. package/packages/arcgis-rest-feature-service/test/features.test.ts +252 -0
  142. package/packages/arcgis-rest-feature-service/test/mocks/feature.ts +279 -0
  143. package/packages/arcgis-rest-feature-service/test/mocks/foo.txt +1 -0
  144. package/packages/arcgis-rest-feature-service/tsconfig.json +6 -0
  145. package/packages/arcgis-rest-feature-service-admin/README.md +66 -0
  146. package/packages/arcgis-rest-feature-service-admin/package-lock.json +11 -0
  147. package/packages/arcgis-rest-feature-service-admin/package.json +53 -0
  148. package/packages/arcgis-rest-feature-service-admin/src/addTo.ts +70 -0
  149. package/packages/arcgis-rest-feature-service-admin/src/create.ts +195 -0
  150. package/packages/arcgis-rest-feature-service-admin/src/index.ts +2 -0
  151. package/packages/arcgis-rest-feature-service-admin/test/addTo.test.ts +310 -0
  152. package/packages/arcgis-rest-feature-service-admin/test/create.test.ts +412 -0
  153. package/packages/arcgis-rest-feature-service-admin/test/mocks/move.ts +14 -0
  154. package/packages/arcgis-rest-feature-service-admin/test/mocks/service.ts +72 -0
  155. package/packages/arcgis-rest-feature-service-admin/tsconfig.json +6 -0
  156. package/packages/arcgis-rest-geocoder/README.md +79 -0
  157. package/packages/arcgis-rest-geocoder/package-lock.json +11 -0
  158. package/packages/arcgis-rest-geocoder/package.json +52 -0
  159. package/packages/arcgis-rest-geocoder/src/bulk.ts +102 -0
  160. package/packages/arcgis-rest-geocoder/src/geocode.ts +117 -0
  161. package/packages/arcgis-rest-geocoder/src/helpers.ts +79 -0
  162. package/packages/arcgis-rest-geocoder/src/index.ts +8 -0
  163. package/packages/arcgis-rest-geocoder/src/reverse.ts +84 -0
  164. package/packages/arcgis-rest-geocoder/src/suggest.ts +72 -0
  165. package/packages/arcgis-rest-geocoder/test/bulk.test.ts +113 -0
  166. package/packages/arcgis-rest-geocoder/test/geocode.test.ts +121 -0
  167. package/packages/arcgis-rest-geocoder/test/helpers.test.ts +113 -0
  168. package/packages/arcgis-rest-geocoder/test/mocks/responses.ts +591 -0
  169. package/packages/arcgis-rest-geocoder/test/reverse.test.ts +126 -0
  170. package/packages/arcgis-rest-geocoder/test/suggest.test.ts +77 -0
  171. package/packages/arcgis-rest-geocoder/tsconfig.json +6 -0
  172. package/packages/arcgis-rest-groups/README.md +64 -0
  173. package/packages/arcgis-rest-groups/package-lock.json +11 -0
  174. package/packages/arcgis-rest-groups/package.json +52 -0
  175. package/packages/arcgis-rest-groups/src/create.ts +34 -0
  176. package/packages/arcgis-rest-groups/src/get.ts +95 -0
  177. package/packages/arcgis-rest-groups/src/helpers.ts +26 -0
  178. package/packages/arcgis-rest-groups/src/index.ts +11 -0
  179. package/packages/arcgis-rest-groups/src/notification.ts +77 -0
  180. package/packages/arcgis-rest-groups/src/protect.ts +40 -0
  181. package/packages/arcgis-rest-groups/src/remove.ts +23 -0
  182. package/packages/arcgis-rest-groups/src/search.ts +64 -0
  183. package/packages/arcgis-rest-groups/src/update.ts +36 -0
  184. package/packages/arcgis-rest-groups/test/crud.test.ts +104 -0
  185. package/packages/arcgis-rest-groups/test/get.test.ts +101 -0
  186. package/packages/arcgis-rest-groups/test/mocks/responses.ts +141 -0
  187. package/packages/arcgis-rest-groups/test/notification.test.ts +102 -0
  188. package/packages/arcgis-rest-groups/test/protect.test.ts +64 -0
  189. package/packages/arcgis-rest-groups/test/search.test.ts +85 -0
  190. package/packages/arcgis-rest-groups/tsconfig.json +6 -0
  191. package/packages/arcgis-rest-items/README.md +66 -0
  192. package/packages/arcgis-rest-items/package-lock.json +11 -0
  193. package/packages/arcgis-rest-items/package.json +52 -0
  194. package/packages/arcgis-rest-items/src/add.ts +103 -0
  195. package/packages/arcgis-rest-items/src/create.ts +110 -0
  196. package/packages/arcgis-rest-items/src/get.ts +79 -0
  197. package/packages/arcgis-rest-items/src/helpers.ts +147 -0
  198. package/packages/arcgis-rest-items/src/index.ts +11 -0
  199. package/packages/arcgis-rest-items/src/protect.ts +38 -0
  200. package/packages/arcgis-rest-items/src/remove.ts +58 -0
  201. package/packages/arcgis-rest-items/src/search.ts +78 -0
  202. package/packages/arcgis-rest-items/src/update.ts +134 -0
  203. package/packages/arcgis-rest-items/test/add.test.ts +256 -0
  204. package/packages/arcgis-rest-items/test/create.test.ts +371 -0
  205. package/packages/arcgis-rest-items/test/get.test.ts +181 -0
  206. package/packages/arcgis-rest-items/test/mocks/foo.zip +0 -0
  207. package/packages/arcgis-rest-items/test/mocks/item.ts +33 -0
  208. package/packages/arcgis-rest-items/test/mocks/resources.ts +31 -0
  209. package/packages/arcgis-rest-items/test/mocks/search.ts +63 -0
  210. package/packages/arcgis-rest-items/test/protect.test.ts +122 -0
  211. package/packages/arcgis-rest-items/test/remove.test.ts +161 -0
  212. package/packages/arcgis-rest-items/test/search.test.ts +159 -0
  213. package/packages/arcgis-rest-items/test/update.test.ts +450 -0
  214. package/packages/arcgis-rest-items/tsconfig.json +6 -0
  215. package/packages/arcgis-rest-request/README.md +65 -0
  216. package/packages/arcgis-rest-request/package-lock.json +11 -0
  217. package/packages/arcgis-rest-request/package.json +42 -0
  218. package/packages/arcgis-rest-request/src/index.ts +13 -0
  219. package/packages/arcgis-rest-request/src/request.ts +293 -0
  220. package/packages/arcgis-rest-request/src/utils/ArcGISAuthError.ts +67 -0
  221. package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +76 -0
  222. package/packages/arcgis-rest-request/src/utils/ErrorTypes.ts +29 -0
  223. package/packages/arcgis-rest-request/src/utils/check-for-errors.ts +65 -0
  224. package/packages/arcgis-rest-request/src/utils/encode-form-data.ts +34 -0
  225. package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +23 -0
  226. package/packages/arcgis-rest-request/src/utils/get-portal-url.ts +25 -0
  227. package/packages/arcgis-rest-request/src/utils/get-portal.ts +45 -0
  228. package/packages/arcgis-rest-request/src/utils/process-params.ts +99 -0
  229. package/packages/arcgis-rest-request/test/mocks/errors.ts +68 -0
  230. package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +13 -0
  231. package/packages/arcgis-rest-request/test/mocks/portal.ts +112 -0
  232. package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +41 -0
  233. package/packages/arcgis-rest-request/test/mocks/webmap.ts +41 -0
  234. package/packages/arcgis-rest-request/test/request.test.ts +299 -0
  235. package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +170 -0
  236. package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +51 -0
  237. package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +111 -0
  238. package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +133 -0
  239. package/packages/arcgis-rest-request/test/utils/get-portal-url.test.ts +37 -0
  240. package/packages/arcgis-rest-request/test/utils/portal.test.ts +97 -0
  241. package/packages/arcgis-rest-request/test/utils/process-params.test.ts +193 -0
  242. package/packages/arcgis-rest-request/tsconfig.json +6 -0
  243. package/packages/arcgis-rest-sharing/README.md +67 -0
  244. package/packages/arcgis-rest-sharing/package-lock.json +11 -0
  245. package/packages/arcgis-rest-sharing/package.json +57 -0
  246. package/packages/arcgis-rest-sharing/src/access.ts +85 -0
  247. package/packages/arcgis-rest-sharing/src/group-sharing.ts +211 -0
  248. package/packages/arcgis-rest-sharing/src/helpers.ts +82 -0
  249. package/packages/arcgis-rest-sharing/src/index.ts +5 -0
  250. package/packages/arcgis-rest-sharing/test/access.test.ts +154 -0
  251. package/packages/arcgis-rest-sharing/test/group-sharing.test.ts +566 -0
  252. package/packages/arcgis-rest-sharing/test/helpers.test.ts +55 -0
  253. package/packages/arcgis-rest-sharing/test/mocks/sharing.ts +18 -0
  254. package/packages/arcgis-rest-sharing/tsconfig.json +6 -0
  255. package/packages/arcgis-rest-users/README.md +71 -0
  256. package/packages/arcgis-rest-users/package-lock.json +11 -0
  257. package/packages/arcgis-rest-users/package.json +51 -0
  258. package/packages/arcgis-rest-users/src/get.ts +69 -0
  259. package/packages/arcgis-rest-users/src/index.ts +6 -0
  260. package/packages/arcgis-rest-users/src/invitation.ts +166 -0
  261. package/packages/arcgis-rest-users/src/notification.ts +73 -0
  262. package/packages/arcgis-rest-users/test/get.test.ts +99 -0
  263. package/packages/arcgis-rest-users/test/invitation.test.ts +169 -0
  264. package/packages/arcgis-rest-users/test/mocks/invitation.ts +70 -0
  265. package/packages/arcgis-rest-users/test/mocks/notification.ts +34 -0
  266. package/packages/arcgis-rest-users/test/mocks/user.ts +173 -0
  267. package/packages/arcgis-rest-users/test/notification.test.ts +83 -0
  268. package/packages/arcgis-rest-users/tsconfig.json +6 -0
  269. package/support/changelog.js +394 -0
  270. package/support/deploy-doc-site.js +16 -0
  271. package/support/publish.sh +43 -0
  272. package/support/test-helpers.js +8 -0
  273. package/tsconfig.json +69 -0
  274. package/tslint.json +15 -0
  275. package/umd-base-profile.js +82 -0
  276. 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,2 @@
1
+ export * from "./create";
2
+ export * from "./addTo";
@@ -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
+ });