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,92 @@
1
+ import { request, ISpatialReference } from "@esri/arcgis-rest-request";
2
+ import { determineOwner, IUserItemOptions } from "./helpers.js";
3
+ import { getPortalUrl } from "../util/get-portal-url.js";
4
+
5
+ type ExportFormat =
6
+ | "Shapefile"
7
+ | "CSV"
8
+ | "File Geodatabase"
9
+ | "Feature Collection"
10
+ | "GeoJson"
11
+ | "Scene Package"
12
+ | "KML"
13
+ | "Excel";
14
+
15
+ export interface IExportLayerInfo {
16
+ id: number;
17
+ where?: string;
18
+ includeGeometry?: boolean;
19
+ xColumnName?: string;
20
+ yColumnName?: string;
21
+ }
22
+
23
+ export interface IExportParameters {
24
+ layers?: IExportLayerInfo[];
25
+ targetSR?: ISpatialReference | string;
26
+ }
27
+
28
+ export interface IExportItemRequestOptions extends IUserItemOptions {
29
+ title?: string;
30
+ exportFormat: ExportFormat;
31
+ exportParameters?: IExportParameters;
32
+ }
33
+
34
+ export interface IExportItemResponse {
35
+ type: string;
36
+ size: number;
37
+ jobId: string;
38
+ exportItemId: string;
39
+ serviceItemId: string;
40
+ exportFormat: ExportFormat;
41
+ }
42
+
43
+ /**
44
+ * ```js
45
+ * import { exportItem } from "@esri/arcgis-rest-portal";
46
+ * //
47
+ * exportItem({
48
+ * id: '3daf',
49
+ * owner: 'geemike',
50
+ * exportFormat: 'CSV',
51
+ * exportParameters: {
52
+ * layers: [
53
+ * { id: 0 },
54
+ * { id: 1, where: 'POP1999 > 100000' }
55
+ * ]
56
+ * },
57
+ * authentication,
58
+ * })
59
+ * ```
60
+ * Exports an item from the portal. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/export-item.htm) for more information.
61
+ *
62
+ * @param requestOptions - Options for the request
63
+ * @returns A Promise<IExportItemResponse>
64
+ */
65
+ export const exportItem = (
66
+ requestOptions: IExportItemRequestOptions
67
+ ): Promise<IExportItemResponse> => {
68
+ const {
69
+ authentication,
70
+ id: itemId,
71
+ title,
72
+ exportFormat,
73
+ exportParameters
74
+ } = requestOptions;
75
+
76
+ return determineOwner(requestOptions)
77
+ .then(
78
+ (owner) => `${getPortalUrl(requestOptions)}/content/users/${owner}/export`
79
+ )
80
+ .then((url) =>
81
+ request(url, {
82
+ httpMethod: "POST",
83
+ authentication,
84
+ params: {
85
+ itemId,
86
+ title,
87
+ exportFormat,
88
+ exportParameters
89
+ }
90
+ })
91
+ );
92
+ };
@@ -0,0 +1,444 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import {
5
+ request,
6
+ IRequestOptions,
7
+ appendCustomParams,
8
+ IGroup
9
+ } from "@esri/arcgis-rest-request";
10
+ import { IItem } from "../helpers.js";
11
+
12
+ import { getPortalUrl } from "../util/get-portal-url.js";
13
+ import { scrubControlChars } from "../util/scrub-control-chars.js";
14
+ import {
15
+ IItemDataOptions,
16
+ IItemRelationshipOptions,
17
+ IUserItemOptions,
18
+ determineOwner,
19
+ FetchReadMethodName
20
+ } from "./helpers.js";
21
+
22
+ /**
23
+ * ```
24
+ * import { getItem } from "@esri/arcgis-rest-portal";
25
+ * //
26
+ * getItem("ae7")
27
+ * .then(response);
28
+ * // or
29
+ * getItem("ae7", { authentication })
30
+ * .then(response)
31
+ * ```
32
+ * Get an item by id. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/item.htm) for more information.
33
+ *
34
+ * @param id - Item Id
35
+ * @param requestOptions - Options for the request
36
+ * @returns A Promise that will resolve with the data from the response.
37
+ */
38
+ export function getItem(
39
+ id: string,
40
+ requestOptions?: IRequestOptions
41
+ ): Promise<IItem> {
42
+ const url = getItemBaseUrl(id, requestOptions);
43
+
44
+ // default to a GET request
45
+ const options: IRequestOptions = {
46
+ ...{ httpMethod: "GET" },
47
+ ...requestOptions
48
+ };
49
+ return request(url, options);
50
+ }
51
+
52
+ /**
53
+ * Get the fully qualified base URL to the REST end point for an item.
54
+ * @param id Item Id
55
+ * @param portalUrlOrRequestOptions a portal URL or request options
56
+ * @returns URL to the item's REST end point, defaults to `https://www.arcgis.com/sharing/rest/content/items/{id}`
57
+ */
58
+ export const getItemBaseUrl = (
59
+ id: string,
60
+ portalUrlOrRequestOptions?: string | IRequestOptions
61
+ ) => {
62
+ const portalUrl =
63
+ typeof portalUrlOrRequestOptions === "string"
64
+ ? portalUrlOrRequestOptions
65
+ : getPortalUrl(portalUrlOrRequestOptions);
66
+ return `${portalUrl}/content/items/${id}`;
67
+ };
68
+
69
+ /**
70
+ * ```
71
+ * import { getItemData } from "@esri/arcgis-rest-portal";
72
+ * //
73
+ * getItemData("ae7")
74
+ * .then(response)
75
+ * // or
76
+ * getItemData("ae7", { authentication })
77
+ * .then(response)
78
+ * ```
79
+ * Get the /data for an item. If no data exists, returns `undefined`. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/item-data.htm) for more information.
80
+ * @param id - Item Id
81
+ * @param requestOptions - Options for the request
82
+ * @returns A Promise that will resolve with the json data for the item.
83
+ */
84
+ export function getItemData(
85
+ id: string,
86
+ requestOptions?: IItemDataOptions
87
+ ): Promise<any> {
88
+ const url = `${getItemBaseUrl(id, requestOptions)}/data`;
89
+ // default to a GET request
90
+ const options: IItemDataOptions = {
91
+ ...{ httpMethod: "GET", params: {} },
92
+ ...requestOptions
93
+ };
94
+
95
+ if (options.file) {
96
+ options.params.f = null;
97
+ }
98
+
99
+ return request(url, options).catch((err) => {
100
+ /* if the item doesn't include data, the response will be empty
101
+ and the internal call to response.json() will fail */
102
+ const emptyResponseErr = RegExp(
103
+ /The string did not match the expected pattern|(Unexpected end of (JSON input|data at line 1 column 1))/i
104
+ );
105
+ /* istanbul ignore else */
106
+ if (emptyResponseErr.test(err.message)) {
107
+ return;
108
+ } else throw err;
109
+ });
110
+ }
111
+
112
+ export interface IGetRelatedItemsResponse {
113
+ total: number;
114
+ relatedItems: IItem[];
115
+ }
116
+
117
+ /**
118
+ * ```
119
+ * import { getRelatedItems } from "@esri/arcgis-rest-portal";
120
+ * //
121
+ * getRelatedItems({
122
+ * id: "ae7",
123
+ * relationshipType: "Service2Layer" // or several ["Service2Layer", "Map2Area"]
124
+ * })
125
+ * .then(response)
126
+ * ```
127
+ * Get the related items. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/related-items.htm) for more information.
128
+ *
129
+ * @param requestOptions - Options for the request
130
+ * @returns A Promise to get some item resources.
131
+ */
132
+ export function getRelatedItems(
133
+ requestOptions: IItemRelationshipOptions
134
+ ): Promise<IGetRelatedItemsResponse> {
135
+ const url = `${getItemBaseUrl(
136
+ requestOptions.id,
137
+ requestOptions
138
+ )}/relatedItems`;
139
+
140
+ const options: IItemRelationshipOptions = {
141
+ httpMethod: "GET",
142
+ params: {
143
+ direction: requestOptions.direction
144
+ },
145
+ ...requestOptions
146
+ };
147
+
148
+ if (typeof requestOptions.relationshipType === "string") {
149
+ options.params.relationshipType = requestOptions.relationshipType;
150
+ } else {
151
+ options.params.relationshipTypes = requestOptions.relationshipType;
152
+ }
153
+
154
+ delete options.direction;
155
+ delete options.relationshipType;
156
+
157
+ return request(url, options);
158
+ }
159
+
160
+ /**
161
+ * Get the resources associated with an item
162
+ *
163
+ * @param requestOptions - Options for the request
164
+ * @returns A Promise to get some item resources.
165
+ */
166
+ export function getItemResources(
167
+ id: string,
168
+ requestOptions?: IRequestOptions
169
+ ): Promise<any> {
170
+ const url = `${getItemBaseUrl(id, requestOptions)}/resources`;
171
+
172
+ // Mix in num:1000 with any user supplied params
173
+ // Key thing - we don't want to mutate the passed in requestOptions
174
+ // as that may be used in other (subsequent) calls in the course
175
+ // of a long promise chains
176
+ const options: IRequestOptions = {
177
+ ...requestOptions
178
+ };
179
+ options.params = { num: 1000, ...options.params };
180
+
181
+ return request(url, options);
182
+ }
183
+
184
+ export interface IGetItemGroupsResponse {
185
+ admin?: IGroup[];
186
+ member?: IGroup[];
187
+ other?: IGroup[];
188
+ }
189
+
190
+ export interface IGetItemResourceOptions extends IRequestOptions {
191
+ /**
192
+ * Name of the info file, optionally including the folder path
193
+ */
194
+ fileName: string;
195
+ /**
196
+ * How the fetch response should be read, see:
197
+ * https://developer.mozilla.org/en-US/docs/Web/API/Body#Methods
198
+ */
199
+ readAs?: FetchReadMethodName;
200
+ }
201
+
202
+ /**
203
+ * ```js
204
+ * import { getItemResource } from "@esri/arcgis-rest-portal";
205
+ *
206
+ * // Parses contents as blob by default
207
+ * getItemResource("3ef", { fileName: "resource.jpg", ...})
208
+ * .then(resourceContents => {});
209
+ *
210
+ * // Can override parse method
211
+ * getItemResource("3ef", { fileName: "resource.json", readAs: 'json', ...})
212
+ * .then(resourceContents => {});
213
+ *
214
+ * // Get the response object instead
215
+ * getItemResource("3ef",{ rawResponse: true, fileName: "resource.json" })
216
+ * .then(response => {})
217
+ * ```
218
+ * Fetches an item resource and optionally parses it to the correct format.
219
+ *
220
+ * Note: provides JSON parse error protection by sanitizing out any unescaped control
221
+ * characters before parsing that would otherwise cause an error to be thrown
222
+ *
223
+ * @param {string} itemId
224
+ * @param {IGetItemResourceOptions} requestOptions
225
+ */
226
+ export function getItemResource(
227
+ itemId: string,
228
+ requestOptions: IGetItemResourceOptions
229
+ ) {
230
+ const readAs = requestOptions.readAs || "blob";
231
+ return getItemFile(
232
+ itemId,
233
+ `/resources/${requestOptions.fileName}`,
234
+ readAs,
235
+ requestOptions
236
+ );
237
+ }
238
+
239
+ /**
240
+ * ```js
241
+ * import { getItemGroups } from "@esri/arcgis-rest-portal";
242
+ * //
243
+ * getItemGroups("30e5fe3149c34df1ba922e6f5bbf808f")
244
+ * .then(response)
245
+ * ```
246
+ * Lists the groups of which the item is a part, only showing the groups that the calling user can access. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/groups.htm) for more information.
247
+ *
248
+ * @param id - The Id of the item to query group association for.
249
+ * @param requestOptions - Options for the request
250
+ * @returns A Promise to get some item groups.
251
+ */
252
+ export function getItemGroups(
253
+ id: string,
254
+ requestOptions?: IRequestOptions
255
+ ): Promise<IGetItemGroupsResponse> {
256
+ const url = `${getItemBaseUrl(id, requestOptions)}/groups`;
257
+
258
+ return request(url, requestOptions);
259
+ }
260
+
261
+ export interface IItemStatusOptions extends IUserItemOptions {
262
+ /**
263
+ * The type of asynchronous job for which the status has to be checked. Default is none, which check the item's status.
264
+ */
265
+ jobType?: "publish" | "generateFeatures" | "export" | "createService";
266
+ /**
267
+ * The job ID returned during publish, generateFeatures, export, and createService calls.
268
+ */
269
+ jobId?: string;
270
+ /**
271
+ * The response format. The default and the only response format for this resource is HTML.
272
+ */
273
+ format?: "html";
274
+ }
275
+
276
+ export interface IGetItemStatusResponse {
277
+ status: "partial" | "processing" | "failed" | "completed";
278
+ statusMessage: string;
279
+ itemId: string;
280
+ }
281
+
282
+ /**
283
+ * ```js
284
+ * import { getItemStatus } from "@esri/arcgis-rest-portal";
285
+ * //
286
+ * getItemStatus({
287
+ * id: "30e5fe3149c34df1ba922e6f5bbf808f",
288
+ * authentication
289
+ * })
290
+ * .then(response)
291
+ * ```
292
+ * Inquire about status when publishing an item, adding an item in async mode, or adding with a multipart upload. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/status.htm) for more information.
293
+ *
294
+ * @param id - The Id of the item to get status for.
295
+ * @param requestOptions - Options for the request
296
+ * @returns A Promise to get the item status.
297
+ */
298
+ export function getItemStatus(
299
+ requestOptions: IItemStatusOptions
300
+ ): Promise<IGetItemStatusResponse> {
301
+ return determineOwner(requestOptions).then((owner) => {
302
+ const url = `${getPortalUrl(requestOptions)}/content/users/${owner}/items/${
303
+ requestOptions.id
304
+ }/status`;
305
+
306
+ const options = appendCustomParams<IItemStatusOptions>(
307
+ requestOptions,
308
+ ["jobId", "jobType"],
309
+ { params: { ...requestOptions.params } }
310
+ );
311
+
312
+ return request(url, options);
313
+ });
314
+ }
315
+
316
+ export interface IGetItemPartsResponse {
317
+ parts: number[];
318
+ }
319
+
320
+ /**
321
+ * ```js
322
+ * import { getItemParts } from "@esri/arcgis-rest-portal";
323
+ * //
324
+ * getItemParts({
325
+ * id: "30e5fe3149c34df1ba922e6f5bbf808f",
326
+ * authentication
327
+ * })
328
+ * .then(response)
329
+ * ```
330
+ * Lists the part numbers of the file parts that have already been uploaded in a multipart file upload. This method can be used to verify the parts that have been received as well as those parts that were not received by the server. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/parts.htm) for more information.
331
+ *
332
+ * @param id - The Id of the item to get part list.
333
+ * @param requestOptions - Options for the request
334
+ * @returns A Promise to get the item part list.
335
+ */
336
+ export function getItemParts(
337
+ requestOptions: IUserItemOptions
338
+ ): Promise<IGetItemPartsResponse> {
339
+ return determineOwner(requestOptions).then((owner) => {
340
+ const url = `${getPortalUrl(requestOptions)}/content/users/${owner}/items/${
341
+ requestOptions.id
342
+ }/parts`;
343
+ return request(url, requestOptions);
344
+ });
345
+ }
346
+
347
+ export interface IGetItemInfoOptions extends IRequestOptions {
348
+ /**
349
+ * Name of the info file, optionally including the folder path
350
+ */
351
+ fileName?: string;
352
+ /**
353
+ * How the fetch response should be read, see:
354
+ * https://developer.mozilla.org/en-US/docs/Web/API/Body#Methods
355
+ */
356
+ readAs?: FetchReadMethodName;
357
+ }
358
+
359
+ /**
360
+ * ```
361
+ * import { getItemInfo } from "@esri/arcgis-rest-portal";
362
+ * // get the "Info Card" for the item
363
+ * getItemInfo("ae7")
364
+ * .then(itemInfoXml) // XML document as a string
365
+ * // or get the contents of a specific file
366
+ * getItemInfo("ae7", { fileName: "form.json", readAs: "json", authentication })
367
+ * .then(formJson) // JSON document as JSON
368
+ * ```
369
+ * Get an info file for an item. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/item-info-file.htm) for more information.
370
+ * @param id - Item Id
371
+ * @param requestOptions - Options for the request, including the file name which defaults to `iteminfo.xml`.
372
+ * If the file is not a text file (XML, HTML, etc) you will need to specify the `readAs` parameter
373
+ * @returns A Promise that will resolve with the contents of the info file for the item.
374
+ */
375
+ export function getItemInfo(
376
+ id: string,
377
+ requestOptions?: IGetItemInfoOptions
378
+ ): Promise<any> {
379
+ const { fileName = "iteminfo.xml", readAs = "text" } = requestOptions || {};
380
+ const options: IRequestOptions = {
381
+ httpMethod: "GET",
382
+ ...requestOptions
383
+ };
384
+ return getItemFile(id, `/info/${fileName}`, readAs, options);
385
+ }
386
+
387
+ /**
388
+ * ```
389
+ * import { getItemMetadata } from "@esri/arcgis-rest-portal";
390
+ * // get the metadata for the item
391
+ * getItemMetadata("ae7")
392
+ * .then(itemMetadataXml) // XML document as a string
393
+ * // or with additional request options
394
+ * getItemMetadata("ae7", { authentication })
395
+ * .then(itemMetadataXml) // XML document as a string
396
+ * ```
397
+ * Get the standard formal metadata XML file for an item (`/info/metadata/metadata.xml`)
398
+ * @param id - Item Id
399
+ * @param requestOptions - Options for the request
400
+ * @returns A Promise that will resolve with the contents of the metadata file for the item as a string.
401
+ */
402
+ export function getItemMetadata(
403
+ id: string,
404
+ requestOptions?: IRequestOptions
405
+ ): Promise<any> {
406
+ const options = {
407
+ ...requestOptions,
408
+ fileName: "metadata/metadata.xml"
409
+ } as IGetItemInfoOptions;
410
+ return getItemInfo(id, options);
411
+ }
412
+
413
+ // overrides request()'s default behavior for reading the response
414
+ // which is based on `params.f` and defaults to JSON
415
+ // Also adds JSON parse error protection by sanitizing out any unescaped control characters before parsing
416
+ function getItemFile(
417
+ id: string,
418
+ // NOTE: fileName should include any folder/subfolders
419
+ fileName: string,
420
+ readMethod: FetchReadMethodName,
421
+ requestOptions?: IRequestOptions
422
+ ): Promise<any> {
423
+ const url = `${getItemBaseUrl(id, requestOptions)}${fileName}`;
424
+ // preserve escape hatch to let the consumer read the response
425
+ // and ensure the f param is not appended to the query string
426
+ const options: IRequestOptions = {
427
+ params: {},
428
+ ...requestOptions
429
+ };
430
+ const justReturnResponse = options.rawResponse;
431
+ options.rawResponse = true;
432
+ options.params.f = null;
433
+
434
+ return request(url, options).then((response) => {
435
+ if (justReturnResponse) {
436
+ return response;
437
+ }
438
+ return readMethod !== "json"
439
+ ? response[readMethod]()
440
+ : response
441
+ .text()
442
+ .then((text: string) => JSON.parse(scrubControlChars(text)));
443
+ });
444
+ }