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,157 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import {
5
+ request,
6
+ IUserRequestOptions,
7
+ IGroup
8
+ } from "@esri/arcgis-rest-request";
9
+
10
+ import { getPortalUrl } from "../util/get-portal-url.js";
11
+
12
+ export interface IInvitation {
13
+ id: string;
14
+ targetType: string;
15
+ targetId: string;
16
+ received: number;
17
+ accepted: boolean;
18
+ mustApprove: boolean;
19
+ email: string;
20
+ role: string;
21
+ type: string;
22
+ dateAccepted: number;
23
+ expiration: number;
24
+ created: number;
25
+ username: string;
26
+ fromUsername: {
27
+ username: string;
28
+ fullname?: string;
29
+ };
30
+ group?: IGroup;
31
+ groupId?: string;
32
+ }
33
+
34
+ export interface IInvitationResult {
35
+ userInvitations: IInvitation[];
36
+ }
37
+
38
+ /**
39
+ * ```js
40
+ * import { getUserInvitations } from '@esri/arcgis-rest-portal';
41
+ * // username is inferred from ArcGISIdentityManager
42
+ * getUserInvitations({ authentication })
43
+ * .then(response) // response.userInvitations.length => 3
44
+ * ```
45
+ * Get all invitations for a user. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/user-invitations.htm) for more information.
46
+ *
47
+ * @param requestOptions - options to pass through in the request
48
+ * @returns A Promise that will resolve with the user's invitations
49
+ */
50
+ export function getUserInvitations(
51
+ requestOptions: IUserRequestOptions
52
+ ): Promise<IInvitationResult> {
53
+ let options = { httpMethod: "GET" } as IUserRequestOptions;
54
+
55
+ const username = encodeURIComponent(requestOptions.authentication.username);
56
+ const portalUrl = getPortalUrl(requestOptions);
57
+ const url = `${portalUrl}/community/users/${username}/invitations`;
58
+ options = { ...requestOptions, ...options };
59
+
60
+ // send the request
61
+ return request(url, options);
62
+ }
63
+
64
+ export interface IGetUserInvitationOptions extends IUserRequestOptions {
65
+ invitationId: string;
66
+ }
67
+
68
+ /**
69
+ * ```js
70
+ * import { getUserInvitation } from '@esri/arcgis-rest-portal';
71
+ * // username is inferred from ArcGISIdentityManager
72
+ * getUserInvitation({
73
+ * invitationId: "3ef",
74
+ * authentication
75
+ * })
76
+ * .then(response) // => response.accepted => true
77
+ * ```
78
+ * Get an invitation for a user by id. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/user-invitation.htm) for more information.
79
+ *
80
+ * @param requestOptions - options to pass through in the request
81
+ * @returns A Promise that will resolve with the invitation
82
+ */
83
+ export function getUserInvitation(
84
+ requestOptions: IGetUserInvitationOptions
85
+ ): Promise<IInvitation> {
86
+ const username = encodeURIComponent(requestOptions.authentication.username);
87
+ const portalUrl = getPortalUrl(requestOptions);
88
+ const url = `${portalUrl}/community/users/${username}/invitations/${requestOptions.invitationId}`;
89
+
90
+ let options = { httpMethod: "GET" } as IGetUserInvitationOptions;
91
+ options = { ...requestOptions, ...options };
92
+
93
+ // send the request
94
+ return request(url, options);
95
+ }
96
+
97
+ /**
98
+ * ```js
99
+ * import { acceptInvitation } from '@esri/arcgis-rest-portal';
100
+ * // username is inferred from ArcGISIdentityManager
101
+ * acceptInvitation({
102
+ * invitationId: "3ef",
103
+ * authentication
104
+ * })
105
+ * .then(response)
106
+ * ```
107
+ * Accept an invitation. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/accept-invitation.htm) for more information.
108
+ *
109
+ * @param requestOptions - Options for the request
110
+ * @returns A Promise that will resolve with the success/failure status of the request
111
+ */
112
+ export function acceptInvitation(
113
+ requestOptions: IGetUserInvitationOptions
114
+ ): Promise<{
115
+ success: boolean;
116
+ username: string;
117
+ groupId: string;
118
+ id: string;
119
+ }> {
120
+ const username = encodeURIComponent(requestOptions.authentication.username);
121
+ const portalUrl = getPortalUrl(requestOptions);
122
+ const url = `${portalUrl}/community/users/${username}/invitations/${requestOptions.invitationId}/accept`;
123
+
124
+ const options: IGetUserInvitationOptions = { ...requestOptions };
125
+ return request(url, options);
126
+ }
127
+
128
+ /**
129
+ * ```js
130
+ * import { declineInvitation } from '@esri/arcgis-rest-portal';
131
+ * // username is inferred from ArcGISIdentityManager
132
+ * declineInvitation({
133
+ * invitationId: "3ef",
134
+ * authentication
135
+ * })
136
+ * .then(response)
137
+ * ```
138
+ * Decline an invitation. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/decline-invitation.htm) for more information.
139
+ *
140
+ * @param requestOptions - Options for the request
141
+ * @returns A Promise that will resolve with the success/failure status of the request
142
+ */
143
+ export function declineInvitation(
144
+ requestOptions: IGetUserInvitationOptions
145
+ ): Promise<{
146
+ success: boolean;
147
+ username: string;
148
+ groupId: string;
149
+ id: string;
150
+ }> {
151
+ const username = encodeURIComponent(requestOptions.authentication.username);
152
+ const portalUrl = getPortalUrl(requestOptions);
153
+ const url = `${portalUrl}/community/users/${username}/invitations/${requestOptions.invitationId}/decline`;
154
+
155
+ const options: IGetUserInvitationOptions = { ...requestOptions };
156
+ return request(url, options);
157
+ }
@@ -0,0 +1,67 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { request, IUserRequestOptions } from "@esri/arcgis-rest-request";
5
+
6
+ import { getPortalUrl } from "../util/get-portal-url.js";
7
+
8
+ export interface INotification {
9
+ id: string;
10
+ type: string;
11
+ target: string;
12
+ targetType: string;
13
+ received: number;
14
+ data: { [key: string]: any };
15
+ }
16
+
17
+ export interface IRemoveNotificationOptions extends IUserRequestOptions {
18
+ /**
19
+ * Unique identifier of the item.
20
+ */
21
+ id: string;
22
+ }
23
+ export interface INotificationResult {
24
+ notifications: INotification[];
25
+ }
26
+
27
+ /**
28
+ * ```js
29
+ * import { getUserNotifications } from '@esri/arcgis-rest-portal';
30
+ * // username is inferred from ArcGISIdentityManager
31
+ * getUserNotifications({ authentication })
32
+ * .then(results) // results.notifications.length) => 3
33
+ * ```
34
+ * Get notifications for a user.
35
+ *
36
+ * @param requestOptions - options to pass through in the request
37
+ * @returns A Promise that will resolve with the user's notifications
38
+ */
39
+ export function getUserNotifications(
40
+ requestOptions: IUserRequestOptions
41
+ ): Promise<INotificationResult> {
42
+ let options = { httpMethod: "GET" } as IUserRequestOptions;
43
+
44
+ const username = encodeURIComponent(requestOptions.authentication.username);
45
+ const portalUrl = getPortalUrl(requestOptions);
46
+ const url = `${portalUrl}/community/users/${username}/notifications`;
47
+ options = { ...requestOptions, ...options };
48
+
49
+ // send the request
50
+ return request(url, options);
51
+ }
52
+
53
+ /**
54
+ * Delete a notification.
55
+ *
56
+ * @param requestOptions - Options for the request
57
+ * @returns A Promise that will resolve with the success/failure status of the request
58
+ */
59
+ export function removeNotification(
60
+ requestOptions: IRemoveNotificationOptions
61
+ ): Promise<{ success: boolean; notificationId: string }> {
62
+ const username = encodeURIComponent(requestOptions.authentication.username);
63
+ const portalUrl = getPortalUrl(requestOptions);
64
+ const url = `${portalUrl}/community/users/${username}/notifications/${requestOptions.id}/delete`;
65
+
66
+ return request(url, requestOptions);
67
+ }
@@ -0,0 +1,35 @@
1
+ /* Copyright (c) 2018-2019 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+ import { IAuthenticationManager, IUser } from "@esri/arcgis-rest-request";
4
+ import { SearchQueryBuilder } from "../util/SearchQueryBuilder.js";
5
+ import { ISearchOptions, ISearchResult } from "../util/search.js";
6
+ import { genericSearch } from "../util/generic-search.js";
7
+
8
+ // export interface IUserSearchOptions extends IAuthenticatedRequestOptions, IPagingParams {
9
+ // q: string | SearchQueryBuilder;
10
+ // sortField?: string;
11
+ // sortOrder?: string;
12
+ // [key: string]: any;
13
+ // }
14
+
15
+ export interface IUserSearchOptions extends ISearchOptions {
16
+ authentication: IAuthenticationManager;
17
+ }
18
+
19
+ /**
20
+ * ```js
21
+ * import { searchItems } from "@esri/arcgis-rest-portal";
22
+ * //
23
+ * searchUsers({ q: 'tommy', authentication })
24
+ * .then(response) // response.total => 355
25
+ * ```
26
+ * Search a portal for users.
27
+ *
28
+ * @param search - A RequestOptions object to pass through to the endpoint.
29
+ * @returns A Promise that will resolve with the data from the response.
30
+ */
31
+ export function searchUsers(
32
+ search: IUserSearchOptions | SearchQueryBuilder
33
+ ): Promise<ISearchResult<IUser>> {
34
+ return genericSearch<IUser>(search, "user");
35
+ }
@@ -0,0 +1,63 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { request, IUserRequestOptions, IUser } from "@esri/arcgis-rest-request";
5
+
6
+ import { getPortalUrl } from "../util/get-portal-url.js";
7
+
8
+ export interface IUpdateUserOptions extends IUserRequestOptions {
9
+ /**
10
+ * The user properties to be updated.
11
+ */
12
+ user: IUser;
13
+ }
14
+
15
+ export interface IUpdateUserResponse {
16
+ success: boolean;
17
+ username: string;
18
+ }
19
+
20
+ /**
21
+ * ```js
22
+ * import { updateUser } from '@esri/arcgis-rest-portal';
23
+ * // any user can update their own profile
24
+ * updateUser({
25
+ * authentication,
26
+ * user: { description: "better than the last one" }
27
+ * })
28
+ * .then(response)
29
+ * // org administrators must declare the username that will be updated explicitly
30
+ * updateUser({
31
+ * authentication,
32
+ * user: { username: "c@sey", description: "" }
33
+ * })
34
+ * .then(response)
35
+ * // => { "success": true, "username": "c@sey" }
36
+ * ```
37
+ * Update a user profile. The username will be extracted from the authentication session unless it is provided explicitly. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/update-user.htm) for more information.
38
+ *
39
+ * @param requestOptions - options to pass through in the request
40
+ * @returns A Promise that will resolve with metadata about the user
41
+ */
42
+ export function updateUser(
43
+ requestOptions?: IUpdateUserOptions
44
+ ): Promise<IUpdateUserResponse> {
45
+ // default to the authenticated username unless another username is provided manually
46
+ const username =
47
+ requestOptions.user.username || requestOptions.authentication.username;
48
+
49
+ const updateUrl = `${getPortalUrl(
50
+ requestOptions
51
+ )}/community/users/${encodeURIComponent(username)}/update`;
52
+
53
+ // mixin custom params and the user information, then drop the user info
54
+ requestOptions.params = {
55
+ ...requestOptions.user,
56
+ ...requestOptions.params
57
+ };
58
+
59
+ delete requestOptions.user;
60
+
61
+ // send the request
62
+ return request(updateUrl, requestOptions);
63
+ }
@@ -0,0 +1,391 @@
1
+ /* Copyright (c) 2018-2021 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { IParamBuilder, warn } from "@esri/arcgis-rest-request";
5
+
6
+ /**
7
+ * `SearchQueryBuilder` can be used to construct the `q` param for
8
+ * [`searchItems`](/arcgis-rest-js/api/portal/searchItems#searchItems-search) or
9
+ * [`searchGroups`](/arcgis-rest-js/api/portal/searchGroups#searchGroups-search).
10
+ * By chaining methods, it helps build complex search queries.
11
+ *
12
+ * ```js
13
+ * const startDate = new Date("2020-01-01");
14
+ * const endDate = new Date("2020-09-01");
15
+ * const query = new SearchQueryBuilder()
16
+ * .match("Patrick")
17
+ * .in("owner")
18
+ * .and()
19
+ * .from(startDate)
20
+ * .to(endDate)
21
+ * .in("created")
22
+ * .and()
23
+ * .startGroup()
24
+ * .match("Web Mapping Application")
25
+ * .in("type")
26
+ * .or()
27
+ * .match("Mobile Application")
28
+ * .in("type")
29
+ * .or()
30
+ * .match("Application")
31
+ * .in("type")
32
+ * .endGroup()
33
+ * .and()
34
+ * .match("Demo App");
35
+ *
36
+ * searchItems(query).then((res) => {
37
+ * console.log(res.results);
38
+ * });
39
+ * ```
40
+ *
41
+ * Will search for items matching
42
+ * ```
43
+ * "owner: Patrick AND created:[1577836800000 TO 1598918400000] AND (type:"Web Mapping Application" OR type:"Mobile Application" OR type:Application) AND Demo App"
44
+ * ```
45
+ */
46
+ export class SearchQueryBuilder implements IParamBuilder {
47
+ private termStack: any[] = [];
48
+ private rangeStack: any[] = [];
49
+ private q: string;
50
+ private openGroups = 0;
51
+ private currentModifer: string;
52
+
53
+ /**
54
+ * @param q An existing query string to start building from.
55
+ */
56
+ constructor(q = "") {
57
+ this.q = q;
58
+ }
59
+
60
+ /**
61
+ * Defines strings to search for.
62
+ *
63
+ * ```js
64
+ * const query = new SearchQueryBuilder()
65
+ * .match("My Layer")
66
+ * ```
67
+ *
68
+ * @param terms strings to search for.
69
+ */
70
+ public match(this: SearchQueryBuilder, ...terms: string[]) {
71
+ this.termStack = this.termStack.concat(terms);
72
+ return this;
73
+ }
74
+
75
+ /**
76
+ * Defines fields to search in. You can pass `"*"` or call this method without arguments to search a default set of fields
77
+ *
78
+ * ```js
79
+ * const query = new SearchQueryBuilder()
80
+ * .match("My Layer")
81
+ * .in("title")
82
+ * ```
83
+ *
84
+ * @param field The field to search for the previous match in.
85
+ */
86
+ public in(this: SearchQueryBuilder, field?: string) {
87
+ const fn = `\`in(${field ? `"${field}"` : ""})\``;
88
+
89
+ if (!this.hasRange && !this.hasTerms) {
90
+ warn(
91
+ // apparently-p-rettier-ignore causes some
92
+ `${fn} was called with no call to \`match(...)\` or \`from(...)\`/\`to(...)\`. Your query was not modified.`
93
+ );
94
+ return this;
95
+ }
96
+
97
+ if (field && field !== "*") {
98
+ this.q += `${field}:`;
99
+ }
100
+
101
+ return this.commit();
102
+ }
103
+
104
+ /**
105
+ * Starts a new search group.
106
+ *
107
+ * ```js
108
+ * const query = new SearchQueryBuilder()
109
+ * .startGroup()
110
+ * .match("Lakes")
111
+ * .in("title")
112
+ * .endGroup()
113
+ * .or()
114
+ * .startGroup()
115
+ * .match("Rivers")
116
+ * .in("title")
117
+ * .endGroup()
118
+ * ```
119
+ */
120
+ public startGroup(this: SearchQueryBuilder) {
121
+ this.commit();
122
+ if (this.openGroups > 0) {
123
+ this.q += " ";
124
+ }
125
+ this.openGroups++;
126
+ this.q += "(";
127
+ return this;
128
+ }
129
+
130
+ /**
131
+ * Ends a search group.
132
+ *
133
+ * ```js
134
+ * const query = new SearchQueryBuilder()
135
+ * .startGroup()
136
+ * .match("Lakes")
137
+ * .in("title")
138
+ * .endGroup()
139
+ * .or()
140
+ * .startGroup()
141
+ * .match("Rivers")
142
+ * .in("title")
143
+ * .endGroup()
144
+ * ```
145
+ */
146
+ public endGroup(this: SearchQueryBuilder) {
147
+ if (this.openGroups <= 0) {
148
+ warn(
149
+ `\`endGroup(...)\` was called without calling \`startGroup(...)\` first. Your query was not modified.`
150
+ );
151
+ return this;
152
+ }
153
+ this.commit();
154
+ this.openGroups--;
155
+ this.q += ")";
156
+ return this;
157
+ }
158
+
159
+ /**
160
+ * Joins two sets of queries with an `AND` clause.
161
+ *
162
+ * ```js
163
+ * const query = new SearchQueryBuilder()
164
+ * .match("Lakes")
165
+ * .in("title")
166
+ * .and()
167
+ * .match("Rivers")
168
+ * .in("title")
169
+ * ```
170
+ */
171
+ public and(this: SearchQueryBuilder) {
172
+ return this.addModifier("and");
173
+ }
174
+
175
+ /**
176
+ * Joins two sets of queries with an `OR` clause.
177
+ *
178
+ * ```js
179
+ * const query = new SearchQueryBuilder()
180
+ * .match("Lakes")
181
+ * .in("title")
182
+ * .or()
183
+ * .match("Rivers")
184
+ * .in("title")
185
+ * ```
186
+ */
187
+ public or(this: SearchQueryBuilder) {
188
+ return this.addModifier("or");
189
+ }
190
+
191
+ /**
192
+ * Joins two sets of queries with a `NOT` clause. Another option for filtering results is the [prohibit operator '-'](https://developers.arcgis.com/rest/users-groups-and-items/search-reference.htm#ESRI_SECTION1_5C6C35DB9E4A4F4492C5B937BDA2BF67).
193
+ *
194
+ * ```js
195
+ * // omit results with "Rivers" in their title
196
+ * const query = new SearchQueryBuilder()
197
+ * .not()
198
+ * .match("Rivers")
199
+ * .in("title")
200
+ *
201
+ * // equivalent
202
+ * const query = new SearchQueryBuilder()
203
+ * .match("Rivers")
204
+ * .in("-title")
205
+ * ```
206
+ */
207
+ public not(this: SearchQueryBuilder) {
208
+ return this.addModifier("not");
209
+ }
210
+
211
+ /**
212
+ * Begins a new range query.
213
+ *
214
+ * ```js
215
+ *
216
+ * const NEWYEARS = new Date("2020-01-01")
217
+ * const TODAY = new Date()
218
+ *
219
+ * const query = new SearchQueryBuilder()
220
+ * .from(NEWYEARS)
221
+ * .to(TODAY)
222
+ * .in("created")
223
+ * ```
224
+ */
225
+ public from(this: SearchQueryBuilder, term: number | string | Date) {
226
+ if (this.hasTerms) {
227
+ warn(
228
+ // apparently-p*rettier-ignore causes prettier to strip *all* comments O_o
229
+ `\`from(...)\` is not allowed after \`match(...)\` try using \`.from(...).to(...).in(...)\`. Optionally, you may see this because dates are incorrectly formatted. Dates should be a primative Date value, aka a number in milliseconds or Date object, ie new Date("2020-01-01"). Your query was not modified.`
230
+ );
231
+ return this;
232
+ }
233
+ this.rangeStack[0] = term;
234
+ return this;
235
+ }
236
+
237
+ /**
238
+ * Ends a range query.
239
+ *
240
+ * ```js
241
+ * const query = new SearchQueryBuilder()
242
+ * .from(yesterdaysDate)
243
+ * .to(todaysDate)
244
+ * .in("created")
245
+ * ```
246
+ */
247
+ public to(this: SearchQueryBuilder, term: any) {
248
+ if (this.hasTerms) {
249
+ warn(
250
+ // apparently-p*rettier-ignore causes prettier to strip *all* comments O_o
251
+ `\`to(...)\` is not allowed after \`match(...)\` try using \`.from(...).to(...).in(...)\`. Optionally, you may see this because dates are incorrectly formatted. Dates should be a primative Date value, aka a number in milliseconds or Date object, ie new Date("2020-01-01"). Your query was not modified.`
252
+ );
253
+ return this;
254
+ }
255
+ this.rangeStack[1] = term;
256
+ return this;
257
+ }
258
+
259
+ /**
260
+ * Boosts the previous term to increase its rank in the results.
261
+ *
262
+ * ```js
263
+ * const query = new SearchQueryBuilder()
264
+ * .match("Lakes")
265
+ * .in("title")
266
+ * .or()
267
+ * .match("Rivers")
268
+ * .in("title")
269
+ * .boost(3)
270
+ * ```
271
+ */
272
+ public boost(this: SearchQueryBuilder, num: number) {
273
+ this.commit();
274
+ this.q += `^${num}`;
275
+ return this;
276
+ }
277
+
278
+ /**
279
+ * Returns the current query string. Called internally when the request is made.
280
+ */
281
+ public toParam() {
282
+ this.commit();
283
+ this.cleanup();
284
+ return this.q;
285
+ }
286
+
287
+ /**
288
+ * Returns a new instance of `SearchQueryBuilder` based on the current instance.
289
+ */
290
+ public clone() {
291
+ this.commit();
292
+ this.cleanup();
293
+ return new SearchQueryBuilder(this.q + "");
294
+ }
295
+
296
+ private addModifier(modifier: string) {
297
+ if (this.currentModifer) {
298
+ warn(
299
+ // apparently-p*rettier-ignore causes prettier to strip *all* comments O_o
300
+ `You have called \`${this.currentModifer}()\` after \`${modifier}()\`. Your current query was not modified.`
301
+ );
302
+ return this;
303
+ }
304
+
305
+ this.commit();
306
+
307
+ if (this.q === "" && modifier !== "not") {
308
+ warn(
309
+ `You have called \`${modifier}()\` without calling another method to modify your query first. Try calling \`match()\` first.`
310
+ );
311
+ return this;
312
+ }
313
+
314
+ this.currentModifer = modifier;
315
+ this.q += this.q === "" ? "" : " ";
316
+ this.q += `${modifier.toUpperCase()} `;
317
+ return this;
318
+ }
319
+
320
+ private hasWhiteSpace(s: string) {
321
+ return /\s/g.test(s);
322
+ }
323
+
324
+ private formatTerm(term: any) {
325
+ if (term instanceof Date) {
326
+ return term.getTime();
327
+ }
328
+
329
+ if (typeof term === "string" && this.hasWhiteSpace(term)) {
330
+ return `"${term}"`;
331
+ }
332
+
333
+ return term;
334
+ }
335
+
336
+ private commit() {
337
+ this.currentModifer = undefined;
338
+ if (this.hasRange) {
339
+ this.q += `[${this.formatTerm(this.rangeStack[0])} TO ${this.formatTerm(
340
+ this.rangeStack[1]
341
+ )}]`;
342
+ this.rangeStack = [undefined, undefined];
343
+ }
344
+
345
+ if (this.hasTerms) {
346
+ this.q += this.termStack
347
+ .map((term) => {
348
+ return this.formatTerm(term);
349
+ })
350
+ .join(" ");
351
+ this.termStack = [];
352
+ }
353
+
354
+ return this;
355
+ }
356
+
357
+ private get hasTerms() {
358
+ return this.termStack.length > 0;
359
+ }
360
+
361
+ private get hasRange() {
362
+ return this.rangeStack.length && this.rangeStack[0] && this.rangeStack[1];
363
+ }
364
+
365
+ private cleanup() {
366
+ // end a group if we have started one
367
+ if (this.openGroups > 0) {
368
+ warn(
369
+ // apparently-p*rettier-ignore causes prettier to strip *all* comments O_o
370
+ `Automatically closing ${this.openGroups} group(s). You can use \`endGroup(...)\` to remove this warning.`
371
+ );
372
+
373
+ while (this.openGroups > 0) {
374
+ this.q += ")";
375
+ this.openGroups--;
376
+ }
377
+ }
378
+
379
+ const oldQ = this.q;
380
+ this.q = oldQ.replace(/( AND ?| NOT ?| OR ?)*$/, "");
381
+
382
+ if (oldQ !== this.q) {
383
+ warn(
384
+ `\`startGroup(...)\` was called without calling \`endGroup(...)\` first. Your query was not modified.`
385
+ );
386
+ }
387
+
388
+ // clear empty groups
389
+ this.q = this.q.replace(/(\(\))*/, "");
390
+ }
391
+ }