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,223 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import {
5
+ request,
6
+ cleanUrl,
7
+ appendCustomParams,
8
+ ILocation,
9
+ IPoint,
10
+ IFeature,
11
+ IFeatureSet
12
+ } from "@esri/arcgis-rest-request";
13
+
14
+ import {
15
+ ARCGIS_ONLINE_CLOSEST_FACILITY_URL,
16
+ IEndpointOptions,
17
+ normalizeLocationsList,
18
+ isFeatureSet
19
+ } from "./helpers.js";
20
+
21
+ import { arcgisToGeoJSON } from "@terraformer/arcgis";
22
+
23
+ export interface IClosestFacilityOptions extends IEndpointOptions {
24
+ /**
25
+ * Specify one or more locations from which the service searches for the nearby locations. These locations are referred to as incidents.
26
+ */
27
+ incidents: Array<IPoint | ILocation | [number, number]> | IFeatureSet;
28
+
29
+ /**
30
+ * Specify one or more locations that are searched for when finding the closest location.
31
+ */
32
+ facilities: Array<IPoint | ILocation | [number, number]> | IFeatureSet;
33
+ /**
34
+ * Specify if the service should return routes.
35
+ */
36
+ returnCFRoutes: boolean;
37
+ travelDirection?: "incidentsToFacilities" | "facilitiesToIncidents";
38
+ barriers?: Array<IPoint | ILocation | [number, number]> | IFeatureSet;
39
+ polylineBarriers?: IFeatureSet;
40
+ polygonBarriers?: IFeatureSet;
41
+ returnDirections?: boolean;
42
+ directionsOutputType?:
43
+ | "esriDOTComplete"
44
+ | "esriDOTCompleteNoEvents"
45
+ | "esriDOTInstructionsOnly"
46
+ | "esriDOTStandard"
47
+ | "esriDOTSummaryOnly"
48
+ | "esriDOTFeatureSets";
49
+ directionsLengthUnits?:
50
+ | "esriNAUCentimeters"
51
+ | "esriNAUDecimalDegrees"
52
+ | "esriNAUDecimeters"
53
+ | "esriNAUFeet"
54
+ | "esriNAUInches"
55
+ | "esriNAUKilometers"
56
+ | "esriNAUMeters"
57
+ | "esriNAUMiles"
58
+ | "esriNAUMillimeters"
59
+ | "esriNAUNauticalMiles"
60
+ | "esriNAUPoints"
61
+ | "esriNAUYards";
62
+ outputLines?: boolean;
63
+ returnFacilities?: boolean;
64
+ returnIncidents?: boolean;
65
+ returnBarriers?: boolean;
66
+ returnPolylineBarriers?: boolean;
67
+ returnPolygonBarriers?: boolean;
68
+ preserveObjectID?: boolean;
69
+ }
70
+
71
+ interface IFeatureSetWithGeoJson extends IFeatureSet {
72
+ geoJson?: any;
73
+ }
74
+
75
+ export interface IClosestFacilityResponse {
76
+ messages: string[];
77
+ routes?: IFeatureSetWithGeoJson;
78
+ directions?: Array<{
79
+ routeId: number;
80
+ routeName: string;
81
+ summary: object;
82
+ features: IFeature[];
83
+ }>;
84
+ incidents?: IFeatureSet;
85
+ facilities?: IFeatureSet;
86
+ barriers?: IFeatureSet;
87
+ polygonBarriers?: IFeatureSet;
88
+ polylineBarriers?: IFeatureSet;
89
+ }
90
+
91
+ function getTravelDirection(
92
+ key: "incidentsToFacilities" | "facilitiesToIncidents"
93
+ ): "esriNATravelDirectionFromFacility" | "esriNATravelDirectionToFacility" {
94
+ if (key === "incidentsToFacilities") {
95
+ return "esriNATravelDirectionFromFacility";
96
+ } else {
97
+ return "esriNATravelDirectionToFacility";
98
+ }
99
+ }
100
+
101
+ /**
102
+ * ```js
103
+ * import { closestFacility } from '@esri/arcgis-rest-routing';
104
+ * //
105
+ * closestFacility({
106
+ * incidents: [
107
+ * [-90.404302, 38.600621],
108
+ * [-90.364293, 38.620427],
109
+ * ],
110
+ * facilities: [
111
+ * [-90.444716, 38.635501],
112
+ * [-90.311919, 38.633523],
113
+ * [-90.451147, 38.581107]
114
+ * ],
115
+ * authentication
116
+ * })
117
+ * .then(response) // => {routes: {features: [{attributes: { ... }, geometry:{ ... }}]}
118
+ * ```
119
+ * Used to find a route to the nearest of several possible destinations. See the [REST Documentation](https://developers.arcgis.com/rest/network/api-reference/closest-facility-synchronous-service.htm) for more information.
120
+ *
121
+ * @param requestOptions Options to pass through to the routing service.
122
+ * @returns A Promise that will resolve with routes and directions for the request.
123
+ * @restlink https://developers.arcgis.com/rest/network/api-reference/closest-facility-synchronous-service.htm
124
+ * @inline IClosestFacilityOptions
125
+ */
126
+ export function closestFacility(
127
+ requestOptions: IClosestFacilityOptions
128
+ ): Promise<IClosestFacilityResponse> {
129
+ const endpoint =
130
+ requestOptions.endpoint || ARCGIS_ONLINE_CLOSEST_FACILITY_URL;
131
+
132
+ requestOptions.params = {
133
+ returnFacilities: true,
134
+ returnDirections: true,
135
+ returnIncidents: true,
136
+ returnBarriers: true,
137
+ returnPolylineBarriers: true,
138
+ returnPolygonBarriers: true,
139
+ preserveObjectID: true,
140
+ ...requestOptions.params
141
+ };
142
+
143
+ const options = appendCustomParams<IClosestFacilityOptions>(requestOptions, [
144
+ "returnCFRoutes",
145
+ // "travelDirection",
146
+ "barriers",
147
+ "polylineBarriers",
148
+ "polygonBarriers",
149
+ "returnDirections",
150
+ "directionsOutputType",
151
+ "directionsLengthUnits",
152
+ "outputLines",
153
+ "returnFacilities",
154
+ "returnIncidents",
155
+ "returnBarriers",
156
+ "returnPolylineBarriers",
157
+ "returnPolygonBarriers",
158
+ "preserveObjectID"
159
+ ]);
160
+
161
+ // Set travelDirection
162
+ if (requestOptions.travelDirection) {
163
+ options.params.travelDirection = getTravelDirection(
164
+ requestOptions.travelDirection
165
+ );
166
+ }
167
+
168
+ // the SAAS service does not support anonymous requests
169
+ if (
170
+ !requestOptions.authentication &&
171
+ endpoint === ARCGIS_ONLINE_CLOSEST_FACILITY_URL
172
+ ) {
173
+ return Promise.reject(
174
+ "Finding the closest facility using the ArcGIS service requires authentication"
175
+ );
176
+ }
177
+
178
+ if (isFeatureSet(requestOptions.incidents)) {
179
+ options.params.incidents = requestOptions.incidents;
180
+ } else {
181
+ options.params.incidents = normalizeLocationsList(
182
+ requestOptions.incidents
183
+ ).join(";");
184
+ }
185
+
186
+ if (isFeatureSet(requestOptions.facilities)) {
187
+ options.params.facilities = requestOptions.facilities;
188
+ } else {
189
+ options.params.facilities = normalizeLocationsList(
190
+ requestOptions.facilities
191
+ ).join(";");
192
+ }
193
+
194
+ // optional input param that may need point geometry normalizing
195
+ if (requestOptions.barriers) {
196
+ if (isFeatureSet(requestOptions.barriers)) {
197
+ options.params.barriers = requestOptions.barriers;
198
+ } else {
199
+ // optional point geometry barriers must be normalized, too
200
+ // but not if provided as IFeatureSet type
201
+ // note that optional polylineBarriers and polygonBarriers do not need to be normalized
202
+ options.params.barriers = normalizeLocationsList(
203
+ requestOptions.barriers
204
+ ).join(";");
205
+ }
206
+ }
207
+
208
+ return request(`${cleanUrl(endpoint)}/solveClosestFacility`, options).then(
209
+ cleanResponse
210
+ );
211
+ }
212
+
213
+ function cleanResponse(res: any): IClosestFacilityResponse {
214
+ // add "geoJson" property to "routes"
215
+ if (res.routes.spatialReference.wkid === 4326) {
216
+ res.routes.geoJson = arcgisToGeoJSON(res.routes);
217
+ }
218
+ return res;
219
+ }
220
+
221
+ export default {
222
+ closestFacility
223
+ };
@@ -0,0 +1,104 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import {
5
+ IRequestOptions,
6
+ ILocation,
7
+ IPoint,
8
+ IPolyline,
9
+ Position2D,
10
+ IFeatureSet
11
+ } from "@esri/arcgis-rest-request";
12
+
13
+ // https always
14
+ export const ARCGIS_ONLINE_ROUTING_URL =
15
+ "https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World";
16
+ export const ARCGIS_ONLINE_CLOSEST_FACILITY_URL =
17
+ "https://route.arcgis.com/arcgis/rest/services/World/ClosestFacility/NAServer/ClosestFacility_World";
18
+ export const ARCGIS_ONLINE_SERVICE_AREA_URL =
19
+ "https://route.arcgis.com/arcgis/rest/services/World/ServiceAreas/NAServer/ServiceArea_World";
20
+ export const ARCGIS_ONLINE_ORIGIN_DESTINATION_MATRIX_URL =
21
+ "https://route.arcgis.com/arcgis/rest/services/World/OriginDestinationCostMatrix/NAServer/OriginDestinationCostMatrix_World";
22
+
23
+ // nice to have: verify custom endpoints contain 'NAServer' and end in a '/'
24
+ export interface IEndpointOptions extends IRequestOptions {
25
+ /**
26
+ * Any ArcGIS Routing service (example: https://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Network/USA/NAServer/Route/ ) to use for the routing service request.
27
+ */
28
+ endpoint?: string;
29
+ }
30
+
31
+ function isLocationArray(
32
+ coords: ILocation | IPoint | [number, number] | [number, number, number]
33
+ ): coords is [number, number] | [number, number, number] {
34
+ return (
35
+ (coords as [number, number]).length === 2 ||
36
+ (coords as [number, number, number]).length === 3
37
+ );
38
+ }
39
+
40
+ function isLocation(
41
+ coords: ILocation | IPoint | [number, number] | [number, number, number]
42
+ ): coords is ILocation {
43
+ return (
44
+ (coords as ILocation).latitude !== undefined ||
45
+ (coords as ILocation).lat !== undefined
46
+ );
47
+ }
48
+
49
+ export function normalizeLocationsList(
50
+ locations: Array<IPoint | ILocation | [number, number]>
51
+ ): string[] {
52
+ return locations.map((coords) => {
53
+ if (isLocationArray(coords)) {
54
+ return coords.join();
55
+ } else if (isLocation(coords)) {
56
+ if (coords.lat) {
57
+ return coords.long + "," + coords.lat;
58
+ } else {
59
+ return coords.longitude + "," + coords.latitude;
60
+ }
61
+ } else {
62
+ return coords.x + "," + coords.y;
63
+ }
64
+ });
65
+ }
66
+
67
+ export function decompressGeometry(str: string) {
68
+ let xDiffPrev = 0;
69
+ let yDiffPrev = 0;
70
+ const points = [];
71
+ let x;
72
+ let y;
73
+
74
+ // Split the string into an array on the + and - characters
75
+ const strings = str.match(/((\+|-)[^+-]+)/g);
76
+
77
+ // The first value is the coefficient in base 32
78
+ const coefficient = parseInt(strings[0], 32);
79
+
80
+ for (let j = 1; j < strings.length; j += 2) {
81
+ // j is the offset for the x value
82
+ // Convert the value from base 32 and add the previous x value
83
+ x = parseInt(strings[j], 32) + xDiffPrev;
84
+ xDiffPrev = x;
85
+
86
+ // j+1 is the offset for the y value
87
+ // Convert the value from base 32 and add the previous y value
88
+ y = parseInt(strings[j + 1], 32) + yDiffPrev;
89
+ yDiffPrev = y;
90
+
91
+ points.push([x / coefficient, y / coefficient] as Position2D);
92
+ }
93
+
94
+ return {
95
+ paths: [points]
96
+ } as IPolyline;
97
+ }
98
+
99
+ /**
100
+ * User Defined Type Guard that verifies this is a featureSet
101
+ */
102
+ export function isFeatureSet(arg: any): arg is IFeatureSet {
103
+ return Object.prototype.hasOwnProperty.call(arg, "features");
104
+ }
@@ -0,0 +1,20 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ export * from "./solveRoute.js";
5
+ export * from "./closestFacility.js";
6
+ export * from "./serviceArea.js";
7
+ export * from "./originDestinationMatrix.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
+ IRequestOptions,
14
+ ILocation,
15
+ IPoint,
16
+ IPolyline,
17
+ Position2D,
18
+ IFeatureSet,
19
+ IFeature
20
+ } from "@esri/arcgis-rest-request";
@@ -0,0 +1,219 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import {
5
+ request,
6
+ cleanUrl,
7
+ appendCustomParams,
8
+ IRequestOptions,
9
+ ILocation,
10
+ IPoint,
11
+ IFeatureSet
12
+ } from "@esri/arcgis-rest-request";
13
+
14
+ import {
15
+ ARCGIS_ONLINE_ORIGIN_DESTINATION_MATRIX_URL,
16
+ IEndpointOptions,
17
+ normalizeLocationsList,
18
+ isFeatureSet
19
+ } from "./helpers.js";
20
+
21
+ import { arcgisToGeoJSON } from "@terraformer/arcgis";
22
+
23
+ export interface IOriginDestinationMatrixOptions extends IEndpointOptions {
24
+ /**
25
+ * Specify the starting points from which to travel to the destinations.
26
+ */
27
+ origins: Array<IPoint | ILocation | [number, number]> | IFeatureSet;
28
+ /**
29
+ * Specify the ending point locations to travel to from the origins.
30
+ */
31
+ destinations: Array<IPoint | ILocation | [number, number]> | IFeatureSet;
32
+ /**
33
+ * Specify the type of output returned by the service. Defaults to "esriNAODOutputSparseMatrix".
34
+ */
35
+ outputType?:
36
+ | "esriNAODOutputSparseMatrix"
37
+ | "esriNAODOutputStraightLines"
38
+ | "esriNAODOutputNoLines";
39
+ barriers?: Array<IPoint | ILocation | [number, number]> | IFeatureSet;
40
+ polylineBarriers?: IFeatureSet;
41
+ polygonBarriers?: IFeatureSet;
42
+ returnOrigins?: boolean;
43
+ returnDestinations?: boolean;
44
+ returnBarriers?: boolean;
45
+ returnPolylineBarriers?: boolean;
46
+ returnPolygonBarriers?: boolean;
47
+ }
48
+
49
+ interface IFeatureSetWithGeoJson extends IFeatureSet {
50
+ geoJson?: any;
51
+ }
52
+
53
+ export interface IOriginDestinationMatrixResponse {
54
+ messages: [{ type: number; description: string }];
55
+ /**
56
+ * Only present if outputType is "esriNAODOutputSparseMatrix". Full description is available at https://developers.arcgis.com/rest/network/api-reference/origin-destination-cost-matrix-synchronous-service.htm#ESRI_SECTION2_114F8364507C4B56B780DFAD505270FB.
57
+ */
58
+ odCostMatrix?: any;
59
+ /**
60
+ * Only present if outputType is "esriNAODOutputStraightLines" or "esriNAODOutputNoLines". Includes the geometry for the straight line connecting each origin-destination pair when the outputType is "esriNAODOutputStraightLines".
61
+ */
62
+ odLines?: IFeatureSetWithGeoJson;
63
+ origins?: IFeatureSetWithGeoJson;
64
+ destinations?: IFeatureSetWithGeoJson;
65
+ barriers?: IFeatureSetWithGeoJson;
66
+ polylineBarriers?: IFeatureSetWithGeoJson;
67
+ polygonBarriers?: IFeatureSetWithGeoJson;
68
+ }
69
+
70
+ /**
71
+ * ```js
72
+ * import { originDestinationMatrix } from '@esri/arcgis-rest-routing';
73
+ * //
74
+ * originDestinationMatrix({
75
+ * origins: [
76
+ * [-90.404302, 38.600621],
77
+ * [-90.364293, 38.620427],
78
+ * ],
79
+ * destinations: [
80
+ * [-90.444716, 38.635501],
81
+ * [-90.311919, 38.633523],
82
+ * [-90.451147, 38.581107]
83
+ * ],
84
+ * authentication
85
+ * })
86
+ * .then(response) // => { ... }
87
+ * ```
88
+ * Used to create an origin-destination (OD) cost matrix from multiple origins to multiple destinations. See the [REST Documentation](https://developers.arcgis.com/rest/network/api-reference/origin-destination-cost-matrix-synchronous-service.htm) for more information.
89
+ *
90
+ * @param requestOptions Options to pass through to the routing service.
91
+ * @returns A Promise that will resolve with travel time and/or distance for each origin-destination pair. It returns either odLines or odCostMatrix for this information depending on the outputType you specify.
92
+ * @restlink https://developers.arcgis.com/rest/network/api-reference/origin-destination-cost-matrix-synchronous-service.htm
93
+ */
94
+ export function originDestinationMatrix(
95
+ requestOptions: IOriginDestinationMatrixOptions
96
+ ): Promise<IOriginDestinationMatrixResponse> {
97
+ const endpoint =
98
+ requestOptions.endpoint || ARCGIS_ONLINE_ORIGIN_DESTINATION_MATRIX_URL;
99
+
100
+ requestOptions.params = {
101
+ outputType: "esriNAODOutputSparseMatrix",
102
+ returnOrigins: true,
103
+ returnDestinations: true,
104
+ returnBarriers: true,
105
+ returnPolylineBarriers: true,
106
+ returnPolygonBarriers: true,
107
+ ...requestOptions.params
108
+ };
109
+
110
+ const options = appendCustomParams<IOriginDestinationMatrixOptions>(
111
+ requestOptions,
112
+ [
113
+ "outputType",
114
+ "barriers",
115
+ "polylineBarriers",
116
+ "polygonBarriers",
117
+ "returnOrigins",
118
+ "returnDestinations",
119
+ "returnBarriers",
120
+ "returnPolylineBarriers",
121
+ "returnPolygonBarriers"
122
+ ]
123
+ );
124
+
125
+ // the SAAS service does not support anonymous requests
126
+ if (
127
+ !requestOptions.authentication &&
128
+ endpoint === ARCGIS_ONLINE_ORIGIN_DESTINATION_MATRIX_URL
129
+ ) {
130
+ return Promise.reject(
131
+ "Calculating the origin-destination cost matrix using the ArcGIS service requires authentication"
132
+ );
133
+ }
134
+
135
+ // use a formatting helper for input params of this type: Array<IPoint | ILocation | [number, number]>
136
+ if (isFeatureSet(requestOptions.origins)) {
137
+ options.params.origins = requestOptions.origins;
138
+ } else {
139
+ options.params.origins = normalizeLocationsList(
140
+ requestOptions.origins
141
+ ).join(";");
142
+ }
143
+
144
+ if (isFeatureSet(requestOptions.destinations)) {
145
+ options.params.destinations = requestOptions.destinations;
146
+ } else {
147
+ options.params.destinations = normalizeLocationsList(
148
+ requestOptions.destinations
149
+ ).join(";");
150
+ }
151
+
152
+ // optional input param that may need point geometry normalizing
153
+ if (requestOptions.barriers) {
154
+ if (isFeatureSet(requestOptions.barriers)) {
155
+ options.params.barriers = requestOptions.barriers;
156
+ } else {
157
+ // optional point geometry barriers must be normalized, too
158
+ // but not if provided as IFeatureSet type
159
+ // note that optional polylineBarriers and polygonBarriers do not need to be normalized
160
+ options.params.barriers = normalizeLocationsList(
161
+ requestOptions.barriers
162
+ ).join(";");
163
+ }
164
+ }
165
+
166
+ return request(`${cleanUrl(endpoint)}/solveODCostMatrix`, options).then(
167
+ function (res) {
168
+ return cleanResponse(res, options);
169
+ }
170
+ );
171
+ }
172
+
173
+ function cleanResponse(
174
+ res: any,
175
+ options: IRequestOptions
176
+ ): IOriginDestinationMatrixResponse {
177
+ // add "geoJson" property to each response property that is an arcgis featureSet
178
+
179
+ // res.odLines only exists and only includes geometry in this condition (out of 3 possible options.params.outputType conditions)
180
+ if (
181
+ options.params.outputType === "esriNAODOutputStraightLines" &&
182
+ res.odLines &&
183
+ res.odLines.spatialReference.wkid === 4326
184
+ ) {
185
+ res.odLines.geoJson = arcgisToGeoJSON(res.odLines);
186
+ }
187
+
188
+ if (res.origins && res.origins.spatialReference.wkid === 4326) {
189
+ res.origins.geoJson = arcgisToGeoJSON(res.origins);
190
+ }
191
+
192
+ if (res.destinations && res.destinations.spatialReference.wkid === 4326) {
193
+ res.destinations.geoJson = arcgisToGeoJSON(res.destinations);
194
+ }
195
+
196
+ if (res.barriers && res.barriers.spatialReference.wkid === 4326) {
197
+ res.barriers.geoJson = arcgisToGeoJSON(res.barriers);
198
+ }
199
+
200
+ if (
201
+ res.polygonBarriers &&
202
+ res.polygonBarriers.spatialReference.wkid === 4326
203
+ ) {
204
+ res.polygonBarriers.geoJson = arcgisToGeoJSON(res.polygonBarriers);
205
+ }
206
+
207
+ if (
208
+ res.polylineBarriers &&
209
+ res.polylineBarriers.spatialReference.wkid === 4326
210
+ ) {
211
+ res.polylineBarriers.geoJson = arcgisToGeoJSON(res.polylineBarriers);
212
+ }
213
+
214
+ return res;
215
+ }
216
+
217
+ export default {
218
+ originDestinationMatrix
219
+ };