delectusnon 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 (276) hide show
  1. package/.prettierignore +2 -0
  2. package/.travis.yml +33 -0
  3. package/.vscode/launch.json +24 -0
  4. package/.vscode/settings.json +3 -0
  5. package/demos/ago-node-cli/README.md +29 -0
  6. package/demos/ago-node-cli/ago.js +32 -0
  7. package/demos/ago-node-cli/index.js +11 -0
  8. package/demos/ago-node-cli/lib/item-export-command.js +48 -0
  9. package/demos/ago-node-cli/lib/item-search-command.js +35 -0
  10. package/demos/ago-node-cli/package-lock.json +172 -0
  11. package/demos/ago-node-cli/package.json +30 -0
  12. package/demos/attachments/README.md +5 -0
  13. package/demos/attachments/index.html +164 -0
  14. package/demos/attachments/package-lock.json +182 -0
  15. package/demos/attachments/package.json +18 -0
  16. package/demos/batch-geocoder-node/NYC_Restaurant_Inspection_Results.csv +100 -0
  17. package/demos/batch-geocoder-node/README.md +15 -0
  18. package/demos/batch-geocoder-node/batch-geocode.js +118 -0
  19. package/demos/batch-geocoder-node/config-template.js +18 -0
  20. package/demos/batch-geocoder-node/package-lock.json +116 -0
  21. package/demos/batch-geocoder-node/package.json +39 -0
  22. package/demos/express/README.md +10 -0
  23. package/demos/express/config.json.template +3 -0
  24. package/demos/express/package-lock.json +473 -0
  25. package/demos/express/package.json +18 -0
  26. package/demos/express/server.js +28 -0
  27. package/demos/feature-service-browser/README.md +6 -0
  28. package/demos/feature-service-browser/index.html +122 -0
  29. package/demos/feature-service-browser/package-lock.json +182 -0
  30. package/demos/feature-service-browser/package.json +18 -0
  31. package/demos/geocoder-browser/README.md +10 -0
  32. package/demos/geocoder-browser/config.js.template +1 -0
  33. package/demos/geocoder-browser/index.html +131 -0
  34. package/demos/geocoder-browser/package-lock.json +182 -0
  35. package/demos/geocoder-browser/package.json +19 -0
  36. package/demos/geocoder-browser/post-sign-in.html +25 -0
  37. package/demos/jsapi-integration/README.md +8 -0
  38. package/demos/jsapi-integration/config.js +6 -0
  39. package/demos/jsapi-integration/index.html +79 -0
  40. package/demos/jsapi-integration/package-lock.json +184 -0
  41. package/demos/jsapi-integration/package.json +19 -0
  42. package/demos/oauth2-browser/README.md +12 -0
  43. package/demos/oauth2-browser/authenticate.html +32 -0
  44. package/demos/oauth2-browser/config.js.template +6 -0
  45. package/demos/oauth2-browser/index.html +202 -0
  46. package/demos/oauth2-browser/logo.svg +4 -0
  47. package/demos/oauth2-browser/package-lock.json +163 -0
  48. package/demos/oauth2-browser/package.json +18 -0
  49. package/demos/oauth2-browser/style.css +36 -0
  50. package/demos/oauth2-browser-retry/README.md +25 -0
  51. package/demos/oauth2-browser-retry/authenticate.html +21 -0
  52. package/demos/oauth2-browser-retry/index.html +116 -0
  53. package/demos/oauth2-browser-retry/logo.svg +4 -0
  54. package/demos/vue/.env.example +11 -0
  55. package/demos/vue/.eslintrc.js +17 -0
  56. package/demos/vue/.postcssrc.js +5 -0
  57. package/demos/vue/README.md +17 -0
  58. package/demos/vue/babel.config.js +3 -0
  59. package/demos/vue/package-lock.json +11323 -0
  60. package/demos/vue/package.json +33 -0
  61. package/demos/vue/public/favicon.ico +0 -0
  62. package/demos/vue/public/index.html +24 -0
  63. package/demos/vue/src/assets/logo.svg +29 -0
  64. package/demos/vue/src/components/App.vue +308 -0
  65. package/demos/vue/src/components/Authenticate.vue +65 -0
  66. package/demos/vue/src/components/Loader.vue +230 -0
  67. package/demos/vue/src/main.js +92 -0
  68. package/docs/FAQ.md +28 -0
  69. package/docs/HISTORY.md +62 -0
  70. package/docs/acetate.config.js +223 -0
  71. package/docs/build-typedoc.js +301 -0
  72. package/docs/src/_layout.html +82 -0
  73. package/docs/src/api/_declaration.html +496 -0
  74. package/docs/src/api/_layout.html +127 -0
  75. package/docs/src/api/_package.html +13 -0
  76. package/docs/src/api/index.html +23 -0
  77. package/docs/src/guides/_layout.html +24 -0
  78. package/docs/src/guides/amd-requirejs-dojo.md +40 -0
  79. package/docs/src/guides/babel-and-rollup.md +30 -0
  80. package/docs/src/guides/babel-and-webpack.md +30 -0
  81. package/docs/src/guides/browser-authentication.md +31 -0
  82. package/docs/src/guides/browserify.md +9 -0
  83. package/docs/src/guides/cli-authentication.md +9 -0
  84. package/docs/src/guides/client-server-authentication.md +9 -0
  85. package/docs/src/guides/from-a-cdn.md +36 -0
  86. package/docs/src/guides/index.md +52 -0
  87. package/docs/src/guides/node.md +70 -0
  88. package/docs/src/guides/package-overview.md +8 -0
  89. package/docs/src/guides/server-authentication.md +9 -0
  90. package/docs/src/guides/typescript-and-webpack.md +9 -0
  91. package/docs/src/img/icons.png +0 -0
  92. package/docs/src/img/icons@2x.png +0 -0
  93. package/docs/src/index.html +12 -0
  94. package/docs/src/js/api-search.js +112 -0
  95. package/docs/src/js/nav-toggle.js +41 -0
  96. package/docs/src/sass/_highlight.scss +96 -0
  97. package/docs/src/sass/_icons.scss +157 -0
  98. package/docs/src/sass/style.scss +169 -0
  99. package/jasmine.json +7 -0
  100. package/karma.conf.js +100 -0
  101. package/lerna.json +8 -0
  102. package/notes/README.md +88 -0
  103. package/package.json +88 -0
  104. package/packages/arcgis-rest-auth/README.md +64 -0
  105. package/packages/arcgis-rest-auth/package-lock.json +11 -0
  106. package/packages/arcgis-rest-auth/package.json +51 -0
  107. package/packages/arcgis-rest-auth/src/ApplicationSession.ts +109 -0
  108. package/packages/arcgis-rest-auth/src/UserSession.ts +873 -0
  109. package/packages/arcgis-rest-auth/src/authenticated-request-options.ts +24 -0
  110. package/packages/arcgis-rest-auth/src/fetch-token.ts +52 -0
  111. package/packages/arcgis-rest-auth/src/generate-token.ts +39 -0
  112. package/packages/arcgis-rest-auth/src/index.ts +8 -0
  113. package/packages/arcgis-rest-auth/test/ApplicationSession.test.ts +124 -0
  114. package/packages/arcgis-rest-auth/test/UserSession.test.ts +995 -0
  115. package/packages/arcgis-rest-auth/test/fetchToken.test.ts +112 -0
  116. package/packages/arcgis-rest-auth/test/generateToken.test.ts +130 -0
  117. package/packages/arcgis-rest-auth/test/utils.ts +14 -0
  118. package/packages/arcgis-rest-auth/tsconfig.json +6 -0
  119. package/packages/arcgis-rest-common-types/README.md +61 -0
  120. package/packages/arcgis-rest-common-types/package.json +38 -0
  121. package/packages/arcgis-rest-common-types/src/group.ts +54 -0
  122. package/packages/arcgis-rest-common-types/src/index.ts +467 -0
  123. package/packages/arcgis-rest-common-types/src/item.ts +45 -0
  124. package/packages/arcgis-rest-common-types/src/webmap.ts +1232 -0
  125. package/packages/arcgis-rest-common-types/tsconfig.json +11 -0
  126. package/packages/arcgis-rest-feature-service/README.md +70 -0
  127. package/packages/arcgis-rest-feature-service/package-lock.json +11 -0
  128. package/packages/arcgis-rest-feature-service/package.json +50 -0
  129. package/packages/arcgis-rest-feature-service/src/add.ts +81 -0
  130. package/packages/arcgis-rest-feature-service/src/addAttachment.ts +65 -0
  131. package/packages/arcgis-rest-feature-service/src/delete.ts +85 -0
  132. package/packages/arcgis-rest-feature-service/src/deleteAttachments.ts +68 -0
  133. package/packages/arcgis-rest-feature-service/src/getAttachments.ts +64 -0
  134. package/packages/arcgis-rest-feature-service/src/helpers.ts +80 -0
  135. package/packages/arcgis-rest-feature-service/src/index.ts +12 -0
  136. package/packages/arcgis-rest-feature-service/src/query.ts +172 -0
  137. package/packages/arcgis-rest-feature-service/src/queryRelated.ts +91 -0
  138. package/packages/arcgis-rest-feature-service/src/update.ts +81 -0
  139. package/packages/arcgis-rest-feature-service/src/updateAttachment.ts +74 -0
  140. package/packages/arcgis-rest-feature-service/test/attachments.test.ts +203 -0
  141. package/packages/arcgis-rest-feature-service/test/features.test.ts +252 -0
  142. package/packages/arcgis-rest-feature-service/test/mocks/feature.ts +279 -0
  143. package/packages/arcgis-rest-feature-service/test/mocks/foo.txt +1 -0
  144. package/packages/arcgis-rest-feature-service/tsconfig.json +6 -0
  145. package/packages/arcgis-rest-feature-service-admin/README.md +66 -0
  146. package/packages/arcgis-rest-feature-service-admin/package-lock.json +11 -0
  147. package/packages/arcgis-rest-feature-service-admin/package.json +53 -0
  148. package/packages/arcgis-rest-feature-service-admin/src/addTo.ts +70 -0
  149. package/packages/arcgis-rest-feature-service-admin/src/create.ts +195 -0
  150. package/packages/arcgis-rest-feature-service-admin/src/index.ts +2 -0
  151. package/packages/arcgis-rest-feature-service-admin/test/addTo.test.ts +310 -0
  152. package/packages/arcgis-rest-feature-service-admin/test/create.test.ts +412 -0
  153. package/packages/arcgis-rest-feature-service-admin/test/mocks/move.ts +14 -0
  154. package/packages/arcgis-rest-feature-service-admin/test/mocks/service.ts +72 -0
  155. package/packages/arcgis-rest-feature-service-admin/tsconfig.json +6 -0
  156. package/packages/arcgis-rest-geocoder/README.md +79 -0
  157. package/packages/arcgis-rest-geocoder/package-lock.json +11 -0
  158. package/packages/arcgis-rest-geocoder/package.json +52 -0
  159. package/packages/arcgis-rest-geocoder/src/bulk.ts +102 -0
  160. package/packages/arcgis-rest-geocoder/src/geocode.ts +117 -0
  161. package/packages/arcgis-rest-geocoder/src/helpers.ts +79 -0
  162. package/packages/arcgis-rest-geocoder/src/index.ts +8 -0
  163. package/packages/arcgis-rest-geocoder/src/reverse.ts +84 -0
  164. package/packages/arcgis-rest-geocoder/src/suggest.ts +72 -0
  165. package/packages/arcgis-rest-geocoder/test/bulk.test.ts +113 -0
  166. package/packages/arcgis-rest-geocoder/test/geocode.test.ts +121 -0
  167. package/packages/arcgis-rest-geocoder/test/helpers.test.ts +113 -0
  168. package/packages/arcgis-rest-geocoder/test/mocks/responses.ts +591 -0
  169. package/packages/arcgis-rest-geocoder/test/reverse.test.ts +126 -0
  170. package/packages/arcgis-rest-geocoder/test/suggest.test.ts +77 -0
  171. package/packages/arcgis-rest-geocoder/tsconfig.json +6 -0
  172. package/packages/arcgis-rest-groups/README.md +64 -0
  173. package/packages/arcgis-rest-groups/package-lock.json +11 -0
  174. package/packages/arcgis-rest-groups/package.json +52 -0
  175. package/packages/arcgis-rest-groups/src/create.ts +34 -0
  176. package/packages/arcgis-rest-groups/src/get.ts +95 -0
  177. package/packages/arcgis-rest-groups/src/helpers.ts +26 -0
  178. package/packages/arcgis-rest-groups/src/index.ts +11 -0
  179. package/packages/arcgis-rest-groups/src/notification.ts +77 -0
  180. package/packages/arcgis-rest-groups/src/protect.ts +40 -0
  181. package/packages/arcgis-rest-groups/src/remove.ts +23 -0
  182. package/packages/arcgis-rest-groups/src/search.ts +64 -0
  183. package/packages/arcgis-rest-groups/src/update.ts +36 -0
  184. package/packages/arcgis-rest-groups/test/crud.test.ts +104 -0
  185. package/packages/arcgis-rest-groups/test/get.test.ts +101 -0
  186. package/packages/arcgis-rest-groups/test/mocks/responses.ts +141 -0
  187. package/packages/arcgis-rest-groups/test/notification.test.ts +102 -0
  188. package/packages/arcgis-rest-groups/test/protect.test.ts +64 -0
  189. package/packages/arcgis-rest-groups/test/search.test.ts +85 -0
  190. package/packages/arcgis-rest-groups/tsconfig.json +6 -0
  191. package/packages/arcgis-rest-items/README.md +66 -0
  192. package/packages/arcgis-rest-items/package-lock.json +11 -0
  193. package/packages/arcgis-rest-items/package.json +52 -0
  194. package/packages/arcgis-rest-items/src/add.ts +103 -0
  195. package/packages/arcgis-rest-items/src/create.ts +110 -0
  196. package/packages/arcgis-rest-items/src/get.ts +79 -0
  197. package/packages/arcgis-rest-items/src/helpers.ts +147 -0
  198. package/packages/arcgis-rest-items/src/index.ts +11 -0
  199. package/packages/arcgis-rest-items/src/protect.ts +38 -0
  200. package/packages/arcgis-rest-items/src/remove.ts +58 -0
  201. package/packages/arcgis-rest-items/src/search.ts +78 -0
  202. package/packages/arcgis-rest-items/src/update.ts +134 -0
  203. package/packages/arcgis-rest-items/test/add.test.ts +256 -0
  204. package/packages/arcgis-rest-items/test/create.test.ts +371 -0
  205. package/packages/arcgis-rest-items/test/get.test.ts +181 -0
  206. package/packages/arcgis-rest-items/test/mocks/foo.zip +0 -0
  207. package/packages/arcgis-rest-items/test/mocks/item.ts +33 -0
  208. package/packages/arcgis-rest-items/test/mocks/resources.ts +31 -0
  209. package/packages/arcgis-rest-items/test/mocks/search.ts +63 -0
  210. package/packages/arcgis-rest-items/test/protect.test.ts +122 -0
  211. package/packages/arcgis-rest-items/test/remove.test.ts +161 -0
  212. package/packages/arcgis-rest-items/test/search.test.ts +159 -0
  213. package/packages/arcgis-rest-items/test/update.test.ts +450 -0
  214. package/packages/arcgis-rest-items/tsconfig.json +6 -0
  215. package/packages/arcgis-rest-request/README.md +65 -0
  216. package/packages/arcgis-rest-request/package-lock.json +11 -0
  217. package/packages/arcgis-rest-request/package.json +42 -0
  218. package/packages/arcgis-rest-request/src/index.ts +13 -0
  219. package/packages/arcgis-rest-request/src/request.ts +293 -0
  220. package/packages/arcgis-rest-request/src/utils/ArcGISAuthError.ts +67 -0
  221. package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +76 -0
  222. package/packages/arcgis-rest-request/src/utils/ErrorTypes.ts +29 -0
  223. package/packages/arcgis-rest-request/src/utils/check-for-errors.ts +65 -0
  224. package/packages/arcgis-rest-request/src/utils/encode-form-data.ts +34 -0
  225. package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +23 -0
  226. package/packages/arcgis-rest-request/src/utils/get-portal-url.ts +25 -0
  227. package/packages/arcgis-rest-request/src/utils/get-portal.ts +45 -0
  228. package/packages/arcgis-rest-request/src/utils/process-params.ts +99 -0
  229. package/packages/arcgis-rest-request/test/mocks/errors.ts +68 -0
  230. package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +13 -0
  231. package/packages/arcgis-rest-request/test/mocks/portal.ts +112 -0
  232. package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +41 -0
  233. package/packages/arcgis-rest-request/test/mocks/webmap.ts +41 -0
  234. package/packages/arcgis-rest-request/test/request.test.ts +299 -0
  235. package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +170 -0
  236. package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +51 -0
  237. package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +111 -0
  238. package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +133 -0
  239. package/packages/arcgis-rest-request/test/utils/get-portal-url.test.ts +37 -0
  240. package/packages/arcgis-rest-request/test/utils/portal.test.ts +97 -0
  241. package/packages/arcgis-rest-request/test/utils/process-params.test.ts +193 -0
  242. package/packages/arcgis-rest-request/tsconfig.json +6 -0
  243. package/packages/arcgis-rest-sharing/README.md +67 -0
  244. package/packages/arcgis-rest-sharing/package-lock.json +11 -0
  245. package/packages/arcgis-rest-sharing/package.json +57 -0
  246. package/packages/arcgis-rest-sharing/src/access.ts +85 -0
  247. package/packages/arcgis-rest-sharing/src/group-sharing.ts +211 -0
  248. package/packages/arcgis-rest-sharing/src/helpers.ts +82 -0
  249. package/packages/arcgis-rest-sharing/src/index.ts +5 -0
  250. package/packages/arcgis-rest-sharing/test/access.test.ts +154 -0
  251. package/packages/arcgis-rest-sharing/test/group-sharing.test.ts +566 -0
  252. package/packages/arcgis-rest-sharing/test/helpers.test.ts +55 -0
  253. package/packages/arcgis-rest-sharing/test/mocks/sharing.ts +18 -0
  254. package/packages/arcgis-rest-sharing/tsconfig.json +6 -0
  255. package/packages/arcgis-rest-users/README.md +71 -0
  256. package/packages/arcgis-rest-users/package-lock.json +11 -0
  257. package/packages/arcgis-rest-users/package.json +51 -0
  258. package/packages/arcgis-rest-users/src/get.ts +69 -0
  259. package/packages/arcgis-rest-users/src/index.ts +6 -0
  260. package/packages/arcgis-rest-users/src/invitation.ts +166 -0
  261. package/packages/arcgis-rest-users/src/notification.ts +73 -0
  262. package/packages/arcgis-rest-users/test/get.test.ts +99 -0
  263. package/packages/arcgis-rest-users/test/invitation.test.ts +169 -0
  264. package/packages/arcgis-rest-users/test/mocks/invitation.ts +70 -0
  265. package/packages/arcgis-rest-users/test/mocks/notification.ts +34 -0
  266. package/packages/arcgis-rest-users/test/mocks/user.ts +173 -0
  267. package/packages/arcgis-rest-users/test/notification.test.ts +83 -0
  268. package/packages/arcgis-rest-users/tsconfig.json +6 -0
  269. package/support/changelog.js +394 -0
  270. package/support/deploy-doc-site.js +16 -0
  271. package/support/publish.sh +43 -0
  272. package/support/test-helpers.js +8 -0
  273. package/tsconfig.json +69 -0
  274. package/tslint.json +15 -0
  275. package/umd-base-profile.js +82 -0
  276. package/umd-production-profile.js +13 -0
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
5
+ </head>
6
+ <body>
7
+
8
+ <script src="config.js"></script>
9
+ <script src="node_modules/@esri/arcgis-rest-request/dist/umd/request.umd.js"></script>
10
+ <script src="node_modules/@esri/arcgis-rest-auth/dist/umd/auth.umd.js"></script>
11
+
12
+ <script>
13
+ try {
14
+ arcgisRest.UserSession.completeOAuth2({
15
+ clientId: ClientId,
16
+ redirectUri: "http://localhost:8080/post-sign-in.html",
17
+ popup: true,
18
+ portal: "https://www.arcgis.com/sharing/rest"
19
+ });
20
+ } catch (e) {
21
+ console.log('error', e);
22
+ }
23
+ </script>
24
+ </body>
25
+ </html>
@@ -0,0 +1,8 @@
1
+ # Passing authentication to the JSAPI
2
+
3
+ This demo shows how to use `arcgis-rest-js` with the ArcGIS API for JavaScript. A typical use case would be when you need to query items or feature data _before_ you are ready to display a map or scene view. In this scenario, you should load the light-weight `arcgis-rest-js` libraries first and use them to perform your queries and/or authenticate with the ArcGIS platform. Then when you are ready to show a map or scene view, you would lazy-load the ArcGIS API for JavaScript with something like [esri-loader](https://github.com/Esri/esri-loader) and use it to create the map.
4
+
5
+ ## Running this demo
6
+ 1. Run `npm run bootstrap` in the repository's root directory.
7
+ 1. Run `npm start` to spin up the development server.
8
+ 1. Visit [http://localhost:8080](http://localhost:8080).
@@ -0,0 +1,6 @@
1
+ /*
2
+ You can generate your own clientid by creating an application on the ArcGIS for Developers site. Be sure to add http://localhost:8080/ as a redirect uri for your application
3
+
4
+ once you have a clientid of your own, copy/paste it here and rename this file 'config.js'
5
+ */
6
+ let clientId = "UAbPGRdXA9m1BGsU"
@@ -0,0 +1,79 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
6
+ <title>Share auth between rest-js and the jsapi</title>
7
+
8
+ <style>
9
+ html,
10
+ body,
11
+ #viewDiv {
12
+ padding: 0;
13
+ margin: 0;
14
+ height: 100%;
15
+ width: 100%;
16
+ }
17
+ </style>
18
+
19
+ <link rel="stylesheet" href="https://js.arcgis.com/4.7/esri/css/main.css">
20
+
21
+ <script src="node_modules/@esri/arcgis-rest-request/dist/umd/request.umd.js"></script>
22
+ <script src="node_modules/@esri/arcgis-rest-auth/dist/umd/auth.umd.js"></script>
23
+ <script src="node_modules/@esri/arcgis-rest-items/dist/umd/items.umd.js"></script>
24
+
25
+ <!--
26
+ NOTE: rather than include the ArcGIS API for JavaScript via a <script> tag
27
+ typically you would using something like https://github.com/Esri/esri-loader
28
+ to lazy-load the API _after_ you had used the light-weight arcgis-rest-js
29
+ libraries above to log in and fetch some data (see NOTE below)
30
+ -->
31
+ <script src="https://js.arcgis.com/4.7/"></script>
32
+ </head>
33
+
34
+ <body>
35
+ <div id="viewDiv"></div>
36
+ <script>
37
+ // first, log in
38
+ // using canned username/password from
39
+ // https://developers.arcgis.com/python/sample-notebooks/chennai-floods-analysis/
40
+ const session = new arcgisRest.UserSession({
41
+ username: "arcgis_python",
42
+ password: "P@ssword123"
43
+ });
44
+
45
+ // next, fetch a private item's data (not just the metadata)
46
+ // https://geosaurus.maps.arcgis.com/home/item.html?id=728043ac6a574a00b8f1cd5ee0eae8cd
47
+ const itemId = "728043ac6a574a00b8f1cd5ee0eae8cd";
48
+ arcgisRest.getItemData(itemId, { authentication: session })
49
+ .then(response => {
50
+
51
+ // once we have the private item, we can create a map
52
+ // NOTE: this is where you would lazy-load the ArcGIS API for JavaScript
53
+ require([
54
+ "esri/identity/IdentityManager",
55
+ "esri/views/MapView",
56
+ "esri/WebMap"
57
+ ], function(
58
+ esriId, MapView, WebMap
59
+ ) {
60
+ // pass the authenticated session over to the JSAPI Identity Manager
61
+ esriId.registerToken(session.toCredential());
62
+
63
+ // dig the webmap id out of the response
64
+ var webmap = new WebMap({
65
+ portalItem: {
66
+ id: response.map.itemId
67
+ }
68
+ });
69
+
70
+ // and pass it to the map view
71
+ var view = new MapView({
72
+ map: webmap,
73
+ container: "viewDiv"
74
+ });
75
+ });
76
+ });
77
+ </script>
78
+ </body>
79
+ </html>
@@ -0,0 +1,184 @@
1
+ {
2
+ "requires": true,
3
+ "lockfileVersion": 1,
4
+ "dependencies": {
5
+ "async": {
6
+ "version": "1.5.2",
7
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
8
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
9
+ },
10
+ "colors": {
11
+ "version": "1.0.3",
12
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
13
+ "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs="
14
+ },
15
+ "corser": {
16
+ "version": "2.0.1",
17
+ "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz",
18
+ "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c="
19
+ },
20
+ "debug": {
21
+ "version": "2.6.8",
22
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
23
+ "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
24
+ "requires": {
25
+ "ms": "2.0.0"
26
+ }
27
+ },
28
+ "eventemitter3": {
29
+ "version": "3.1.0",
30
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
31
+ "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA=="
32
+ },
33
+ "follow-redirects": {
34
+ "version": "1.5.0",
35
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz",
36
+ "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==",
37
+ "requires": {
38
+ "debug": "^3.1.0"
39
+ },
40
+ "dependencies": {
41
+ "debug": {
42
+ "version": "3.1.0",
43
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
44
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
45
+ "requires": {
46
+ "ms": "2.0.0"
47
+ }
48
+ }
49
+ }
50
+ },
51
+ "he": {
52
+ "version": "1.1.1",
53
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
54
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0="
55
+ },
56
+ "http-proxy": {
57
+ "version": "1.17.0",
58
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
59
+ "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
60
+ "requires": {
61
+ "eventemitter3": "^3.0.0",
62
+ "follow-redirects": "^1.0.0",
63
+ "requires-port": "^1.0.0"
64
+ }
65
+ },
66
+ "http-server": {
67
+ "version": "0.11.1",
68
+ "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.11.1.tgz",
69
+ "integrity": "sha512-6JeGDGoujJLmhjiRGlt8yK8Z9Kl0vnl/dQoQZlc4oeqaUoAKQg94NILLfrY3oWzSyFaQCVNTcKE5PZ3cH8VP9w==",
70
+ "requires": {
71
+ "colors": "1.0.3",
72
+ "corser": "~2.0.0",
73
+ "ecstatic": "^3.0.0",
74
+ "http-proxy": "^1.8.1",
75
+ "opener": "~1.4.0",
76
+ "optimist": "0.6.x",
77
+ "portfinder": "^1.0.13",
78
+ "union": "~0.4.3"
79
+ },
80
+ "dependencies": {
81
+ "ecstatic": {
82
+ "version": "3.2.0",
83
+ "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.2.0.tgz",
84
+ "integrity": "sha512-Goilx/2cfU9vvfQjgtNgc2VmJAD8CasQ6rZDqCd2u4Hsyd/qFET6nBf60jiHodevR3nl3IGzNKtrzPXWP88utQ==",
85
+ "requires": {
86
+ "he": "^1.1.1",
87
+ "mime": "^1.4.1",
88
+ "minimist": "^1.1.0",
89
+ "url-join": "^2.0.2"
90
+ }
91
+ }
92
+ }
93
+ },
94
+ "mime": {
95
+ "version": "1.6.0",
96
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
97
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
98
+ },
99
+ "minimist": {
100
+ "version": "1.2.0",
101
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
102
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
103
+ },
104
+ "mkdirp": {
105
+ "version": "0.5.1",
106
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
107
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
108
+ "requires": {
109
+ "minimist": "0.0.8"
110
+ },
111
+ "dependencies": {
112
+ "minimist": {
113
+ "version": "0.0.8",
114
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
115
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
116
+ }
117
+ }
118
+ },
119
+ "ms": {
120
+ "version": "2.0.0",
121
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
122
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
123
+ },
124
+ "opener": {
125
+ "version": "1.4.3",
126
+ "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz",
127
+ "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg="
128
+ },
129
+ "optimist": {
130
+ "version": "0.6.1",
131
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
132
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
133
+ "requires": {
134
+ "minimist": "~0.0.1",
135
+ "wordwrap": "~0.0.2"
136
+ },
137
+ "dependencies": {
138
+ "minimist": {
139
+ "version": "0.0.10",
140
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
141
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
142
+ }
143
+ }
144
+ },
145
+ "portfinder": {
146
+ "version": "1.0.13",
147
+ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz",
148
+ "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=",
149
+ "requires": {
150
+ "async": "^1.5.2",
151
+ "debug": "^2.2.0",
152
+ "mkdirp": "0.5.x"
153
+ }
154
+ },
155
+ "qs": {
156
+ "version": "2.3.3",
157
+ "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz",
158
+ "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ="
159
+ },
160
+ "requires-port": {
161
+ "version": "1.0.0",
162
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
163
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
164
+ },
165
+ "union": {
166
+ "version": "0.4.6",
167
+ "resolved": "https://registry.npmjs.org/union/-/union-0.4.6.tgz",
168
+ "integrity": "sha1-GY+9rrolTniLDvy2MLwR8kopWeA=",
169
+ "requires": {
170
+ "qs": "~2.3.3"
171
+ }
172
+ },
173
+ "url-join": {
174
+ "version": "2.0.5",
175
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz",
176
+ "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg="
177
+ },
178
+ "wordwrap": {
179
+ "version": "0.0.3",
180
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
181
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
182
+ }
183
+ }
184
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "@esri/jsapi-integration",
3
+ "version": "1.13.0",
4
+ "private": true,
5
+ "description": "to do",
6
+ "author": "",
7
+ "license": "Apache-2.0",
8
+ "dependencies": {
9
+ "@esri/arcgis-rest-auth": "^1.13.0",
10
+ "@esri/arcgis-rest-items": "^1.13.0",
11
+ "@esri/arcgis-rest-request": "^1.13.0"
12
+ },
13
+ "devDependencies": {
14
+ "http-server": "*"
15
+ },
16
+ "scripts": {
17
+ "start": "http-server ."
18
+ }
19
+ }
@@ -0,0 +1,12 @@
1
+ # ArcGIS Rest JS / Vanilla JS Demo
2
+
3
+ This demo uses Vanilla JS to implement OAuth2 using
4
+ the `arcgis-rest-js` libraries.
5
+
6
+ ## Running this demo
7
+ 1. Like all the other demo apps, run `npm run bootstrap` in the root directory.
8
+ 1. Register a new application using [https://developers.arcgis.com](https://developers.arcgis.com).
9
+ 1. Add a redirect URL of `http://localhost:8080` to your new app.
10
+ 1. Either copy the `config.js.template` file and rename it to `config.js` with your own ClientID or supply it in the prompt when the app is launched.
11
+ 1. Run `npm start` to spin up the development server.
12
+ 1. Visit [http://localhost:8080](http://localhost:8080).
@@ -0,0 +1,32 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>ArcGIS Rest JS Vanilla JS</title>
6
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
7
+ <link rel="stylesheet" href="./style.css">
8
+ </head>
9
+ <body>
10
+ <script src="node_modules/@esri/arcgis-rest-request/dist/umd/request.umd.js"></script>
11
+ <script src="node_modules/@esri/arcgis-rest-auth/dist/umd/auth.umd.js"></script>
12
+ <script>
13
+ /* in a production app, clientId could be hardcoded. here we're using a regex to extract it from the state parameter in the OAuth2 server response to make the demo more interchangeable.
14
+
15
+ this relies on the fact that the ClientId is associated with the state parameter internally when another value isn't supplied manually.
16
+ */
17
+ const match = window.location.href.match(
18
+ /&state=(.+)/
19
+ );
20
+ const clientId = match[1];
21
+ let session;
22
+ function processAuthentication() {
23
+ window.location.href = '/';
24
+ session = arcgisRest.UserSession.completeOAuth2({
25
+ clientId: clientId,
26
+ });
27
+ localStorage.setItem('__ARCGIS_REST_USER_SESSION__', session.serialize());
28
+ }
29
+ processAuthentication();
30
+ </script>
31
+ </body>
32
+ </html>
@@ -0,0 +1,6 @@
1
+ /*
2
+ You can generate your own clientid by creating an application on the ArcGIS for Developers site. Be sure to add http://localhost:8080/ as a redirect uri for your application
3
+
4
+ once you have a clientid of your own, copy/paste it here and rename this file 'config.js'
5
+ */
6
+ let clientId = "abc123"
@@ -0,0 +1,202 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>ArcGIS REST JS Browser OAuth2</title>
6
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
7
+ <link rel="stylesheet" href="./style.css">
8
+ <script src="https://cdn.polyfill.io/v2/polyfill.js?features=es5,Promise,fetch"></script>
9
+ </head>
10
+ <body>
11
+ <div id="app-wrapper">
12
+ <div class="jumbotron">
13
+ <div class="container">
14
+ <div id="page-header" class="row">
15
+ <div id="logo-container" class="col-sm-3">
16
+ <img id="logo" src="./logo.svg">
17
+ </div>
18
+ <div class="col-sm-9">
19
+ <h2>
20
+ ArcGIS REST JS Browser OAuth2
21
+ </h2>
22
+ <p>
23
+ An application demonstrating browser-based named user login.
24
+ </p>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ <div class="container">
30
+ <div class="row">
31
+ <div class="col-xs-12">
32
+ <div id="clientIdGroup" class="form-group">
33
+ <label class="control-label">ClientID</label>
34
+ <!-- This is input required for the app. -->
35
+ <input
36
+ id="clientId"
37
+ type="text"
38
+ class="form-control"
39
+ placeholder="Client ID"
40
+ >
41
+ </div>
42
+ <p class="help-block">
43
+ You can generate your own clientid by creating an application on the
44
+ <a target='_blank' href='https://developers.arcgis.com/documentation/core-concepts/security-and-authentication/browser-based-user-logins/'>
45
+ ArcGIS for Developers
46
+ </a>
47
+ website. Be sure to add
48
+ <code id="redirect_uri">
49
+ <!-- Redirect URI will be injected here. -->
50
+ </code>
51
+ as a redirect uri for your application.
52
+ </p>
53
+ </div>
54
+ </div>
55
+ <div class="row">
56
+ <div class="col-xs-6">
57
+ <!-- Event listeners will be added to these buttons. -->
58
+ <button class="btn btn-primary btn-block" id='withPopupButton'>Sign In (with popup)</button>
59
+ </div>
60
+ <div class="col-xs-6">
61
+ <button class="btn btn-primary btn-block" id='inlineRedirectButton'>Sign In (inline redirect)</button>
62
+ </div>
63
+ </div>
64
+
65
+ <div class="row">
66
+ <div class="col-xs-12 text-center">
67
+ <p id="sessionInfo" class="info-panel">
68
+ <!-- Information will be injected here. -->
69
+ </p>
70
+ </div>
71
+ </div>
72
+
73
+ <div class="row">
74
+ <div class="col-xs-3">
75
+ </div>
76
+ <div class="col-xs-6 text-center">
77
+ <!-- Event listeners will be added to these buttons. -->
78
+ <button class="btn btn-primary btn-block btn-warning" id='signOutButton'>Sign Out</button>
79
+ </div>
80
+ <div class="col-xs-3">
81
+ </div>
82
+ </div>
83
+ </div>
84
+ </div>
85
+
86
+ <!-- pull clientid from config.js if present -->
87
+ <script src="config.js"></script>
88
+ <script src="node_modules/@esri/arcgis-rest-request/dist/umd/request.umd.js"></script>
89
+ <script src="node_modules/@esri/arcgis-rest-auth/dist/umd/auth.umd.js"></script>
90
+ <script>
91
+ // Define a global session variable.
92
+ let session = null;
93
+
94
+ // Check to see if there is a serialized session in local storage.
95
+ const serializedSession = localStorage.getItem('__ARCGIS_REST_USER_SESSION__');
96
+ if (serializedSession !== null && serializedSession !== "undefined") {
97
+ // If there is a serialized session, parse it and create a new session object.
98
+ let parsed = JSON.parse(serializedSession);
99
+ // Cast the tokenExpires property back into a date.
100
+ parsed.tokenExpires = new Date(parsed.tokenExpires);
101
+ // Create the new session object.
102
+ session = new arcgisRest.UserSession(parsed);
103
+ // console.log(session);
104
+ // Update the UI.
105
+ document.getElementById('clientId').value = session.clientId;
106
+
107
+ // Clear the previous session.
108
+ localStorage.removeItem('__ARCGIS_REST_USER_SESSION__');
109
+ }
110
+
111
+ // Define the variable used for the redirect uri.
112
+ const redirect_uri = window.location.origin + window.location.pathname;
113
+ // Inject that value into the page text.
114
+ document.getElementById('redirect_uri').innerHTML = redirect_uri;
115
+
116
+ // Function to check that a client id is present.
117
+ function requireClientId() {
118
+ // Pull out the client id.
119
+ if (document.getElementById('clientId').value !== "") {
120
+ clientId = document.getElementById('clientId').value
121
+ }
122
+
123
+ // if a clientId is not provided via config.js or entered manually, return false
124
+ if (!clientId) {
125
+ document.getElementById('clientIdGroup').classList.add('has-error');
126
+ return false;
127
+ }
128
+ // Otherwise return true and clear any errors.
129
+ document.getElementById('clientIdGroup').classList.remove('has-error');
130
+ return true;
131
+ }
132
+
133
+ // Attach a listener to validate the client id on change.
134
+ document.getElementById('clientId').addEventListener('input', function (event) {
135
+ requireClientId();
136
+ });
137
+
138
+ // Function to update the UI with session info.
139
+ function updateSessionInfo(session) {
140
+ let sessionInfo = document.getElementById('sessionInfo')
141
+ if (session) {
142
+ sessionInfo.classList.remove('bg-info');
143
+ sessionInfo.classList.add('bg-success');
144
+ sessionInfo.innerHTML = 'Logged in as ' + session.username;
145
+ localStorage.setItem('__ARCGIS_REST_USER_SESSION__', session.serialize());
146
+ } else {
147
+ sessionInfo.classList.remove('bg-success');
148
+ sessionInfo.classList.add('bg-info');
149
+ sessionInfo.innerHTML = 'Log in using one of the methods above to start a session.';
150
+ }
151
+ }
152
+
153
+ // Call the function on page load to set current state.
154
+ updateSessionInfo(session);
155
+
156
+ // Attach a listener to the sign in buttons.
157
+ document.getElementById('withPopupButton').addEventListener('click', function (event) {
158
+ event.preventDefault();
159
+ if (requireClientId()) {
160
+
161
+ // Begin an OAuth2 login using a popup.
162
+ arcgisRest.UserSession.beginOAuth2({
163
+ clientId: clientId,
164
+ redirectUri: redirect_uri + 'authenticate.html',
165
+ popup: true
166
+ }).then(function (newSession) {
167
+ // Upon a successful login, update the session with the new session.
168
+ session = newSession;
169
+ console.log(session);
170
+ updateSessionInfo(session);
171
+ }).catch(function (error) {
172
+ console.log(error);
173
+ });
174
+ }
175
+ });
176
+
177
+ // Attach a listener to the sign in buttons.
178
+ document.getElementById('inlineRedirectButton').addEventListener('click', function (event) {
179
+ event.preventDefault();
180
+ if (requireClientId()) {
181
+ // let clientId = document.getElementById('clientId').value || configClientId;
182
+ // Begin an OAuth2 login without a popup.
183
+ arcgisRest.UserSession.beginOAuth2({
184
+ clientId: clientId,
185
+ redirectUri: redirect_uri + 'authenticate.html?clientID=' + clientId,
186
+ popup: false,
187
+ });
188
+ }
189
+ });
190
+
191
+ // Attach a listener to the sign in buttons.
192
+ document.getElementById('signOutButton').addEventListener('click', function (event) {
193
+ event.preventDefault();
194
+
195
+ // Clear the previous session.
196
+ session = null;
197
+ localStorage.removeItem('__ARCGIS_REST_USER_SESSION__');
198
+ updateSessionInfo();
199
+ });
200
+ </script>
201
+ </body>
202
+ </html>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 630 630">
2
+ <rect width="630" height="630" fill="#f7df1e"/>
3
+ <path d="m423.2 492.19c12.69 20.72 29.2 35.95 58.4 35.95 24.53 0 40.2-12.26 40.2-29.2 0-20.3-16.1-27.49-43.1-39.3l-14.8-6.35c-42.72-18.2-71.1-41-71.1-89.2 0-44.4 33.83-78.2 86.7-78.2 37.64 0 64.7 13.1 84.2 47.4l-46.1 29.6c-10.15-18.2-21.1-25.37-38.1-25.37-17.34 0-28.33 11-28.33 25.37 0 17.76 11 24.95 36.4 35.95l14.8 6.34c50.3 21.57 78.7 43.56 78.7 93 0 53.3-41.87 82.5-98.1 82.5-54.98 0-90.5-26.2-107.88-60.54zm-209.13 5.13c9.3 16.5 17.76 30.45 38.1 30.45 19.45 0 31.72-7.61 31.72-37.2v-201.3h59.2v202.1c0 61.3-35.94 89.2-88.4 89.2-47.4 0-74.85-24.53-88.81-54.075z"/>
4
+ </svg>