autnam 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 (490) hide show
  1. package/.env.example +2 -0
  2. package/.eslintrc.json +37 -0
  3. package/.github/workflows/deploy-docs.yml +27 -0
  4. package/.github/workflows/pre-release-tests.yml +49 -0
  5. package/.github/workflows/pull-request-tests.yml +49 -0
  6. package/.github/workflows/release.yml +75 -0
  7. package/.prettierignore +2 -0
  8. package/.prettierrc +19 -0
  9. package/.vscode/launch.json +25 -0
  10. package/.vscode/settings.json +5 -0
  11. package/codecov.yml +7 -0
  12. package/commitlint.config.cjs +41 -0
  13. package/demos/.eslintrc.js +13 -0
  14. package/demos/ago-node-cli/README.md +30 -0
  15. package/demos/ago-node-cli/ago.js +31 -0
  16. package/demos/ago-node-cli/index.js +11 -0
  17. package/demos/ago-node-cli/lib/item-export-command.js +48 -0
  18. package/demos/ago-node-cli/lib/item-search-command.js +32 -0
  19. package/demos/ago-node-cli/package.json +29 -0
  20. package/demos/attachments-browser/README.md +7 -0
  21. package/demos/attachments-browser/index.html +165 -0
  22. package/demos/attachments-browser/package.json +15 -0
  23. package/demos/attachments-node/README.md +4 -0
  24. package/demos/attachments-node/image.jpg +0 -0
  25. package/demos/attachments-node/index.js +89 -0
  26. package/demos/attachments-node/package.json +19 -0
  27. package/demos/batch-geocoder-node/NYC_Restaurant_Inspection_Results.csv +100 -0
  28. package/demos/batch-geocoder-node/README.md +13 -0
  29. package/demos/batch-geocoder-node/batch-geocode.js +112 -0
  30. package/demos/batch-geocoder-node/config-template.js +18 -0
  31. package/demos/batch-geocoder-node/package.json +34 -0
  32. package/demos/browser-es-modules/README.md +7 -0
  33. package/demos/browser-es-modules/index.html +38 -0
  34. package/demos/browser-es-modules/package.json +15 -0
  35. package/demos/deno/README.md +1 -0
  36. package/demos/deno/import_map.json +8 -0
  37. package/demos/deno/index.js +5 -0
  38. package/demos/express/README.md +16 -0
  39. package/demos/express/config.json.template +3 -0
  40. package/demos/express/package.json +15 -0
  41. package/demos/express/server.js +37 -0
  42. package/demos/feature-service-browser/README.md +8 -0
  43. package/demos/feature-service-browser/index.html +122 -0
  44. package/demos/feature-service-browser/package.json +15 -0
  45. package/demos/geocoder-browser/README.md +12 -0
  46. package/demos/geocoder-browser/authenticate.html +29 -0
  47. package/demos/geocoder-browser/config.js.template +1 -0
  48. package/demos/geocoder-browser/index.html +139 -0
  49. package/demos/geocoder-browser/package.json +15 -0
  50. package/demos/jsapi-integration/README.md +26 -0
  51. package/demos/jsapi-integration/authenticate.html +29 -0
  52. package/demos/jsapi-integration/config.js +6 -0
  53. package/demos/jsapi-integration/index.html +91 -0
  54. package/demos/jsapi-integration/package.json +15 -0
  55. package/demos/node-cli-item-management/README.md +11 -0
  56. package/demos/node-cli-item-management/index.js +229 -0
  57. package/demos/node-cli-item-management/package.json +24 -0
  58. package/demos/node-cli-item-management/screenshot.png +0 -0
  59. package/demos/node-common-js/README.md +4 -0
  60. package/demos/node-common-js/index.js +5 -0
  61. package/demos/node-common-js/package.json +15 -0
  62. package/demos/node-es-modules/README.md +4 -0
  63. package/demos/node-es-modules/index.js +5 -0
  64. package/demos/node-es-modules/package.json +16 -0
  65. package/demos/oauth2-browser/README.md +17 -0
  66. package/demos/oauth2-browser/authenticate.html +29 -0
  67. package/demos/oauth2-browser/config.js.template +6 -0
  68. package/demos/oauth2-browser/index.html +223 -0
  69. package/demos/oauth2-browser/logo.svg +4 -0
  70. package/demos/oauth2-browser/package.json +15 -0
  71. package/demos/oauth2-browser/style.css +36 -0
  72. package/demos/oauth2-browser-retry/README.md +32 -0
  73. package/demos/oauth2-browser-retry/authenticate.html +21 -0
  74. package/demos/oauth2-browser-retry/index.html +114 -0
  75. package/demos/oauth2-browser-retry/logo.svg +4 -0
  76. package/demos/oauth2-browser-retry/package.json +15 -0
  77. package/demos/parcel/README.md +8 -0
  78. package/demos/parcel/index.html +16 -0
  79. package/demos/parcel/index.js +8 -0
  80. package/demos/parcel/package.json +20 -0
  81. package/demos/snowpack/README.md +8 -0
  82. package/demos/snowpack/index.html +16 -0
  83. package/demos/snowpack/index.js +8 -0
  84. package/demos/snowpack/package.json +20 -0
  85. package/demos/snowpack/snowpack.config.js +3 -0
  86. package/demos/stream-response-to-file/README.md +7 -0
  87. package/demos/stream-response-to-file/index.js +36 -0
  88. package/demos/stream-response-to-file/output/.gitkeep +0 -0
  89. package/demos/stream-response-to-file/package.json +31 -0
  90. package/demos/tree-shaking-rollup/.babelrc +3 -0
  91. package/demos/tree-shaking-rollup/README.md +9 -0
  92. package/demos/tree-shaking-rollup/index.html +11 -0
  93. package/demos/tree-shaking-rollup/package.json +22 -0
  94. package/demos/tree-shaking-rollup/rollup.config.js +13 -0
  95. package/demos/tree-shaking-rollup/src/index.js +8 -0
  96. package/demos/tree-shaking-webpack/README.md +9 -0
  97. package/demos/tree-shaking-webpack/index.html +11 -0
  98. package/demos/tree-shaking-webpack/package.json +26 -0
  99. package/demos/tree-shaking-webpack/src/index.js +8 -0
  100. package/demos/tree-shaking-webpack/webpack.config.js +29 -0
  101. package/demos/vite/README.md +6 -0
  102. package/demos/vite/favicon.svg +15 -0
  103. package/demos/vite/index.html +13 -0
  104. package/demos/vite/main.js +8 -0
  105. package/demos/vite/package.json +18 -0
  106. package/demos/vue/.env.example +11 -0
  107. package/demos/vue/.eslintrc.js +17 -0
  108. package/demos/vue/.postcssrc.js +5 -0
  109. package/demos/vue/README.md +17 -0
  110. package/demos/vue/babel.config.js +3 -0
  111. package/demos/vue/package.json +35 -0
  112. package/demos/vue/public/favicon.ico +0 -0
  113. package/demos/vue/public/index.html +24 -0
  114. package/demos/vue/src/assets/logo.svg +29 -0
  115. package/demos/vue/src/components/App.vue +303 -0
  116. package/demos/vue/src/components/Authenticate.vue +65 -0
  117. package/demos/vue/src/components/Loader.vue +230 -0
  118. package/demos/vue/src/main.js +92 -0
  119. package/demos/webmap-checker-sapper/.env.example +5 -0
  120. package/demos/webmap-checker-sapper/README.md +124 -0
  121. package/demos/webmap-checker-sapper/appveyor.yml +18 -0
  122. package/demos/webmap-checker-sapper/cypress/fixtures/example.json +5 -0
  123. package/demos/webmap-checker-sapper/cypress/integration/spec.js +19 -0
  124. package/demos/webmap-checker-sapper/cypress/plugins/index.js +17 -0
  125. package/demos/webmap-checker-sapper/cypress/support/commands.js +25 -0
  126. package/demos/webmap-checker-sapper/cypress/support/index.js +20 -0
  127. package/demos/webmap-checker-sapper/cypress.json +4 -0
  128. package/demos/webmap-checker-sapper/package.json +47 -0
  129. package/demos/webmap-checker-sapper/rollup.config.js +87 -0
  130. package/demos/webmap-checker-sapper/src/client.js +20 -0
  131. package/demos/webmap-checker-sapper/src/components/LayerStatus.html +108 -0
  132. package/demos/webmap-checker-sapper/src/components/Nav.html +21 -0
  133. package/demos/webmap-checker-sapper/src/components/WebMap.html +62 -0
  134. package/demos/webmap-checker-sapper/src/routes/_error.html +41 -0
  135. package/demos/webmap-checker-sapper/src/routes/_layout.html +21 -0
  136. package/demos/webmap-checker-sapper/src/routes/auth/authorize.js +18 -0
  137. package/demos/webmap-checker-sapper/src/routes/auth/exchange-token.js +20 -0
  138. package/demos/webmap-checker-sapper/src/routes/auth/post-sign-in.js +24 -0
  139. package/demos/webmap-checker-sapper/src/routes/auth/sign-out.js +10 -0
  140. package/demos/webmap-checker-sapper/src/routes/index.html +20 -0
  141. package/demos/webmap-checker-sapper/src/routes/webmaps/[webmapId].html +83 -0
  142. package/demos/webmap-checker-sapper/src/routes/webmaps/index.html +59 -0
  143. package/demos/webmap-checker-sapper/src/server.js +102 -0
  144. package/demos/webmap-checker-sapper/src/service-worker.js +82 -0
  145. package/demos/webmap-checker-sapper/src/template.html +33 -0
  146. package/demos/webmap-checker-sapper/src/userInfoMiddleware.js +21 -0
  147. package/demos/webmap-checker-sapper/src/utils.js +33 -0
  148. package/demos/webmap-checker-sapper/static/favicon.png +0 -0
  149. package/demos/webmap-checker-sapper/static/global.css +36 -0
  150. package/demos/webmap-checker-sapper/static/manifest.json +20 -0
  151. package/demos/webmap-checker-sapper/static/svelte-logo-192.png +0 -0
  152. package/demos/webmap-checker-sapper/static/svelte-logo-512.png +0 -0
  153. package/docs/.eslintrc.js +12 -0
  154. package/docs/FAQ.md +48 -0
  155. package/docs/HISTORY.md +62 -0
  156. package/docs/acetate.config.js +262 -0
  157. package/docs/build-typedoc.js +434 -0
  158. package/docs/generate-srihashes.js +61 -0
  159. package/docs/package.json +3 -0
  160. package/docs/src/_layout.html +86 -0
  161. package/docs/src/api/_declaration.html +600 -0
  162. package/docs/src/api/_layout.html +204 -0
  163. package/docs/src/api/_package.html +38 -0
  164. package/docs/src/api/index.html +16 -0
  165. package/docs/src/guides/_layout.html +24 -0
  166. package/docs/src/guides/amd-requirejs-dojo.md +40 -0
  167. package/docs/src/guides/browser-authentication.md +39 -0
  168. package/docs/src/guides/bundlers.md +52 -0
  169. package/docs/src/guides/cli-authentication.md +9 -0
  170. package/docs/src/guides/client-server-authentication.md +9 -0
  171. package/docs/src/guides/embedded-apps.md +106 -0
  172. package/docs/src/guides/from-a-cdn.md +38 -0
  173. package/docs/src/guides/index.md +59 -0
  174. package/docs/src/guides/node.md +84 -0
  175. package/docs/src/guides/package-overview.md +111 -0
  176. package/docs/src/guides/server-authentication.md +9 -0
  177. package/docs/src/guides/whats-new-v2-0.md +305 -0
  178. package/docs/src/img/icons.png +0 -0
  179. package/docs/src/img/icons@2x.png +0 -0
  180. package/docs/src/img/oauth-browser.png +0 -0
  181. package/docs/src/index.html +12 -0
  182. package/docs/src/js/api-search.js +112 -0
  183. package/docs/src/js/nav-toggle.js +41 -0
  184. package/docs/src/sass/_highlight.scss +96 -0
  185. package/docs/src/sass/_icons.scss +157 -0
  186. package/docs/src/sass/style.scss +242 -0
  187. package/jasmine.json +7 -0
  188. package/jasmine.live.json +7 -0
  189. package/karma.conf.cjs +128 -0
  190. package/package.json +87 -0
  191. package/packages/arcgis-rest-auth/CHANGELOG.md +80 -0
  192. package/packages/arcgis-rest-auth/README.md +71 -0
  193. package/packages/arcgis-rest-auth/package.json +66 -0
  194. package/packages/arcgis-rest-auth/src/index.ts +34 -0
  195. package/packages/arcgis-rest-auth/tsconfig.json +6 -0
  196. package/packages/arcgis-rest-demographics/CHANGELOG.md +14 -0
  197. package/packages/arcgis-rest-demographics/README.md +74 -0
  198. package/packages/arcgis-rest-demographics/package.json +69 -0
  199. package/packages/arcgis-rest-demographics/src/getAvailableCountries.ts +113 -0
  200. package/packages/arcgis-rest-demographics/src/getAvailableDataCollections.ts +161 -0
  201. package/packages/arcgis-rest-demographics/src/getAvailableGeographyLevels.ts +86 -0
  202. package/packages/arcgis-rest-demographics/src/getGeography.ts +152 -0
  203. package/packages/arcgis-rest-demographics/src/helpers.ts +27 -0
  204. package/packages/arcgis-rest-demographics/src/index.ts +16 -0
  205. package/packages/arcgis-rest-demographics/src/queryDemographicData.ts +108 -0
  206. package/packages/arcgis-rest-demographics/test/getAvailableCountries.test.ts +89 -0
  207. package/packages/arcgis-rest-demographics/test/getAvailableDataCollections.test.ts +114 -0
  208. package/packages/arcgis-rest-demographics/test/getAvailableGeographyLevels.test.ts +69 -0
  209. package/packages/arcgis-rest-demographics/test/getGeography.test.ts +150 -0
  210. package/packages/arcgis-rest-demographics/test/mocks/responses.ts +4 -0
  211. package/packages/arcgis-rest-demographics/test/queryDemographicData.test.live.ts +50 -0
  212. package/packages/arcgis-rest-demographics/test/queryDemographicData.test.ts +127 -0
  213. package/packages/arcgis-rest-demographics/tsconfig.json +6 -0
  214. package/packages/arcgis-rest-feature-service/CHANGELOG.md +44 -0
  215. package/packages/arcgis-rest-feature-service/README.md +75 -0
  216. package/packages/arcgis-rest-feature-service/package.json +70 -0
  217. package/packages/arcgis-rest-feature-service/src/add.ts +55 -0
  218. package/packages/arcgis-rest-feature-service/src/addAttachment.ts +53 -0
  219. package/packages/arcgis-rest-feature-service/src/addToServiceDefinition.ts +74 -0
  220. package/packages/arcgis-rest-feature-service/src/applyEdits.ts +94 -0
  221. package/packages/arcgis-rest-feature-service/src/createFeatureService.ts +191 -0
  222. package/packages/arcgis-rest-feature-service/src/decodeValues.ts +126 -0
  223. package/packages/arcgis-rest-feature-service/src/delete.ts +62 -0
  224. package/packages/arcgis-rest-feature-service/src/deleteAttachments.ts +52 -0
  225. package/packages/arcgis-rest-feature-service/src/getAllLayersAndTables.ts +30 -0
  226. package/packages/arcgis-rest-feature-service/src/getAttachments.ts +55 -0
  227. package/packages/arcgis-rest-feature-service/src/getLayer.ts +23 -0
  228. package/packages/arcgis-rest-feature-service/src/getService.ts +25 -0
  229. package/packages/arcgis-rest-feature-service/src/getServiceAdminInfo.ts +33 -0
  230. package/packages/arcgis-rest-feature-service/src/getViewSources.ts +19 -0
  231. package/packages/arcgis-rest-feature-service/src/helpers.ts +768 -0
  232. package/packages/arcgis-rest-feature-service/src/index.ts +37 -0
  233. package/packages/arcgis-rest-feature-service/src/query.ts +200 -0
  234. package/packages/arcgis-rest-feature-service/src/queryRelated.ts +86 -0
  235. package/packages/arcgis-rest-feature-service/src/update.ts +65 -0
  236. package/packages/arcgis-rest-feature-service/src/updateAttachment.ts +59 -0
  237. package/packages/arcgis-rest-feature-service/src/updateServiceDefinition.ts +53 -0
  238. package/packages/arcgis-rest-feature-service/test/addToServiceDefinition.test.ts +350 -0
  239. package/packages/arcgis-rest-feature-service/test/attachments.test.ts +188 -0
  240. package/packages/arcgis-rest-feature-service/test/createFeatureService.test.ts +279 -0
  241. package/packages/arcgis-rest-feature-service/test/crud.test.ts +196 -0
  242. package/packages/arcgis-rest-feature-service/test/decodeValues.test.ts +66 -0
  243. package/packages/arcgis-rest-feature-service/test/getAllLayersAndTables.test.ts +27 -0
  244. package/packages/arcgis-rest-feature-service/test/getLayer.test.ts +30 -0
  245. package/packages/arcgis-rest-feature-service/test/getService.test.ts +30 -0
  246. package/packages/arcgis-rest-feature-service/test/getServiceAdminInfo.test.ts +41 -0
  247. package/packages/arcgis-rest-feature-service/test/getViewSources.test.ts +45 -0
  248. package/packages/arcgis-rest-feature-service/test/helpers.test.ts +27 -0
  249. package/packages/arcgis-rest-feature-service/test/mocks/allLayersAndTablesResponse.ts +950 -0
  250. package/packages/arcgis-rest-feature-service/test/mocks/cvdQueryResponse.ts +225 -0
  251. package/packages/arcgis-rest-feature-service/test/mocks/feature.ts +302 -0
  252. package/packages/arcgis-rest-feature-service/test/mocks/fields.ts +779 -0
  253. package/packages/arcgis-rest-feature-service/test/mocks/foo.txt +1 -0
  254. package/packages/arcgis-rest-feature-service/test/mocks/layerDefinition.ts +80 -0
  255. package/packages/arcgis-rest-feature-service/test/mocks/service.ts +476 -0
  256. package/packages/arcgis-rest-feature-service/test/query.test.ts +166 -0
  257. package/packages/arcgis-rest-feature-service/test/updateServiceDefinition.test.ts +103 -0
  258. package/packages/arcgis-rest-feature-service/tsconfig.json +9 -0
  259. package/packages/arcgis-rest-fetch/README.md +17 -0
  260. package/packages/arcgis-rest-fetch/browser-ponyfill.js +8 -0
  261. package/packages/arcgis-rest-fetch/browser-ponyfill.mjs +8 -0
  262. package/packages/arcgis-rest-fetch/index.types.d.ts +8 -0
  263. package/packages/arcgis-rest-fetch/node-ponyfill.js +10 -0
  264. package/packages/arcgis-rest-fetch/node-ponyfill.mjs +10 -0
  265. package/packages/arcgis-rest-fetch/package.json +21 -0
  266. package/packages/arcgis-rest-form-data/README.md +15 -0
  267. package/packages/arcgis-rest-form-data/browser-ponyfill.js +5 -0
  268. package/packages/arcgis-rest-form-data/browser-ponyfill.mjs +3 -0
  269. package/packages/arcgis-rest-form-data/index.types.d.ts +9 -0
  270. package/packages/arcgis-rest-form-data/node-ponyfill.js +7 -0
  271. package/packages/arcgis-rest-form-data/node-ponyfill.mjs +5 -0
  272. package/packages/arcgis-rest-form-data/package.json +21 -0
  273. package/packages/arcgis-rest-geocoding/CHANGELOG.md +26 -0
  274. package/packages/arcgis-rest-geocoding/README.md +85 -0
  275. package/packages/arcgis-rest-geocoding/package.json +69 -0
  276. package/packages/arcgis-rest-geocoding/src/bulk.ts +106 -0
  277. package/packages/arcgis-rest-geocoding/src/geocode.ts +169 -0
  278. package/packages/arcgis-rest-geocoding/src/helpers.ts +56 -0
  279. package/packages/arcgis-rest-geocoding/src/index.ts +17 -0
  280. package/packages/arcgis-rest-geocoding/src/reverse.ts +82 -0
  281. package/packages/arcgis-rest-geocoding/src/suggest.ts +45 -0
  282. package/packages/arcgis-rest-geocoding/test/bulk.test.ts +193 -0
  283. package/packages/arcgis-rest-geocoding/test/geocode.test.ts +254 -0
  284. package/packages/arcgis-rest-geocoding/test/helpers.test.ts +85 -0
  285. package/packages/arcgis-rest-geocoding/test/mocks/responses.ts +1031 -0
  286. package/packages/arcgis-rest-geocoding/test/reverse.test.ts +124 -0
  287. package/packages/arcgis-rest-geocoding/test/suggest.test.ts +53 -0
  288. package/packages/arcgis-rest-geocoding/tsconfig.json +6 -0
  289. package/packages/arcgis-rest-portal/CHANGELOG.md +73 -0
  290. package/packages/arcgis-rest-portal/README.md +72 -0
  291. package/packages/arcgis-rest-portal/package.json +68 -0
  292. package/packages/arcgis-rest-portal/src/groups/add-users.ts +140 -0
  293. package/packages/arcgis-rest-portal/src/groups/create.ts +42 -0
  294. package/packages/arcgis-rest-portal/src/groups/get.ts +187 -0
  295. package/packages/arcgis-rest-portal/src/groups/helpers.ts +14 -0
  296. package/packages/arcgis-rest-portal/src/groups/invite-users.ts +141 -0
  297. package/packages/arcgis-rest-portal/src/groups/join.ts +57 -0
  298. package/packages/arcgis-rest-portal/src/groups/notification.ts +77 -0
  299. package/packages/arcgis-rest-portal/src/groups/protect.ts +56 -0
  300. package/packages/arcgis-rest-portal/src/groups/remove-users.ts +84 -0
  301. package/packages/arcgis-rest-portal/src/groups/remove.ts +32 -0
  302. package/packages/arcgis-rest-portal/src/groups/search.ts +48 -0
  303. package/packages/arcgis-rest-portal/src/groups/update-user-membership.ts +63 -0
  304. package/packages/arcgis-rest-portal/src/groups/update.ts +39 -0
  305. package/packages/arcgis-rest-portal/src/helpers.ts +83 -0
  306. package/packages/arcgis-rest-portal/src/index.ts +68 -0
  307. package/packages/arcgis-rest-portal/src/items/add.ts +145 -0
  308. package/packages/arcgis-rest-portal/src/items/content.ts +70 -0
  309. package/packages/arcgis-rest-portal/src/items/create.ts +149 -0
  310. package/packages/arcgis-rest-portal/src/items/export.ts +92 -0
  311. package/packages/arcgis-rest-portal/src/items/get.ts +444 -0
  312. package/packages/arcgis-rest-portal/src/items/helpers.ts +272 -0
  313. package/packages/arcgis-rest-portal/src/items/protect.ts +41 -0
  314. package/packages/arcgis-rest-portal/src/items/reassign.ts +59 -0
  315. package/packages/arcgis-rest-portal/src/items/remove.ts +139 -0
  316. package/packages/arcgis-rest-portal/src/items/search.ts +25 -0
  317. package/packages/arcgis-rest-portal/src/items/update.ts +188 -0
  318. package/packages/arcgis-rest-portal/src/items/upload.ts +124 -0
  319. package/packages/arcgis-rest-portal/src/orgs/notification.ts +148 -0
  320. package/packages/arcgis-rest-portal/src/services/get-unique-service-name.ts +35 -0
  321. package/packages/arcgis-rest-portal/src/services/is-service-name-available.ts +29 -0
  322. package/packages/arcgis-rest-portal/src/sharing/access.ts +84 -0
  323. package/packages/arcgis-rest-portal/src/sharing/helpers.ts +80 -0
  324. package/packages/arcgis-rest-portal/src/sharing/is-item-shared-with-group.ts +42 -0
  325. package/packages/arcgis-rest-portal/src/sharing/share-item-with-group.ts +335 -0
  326. package/packages/arcgis-rest-portal/src/sharing/unshare-item-with-group.ts +114 -0
  327. package/packages/arcgis-rest-portal/src/users/get-user-tags.ts +52 -0
  328. package/packages/arcgis-rest-portal/src/users/get-user-url.ts +18 -0
  329. package/packages/arcgis-rest-portal/src/users/get-user.ts +60 -0
  330. package/packages/arcgis-rest-portal/src/users/invitation.ts +157 -0
  331. package/packages/arcgis-rest-portal/src/users/notification.ts +67 -0
  332. package/packages/arcgis-rest-portal/src/users/search-users.ts +35 -0
  333. package/packages/arcgis-rest-portal/src/users/update.ts +63 -0
  334. package/packages/arcgis-rest-portal/src/util/SearchQueryBuilder.ts +391 -0
  335. package/packages/arcgis-rest-portal/src/util/array.ts +16 -0
  336. package/packages/arcgis-rest-portal/src/util/generic-search.ts +111 -0
  337. package/packages/arcgis-rest-portal/src/util/get-portal-settings.ts +44 -0
  338. package/packages/arcgis-rest-portal/src/util/get-portal-url.ts +32 -0
  339. package/packages/arcgis-rest-portal/src/util/get-portal.ts +53 -0
  340. package/packages/arcgis-rest-portal/src/util/get-subscription-info.ts +43 -0
  341. package/packages/arcgis-rest-portal/src/util/scrub-control-chars.ts +13 -0
  342. package/packages/arcgis-rest-portal/src/util/search.ts +48 -0
  343. package/packages/arcgis-rest-portal/test/groups/add-users.test.ts +238 -0
  344. package/packages/arcgis-rest-portal/test/groups/crud.test.ts +183 -0
  345. package/packages/arcgis-rest-portal/test/groups/get.test.ts +174 -0
  346. package/packages/arcgis-rest-portal/test/groups/invite-users.test.ts +146 -0
  347. package/packages/arcgis-rest-portal/test/groups/join.test.ts +71 -0
  348. package/packages/arcgis-rest-portal/test/groups/notification.test.ts +111 -0
  349. package/packages/arcgis-rest-portal/test/groups/protect.test.ts +71 -0
  350. package/packages/arcgis-rest-portal/test/groups/remove-users.test.ts +140 -0
  351. package/packages/arcgis-rest-portal/test/groups/search.test.ts +151 -0
  352. package/packages/arcgis-rest-portal/test/groups/update-user-membership.test.ts +64 -0
  353. package/packages/arcgis-rest-portal/test/items/add.test.ts +320 -0
  354. package/packages/arcgis-rest-portal/test/items/content.test.ts +161 -0
  355. package/packages/arcgis-rest-portal/test/items/create.test.ts +404 -0
  356. package/packages/arcgis-rest-portal/test/items/export.test.ts +115 -0
  357. package/packages/arcgis-rest-portal/test/items/get.test.ts +606 -0
  358. package/packages/arcgis-rest-portal/test/items/helpers.test.ts +60 -0
  359. package/packages/arcgis-rest-portal/test/items/protect.test.ts +120 -0
  360. package/packages/arcgis-rest-portal/test/items/reassign.test.ts +130 -0
  361. package/packages/arcgis-rest-portal/test/items/remove.test.ts +259 -0
  362. package/packages/arcgis-rest-portal/test/items/search.test.ts +274 -0
  363. package/packages/arcgis-rest-portal/test/items/update.test.ts +549 -0
  364. package/packages/arcgis-rest-portal/test/items/upload.test.ts +286 -0
  365. package/packages/arcgis-rest-portal/test/mocks/groups/responses.ts +208 -0
  366. package/packages/arcgis-rest-portal/test/mocks/items/foo.zip +0 -0
  367. package/packages/arcgis-rest-portal/test/mocks/items/item.ts +526 -0
  368. package/packages/arcgis-rest-portal/test/mocks/items/resources.ts +38 -0
  369. package/packages/arcgis-rest-portal/test/mocks/items/search.ts +121 -0
  370. package/packages/arcgis-rest-portal/test/mocks/portal/response.ts +126 -0
  371. package/packages/arcgis-rest-portal/test/mocks/portal/settings-response.ts +56 -0
  372. package/packages/arcgis-rest-portal/test/mocks/sharing/sharing.ts +18 -0
  373. package/packages/arcgis-rest-portal/test/mocks/users/invitation.ts +70 -0
  374. package/packages/arcgis-rest-portal/test/mocks/users/notification.ts +34 -0
  375. package/packages/arcgis-rest-portal/test/mocks/users/user-search.ts +388 -0
  376. package/packages/arcgis-rest-portal/test/mocks/users/user-tags.ts +5 -0
  377. package/packages/arcgis-rest-portal/test/mocks/users/user.ts +174 -0
  378. package/packages/arcgis-rest-portal/test/orgs/notification.test.ts +142 -0
  379. package/packages/arcgis-rest-portal/test/services/get-unique-service-name.test.ts +64 -0
  380. package/packages/arcgis-rest-portal/test/services/is-service-name-available.test.ts +41 -0
  381. package/packages/arcgis-rest-portal/test/sharing/access.test.ts +162 -0
  382. package/packages/arcgis-rest-portal/test/sharing/helpers.test.ts +55 -0
  383. package/packages/arcgis-rest-portal/test/sharing/share-item-with-group.test.ts +1328 -0
  384. package/packages/arcgis-rest-portal/test/sharing/unshare-item-with-group.test.ts +288 -0
  385. package/packages/arcgis-rest-portal/test/users/get-user-tags.test.ts +71 -0
  386. package/packages/arcgis-rest-portal/test/users/get-user-url.test.ts +40 -0
  387. package/packages/arcgis-rest-portal/test/users/get-user.test.ts +90 -0
  388. package/packages/arcgis-rest-portal/test/users/invitation.test.ts +126 -0
  389. package/packages/arcgis-rest-portal/test/users/notification.test.ts +76 -0
  390. package/packages/arcgis-rest-portal/test/users/search.test.ts +41 -0
  391. package/packages/arcgis-rest-portal/test/users/update.test.ts +150 -0
  392. package/packages/arcgis-rest-portal/test/util/SearchQueryBuilder.test.ts +295 -0
  393. package/packages/arcgis-rest-portal/test/util/array.test.ts +33 -0
  394. package/packages/arcgis-rest-portal/test/util/get-portal-settings.test.ts +57 -0
  395. package/packages/arcgis-rest-portal/test/util/get-portal-url.test.ts +37 -0
  396. package/packages/arcgis-rest-portal/test/util/portal.test.ts +137 -0
  397. package/packages/arcgis-rest-portal/test/util/scrub-control-chars.test.ts +25 -0
  398. package/packages/arcgis-rest-portal/tsconfig.json +6 -0
  399. package/packages/arcgis-rest-request/README.md +72 -0
  400. package/packages/arcgis-rest-request/package.json +69 -0
  401. package/packages/arcgis-rest-request/post-message-auth-spec.md +70 -0
  402. package/packages/arcgis-rest-request/src/ApiKeyManager.ts +60 -0
  403. package/packages/arcgis-rest-request/src/ApplicationCredentialsManager.ts +141 -0
  404. package/packages/arcgis-rest-request/src/ArcGISIdentityManager.ts +1470 -0
  405. package/packages/arcgis-rest-request/src/app-tokens.ts +132 -0
  406. package/packages/arcgis-rest-request/src/authenticated-request-options.ts +23 -0
  407. package/packages/arcgis-rest-request/src/federation-utils.ts +88 -0
  408. package/packages/arcgis-rest-request/src/fetch-token.ts +48 -0
  409. package/packages/arcgis-rest-request/src/generate-token.ts +32 -0
  410. package/packages/arcgis-rest-request/src/index.ts +46 -0
  411. package/packages/arcgis-rest-request/src/request.ts +446 -0
  412. package/packages/arcgis-rest-request/src/revoke-token.ts +73 -0
  413. package/packages/arcgis-rest-request/src/types/feature.ts +42 -0
  414. package/packages/arcgis-rest-request/src/types/geometry.ts +239 -0
  415. package/packages/arcgis-rest-request/src/types/group.ts +72 -0
  416. package/packages/arcgis-rest-request/src/types/service.ts +87 -0
  417. package/packages/arcgis-rest-request/src/types/symbol.ts +21 -0
  418. package/packages/arcgis-rest-request/src/types/user.ts +49 -0
  419. package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +82 -0
  420. package/packages/arcgis-rest-request/src/utils/ErrorTypes.ts +29 -0
  421. package/packages/arcgis-rest-request/src/utils/GrantTypes.ts +5 -0
  422. package/packages/arcgis-rest-request/src/utils/HTTPMethods.ts +6 -0
  423. package/packages/arcgis-rest-request/src/utils/IAuthenticationManager.ts +22 -0
  424. package/packages/arcgis-rest-request/src/utils/IFetchTokenParams.ts +11 -0
  425. package/packages/arcgis-rest-request/src/utils/IGenerateTokenParams.ts +9 -0
  426. package/packages/arcgis-rest-request/src/utils/IParamBuilder.ts +3 -0
  427. package/packages/arcgis-rest-request/src/utils/IParams.ts +6 -0
  428. package/packages/arcgis-rest-request/src/utils/IParamsBuilder.ts +5 -0
  429. package/packages/arcgis-rest-request/src/utils/IRequestOptions.ts +59 -0
  430. package/packages/arcgis-rest-request/src/utils/ITokenRequestOptions.ts +9 -0
  431. package/packages/arcgis-rest-request/src/utils/ResponseFormats.ts +10 -0
  432. package/packages/arcgis-rest-request/src/utils/append-custom-params.ts +46 -0
  433. package/packages/arcgis-rest-request/src/utils/clean-url.ts +20 -0
  434. package/packages/arcgis-rest-request/src/utils/decode-query-string.ts +27 -0
  435. package/packages/arcgis-rest-request/src/utils/encode-form-data.ts +41 -0
  436. package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +37 -0
  437. package/packages/arcgis-rest-request/src/utils/process-params.ts +109 -0
  438. package/packages/arcgis-rest-request/src/utils/retryAuthError.ts +10 -0
  439. package/packages/arcgis-rest-request/src/utils/warn.ts +11 -0
  440. package/packages/arcgis-rest-request/src/utils/with-options.ts +48 -0
  441. package/packages/arcgis-rest-request/src/validate-app-access.ts +69 -0
  442. package/packages/arcgis-rest-request/test/ApiKey.test.ts +53 -0
  443. package/packages/arcgis-rest-request/test/ApplicationSession.test.ts +148 -0
  444. package/packages/arcgis-rest-request/test/ArcGISIdentityManager.test.ts +2579 -0
  445. package/packages/arcgis-rest-request/test/app-tokens.test.ts +91 -0
  446. package/packages/arcgis-rest-request/test/federation-utils.test.ts +323 -0
  447. package/packages/arcgis-rest-request/test/fetchToken.test.ts +110 -0
  448. package/packages/arcgis-rest-request/test/generateToken.test.ts +40 -0
  449. package/packages/arcgis-rest-request/test/mocks/errors.ts +76 -0
  450. package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +13 -0
  451. package/packages/arcgis-rest-request/test/mocks/param-builder.ts +7 -0
  452. package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +41 -0
  453. package/packages/arcgis-rest-request/test/mocks/webmap.ts +41 -0
  454. package/packages/arcgis-rest-request/test/request.test.ts +563 -0
  455. package/packages/arcgis-rest-request/test/revoke-token.test.ts +55 -0
  456. package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +196 -0
  457. package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +51 -0
  458. package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +111 -0
  459. package/packages/arcgis-rest-request/test/utils/clean-url.test.ts +50 -0
  460. package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +146 -0
  461. package/packages/arcgis-rest-request/test/utils/encode-query-string.test.ts +22 -0
  462. package/packages/arcgis-rest-request/test/utils/process-params.test.ts +205 -0
  463. package/packages/arcgis-rest-request/test/utils/with-options.test.ts +135 -0
  464. package/packages/arcgis-rest-request/test/validate-app-access.test.ts +44 -0
  465. package/packages/arcgis-rest-request/tsconfig.json +4 -0
  466. package/packages/arcgis-rest-routing/README.md +74 -0
  467. package/packages/arcgis-rest-routing/package.json +69 -0
  468. package/packages/arcgis-rest-routing/src/closestFacility.ts +223 -0
  469. package/packages/arcgis-rest-routing/src/helpers.ts +104 -0
  470. package/packages/arcgis-rest-routing/src/index.ts +20 -0
  471. package/packages/arcgis-rest-routing/src/originDestinationMatrix.ts +219 -0
  472. package/packages/arcgis-rest-routing/src/serviceArea.ts +169 -0
  473. package/packages/arcgis-rest-routing/src/solveRoute.ts +179 -0
  474. package/packages/arcgis-rest-routing/test/closestFacility.test.ts +686 -0
  475. package/packages/arcgis-rest-routing/test/mocks/inputs.ts +132 -0
  476. package/packages/arcgis-rest-routing/test/mocks/responses.ts +13316 -0
  477. package/packages/arcgis-rest-routing/test/originDestinationMatrix.test.ts +795 -0
  478. package/packages/arcgis-rest-routing/test/serviceArea.test.ts +601 -0
  479. package/packages/arcgis-rest-routing/test/solveRoute.test.ts +681 -0
  480. package/packages/arcgis-rest-routing/tsconfig.json +6 -0
  481. package/prettier-package-json.config.cjs +81 -0
  482. package/rollup.js +152 -0
  483. package/scripts/create-dist-package-jsons.js +17 -0
  484. package/scripts/deploy-doc-site.js +16 -0
  485. package/scripts/generate-sri-hashes.js +52 -0
  486. package/scripts/get-package-json.js +27 -0
  487. package/scripts/run-demo-server.js +21 -0
  488. package/scripts/test-helpers.ts +20 -0
  489. package/tsconfig.json +62 -0
  490. package/typedoc.json +14 -0
@@ -0,0 +1,106 @@
1
+ /* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { request, cleanUrl, ISpatialReference, IPoint } from "@esri/arcgis-rest-request";
5
+
6
+ import {
7
+ ARCGIS_ONLINE_BULK_GEOCODING_URL,
8
+ IEndpointOptions
9
+ } from "./helpers.js";
10
+
11
+ // It would be better if doc did not display these properties in alphabetical order
12
+ export interface IAddressBulk {
13
+ /**
14
+ * A unique id must be passed along for each individual address.
15
+ */
16
+ OBJECTID: number;
17
+ address?: string;
18
+ address2?: string;
19
+ address3?: string;
20
+ neighborhood?: string;
21
+ city?: string;
22
+ subregion?: string;
23
+ /**
24
+ * The World Geocoding Service considers US states regions.
25
+ */
26
+ region?: string;
27
+ postal?: number;
28
+ postalExt?: number;
29
+ countryCode?: string;
30
+ }
31
+
32
+ export interface IBulkGeocodeOptions extends IEndpointOptions {
33
+ addresses: IAddressBulk[];
34
+ }
35
+
36
+ export interface IBulkGeocodeResponse {
37
+ spatialReference: ISpatialReference;
38
+ locations: Array<{
39
+ address: string;
40
+ location?: IPoint; // candidates with a score of 0 wont include a location
41
+ score: number;
42
+ attributes: object;
43
+ }>;
44
+ }
45
+
46
+ /**
47
+ * ```js
48
+ * import { bulkGeocode } from '@esri/arcgis-rest-geocoding';
49
+ * import { ApplicationSession } from '@esri/arcgis-rest-auth';
50
+ * //
51
+ * const addresses = [
52
+ * { "OBJECTID": 1, "SingleLine": "380 New York Street 92373" },
53
+ * { "OBJECTID": 2, "SingleLine": "1 World Way Los Angeles 90045" }
54
+ * ];
55
+ * //
56
+ * bulkGeocode({ addresses, authentication: session })
57
+ * .then((response) => {
58
+ * response.locations[0].location; // => { x: -117, y: 34, spatialReference: { wkid: 4326 } }
59
+ * });
60
+ * ```
61
+ * Used to geocode a [batch](https://developers.arcgis.com/rest/geocode/api-reference/geocoding-geocode-addresses.htm) of addresses.
62
+ *
63
+ * @param requestOptions - Request options to pass to the geocoder, including an array of addresses and authentication session.
64
+ * @returns A Promise that will resolve with the data from the response. The spatial reference will be added to address locations unless `rawResponse: true` was passed.
65
+ */
66
+ export function bulkGeocode(
67
+ requestOptions: IBulkGeocodeOptions // must POST, which is the default
68
+ ): Promise<IBulkGeocodeResponse> {
69
+ const options: IBulkGeocodeOptions = {
70
+ endpoint: ARCGIS_ONLINE_BULK_GEOCODING_URL,
71
+ params: {},
72
+ ...requestOptions
73
+ };
74
+
75
+ options.params.addresses = {
76
+ records: requestOptions.addresses.map((address) => {
77
+ return { attributes: address };
78
+ })
79
+ };
80
+
81
+ // the SAS service does not support anonymous requests
82
+ if (
83
+ !requestOptions.authentication &&
84
+ options.endpoint === ARCGIS_ONLINE_BULK_GEOCODING_URL
85
+ ) {
86
+ return Promise.reject(
87
+ "bulk geocoding using the ArcGIS service requires authentication"
88
+ );
89
+ }
90
+
91
+ return request(
92
+ `${cleanUrl(options.endpoint)}/geocodeAddresses`,
93
+ options
94
+ ).then((response) => {
95
+ if (options.rawResponse) {
96
+ return response;
97
+ }
98
+ const sr = response.spatialReference;
99
+ response.locations.forEach(function (address: { location: IPoint }) {
100
+ if (address.location) {
101
+ address.location.spatialReference = sr;
102
+ }
103
+ });
104
+ return response;
105
+ });
106
+ }
@@ -0,0 +1,169 @@
1
+ /* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import {
5
+ request,
6
+ cleanUrl,
7
+ appendCustomParams,
8
+ IExtent,
9
+ ISpatialReference,
10
+ IPoint
11
+ } from "@esri/arcgis-rest-request";
12
+
13
+ import { ARCGIS_ONLINE_GEOCODING_URL, IEndpointOptions } from "./helpers.js";
14
+
15
+ import { arcgisToGeoJSON } from "@terraformer/arcgis";
16
+
17
+ export interface IGeocodeOptions extends IEndpointOptions {
18
+ /**
19
+ * use this if all your address info is contained in a single string.
20
+ */
21
+ singleLine?: string;
22
+ address?: string;
23
+ address2?: string;
24
+ address3?: string;
25
+ neighborhood?: string;
26
+ city?: string;
27
+ subregion?: string;
28
+ outFields?: "*" | string[];
29
+ /**
30
+ * The World Geocoding Service expects US states to be passed in as a 'region'.
31
+ */
32
+ region?: string;
33
+ postal?: number;
34
+ postalExt?: number;
35
+ countryCode?: string;
36
+ /**
37
+ * You can create an autocomplete experience by making a call to suggest with partial text and then passing through the magicKey and complete address that are returned to geocode.
38
+ *
39
+ * ```js
40
+ * import { suggest, geocode } from '@esri/arcgis-rest-geocoding';
41
+ *
42
+ * suggest("LAX")
43
+ * .then((response) => {
44
+ * geocode({
45
+ * singleLine: response.suggestions[1].text,
46
+ * magicKey: response.suggestions[0].magicKey
47
+ * })
48
+ * })
49
+ * ```
50
+ */
51
+ magicKey?: string;
52
+ }
53
+
54
+ export interface IGeocodeResponse {
55
+ spatialReference: ISpatialReference;
56
+ candidates: Array<{
57
+ address: string;
58
+ location: IPoint;
59
+ extent?: IExtent;
60
+ score: number;
61
+ attributes: object;
62
+ }>;
63
+ geoJson?: {
64
+ type: string;
65
+ features: Array<{
66
+ type: string;
67
+ geometry: object;
68
+ properties: any;
69
+ }>;
70
+ };
71
+ }
72
+
73
+ /**
74
+ * ```js
75
+ * import { geocode } from '@esri/arcgis-rest-geocoding';
76
+ * //
77
+ * geocode("LAX")
78
+ * .then((response) => {
79
+ * response.candidates[0].location; // => { x: -118.409, y: 33.943, spatialReference: ... }
80
+ * });
81
+ * //
82
+ * geocode({
83
+ * address: "1600 Pennsylvania Ave",
84
+ * postal: 20500,
85
+ * countryCode: "USA"
86
+ * })
87
+ * .then((response) => {
88
+ * response.candidates[1].location; // => { x: -77.036533, y: 38.898719, spatialReference: ... }
89
+ * });
90
+ * ```
91
+ * Used to determine the location of a single address or point of interest. See the [REST Documentation](https://developers.arcgis.com/rest/geocode/api-reference/geocoding-find-address-candidates.htm) for more information.
92
+ * @param address String representing the address or point of interest or RequestOptions to pass to the endpoint.
93
+ * @returns A Promise that will resolve with address candidates for the request. The spatial reference will be added to candidate locations and extents unless `rawResponse: true` was passed.
94
+ */
95
+ export function geocode(
96
+ address: string | IGeocodeOptions
97
+ ): Promise<IGeocodeResponse> {
98
+ let options: IGeocodeOptions = {};
99
+ let endpoint: string;
100
+
101
+ if (typeof address === "string") {
102
+ options.params = { singleLine: address };
103
+ endpoint = ARCGIS_ONLINE_GEOCODING_URL;
104
+ } else {
105
+ endpoint = address.endpoint || ARCGIS_ONLINE_GEOCODING_URL;
106
+ options = appendCustomParams<IGeocodeOptions>(
107
+ address,
108
+ [
109
+ "singleLine",
110
+ "address",
111
+ "address2",
112
+ "address3",
113
+ "neighborhood",
114
+ "city",
115
+ "subregion",
116
+ "region",
117
+ "postal",
118
+ "postalExt",
119
+ "countryCode",
120
+ "outFields",
121
+ "magicKey"
122
+ ],
123
+ { params: { ...address.params } }
124
+ );
125
+ }
126
+
127
+ // add spatialReference property to individual matches
128
+ return request(`${cleanUrl(endpoint)}/findAddressCandidates`, options).then(
129
+ (response) => {
130
+ if (typeof address !== "string" && address.rawResponse) {
131
+ return response;
132
+ }
133
+ const sr: ISpatialReference = response.spatialReference;
134
+ response.candidates.forEach(function (candidate: {
135
+ location: IPoint;
136
+ extent?: IExtent;
137
+ }) {
138
+ candidate.location.spatialReference = sr;
139
+ if (candidate.extent) {
140
+ candidate.extent.spatialReference = sr;
141
+ }
142
+ });
143
+
144
+ // geoJson
145
+ if (sr.wkid === 4326) {
146
+ const features = response.candidates.map((candidate: any) => {
147
+ return {
148
+ type: "Feature",
149
+ geometry: arcgisToGeoJSON(candidate.location),
150
+ properties: Object.assign(
151
+ {
152
+ address: candidate.address,
153
+ score: candidate.score
154
+ },
155
+ candidate.attributes
156
+ )
157
+ };
158
+ });
159
+
160
+ response.geoJson = {
161
+ type: "FeatureCollection",
162
+ features
163
+ };
164
+ }
165
+
166
+ return response;
167
+ }
168
+ );
169
+ }
@@ -0,0 +1,56 @@
1
+ /* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { request, IRequestOptions } from "@esri/arcgis-rest-request";
5
+
6
+ // https always
7
+ export const ARCGIS_ONLINE_GEOCODING_URL =
8
+ "https://geocode-api.arcgis.com/arcgis/rest/services/World/GeocodeServer/";
9
+ export const ARCGIS_ONLINE_BULK_GEOCODING_URL =
10
+ "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/";
11
+
12
+ // nice to have: verify custom endpoints contain 'GeocodeServer' and end in a '/'
13
+ export interface IEndpointOptions extends IRequestOptions {
14
+ /**
15
+ * Any ArcGIS Geocoding service (example: http://sampleserver6.arcgisonline.com/arcgis/rest/services/Locators/SanDiego/GeocodeServer )
16
+ */
17
+ endpoint?: string;
18
+ }
19
+
20
+ export interface IGetGeocodeServiceResponse {
21
+ currentVersion: number;
22
+ serviceDescription: string;
23
+ addressFields: any[];
24
+ countries: string[];
25
+ capabilities: string;
26
+ }
27
+
28
+ /**
29
+ * Used to fetch metadata from a geocoding service.
30
+ *
31
+ * ```js
32
+ * import { getGeocoderServiceInfo } from '@esri/arcgis-rest-geocoding';
33
+ *
34
+ * getGeocoderServiceInfo()
35
+ * .then((response) => {
36
+ * response.serviceDescription; // => 'World Geocoder'
37
+ * });
38
+ * ```
39
+ *
40
+ * @param requestOptions - Request options can contain a custom geocoding service to fetch metadata from.
41
+ * @returns A Promise that will resolve with the data from the response.
42
+ */
43
+ export function getGeocodeService(
44
+ requestOptions?: IEndpointOptions
45
+ ): Promise<IGetGeocodeServiceResponse> {
46
+ const url =
47
+ (requestOptions && requestOptions.endpoint) || ARCGIS_ONLINE_GEOCODING_URL;
48
+
49
+ const options: IEndpointOptions = {
50
+ httpMethod: "GET",
51
+ maxUrlLength: 2000,
52
+ ...requestOptions
53
+ };
54
+
55
+ return request(url, options);
56
+ }
@@ -0,0 +1,17 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ export * from "./geocode.js";
5
+ export * from "./suggest.js";
6
+ export * from "./reverse.js";
7
+ export * from "./bulk.js";
8
+ export * from "./helpers.js";
9
+
10
+ // Types that are used in this package are re-exported for convenience and
11
+ // to make the links work correctly in the documentation pages.
12
+ export type {
13
+ IPoint,
14
+ ILocation,
15
+ IExtent,
16
+ ISpatialReference
17
+ } from "@esri/arcgis-rest-request";
@@ -0,0 +1,82 @@
1
+ /* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { request, cleanUrl, IPoint, ILocation } from "@esri/arcgis-rest-request";
5
+
6
+ import { ARCGIS_ONLINE_GEOCODING_URL, IEndpointOptions } from "./helpers.js";
7
+
8
+ export interface IReverseGeocodeResponse {
9
+ address: {
10
+ [key: string]: any;
11
+ };
12
+ location: IPoint;
13
+ }
14
+
15
+ function isLocationArray(
16
+ coords: ILocation | IPoint | [number, number] | [number, number, number]
17
+ ): coords is [number, number] | [number, number, number] {
18
+ return (
19
+ (coords as [number, number]).length === 2 ||
20
+ (coords as [number, number, number]).length === 3
21
+ );
22
+ }
23
+
24
+ function isLocation(
25
+ coords: ILocation | IPoint | [number, number] | [number, number, number]
26
+ ): coords is ILocation {
27
+ return (
28
+ (coords as ILocation).latitude !== undefined ||
29
+ (coords as ILocation).lat !== undefined
30
+ );
31
+ }
32
+
33
+ /**
34
+ * ```js
35
+ * import { reverseGeocode } from '@esri/arcgis-rest-geocoding';
36
+ * //
37
+ * reverseGeocode([-118.409,33.943 ]) // long, lat
38
+ * .then((response) => {
39
+ * response.address.PlaceName; // => "LA Airport"
40
+ * });
41
+ * // or
42
+ * reverseGeocode({ long: -118.409, lat: 33.943 })
43
+ * reverseGeocode({ latitude: 33.943, latitude: -118.409 })
44
+ * reverseGeocode({ x: -118.409, y: 33.9425 }) // wgs84 is assumed
45
+ * reverseGeocode({ x: -13181226, y: 4021085, spatialReference: { wkid: 3857 })
46
+ * ```
47
+ * Used to determine the address of a [location](https://developers.arcgis.com/rest/geocode/api-reference/geocoding-reverse-geocode.htm).
48
+ *
49
+ * @param coordinates - the location you'd like to associate an address with.
50
+ * @param requestOptions - Additional options for the request including authentication.
51
+ * @returns A Promise that will resolve with the data from the response.
52
+ */
53
+ export function reverseGeocode(
54
+ coords: IPoint | ILocation | [number, number],
55
+ requestOptions?: IEndpointOptions
56
+ ): Promise<IReverseGeocodeResponse> {
57
+ const options: IEndpointOptions = {
58
+ endpoint: ARCGIS_ONLINE_GEOCODING_URL,
59
+ params: {},
60
+ ...requestOptions
61
+ };
62
+
63
+ if (isLocationArray(coords)) {
64
+ options.params.location = coords.join();
65
+ } else if (isLocation(coords)) {
66
+ if (coords.lat) {
67
+ options.params.location = coords.long + "," + coords.lat;
68
+ }
69
+ if (coords.latitude) {
70
+ options.params.location = coords.longitude + "," + coords.latitude;
71
+ }
72
+ } else {
73
+ // if input is a point, we can pass it straight through, with or without a spatial reference
74
+ options.params.location = coords;
75
+ }
76
+
77
+ return request(`${cleanUrl(options.endpoint)}/reverseGeocode`, options);
78
+ }
79
+
80
+ export default {
81
+ reverseGeocode
82
+ };
@@ -0,0 +1,45 @@
1
+ /* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { request, cleanUrl } from "@esri/arcgis-rest-request";
5
+
6
+ import { ARCGIS_ONLINE_GEOCODING_URL, IEndpointOptions } from "./helpers.js";
7
+
8
+ export interface ISuggestResponse {
9
+ suggestions: Array<{
10
+ text: string;
11
+ magicKey: string;
12
+ isCollection: boolean;
13
+ }>;
14
+ }
15
+
16
+ /**
17
+ * ```js
18
+ * import { suggest } from '@esri/arcgis-rest-geocoding';
19
+ * //
20
+ * suggest("Starb")
21
+ * .then(response) // response.text === "Starbucks"
22
+ * ```
23
+ * Used to return a placename [suggestion](https://developers.arcgis.com/rest/geocode/api-reference/geocoding-suggest.htm) for a partial string.
24
+ *
25
+ * @param requestOptions - Options for the request including authentication and other optional parameters.
26
+ * @returns A Promise that will resolve with the data from the response.
27
+ */
28
+ export function suggest(
29
+ partialText: string,
30
+ requestOptions?: IEndpointOptions
31
+ ): Promise<ISuggestResponse> {
32
+ const options: IEndpointOptions = {
33
+ endpoint: ARCGIS_ONLINE_GEOCODING_URL,
34
+ params: {},
35
+ ...requestOptions
36
+ };
37
+
38
+ options.params.text = partialText;
39
+
40
+ return request(`${cleanUrl(options.endpoint)}/suggest`, options);
41
+ }
42
+
43
+ export default {
44
+ suggest
45
+ };
@@ -0,0 +1,193 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import fetchMock from "fetch-mock";
5
+ import { bulkGeocode } from "../src/bulk.js";
6
+ import { GeocodeAddresses } from "./mocks/responses.js";
7
+
8
+ const addresses = [
9
+ {
10
+ OBJECTID: 1,
11
+ SingleLine: "380 New York St. Redlands 92373"
12
+ },
13
+ {
14
+ OBJECTID: 2,
15
+ SingleLine: "1 World Way Los Angeles 90045"
16
+ },
17
+ {
18
+ OBJECTID: 3,
19
+ SingleLine: "foo bar baz"
20
+ }
21
+ ];
22
+
23
+ describe("geocode", () => {
24
+ afterEach(fetchMock.restore);
25
+
26
+ it("should make a bulk geocoding request, even with an unmatchable record", (done) => {
27
+ fetchMock.once("*", GeocodeAddresses);
28
+
29
+ const MOCK_AUTH = {
30
+ getToken() {
31
+ return Promise.resolve("token");
32
+ },
33
+ portal: "https://mapsdev.arcgis.com"
34
+ };
35
+
36
+ bulkGeocode({ addresses, authentication: MOCK_AUTH })
37
+ .then((response) => {
38
+ expect(fetchMock.called()).toEqual(true);
39
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
40
+ expect(url).toEqual(
41
+ "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/geocodeAddresses"
42
+ );
43
+ expect(options.method).toBe("POST");
44
+ expect(options.body).toContain("f=json");
45
+ expect(options.body).toContain(
46
+ `addresses=${encodeURIComponent(
47
+ '{"records":[{"attributes":{"OBJECTID":1,"SingleLine":"380 New York St. Redlands 92373"}},{"attributes":{"OBJECTID":2,"SingleLine":"1 World Way Los Angeles 90045"}},{"attributes":{"OBJECTID":3,"SingleLine":"foo bar baz"}}]}'
48
+ )}`
49
+ );
50
+ expect(options.body).toContain("token=token");
51
+ expect(response.spatialReference.latestWkid).toEqual(4326);
52
+ expect(response.locations[0].address).toEqual(
53
+ "380 New York St, Redlands, California, 92373"
54
+ );
55
+ expect(response.locations[0].location.x).toEqual(-117.19567031799994);
56
+ // the only property this lib tacks on
57
+ expect(response.locations[0].location.spatialReference.wkid).toEqual(
58
+ 4326
59
+ );
60
+ expect(response.locations[2].score).toEqual(0);
61
+ done();
62
+ })
63
+ .catch((e) => {
64
+ fail(e);
65
+ });
66
+ });
67
+
68
+ it("should throw an error when a bulk geocoding request is made without a token", (done) => {
69
+ fetchMock.once("*", GeocodeAddresses);
70
+
71
+ bulkGeocode({ addresses })
72
+ // tslint:disable-next-line
73
+ .catch((e) => {
74
+ expect(e).toEqual(
75
+ "bulk geocoding using the ArcGIS service requires authentication"
76
+ );
77
+ done();
78
+ });
79
+ });
80
+
81
+ it("should send a bulk geocoding request to a custom url without a token", (done) => {
82
+ fetchMock.once("*", GeocodeAddresses);
83
+
84
+ bulkGeocode({
85
+ addresses,
86
+ endpoint:
87
+ "https://customer.gov/arcgis/rest/services/CompositeGeocoder/GeocodeServer/"
88
+ })
89
+ // tslint:disable-next-line
90
+ .then((response) => {
91
+ expect(fetchMock.called()).toEqual(true);
92
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
93
+ expect(url).toEqual(
94
+ "https://customer.gov/arcgis/rest/services/CompositeGeocoder/GeocodeServer/geocodeAddresses"
95
+ );
96
+ expect(options.method).toBe("POST");
97
+ expect(options.body).toContain("f=json");
98
+ expect(options.body).toContain(
99
+ `addresses=${encodeURIComponent(
100
+ '{"records":[{"attributes":{"OBJECTID":1,"SingleLine":"380 New York St. Redlands 92373"}},{"attributes":{"OBJECTID":2,"SingleLine":"1 World Way Los Angeles 90045"}},{"attributes":{"OBJECTID":3,"SingleLine":"foo bar baz"}}]}'
101
+ )}`
102
+ );
103
+ // expect(options.body).toContain("token=token");
104
+ expect(response.spatialReference.latestWkid).toEqual(4326);
105
+ expect(response.locations[0].address).toEqual(
106
+ "380 New York St, Redlands, California, 92373"
107
+ );
108
+ expect(response.locations[0].location.x).toEqual(-117.19567031799994);
109
+ // the only property this lib tacks on
110
+ expect(response.locations[0].location.spatialReference.wkid).toEqual(
111
+ 4326
112
+ );
113
+ expect(response.locations[2].address).toEqual("foo bar baz");
114
+ done();
115
+ });
116
+ });
117
+
118
+ it("should send a bulk geocoding request with params correctly", (done) => {
119
+ fetchMock.once("*", GeocodeAddresses);
120
+
121
+ bulkGeocode({
122
+ addresses,
123
+ endpoint:
124
+ "https://customer.gov/arcgis/rest/services/CompositeGeocoder/GeocodeServer/",
125
+ params: {
126
+ outSR: 4326,
127
+ forStorage: true
128
+ }
129
+ })
130
+ // tslint:disable-next-line
131
+ .then((response) => {
132
+ expect(fetchMock.called()).toEqual(true);
133
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
134
+ expect(url).toEqual(
135
+ "https://customer.gov/arcgis/rest/services/CompositeGeocoder/GeocodeServer/geocodeAddresses"
136
+ );
137
+ expect(options.method).toBe("POST");
138
+ expect(options.body).toContain("f=json");
139
+ expect(options.body).toContain("outSR=4326");
140
+ expect(options.body).toContain("forStorage=true");
141
+ expect(options.body).toContain(
142
+ `addresses=${encodeURIComponent(
143
+ '{"records":[{"attributes":{"OBJECTID":1,"SingleLine":"380 New York St. Redlands 92373"}},{"attributes":{"OBJECTID":2,"SingleLine":"1 World Way Los Angeles 90045"}},{"attributes":{"OBJECTID":3,"SingleLine":"foo bar baz"}}]}'
144
+ )}`
145
+ );
146
+ // expect(options.body).toContain("token=token");
147
+ expect(response.spatialReference.latestWkid).toEqual(4326);
148
+ expect(response.locations[0].address).toEqual(
149
+ "380 New York St, Redlands, California, 92373"
150
+ );
151
+ expect(response.locations[0].location.x).toEqual(-117.19567031799994);
152
+ // the only property this lib tacks on
153
+ expect(response.locations[0].location.spatialReference.wkid).toEqual(
154
+ 4326
155
+ );
156
+ expect(response.locations[2].address).toEqual("foo bar baz");
157
+ done();
158
+ });
159
+ });
160
+
161
+ it("should support rawResponse", (done) => {
162
+ fetchMock.once("*", GeocodeAddresses);
163
+
164
+ const MOCK_AUTH = {
165
+ getToken() {
166
+ return Promise.resolve("token");
167
+ },
168
+ portal: "https://mapsdev.arcgis.com"
169
+ };
170
+
171
+ bulkGeocode({ addresses, authentication: MOCK_AUTH, rawResponse: true })
172
+ .then((response: any) => {
173
+ expect(fetchMock.called()).toEqual(true);
174
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
175
+ expect(url).toEqual(
176
+ "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/geocodeAddresses"
177
+ );
178
+ expect(options.method).toBe("POST");
179
+ expect(response.status).toBe(200);
180
+ expect(response.ok).toBe(true);
181
+ expect(response.body.Readable).not.toBe(null);
182
+ response.json().then((raw: any) => {
183
+ expect(raw).toEqual(GeocodeAddresses);
184
+ done();
185
+ });
186
+ // this used to work with isomorphic-fetch
187
+ // expect(response instanceof Response).toBe(true);
188
+ })
189
+ .catch((e) => {
190
+ fail(e);
191
+ });
192
+ });
193
+ });