sintfacilis 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 (461) hide show
  1. package/.env.example +2 -0
  2. package/.eslintrc.js +20 -0
  3. package/.github/workflows/deploy-docs.yml +27 -0
  4. package/.github/workflows/pre-release-tests.yml +45 -0
  5. package/.github/workflows/pull-request-tests.yml +45 -0
  6. package/.prettierignore +2 -0
  7. package/.prettierrc +19 -0
  8. package/.vscode/launch.json +24 -0
  9. package/.vscode/settings.json +3 -0
  10. package/codecov.yml +7 -0
  11. package/demos/.eslintrc.js +13 -0
  12. package/demos/ago-node-cli/README.md +29 -0
  13. package/demos/ago-node-cli/ago.js +33 -0
  14. package/demos/ago-node-cli/index.js +11 -0
  15. package/demos/ago-node-cli/lib/item-export-command.js +48 -0
  16. package/demos/ago-node-cli/lib/item-search-command.js +35 -0
  17. package/demos/ago-node-cli/package-lock.json +430 -0
  18. package/demos/ago-node-cli/package.json +30 -0
  19. package/demos/attachments/README.md +5 -0
  20. package/demos/attachments/index.html +165 -0
  21. package/demos/attachments/package-lock.json +543 -0
  22. package/demos/attachments/package.json +18 -0
  23. package/demos/batch-geocoder-node/NYC_Restaurant_Inspection_Results.csv +100 -0
  24. package/demos/batch-geocoder-node/README.md +15 -0
  25. package/demos/batch-geocoder-node/batch-geocode.js +115 -0
  26. package/demos/batch-geocoder-node/config-template.js +18 -0
  27. package/demos/batch-geocoder-node/package-lock.json +336 -0
  28. package/demos/batch-geocoder-node/package.json +37 -0
  29. package/demos/express/README.md +15 -0
  30. package/demos/express/config.json.template +3 -0
  31. package/demos/express/package-lock.json +1008 -0
  32. package/demos/express/package.json +18 -0
  33. package/demos/express/server.js +33 -0
  34. package/demos/feature-service-browser/README.md +6 -0
  35. package/demos/feature-service-browser/index.html +122 -0
  36. package/demos/feature-service-browser/package-lock.json +543 -0
  37. package/demos/feature-service-browser/package.json +18 -0
  38. package/demos/geocoder-browser/README.md +10 -0
  39. package/demos/geocoder-browser/config.js.template +1 -0
  40. package/demos/geocoder-browser/index.html +131 -0
  41. package/demos/geocoder-browser/package-lock.json +610 -0
  42. package/demos/geocoder-browser/package.json +19 -0
  43. package/demos/geocoder-browser/post-sign-in.html +25 -0
  44. package/demos/jsapi-integration/README.md +25 -0
  45. package/demos/jsapi-integration/config.js +6 -0
  46. package/demos/jsapi-integration/index.html +93 -0
  47. package/demos/jsapi-integration/package-lock.json +247 -0
  48. package/demos/jsapi-integration/package.json +19 -0
  49. package/demos/node-cli-item-management/README.md +10 -0
  50. package/demos/node-cli-item-management/index.js +238 -0
  51. package/demos/node-cli-item-management/package-lock.json +432 -0
  52. package/demos/node-cli-item-management/package.json +27 -0
  53. package/demos/node-cli-item-management/screenshot.png +0 -0
  54. package/demos/oauth2-browser/README.md +14 -0
  55. package/demos/oauth2-browser/authenticate.html +30 -0
  56. package/demos/oauth2-browser/config.js.template +6 -0
  57. package/demos/oauth2-browser/index.html +211 -0
  58. package/demos/oauth2-browser/logo.svg +4 -0
  59. package/demos/oauth2-browser/package-lock.json +474 -0
  60. package/demos/oauth2-browser/package.json +18 -0
  61. package/demos/oauth2-browser/style.css +36 -0
  62. package/demos/oauth2-browser-retry/README.md +25 -0
  63. package/demos/oauth2-browser-retry/authenticate.html +22 -0
  64. package/demos/oauth2-browser-retry/index.html +116 -0
  65. package/demos/oauth2-browser-retry/logo.svg +4 -0
  66. package/demos/stream-response-to-file/README.md +7 -0
  67. package/demos/stream-response-to-file/index.js +36 -0
  68. package/demos/stream-response-to-file/output/.gitkeep +0 -0
  69. package/demos/stream-response-to-file/package-lock.json +227 -0
  70. package/demos/stream-response-to-file/package.json +33 -0
  71. package/demos/tree-shaking-rollup/.babelrc +3 -0
  72. package/demos/tree-shaking-rollup/README.md +9 -0
  73. package/demos/tree-shaking-rollup/index.html +11 -0
  74. package/demos/tree-shaking-rollup/package-lock.json +5646 -0
  75. package/demos/tree-shaking-rollup/package.json +25 -0
  76. package/demos/tree-shaking-rollup/rollup.config.js +17 -0
  77. package/demos/tree-shaking-rollup/src/index.js +8 -0
  78. package/demos/tree-shaking-webpack/README.md +8 -0
  79. package/demos/tree-shaking-webpack/index.html +11 -0
  80. package/demos/tree-shaking-webpack/package-lock.json +11455 -0
  81. package/demos/tree-shaking-webpack/package.json +24 -0
  82. package/demos/tree-shaking-webpack/src/index.js +10 -0
  83. package/demos/tree-shaking-webpack/webpack.config.js +27 -0
  84. package/demos/vue/.env.example +11 -0
  85. package/demos/vue/.eslintrc.js +17 -0
  86. package/demos/vue/.postcssrc.js +5 -0
  87. package/demos/vue/README.md +17 -0
  88. package/demos/vue/babel.config.js +3 -0
  89. package/demos/vue/package-lock.json +28044 -0
  90. package/demos/vue/package.json +33 -0
  91. package/demos/vue/public/favicon.ico +0 -0
  92. package/demos/vue/public/index.html +24 -0
  93. package/demos/vue/src/assets/logo.svg +29 -0
  94. package/demos/vue/src/components/App.vue +305 -0
  95. package/demos/vue/src/components/Authenticate.vue +65 -0
  96. package/demos/vue/src/components/Loader.vue +230 -0
  97. package/demos/vue/src/main.js +92 -0
  98. package/demos/webmap-checker-sapper/.env.example +5 -0
  99. package/demos/webmap-checker-sapper/README.md +123 -0
  100. package/demos/webmap-checker-sapper/appveyor.yml +18 -0
  101. package/demos/webmap-checker-sapper/cypress/fixtures/example.json +5 -0
  102. package/demos/webmap-checker-sapper/cypress/integration/spec.js +19 -0
  103. package/demos/webmap-checker-sapper/cypress/plugins/index.js +17 -0
  104. package/demos/webmap-checker-sapper/cypress/support/commands.js +25 -0
  105. package/demos/webmap-checker-sapper/cypress/support/index.js +20 -0
  106. package/demos/webmap-checker-sapper/cypress.json +4 -0
  107. package/demos/webmap-checker-sapper/package-lock.json +9622 -0
  108. package/demos/webmap-checker-sapper/package.json +50 -0
  109. package/demos/webmap-checker-sapper/rollup.config.js +87 -0
  110. package/demos/webmap-checker-sapper/src/client.js +20 -0
  111. package/demos/webmap-checker-sapper/src/components/LayerStatus.html +108 -0
  112. package/demos/webmap-checker-sapper/src/components/Nav.html +21 -0
  113. package/demos/webmap-checker-sapper/src/components/WebMap.html +62 -0
  114. package/demos/webmap-checker-sapper/src/routes/_error.html +41 -0
  115. package/demos/webmap-checker-sapper/src/routes/_layout.html +21 -0
  116. package/demos/webmap-checker-sapper/src/routes/auth/authorize.js +18 -0
  117. package/demos/webmap-checker-sapper/src/routes/auth/exchange-token.js +20 -0
  118. package/demos/webmap-checker-sapper/src/routes/auth/post-sign-in.js +24 -0
  119. package/demos/webmap-checker-sapper/src/routes/auth/sign-out.js +10 -0
  120. package/demos/webmap-checker-sapper/src/routes/index.html +20 -0
  121. package/demos/webmap-checker-sapper/src/routes/webmaps/[webmapId].html +83 -0
  122. package/demos/webmap-checker-sapper/src/routes/webmaps/index.html +59 -0
  123. package/demos/webmap-checker-sapper/src/server.js +101 -0
  124. package/demos/webmap-checker-sapper/src/service-worker.js +82 -0
  125. package/demos/webmap-checker-sapper/src/template.html +33 -0
  126. package/demos/webmap-checker-sapper/src/userInfoMiddleware.js +21 -0
  127. package/demos/webmap-checker-sapper/src/utils.js +33 -0
  128. package/demos/webmap-checker-sapper/static/favicon.png +0 -0
  129. package/demos/webmap-checker-sapper/static/global.css +36 -0
  130. package/demos/webmap-checker-sapper/static/manifest.json +20 -0
  131. package/demos/webmap-checker-sapper/static/svelte-logo-192.png +0 -0
  132. package/demos/webmap-checker-sapper/static/svelte-logo-512.png +0 -0
  133. package/docs/.eslintrc.js +12 -0
  134. package/docs/FAQ.md +48 -0
  135. package/docs/HISTORY.md +62 -0
  136. package/docs/acetate.config.js +262 -0
  137. package/docs/build-typedoc.js +434 -0
  138. package/docs/generate-srihashes.js +53 -0
  139. package/docs/src/_layout.html +86 -0
  140. package/docs/src/api/_declaration.html +600 -0
  141. package/docs/src/api/_layout.html +204 -0
  142. package/docs/src/api/_package.html +38 -0
  143. package/docs/src/api/index.html +16 -0
  144. package/docs/src/guides/_layout.html +24 -0
  145. package/docs/src/guides/amd-requirejs-dojo.md +40 -0
  146. package/docs/src/guides/browser-authentication.md +39 -0
  147. package/docs/src/guides/bundlers.md +52 -0
  148. package/docs/src/guides/cli-authentication.md +9 -0
  149. package/docs/src/guides/client-server-authentication.md +9 -0
  150. package/docs/src/guides/embedded-apps.md +106 -0
  151. package/docs/src/guides/from-a-cdn.md +38 -0
  152. package/docs/src/guides/index.md +59 -0
  153. package/docs/src/guides/node.md +104 -0
  154. package/docs/src/guides/package-overview.md +111 -0
  155. package/docs/src/guides/server-authentication.md +9 -0
  156. package/docs/src/guides/whats-new-v2-0.md +305 -0
  157. package/docs/src/img/icons.png +0 -0
  158. package/docs/src/img/icons@2x.png +0 -0
  159. package/docs/src/img/oauth-browser.png +0 -0
  160. package/docs/src/index.html +12 -0
  161. package/docs/src/js/api-search.js +112 -0
  162. package/docs/src/js/nav-toggle.js +41 -0
  163. package/docs/src/sass/_highlight.scss +96 -0
  164. package/docs/src/sass/_icons.scss +157 -0
  165. package/docs/src/sass/style.scss +242 -0
  166. package/docs/src/srihashes.json +12 -0
  167. package/jasmine.json +7 -0
  168. package/jasmine.live.json +7 -0
  169. package/karma.conf.js +107 -0
  170. package/lerna.json +8 -0
  171. package/notes/README.md +68 -0
  172. package/package.json +141 -0
  173. package/packages/arcgis-rest-auth/README.md +71 -0
  174. package/packages/arcgis-rest-auth/package.json +69 -0
  175. package/packages/arcgis-rest-auth/post-message-auth-spec.md +70 -0
  176. package/packages/arcgis-rest-auth/src/ApiKey.ts +41 -0
  177. package/packages/arcgis-rest-auth/src/ApplicationSession.ts +122 -0
  178. package/packages/arcgis-rest-auth/src/UserSession.ts +1355 -0
  179. package/packages/arcgis-rest-auth/src/app-tokens.ts +131 -0
  180. package/packages/arcgis-rest-auth/src/authenticated-request-options.ts +24 -0
  181. package/packages/arcgis-rest-auth/src/federation-utils.ts +85 -0
  182. package/packages/arcgis-rest-auth/src/fetch-token.ts +50 -0
  183. package/packages/arcgis-rest-auth/src/generate-token.ts +35 -0
  184. package/packages/arcgis-rest-auth/src/index.ts +13 -0
  185. package/packages/arcgis-rest-auth/src/validate-app-access.ts +68 -0
  186. package/packages/arcgis-rest-auth/test/ApiKey.test.ts +35 -0
  187. package/packages/arcgis-rest-auth/test/ApplicationSession.test.ts +124 -0
  188. package/packages/arcgis-rest-auth/test/UserSession.test.ts +2377 -0
  189. package/packages/arcgis-rest-auth/test/app-tokens.test.ts +95 -0
  190. package/packages/arcgis-rest-auth/test/federation-utils.test.ts +323 -0
  191. package/packages/arcgis-rest-auth/test/fetchToken.test.ts +112 -0
  192. package/packages/arcgis-rest-auth/test/generateToken.test.ts +102 -0
  193. package/packages/arcgis-rest-auth/test/utils.ts +14 -0
  194. package/packages/arcgis-rest-auth/test/validate-app-access.test.ts +46 -0
  195. package/packages/arcgis-rest-auth/tsconfig.json +6 -0
  196. package/packages/arcgis-rest-demographics/README.md +75 -0
  197. package/packages/arcgis-rest-demographics/package.json +69 -0
  198. package/packages/arcgis-rest-demographics/src/getAvailableCountries.ts +113 -0
  199. package/packages/arcgis-rest-demographics/src/getAvailableDataCollections.ts +166 -0
  200. package/packages/arcgis-rest-demographics/src/getAvailableGeographyLevels.ts +88 -0
  201. package/packages/arcgis-rest-demographics/src/getGeography.ts +152 -0
  202. package/packages/arcgis-rest-demographics/src/helpers.ts +28 -0
  203. package/packages/arcgis-rest-demographics/src/index.ts +8 -0
  204. package/packages/arcgis-rest-demographics/src/queryDemographicData.ts +106 -0
  205. package/packages/arcgis-rest-demographics/test/getAvailableCountries.test.ts +92 -0
  206. package/packages/arcgis-rest-demographics/test/getAvailableDataCollections.test.ts +115 -0
  207. package/packages/arcgis-rest-demographics/test/getAvailableGeographyLevels.test.ts +72 -0
  208. package/packages/arcgis-rest-demographics/test/getGeography.test.ts +141 -0
  209. package/packages/arcgis-rest-demographics/test/mocks/responses.ts +4 -0
  210. package/packages/arcgis-rest-demographics/test/queryDemographicData.test.live.ts +42 -0
  211. package/packages/arcgis-rest-demographics/test/queryDemographicData.test.ts +113 -0
  212. package/packages/arcgis-rest-demographics/tsconfig.json +6 -0
  213. package/packages/arcgis-rest-feature-layer/README.md +77 -0
  214. package/packages/arcgis-rest-feature-layer/package.json +64 -0
  215. package/packages/arcgis-rest-feature-layer/src/add.ts +56 -0
  216. package/packages/arcgis-rest-feature-layer/src/addAttachment.ts +53 -0
  217. package/packages/arcgis-rest-feature-layer/src/applyEdits.ts +95 -0
  218. package/packages/arcgis-rest-feature-layer/src/decodeValues.ts +122 -0
  219. package/packages/arcgis-rest-feature-layer/src/delete.ts +61 -0
  220. package/packages/arcgis-rest-feature-layer/src/deleteAttachments.ts +52 -0
  221. package/packages/arcgis-rest-feature-layer/src/getAllLayersAndTables.ts +30 -0
  222. package/packages/arcgis-rest-feature-layer/src/getAttachments.ts +55 -0
  223. package/packages/arcgis-rest-feature-layer/src/getLayer.ts +24 -0
  224. package/packages/arcgis-rest-feature-layer/src/getService.ts +26 -0
  225. package/packages/arcgis-rest-feature-layer/src/helpers.ts +97 -0
  226. package/packages/arcgis-rest-feature-layer/src/index.ts +32 -0
  227. package/packages/arcgis-rest-feature-layer/src/query.ts +204 -0
  228. package/packages/arcgis-rest-feature-layer/src/queryRelated.ts +89 -0
  229. package/packages/arcgis-rest-feature-layer/src/update.ts +60 -0
  230. package/packages/arcgis-rest-feature-layer/src/updateAttachment.ts +59 -0
  231. package/packages/arcgis-rest-feature-layer/test/attachments.test.ts +200 -0
  232. package/packages/arcgis-rest-feature-layer/test/crud.test.ts +197 -0
  233. package/packages/arcgis-rest-feature-layer/test/decodeValues.test.ts +67 -0
  234. package/packages/arcgis-rest-feature-layer/test/getAllLayersAndTables.test.ts +28 -0
  235. package/packages/arcgis-rest-feature-layer/test/getLayer.test.ts +31 -0
  236. package/packages/arcgis-rest-feature-layer/test/getService.test.ts +31 -0
  237. package/packages/arcgis-rest-feature-layer/test/helpers.test.ts +25 -0
  238. package/packages/arcgis-rest-feature-layer/test/mocks/allLayersAndTablesResponse.ts +906 -0
  239. package/packages/arcgis-rest-feature-layer/test/mocks/cvdQueryResponse.ts +225 -0
  240. package/packages/arcgis-rest-feature-layer/test/mocks/feature.ts +302 -0
  241. package/packages/arcgis-rest-feature-layer/test/mocks/fields.ts +779 -0
  242. package/packages/arcgis-rest-feature-layer/test/mocks/foo.txt +1 -0
  243. package/packages/arcgis-rest-feature-layer/test/mocks/service.ts +398 -0
  244. package/packages/arcgis-rest-feature-layer/test/query.test.ts +167 -0
  245. package/packages/arcgis-rest-feature-layer/tsconfig.json +6 -0
  246. package/packages/arcgis-rest-geocoding/README.md +86 -0
  247. package/packages/arcgis-rest-geocoding/package.json +66 -0
  248. package/packages/arcgis-rest-geocoding/src/bulk.ts +104 -0
  249. package/packages/arcgis-rest-geocoding/src/geocode.ts +166 -0
  250. package/packages/arcgis-rest-geocoding/src/helpers.ts +56 -0
  251. package/packages/arcgis-rest-geocoding/src/index.ts +15 -0
  252. package/packages/arcgis-rest-geocoding/src/reverse.ts +84 -0
  253. package/packages/arcgis-rest-geocoding/src/suggest.ts +45 -0
  254. package/packages/arcgis-rest-geocoding/test/bulk.test.ts +194 -0
  255. package/packages/arcgis-rest-geocoding/test/geocode.test.ts +253 -0
  256. package/packages/arcgis-rest-geocoding/test/helpers.test.ts +85 -0
  257. package/packages/arcgis-rest-geocoding/test/mocks/responses.ts +591 -0
  258. package/packages/arcgis-rest-geocoding/test/reverse.test.ts +126 -0
  259. package/packages/arcgis-rest-geocoding/test/suggest.test.ts +53 -0
  260. package/packages/arcgis-rest-geocoding/tsconfig.json +6 -0
  261. package/packages/arcgis-rest-portal/README.md +73 -0
  262. package/packages/arcgis-rest-portal/package.json +64 -0
  263. package/packages/arcgis-rest-portal/src/groups/add-users.ts +140 -0
  264. package/packages/arcgis-rest-portal/src/groups/create.ts +43 -0
  265. package/packages/arcgis-rest-portal/src/groups/get.ts +184 -0
  266. package/packages/arcgis-rest-portal/src/groups/helpers.ts +14 -0
  267. package/packages/arcgis-rest-portal/src/groups/invite-users.ts +127 -0
  268. package/packages/arcgis-rest-portal/src/groups/join.ts +57 -0
  269. package/packages/arcgis-rest-portal/src/groups/notification.ts +77 -0
  270. package/packages/arcgis-rest-portal/src/groups/protect.ts +56 -0
  271. package/packages/arcgis-rest-portal/src/groups/remove-users.ts +76 -0
  272. package/packages/arcgis-rest-portal/src/groups/remove.ts +32 -0
  273. package/packages/arcgis-rest-portal/src/groups/search.ts +47 -0
  274. package/packages/arcgis-rest-portal/src/groups/update-user-membership.ts +63 -0
  275. package/packages/arcgis-rest-portal/src/groups/update.ts +39 -0
  276. package/packages/arcgis-rest-portal/src/index.ts +69 -0
  277. package/packages/arcgis-rest-portal/src/items/add.ts +138 -0
  278. package/packages/arcgis-rest-portal/src/items/content.ts +67 -0
  279. package/packages/arcgis-rest-portal/src/items/create.ts +150 -0
  280. package/packages/arcgis-rest-portal/src/items/export.ts +80 -0
  281. package/packages/arcgis-rest-portal/src/items/get.ts +437 -0
  282. package/packages/arcgis-rest-portal/src/items/helpers.ts +292 -0
  283. package/packages/arcgis-rest-portal/src/items/protect.ts +41 -0
  284. package/packages/arcgis-rest-portal/src/items/reassign.ts +61 -0
  285. package/packages/arcgis-rest-portal/src/items/remove.ts +141 -0
  286. package/packages/arcgis-rest-portal/src/items/search.ts +25 -0
  287. package/packages/arcgis-rest-portal/src/items/update.ts +185 -0
  288. package/packages/arcgis-rest-portal/src/items/upload.ts +125 -0
  289. package/packages/arcgis-rest-portal/src/orgs/notification.ts +131 -0
  290. package/packages/arcgis-rest-portal/src/services/get-unique-service-name.ts +35 -0
  291. package/packages/arcgis-rest-portal/src/services/is-service-name-available.ts +30 -0
  292. package/packages/arcgis-rest-portal/src/sharing/access.ts +84 -0
  293. package/packages/arcgis-rest-portal/src/sharing/helpers.ts +81 -0
  294. package/packages/arcgis-rest-portal/src/sharing/is-item-shared-with-group.ts +42 -0
  295. package/packages/arcgis-rest-portal/src/sharing/share-item-with-group.ts +336 -0
  296. package/packages/arcgis-rest-portal/src/sharing/unshare-item-with-group.ts +105 -0
  297. package/packages/arcgis-rest-portal/src/users/get-user-tags.ts +52 -0
  298. package/packages/arcgis-rest-portal/src/users/get-user-url.ts +18 -0
  299. package/packages/arcgis-rest-portal/src/users/get-user.ts +58 -0
  300. package/packages/arcgis-rest-portal/src/users/invitation.ts +156 -0
  301. package/packages/arcgis-rest-portal/src/users/notification.ts +68 -0
  302. package/packages/arcgis-rest-portal/src/users/search-users.ts +37 -0
  303. package/packages/arcgis-rest-portal/src/users/update.ts +66 -0
  304. package/packages/arcgis-rest-portal/src/util/SearchQueryBuilder.ts +391 -0
  305. package/packages/arcgis-rest-portal/src/util/array.ts +16 -0
  306. package/packages/arcgis-rest-portal/src/util/generic-search.ts +99 -0
  307. package/packages/arcgis-rest-portal/src/util/get-portal-settings.ts +45 -0
  308. package/packages/arcgis-rest-portal/src/util/get-portal-url.ts +28 -0
  309. package/packages/arcgis-rest-portal/src/util/get-portal.ts +53 -0
  310. package/packages/arcgis-rest-portal/src/util/get-subscription-info.ts +43 -0
  311. package/packages/arcgis-rest-portal/src/util/scrub-control-chars.ts +13 -0
  312. package/packages/arcgis-rest-portal/src/util/search.ts +42 -0
  313. package/packages/arcgis-rest-portal/test/groups/add-users.test.ts +239 -0
  314. package/packages/arcgis-rest-portal/test/groups/crud.test.ts +180 -0
  315. package/packages/arcgis-rest-portal/test/groups/get.test.ts +176 -0
  316. package/packages/arcgis-rest-portal/test/groups/invite-users.test.ts +146 -0
  317. package/packages/arcgis-rest-portal/test/groups/join.test.ts +72 -0
  318. package/packages/arcgis-rest-portal/test/groups/notification.test.ts +112 -0
  319. package/packages/arcgis-rest-portal/test/groups/protect.test.ts +72 -0
  320. package/packages/arcgis-rest-portal/test/groups/remove-users.test.ts +140 -0
  321. package/packages/arcgis-rest-portal/test/groups/search.test.ts +151 -0
  322. package/packages/arcgis-rest-portal/test/groups/update-user-membership.test.ts +62 -0
  323. package/packages/arcgis-rest-portal/test/items/add.test.ts +323 -0
  324. package/packages/arcgis-rest-portal/test/items/content.test.ts +156 -0
  325. package/packages/arcgis-rest-portal/test/items/create.test.ts +400 -0
  326. package/packages/arcgis-rest-portal/test/items/export.test.ts +122 -0
  327. package/packages/arcgis-rest-portal/test/items/get.test.ts +583 -0
  328. package/packages/arcgis-rest-portal/test/items/helpers.test.ts +60 -0
  329. package/packages/arcgis-rest-portal/test/items/protect.test.ts +122 -0
  330. package/packages/arcgis-rest-portal/test/items/reassign.test.ts +131 -0
  331. package/packages/arcgis-rest-portal/test/items/remove.test.ts +261 -0
  332. package/packages/arcgis-rest-portal/test/items/search.test.ts +275 -0
  333. package/packages/arcgis-rest-portal/test/items/update.test.ts +556 -0
  334. package/packages/arcgis-rest-portal/test/items/upload.test.ts +282 -0
  335. package/packages/arcgis-rest-portal/test/mocks/groups/responses.ts +208 -0
  336. package/packages/arcgis-rest-portal/test/mocks/items/foo.zip +0 -0
  337. package/packages/arcgis-rest-portal/test/mocks/items/item.ts +526 -0
  338. package/packages/arcgis-rest-portal/test/mocks/items/resources.ts +38 -0
  339. package/packages/arcgis-rest-portal/test/mocks/items/search.ts +121 -0
  340. package/packages/arcgis-rest-portal/test/mocks/portal/response.ts +126 -0
  341. package/packages/arcgis-rest-portal/test/mocks/portal/settings-response.ts +56 -0
  342. package/packages/arcgis-rest-portal/test/mocks/sharing/sharing.ts +18 -0
  343. package/packages/arcgis-rest-portal/test/mocks/users/invitation.ts +70 -0
  344. package/packages/arcgis-rest-portal/test/mocks/users/notification.ts +34 -0
  345. package/packages/arcgis-rest-portal/test/mocks/users/user-search.ts +388 -0
  346. package/packages/arcgis-rest-portal/test/mocks/users/user-tags.ts +5 -0
  347. package/packages/arcgis-rest-portal/test/mocks/users/user.ts +174 -0
  348. package/packages/arcgis-rest-portal/test/orgs/notification.test.ts +144 -0
  349. package/packages/arcgis-rest-portal/test/services/get-unique-service-name.test.ts +59 -0
  350. package/packages/arcgis-rest-portal/test/services/is-service-name-available.test.ts +46 -0
  351. package/packages/arcgis-rest-portal/test/sharing/access.test.ts +162 -0
  352. package/packages/arcgis-rest-portal/test/sharing/helpers.test.ts +55 -0
  353. package/packages/arcgis-rest-portal/test/sharing/share-item-with-group.test.ts +1328 -0
  354. package/packages/arcgis-rest-portal/test/sharing/unshare-item-with-group.test.ts +288 -0
  355. package/packages/arcgis-rest-portal/test/users/get-user-tags.test.ts +71 -0
  356. package/packages/arcgis-rest-portal/test/users/get-user-url.test.ts +40 -0
  357. package/packages/arcgis-rest-portal/test/users/get-user.test.ts +90 -0
  358. package/packages/arcgis-rest-portal/test/users/invitation.test.ts +127 -0
  359. package/packages/arcgis-rest-portal/test/users/notification.test.ts +77 -0
  360. package/packages/arcgis-rest-portal/test/users/search.test.ts +42 -0
  361. package/packages/arcgis-rest-portal/test/users/update.test.ts +151 -0
  362. package/packages/arcgis-rest-portal/test/util/SearchQueryBuilder.test.ts +340 -0
  363. package/packages/arcgis-rest-portal/test/util/array.test.ts +30 -0
  364. package/packages/arcgis-rest-portal/test/util/get-portal-settings.test.ts +68 -0
  365. package/packages/arcgis-rest-portal/test/util/get-portal-url.test.ts +37 -0
  366. package/packages/arcgis-rest-portal/test/util/portal.test.ts +148 -0
  367. package/packages/arcgis-rest-portal/test/util/scrub-control-chars.test.ts +22 -0
  368. package/packages/arcgis-rest-portal/tsconfig.json +6 -0
  369. package/packages/arcgis-rest-request/README.md +72 -0
  370. package/packages/arcgis-rest-request/package.json +60 -0
  371. package/packages/arcgis-rest-request/src/index.ts +25 -0
  372. package/packages/arcgis-rest-request/src/request.ts +433 -0
  373. package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +76 -0
  374. package/packages/arcgis-rest-request/src/utils/ErrorTypes.ts +29 -0
  375. package/packages/arcgis-rest-request/src/utils/GrantTypes.ts +5 -0
  376. package/packages/arcgis-rest-request/src/utils/HTTPMethods.ts +6 -0
  377. package/packages/arcgis-rest-request/src/utils/IAuthenticationManager.ts +22 -0
  378. package/packages/arcgis-rest-request/src/utils/IFetchTokenParams.ts +11 -0
  379. package/packages/arcgis-rest-request/src/utils/IGenerateTokenParams.ts +9 -0
  380. package/packages/arcgis-rest-request/src/utils/IParamBuilder.ts +3 -0
  381. package/packages/arcgis-rest-request/src/utils/IParams.ts +6 -0
  382. package/packages/arcgis-rest-request/src/utils/IParamsBuilder.ts +5 -0
  383. package/packages/arcgis-rest-request/src/utils/IRequestOptions.ts +54 -0
  384. package/packages/arcgis-rest-request/src/utils/ITokenRequestOptions.ts +9 -0
  385. package/packages/arcgis-rest-request/src/utils/ResponseFormats.ts +10 -0
  386. package/packages/arcgis-rest-request/src/utils/append-custom-params.ts +49 -0
  387. package/packages/arcgis-rest-request/src/utils/clean-url.ts +20 -0
  388. package/packages/arcgis-rest-request/src/utils/decode-query-string.ts +27 -0
  389. package/packages/arcgis-rest-request/src/utils/encode-form-data.ts +38 -0
  390. package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +35 -0
  391. package/packages/arcgis-rest-request/src/utils/process-params.ts +109 -0
  392. package/packages/arcgis-rest-request/src/utils/retryAuthError.ts +10 -0
  393. package/packages/arcgis-rest-request/src/utils/warn.ts +11 -0
  394. package/packages/arcgis-rest-request/src/utils/with-options.ts +48 -0
  395. package/packages/arcgis-rest-request/test/mocks/errors.ts +76 -0
  396. package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +13 -0
  397. package/packages/arcgis-rest-request/test/mocks/param-builder.ts +7 -0
  398. package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +41 -0
  399. package/packages/arcgis-rest-request/test/mocks/webmap.ts +41 -0
  400. package/packages/arcgis-rest-request/test/request.test.ts +621 -0
  401. package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +191 -0
  402. package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +51 -0
  403. package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +111 -0
  404. package/packages/arcgis-rest-request/test/utils/clean-url.test.ts +50 -0
  405. package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +133 -0
  406. package/packages/arcgis-rest-request/test/utils/encode-query-string.test.ts +18 -0
  407. package/packages/arcgis-rest-request/test/utils/process-params.test.ts +205 -0
  408. package/packages/arcgis-rest-request/test/utils/with-options.test.ts +133 -0
  409. package/packages/arcgis-rest-request/tsconfig.json +4 -0
  410. package/packages/arcgis-rest-routing/README.md +75 -0
  411. package/packages/arcgis-rest-routing/package.json +65 -0
  412. package/packages/arcgis-rest-routing/src/closestFacility.ts +225 -0
  413. package/packages/arcgis-rest-routing/src/helpers.ts +104 -0
  414. package/packages/arcgis-rest-routing/src/index.ts +14 -0
  415. package/packages/arcgis-rest-routing/src/originDestinationMatrix.ts +223 -0
  416. package/packages/arcgis-rest-routing/src/serviceArea.ts +173 -0
  417. package/packages/arcgis-rest-routing/src/solveRoute.ts +180 -0
  418. package/packages/arcgis-rest-routing/test/closestFacility.test.ts +683 -0
  419. package/packages/arcgis-rest-routing/test/mocks/inputs.ts +132 -0
  420. package/packages/arcgis-rest-routing/test/mocks/responses.ts +13316 -0
  421. package/packages/arcgis-rest-routing/test/originDestinationMatrix.test.ts +795 -0
  422. package/packages/arcgis-rest-routing/test/serviceArea.test.ts +601 -0
  423. package/packages/arcgis-rest-routing/test/solveRoute.test.ts +677 -0
  424. package/packages/arcgis-rest-routing/tsconfig.json +6 -0
  425. package/packages/arcgis-rest-service-admin/README.md +73 -0
  426. package/packages/arcgis-rest-service-admin/package.json +65 -0
  427. package/packages/arcgis-rest-service-admin/src/addTo.ts +70 -0
  428. package/packages/arcgis-rest-service-admin/src/create.ts +189 -0
  429. package/packages/arcgis-rest-service-admin/src/get-service-admin-info.ts +34 -0
  430. package/packages/arcgis-rest-service-admin/src/get-view-sources.ts +20 -0
  431. package/packages/arcgis-rest-service-admin/src/index.ts +14 -0
  432. package/packages/arcgis-rest-service-admin/src/update.ts +50 -0
  433. package/packages/arcgis-rest-service-admin/test/addTo.test.ts +350 -0
  434. package/packages/arcgis-rest-service-admin/test/create.test.ts +294 -0
  435. package/packages/arcgis-rest-service-admin/test/get-service-admin-info.test.ts +37 -0
  436. package/packages/arcgis-rest-service-admin/test/get-view-sources.test.ts +40 -0
  437. package/packages/arcgis-rest-service-admin/test/mocks/layerDefinition.ts +79 -0
  438. package/packages/arcgis-rest-service-admin/test/mocks/service.ts +81 -0
  439. package/packages/arcgis-rest-service-admin/test/update.test.ts +115 -0
  440. package/packages/arcgis-rest-service-admin/tsconfig.json +5 -0
  441. package/packages/arcgis-rest-types/README.md +66 -0
  442. package/packages/arcgis-rest-types/package.json +54 -0
  443. package/packages/arcgis-rest-types/src/feature.ts +42 -0
  444. package/packages/arcgis-rest-types/src/geometry.ts +272 -0
  445. package/packages/arcgis-rest-types/src/group.ts +72 -0
  446. package/packages/arcgis-rest-types/src/index.ts +9 -0
  447. package/packages/arcgis-rest-types/src/item.ts +81 -0
  448. package/packages/arcgis-rest-types/src/service.ts +156 -0
  449. package/packages/arcgis-rest-types/src/statisticDefinition.ts +33 -0
  450. package/packages/arcgis-rest-types/src/symbol.ts +170 -0
  451. package/packages/arcgis-rest-types/src/user.ts +49 -0
  452. package/packages/arcgis-rest-types/src/webmap.ts +1405 -0
  453. package/packages/arcgis-rest-types/tsconfig.json +10 -0
  454. package/support/changelog.js +393 -0
  455. package/support/deploy-doc-site.js +16 -0
  456. package/support/dev.sh +6 -0
  457. package/support/publish.sh +47 -0
  458. package/support/test-helpers.js +9 -0
  459. package/tsconfig.json +63 -0
  460. package/umd-base-profile.js +81 -0
  461. package/umd-production-profile.js +13 -0
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "sapper-webmap-checker",
3
+ "description": "this thing is cray cray",
4
+ "private": true,
5
+ "version": "3.3.0",
6
+ "scripts": {
7
+ "dev": "sapper dev",
8
+ "build:legacy": "sapper build --legacy",
9
+ "export": "sapper export --legacy",
10
+ "start": "node __sapper__/build",
11
+ "cy:run": "cypress run",
12
+ "cy:open": "cypress open",
13
+ "test": "run-p --race dev cy:run"
14
+ },
15
+ "dependencies": {
16
+ "@esri/arcgis-rest-auth": "^3.3.0",
17
+ "@esri/arcgis-rest-portal": "^3.3.0",
18
+ "@esri/arcgis-rest-request": "^3.3.0",
19
+ "compression": "^1.7.1",
20
+ "cookies": "^0.7.3",
21
+ "cross-fetch": "^3.0.0",
22
+ "dotenv": "^6.2.0",
23
+ "esri-loader": "^2.6.0",
24
+ "express": "^4.16.4",
25
+ "express-session": "^1.15.6",
26
+ "fs-extra": "^7.0.1",
27
+ "isomorphic-form-data": "^1.0.0",
28
+ "polka": "^0.4.0",
29
+ "session-file-store": "^1.2.0",
30
+ "sirv": "^0.2.0"
31
+ },
32
+ "devDependencies": {
33
+ "@babel/core": "^7.0.0",
34
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
35
+ "@babel/plugin-transform-runtime": "^7.0.0",
36
+ "@babel/preset-env": "^7.0.0",
37
+ "@babel/runtime": "^7.0.0",
38
+ "chokidar": "^2.1.0",
39
+ "npm-run-all": "^4.1.5",
40
+ "rollup": "^1.0.0",
41
+ "rollup-plugin-babel": "^4.0.2",
42
+ "rollup-plugin-commonjs": "^9.1.6",
43
+ "rollup-plugin-node-resolve": "^4.0.0",
44
+ "rollup-plugin-replace": "^2.0.0",
45
+ "rollup-plugin-svelte": "^5.0.1",
46
+ "rollup-plugin-terser": "^1.0.1",
47
+ "sapper": "^0.24.2",
48
+ "svelte": "^2.0.0"
49
+ }
50
+ }
@@ -0,0 +1,87 @@
1
+ import resolve from 'rollup-plugin-node-resolve';
2
+ import replace from 'rollup-plugin-replace';
3
+ import commonjs from 'rollup-plugin-commonjs';
4
+ import svelte from 'rollup-plugin-svelte';
5
+ import babel from 'rollup-plugin-babel';
6
+ import { terser } from 'rollup-plugin-terser';
7
+ import config from 'sapper/config/rollup.js';
8
+ import pkg from './package.json';
9
+
10
+ const mode = process.env.NODE_ENV;
11
+ const dev = mode === 'development';
12
+ const legacy = !!process.env.SAPPER_LEGACY_BUILD;
13
+
14
+ export default {
15
+ client: {
16
+ input: config.client.input(),
17
+ output: config.client.output(),
18
+ plugins: [
19
+ replace({
20
+ 'process.browser': true,
21
+ 'process.env.NODE_ENV': JSON.stringify(mode)
22
+ }),
23
+ svelte({
24
+ dev,
25
+ hydratable: true,
26
+ emitCss: true
27
+ }),
28
+ resolve(),
29
+ commonjs(),
30
+
31
+ legacy && babel({
32
+ extensions: ['.js', '.html'],
33
+ runtimeHelpers: true,
34
+ exclude: ['node_modules/@babel/**'],
35
+ presets: [
36
+ ['@babel/preset-env', {
37
+ targets: '> 0.25%, not dead'
38
+ }]
39
+ ],
40
+ plugins: [
41
+ '@babel/plugin-syntax-dynamic-import',
42
+ ['@babel/plugin-transform-runtime', {
43
+ useESModules: true
44
+ }]
45
+ ]
46
+ }),
47
+
48
+ !dev && terser({
49
+ module: true
50
+ })
51
+ ],
52
+ },
53
+
54
+ server: {
55
+ input: config.server.input(),
56
+ output: config.server.output(),
57
+ plugins: [
58
+ replace({
59
+ 'process.browser': false,
60
+ 'process.env.NODE_ENV': JSON.stringify(mode)
61
+ }),
62
+ svelte({
63
+ generate: 'ssr',
64
+ dev
65
+ }),
66
+ resolve(),
67
+ commonjs()
68
+ ],
69
+ external: Object.keys(pkg.dependencies).concat(
70
+ require('module').builtinModules || Object.keys(process.binding('natives'))
71
+ ),
72
+ },
73
+
74
+ serviceworker: {
75
+ input: config.serviceworker.input(),
76
+ output: config.serviceworker.output(),
77
+ plugins: [
78
+ resolve(),
79
+ replace({
80
+ 'process.browser': true,
81
+ 'process.env.NODE_ENV': JSON.stringify(mode)
82
+ }),
83
+ commonjs(),
84
+ !dev && terser()
85
+ ]
86
+ }
87
+ };
@@ -0,0 +1,20 @@
1
+ import * as sapper from "../__sapper__/client.js";
2
+ import { Store } from "svelte/store.js";
3
+ import { UserSession } from "@esri/arcgis-rest-auth";
4
+
5
+ // sapper will have already rendered the HTML page in a specific state
6
+ // based on the Store we defined in server.js but we need to rehydrate that
7
+ // state on the client and start sapper.
8
+ sapper.start({
9
+ target: document.querySelector("#app"),
10
+ store: data => {
11
+ // `data` is whatever was in the Store on the server side.
12
+ // if we have a session we can create a new UserSession that we can
13
+ // use with ArcGIS REST JS on the client.
14
+ return new Store({
15
+ session: data && data.session ? new UserSession(data.session) : null,
16
+ user: data.user,
17
+ org: data.org
18
+ });
19
+ }
20
+ });
@@ -0,0 +1,108 @@
1
+ <h3>{title}</h3>
2
+
3
+ <!-- Render a link to ArcGIS Online -->
4
+ {#if itemId}
5
+ <p>
6
+ <a href="https://{$org.urlKey}.maps.arcgis.com/home/item.html?id={itemId}"
7
+ >View in ArcGIS Online</a
8
+ >
9
+ </p>
10
+ {/if}
11
+
12
+ <!-- Render a link to the service URL -->
13
+ {#if url || (item && item.url)}
14
+ <p>
15
+ <a href="{url || item.url}?token={$session.token}">
16
+ View Service URL
17
+ </a>
18
+ </p>
19
+ {/if}
20
+
21
+ <!-- Render this items sharing status-->
22
+ {#if itemId && item}
23
+ <p>Sharing Status: {item.access}</p>
24
+ {/if}
25
+
26
+ <!-- Render this items service status-->
27
+ {#if serviceHealth}
28
+ <p>Service Health: {serviceHealth}</p>
29
+ {/if}
30
+
31
+ <script>
32
+ import { getItem } from "@esri/arcgis-rest-portal";
33
+ import { request } from "@esri/arcgis-rest-request";
34
+ import { retryWithNewSession } from "../utils.js";
35
+
36
+ export default {
37
+ data: function() {
38
+ return {
39
+ serviceHealth: "unknown",
40
+ item: null
41
+ };
42
+ },
43
+ // runs every time the components state changes and only on the client
44
+ onstate({ changed, current, previous }) {
45
+ // this fires before oncreate, and on every state change.
46
+ // the first time it runs, `previous` is undefined
47
+ if (changed.url && current.url && !current.serviceHealthTimer) {
48
+ // check the service URL to see it is up
49
+ this.checkServiceStatus();
50
+ }
51
+
52
+ // load the item details async
53
+ if (changed.itemId && current.itemId) {
54
+ this.loadItemId();
55
+ }
56
+ },
57
+ // removes the setTimeout function when this component is destroyed
58
+ ondestroy() {
59
+ const { serviceHealthTimer } = this.get();
60
+ if (serviceHealthTimer) {
61
+ clearTimeout(serviceHealthTimer);
62
+ }
63
+ },
64
+ methods: {
65
+ // load more info about an item with ArcGIS REST JS
66
+ loadItemId() {
67
+ const { itemId, url } = this.get();
68
+ const { session } = this.store.get();
69
+
70
+ if (itemId) {
71
+ getItem(itemId, {
72
+ authentication: session
73
+ })
74
+ .catch(error => {
75
+ return retryWithNewSession(error, fetch);
76
+ })
77
+ .then(item => {
78
+ this.set({ item, url: url || item.url });
79
+ });
80
+ }
81
+ },
82
+
83
+ // Hit the service endpoint for a URL to see if the service is live
84
+ // Using the generic request method is useful for arbitrary methods
85
+ // or methods that aren't supported directly by ArcGIS Rest JS.
86
+ checkServiceStatus() {
87
+ const { url } = this.get();
88
+ const { session } = this.store.get();
89
+ if (url) {
90
+ request(url, { method: "get", authentication: session })
91
+ .then(response => {
92
+ this.set({ serviceHealth: "good" });
93
+ })
94
+ .catch(() => {
95
+ this.set({ serviceHealth: "bad" });
96
+ })
97
+ .finally(() => {
98
+ // setup a setTimeout so that this runs continuously
99
+ const serviceHealthTimer = setTimeout(() => {
100
+ this.checkServiceStatus();
101
+ }, 3000);
102
+ this.set({ serviceHealthTimer });
103
+ });
104
+ }
105
+ }
106
+ }
107
+ };
108
+ </script>
@@ -0,0 +1,21 @@
1
+ <nav class="flex items-center justify-between flex-wrap bg-teal p-6">
2
+ <div class="flex items-center flex-no-shrink text-white mr-6">
3
+ <span class="font-semibold text-4xl">Web Map Dependency Checker</span>
4
+ </div>
5
+ {#if $session}
6
+ <p class="text-white">
7
+ Signed in as {$session.username}
8
+ <a
9
+ href="/auth/sign-out"
10
+ class="inline-block px-6 py-3 leading-none border rounded text-white border-white hover:border-transparent hover:text-teal hover:bg-white mt-1"
11
+ >Sign out</a
12
+ >
13
+ </p>
14
+ {:else}
15
+ <a
16
+ href="/auth/authorize"
17
+ class="inline-block px-6 py-3 leading-none border rounded text-white border-white hover:border-transparent hover:text-teal hover:bg-white mt-1"
18
+ >Sign in</a
19
+ >
20
+ {/if}
21
+ </nav>
@@ -0,0 +1,62 @@
1
+ <!-- We need to use a ref here so we can access this div inside out component -->
2
+ <div ref:mapContainer class="webmap-container"></div>
3
+
4
+ <style>
5
+ .webmap-container {
6
+ width: 100%;
7
+ height: 400px;
8
+ }
9
+ </style>
10
+ <script>
11
+ import { loadModules, loadCss } from "esri-loader";
12
+
13
+ export default {
14
+ // oncreate run only the client
15
+ oncreate() {
16
+ this.intializeWebMap();
17
+ },
18
+ methods: {
19
+ intializeWebMap() {
20
+ // get the id of the webmap from the component
21
+ const { itemId } = this.get();
22
+
23
+ // set the session from the global store
24
+ const { session } = this.store.get();
25
+
26
+ // load the CSS dynamically with Esri Loader
27
+ loadCss("https://js.arcgis.com/4.10/esri/css/main.css");
28
+
29
+ // load JS API modules with Esri Loader
30
+ loadModules([
31
+ "esri/views/MapView",
32
+ "esri/WebMap",
33
+ "esri/identity/IdentityManager"
34
+ ])
35
+ .then(([MapView, WebMap, esriId]) => {
36
+ // since our webmap might be private we can pass teh credentials
37
+ // from the ArcGIS REST JS session to the JS API Identity Manager
38
+ // the JS API will then use these credentials for future requests
39
+ esriId.registerToken(session.toCredential());
40
+
41
+ // then we load a web map from an id
42
+ var webmap = new WebMap({
43
+ portalItem: {
44
+ // autocasts as new PortalItem()
45
+ id: itemId
46
+ }
47
+ });
48
+
49
+ // and we show that map in a container
50
+ var view = new MapView({
51
+ map: webmap,
52
+ container: this.refs.mapContainer
53
+ });
54
+ })
55
+ .catch(err => {
56
+ // handle any errors
57
+ console.error(err);
58
+ });
59
+ }
60
+ }
61
+ };
62
+ </script>
@@ -0,0 +1,41 @@
1
+ <svelte:head>
2
+ <title>{status}</title>
3
+ </svelte:head>
4
+
5
+ <h1>{status}</h1>
6
+
7
+ <p>{error.message}</p>
8
+
9
+ {#if dev && error.stack}
10
+ <pre>{error.stack}</pre>
11
+ {/if}
12
+
13
+ <style>
14
+ h1, p {
15
+ margin: 0 auto;
16
+ }
17
+
18
+ h1 {
19
+ font-size: 2.8em;
20
+ font-weight: 700;
21
+ margin: 0 0 0.5em 0;
22
+ }
23
+
24
+ p {
25
+ margin: 1em auto;
26
+ }
27
+
28
+ @media (min-width: 480px) {
29
+ h1 {
30
+ font-size: 4em;
31
+ }
32
+ }
33
+ </style>
34
+
35
+ <script>
36
+ export default {
37
+ helpers: {
38
+ dev: process.env.NODE_ENV === 'development'
39
+ }
40
+ };
41
+ </script>
@@ -0,0 +1,21 @@
1
+ <svelte:head>
2
+ <link
3
+ href="https://cdn.jsdelivr.net/npm/tailwindcss/dist/tailwind.min.css"
4
+ rel="stylesheet"
5
+ />
6
+ </svelte:head>
7
+
8
+ <Nav/>
9
+
10
+ <main class="p-6">
11
+ <svelte:component this="{child.component}" {...child.props} />
12
+ </main>
13
+
14
+ <script>
15
+ import Nav from '../components/Nav.html';
16
+ export default {
17
+ components: {
18
+ Nav
19
+ }
20
+ };
21
+ </script>
@@ -0,0 +1,18 @@
1
+ import { UserSession } from "@esri/arcgis-rest-auth";
2
+
3
+ // setup config variables
4
+ require("dotenv").config();
5
+ const { CLIENT_ID, REDIRECT_URI } = process.env;
6
+
7
+ // when a user access /auth/authorize we will allow
8
+ // UserSession.authorize to handle the response and
9
+ // redirect a user to the oAuth sign in page.
10
+ export function get(request, response, next) {
11
+ UserSession.authorize(
12
+ {
13
+ clientId: CLIENT_ID,
14
+ redirectUri: REDIRECT_URI
15
+ },
16
+ response
17
+ );
18
+ }
@@ -0,0 +1,20 @@
1
+ // if a token expires on the client side we don't have to ask then to log in
2
+ // again. Instead we can maek a request to /auth/exchange-token. Since this
3
+ // request will be same-domain this request will get the session cookie and
4
+ // can hydrate request.session.userSession which we can then refresh getting a
5
+ // new token which can be used on the client.
6
+ export function get(request, response, next) {
7
+ request.session.userSession
8
+ .refreshSession()
9
+ .then(newSession => {
10
+ request.session.userSession = newSession;
11
+ const serializedSession = newSession.toJSON();
12
+ delete serializedSession.refreshToken;
13
+ delete serializedSession.refreshTokenExpires;
14
+ response.json(serializedSession);
15
+ })
16
+ .catch(error => {
17
+ console.error(error);
18
+ response.json(error);
19
+ });
20
+ }
@@ -0,0 +1,24 @@
1
+ import { UserSession } from "@esri/arcgis-rest-auth";
2
+
3
+ // setup config variables
4
+ require("dotenv").config();
5
+ const { CLIENT_ID, REDIRECT_URI } = process.env;
6
+ debugger;
7
+ // a user will be redirected to /auth/post-sign-in after completing the sign in
8
+ // form in ArcGIS Online. We will allow UserSession.exchangeAuthorizationCode to
9
+ // trade the oAuth authorization code for a token and create a user session.
10
+ // We can then add that user session to the request.
11
+ export async function get(request, response, next) {
12
+ // exchange the auth token for a full `UserSession`
13
+ request.session.userSession = await UserSession.exchangeAuthorizationCode(
14
+ {
15
+ clientId: CLIENT_ID,
16
+ redirectUri: REDIRECT_URI
17
+ },
18
+ request.query.code
19
+ );
20
+
21
+ // once we have the session set redirect the user to the /webmaps
22
+ // route so they can use the app.
23
+ response.redirect("/webmaps");
24
+ }
@@ -0,0 +1,10 @@
1
+ // to sign a user out we have to destroy their session which will
2
+ // remove the encrypted file from disk and clear the session cookie
3
+ export function get(request, response, next) {
4
+ request.session.destroy(function(err) {
5
+ response.cookie("webmap-checker-session", { maxAge: 2592000000 });
6
+
7
+ // redirect user user to the homepag when we are done.
8
+ response.redirect("/");
9
+ });
10
+ }
@@ -0,0 +1,20 @@
1
+ <svelte:head>
2
+ <title>Web Map Dependency Checker</title>
3
+ </svelte:head>
4
+ <!-- The $ prefix tells sapper to load this from the global store-->
5
+ {#if $session}
6
+ <p>
7
+ Signed in as {$session.username}
8
+ <a
9
+ href="webmaps"
10
+ class="inline-block px-6 py-3 leading-none border rounded text-teal border-teal hover:border-dark-teal hover:text-dark-teal hover:bg-white mt-1"
11
+ >View web maps</a
12
+ >
13
+ </p>
14
+ {:else}
15
+ <a
16
+ href="/auth/authorize"
17
+ class="inline-block px-6 py-3 leading-none border rounded text-teal border-teal hover:border-dark-teal hover:text-dark-teal hover:bg-white mt-1"
18
+ >Sign in to get started</a
19
+ >
20
+ {/if}
@@ -0,0 +1,83 @@
1
+ <a href="./webmaps" class="text-blue">Back to list</a>
2
+
3
+ <h2>{item.title}</h2>
4
+ <p class="mb-4">Sharing Status: {item.access}</p>
5
+
6
+ <!-- show a preview of the webmap -->
7
+ {#if item}
8
+ <WebMap itemId="{item.id}" />
9
+ {/if}
10
+
11
+ <ul class="list-reset">
12
+ {#each layers as layer}
13
+ <li class="py-2">
14
+ <!-- show a list of layers and their statuses -->
15
+ <LayerStatus title="{layer.title}" itemId="{layer.itemId}" url="{layer.url}" serviceStatus="unknown" />
16
+ </li>
17
+ {/each}
18
+ </ul>
19
+
20
+ <pre class="max-w p-6 border border-grey-light rounded overflow-scroll shadow-lg">{webmapText}</pre>
21
+
22
+ <script>
23
+ import { UserSession } from "@esri/arcgis-rest-auth";
24
+ import { getItem, getItemData } from "@esri/arcgis-rest-portal";
25
+ import { retryWithNewSession } from "../../utils.js";
26
+ import LayerStatus from "../../components/LayerStatus.html";
27
+ import WebMap from "../../components/WebMap.html";
28
+
29
+ export default {
30
+ components: {
31
+ LayerStatus,
32
+ WebMap
33
+ },
34
+ // preload runs on the server to generate the inital state of the page and
35
+ // when a user navigates on the client to create the new view of the page.
36
+ // We can use arcgis-rest-js here to preload data.
37
+ preload({ params }) {
38
+ const { session } = this.store.get();
39
+
40
+ // redirect to the homepage unless the user is signed in
41
+ if (!session) {
42
+ this.redirect(302, "/");
43
+ return;
44
+ }
45
+
46
+ const { webmapId } = params;
47
+
48
+ // if we are on the server we won't have an actuall UserSession just a
49
+ // JSON representation of one. So we need to hydrate a UserSession.
50
+ const userSession = process.browser ? session : new UserSession(session);
51
+
52
+ // next we can request both the webmap item and the webmap data (the JSON)
53
+ // and process the data to get a list of layers.
54
+ return Promise.all([
55
+ getItem(webmapId, {
56
+ authentication: userSession
57
+ }).catch(error => {
58
+ return retryWithNewSession(error, this.fetch);
59
+ }),
60
+ getItemData(webmapId, {
61
+ authentication: userSession
62
+ }).catch(error => {
63
+ return retryWithNewSession(error, this.fetch);
64
+ })
65
+ ]).then(([item, webmap]) => {
66
+ const layers = webmap.operationalLayers
67
+ .concat(webmap.baseMap.baseMapLayers)
68
+ .map(layer => {
69
+ return {
70
+ title: layer.title || layer.id,
71
+ url: layer.url,
72
+ itemId: layer.itemId
73
+ };
74
+ });
75
+ return {
76
+ item,
77
+ webmapText: JSON.stringify(webmap, null, 2),
78
+ layers: layers
79
+ };
80
+ });
81
+ }
82
+ };
83
+ </script>
@@ -0,0 +1,59 @@
1
+ <h1>Webmaps</h1>
2
+
3
+ <ul class="list-reset">
4
+ {#each webmaps as webmap}
5
+ <li class="py-2">
6
+ <a href="webmaps/{webmap.id}" class="text-blue">{webmap.title}</a>
7
+ </li>
8
+ {/each}
9
+ </ul>
10
+
11
+ <script>
12
+ import { UserSession } from "@esri/arcgis-rest-auth";
13
+ import { searchItems } from "@esri/arcgis-rest-portal";
14
+ import { retryWithNewSession } from "../../utils.js";
15
+
16
+ export default {
17
+ // preload runs on the server to generate the inital state of the page and
18
+ // when a user navigates on the client to create the new view of the page.
19
+ // We can use arcgis-rest-js here to preload data.
20
+ preload() {
21
+ const { session } = this.store.get();
22
+
23
+ // redirect to the homepage unless the user is signed in
24
+ if (!session) {
25
+ this.redirect(302, "/");
26
+ return;
27
+ }
28
+
29
+ // if we are on the server we won't have an actuall UserSession just a
30
+ // JSON representation of one. So we need to hydrate a UserSession.
31
+ const userSession = process.browser ? session : new UserSession(session);
32
+
33
+ // now we can search for webmaps. Sapper will wait until this promise
34
+ // resolves before rendering the page.
35
+ return (
36
+ searchItems({
37
+ q: `owner:${session.username} type:"Web Map"`,
38
+ num: 100,
39
+ authentication: userSession
40
+ })
41
+ // if there is an error we can retry the request with a fresh session
42
+ // from /auth/exchange-token
43
+ .catch(error => {
44
+ return retryWithNewSession(error, this.fetch);
45
+ })
46
+ // then we can process out response.
47
+ .then(response => {
48
+ return {
49
+ webmaps: response.results
50
+ };
51
+ })
52
+
53
+ .catch(error => {
54
+ console.error(error);
55
+ })
56
+ );
57
+ }
58
+ };
59
+ </script>