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,59 @@
1
+ import { HTTPMethods } from "./HTTPMethods.js";
2
+ import { IParams } from "./IParams.js";
3
+ import { IAuthenticationManager } from "./IAuthenticationManager.js";
4
+
5
+ /**
6
+ * Options for the `request()` method.
7
+ */
8
+ export interface IRequestOptions {
9
+ /**
10
+ * Additional parameters to pass in the request.
11
+ */
12
+ params?: IParams;
13
+ /**
14
+ * The HTTP method to send the request with.
15
+ */
16
+ httpMethod?: HTTPMethods;
17
+ /**
18
+ * Return the raw [response](https://developer.mozilla.org/en-US/docs/Web/API/Response)
19
+ */
20
+ rawResponse?: boolean;
21
+ /**
22
+ * The instance of {@linkcode ApiKey}, {@linkcode ArcGISIdentityManager} or {@linkcode ApplicationSession} to use to authenticate this request. A token may also be passed directly as a string however using the built in authentication managers is encouraged.
23
+ */
24
+ authentication?: IAuthenticationManager | string;
25
+ /**
26
+ * Prevents the token from being passed in a URL Query param that is saved in browser history.
27
+ * Instead, the token will be passed in POST request body or through X-Esri-Authorization header.
28
+ * NOTE: This will force POST requests in browsers since auth header is not yet supported by preflight OPTIONS check with CORS.
29
+ */
30
+ hideToken?: boolean;
31
+ /**
32
+ * Base url for the portal you want to make the request to. Defaults to authentication.portal if authentication
33
+ * exists, otherwise to 'https://www.arcgis.com/sharing/rest'.
34
+ */
35
+ portal?: string;
36
+ /**
37
+ * The implementation of `fetch` to use. Defaults to a global `fetch`.
38
+ */
39
+ // fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
40
+ /**
41
+ * A string indicating whether credentials (cookies) will be sent with the request. Used internally for authentication workflows.
42
+ */
43
+ credentials?: RequestCredentials;
44
+ /**
45
+ * If the length of a GET request's URL exceeds `maxUrlLength` the request will use POST instead.
46
+ */
47
+ maxUrlLength?: number;
48
+ /**
49
+ * Additional [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers) to pass into the request.
50
+ */
51
+ headers?: {
52
+ [key: string]: any;
53
+ };
54
+
55
+ /**
56
+ * Suppress any ArcGIS REST JS related warnings for this request.
57
+ */
58
+ suppressWarnings?: boolean;
59
+ }
@@ -0,0 +1,9 @@
1
+ import { HTTPMethods } from "./HTTPMethods.js";
2
+ import { IGenerateTokenParams } from "./IGenerateTokenParams.js";
3
+ import { IFetchTokenParams } from "./IFetchTokenParams.js";
4
+
5
+ export interface ITokenRequestOptions {
6
+ params?: IGenerateTokenParams | IFetchTokenParams;
7
+ httpMethod?: HTTPMethods;
8
+ fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
9
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Valid response formats for the `f` parameter.
3
+ */
4
+ export type ResponseFormats =
5
+ | "json"
6
+ | "geojson"
7
+ | "text"
8
+ | "html"
9
+ | "image"
10
+ | "zip";
@@ -0,0 +1,46 @@
1
+ /* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { IRequestOptions } from "./IRequestOptions.js";
5
+
6
+ /**
7
+ * Helper for methods with lots of first order request options to pass through as request parameters.
8
+ */
9
+ export function appendCustomParams<T extends IRequestOptions>(
10
+ customOptions: T,
11
+ keys: Array<keyof T>,
12
+ baseOptions?: Partial<T>
13
+ ): IRequestOptions {
14
+ const requestOptionsKeys = [
15
+ "params",
16
+ "httpMethod",
17
+ "rawResponse",
18
+ "authentication",
19
+ "portal",
20
+ "fetch",
21
+ "maxUrlLength",
22
+ "headers",
23
+ ];
24
+
25
+ const options: T = {
26
+ ...{ params: {} },
27
+ ...baseOptions,
28
+ ...customOptions,
29
+ };
30
+
31
+ // merge all keys in customOptions into options.params
32
+ options.params = keys.reduce((value, key) => {
33
+ if (customOptions[key] || typeof customOptions[key] === "boolean") {
34
+ value[key as any] = customOptions[key];
35
+ }
36
+ return value;
37
+ }, options.params);
38
+
39
+ // now remove all properties in options that don't exist in IRequestOptions
40
+ return requestOptionsKeys.reduce((value, key) => {
41
+ if ((options as any)[key]) {
42
+ (value as any)[key] = (options as any)[key];
43
+ }
44
+ return value;
45
+ }, {} as IRequestOptions);
46
+ }
@@ -0,0 +1,20 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ /**
5
+ * Helper method to ensure that user supplied urls don't include whitespace or a trailing slash.
6
+ */
7
+ export function cleanUrl(url: string) {
8
+ // Guard so we don't try to trim something that's not a string
9
+ if (typeof url !== "string") {
10
+ return url;
11
+ }
12
+ // trim leading and trailing spaces, but not spaces inside the url
13
+ url = url.trim();
14
+
15
+ // remove the trailing slash to the url if one was included
16
+ if (url[url.length - 1] === "/") {
17
+ url = url.slice(0, -1);
18
+ }
19
+ return url;
20
+ }
@@ -0,0 +1,27 @@
1
+ /* Copyright (c) 2017-2020 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ export function decodeParam(param: string): { key: string; value: string } {
5
+ const [key, value] = param.split("=");
6
+ return { key: decodeURIComponent(key), value: decodeURIComponent(value) };
7
+ }
8
+
9
+ /**
10
+ * Decodes the passed query string as an object.
11
+ *
12
+ * @param query A string to be decoded.
13
+ * @returns A decoded query param object.
14
+ */
15
+ export function decodeQueryString(query: string): { [key: string]: string } {
16
+ return query
17
+ .replace(/^#/, "")
18
+ .split("&")
19
+ .reduce(
20
+ (acc, entry) => {
21
+ const { key, value } = decodeParam(entry);
22
+ acc[key] = value;
23
+ return acc;
24
+ },
25
+ {} as any
26
+ );
27
+ }
@@ -0,0 +1,41 @@
1
+ /* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { processParams, requiresFormData } from "./process-params.js";
5
+ import { encodeQueryString } from "./encode-query-string.js";
6
+ import { FormData } from "@esri/arcgis-rest-form-data";
7
+
8
+ /**
9
+ * Encodes parameters in a [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) object in browsers or in a [FormData](https://github.com/form-data/form-data) in Node.js
10
+ *
11
+ * @param params An object to be encoded.
12
+ * @returns The complete [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) object.
13
+ */
14
+ export function encodeFormData(
15
+ params: any,
16
+ forceFormData?: boolean
17
+ ): FormData | string {
18
+ // see https://github.com/Esri/arcgis-rest-js/issues/499 for more info.
19
+ const useFormData = requiresFormData(params) || forceFormData;
20
+ const newParams = processParams(params);
21
+ if (useFormData) {
22
+ const formData = new FormData();
23
+
24
+ Object.keys(newParams).forEach((key: any) => {
25
+ if (typeof Blob !== "undefined" && newParams[key] instanceof Blob) {
26
+ /* To name the Blob:
27
+ 1. look to an alternate request parameter called 'fileName'
28
+ 2. see if 'name' has been tacked onto the Blob manually
29
+ 3. if all else fails, use the request parameter
30
+ */
31
+ const filename = newParams["fileName"] || newParams[key].name || key;
32
+ formData.append(key, newParams[key], filename);
33
+ } else {
34
+ formData.append(key, newParams[key]);
35
+ }
36
+ });
37
+ return formData;
38
+ } else {
39
+ return encodeQueryString(params);
40
+ }
41
+ }
@@ -0,0 +1,37 @@
1
+ /* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { processParams } from "./process-params.js";
5
+
6
+ /**
7
+ * Encodes keys and parameters for use in a URL's query string.
8
+ *
9
+ * @param key Parameter's key
10
+ * @param value Parameter's value
11
+ * @returns Query string with key and value pairs separated by "&"
12
+ */
13
+ export function encodeParam(key: string, value: any): string {
14
+ // For array of arrays, repeat key=value for each element of containing array
15
+ if (Array.isArray(value) && value[0] && Array.isArray(value[0])) {
16
+ return value
17
+ .map((arrayElem: string) => encodeParam(key, arrayElem))
18
+ .join("&");
19
+ }
20
+
21
+ return encodeURIComponent(key) + "=" + encodeURIComponent(value);
22
+ }
23
+
24
+ /**
25
+ * Encodes the passed object as a query string.
26
+ *
27
+ * @param params An object to be encoded.
28
+ * @returns An encoded query string.
29
+ */
30
+ export function encodeQueryString(params: any): string {
31
+ const newParams = processParams(params);
32
+ return Object.keys(newParams)
33
+ .map((key: any) => {
34
+ return encodeParam(key, newParams[key]);
35
+ })
36
+ .join("&");
37
+ }
@@ -0,0 +1,109 @@
1
+ /* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ /**
5
+ * Checks parameters to see if we should use FormData to send the request
6
+ * @param params The object whose keys will be encoded.
7
+ * @return A boolean indicating if FormData will be required.
8
+ */
9
+ export function requiresFormData(params: any) {
10
+ return Object.keys(params).some(key => {
11
+ let value = params[key];
12
+
13
+ if (!value) {
14
+ return false;
15
+ }
16
+
17
+ if (value && value.toParam) {
18
+ value = value.toParam();
19
+ }
20
+
21
+ const type = value.constructor.name;
22
+
23
+ switch (type) {
24
+ case "Array":
25
+ return false;
26
+ case "Object":
27
+ return false;
28
+ case "Date":
29
+ return false;
30
+ case "Function":
31
+ return false;
32
+ case "Boolean":
33
+ return false;
34
+ case "String":
35
+ return false;
36
+ case "Number":
37
+ return false;
38
+ default:
39
+ return true;
40
+ }
41
+ });
42
+ }
43
+
44
+ /**
45
+ * Converts parameters to the proper representation to send to the ArcGIS REST API.
46
+ * @param params The object whose keys will be encoded.
47
+ * @return A new object with properly encoded values.
48
+ */
49
+ export function processParams(params: any): any {
50
+ const newParams: any = {};
51
+
52
+ Object.keys(params).forEach(key => {
53
+ let param = params[key];
54
+
55
+ if (param && param.toParam) {
56
+ param = param.toParam();
57
+ }
58
+
59
+ if (
60
+ !param &&
61
+ param !== 0 &&
62
+ typeof param !== "boolean" &&
63
+ typeof param !== "string"
64
+ ) {
65
+ return;
66
+ }
67
+
68
+ const type = param.constructor.name;
69
+
70
+ let value: any;
71
+
72
+ // properly encodes objects, arrays and dates for arcgis.com and other services.
73
+ // ported from https://github.com/Esri/esri-leaflet/blob/master/src/Request.js#L22-L30
74
+ // also see https://github.com/Esri/arcgis-rest-js/issues/18:
75
+ // null, undefined, function are excluded. If you want to send an empty key you need to send an empty string "".
76
+ switch (type) {
77
+ case "Array":
78
+ // Based on the first element of the array, classify array as an array of arrays, an array of objects
79
+ // to be stringified, or an array of non-objects to be comma-separated
80
+ // eslint-disable-next-line no-case-declarations
81
+ const firstElementType = param[0]?.constructor?.name;
82
+ value =
83
+ firstElementType === "Array" ? param : // pass thru array of arrays
84
+ firstElementType === "Object" ? JSON.stringify(param) : // stringify array of objects
85
+ param.join(","); // join other types of array elements
86
+ break;
87
+ case "Object":
88
+ value = JSON.stringify(param);
89
+ break;
90
+ case "Date":
91
+ value = param.valueOf();
92
+ break;
93
+ case "Function":
94
+ value = null;
95
+ break;
96
+ case "Boolean":
97
+ value = param + "";
98
+ break;
99
+ default:
100
+ value = param;
101
+ break;
102
+ }
103
+ if (value || value === 0 || typeof value === "string" || Array.isArray(value)) {
104
+ newParams[key] = value;
105
+ }
106
+ });
107
+
108
+ return newParams;
109
+ }
@@ -0,0 +1,10 @@
1
+ /* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { IRequestOptions } from "./IRequestOptions.js";
5
+ import { IAuthenticationManager } from "./IAuthenticationManager.js";
6
+
7
+ export type IRetryAuthError = (
8
+ url: string,
9
+ options: IRequestOptions
10
+ ) => Promise<IAuthenticationManager>;
@@ -0,0 +1,11 @@
1
+ /* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ /**
5
+ * Method used internally to surface messages to developers.
6
+ */
7
+ export function warn(message: string) {
8
+ if (console && console.warn) {
9
+ console.warn.apply(console, [message]);
10
+ }
11
+ }
@@ -0,0 +1,48 @@
1
+ import { IRequestOptions } from "../utils/IRequestOptions.js";
2
+
3
+ /**
4
+ * Allows you to wrap individual methods with a default set of request options. This is useful to avoid setting the same option more then once and allows for interacting and setting defaults in a functional manner.
5
+ *
6
+ * ```js
7
+ * import { withOptions } from "@esri/arcgis-rest-request";
8
+ * import { queryFeatures } from '@esri/arcgis-rest-feature-service';
9
+ *
10
+ * const queryTrails = withOptions({
11
+ * url: "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trailheads/FeatureServer/0/"}, queryFeatures);
12
+ *
13
+ * queryTrails({
14
+ * where: "ELEV_FT > 1000"
15
+ * }).then(result);
16
+ *
17
+ * const queryTrailsAsUser = withOptions({
18
+ * authentication: ArcGISIdentityManager
19
+ * }, queryTrails);
20
+ *
21
+ * queryTrailsAsUser({
22
+ * where: "TRL_NAME LIKE '%backbone%'"
23
+ * }).then(result);
24
+ * ```
25
+ *
26
+ * @param defaultOptions The options to pass into to the `func`.
27
+ * @param func Any function that accepts anything extending `IRequestOptions` as its last parameter.
28
+ * @returns A copy of `func` with the `defaultOptions` passed in as defaults.
29
+ */
30
+ export function withOptions<
31
+ K extends IRequestOptions,
32
+ T extends (...args: any[]) => any
33
+ >(
34
+ defaultOptions: IRequestOptions,
35
+ func: T
36
+ ): (...funcArgs: Parameters<T>) => ReturnType<T> {
37
+ return (...args: Parameters<T>): ReturnType<T> => {
38
+ const options: K =
39
+ typeof args[args.length - 1] === "object"
40
+ ? {
41
+ ...defaultOptions,
42
+ ...args.pop()
43
+ }
44
+ : defaultOptions;
45
+
46
+ return func(...[...args, options]);
47
+ };
48
+ }
@@ -0,0 +1,69 @@
1
+ /* Copyright (c) 2018-2020 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { request } from "./request.js";
5
+ import { IRequestOptions } from "./utils/IRequestOptions.js";
6
+
7
+ export interface IAppAccess {
8
+ /**
9
+ * Verifies that the token is valid and the user has access to
10
+ * the specified app (clientId)
11
+ */
12
+ valid: boolean;
13
+ /**
14
+ * Should the app present the current user with a "View Only" mode
15
+ */
16
+ viewOnlyUserTypeApp: boolean;
17
+ }
18
+
19
+ /**
20
+ * Validates that the user has access to the application
21
+ * and if they user should be presented a "View Only" mode
22
+ *
23
+ * This is only needed/valid for Esri applications that are "licensed"
24
+ * and shipped in ArcGIS Online or ArcGIS Enterprise. Most custom applications
25
+ * should not need or use this.
26
+ *
27
+ * ```js
28
+ * import { validateAppAccess } from '@esri/arcgis-rest-auth';
29
+ *
30
+ * return validateAppAccess('your-token', 'theClientId')
31
+ * .then((result) => {
32
+ * if (!result.value) {
33
+ * // redirect or show some other ui
34
+ * } else {
35
+ * if (result.viewOnlyUserTypeApp) {
36
+ * // use this to inform your app to show a "View Only" mode
37
+ * }
38
+ * }
39
+ * })
40
+ * .catch((err) => {
41
+ * // two possible errors
42
+ * // invalid clientId: {"error":{"code":400,"messageCode":"GWM_0007","message":"Invalid request","details":[]}}
43
+ * // invalid token: {"error":{"code":498,"message":"Invalid token.","details":[]}}
44
+ * })
45
+ * ```
46
+ *
47
+ * Note: This is only usable by Esri applications hosted on *arcgis.com, *esri.com or within
48
+ * an ArcGIS Enterprise installation. Custom applications can not use this.
49
+ *
50
+ * @param token platform token
51
+ * @param clientId application client id
52
+ * @param portal Optional
53
+ */
54
+ export function validateAppAccess(
55
+ token: string,
56
+ clientId: string,
57
+ portal = "https://www.arcgis.com/sharing/rest"
58
+ ): Promise<IAppAccess> {
59
+ const url = `${portal}/oauth2/validateAppAccess`;
60
+ const ro = {
61
+ method: "POST",
62
+ params: {
63
+ f: "json",
64
+ client_id: clientId,
65
+ token
66
+ }
67
+ } as IRequestOptions;
68
+ return request(url, ro);
69
+ }
@@ -0,0 +1,53 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { ApiKeyManager } from "../src/index.js";
5
+ import fetchMock from "fetch-mock";
6
+
7
+ describe("ApiKeyManager", () => {
8
+ afterEach(fetchMock.restore);
9
+
10
+ describe(".getToken()", () => {
11
+ it("should return the Api Key", (done) => {
12
+ const session = new ApiKeyManager({
13
+ key: "123456"
14
+ });
15
+
16
+ Promise.all([
17
+ session.getToken("https://www.arcgis.com/sharing/rest/portals/self"),
18
+ session.getToken(
19
+ "https://services1.arcgis.com/MOCK_ORG/arcgis/rest/services/Private_Service/FeatureServer"
20
+ )
21
+ ])
22
+ .then(([token1, token2]) => {
23
+ expect(token1).toBe("123456");
24
+ expect(token2).toBe("123456");
25
+ done();
26
+ })
27
+ .catch((e) => {
28
+ fail(e);
29
+ });
30
+ });
31
+ });
32
+
33
+ describe(".fromKey()", () => {
34
+ it("should create a new ApiKeyManager", (done) => {
35
+ const session = ApiKeyManager.fromKey("123456");
36
+
37
+ Promise.all([
38
+ session.getToken("https://www.arcgis.com/sharing/rest/portals/self"),
39
+ session.getToken(
40
+ "https://services1.arcgis.com/MOCK_ORG/arcgis/rest/services/Private_Service/FeatureServer"
41
+ )
42
+ ])
43
+ .then(([token1, token2]) => {
44
+ expect(token1).toBe("123456");
45
+ expect(token2).toBe("123456");
46
+ done();
47
+ })
48
+ .catch((e) => {
49
+ fail(e);
50
+ });
51
+ });
52
+ });
53
+ });