impeditmaiores 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,42 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { searchUsers } from "../../src/users/search-users";
5
+ import { UserSearchResponse } from "../mocks/users/user-search";
6
+
7
+ import * as fetchMock from "fetch-mock";
8
+
9
+ describe("users", () => {
10
+ afterEach(fetchMock.restore);
11
+
12
+ describe("searchUsers", () => {
13
+ const MOCK_AUTH = {
14
+ getToken() {
15
+ return Promise.resolve("fake-token");
16
+ },
17
+ portal: "https://myorg.maps.arcgis.com/sharing/rest"
18
+ };
19
+
20
+ it("should make a simple, authenticated user search request", done => {
21
+ fetchMock.once("*", UserSearchResponse);
22
+
23
+ searchUsers({
24
+ q: "role:org_user OR role:org_publisher",
25
+ num: 100,
26
+ authentication: MOCK_AUTH
27
+ })
28
+ .then(response => {
29
+ expect(fetchMock.called()).toEqual(true);
30
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
31
+ expect(url).toEqual(
32
+ "https://myorg.maps.arcgis.com/sharing/rest/portals/self/users/search?f=json&q=role%3Aorg_user%20OR%20role%3Aorg_publisher&num=100&token=fake-token"
33
+ );
34
+ expect(options.method).toBe("GET");
35
+ done();
36
+ })
37
+ .catch(e => {
38
+ fail(e);
39
+ });
40
+ });
41
+ });
42
+ });
@@ -0,0 +1,151 @@
1
+ /* Copyright (c) 2018-2019 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { updateUser, IUpdateUserResponse } from "../../src/users/update";
5
+ import { encodeParam } from "@esri/arcgis-rest-request";
6
+ import { UserSession } from "@esri/arcgis-rest-auth";
7
+ import * as fetchMock from "fetch-mock";
8
+
9
+ const TOMORROW = (function() {
10
+ const now = new Date();
11
+ now.setDate(now.getDate() + 1);
12
+ return now;
13
+ })();
14
+
15
+ describe("updateUser", () => {
16
+ afterEach(fetchMock.restore);
17
+
18
+ const session = new UserSession({
19
+ username: "c@sey",
20
+ password: "123456",
21
+ token: "fake-token",
22
+ tokenExpires: TOMORROW,
23
+ portal: "https://myorg.maps.arcgis.com/sharing/rest"
24
+ });
25
+
26
+ it("should make an authenticated request to update the same user profile.", done => {
27
+ fetchMock.once("*", {
28
+ success: true,
29
+ username: "c@sey"
30
+ } as IUpdateUserResponse);
31
+
32
+ updateUser({
33
+ authentication: session,
34
+ user: { description: "destroyer of worlds" }
35
+ })
36
+ .then(() => {
37
+ expect(fetchMock.called()).toEqual(true);
38
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
39
+ expect(url).toEqual(
40
+ "https://myorg.maps.arcgis.com/sharing/rest/community/users/c%40sey/update"
41
+ );
42
+ expect(options.method).toBe("POST");
43
+ expect(options.body).toContain("f=json");
44
+ expect(options.body).toContain("token=fake-token");
45
+ expect(options.body).toContain(
46
+ encodeParam("description", "destroyer of worlds")
47
+ );
48
+ done();
49
+ })
50
+ .catch(e => {
51
+ fail(e);
52
+ });
53
+ });
54
+
55
+ it("should make an authenticated request to update the same user profile and mixin custom params.", done => {
56
+ fetchMock.once("*", {
57
+ success: true,
58
+ username: "c@sey"
59
+ } as IUpdateUserResponse);
60
+
61
+ updateUser({
62
+ authentication: session,
63
+ user: { description: "destroyer of worlds" },
64
+ params: { foo: "bar" }
65
+ })
66
+ .then(() => {
67
+ expect(fetchMock.called()).toEqual(true);
68
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
69
+ expect(url).toEqual(
70
+ "https://myorg.maps.arcgis.com/sharing/rest/community/users/c%40sey/update"
71
+ );
72
+ expect(options.method).toBe("POST");
73
+ expect(options.body).toContain("f=json");
74
+ expect(options.body).toContain("token=fake-token");
75
+ expect(options.body).toContain("foo=bar");
76
+ expect(options.body).toContain(
77
+ encodeParam("description", "destroyer of worlds")
78
+ );
79
+ done();
80
+ })
81
+ .catch(e => {
82
+ fail(e);
83
+ });
84
+ });
85
+
86
+ it("should make an org administrator authenticated request to update a different user.", done => {
87
+ fetchMock.once("*", {
88
+ success: true,
89
+ username: "jsmith"
90
+ } as IUpdateUserResponse);
91
+
92
+ updateUser({
93
+ authentication: session,
94
+ user: { username: "jsmith", description: "something different" }
95
+ })
96
+ .then(() => {
97
+ expect(fetchMock.called()).toEqual(true);
98
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
99
+ expect(url).toEqual(
100
+ "https://myorg.maps.arcgis.com/sharing/rest/community/users/jsmith/update"
101
+ );
102
+ expect(options.method).toBe("POST");
103
+ expect(options.body).toContain("f=json");
104
+ expect(options.body).toContain("token=fake-token");
105
+ expect(options.body).toContain(
106
+ encodeParam("description", "something different")
107
+ );
108
+ done();
109
+ })
110
+ .catch(e => {
111
+ fail(e);
112
+ });
113
+ });
114
+
115
+ it("should throw an error when the authenticated user doesnt have permission to update the user profile in question.", done => {
116
+ fetchMock.once("*", {
117
+ error: {
118
+ code: 403,
119
+ messageCode: "GWM_0003",
120
+ message:
121
+ "You do not have permissions to access this resource or perform this operation.",
122
+ details: []
123
+ }
124
+ });
125
+
126
+ updateUser({
127
+ authentication: session,
128
+ user: { username: "fake", description: "real" }
129
+ })
130
+ .then(() => {
131
+ fail();
132
+ })
133
+ .catch(e => {
134
+ expect(fetchMock.called()).toEqual(true);
135
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
136
+ expect(url).toEqual(
137
+ "https://myorg.maps.arcgis.com/sharing/rest/community/users/fake/update"
138
+ );
139
+ expect(options.method).toBe("POST");
140
+ expect(options.body).toContain("f=json");
141
+ expect(options.body).toContain("token=fake-token");
142
+ expect(options.body).toContain(encodeParam("description", "real"));
143
+ expect(e.name).toBe("ArcGISAuthError");
144
+ expect(e.code).toBe("GWM_0003");
145
+ expect(e.originalMessage).toBe(
146
+ "You do not have permissions to access this resource or perform this operation."
147
+ );
148
+ done();
149
+ });
150
+ });
151
+ });
@@ -0,0 +1,340 @@
1
+ /* Copyright (c) 2019 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { SearchQueryBuilder } from "../../src/util/SearchQueryBuilder";
5
+
6
+ describe("SearchQueryBuilder", () => {
7
+ const originalWarn = console.warn;
8
+
9
+ beforeAll(function() {
10
+ console.warn = jasmine.createSpy().and.callFake(() => {
11
+ return;
12
+ });
13
+ });
14
+
15
+ afterAll(function() {
16
+ console.warn = originalWarn;
17
+ });
18
+
19
+ it("should return an empty string when called with no other functions", () => {
20
+ const query = new SearchQueryBuilder().toParam();
21
+ expect(query).toEqual("");
22
+ });
23
+
24
+ it("should format a simple search query", () => {
25
+ const query = new SearchQueryBuilder().match("test").toParam();
26
+ expect(query).toEqual("test");
27
+ });
28
+
29
+ it("should format a simple search query in a field", () => {
30
+ const query = new SearchQueryBuilder()
31
+ .match("test")
32
+ .in("tags")
33
+ .toParam();
34
+ expect(query).toEqual("tags:test");
35
+ });
36
+
37
+ it("should warp multi word search terms in quotes", () => {
38
+ const query = new SearchQueryBuilder().match("foo bar").toParam();
39
+ expect(query).toEqual(`"foo bar"`);
40
+ });
41
+
42
+ it("should accept .in() without a parameter", () => {
43
+ const query = new SearchQueryBuilder()
44
+ .match("test")
45
+ .in()
46
+ .toParam();
47
+ expect(query).toEqual(`test`);
48
+ });
49
+
50
+ it("should accept `*` as a value for .in()", () => {
51
+ const query = new SearchQueryBuilder()
52
+ .match("test")
53
+ .in("*")
54
+ .toParam();
55
+ expect(query).toEqual(`test`);
56
+ });
57
+
58
+ it("should chain calls with .and()", () => {
59
+ const query = new SearchQueryBuilder()
60
+ .match("bar")
61
+ .and()
62
+ .match("foo")
63
+ .in("tags")
64
+ .toParam();
65
+
66
+ expect(query).toEqual("bar AND tags:foo");
67
+ });
68
+
69
+ it("should format a simple range", () => {
70
+ const query = new SearchQueryBuilder()
71
+ .from("a")
72
+ .to("z")
73
+ .in("title")
74
+ .toParam();
75
+ expect(query).toEqual("title:[a TO z]");
76
+ });
77
+
78
+ it("should format a simple group", () => {
79
+ const query = new SearchQueryBuilder()
80
+ .startGroup()
81
+ .from("a")
82
+ .to("z")
83
+ .in("title")
84
+ .endGroup()
85
+ .toParam();
86
+ expect(query).toEqual("(title:[a TO z])");
87
+ });
88
+
89
+ it("should format a more complex group", () => {
90
+ const query = new SearchQueryBuilder()
91
+ .startGroup()
92
+ .match("California")
93
+ .or()
94
+ .match("recent")
95
+ .endGroup()
96
+ .and()
97
+ .match("fires")
98
+ .toParam();
99
+ expect(query).toEqual("(California OR recent) AND fires");
100
+ });
101
+
102
+ it("should boost the previous search", () => {
103
+ const query = new SearchQueryBuilder()
104
+ .match("test")
105
+ .boost(5)
106
+ .toParam();
107
+ expect(query).toEqual("test^5");
108
+ });
109
+
110
+ it("should convert dates into timestamps", () => {
111
+ const date1 = new Date("January 1 2019");
112
+ const date2 = new Date("January 7 2019");
113
+ const expectedDate1 = date1.getTime();
114
+ const expectedDate2 = date2.getTime();
115
+
116
+ const query = new SearchQueryBuilder()
117
+ .from(date1)
118
+ .to(date2)
119
+ .in("created")
120
+ .and()
121
+ .match("test")
122
+ .in("tags")
123
+ .toParam();
124
+
125
+ expect(query).toEqual(
126
+ `created:[${expectedDate1} TO ${expectedDate2}] AND tags:test`
127
+ );
128
+ });
129
+
130
+ it("should format a complex group properly", () => {
131
+ const query = new SearchQueryBuilder()
132
+ .match("fred")
133
+ .in("owner")
134
+ .and()
135
+ .startGroup()
136
+ .match("Web Mapping Application")
137
+ .in("type")
138
+ .or()
139
+ .match("Mobile Application")
140
+ .in("type")
141
+ .or()
142
+ .match("Application")
143
+ .in("type")
144
+ .endGroup()
145
+ .and()
146
+ .match("test")
147
+ .in("*")
148
+ .toParam();
149
+
150
+ expect(query).toEqual(
151
+ `owner:fred AND (type:"Web Mapping Application" OR type:"Mobile Application" OR type:Application) AND test`
152
+ );
153
+ });
154
+
155
+ it("should allow .not to be called without a preceding search value", () => {
156
+ const query = new SearchQueryBuilder()
157
+ .not()
158
+ .match("public")
159
+ .in("access")
160
+ .not()
161
+ .match("code attachment")
162
+ .in("type")
163
+ .toParam();
164
+
165
+ expect(query).toEqual(`NOT access:public NOT type:"code attachment"`);
166
+ });
167
+
168
+ it("should clone searches for modification", () => {
169
+ const myAppsQuery = new SearchQueryBuilder()
170
+ .match("fred")
171
+ .in("owner")
172
+ .and()
173
+ .startGroup()
174
+ .match("Web Mapping Application")
175
+ .in("type")
176
+ .or()
177
+ .match("Mobile Application")
178
+ .in("type")
179
+ .or()
180
+ .match("Application")
181
+ .in("type")
182
+ .endGroup();
183
+
184
+ const myTestAppsQuery = myAppsQuery
185
+ .clone()
186
+ .and()
187
+ .match("test")
188
+ .in("*");
189
+
190
+ expect(myAppsQuery.toParam()).toEqual(
191
+ `owner:fred AND (type:"Web Mapping Application" OR type:"Mobile Application" OR type:Application)`
192
+ );
193
+
194
+ expect(myTestAppsQuery.toParam()).toEqual(
195
+ `owner:fred AND (type:"Web Mapping Application" OR type:"Mobile Application" OR type:Application) AND test`
196
+ );
197
+ });
198
+
199
+ it("should not allow trailing modifiers, and warn user", () => {
200
+ const query = new SearchQueryBuilder()
201
+ .match("test")
202
+ .not()
203
+ .toParam();
204
+
205
+ expect(console.warn).toHaveBeenCalled();
206
+ expect(query).toEqual("test");
207
+ });
208
+
209
+ it("should not allow chains of logic modifiers, and warn user", () => {
210
+ const query = new SearchQueryBuilder()
211
+ .and()
212
+ .or()
213
+ .or()
214
+ .toParam();
215
+
216
+ expect(console.warn).toHaveBeenCalled();
217
+ expect(query).toEqual("");
218
+ });
219
+
220
+ it("should not allow chains of logic modifiers after a .match, and warn user", () => {
221
+ const query = new SearchQueryBuilder()
222
+ .match("test")
223
+ .not()
224
+ .and()
225
+ .toParam();
226
+
227
+ expect(console.warn).toHaveBeenCalled();
228
+ expect(query).toEqual("test");
229
+ });
230
+
231
+ it("should close groups on toParam(), and warn user", () => {
232
+ const query = new SearchQueryBuilder()
233
+ .startGroup()
234
+ .match("test")
235
+ .toParam();
236
+
237
+ expect(console.warn).toHaveBeenCalled();
238
+ expect(query).toEqual("(test)");
239
+ });
240
+
241
+ it("should close groups automatically on clone(), and warn user", () => {
242
+ const query = new SearchQueryBuilder()
243
+ .startGroup()
244
+ .match("test")
245
+ .clone()
246
+ .toParam();
247
+
248
+ expect(console.warn).toHaveBeenCalled();
249
+ expect(query).toEqual("(test)");
250
+ });
251
+
252
+ it("should close more then 1 group, and warn user", () => {
253
+ const query = new SearchQueryBuilder()
254
+ .startGroup()
255
+ .match("foo")
256
+ .startGroup()
257
+ .match("bar")
258
+ .toParam();
259
+
260
+ expect(console.warn).toHaveBeenCalled();
261
+ expect(query).toEqual("(foo (bar))");
262
+ });
263
+
264
+ it("should not allow .in() without valid term or range and warn user", () => {
265
+ const query = new SearchQueryBuilder()
266
+ .in("tags")
267
+ .in("title")
268
+ .toParam();
269
+
270
+ expect(console.warn).toHaveBeenCalled();
271
+ expect(query).toEqual("");
272
+ });
273
+
274
+ it("should not allow .in() with only .from() and warn user", () => {
275
+ const query = new SearchQueryBuilder()
276
+ .from("a")
277
+ .in("title")
278
+ .toParam();
279
+
280
+ expect(console.warn).toHaveBeenCalled();
281
+ expect(query).toEqual("");
282
+ });
283
+
284
+ it("should not allow .in() with only .to() and warn user", () => {
285
+ const query = new SearchQueryBuilder()
286
+ .to("a")
287
+ .in("title")
288
+ .toParam();
289
+
290
+ expect(console.warn).toHaveBeenCalled();
291
+ expect(query).toEqual("");
292
+ });
293
+
294
+ it("should not allow .to() after a .match() and warn user", () => {
295
+ const query = new SearchQueryBuilder()
296
+ .match("test")
297
+ .to("a")
298
+ .toParam();
299
+
300
+ expect(console.warn).toHaveBeenCalled();
301
+ expect(query).toEqual("test");
302
+ });
303
+
304
+ it("should not allow .to() after a .match() and warn user", () => {
305
+ const query = new SearchQueryBuilder()
306
+ .match("test")
307
+ .from("a")
308
+ .toParam();
309
+
310
+ expect(console.warn).toHaveBeenCalled();
311
+ expect(query).toEqual("test");
312
+ });
313
+
314
+ it("should not allow .endGroup() without .startGroup()", () => {
315
+ const query = new SearchQueryBuilder()
316
+ .match("a")
317
+ .in("title")
318
+ .endGroup()
319
+ .toParam();
320
+
321
+ expect(console.warn).toHaveBeenCalled();
322
+ expect(query).toEqual("title:a");
323
+ });
324
+
325
+ it("should not allow .match().from().in(), and warn user", () => {
326
+ const query = new SearchQueryBuilder()
327
+ .match("test")
328
+ .from("a")
329
+ .in("title")
330
+ .toParam();
331
+
332
+ expect(console.warn).toHaveBeenCalled();
333
+ expect(query).toEqual("title:test");
334
+ });
335
+
336
+ it("should produce an empty string when no methods are called", () => {
337
+ const query = new SearchQueryBuilder().toParam();
338
+ expect(query).toEqual("");
339
+ });
340
+ });
@@ -0,0 +1,30 @@
1
+ /* Copyright (c) 2019 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { chunk } from "../../src/util/array";
5
+
6
+ describe("array.chunk", () => {
7
+ it("should chunk a long array", () => {
8
+ const input = [1, 2, 3, 4];
9
+ const result = chunk(input, 3);
10
+ expect(result).toEqual([[1, 2, 3], [4]]);
11
+ });
12
+
13
+ it("should chunk an array with the length proportional to the chunk size", () => {
14
+ const input = [1, 2, 3, 4];
15
+ const result = chunk(input, 2);
16
+ expect(result).toEqual([[1, 2], [3, 4]]);
17
+ });
18
+
19
+ it("should not chunk a short array", () => {
20
+ const input = [1, 2, 3, 4];
21
+ const result = chunk(input, 5);
22
+ expect(result).toEqual([[1, 2, 3, 4]]);
23
+ });
24
+
25
+ it("should not chunk a zero-length array", () => {
26
+ const input: number[] = [];
27
+ const result = chunk(input, 5);
28
+ expect(result).toEqual([]);
29
+ });
30
+ });
@@ -0,0 +1,68 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { getPortalSettings } from "../../src/util/get-portal-settings";
5
+
6
+ import { PortalResponse } from "./../mocks/portal/response";
7
+
8
+ import * as fetchMock from "fetch-mock";
9
+
10
+ describe("portal", () => {
11
+ let paramsSpy: jasmine.Spy;
12
+
13
+ beforeEach(() => {
14
+ paramsSpy = spyOn(FormData.prototype, "append").and.callThrough();
15
+ });
16
+
17
+ afterAll(() => {
18
+ paramsSpy.calls.reset();
19
+ });
20
+
21
+ afterEach(fetchMock.restore);
22
+
23
+ describe("getPortalSettings", () => {
24
+ // setup an authmgr to use in all these tests
25
+ const MOCK_AUTH = {
26
+ getToken() {
27
+ return Promise.resolve("fake-token");
28
+ },
29
+ portal: "https://myorg.maps.arcgis.com/sharing/rest"
30
+ };
31
+ const MOCK_REQOPTS = {
32
+ authentication: MOCK_AUTH
33
+ };
34
+
35
+ it("should get the portal settings by id", done => {
36
+ fetchMock.once("*", PortalResponse);
37
+ getPortalSettings("5BZFaKe", MOCK_REQOPTS)
38
+ .then(response => {
39
+ expect(fetchMock.called()).toEqual(true);
40
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
41
+ expect(url).toEqual(
42
+ "https://myorg.maps.arcgis.com/sharing/rest/portals/5BZFaKe/settings?f=json&token=fake-token"
43
+ );
44
+ expect(options.method).toBe("GET");
45
+ done();
46
+ })
47
+ .catch(e => {
48
+ fail(e);
49
+ });
50
+ });
51
+ it("should get the portal self settings if no id", done => {
52
+ fetchMock.once("*", PortalResponse);
53
+ getPortalSettings(null, MOCK_REQOPTS)
54
+ .then(response => {
55
+ expect(fetchMock.called()).toEqual(true);
56
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
57
+ expect(url).toEqual(
58
+ "https://myorg.maps.arcgis.com/sharing/rest/portals/self/settings?f=json&token=fake-token"
59
+ );
60
+ expect(options.method).toBe("GET");
61
+ done();
62
+ })
63
+ .catch(e => {
64
+ fail(e);
65
+ });
66
+ });
67
+ });
68
+ });
@@ -0,0 +1,37 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { getPortalUrl } from "../../src/util/get-portal-url";
5
+
6
+ describe("getPortalUrl", () => {
7
+ it("should default to arcgis.com", () => {
8
+ const url = getPortalUrl();
9
+ expect(url).toEqual("https://www.arcgis.com/sharing/rest");
10
+ });
11
+ it("should use the portal from authorization if passed", () => {
12
+ const requestOptions = {
13
+ authentication: {
14
+ portal: "https://foo.com/arcgis/sharing/rest",
15
+ getToken() {
16
+ return Promise.resolve("fake");
17
+ }
18
+ }
19
+ };
20
+ const url = getPortalUrl(requestOptions);
21
+ expect(url).toEqual("https://foo.com/arcgis/sharing/rest");
22
+ });
23
+
24
+ it("should use the portal in the requestOptions if passed", () => {
25
+ const requestOptions = {
26
+ authentication: {
27
+ portal: "https://foo.com/arcgis/sharing/rest",
28
+ getToken() {
29
+ return Promise.resolve("fake");
30
+ }
31
+ },
32
+ portal: "https://bar.com/arcgis/sharing/rest"
33
+ };
34
+ const url = getPortalUrl(requestOptions);
35
+ expect(url).toEqual("https://bar.com/arcgis/sharing/rest");
36
+ });
37
+ });