impeditmaiores 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (421) hide show
  1. package/.prettierignore +2 -0
  2. package/.travis.yml +35 -0
  3. package/.vscode/launch.json +24 -0
  4. package/.vscode/settings.json +3 -0
  5. package/codecov.yml +7 -0
  6. package/demos/ago-node-cli/README.md +29 -0
  7. package/demos/ago-node-cli/ago.js +33 -0
  8. package/demos/ago-node-cli/index.js +11 -0
  9. package/demos/ago-node-cli/lib/item-export-command.js +48 -0
  10. package/demos/ago-node-cli/lib/item-search-command.js +35 -0
  11. package/demos/ago-node-cli/package-lock.json +152 -0
  12. package/demos/ago-node-cli/package.json +30 -0
  13. package/demos/attachments/README.md +5 -0
  14. package/demos/attachments/index.html +165 -0
  15. package/demos/attachments/package-lock.json +182 -0
  16. package/demos/attachments/package.json +18 -0
  17. package/demos/batch-geocoder-node/NYC_Restaurant_Inspection_Results.csv +100 -0
  18. package/demos/batch-geocoder-node/README.md +15 -0
  19. package/demos/batch-geocoder-node/batch-geocode.js +115 -0
  20. package/demos/batch-geocoder-node/config-template.js +18 -0
  21. package/demos/batch-geocoder-node/package-lock.json +81 -0
  22. package/demos/batch-geocoder-node/package.json +37 -0
  23. package/demos/express/README.md +15 -0
  24. package/demos/express/config.json.template +3 -0
  25. package/demos/express/package-lock.json +413 -0
  26. package/demos/express/package.json +18 -0
  27. package/demos/express/server.js +33 -0
  28. package/demos/feature-service-browser/README.md +6 -0
  29. package/demos/feature-service-browser/index.html +122 -0
  30. package/demos/feature-service-browser/package-lock.json +182 -0
  31. package/demos/feature-service-browser/package.json +18 -0
  32. package/demos/geocoder-browser/README.md +10 -0
  33. package/demos/geocoder-browser/config.js.template +1 -0
  34. package/demos/geocoder-browser/index.html +131 -0
  35. package/demos/geocoder-browser/package-lock.json +182 -0
  36. package/demos/geocoder-browser/package.json +19 -0
  37. package/demos/geocoder-browser/post-sign-in.html +25 -0
  38. package/demos/jsapi-integration/README.md +25 -0
  39. package/demos/jsapi-integration/config.js +6 -0
  40. package/demos/jsapi-integration/index.html +89 -0
  41. package/demos/jsapi-integration/package-lock.json +184 -0
  42. package/demos/jsapi-integration/package.json +19 -0
  43. package/demos/node-cli-item-management/README.md +10 -0
  44. package/demos/node-cli-item-management/index.js +238 -0
  45. package/demos/node-cli-item-management/package-lock.json +152 -0
  46. package/demos/node-cli-item-management/package.json +27 -0
  47. package/demos/node-cli-item-management/screenshot.png +0 -0
  48. package/demos/oauth2-browser/README.md +14 -0
  49. package/demos/oauth2-browser/authenticate.html +30 -0
  50. package/demos/oauth2-browser/config.js.template +6 -0
  51. package/demos/oauth2-browser/index.html +211 -0
  52. package/demos/oauth2-browser/logo.svg +4 -0
  53. package/demos/oauth2-browser/package-lock.json +224 -0
  54. package/demos/oauth2-browser/package.json +18 -0
  55. package/demos/oauth2-browser/style.css +36 -0
  56. package/demos/oauth2-browser-retry/README.md +25 -0
  57. package/demos/oauth2-browser-retry/authenticate.html +22 -0
  58. package/demos/oauth2-browser-retry/index.html +116 -0
  59. package/demos/oauth2-browser-retry/logo.svg +4 -0
  60. package/demos/stream-response-to-file/README.md +7 -0
  61. package/demos/stream-response-to-file/index.js +36 -0
  62. package/demos/stream-response-to-file/output/.gitkeep +0 -0
  63. package/demos/stream-response-to-file/package-lock.json +60 -0
  64. package/demos/stream-response-to-file/package.json +33 -0
  65. package/demos/tree-shaking-rollup/.babelrc +3 -0
  66. package/demos/tree-shaking-rollup/README.md +9 -0
  67. package/demos/tree-shaking-rollup/index.html +11 -0
  68. package/demos/tree-shaking-rollup/package-lock.json +2225 -0
  69. package/demos/tree-shaking-rollup/package.json +25 -0
  70. package/demos/tree-shaking-rollup/rollup.config.js +17 -0
  71. package/demos/tree-shaking-rollup/src/index.js +8 -0
  72. package/demos/tree-shaking-webpack/README.md +8 -0
  73. package/demos/tree-shaking-webpack/index.html +11 -0
  74. package/demos/tree-shaking-webpack/package-lock.json +4614 -0
  75. package/demos/tree-shaking-webpack/package.json +24 -0
  76. package/demos/tree-shaking-webpack/src/index.js +10 -0
  77. package/demos/tree-shaking-webpack/webpack.config.js +27 -0
  78. package/demos/vue/.env.example +11 -0
  79. package/demos/vue/.eslintrc.js +17 -0
  80. package/demos/vue/.postcssrc.js +5 -0
  81. package/demos/vue/README.md +17 -0
  82. package/demos/vue/babel.config.js +3 -0
  83. package/demos/vue/package-lock.json +11342 -0
  84. package/demos/vue/package.json +33 -0
  85. package/demos/vue/public/favicon.ico +0 -0
  86. package/demos/vue/public/index.html +24 -0
  87. package/demos/vue/src/assets/logo.svg +29 -0
  88. package/demos/vue/src/components/App.vue +305 -0
  89. package/demos/vue/src/components/Authenticate.vue +65 -0
  90. package/demos/vue/src/components/Loader.vue +230 -0
  91. package/demos/vue/src/main.js +92 -0
  92. package/demos/webmap-checker-sapper/.env.example +5 -0
  93. package/demos/webmap-checker-sapper/README.md +123 -0
  94. package/demos/webmap-checker-sapper/appveyor.yml +18 -0
  95. package/demos/webmap-checker-sapper/cypress/fixtures/example.json +5 -0
  96. package/demos/webmap-checker-sapper/cypress/integration/spec.js +19 -0
  97. package/demos/webmap-checker-sapper/cypress/plugins/index.js +17 -0
  98. package/demos/webmap-checker-sapper/cypress/support/commands.js +25 -0
  99. package/demos/webmap-checker-sapper/cypress/support/index.js +20 -0
  100. package/demos/webmap-checker-sapper/cypress.json +4 -0
  101. package/demos/webmap-checker-sapper/package-lock.json +3870 -0
  102. package/demos/webmap-checker-sapper/package.json +50 -0
  103. package/demos/webmap-checker-sapper/rollup.config.js +87 -0
  104. package/demos/webmap-checker-sapper/src/client.js +20 -0
  105. package/demos/webmap-checker-sapper/src/components/LayerStatus.html +108 -0
  106. package/demos/webmap-checker-sapper/src/components/Nav.html +21 -0
  107. package/demos/webmap-checker-sapper/src/components/WebMap.html +62 -0
  108. package/demos/webmap-checker-sapper/src/routes/_error.html +41 -0
  109. package/demos/webmap-checker-sapper/src/routes/_layout.html +21 -0
  110. package/demos/webmap-checker-sapper/src/routes/auth/authorize.js +18 -0
  111. package/demos/webmap-checker-sapper/src/routes/auth/exchange-token.js +20 -0
  112. package/demos/webmap-checker-sapper/src/routes/auth/post-sign-in.js +24 -0
  113. package/demos/webmap-checker-sapper/src/routes/auth/sign-out.js +10 -0
  114. package/demos/webmap-checker-sapper/src/routes/index.html +20 -0
  115. package/demos/webmap-checker-sapper/src/routes/webmaps/[webmapId].html +83 -0
  116. package/demos/webmap-checker-sapper/src/routes/webmaps/index.html +59 -0
  117. package/demos/webmap-checker-sapper/src/server.js +101 -0
  118. package/demos/webmap-checker-sapper/src/service-worker.js +82 -0
  119. package/demos/webmap-checker-sapper/src/template.html +33 -0
  120. package/demos/webmap-checker-sapper/src/userInfoMiddleware.js +21 -0
  121. package/demos/webmap-checker-sapper/src/utils.js +33 -0
  122. package/demos/webmap-checker-sapper/static/favicon.png +0 -0
  123. package/demos/webmap-checker-sapper/static/global.css +36 -0
  124. package/demos/webmap-checker-sapper/static/manifest.json +20 -0
  125. package/demos/webmap-checker-sapper/static/svelte-logo-192.png +0 -0
  126. package/demos/webmap-checker-sapper/static/svelte-logo-512.png +0 -0
  127. package/docs/FAQ.md +48 -0
  128. package/docs/HISTORY.md +62 -0
  129. package/docs/acetate.config.js +262 -0
  130. package/docs/build-typedoc.js +434 -0
  131. package/docs/generate-srihashes.js +53 -0
  132. package/docs/src/_layout.html +86 -0
  133. package/docs/src/api/_declaration.html +600 -0
  134. package/docs/src/api/_layout.html +204 -0
  135. package/docs/src/api/_package.html +38 -0
  136. package/docs/src/api/index.html +16 -0
  137. package/docs/src/guides/_layout.html +24 -0
  138. package/docs/src/guides/amd-requirejs-dojo.md +40 -0
  139. package/docs/src/guides/browser-authentication.md +41 -0
  140. package/docs/src/guides/bundlers.md +52 -0
  141. package/docs/src/guides/cli-authentication.md +9 -0
  142. package/docs/src/guides/client-server-authentication.md +9 -0
  143. package/docs/src/guides/embedded-apps.md +93 -0
  144. package/docs/src/guides/from-a-cdn.md +38 -0
  145. package/docs/src/guides/index.md +59 -0
  146. package/docs/src/guides/node.md +87 -0
  147. package/docs/src/guides/package-overview.md +111 -0
  148. package/docs/src/guides/server-authentication.md +9 -0
  149. package/docs/src/guides/whats-new-v2-0.md +305 -0
  150. package/docs/src/img/icons.png +0 -0
  151. package/docs/src/img/icons@2x.png +0 -0
  152. package/docs/src/index.html +12 -0
  153. package/docs/src/js/api-search.js +112 -0
  154. package/docs/src/js/nav-toggle.js +41 -0
  155. package/docs/src/sass/_highlight.scss +96 -0
  156. package/docs/src/sass/_icons.scss +157 -0
  157. package/docs/src/sass/style.scss +242 -0
  158. package/docs/src/srihashes.json +12 -0
  159. package/jasmine.json +7 -0
  160. package/karma.conf.js +106 -0
  161. package/lerna.json +8 -0
  162. package/notes/README.md +68 -0
  163. package/package.json +87 -0
  164. package/packages/arcgis-rest-auth/README.md +71 -0
  165. package/packages/arcgis-rest-auth/package-lock.json +11 -0
  166. package/packages/arcgis-rest-auth/package.json +69 -0
  167. package/packages/arcgis-rest-auth/src/ApplicationSession.ts +122 -0
  168. package/packages/arcgis-rest-auth/src/UserSession.ts +1206 -0
  169. package/packages/arcgis-rest-auth/src/app-tokens.ts +91 -0
  170. package/packages/arcgis-rest-auth/src/authenticated-request-options.ts +24 -0
  171. package/packages/arcgis-rest-auth/src/federation-utils.ts +85 -0
  172. package/packages/arcgis-rest-auth/src/fetch-token.ts +50 -0
  173. package/packages/arcgis-rest-auth/src/generate-token.ts +35 -0
  174. package/packages/arcgis-rest-auth/src/index.ts +9 -0
  175. package/packages/arcgis-rest-auth/src/validate-app-access.ts +68 -0
  176. package/packages/arcgis-rest-auth/test/ApplicationSession.test.ts +124 -0
  177. package/packages/arcgis-rest-auth/test/UserSession.test.ts +1807 -0
  178. package/packages/arcgis-rest-auth/test/app-tokens.test.ts +91 -0
  179. package/packages/arcgis-rest-auth/test/federation-utils.test.ts +323 -0
  180. package/packages/arcgis-rest-auth/test/fetchToken.test.ts +112 -0
  181. package/packages/arcgis-rest-auth/test/generateToken.test.ts +102 -0
  182. package/packages/arcgis-rest-auth/test/utils.ts +14 -0
  183. package/packages/arcgis-rest-auth/test/validate-app-access.test.ts +46 -0
  184. package/packages/arcgis-rest-auth/tsconfig.json +6 -0
  185. package/packages/arcgis-rest-feature-layer/README.md +77 -0
  186. package/packages/arcgis-rest-feature-layer/package-lock.json +11 -0
  187. package/packages/arcgis-rest-feature-layer/package.json +64 -0
  188. package/packages/arcgis-rest-feature-layer/src/add.ts +56 -0
  189. package/packages/arcgis-rest-feature-layer/src/addAttachment.ts +53 -0
  190. package/packages/arcgis-rest-feature-layer/src/applyEdits.ts +90 -0
  191. package/packages/arcgis-rest-feature-layer/src/decodeValues.ts +124 -0
  192. package/packages/arcgis-rest-feature-layer/src/delete.ts +61 -0
  193. package/packages/arcgis-rest-feature-layer/src/deleteAttachments.ts +52 -0
  194. package/packages/arcgis-rest-feature-layer/src/getAttachments.ts +55 -0
  195. package/packages/arcgis-rest-feature-layer/src/getLayer.ts +24 -0
  196. package/packages/arcgis-rest-feature-layer/src/getService.ts +26 -0
  197. package/packages/arcgis-rest-feature-layer/src/helpers.ts +79 -0
  198. package/packages/arcgis-rest-feature-layer/src/index.ts +31 -0
  199. package/packages/arcgis-rest-feature-layer/src/query.ts +204 -0
  200. package/packages/arcgis-rest-feature-layer/src/queryRelated.ts +89 -0
  201. package/packages/arcgis-rest-feature-layer/src/update.ts +56 -0
  202. package/packages/arcgis-rest-feature-layer/src/updateAttachment.ts +59 -0
  203. package/packages/arcgis-rest-feature-layer/test/attachments.test.ts +200 -0
  204. package/packages/arcgis-rest-feature-layer/test/crud.test.ts +195 -0
  205. package/packages/arcgis-rest-feature-layer/test/decodeValues.test.ts +67 -0
  206. package/packages/arcgis-rest-feature-layer/test/getLayer.test.ts +31 -0
  207. package/packages/arcgis-rest-feature-layer/test/getService.test.ts +31 -0
  208. package/packages/arcgis-rest-feature-layer/test/mocks/cvdQueryResponse.ts +225 -0
  209. package/packages/arcgis-rest-feature-layer/test/mocks/feature.ts +302 -0
  210. package/packages/arcgis-rest-feature-layer/test/mocks/fields.ts +779 -0
  211. package/packages/arcgis-rest-feature-layer/test/mocks/foo.txt +1 -0
  212. package/packages/arcgis-rest-feature-layer/test/mocks/service.ts +398 -0
  213. package/packages/arcgis-rest-feature-layer/test/query.test.ts +167 -0
  214. package/packages/arcgis-rest-feature-layer/tsconfig.json +6 -0
  215. package/packages/arcgis-rest-geocoding/README.md +86 -0
  216. package/packages/arcgis-rest-geocoding/package-lock.json +11 -0
  217. package/packages/arcgis-rest-geocoding/package.json +64 -0
  218. package/packages/arcgis-rest-geocoding/src/bulk.ts +104 -0
  219. package/packages/arcgis-rest-geocoding/src/geocode.ts +133 -0
  220. package/packages/arcgis-rest-geocoding/src/helpers.ts +54 -0
  221. package/packages/arcgis-rest-geocoding/src/index.ts +15 -0
  222. package/packages/arcgis-rest-geocoding/src/reverse.ts +84 -0
  223. package/packages/arcgis-rest-geocoding/src/suggest.ts +45 -0
  224. package/packages/arcgis-rest-geocoding/test/bulk.test.ts +194 -0
  225. package/packages/arcgis-rest-geocoding/test/geocode.test.ts +249 -0
  226. package/packages/arcgis-rest-geocoding/test/helpers.test.ts +85 -0
  227. package/packages/arcgis-rest-geocoding/test/mocks/responses.ts +637 -0
  228. package/packages/arcgis-rest-geocoding/test/reverse.test.ts +126 -0
  229. package/packages/arcgis-rest-geocoding/test/suggest.test.ts +53 -0
  230. package/packages/arcgis-rest-geocoding/tsconfig.json +6 -0
  231. package/packages/arcgis-rest-portal/README.md +73 -0
  232. package/packages/arcgis-rest-portal/package-lock.json +11 -0
  233. package/packages/arcgis-rest-portal/package.json +64 -0
  234. package/packages/arcgis-rest-portal/src/groups/add-users.ts +140 -0
  235. package/packages/arcgis-rest-portal/src/groups/create.ts +43 -0
  236. package/packages/arcgis-rest-portal/src/groups/get.ts +184 -0
  237. package/packages/arcgis-rest-portal/src/groups/helpers.ts +14 -0
  238. package/packages/arcgis-rest-portal/src/groups/invite-users.ts +127 -0
  239. package/packages/arcgis-rest-portal/src/groups/join.ts +57 -0
  240. package/packages/arcgis-rest-portal/src/groups/notification.ts +77 -0
  241. package/packages/arcgis-rest-portal/src/groups/protect.ts +56 -0
  242. package/packages/arcgis-rest-portal/src/groups/remove-users.ts +76 -0
  243. package/packages/arcgis-rest-portal/src/groups/remove.ts +32 -0
  244. package/packages/arcgis-rest-portal/src/groups/search.ts +47 -0
  245. package/packages/arcgis-rest-portal/src/groups/update-user-membership.ts +63 -0
  246. package/packages/arcgis-rest-portal/src/groups/update.ts +39 -0
  247. package/packages/arcgis-rest-portal/src/index.ts +66 -0
  248. package/packages/arcgis-rest-portal/src/items/add.ts +138 -0
  249. package/packages/arcgis-rest-portal/src/items/content.ts +67 -0
  250. package/packages/arcgis-rest-portal/src/items/create.ts +150 -0
  251. package/packages/arcgis-rest-portal/src/items/export.ts +80 -0
  252. package/packages/arcgis-rest-portal/src/items/get.ts +437 -0
  253. package/packages/arcgis-rest-portal/src/items/helpers.ts +275 -0
  254. package/packages/arcgis-rest-portal/src/items/protect.ts +41 -0
  255. package/packages/arcgis-rest-portal/src/items/reassign.ts +61 -0
  256. package/packages/arcgis-rest-portal/src/items/remove.ts +135 -0
  257. package/packages/arcgis-rest-portal/src/items/search.ts +25 -0
  258. package/packages/arcgis-rest-portal/src/items/update.ts +184 -0
  259. package/packages/arcgis-rest-portal/src/items/upload.ts +125 -0
  260. package/packages/arcgis-rest-portal/src/orgs/notification.ts +131 -0
  261. package/packages/arcgis-rest-portal/src/sharing/access.ts +84 -0
  262. package/packages/arcgis-rest-portal/src/sharing/helpers.ts +81 -0
  263. package/packages/arcgis-rest-portal/src/sharing/is-item-shared-with-group.ts +42 -0
  264. package/packages/arcgis-rest-portal/src/sharing/share-item-with-group.ts +319 -0
  265. package/packages/arcgis-rest-portal/src/sharing/unshare-item-with-group.ts +105 -0
  266. package/packages/arcgis-rest-portal/src/users/get-user-tags.ts +52 -0
  267. package/packages/arcgis-rest-portal/src/users/get-user-url.ts +18 -0
  268. package/packages/arcgis-rest-portal/src/users/get-user.ts +58 -0
  269. package/packages/arcgis-rest-portal/src/users/invitation.ts +156 -0
  270. package/packages/arcgis-rest-portal/src/users/notification.ts +68 -0
  271. package/packages/arcgis-rest-portal/src/users/search-users.ts +37 -0
  272. package/packages/arcgis-rest-portal/src/users/update.ts +66 -0
  273. package/packages/arcgis-rest-portal/src/util/SearchQueryBuilder.ts +374 -0
  274. package/packages/arcgis-rest-portal/src/util/array.ts +16 -0
  275. package/packages/arcgis-rest-portal/src/util/generic-search.ts +99 -0
  276. package/packages/arcgis-rest-portal/src/util/get-portal-settings.ts +45 -0
  277. package/packages/arcgis-rest-portal/src/util/get-portal-url.ts +27 -0
  278. package/packages/arcgis-rest-portal/src/util/get-portal.ts +52 -0
  279. package/packages/arcgis-rest-portal/src/util/get-subscription-info.ts +43 -0
  280. package/packages/arcgis-rest-portal/src/util/scrub-control-chars.ts +12 -0
  281. package/packages/arcgis-rest-portal/src/util/search.ts +42 -0
  282. package/packages/arcgis-rest-portal/test/groups/add-users.test.ts +239 -0
  283. package/packages/arcgis-rest-portal/test/groups/crud.test.ts +180 -0
  284. package/packages/arcgis-rest-portal/test/groups/get.test.ts +176 -0
  285. package/packages/arcgis-rest-portal/test/groups/invite-users.test.ts +149 -0
  286. package/packages/arcgis-rest-portal/test/groups/join.test.ts +72 -0
  287. package/packages/arcgis-rest-portal/test/groups/notification.test.ts +112 -0
  288. package/packages/arcgis-rest-portal/test/groups/protect.test.ts +72 -0
  289. package/packages/arcgis-rest-portal/test/groups/remove-users.test.ts +140 -0
  290. package/packages/arcgis-rest-portal/test/groups/search.test.ts +151 -0
  291. package/packages/arcgis-rest-portal/test/groups/update-user-membership.test.ts +62 -0
  292. package/packages/arcgis-rest-portal/test/items/add.test.ts +323 -0
  293. package/packages/arcgis-rest-portal/test/items/content.test.ts +156 -0
  294. package/packages/arcgis-rest-portal/test/items/create.test.ts +399 -0
  295. package/packages/arcgis-rest-portal/test/items/export.test.ts +122 -0
  296. package/packages/arcgis-rest-portal/test/items/get.test.ts +583 -0
  297. package/packages/arcgis-rest-portal/test/items/helpers.test.ts +60 -0
  298. package/packages/arcgis-rest-portal/test/items/protect.test.ts +122 -0
  299. package/packages/arcgis-rest-portal/test/items/reassign.test.ts +131 -0
  300. package/packages/arcgis-rest-portal/test/items/remove.test.ts +238 -0
  301. package/packages/arcgis-rest-portal/test/items/search.test.ts +272 -0
  302. package/packages/arcgis-rest-portal/test/items/update.test.ts +554 -0
  303. package/packages/arcgis-rest-portal/test/items/upload.test.ts +282 -0
  304. package/packages/arcgis-rest-portal/test/mocks/groups/responses.ts +208 -0
  305. package/packages/arcgis-rest-portal/test/mocks/items/foo.zip +0 -0
  306. package/packages/arcgis-rest-portal/test/mocks/items/item.ts +526 -0
  307. package/packages/arcgis-rest-portal/test/mocks/items/resources.ts +38 -0
  308. package/packages/arcgis-rest-portal/test/mocks/items/search.ts +121 -0
  309. package/packages/arcgis-rest-portal/test/mocks/portal/response.ts +126 -0
  310. package/packages/arcgis-rest-portal/test/mocks/portal/settings-response.ts +56 -0
  311. package/packages/arcgis-rest-portal/test/mocks/sharing/sharing.ts +18 -0
  312. package/packages/arcgis-rest-portal/test/mocks/users/invitation.ts +70 -0
  313. package/packages/arcgis-rest-portal/test/mocks/users/notification.ts +34 -0
  314. package/packages/arcgis-rest-portal/test/mocks/users/user-search.ts +388 -0
  315. package/packages/arcgis-rest-portal/test/mocks/users/user-tags.ts +5 -0
  316. package/packages/arcgis-rest-portal/test/mocks/users/user.ts +174 -0
  317. package/packages/arcgis-rest-portal/test/orgs/notification.test.ts +142 -0
  318. package/packages/arcgis-rest-portal/test/sharing/access.test.ts +162 -0
  319. package/packages/arcgis-rest-portal/test/sharing/helpers.test.ts +55 -0
  320. package/packages/arcgis-rest-portal/test/sharing/share-item-with-group.test.ts +1325 -0
  321. package/packages/arcgis-rest-portal/test/sharing/unshare-item-with-group.test.ts +288 -0
  322. package/packages/arcgis-rest-portal/test/users/get-user-tags.test.ts +71 -0
  323. package/packages/arcgis-rest-portal/test/users/get-user-url.test.ts +40 -0
  324. package/packages/arcgis-rest-portal/test/users/get-user.test.ts +90 -0
  325. package/packages/arcgis-rest-portal/test/users/invitation.test.ts +127 -0
  326. package/packages/arcgis-rest-portal/test/users/notification.test.ts +77 -0
  327. package/packages/arcgis-rest-portal/test/users/search.test.ts +42 -0
  328. package/packages/arcgis-rest-portal/test/users/update.test.ts +151 -0
  329. package/packages/arcgis-rest-portal/test/util/SearchQueryBuilder.test.ts +340 -0
  330. package/packages/arcgis-rest-portal/test/util/array.test.ts +30 -0
  331. package/packages/arcgis-rest-portal/test/util/get-portal-settings.test.ts +68 -0
  332. package/packages/arcgis-rest-portal/test/util/get-portal-url.test.ts +37 -0
  333. package/packages/arcgis-rest-portal/test/util/portal.test.ts +148 -0
  334. package/packages/arcgis-rest-portal/test/util/scrub-control-chars.test.ts +22 -0
  335. package/packages/arcgis-rest-portal/tsconfig.json +6 -0
  336. package/packages/arcgis-rest-request/README.md +72 -0
  337. package/packages/arcgis-rest-request/package-lock.json +11 -0
  338. package/packages/arcgis-rest-request/package.json +60 -0
  339. package/packages/arcgis-rest-request/src/index.ts +25 -0
  340. package/packages/arcgis-rest-request/src/request.ts +413 -0
  341. package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +76 -0
  342. package/packages/arcgis-rest-request/src/utils/ErrorTypes.ts +29 -0
  343. package/packages/arcgis-rest-request/src/utils/GrantTypes.ts +5 -0
  344. package/packages/arcgis-rest-request/src/utils/HTTPMethods.ts +6 -0
  345. package/packages/arcgis-rest-request/src/utils/IAuthenticationManager.ts +21 -0
  346. package/packages/arcgis-rest-request/src/utils/IFetchTokenParams.ts +11 -0
  347. package/packages/arcgis-rest-request/src/utils/IGenerateTokenParams.ts +9 -0
  348. package/packages/arcgis-rest-request/src/utils/IParamBuilder.ts +3 -0
  349. package/packages/arcgis-rest-request/src/utils/IParams.ts +6 -0
  350. package/packages/arcgis-rest-request/src/utils/IParamsBuilder.ts +5 -0
  351. package/packages/arcgis-rest-request/src/utils/IRequestOptions.ts +49 -0
  352. package/packages/arcgis-rest-request/src/utils/ITokenRequestOptions.ts +9 -0
  353. package/packages/arcgis-rest-request/src/utils/ResponseFormats.ts +10 -0
  354. package/packages/arcgis-rest-request/src/utils/append-custom-params.ts +49 -0
  355. package/packages/arcgis-rest-request/src/utils/clean-url.ts +20 -0
  356. package/packages/arcgis-rest-request/src/utils/decode-query-string.ts +27 -0
  357. package/packages/arcgis-rest-request/src/utils/encode-form-data.ts +38 -0
  358. package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +35 -0
  359. package/packages/arcgis-rest-request/src/utils/process-params.ts +108 -0
  360. package/packages/arcgis-rest-request/src/utils/retryAuthError.ts +10 -0
  361. package/packages/arcgis-rest-request/src/utils/warn.ts +11 -0
  362. package/packages/arcgis-rest-request/src/utils/with-options.ts +48 -0
  363. package/packages/arcgis-rest-request/test/mocks/errors.ts +76 -0
  364. package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +13 -0
  365. package/packages/arcgis-rest-request/test/mocks/param-builder.ts +7 -0
  366. package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +41 -0
  367. package/packages/arcgis-rest-request/test/mocks/webmap.ts +41 -0
  368. package/packages/arcgis-rest-request/test/request.test.ts +571 -0
  369. package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +191 -0
  370. package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +51 -0
  371. package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +111 -0
  372. package/packages/arcgis-rest-request/test/utils/clean-url.test.ts +50 -0
  373. package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +133 -0
  374. package/packages/arcgis-rest-request/test/utils/encode-query-string.test.ts +18 -0
  375. package/packages/arcgis-rest-request/test/utils/process-params.test.ts +205 -0
  376. package/packages/arcgis-rest-request/test/utils/with-options.test.ts +133 -0
  377. package/packages/arcgis-rest-request/tsconfig.json +4 -0
  378. package/packages/arcgis-rest-routing/README.md +75 -0
  379. package/packages/arcgis-rest-routing/package-lock.json +11 -0
  380. package/packages/arcgis-rest-routing/package.json +63 -0
  381. package/packages/arcgis-rest-routing/src/helpers.ts +16 -0
  382. package/packages/arcgis-rest-routing/src/index.ts +11 -0
  383. package/packages/arcgis-rest-routing/src/solveRoute.ts +124 -0
  384. package/packages/arcgis-rest-routing/test/mocks/responses.ts +825 -0
  385. package/packages/arcgis-rest-routing/test/solveRoute.test.ts +509 -0
  386. package/packages/arcgis-rest-routing/tsconfig.json +6 -0
  387. package/packages/arcgis-rest-service-admin/README.md +73 -0
  388. package/packages/arcgis-rest-service-admin/package-lock.json +11 -0
  389. package/packages/arcgis-rest-service-admin/package.json +65 -0
  390. package/packages/arcgis-rest-service-admin/src/addTo.ts +70 -0
  391. package/packages/arcgis-rest-service-admin/src/create.ts +189 -0
  392. package/packages/arcgis-rest-service-admin/src/index.ts +11 -0
  393. package/packages/arcgis-rest-service-admin/src/update.ts +50 -0
  394. package/packages/arcgis-rest-service-admin/test/addTo.test.ts +350 -0
  395. package/packages/arcgis-rest-service-admin/test/create.test.ts +294 -0
  396. package/packages/arcgis-rest-service-admin/test/mocks/layerDefinition.ts +79 -0
  397. package/packages/arcgis-rest-service-admin/test/mocks/service.ts +81 -0
  398. package/packages/arcgis-rest-service-admin/test/update.test.ts +115 -0
  399. package/packages/arcgis-rest-service-admin/tsconfig.json +6 -0
  400. package/packages/arcgis-rest-types/README.md +66 -0
  401. package/packages/arcgis-rest-types/package.json +54 -0
  402. package/packages/arcgis-rest-types/src/feature.ts +39 -0
  403. package/packages/arcgis-rest-types/src/geometry.ts +272 -0
  404. package/packages/arcgis-rest-types/src/group.ts +72 -0
  405. package/packages/arcgis-rest-types/src/index.ts +9 -0
  406. package/packages/arcgis-rest-types/src/item.ts +81 -0
  407. package/packages/arcgis-rest-types/src/service.ts +114 -0
  408. package/packages/arcgis-rest-types/src/statisticDefinition.ts +33 -0
  409. package/packages/arcgis-rest-types/src/symbol.ts +170 -0
  410. package/packages/arcgis-rest-types/src/user.ts +49 -0
  411. package/packages/arcgis-rest-types/src/webmap.ts +1367 -0
  412. package/packages/arcgis-rest-types/tsconfig.json +10 -0
  413. package/support/changelog.js +393 -0
  414. package/support/deploy-doc-site.js +16 -0
  415. package/support/dev.sh +6 -0
  416. package/support/publish.sh +47 -0
  417. package/support/test-helpers.js +9 -0
  418. package/tsconfig.json +63 -0
  419. package/tslint.json +16 -0
  420. package/umd-base-profile.js +81 -0
  421. package/umd-production-profile.js +13 -0
@@ -0,0 +1,70 @@
1
+ /* Copyright (c) 2018-2019 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { request, cleanUrl } from "@esri/arcgis-rest-request";
5
+ import { ILayer, ILayerDefinition, ITable } from "@esri/arcgis-rest-types";
6
+ import { IUserRequestOptions } from "@esri/arcgis-rest-auth";
7
+
8
+ export interface IAddToServiceDefinitionOptions extends IUserRequestOptions {
9
+ /**
10
+ * Layers to add
11
+ */
12
+ layers?: ILayer[] | ILayerDefinition[];
13
+ /**
14
+ * Tables to add
15
+ */
16
+ tables?: ITable[];
17
+ }
18
+
19
+ export interface IAddToServiceDefinitionItemSummary {
20
+ name: string;
21
+ id: any;
22
+ }
23
+
24
+ export interface IAddToServiceDefinitionResult {
25
+ layers?: IAddToServiceDefinitionItemSummary[];
26
+ tables?: IAddToServiceDefinitionItemSummary[];
27
+ success: boolean;
28
+ }
29
+
30
+ /**
31
+ * ```js
32
+ * import { addToServiceDefinition } from '@esri/arcgis-rest-service-admin';
33
+ * //
34
+ * addToServiceDefinition(serviceurl, {
35
+ * authentication: userSession,
36
+ * layers: [],
37
+ * tables: []
38
+ * });
39
+ * ```
40
+ * Add layer(s) and/or table(s) to a hosted feature service. See the [REST Documentation](https://developers.arcgis.com/rest/services-reference/add-to-definition-feature-service-.htm) for more information.
41
+ *
42
+ * @param url - URL of feature service
43
+ * @param requestOptions - Options for the request
44
+ * @returns A Promise that resolves with service layer and/or table details once the definition
45
+ * has been updated
46
+ */
47
+ export function addToServiceDefinition(
48
+ url: string,
49
+ requestOptions: IAddToServiceDefinitionOptions
50
+ ): Promise<IAddToServiceDefinitionResult> {
51
+ const adminUrl = `${cleanUrl(url).replace(
52
+ `/rest/services`,
53
+ `/rest/admin/services`
54
+ )}/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,189 @@
1
+ /* Copyright (c) 2018-2019 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { request } from "@esri/arcgis-rest-request";
5
+ import { IExtent, ISpatialReference } from "@esri/arcgis-rest-types";
6
+
7
+ import {
8
+ moveItem,
9
+ ICreateUpdateItemOptions,
10
+ determineOwner,
11
+ getPortalUrl
12
+ } from "@esri/arcgis-rest-portal";
13
+
14
+ /**
15
+ * A [`createParameters` JSON object for a new
16
+ * service](https://developers.arcgis.com/rest/users-groups-and-items/create-service.htm).
17
+ */
18
+ export interface ICreateServiceParams {
19
+ /**
20
+ * 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.
21
+ */
22
+ name: string;
23
+ /**
24
+ * Description given to the service.
25
+ */
26
+ serviceDescription?: string;
27
+ /**
28
+ * Indicates whether the data changes.
29
+ */
30
+ hasStaticData?: boolean;
31
+ /**
32
+ * A double value indicating any constraints enforced on query operations.
33
+ */
34
+ maxRecordCount?: number;
35
+ /**
36
+ * The formats in which query results are returned.
37
+ */
38
+ supportedQueryFormats?: string;
39
+ /**
40
+ * Specify feature service editing capabilities for Create, Delete, Query, Update, and Sync.
41
+ */
42
+ capabilities?: string;
43
+ /**
44
+ * A user-friendly description for the published dataset.
45
+ */
46
+ description?: string;
47
+ /**
48
+ * Copyright information associated with the dataset.
49
+ */
50
+ copyrightText?: string;
51
+ /**
52
+ * All layers added to a hosted feature service need to have the same spatial reference defined for
53
+ * the feature service. When creating a new empty service without specifying its spatial reference,
54
+ * the spatial reference of the hosted feature service is set to the first layer added to that
55
+ * feature service.
56
+ */
57
+ spatialReference?: ISpatialReference;
58
+ /**
59
+ * The initial extent set for the service.
60
+ */
61
+ initialExtent?: IExtent;
62
+ /**
63
+ * Indicates if updating the geometry of the service is permitted.
64
+ */
65
+ allowGeometryUpdates?: boolean;
66
+ /**
67
+ * Units used by the feature service
68
+ */
69
+ units?: string;
70
+ /**
71
+ * A JSON object specifying the properties of cross-site scripting prevention.
72
+ */
73
+ xssPreventionInfo?: any;
74
+ /**
75
+ * Editor tracking info.
76
+ */
77
+ editorTrackingInfo?: {
78
+ enableEditorTracking?: boolean;
79
+ enableOwnershipAccessControl?: boolean;
80
+ allowOthersToUpdate?: boolean;
81
+ allowOthersToDelete?: boolean;
82
+ allowOthersToQuery?: boolean;
83
+ allowAnonymousToUpdate?: boolean;
84
+ allowAnonymousToDelete?: boolean;
85
+ };
86
+ }
87
+
88
+ export interface ICreateServiceOptions extends ICreateUpdateItemOptions {
89
+ /**
90
+ * A JSON object specifying the properties of the newly-created service. See the [REST
91
+ * Documentation](https://developers.arcgis.com/rest/users-groups-and-items/working-with-users-groups-and-items.htm)
92
+ * for more information.
93
+ */
94
+ item: ICreateServiceParams;
95
+ /**
96
+ * Alphanumeric id of folder to house moved item. If null, empty, or "/", the destination is the
97
+ * root folder.
98
+ */
99
+ folderId?: string;
100
+ }
101
+
102
+ export interface ICreateServiceResult {
103
+ /**
104
+ * The encoded URL to the hosted service.
105
+ */
106
+ encodedServiceURL: string;
107
+
108
+ /**
109
+ * Indicates if this feature service represents a view.
110
+ */
111
+ isView: boolean;
112
+
113
+ /**
114
+ * The unique ID for this item.
115
+ */
116
+ itemId: string;
117
+
118
+ /**
119
+ * Name of the service item.
120
+ */
121
+ name: string;
122
+
123
+ /**
124
+ * The ID of the new service item.
125
+ */
126
+ serviceItemId: string;
127
+
128
+ /**
129
+ * The URL to the hosted service.
130
+ */
131
+ serviceurl: string;
132
+
133
+ /**
134
+ * The size of the item.
135
+ */
136
+ size: number;
137
+
138
+ /**
139
+ * Indicates if the operation was successful.
140
+ */
141
+ success: boolean;
142
+
143
+ /**
144
+ * The type of service created.
145
+ */
146
+ type: string;
147
+ }
148
+
149
+ /**
150
+ * ```js
151
+ * import {
152
+ * createFeatureService,
153
+ * addToServiceDefinition
154
+ * } from '@esri/arcgis-rest-service-admin';
155
+ * //
156
+ * createFeatureService({
157
+ * authentication: userSession,
158
+ * item: {
159
+ * "name": "NewEmptyService",
160
+ * "capabilities": "Create,Delete,Query,Update,Editing"
161
+ * }
162
+ * });
163
+ * ```
164
+ * Create a new [hosted feature service](https://developers.arcgis.com/rest/users-groups-and-items/create-service.htm). After the service has been created, call [`addToServiceDefinition()`](../addToServiceDefinition/) if you'd like to update it's schema.
165
+ * @param requestOptions - Options for the request. NOTE: `rawResponse` is not supported by this operation.
166
+ * @returns A Promise that resolves with service details once the service has been created
167
+ */
168
+ export function createFeatureService(
169
+ requestOptions: ICreateServiceOptions
170
+ ): Promise<ICreateServiceResult> {
171
+ return determineOwner(requestOptions).then(owner => {
172
+ const options: ICreateServiceOptions = {
173
+ ...requestOptions,
174
+ rawResponse: false
175
+ };
176
+ const baseUrl = `${getPortalUrl(requestOptions)}/content/users/${owner}`;
177
+ const folder = (!options.folderId || options.folderId === "/") ? "" : "/" + options.folderId;
178
+ const url = `${baseUrl}${folder}/createService`;
179
+
180
+ // Create the service
181
+ options.params = {
182
+ createParameters: options.item,
183
+ outputType: "featureService",
184
+ ...options.params
185
+ };
186
+
187
+ return request(url, options);
188
+ });
189
+ }
@@ -0,0 +1,11 @@
1
+ export * from "./create";
2
+ export * from "./addTo";
3
+ export * from "./update";
4
+ export {
5
+ IFeatureServiceDefinition,
6
+ IExtent,
7
+ ISpatialReference,
8
+ ILayer,
9
+ ILayerDefinition,
10
+ ITable
11
+ } from "@esri/arcgis-rest-types";
@@ -0,0 +1,50 @@
1
+ /* Copyright (c) 2018-2019 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { request, cleanUrl } from "@esri/arcgis-rest-request";
5
+ import { IFeatureServiceDefinition } from "@esri/arcgis-rest-types";
6
+ import { IUserRequestOptions } from "@esri/arcgis-rest-auth";
7
+
8
+ export interface IUpdateServiceDefinitionOptions extends IUserRequestOptions {
9
+ updateDefinition?: Partial<IFeatureServiceDefinition>;
10
+ }
11
+
12
+ export interface IUpdateServiceDefinitionResult {
13
+ success: boolean;
14
+ }
15
+
16
+ /**
17
+ * ```js
18
+ * import { updateServiceDefinition } from '@esri/arcgis-rest-service-admin';
19
+ * //
20
+ * updateServiceDefinition(serviceurl, {
21
+ * authentication: userSession,
22
+ * updateDefinition: serviceDefinition
23
+ * });
24
+ * ```
25
+ * Update a definition property in a hosted feature service. See the [REST Documentation](https://developers.arcgis.com/rest/services-reference/update-definition-feature-service-.htm) for more information.
26
+ *
27
+ * @param url - URL of feature service
28
+ * @param requestOptions - Options for the request
29
+ * @returns A Promise that resolves with success or error
30
+ */
31
+ export function updateServiceDefinition(
32
+ url: string,
33
+ requestOptions: IUpdateServiceDefinitionOptions
34
+ ): Promise<IUpdateServiceDefinitionResult> {
35
+ const adminUrl = `${cleanUrl(url).replace(
36
+ `/rest/services`,
37
+ `/rest/admin/services`
38
+ )}/updateDefinition`;
39
+
40
+ requestOptions.params = {
41
+ updateDefinition: {},
42
+ ...requestOptions.params
43
+ };
44
+
45
+ if (requestOptions.updateDefinition) {
46
+ requestOptions.params.updateDefinition = requestOptions.updateDefinition;
47
+ }
48
+
49
+ return request(adminUrl, requestOptions);
50
+ }
@@ -0,0 +1,350 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import * as fetchMock from "fetch-mock";
5
+
6
+ import { UserSession } from "@esri/arcgis-rest-auth";
7
+ import { TOMORROW } from "@esri/arcgis-rest-auth/test/utils";
8
+ import { encodeParam, ErrorTypes } from "@esri/arcgis-rest-request";
9
+ import { ILayer, ITable } from "@esri/arcgis-rest-types";
10
+ import { addToServiceDefinition } from "../src/addTo";
11
+ import {
12
+ AddToFeatureServiceSuccessResponseFredAndGinger,
13
+ AddToFeatureServiceSuccessResponseFayardAndHarold,
14
+ AddToFeatureServiceSuccessResponseCydAndGene,
15
+ AddToFeatureServiceError
16
+ } from "./mocks/service";
17
+ import { layerDefinitionSid } from "./mocks/layerDefinition";
18
+
19
+ describe("add to feature service", () => {
20
+ afterEach(fetchMock.restore);
21
+
22
+ describe("Authenticated methods", () => {
23
+ // setup a UserSession to use in all these tests
24
+ const MOCK_USER_SESSION = new UserSession({
25
+ clientId: "clientId",
26
+ redirectUri: "https://example-app.com/redirect-uri",
27
+ token: "fake-token",
28
+ tokenExpires: TOMORROW,
29
+ refreshToken: "refreshToken",
30
+ refreshTokenExpires: TOMORROW,
31
+ refreshTokenTTL: 1440,
32
+ username: "casey",
33
+ password: "123456",
34
+ portal: "https://myorg.maps.arcgis.com/sharing/rest"
35
+ });
36
+
37
+ const MOCK_USER_REQOPTS = {
38
+ authentication: MOCK_USER_SESSION
39
+ };
40
+
41
+ const layerDescriptionFred: ILayer = {
42
+ name: "Fred",
43
+ id: "1899",
44
+ layerType: "Feature Layer"
45
+ };
46
+
47
+ const layerDescriptionGinger: ILayer = {
48
+ name: "Ginger",
49
+ id: "1911",
50
+ layerType: "Feature Layer"
51
+ };
52
+
53
+ const layerDescriptionCyd: ILayer = {
54
+ name: "Cyd",
55
+ id: "1922",
56
+ layerType: "Feature Layer"
57
+ };
58
+
59
+ const layerDescriptionFail: ILayer = {
60
+ name: "",
61
+ id: "",
62
+ layerType: "Feature Layer"
63
+ };
64
+
65
+ const tableDescriptionFayard: ITable = {
66
+ name: "Fayard",
67
+ id: "1914"
68
+ };
69
+
70
+ const tableDescriptionHarold: ITable = {
71
+ name: "Harold",
72
+ id: "1921"
73
+ };
74
+
75
+ const tableDescriptionGene: ITable = {
76
+ name: "Gene",
77
+ id: "1912"
78
+ };
79
+
80
+ const tableDescriptionFail: ITable = {
81
+ name: "",
82
+ id: ""
83
+ };
84
+
85
+ it("should add a pair of layers", done => {
86
+ fetchMock.once("*", AddToFeatureServiceSuccessResponseFredAndGinger);
87
+
88
+ addToServiceDefinition(
89
+ "https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
90
+ {
91
+ layers: [layerDescriptionFred, layerDescriptionGinger],
92
+ ...MOCK_USER_REQOPTS
93
+ }
94
+ )
95
+ .then(
96
+ response => {
97
+ // Check service call
98
+ expect(fetchMock.called()).toEqual(true);
99
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall(
100
+ "*"
101
+ );
102
+
103
+ expect(url).toEqual(
104
+ "https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
105
+ );
106
+ expect(options.method).toBe("POST");
107
+ expect(options.body).toContain("f=json");
108
+ expect(options.body).toContain(encodeParam("token", "fake-token"));
109
+ expect(options.body).toContain(
110
+ encodeParam(
111
+ "addToDefinition",
112
+ JSON.stringify({
113
+ layers: [layerDescriptionFred, layerDescriptionGinger]
114
+ })
115
+ )
116
+ );
117
+
118
+ // Check response
119
+ expect(response).toEqual(
120
+ AddToFeatureServiceSuccessResponseFredAndGinger
121
+ );
122
+
123
+ done();
124
+ },
125
+ () => {
126
+ fail(); // call is supposed to succeed
127
+ }
128
+ )
129
+ .catch(e => {
130
+ fail(e);
131
+ });
132
+ });
133
+
134
+ it("should add a pair of tables", done => {
135
+ fetchMock.once("*", AddToFeatureServiceSuccessResponseFayardAndHarold);
136
+
137
+ addToServiceDefinition(
138
+ "https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
139
+ {
140
+ tables: [tableDescriptionFayard, tableDescriptionHarold],
141
+ ...MOCK_USER_REQOPTS
142
+ }
143
+ )
144
+ .then(
145
+ response => {
146
+ // Check service call
147
+ expect(fetchMock.called()).toEqual(true);
148
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall(
149
+ "*"
150
+ );
151
+
152
+ expect(url).toEqual(
153
+ "https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
154
+ );
155
+ expect(options.method).toBe("POST");
156
+ expect(options.body).toContain("f=json");
157
+ expect(options.body).toContain(encodeParam("token", "fake-token"));
158
+ expect(options.body).toContain(
159
+ encodeParam(
160
+ "addToDefinition",
161
+ JSON.stringify({
162
+ tables: [tableDescriptionFayard, tableDescriptionHarold]
163
+ })
164
+ )
165
+ );
166
+
167
+ // Check response
168
+ expect(response).toEqual(
169
+ AddToFeatureServiceSuccessResponseFayardAndHarold
170
+ );
171
+
172
+ done();
173
+ },
174
+ () => {
175
+ fail(); // call is supposed to succeed
176
+ }
177
+ )
178
+ .catch(e => {
179
+ fail(e);
180
+ });
181
+ });
182
+
183
+ it("should add a layer and a table", done => {
184
+ fetchMock.once("*", AddToFeatureServiceSuccessResponseCydAndGene);
185
+
186
+ addToServiceDefinition(
187
+ "https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
188
+ {
189
+ layers: [layerDescriptionCyd],
190
+ tables: [tableDescriptionGene],
191
+ ...MOCK_USER_REQOPTS
192
+ }
193
+ )
194
+ .then(response => {
195
+ // Check service call
196
+ expect(fetchMock.called()).toEqual(true);
197
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
198
+
199
+ expect(url).toEqual(
200
+ "https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
201
+ );
202
+ expect(options.method).toBe("POST");
203
+ expect(options.body).toContain("f=json");
204
+ expect(options.body).toContain(encodeParam("token", "fake-token"));
205
+ expect(options.body).toContain(
206
+ encodeParam(
207
+ "addToDefinition",
208
+ JSON.stringify({
209
+ layers: [layerDescriptionCyd],
210
+ tables: [tableDescriptionGene]
211
+ })
212
+ )
213
+ );
214
+
215
+ // Check response
216
+ expect(response).toEqual(
217
+ AddToFeatureServiceSuccessResponseCydAndGene
218
+ );
219
+ done();
220
+ })
221
+ .catch(e => {
222
+ fail(e);
223
+ });
224
+ });
225
+
226
+ it("should add a layer definition", done => {
227
+ fetchMock.once("*", AddToFeatureServiceSuccessResponseCydAndGene);
228
+
229
+ addToServiceDefinition(
230
+ "https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
231
+ {
232
+ layers: [layerDefinitionSid],
233
+ ...MOCK_USER_REQOPTS
234
+ }
235
+ )
236
+ .then(response => {
237
+ // Check service call
238
+ expect(fetchMock.called()).toEqual(true);
239
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
240
+
241
+ expect(url).toEqual(
242
+ "https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
243
+ );
244
+ expect(options.method).toBe("POST");
245
+ expect(options.body).toContain("f=json");
246
+ expect(options.body).toContain(encodeParam("token", "fake-token"));
247
+ expect(options.body).toContain(
248
+ encodeParam(
249
+ "addToDefinition",
250
+ JSON.stringify({
251
+ layers: [layerDefinitionSid]
252
+ })
253
+ )
254
+ );
255
+
256
+ // Check response
257
+ expect(response).toEqual(
258
+ AddToFeatureServiceSuccessResponseCydAndGene
259
+ );
260
+ done();
261
+ })
262
+ .catch(e => {
263
+ fail(e);
264
+ });
265
+ });
266
+
267
+ it("should fail to add a bad layer", done => {
268
+ fetchMock.once("*", AddToFeatureServiceError);
269
+
270
+ addToServiceDefinition(
271
+ "https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
272
+ {
273
+ layers: [layerDescriptionFail],
274
+ ...MOCK_USER_REQOPTS
275
+ }
276
+ ).catch(error => {
277
+ expect(error.name).toBe(ErrorTypes.ArcGISRequestError);
278
+ expect(error.message).toBe(
279
+ "400: Unable to add feature service definition."
280
+ );
281
+ expect(error instanceof Error).toBeTruthy();
282
+ expect(error.url).toBe(
283
+ "https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
284
+ );
285
+ // params added internally aren't surfaced in the error
286
+ expect(error.options.params.addToDefinition).toEqual({
287
+ layers: [layerDescriptionFail]
288
+ });
289
+ expect(error.options.httpMethod).toEqual("POST");
290
+ done();
291
+ });
292
+ });
293
+
294
+ it("should fail to add a bad table", done => {
295
+ fetchMock.once("*", AddToFeatureServiceError);
296
+
297
+ addToServiceDefinition(
298
+ "https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
299
+ {
300
+ tables: [tableDescriptionFail],
301
+ ...MOCK_USER_REQOPTS
302
+ }
303
+ ).catch(error => {
304
+ expect(error.name).toBe(ErrorTypes.ArcGISRequestError);
305
+ expect(error.message).toBe(
306
+ "400: Unable to add feature service definition."
307
+ );
308
+ expect(error instanceof Error).toBeTruthy();
309
+ expect(error.url).toBe(
310
+ "https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
311
+ );
312
+ // params added internally aren't surfaced in the error
313
+ expect(error.options.params.addToDefinition).toEqual({
314
+ tables: [tableDescriptionFail]
315
+ });
316
+ expect(error.options.httpMethod).toEqual("POST");
317
+ done();
318
+ });
319
+ });
320
+
321
+ it("should fail to add a bad layer and a bad table", done => {
322
+ fetchMock.once("*", AddToFeatureServiceError);
323
+
324
+ addToServiceDefinition(
325
+ "https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer",
326
+ {
327
+ layers: [layerDescriptionFail],
328
+ tables: [tableDescriptionFail],
329
+ ...MOCK_USER_REQOPTS
330
+ }
331
+ ).catch(error => {
332
+ expect(error.name).toBe(ErrorTypes.ArcGISRequestError);
333
+ expect(error.message).toBe(
334
+ "400: Unable to add feature service definition."
335
+ );
336
+ expect(error instanceof Error).toBeTruthy();
337
+ expect(error.url).toBe(
338
+ "https://services1.arcgis.com/ORG/arcgis/rest/admin/services/FEATURE_SERVICE/FeatureServer/addToDefinition"
339
+ );
340
+ // params added internally aren't surfaced in the error
341
+ expect(error.options.params.addToDefinition).toEqual({
342
+ tables: [tableDescriptionFail],
343
+ layers: [layerDescriptionFail]
344
+ });
345
+ expect(error.options.httpMethod).toEqual("POST");
346
+ done();
347
+ });
348
+ });
349
+ }); // auth requests
350
+ });