etincidunt 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 (226) hide show
  1. package/.prettierignore +2 -0
  2. package/.travis.yml +29 -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 +14 -0
  18. package/demos/batch-geocoder-node/batch-geocode.js +112 -0
  19. package/demos/batch-geocoder-node/config-template.js +18 -0
  20. package/demos/batch-geocoder-node/package-lock.json +109 -0
  21. package/demos/batch-geocoder-node/package.json +37 -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 +388 -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 +163 -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/vue/.babelrc +6 -0
  51. package/demos/vue/.env.example +8 -0
  52. package/demos/vue/README.md +17 -0
  53. package/demos/vue/index.html +21 -0
  54. package/demos/vue/package-lock.json +7236 -0
  55. package/demos/vue/package.json +39 -0
  56. package/demos/vue/src/assets/logo.svg +29 -0
  57. package/demos/vue/src/components/App.vue +302 -0
  58. package/demos/vue/src/components/Authenticate.vue +68 -0
  59. package/demos/vue/src/components/Loader.vue +216 -0
  60. package/demos/vue/src/main.js +75 -0
  61. package/demos/vue/webpack.config.js +84 -0
  62. package/docs/FAQ.md +28 -0
  63. package/docs/HISTORY.md +62 -0
  64. package/docs/acetate.config.js +214 -0
  65. package/docs/build-typedoc.js +301 -0
  66. package/docs/src/_layout.html +82 -0
  67. package/docs/src/api/_declaration.html +496 -0
  68. package/docs/src/api/_layout.html +127 -0
  69. package/docs/src/api/_package.html +13 -0
  70. package/docs/src/api/index.html +23 -0
  71. package/docs/src/guides/_layout.html +24 -0
  72. package/docs/src/guides/amd-requirejs-dojo.md +40 -0
  73. package/docs/src/guides/babel-and-rollup.md +30 -0
  74. package/docs/src/guides/babel-and-webpack.md +30 -0
  75. package/docs/src/guides/browser-authentication.md +9 -0
  76. package/docs/src/guides/browserify.md +9 -0
  77. package/docs/src/guides/cli-authentication.md +9 -0
  78. package/docs/src/guides/client-server-authentication.md +9 -0
  79. package/docs/src/guides/from-a-cdn.md +36 -0
  80. package/docs/src/guides/index.md +52 -0
  81. package/docs/src/guides/node.md +30 -0
  82. package/docs/src/guides/package-overview.md +8 -0
  83. package/docs/src/guides/server-authentication.md +9 -0
  84. package/docs/src/guides/typescript-and-webpack.md +9 -0
  85. package/docs/src/img/icons.png +0 -0
  86. package/docs/src/img/icons@2x.png +0 -0
  87. package/docs/src/index.html +12 -0
  88. package/docs/src/js/api-search.js +113 -0
  89. package/docs/src/js/index.js +1 -0
  90. package/docs/src/js/nav-toggle.js +41 -0
  91. package/docs/src/sass/_highlight.scss +96 -0
  92. package/docs/src/sass/_icons.scss +157 -0
  93. package/docs/src/sass/style.scss +169 -0
  94. package/jasmine.json +7 -0
  95. package/karma.conf.js +100 -0
  96. package/lerna.json +8 -0
  97. package/notes/README.md +88 -0
  98. package/package.json +91 -0
  99. package/packages/arcgis-rest-auth/README.md +64 -0
  100. package/packages/arcgis-rest-auth/package-lock.json +11 -0
  101. package/packages/arcgis-rest-auth/package.json +51 -0
  102. package/packages/arcgis-rest-auth/src/ApplicationSession.ts +91 -0
  103. package/packages/arcgis-rest-auth/src/UserSession.ts +829 -0
  104. package/packages/arcgis-rest-auth/src/authenticated-request-options.ts +21 -0
  105. package/packages/arcgis-rest-auth/src/fetch-token.ts +55 -0
  106. package/packages/arcgis-rest-auth/src/generate-token.ts +36 -0
  107. package/packages/arcgis-rest-auth/src/index.ts +5 -0
  108. package/packages/arcgis-rest-auth/test/ApplicationSession.test.ts +121 -0
  109. package/packages/arcgis-rest-auth/test/UserSession.test.ts +883 -0
  110. package/packages/arcgis-rest-auth/test/fetchToken.test.ts +76 -0
  111. package/packages/arcgis-rest-auth/test/generateToken.test.ts +36 -0
  112. package/packages/arcgis-rest-auth/test/utils.ts +11 -0
  113. package/packages/arcgis-rest-auth/tsconfig.json +6 -0
  114. package/packages/arcgis-rest-common-types/README.md +61 -0
  115. package/packages/arcgis-rest-common-types/package.json +38 -0
  116. package/packages/arcgis-rest-common-types/src/group.ts +51 -0
  117. package/packages/arcgis-rest-common-types/src/index.ts +467 -0
  118. package/packages/arcgis-rest-common-types/src/item.ts +45 -0
  119. package/packages/arcgis-rest-common-types/src/webmap.ts +1225 -0
  120. package/packages/arcgis-rest-common-types/tsconfig.json +11 -0
  121. package/packages/arcgis-rest-feature-service/README.md +70 -0
  122. package/packages/arcgis-rest-feature-service/package-lock.json +11 -0
  123. package/packages/arcgis-rest-feature-service/package.json +50 -0
  124. package/packages/arcgis-rest-feature-service/src/add.ts +82 -0
  125. package/packages/arcgis-rest-feature-service/src/addAttachment.ts +65 -0
  126. package/packages/arcgis-rest-feature-service/src/delete.ts +85 -0
  127. package/packages/arcgis-rest-feature-service/src/deleteAttachments.ts +68 -0
  128. package/packages/arcgis-rest-feature-service/src/getAttachments.ts +64 -0
  129. package/packages/arcgis-rest-feature-service/src/helpers.ts +77 -0
  130. package/packages/arcgis-rest-feature-service/src/index.ts +8 -0
  131. package/packages/arcgis-rest-feature-service/src/query.ts +174 -0
  132. package/packages/arcgis-rest-feature-service/src/update.ts +81 -0
  133. package/packages/arcgis-rest-feature-service/src/updateAttachment.ts +74 -0
  134. package/packages/arcgis-rest-feature-service/test/attachments.test.ts +179 -0
  135. package/packages/arcgis-rest-feature-service/test/features.test.ts +172 -0
  136. package/packages/arcgis-rest-feature-service/test/mocks/feature.ts +220 -0
  137. package/packages/arcgis-rest-feature-service/test/mocks/foo.txt +1 -0
  138. package/packages/arcgis-rest-feature-service/tsconfig.json +6 -0
  139. package/packages/arcgis-rest-geocoder/README.md +73 -0
  140. package/packages/arcgis-rest-geocoder/package-lock.json +11 -0
  141. package/packages/arcgis-rest-geocoder/package.json +52 -0
  142. package/packages/arcgis-rest-geocoder/src/bulk.ts +102 -0
  143. package/packages/arcgis-rest-geocoder/src/geocode.ts +117 -0
  144. package/packages/arcgis-rest-geocoder/src/helpers.ts +81 -0
  145. package/packages/arcgis-rest-geocoder/src/index.ts +4 -0
  146. package/packages/arcgis-rest-geocoder/src/reverse.ts +84 -0
  147. package/packages/arcgis-rest-geocoder/src/suggest.ts +72 -0
  148. package/packages/arcgis-rest-geocoder/test/geocoder.test.ts +510 -0
  149. package/packages/arcgis-rest-geocoder/test/mocks/responses.ts +588 -0
  150. package/packages/arcgis-rest-geocoder/tsconfig.json +6 -0
  151. package/packages/arcgis-rest-groups/README.md +64 -0
  152. package/packages/arcgis-rest-groups/package-lock.json +11 -0
  153. package/packages/arcgis-rest-groups/package.json +52 -0
  154. package/packages/arcgis-rest-groups/src/groups.ts +272 -0
  155. package/packages/arcgis-rest-groups/src/index.ts +1 -0
  156. package/packages/arcgis-rest-groups/test/groups.test.ts +280 -0
  157. package/packages/arcgis-rest-groups/test/mocks/responses.ts +137 -0
  158. package/packages/arcgis-rest-groups/tsconfig.json +6 -0
  159. package/packages/arcgis-rest-items/README.md +66 -0
  160. package/packages/arcgis-rest-items/package-lock.json +11 -0
  161. package/packages/arcgis-rest-items/package.json +52 -0
  162. package/packages/arcgis-rest-items/src/index.ts +1 -0
  163. package/packages/arcgis-rest-items/src/items.ts +498 -0
  164. package/packages/arcgis-rest-items/test/items.test.ts +1153 -0
  165. package/packages/arcgis-rest-items/test/mocks/foo.zip +0 -0
  166. package/packages/arcgis-rest-items/test/mocks/item.ts +30 -0
  167. package/packages/arcgis-rest-items/test/mocks/resources.ts +28 -0
  168. package/packages/arcgis-rest-items/test/mocks/search.ts +60 -0
  169. package/packages/arcgis-rest-items/tsconfig.json +6 -0
  170. package/packages/arcgis-rest-request/README.md +65 -0
  171. package/packages/arcgis-rest-request/package-lock.json +11 -0
  172. package/packages/arcgis-rest-request/package.json +42 -0
  173. package/packages/arcgis-rest-request/src/index.ts +10 -0
  174. package/packages/arcgis-rest-request/src/request.ts +259 -0
  175. package/packages/arcgis-rest-request/src/utils/ArcGISAuthError.ts +67 -0
  176. package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +73 -0
  177. package/packages/arcgis-rest-request/src/utils/ErrorTypes.ts +29 -0
  178. package/packages/arcgis-rest-request/src/utils/check-for-errors.ts +65 -0
  179. package/packages/arcgis-rest-request/src/utils/encode-form-data.ts +29 -0
  180. package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +23 -0
  181. package/packages/arcgis-rest-request/src/utils/get-portal-url.ts +25 -0
  182. package/packages/arcgis-rest-request/src/utils/get-portal.ts +45 -0
  183. package/packages/arcgis-rest-request/src/utils/process-params.ts +99 -0
  184. package/packages/arcgis-rest-request/test/mocks/errors.ts +59 -0
  185. package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +10 -0
  186. package/packages/arcgis-rest-request/test/mocks/portal.ts +109 -0
  187. package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +38 -0
  188. package/packages/arcgis-rest-request/test/mocks/webmap.ts +38 -0
  189. package/packages/arcgis-rest-request/test/request.test.ts +296 -0
  190. package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +167 -0
  191. package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +40 -0
  192. package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +101 -0
  193. package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +112 -0
  194. package/packages/arcgis-rest-request/test/utils/get-portal-url.test.ts +34 -0
  195. package/packages/arcgis-rest-request/test/utils/portal.test.ts +94 -0
  196. package/packages/arcgis-rest-request/test/utils/process-params.test.ts +190 -0
  197. package/packages/arcgis-rest-request/tsconfig.json +6 -0
  198. package/packages/arcgis-rest-sharing/README.md +67 -0
  199. package/packages/arcgis-rest-sharing/package-lock.json +11 -0
  200. package/packages/arcgis-rest-sharing/package.json +55 -0
  201. package/packages/arcgis-rest-sharing/src/access.ts +91 -0
  202. package/packages/arcgis-rest-sharing/src/group-sharing.ts +212 -0
  203. package/packages/arcgis-rest-sharing/src/helpers.ts +92 -0
  204. package/packages/arcgis-rest-sharing/src/index.ts +2 -0
  205. package/packages/arcgis-rest-sharing/test/access.test.ts +153 -0
  206. package/packages/arcgis-rest-sharing/test/group-sharing.test.ts +436 -0
  207. package/packages/arcgis-rest-sharing/test/mocks/sharing.ts +15 -0
  208. package/packages/arcgis-rest-sharing/tsconfig.json +6 -0
  209. package/packages/arcgis-rest-users/README.md +71 -0
  210. package/packages/arcgis-rest-users/package-lock.json +11 -0
  211. package/packages/arcgis-rest-users/package.json +51 -0
  212. package/packages/arcgis-rest-users/src/index.ts +1 -0
  213. package/packages/arcgis-rest-users/src/users.ts +70 -0
  214. package/packages/arcgis-rest-users/test/mocks/responses.ts +170 -0
  215. package/packages/arcgis-rest-users/test/users.test.ts +97 -0
  216. package/packages/arcgis-rest-users/tsconfig.json +6 -0
  217. package/support/FormData.d.ts +1 -0
  218. package/support/changelog.js +388 -0
  219. package/support/commit-template.txt +19 -0
  220. package/support/deploy-doc-site.js +16 -0
  221. package/support/publish.sh +40 -0
  222. package/support/test-helpers.js +8 -0
  223. package/tsconfig.json +69 -0
  224. package/tslint.json +14 -0
  225. package/umd-base-profile.js +82 -0
  226. package/umd-production-profile.js +13 -0
@@ -0,0 +1,2 @@
1
+ package.json
2
+ package-lock.json
package/.travis.yml ADDED
@@ -0,0 +1,29 @@
1
+ language: node_js
2
+ sudo: false
3
+ notifications:
4
+ email: false
5
+ node_js:
6
+ - "8"
7
+ - "10"
8
+ cache:
9
+ directories: # Cache dependencies
10
+ - node_modules
11
+ before_script:
12
+ - npm run bootstrap
13
+ script:
14
+ - npm run test:ci
15
+ deploy:
16
+ provider: pages
17
+ skip_cleanup: true
18
+ github_token: $GITHUB_TOKEN # Set in travis-ci.org dashboard
19
+ on:
20
+ branch: master
21
+ local-dir: docs/build
22
+ target_branch: gh-pages
23
+ before_deploy:
24
+ - npm run docs:build
25
+ env:
26
+ - MOZ_HEADLESS=1
27
+ addons:
28
+ chrome: stable
29
+ firefox: latest
@@ -0,0 +1,24 @@
1
+ {
2
+ // Use IntelliSense to learn about possible Node.js debug attributes.
3
+ // Hover to view descriptions of existing attributes.
4
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
+ "version": "0.2.0",
6
+ "configurations": [
7
+ {
8
+ "type": "node",
9
+ "request": "launch",
10
+ "name": "Debug Node Tests",
11
+ "program": "${workspaceRoot}/node_modules/.bin/jasmine",
12
+ "args": [
13
+ "--config=jasmine.json"
14
+ ]
15
+ },
16
+ {
17
+ "type": "node",
18
+ "request": "launch",
19
+ "name": "Debug Changelog Script",
20
+ "program": "${workspaceRoot}/support/changelog.js",
21
+ "args": ["--config=jasmine.json"]
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "editor.tabSize": 2
3
+ }
@@ -0,0 +1,29 @@
1
+ # Node CLI Examples
2
+
3
+ This demo shows how to create a command-line application that interacts with the ArcGIS Online API.
4
+
5
+ At this point, the commands are very simple and intended to demonstrate how to build up tooling.
6
+
7
+ This project uses the `commander` module, which streamlines the creation of node cli applications. Check out the [README](https://github.com/tj/commander.js/blob/master/Readme.md) for more details.
8
+
9
+ ### Installing
10
+
11
+ Like all the other demo apps, run `npm run bootstrap` from the root.
12
+
13
+ ### Running
14
+ If you use this demo as a starting point for your own command line package, you would publish it to npm, then on the target systems run `npm install <your-cli-package>`, and it would be available as a command.
15
+
16
+ But, this is demo code, and thus the package is not "installed" via `npm install ...`, before we can call it as `ago <command> <query>` we need to run `npm link` in the `/demos/ago-node-cli` folder. After you do that, the command should work.
17
+
18
+ Here is a post with information on creating node command line tools: [A Guide to Creating a NodeJs Command](https://x-team.com/blog/a-guide-to-creating-a-nodejs-command/)
19
+
20
+ ### Commands
21
+
22
+ | command | description | example |
23
+ | --- | --- | --- |
24
+ | `ago search <query>` | search for items | `ago search water` |
25
+ | `ago export <id> <file>` | export an item to a json file | `ago export a62cb9d894f145cc89531c096d0012b1 pa.json` |
26
+
27
+ ## Building your own tooling
28
+
29
+ If you want to build out some commands of your own, you can also clone a stand-alone version of this repo from https://github.com/dbouwman/arcgis-rest-js-commands
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env node
2
+ require('isomorphic-fetch');
3
+ require('isomorphic-form-data');
4
+ /**
5
+ * This demo uses the commander module, which streamlines the creation of command-line-applications
6
+ */
7
+ const program = require('commander');
8
+
9
+ program
10
+ .version('0.0.1');
11
+
12
+ /**
13
+ * Bring in the search command...
14
+ */
15
+ const itemSearchCommand = require('./lib/item-search-command');
16
+
17
+ program
18
+ .command('search <query>')
19
+ .description('Search for items')
20
+ .action(function (query) {
21
+ itemSearchCommand.execute(query);
22
+ });
23
+
24
+ const itemExportCommand = require('./lib/item-export-command');
25
+ program
26
+ .command('export <itemId> <filename>')
27
+ .description('Export an item to a json file')
28
+ .action(function (id, filename) {
29
+ itemExportCommand.execute(id, filename);
30
+ });
31
+
32
+ program.parse(process.argv);
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Re-export the commands so they can be used in other contexts
3
+ */
4
+ const itemSearchCommand = require('./lib/item-search-command');
5
+ const itemExportCommand = require('./lib/item-export-command');
6
+
7
+ // just re-export the commands so they can be run in another scropt
8
+ module.exports = {
9
+ search: itemSearchCommand,
10
+ export: itemExportCommand
11
+ };
@@ -0,0 +1,48 @@
1
+ const { getItem, getItemData } = require("@esri/arcgis-rest-items");
2
+ const jsonfile = require('jsonfile');
3
+
4
+ module.exports = {
5
+ /**
6
+ * Execute the command
7
+ */
8
+ execute: function (id, fileName) {
9
+ console.info(`Exporting item ${id} to file ${fileName}`);
10
+ // construct the search call..
11
+ let model = {};
12
+ return getItem(id)
13
+ .then((item) => {
14
+ model.item = item;
15
+ if (this.shouldFetchData(item.type)){
16
+ console.info(`...Fetching ./data for item of type ${item.type}`);
17
+ return getItemData(id);
18
+ } else {
19
+ console.info(`...Items of type ${item.type} do not have json ./data - skipping`);
20
+ return Promise.resolve();
21
+ }
22
+ })
23
+ .then((maybeData) => {
24
+ if (maybeData) {
25
+ model.data = maybeData;
26
+ }
27
+ // now write out the file...
28
+ jsonfile.writeFileSync(fileName, model, {spaces: 2});
29
+ console.info(`Done. Exported "${model.item.title}" to ${fileName}`);
30
+ })
31
+ .catch((err) => {
32
+ console.error(err);
33
+ });
34
+ },
35
+
36
+ /**
37
+ * Not all item types have json /data
38
+ */
39
+ shouldFetchData (type) {
40
+ let result = false;
41
+ let exportables = ['Web Map', 'Web Mapping Application', 'Hub Page', 'Hub Initiative', 'Hub Site Application'];
42
+ // if the type is in this list, we can export it...
43
+ if (exportables.indexOf(type) > -1) {
44
+ result = true;
45
+ }
46
+ return result;
47
+ }
48
+ }
@@ -0,0 +1,35 @@
1
+
2
+ /**
3
+ * Bring in searchItems fn
4
+ */
5
+ const { searchItems } = require("@esri/arcgis-rest-items");
6
+
7
+ module.exports = {
8
+ /**
9
+ * Execute the command
10
+ */
11
+ execute: function (query) {
12
+ // construct the search call..
13
+ return searchItems({
14
+ searchForm: {
15
+ q: query,
16
+ start: 1,
17
+ num: 10
18
+ }
19
+ })
20
+ .then((response) => {
21
+ // if we got results
22
+ if (Array.isArray(response.results) && response.results.length) {
23
+ console.info(`${response.total} items found for "${query}".`);
24
+ response.results.forEach((entry) => {
25
+ console.info(`${entry.id} | ${entry.title}`);
26
+ })
27
+ } else {
28
+ console.info(`No results found for "${query}".`);
29
+ }
30
+ })
31
+ .catch((err) => {
32
+ console.error(err);
33
+ });
34
+ }
35
+ }
@@ -0,0 +1,172 @@
1
+ {
2
+ "requires": true,
3
+ "lockfileVersion": 1,
4
+ "dependencies": {
5
+ "ansi-styles": {
6
+ "version": "3.2.0",
7
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
8
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
9
+ "requires": {
10
+ "color-convert": "^1.9.0"
11
+ }
12
+ },
13
+ "async": {
14
+ "version": "2.6.0",
15
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
16
+ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
17
+ "requires": {
18
+ "lodash": "^4.14.0"
19
+ }
20
+ },
21
+ "chalk": {
22
+ "version": "2.3.1",
23
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz",
24
+ "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==",
25
+ "requires": {
26
+ "ansi-styles": "^3.2.0",
27
+ "escape-string-regexp": "^1.0.5",
28
+ "supports-color": "^5.2.0"
29
+ }
30
+ },
31
+ "color-convert": {
32
+ "version": "1.9.1",
33
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
34
+ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
35
+ "requires": {
36
+ "color-name": "^1.1.1"
37
+ }
38
+ },
39
+ "color-name": {
40
+ "version": "1.1.3",
41
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
42
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
43
+ },
44
+ "combined-stream": {
45
+ "version": "1.0.6",
46
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
47
+ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
48
+ "requires": {
49
+ "delayed-stream": "~1.0.0"
50
+ }
51
+ },
52
+ "commander": {
53
+ "version": "2.14.1",
54
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz",
55
+ "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw=="
56
+ },
57
+ "delayed-stream": {
58
+ "version": "1.0.0",
59
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
60
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
61
+ },
62
+ "encoding": {
63
+ "version": "0.1.12",
64
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
65
+ "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
66
+ "requires": {
67
+ "iconv-lite": "~0.4.13"
68
+ }
69
+ },
70
+ "escape-string-regexp": {
71
+ "version": "1.0.5",
72
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
73
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
74
+ },
75
+ "form-data": {
76
+ "version": "1.0.1",
77
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz",
78
+ "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=",
79
+ "requires": {
80
+ "async": "^2.0.1",
81
+ "combined-stream": "^1.0.5",
82
+ "mime-types": "^2.1.11"
83
+ }
84
+ },
85
+ "graceful-fs": {
86
+ "version": "4.1.11",
87
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
88
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
89
+ "optional": true
90
+ },
91
+ "has-flag": {
92
+ "version": "3.0.0",
93
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
94
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
95
+ },
96
+ "iconv-lite": {
97
+ "version": "0.4.19",
98
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
99
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
100
+ },
101
+ "is-stream": {
102
+ "version": "1.1.0",
103
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
104
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
105
+ },
106
+ "isomorphic-fetch": {
107
+ "version": "2.2.1",
108
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
109
+ "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
110
+ "requires": {
111
+ "node-fetch": "^1.0.1",
112
+ "whatwg-fetch": ">=0.10.0"
113
+ }
114
+ },
115
+ "isomorphic-form-data": {
116
+ "version": "1.0.0",
117
+ "resolved": "https://registry.npmjs.org/isomorphic-form-data/-/isomorphic-form-data-1.0.0.tgz",
118
+ "integrity": "sha1-BEe+fg9rht7z05MDbPdmSpiRkQA=",
119
+ "requires": {
120
+ "form-data": "^1.0.0-rc3"
121
+ }
122
+ },
123
+ "jsonfile": {
124
+ "version": "4.0.0",
125
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
126
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
127
+ "requires": {
128
+ "graceful-fs": "^4.1.6"
129
+ }
130
+ },
131
+ "lodash": {
132
+ "version": "4.17.5",
133
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
134
+ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw=="
135
+ },
136
+ "mime-db": {
137
+ "version": "1.30.0",
138
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
139
+ "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
140
+ },
141
+ "mime-types": {
142
+ "version": "2.1.17",
143
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
144
+ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
145
+ "requires": {
146
+ "mime-db": "~1.30.0"
147
+ }
148
+ },
149
+ "node-fetch": {
150
+ "version": "1.7.3",
151
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
152
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
153
+ "requires": {
154
+ "encoding": "^0.1.11",
155
+ "is-stream": "^1.0.1"
156
+ }
157
+ },
158
+ "supports-color": {
159
+ "version": "5.2.0",
160
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz",
161
+ "integrity": "sha512-F39vS48la4YvTZUPVeTqsjsFNrvcMwrV3RLZINsmHo+7djCvuUzSIeXOnZ5hmjef4bajL1dNccN+tg5XAliO5Q==",
162
+ "requires": {
163
+ "has-flag": "^3.0.0"
164
+ }
165
+ },
166
+ "whatwg-fetch": {
167
+ "version": "2.0.3",
168
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz",
169
+ "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ="
170
+ }
171
+ }
172
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "node-cli",
3
+ "version": "1.6.0",
4
+ "description": "arcgis-rest-js node command-line item search example",
5
+ "main": "ago.js",
6
+ "scripts": {
7
+ "start": "echo \"CLI - node index.js <search>\" && exit 1"
8
+ },
9
+ "bin": {
10
+ "ago": "./ago.js"
11
+ },
12
+ "private": true,
13
+ "keywords": [
14
+ "arcgis",
15
+ "node",
16
+ "arcgis-rest-js"
17
+ ],
18
+ "author": "Dave Bouwman <dbouwman@esri.com>",
19
+ "license": "Apache-2.0",
20
+ "dependencies": {
21
+ "@esri/arcgis-rest-auth": "^1.6.0",
22
+ "@esri/arcgis-rest-items": "^1.6.0",
23
+ "@esri/arcgis-rest-request": "^1.6.0",
24
+ "chalk": "^2.3.0",
25
+ "commander": "^2.12.2",
26
+ "isomorphic-fetch": "^2.2.1",
27
+ "isomorphic-form-data": "^1.0.0",
28
+ "jsonfile": "^4.0.0"
29
+ }
30
+ }
@@ -0,0 +1,5 @@
1
+ # Running this demo
2
+
3
+ 1. Make sure you run `npm run bootstrap` in the root folder to setup the dependencies
4
+ 1. `npm start`
5
+ 1. Visit http://localhost:8080
@@ -0,0 +1,164 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <title>Attachments</title>
4
+
5
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
6
+
7
+ <script src="https://cdn.polyfill.io/v2/polyfill.js?features=es5,Promise,fetch"></script>
8
+
9
+ <div class="container-fluid">
10
+ <div class="row">
11
+ <div class="col-md-12">
12
+ <h3>Attachments</h3>
13
+ <form id="getForm">
14
+ <div class="form-group">
15
+ <label for="serviceUrl">Service URL</label>
16
+ <input type="text" id="serviceUrl" name="serviceUrl" class="form-control" value="http://sampleserver6.arcgisonline.com/arcgis/rest/services/SF311/FeatureServer/0/" required>
17
+ </div>
18
+ <div class="form-group">
19
+ <label for="featureId">Feature ID</label>
20
+ <input type="number" min="0" step="1" id="featureId" name="featureId" class="form-control" value="3339970" required>
21
+ </div>
22
+ <div class="form-group">
23
+ <button type="submit" class="btn"><span class="glyphicon glyphicon-paperclip" aria-hidden="true"></span> Get Attachments</button>
24
+ </div>
25
+ </form>
26
+ </div>
27
+ </div>
28
+ <div class="row">
29
+ <div class="col-md-12">
30
+ <form id="addForm">
31
+ <div class="form-group">
32
+ <label for="attachFile">File</label>
33
+ <input type="file" id="attachFile" name="attachFile" required>
34
+ </div>
35
+ <div class="form-group">
36
+ <button type="submit" class="btn btn-success"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Add Attachment</button>
37
+ </div>
38
+ </form>
39
+ </div>
40
+ </div>
41
+ <div class="row">
42
+ <div class="col-md-12">
43
+ <p id="resultMessage"></p>
44
+ <table class="table table-striped">
45
+ <thead>
46
+ <th>Attachment ID</th>
47
+ <th>Content Type</th>
48
+ <th>Size</th>
49
+ <th>Attachment</th>
50
+ <th>Delete</th>
51
+ </thead>
52
+ <tbody id="result"></tbody>
53
+ </table>
54
+ </div>
55
+ </div>
56
+ </div>
57
+
58
+ <script src="https://rawgit.com/kriszyp/put-selector/master/put.js"></script>
59
+ <script src="node_modules/@esri/arcgis-rest-request/dist/umd/request.umd.js"></script>
60
+ <script src="node_modules/@esri/arcgis-rest-feature-service/dist/umd/feature-service.umd.js"></script>
61
+
62
+ <script>
63
+ let serviceUrl, featureId;
64
+
65
+ let validService = false;
66
+
67
+ // ref some nodes
68
+ const getForm = document.getElementById('getForm');
69
+ const addForm = document.getElementById('addForm');
70
+ const resultMessage = document.getElementById('resultMessage');
71
+ const result = document.getElementById('result');
72
+
73
+ // delete attachment and get again to update table rows
74
+ const deleteAttachment = attachmentId => {
75
+ arcgisRest.deleteAttachments({
76
+ url: serviceUrl,
77
+ featureId: featureId,
78
+ attachmentIds: [attachmentId]
79
+ }).then(res => {
80
+ console.log(res);
81
+ arcgisRest.getAttachments({
82
+ url: serviceUrl,
83
+ featureId: featureId
84
+ }).then(getResponse).catch(getError);
85
+ }).catch(err => {
86
+ console.log(err);
87
+ alert(err.message + ' Check the console for more details.');
88
+ });
89
+ }
90
+
91
+ // handle get attachments response and create table rows
92
+ const getResponse = res => {
93
+ console.log(res);
94
+ const infos = res.attachmentInfos;
95
+ validService = true;
96
+ resultMessage.innerHTML = 'Feature has ' + infos.length + ' attachments.';
97
+ result.innerHTML = '';
98
+ if (infos.length) {
99
+ infos.forEach(info => {
100
+ const tr = put(result, 'tr');
101
+ put(tr, 'td', info.id);
102
+ put(tr, 'td', info.contentType);
103
+ put(tr, 'td', info.size);
104
+ put(tr, 'td a.btn.btn-primary', {
105
+ target: '_blank',
106
+ href: serviceUrl + '/' + featureId + '/attachments/' + info.id,
107
+ innerHTML: '<span class="glyphicon glyphicon-file" aria-hidden="true"></span> ' + info.name
108
+ });
109
+ put(tr, 'td a.btn.btn-danger', {
110
+ href: '#',
111
+ innerHTML: '<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> ' + info.name,
112
+ onclick: evt => {
113
+ evt.preventDefault();
114
+ deleteAttachment(info.id);
115
+ }
116
+ });
117
+ });
118
+ }
119
+ };
120
+
121
+ // handle get attachments error
122
+ const getError = err => {
123
+ console.log(err);
124
+ validService = false;
125
+ resultMessage.innerHTML = err.message + ' Check the console for more details.';
126
+ result.innerHTML = '';
127
+ }
128
+
129
+ // handle get attachments form submit
130
+ getForm.addEventListener('submit', function (evt) {
131
+ evt.preventDefault();
132
+ arcgisRest.getAttachments({
133
+ url: serviceUrl = getForm.serviceUrl.value,
134
+ featureId: featureId = getForm.featureId.value
135
+ }).then(getResponse).catch(getError);
136
+ });
137
+
138
+ // handle add attachment form submit and get again to update table rows
139
+ addForm.addEventListener('submit', function (evt) {
140
+ evt.preventDefault();
141
+ if (!validService) {
142
+ alert('Not so fast. Start by getting a feature\'s attachments first.');
143
+ return;
144
+ }
145
+ arcgisRest.addAttachment({
146
+ url: serviceUrl,
147
+ featureId: featureId,
148
+ attachment: evt.target.attachFile.files[0],
149
+ params: {
150
+ returnEditMoment: true
151
+ }
152
+ }).then(res => {
153
+ console.log(res);
154
+ arcgisRest.getAttachments({
155
+ url: serviceUrl,
156
+ featureId: featureId
157
+ }).then(getResponse).catch(getError);
158
+ }).catch(err => {
159
+ console.log(err);
160
+ alert(err.message + ' Check the console for more details.');
161
+ });
162
+ });
163
+ </script>
164
+ </html>