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,446 @@
1
+ /* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { encodeFormData } from "./utils/encode-form-data.js";
5
+ import { encodeQueryString } from "./utils/encode-query-string.js";
6
+ import { requiresFormData } from "./utils/process-params.js";
7
+ import { ArcGISRequestError } from "./utils/ArcGISRequestError.js";
8
+ import { IRequestOptions } from "./utils/IRequestOptions.js";
9
+ import { IParams } from "./utils/IParams.js";
10
+ import { warn } from "./utils/warn.js";
11
+ import { IRetryAuthError } from "./utils/retryAuthError.js";
12
+ import { getFetch } from "@esri/arcgis-rest-fetch";
13
+ import { IAuthenticationManager } from "./index.js";
14
+
15
+ export const NODEJS_DEFAULT_REFERER_HEADER = `@esri/arcgis-rest-js`;
16
+
17
+ /**
18
+ * Sets the default options that will be passed in **all requests across all `@esri/arcgis-rest-js` modules**.
19
+ *
20
+ *
21
+ * ```js
22
+ * import { setDefaultRequestOptions } from "@esri/arcgis-rest-request";
23
+ * setDefaultRequestOptions({
24
+ * authentication: ArcGISIdentityManager // all requests will use this session by default
25
+ * })
26
+ * ```
27
+ * You should **never** set a default `authentication` when you are in a server side environment where you may be handling requests for many different authenticated users.
28
+ *
29
+ * @param options The default options to pass with every request. Existing default will be overwritten.
30
+ * @param hideWarnings Silence warnings about setting default `authentication` in shared environments.
31
+ */
32
+ export function setDefaultRequestOptions(
33
+ options: IRequestOptions,
34
+ hideWarnings?: boolean
35
+ ) {
36
+ if (options.authentication && !hideWarnings) {
37
+ warn(
38
+ "You should not set `authentication` as a default in a shared environment such as a web server which will process multiple users requests. You can call `setDefaultRequestOptions` with `true` as a second argument to disable this warning."
39
+ );
40
+ }
41
+ (globalThis as any).DEFAULT_ARCGIS_REQUEST_OPTIONS = options;
42
+ }
43
+
44
+ export function getDefaultRequestOptions() {
45
+ return (
46
+ (globalThis as any).DEFAULT_ARCGIS_REQUEST_OPTIONS || {
47
+ httpMethod: "POST",
48
+ params: {
49
+ f: "json"
50
+ }
51
+ }
52
+ );
53
+ }
54
+
55
+ export class ArcGISAuthError extends ArcGISRequestError {
56
+ /**
57
+ * Create a new `ArcGISAuthError` object.
58
+ *
59
+ * @param message - The error message from the API
60
+ * @param code - The error code from the API
61
+ * @param response - The original response from the API that caused the error
62
+ * @param url - The original url of the request
63
+ * @param options - The original options of the request
64
+ */
65
+ constructor(
66
+ message = "AUTHENTICATION_ERROR",
67
+ code: string | number = "AUTHENTICATION_ERROR_CODE",
68
+ response?: any,
69
+ url?: string,
70
+ options?: IRequestOptions
71
+ ) {
72
+ super(message, code, response, url, options);
73
+ this.name = "ArcGISAuthError";
74
+ this.message =
75
+ code === "AUTHENTICATION_ERROR_CODE" ? message : `${code}: ${message}`;
76
+ }
77
+
78
+ public retry(getSession: IRetryAuthError, retryLimit = 3) {
79
+ let tries = 0;
80
+
81
+ const retryRequest = (resolve: any, reject: any) => {
82
+ getSession(this.url, this.options)
83
+ .then((session) => {
84
+ const newOptions = {
85
+ ...this.options,
86
+ ...{ authentication: session }
87
+ };
88
+
89
+ tries = tries + 1;
90
+ return request(this.url, newOptions);
91
+ })
92
+ .then((response) => {
93
+ resolve(response);
94
+ })
95
+ .catch((e) => {
96
+ if (e.name === "ArcGISAuthError" && tries < retryLimit) {
97
+ retryRequest(resolve, reject);
98
+ } else if (e.name === "ArcGISAuthError" && tries >= retryLimit) {
99
+ reject(this);
100
+ } else {
101
+ reject(e);
102
+ }
103
+ });
104
+ };
105
+
106
+ return new Promise((resolve, reject) => {
107
+ retryRequest(resolve, reject);
108
+ });
109
+ }
110
+ }
111
+
112
+ /**
113
+ * Checks for errors in a JSON response from the ArcGIS REST API. If there are no errors, it will return the `data` passed in. If there is an error, it will throw an `ArcGISRequestError` or `ArcGISAuthError`.
114
+ *
115
+ * @param data The response JSON to check for errors.
116
+ * @param url The url of the original request
117
+ * @param params The parameters of the original request
118
+ * @param options The options of the original request
119
+ * @returns The data that was passed in the `data` parameter
120
+ */
121
+ export function checkForErrors(
122
+ response: any,
123
+ url?: string,
124
+ params?: IParams,
125
+ options?: IRequestOptions,
126
+ originalAuthError?: ArcGISAuthError
127
+ ): any {
128
+ // this is an error message from billing.arcgis.com backend
129
+ if (response.code >= 400) {
130
+ const { message, code } = response;
131
+ throw new ArcGISRequestError(message, code, response, url, options);
132
+ }
133
+
134
+ // error from ArcGIS Online or an ArcGIS Portal or server instance.
135
+ if (response.error) {
136
+ const { message, code, messageCode } = response.error;
137
+ const errorCode = messageCode || code || "UNKNOWN_ERROR_CODE";
138
+
139
+ if (
140
+ code === 498 ||
141
+ code === 499 ||
142
+ messageCode === "GWM_0003" ||
143
+ (code === 400 && message === "Unable to generate token.")
144
+ ) {
145
+ if (originalAuthError) {
146
+ throw originalAuthError;
147
+ } else {
148
+ throw new ArcGISAuthError(message, errorCode, response, url, options);
149
+ }
150
+ }
151
+
152
+ throw new ArcGISRequestError(message, errorCode, response, url, options);
153
+ }
154
+
155
+ // error from a status check
156
+ if (response.status === "failed" || response.status === "failure") {
157
+ let message: string;
158
+ let code = "UNKNOWN_ERROR_CODE";
159
+
160
+ try {
161
+ message = JSON.parse(response.statusMessage).message;
162
+ code = JSON.parse(response.statusMessage).code;
163
+ } catch (e) {
164
+ message = response.statusMessage || response.message;
165
+ }
166
+
167
+ throw new ArcGISRequestError(message, code, response, url, options);
168
+ }
169
+
170
+ return response;
171
+ }
172
+
173
+ /**
174
+ * ```js
175
+ * import { request } from '@esri/arcgis-rest-request';
176
+ * //
177
+ * request('https://www.arcgis.com/sharing/rest')
178
+ * .then(response) // response.currentVersion === 5.2
179
+ * //
180
+ * request('https://www.arcgis.com/sharing/rest', {
181
+ * httpMethod: "GET"
182
+ * })
183
+ * //
184
+ * request('https://www.arcgis.com/sharing/rest/search', {
185
+ * params: { q: 'parks' }
186
+ * })
187
+ * .then(response) // response.total => 78379
188
+ * ```
189
+ * Generic method for making HTTP requests to ArcGIS REST API endpoints.
190
+ *
191
+ * @param url - The URL of the ArcGIS REST API endpoint.
192
+ * @param requestOptions - Options for the request, including parameters relevant to the endpoint.
193
+ * @returns A Promise that will resolve with the data from the response.
194
+ */
195
+ export function request(
196
+ url: string,
197
+ requestOptions: IRequestOptions = { params: { f: "json" } }
198
+ ): Promise<any> {
199
+ const defaults = getDefaultRequestOptions();
200
+ const options: IRequestOptions = {
201
+ ...{ httpMethod: "POST" },
202
+ ...defaults,
203
+ ...requestOptions,
204
+ ...{
205
+ params: {
206
+ ...defaults.params,
207
+ ...requestOptions.params
208
+ },
209
+ headers: {
210
+ ...defaults.headers,
211
+ ...requestOptions.headers
212
+ }
213
+ }
214
+ };
215
+
216
+ const { httpMethod, rawResponse } = options;
217
+
218
+ const params: IParams = {
219
+ ...{ f: "json" },
220
+ ...options.params
221
+ };
222
+
223
+ let originalAuthError: ArcGISAuthError = null;
224
+
225
+ const fetchOptions: RequestInit = {
226
+ method: httpMethod,
227
+ /* ensures behavior mimics XMLHttpRequest.
228
+ needed to support sending IWA cookies */
229
+ credentials: options.credentials || "same-origin"
230
+ };
231
+
232
+ // the /oauth2/platformSelf route will add X-Esri-Auth-Client-Id header
233
+ // and that request needs to send cookies cross domain
234
+ // so we need to set the credentials to "include"
235
+ if (
236
+ options.headers &&
237
+ options.headers["X-Esri-Auth-Client-Id"] &&
238
+ url.indexOf("/oauth2/platformSelf") > -1
239
+ ) {
240
+ fetchOptions.credentials = "include";
241
+ }
242
+
243
+ let authentication: IAuthenticationManager;
244
+
245
+ // Check to see if this is a raw token as a string and create a IAuthenticationManager like object for it.
246
+ // Otherwise this just assumes that options.authentication is an IAuthenticationManager.
247
+ if (typeof options.authentication === "string") {
248
+ const rawToken = options.authentication;
249
+
250
+ authentication = {
251
+ portal: "https://www.arcgis.com/sharing/rest",
252
+ getToken: () => {
253
+ return Promise.resolve(rawToken);
254
+ }
255
+ };
256
+
257
+ /* istanbul ignore else - we don't need to test NOT warning people */
258
+ if (
259
+ !options.authentication.startsWith("AAPK") && // doesn't look like an API Key
260
+ !options.suppressWarnings && // user doesn't want to suppress warnings for this request
261
+ !(globalThis as any).ARCGIS_REST_JS_SUPPRESS_TOKEN_WARNING // we havn't shown the user this warning yet
262
+ ) {
263
+ warn(
264
+ `Using an oAuth 2.0 access token directly in the token option is discouraged. Consider using ArcGISIdentityManager or Application session. See https://esriurl.com/arcgis-rest-js-direct-token-warning for more information.`
265
+ );
266
+
267
+ (globalThis as any).ARCGIS_REST_JS_SUPPRESS_TOKEN_WARNING = true;
268
+ }
269
+ } else {
270
+ authentication = options.authentication;
271
+ }
272
+
273
+ return (
274
+ authentication
275
+ ? authentication.getToken(url).catch((err) => {
276
+ /**
277
+ * append original request url and requestOptions
278
+ * to the error thrown by getToken()
279
+ * to assist with retrying
280
+ */
281
+ err.url = url;
282
+ err.options = options;
283
+ /**
284
+ * if an attempt is made to talk to an unfederated server
285
+ * first try the request anonymously. if a 'token required'
286
+ * error is thrown, throw the UNFEDERATED error then.
287
+ */
288
+ originalAuthError = err;
289
+ return Promise.resolve("");
290
+ })
291
+ : Promise.resolve("")
292
+ )
293
+ .then((token) => {
294
+ if (token.length) {
295
+ params.token = token;
296
+ }
297
+
298
+ if (authentication && authentication.getDomainCredentials) {
299
+ fetchOptions.credentials = authentication.getDomainCredentials(url);
300
+ }
301
+
302
+ // Custom headers to add to request. IRequestOptions.headers with merge over requestHeaders.
303
+ const requestHeaders: {
304
+ [key: string]: any;
305
+ } = {};
306
+
307
+ if (fetchOptions.method === "GET") {
308
+ // Prevents token from being passed in query params when hideToken option is used.
309
+ /* istanbul ignore if - window is always defined in a browser. Test case is covered by Jasmine in node test */
310
+ if (
311
+ params.token &&
312
+ options.hideToken &&
313
+ // Sharing API does not support preflight check required by modern browsers https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request
314
+ typeof window === "undefined"
315
+ ) {
316
+ requestHeaders["X-Esri-Authorization"] = `Bearer ${params.token}`;
317
+ delete params.token;
318
+ }
319
+ // encode the parameters into the query string
320
+ const queryParams = encodeQueryString(params);
321
+ // dont append a '?' unless parameters are actually present
322
+ const urlWithQueryString =
323
+ queryParams === "" ? url : url + "?" + encodeQueryString(params);
324
+
325
+ if (
326
+ // This would exceed the maximum length for URLs specified by the consumer and requires POST
327
+ (options.maxUrlLength &&
328
+ urlWithQueryString.length > options.maxUrlLength) ||
329
+ // Or if the customer requires the token to be hidden and it has not already been hidden in the header (for browsers)
330
+ (params.token && options.hideToken)
331
+ ) {
332
+ // the consumer specified a maximum length for URLs
333
+ // and this would exceed it, so use post instead
334
+ fetchOptions.method = "POST";
335
+
336
+ // If the token was already added as a Auth header, add the token back to body with other params instead of header
337
+ if (token.length && options.hideToken) {
338
+ params.token = token;
339
+ // Remove existing header that was added before url query length was checked
340
+ delete requestHeaders["X-Esri-Authorization"];
341
+ }
342
+ } else {
343
+ // just use GET
344
+ url = urlWithQueryString;
345
+ }
346
+ }
347
+
348
+ /* updateResources currently requires FormData even when the input parameters dont warrant it.
349
+ https://developers.arcgis.com/rest/users-groups-and-items/update-resources.htm
350
+ see https://github.com/Esri/arcgis-rest-js/pull/500 for more info. */
351
+ const forceFormData = new RegExp("/items/.+/updateResources").test(url);
352
+
353
+ if (fetchOptions.method === "POST") {
354
+ fetchOptions.body = encodeFormData(params, forceFormData) as any;
355
+ }
356
+
357
+ // Mixin headers from request options
358
+ fetchOptions.headers = {
359
+ ...requestHeaders,
360
+ ...options.headers
361
+ };
362
+
363
+ /* istanbul ignore next - karma reports coverage on browser tests only */
364
+ if (typeof window === "undefined" && !fetchOptions.headers.referer) {
365
+ fetchOptions.headers.referer = NODEJS_DEFAULT_REFERER_HEADER;
366
+ }
367
+
368
+ /* istanbul ignore else blob responses are difficult to make cross platform we will just have to trust the isomorphic fetch will do its job */
369
+ if (!requiresFormData(params) && !forceFormData) {
370
+ fetchOptions.headers["Content-Type"] =
371
+ "application/x-www-form-urlencoded";
372
+ }
373
+
374
+ /**
375
+ * Check for a global fetch first and use it if available. This allows us to use the default
376
+ * configuration of fetch-mock in tests.
377
+ */
378
+
379
+ /* istanbul ignore next coverage is based on browser code and we don't test for the absence of global fetch so we can skip the else here. */
380
+ return globalThis.fetch
381
+ ? globalThis.fetch(url, fetchOptions)
382
+ : getFetch().then(({ fetch }) => {
383
+ return fetch(url, fetchOptions);
384
+ });
385
+ })
386
+ .then((response: any) => {
387
+ if (!response.ok) {
388
+ // server responded w/ an actual error (404, 500, etc)
389
+ const { status, statusText } = response;
390
+ throw new ArcGISRequestError(
391
+ statusText,
392
+ `HTTP ${status}`,
393
+ response,
394
+ url,
395
+ options
396
+ );
397
+ }
398
+ if (rawResponse) {
399
+ return response;
400
+ }
401
+ switch (params.f) {
402
+ case "json":
403
+ return response.json();
404
+ case "geojson":
405
+ return response.json();
406
+ case "html":
407
+ return response.text();
408
+ case "text":
409
+ return response.text();
410
+ /* istanbul ignore next blob responses are difficult to make cross platform we will just have to trust that isomorphic fetch will do its job */
411
+ default:
412
+ return response.blob();
413
+ }
414
+ })
415
+ .then((data) => {
416
+ if ((params.f === "json" || params.f === "geojson") && !rawResponse) {
417
+ const response = checkForErrors(
418
+ data,
419
+ url,
420
+ params,
421
+ options,
422
+ originalAuthError
423
+ );
424
+
425
+ if (originalAuthError) {
426
+ /* If the request was made to an unfederated service that
427
+ didn't require authentication, add the base url and a dummy token
428
+ to the list of trusted servers to avoid another federation check
429
+ in the event of a repeat request */
430
+ const truncatedUrl: string = url
431
+ .toLowerCase()
432
+ .split(/\/rest(\/admin)?\/services\//)[0];
433
+
434
+ (options.authentication as any).federatedServers[truncatedUrl] = {
435
+ token: [],
436
+ // default to 24 hours
437
+ expires: new Date(Date.now() + 86400 * 1000)
438
+ };
439
+ originalAuthError = null;
440
+ }
441
+ return response;
442
+ } else {
443
+ return data;
444
+ }
445
+ });
446
+ }
@@ -0,0 +1,73 @@
1
+ import {
2
+ IRequestOptions,
3
+ request,
4
+ cleanUrl,
5
+ ArcGISRequestError,
6
+ appendCustomParams
7
+ } from "./index.js";
8
+
9
+ export interface IRevokeTokenOptions extends IRequestOptions {
10
+ /**
11
+ * The token or refresh token to revoke. If a refresh token is passed all access tokens generated with that refresh token are also revoked.
12
+ */
13
+ token: string;
14
+
15
+ /**
16
+ * The portal of the tokens to revoke. Defaults to `https://www.arcgis.com/sharing/rest`.
17
+ */
18
+ portal?: string;
19
+
20
+ /**
21
+ * The client id fo the application that generated the tokens. Applications can only revoke tokens they created.
22
+ */
23
+ clientId: string;
24
+ }
25
+
26
+ export interface IRevokeTokenResponse {
27
+ /**
28
+ * Indicates if the token was revoked. A success response will also returned for invalid tokens, expired tokens or of an unsupported type of token to prevent leaking information about the provided token.
29
+ */
30
+ success: boolean;
31
+ }
32
+
33
+ /**
34
+ * Revokes a token generated via any oAuth 2.0 method. `token` can be either a refresh token OR an access token. If you are using {@linkcode ArcGISIdentityManager} you should use {@linkcode ArcGISIdentityManager.destroy} instead. Cannot revoke API keys or tokens generated by {@linkcode ApplicationSession}.
35
+ *
36
+ * See [`revokeToken`](https://developers.arcgis.com/rest/users-groups-and-items/revoke-token.htm) on the ArcGIS REST API for more details.
37
+ */
38
+ export function revokeToken(
39
+ requestOptions: IRevokeTokenOptions
40
+ ): Promise<IRevokeTokenResponse> {
41
+ const url = `${cleanUrl(
42
+ requestOptions.portal || "https://www.arcgis.com/sharing/rest"
43
+ )}/oauth2/revokeToken/`;
44
+
45
+ const token = requestOptions.token;
46
+ const clientId = requestOptions.clientId;
47
+
48
+ delete requestOptions.portal;
49
+ delete requestOptions.clientId;
50
+ delete requestOptions.token;
51
+
52
+ const options: IRequestOptions = {
53
+ ...requestOptions,
54
+ httpMethod: "POST",
55
+ params: {
56
+ client_id: clientId,
57
+ auth_token: token
58
+ }
59
+ };
60
+
61
+ return request(url, options).then((response) => {
62
+ if (!response.success) {
63
+ throw new ArcGISRequestError(
64
+ "Unable to revoke token",
65
+ 500,
66
+ response,
67
+ url,
68
+ options
69
+ );
70
+ }
71
+ return response;
72
+ });
73
+ }
@@ -0,0 +1,42 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { GeometryType, IHasZM, ISpatialReference, IGeometry } from "./geometry.js";
5
+ import { IField } from "./service.js";
6
+ import { ISymbol } from "./symbol.js";
7
+
8
+ /**
9
+ * `IFeatureSet` can also be imported from the following packages:
10
+ *
11
+ * ```js
12
+ * import { IFeatureSet } from "@esri/arcgis-rest-feature-service";
13
+ * ```
14
+ */
15
+ export interface IFeatureSet extends IHasZM {
16
+ objectIdFieldName?: string; // optional
17
+ globalIdFieldName?: string; // optional
18
+ displayFieldName?: string; // optional
19
+ geometryType?: GeometryType; // for feature layers only
20
+ spatialReference?: ISpatialReference; // for feature layers only.
21
+ fields?: IField[];
22
+ features: IFeature[];
23
+ fieldAliases?: {
24
+ [key: string]: string;
25
+ };
26
+ }
27
+
28
+ /**
29
+ * a spatial entity and its corresponding properties
30
+ *
31
+ * `IFeature` can also be imported from the following packages:
32
+ *
33
+ * ```js
34
+ * import { IFeature } from "@esri/arcgis-rest-feature-service";
35
+ * import { IFeature } from "@esri/arcgis-rest-routing";
36
+ * ```
37
+ */
38
+ export interface IFeature {
39
+ geometry?: IGeometry;
40
+ attributes: { [key: string]: any };
41
+ symbol?: ISymbol;
42
+ }