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,78 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import {
5
+ request,
6
+ IRequestOptions,
7
+ getPortalUrl
8
+ } from "@esri/arcgis-rest-request";
9
+
10
+ import { IPagingParams, IItem } from "@esri/arcgis-rest-common-types";
11
+
12
+ // this interface still needs to be docced
13
+ export interface ISearchRequest extends IPagingParams {
14
+ q: string;
15
+ [key: string]: any;
16
+ }
17
+
18
+ export interface ISearchRequestOptions extends IRequestOptions {
19
+ searchForm?: ISearchRequest;
20
+ }
21
+
22
+ /**
23
+ * Options to pass through when searching for items.
24
+ */
25
+ export interface ISearchResult {
26
+ query: string; // matches the api's form param
27
+ total: number;
28
+ start: number;
29
+ num: number;
30
+ nextStart: number;
31
+ results: IItem[];
32
+ }
33
+
34
+ /**
35
+ * Search for items via the portal api
36
+ *
37
+ * ```js
38
+ * import { searchItems } from '@esri/arcgis-rest-items';
39
+ *
40
+ * searchItems('water')
41
+ * .then((results) => {
42
+ * console.log(results.total); // 355
43
+ * })
44
+ * ```
45
+ *
46
+ * @param search - A string or RequestOptions object to pass through to the endpoint.
47
+ * @returns A Promise that will resolve with the data from the response.
48
+ */
49
+ export function searchItems(
50
+ search: string | ISearchRequestOptions
51
+ ): Promise<ISearchResult> {
52
+ let options: ISearchRequestOptions = {
53
+ httpMethod: "GET",
54
+ params: {}
55
+ };
56
+
57
+ if (typeof search === "string") {
58
+ options.params.q = search;
59
+ } else {
60
+ // mixin user supplied requestOptions with defaults
61
+ options = {
62
+ ...options,
63
+ ...search
64
+ };
65
+
66
+ // mixin arbitrary request parameters with search form
67
+ options.params = {
68
+ ...search.params,
69
+ ...search.searchForm
70
+ };
71
+ }
72
+
73
+ // construct the search url
74
+ const url = `${getPortalUrl(options)}/search`;
75
+
76
+ // send the request
77
+ return request(url, options);
78
+ }
@@ -0,0 +1,134 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { request, getPortalUrl } from "@esri/arcgis-rest-request";
5
+
6
+ import { IItemUpdate } from "@esri/arcgis-rest-common-types";
7
+
8
+ import {
9
+ IItemCrudRequestOptions,
10
+ IItemMoveResponse,
11
+ IItemResourceRequestOptions,
12
+ IItemUpdateResponse,
13
+ serializeItem,
14
+ determineOwner
15
+ } from "./helpers";
16
+
17
+ export interface IItemUpdateRequestOptions extends IItemCrudRequestOptions {
18
+ item: IItemUpdate;
19
+ }
20
+
21
+ export interface IItemMoveRequestOptions extends IItemCrudRequestOptions {
22
+ /**
23
+ * Alphanumeric id of item to be moved.
24
+ */
25
+ itemId: string;
26
+ /**
27
+ * Alphanumeric id of folder to house moved item. If null, empty, or "/", the destination is the
28
+ * root folder.
29
+ */
30
+ folderId?: string;
31
+ }
32
+
33
+ /**
34
+ * Update an Item
35
+ *
36
+ * * ```js
37
+ * import { updateItem } from '@esri/arcgis-rest-items';
38
+ *
39
+ * updateItem({
40
+ * authentication: userSession,
41
+ * item: {
42
+ * id: "3ef",
43
+ * description: "A three hour tour"
44
+ * }
45
+ * })
46
+ * ```
47
+ *
48
+ * @param item - The item to update.
49
+ * @param requestOptions - Options for the request.
50
+ * @returns A Promise that updates an item.
51
+ */
52
+ export function updateItem(
53
+ requestOptions: IItemUpdateRequestOptions
54
+ ): Promise<IItemUpdateResponse> {
55
+ const owner = determineOwner(requestOptions);
56
+ const url = `${getPortalUrl(requestOptions)}/content/users/${owner}/items/${
57
+ requestOptions.item.id
58
+ }/update`;
59
+
60
+ // serialize the item into something Portal will accept
61
+ requestOptions.params = {
62
+ ...requestOptions.params,
63
+ ...serializeItem(requestOptions.item)
64
+ };
65
+
66
+ return request(url, requestOptions);
67
+ }
68
+
69
+ /**
70
+ * Update a resource associated with an item
71
+ *
72
+ * @param requestOptions - Options for the request
73
+ * @returns A Promise that updates an item resource.
74
+ */
75
+ export function updateItemResource(
76
+ requestOptions: IItemResourceRequestOptions
77
+ ): Promise<any> {
78
+ const owner = determineOwner(requestOptions);
79
+ const url = `${getPortalUrl(requestOptions)}/content/users/${owner}/items/${
80
+ requestOptions.id
81
+ }/updateResources`;
82
+
83
+ // mix in user supplied params
84
+ requestOptions.params = {
85
+ file: requestOptions.resource,
86
+ fileName: requestOptions.name,
87
+ text: requestOptions.content,
88
+ ...requestOptions.params
89
+ };
90
+
91
+ // only override whatever access was specified previously if 'private' was passed explicitly
92
+ if (typeof requestOptions.private !== "undefined") {
93
+ requestOptions.params.access = requestOptions.private
94
+ ? "private"
95
+ : "inherit";
96
+ }
97
+
98
+ return request(url, requestOptions);
99
+ }
100
+
101
+ /**
102
+ * Move an item to a folder
103
+ *
104
+ * ```js
105
+ * import { moveItem } from '@esri/arcgis-rest-items';
106
+ *
107
+ * moveItem({
108
+ * itemId: "3ef",
109
+ * folderId: "7c5",
110
+ * authentication: userSession
111
+ * }) ```
112
+ *
113
+ * @param requestOptions - Options for the request
114
+ * @returns A Promise that resolves with owner and folder details once the move has been completed
115
+ */
116
+ export function moveItem(
117
+ requestOptions: IItemMoveRequestOptions
118
+ ): Promise<IItemMoveResponse> {
119
+ const owner = determineOwner(requestOptions);
120
+ const url = `${getPortalUrl(requestOptions)}/content/users/${owner}/items/${
121
+ requestOptions.itemId
122
+ }/move`;
123
+
124
+ let folderId = requestOptions.folderId;
125
+ if (!folderId) {
126
+ folderId = "/";
127
+ }
128
+ requestOptions.params = {
129
+ folder: folderId,
130
+ ...requestOptions.params
131
+ };
132
+
133
+ return request(url, requestOptions);
134
+ }
@@ -0,0 +1,256 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import * as fetchMock from "fetch-mock";
5
+
6
+ import { attachmentFile } from "../../arcgis-rest-feature-service/test/attachments.test";
7
+
8
+ import { addItemJsonData, addItemData, addItemResource } from "../src/add";
9
+
10
+ import { ItemSuccessResponse } from "./mocks/item";
11
+
12
+ import { UserSession } from "@esri/arcgis-rest-auth";
13
+ import { TOMORROW } from "@esri/arcgis-rest-auth/test/utils";
14
+ import { encodeParam } from "@esri/arcgis-rest-request";
15
+
16
+ describe("search", () => {
17
+ afterEach(fetchMock.restore);
18
+
19
+ describe("Authenticated methods", () => {
20
+ // setup a UserSession to use in all these tests
21
+ const MOCK_USER_SESSION = new UserSession({
22
+ clientId: "clientId",
23
+ redirectUri: "https://example-app.com/redirect-uri",
24
+ token: "fake-token",
25
+ tokenExpires: TOMORROW,
26
+ refreshToken: "refreshToken",
27
+ refreshTokenExpires: TOMORROW,
28
+ refreshTokenTTL: 1440,
29
+ username: "casey",
30
+ password: "123456",
31
+ portal: "https://myorg.maps.arcgis.com/sharing/rest"
32
+ });
33
+
34
+ const MOCK_USER_REQOPTS = {
35
+ authentication: MOCK_USER_SESSION
36
+ };
37
+
38
+ it("should add data to an item", done => {
39
+ fetchMock.once("*", ItemSuccessResponse);
40
+ const fakeData = {
41
+ values: {
42
+ key: "someValue"
43
+ }
44
+ };
45
+ // addItemJsonData("3ef", "dbouwman", fakeData, MOCK_REQOPTS)
46
+ addItemJsonData({
47
+ id: "3ef",
48
+ owner: "dbouwman",
49
+ data: fakeData,
50
+ ...MOCK_USER_REQOPTS
51
+ })
52
+ .then(response => {
53
+ expect(fetchMock.called()).toEqual(true);
54
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
55
+ expect(url).toEqual(
56
+ "https://myorg.maps.arcgis.com/sharing/rest/content/users/dbouwman/items/3ef/update"
57
+ );
58
+ expect(options.method).toBe("POST");
59
+
60
+ expect(options.body).toContain("f=json");
61
+ expect(options.body).toContain("token=fake-token");
62
+ expect(options.body).toContain(
63
+ encodeParam("text", JSON.stringify(fakeData))
64
+ );
65
+
66
+ done();
67
+ })
68
+ .catch(e => {
69
+ fail(e);
70
+ });
71
+ });
72
+
73
+ it("should add data to an item, no owner passed", done => {
74
+ fetchMock.once("*", ItemSuccessResponse);
75
+ const fakeData = {
76
+ values: {
77
+ key: "someValue"
78
+ }
79
+ };
80
+ // addItemJsonData("3ef", "dbouwman", fakeData, MOCK_REQOPTS)
81
+ addItemJsonData({
82
+ id: "3ef",
83
+ data: fakeData,
84
+ ...MOCK_USER_REQOPTS
85
+ })
86
+ .then(response => {
87
+ expect(fetchMock.called()).toEqual(true);
88
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
89
+ expect(url).toEqual(
90
+ "https://myorg.maps.arcgis.com/sharing/rest/content/users/casey/items/3ef/update"
91
+ );
92
+ expect(options.method).toBe("POST");
93
+
94
+ expect(options.body).toContain("f=json");
95
+ expect(options.body).toContain("token=fake-token");
96
+ expect(options.body).toContain(
97
+ encodeParam("text", JSON.stringify(fakeData))
98
+ );
99
+
100
+ done();
101
+ })
102
+ .catch(e => {
103
+ fail(e);
104
+ });
105
+ });
106
+
107
+ it("should add data to an item, extra parameters", done => {
108
+ fetchMock.once("*", ItemSuccessResponse);
109
+ const fakeData = {
110
+ values: {
111
+ key: "someValue"
112
+ }
113
+ };
114
+ // addItemJsonData("3ef", "dbouwman", fakeData, MOCK_REQOPTS)
115
+ addItemJsonData({
116
+ id: "3ef",
117
+ data: fakeData,
118
+ ...MOCK_USER_REQOPTS,
119
+ params: {
120
+ relationshipType: "WMA2Code"
121
+ }
122
+ })
123
+ .then(response => {
124
+ expect(fetchMock.called()).toEqual(true);
125
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
126
+ expect(url).toEqual(
127
+ "https://myorg.maps.arcgis.com/sharing/rest/content/users/casey/items/3ef/update"
128
+ );
129
+ expect(options.method).toBe("POST");
130
+ expect(options.body).toContain("relationshipType=WMA2Code");
131
+ expect(options.body).toContain("f=json");
132
+ expect(options.body).toContain("token=fake-token");
133
+ expect(options.body).toContain(
134
+ encodeParam("text", JSON.stringify(fakeData))
135
+ );
136
+
137
+ done();
138
+ })
139
+ .catch(e => {
140
+ fail(e);
141
+ });
142
+ });
143
+
144
+ it("should add binary item data by id", done => {
145
+ fetchMock.once("*", {
146
+ success: true
147
+ });
148
+
149
+ const file = attachmentFile();
150
+
151
+ addItemData({
152
+ id: "3ef",
153
+ // File() is only available in the browser
154
+ data: file,
155
+ ...MOCK_USER_REQOPTS
156
+ })
157
+ .then(() => {
158
+ expect(fetchMock.called()).toEqual(true);
159
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
160
+ expect(url).toEqual(
161
+ "https://myorg.maps.arcgis.com/sharing/rest/content/users/casey/items/3ef/update"
162
+ );
163
+ expect(options.method).toBe("POST");
164
+ expect(options.body instanceof FormData).toBeTruthy();
165
+ const params = options.body as FormData;
166
+ if (params.get) {
167
+ expect(params.get("token")).toEqual("fake-token");
168
+ expect(params.get("f")).toEqual("json");
169
+ expect(params.get("file")).toEqual(file);
170
+ }
171
+
172
+ done();
173
+ })
174
+ .catch(e => {
175
+ fail(e);
176
+ });
177
+ });
178
+
179
+ it("should add a binary resource to an item", done => {
180
+ fetchMock.once("*", {
181
+ success: true
182
+ });
183
+
184
+ const file = attachmentFile();
185
+
186
+ addItemResource({
187
+ id: "3ef",
188
+ // File() is only available in the browser
189
+ resource: file,
190
+ name: "thebigkahuna",
191
+ ...MOCK_USER_REQOPTS
192
+ })
193
+ .then(() => {
194
+ expect(fetchMock.called()).toEqual(true);
195
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
196
+ expect(url).toEqual(
197
+ "https://myorg.maps.arcgis.com/sharing/rest/content/users/casey/items/3ef/addResources"
198
+ );
199
+ expect(options.method).toBe("POST");
200
+ expect(options.body instanceof FormData).toBeTruthy();
201
+ const params = options.body as FormData;
202
+ if (params.get) {
203
+ expect(params.get("token")).toEqual("fake-token");
204
+ expect(params.get("f")).toEqual("json");
205
+ expect(params.get("file")).toEqual(file);
206
+ expect(params.get("access")).toEqual("inherit");
207
+ expect(params.get("fileName")).toEqual("thebigkahuna");
208
+ }
209
+
210
+ done();
211
+ })
212
+ .catch(e => {
213
+ fail(e);
214
+ });
215
+ });
216
+
217
+ it("should add a binary resource to a secret item", done => {
218
+ fetchMock.once("*", {
219
+ success: true
220
+ });
221
+
222
+ const file = attachmentFile();
223
+
224
+ addItemResource({
225
+ id: "3ef",
226
+ // File() is only available in the browser
227
+ resource: file,
228
+ name: "thebigkahuna",
229
+ private: true,
230
+ ...MOCK_USER_REQOPTS
231
+ })
232
+ .then(() => {
233
+ expect(fetchMock.called()).toEqual(true);
234
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
235
+ expect(url).toEqual(
236
+ "https://myorg.maps.arcgis.com/sharing/rest/content/users/casey/items/3ef/addResources"
237
+ );
238
+ expect(options.method).toBe("POST");
239
+ expect(options.body instanceof FormData).toBeTruthy();
240
+ const params = options.body as FormData;
241
+ if (params.get) {
242
+ expect(params.get("token")).toEqual("fake-token");
243
+ expect(params.get("f")).toEqual("json");
244
+ expect(params.get("file")).toEqual(file);
245
+ expect(params.get("access")).toEqual("private");
246
+ expect(params.get("fileName")).toEqual("thebigkahuna");
247
+ }
248
+
249
+ done();
250
+ })
251
+ .catch(e => {
252
+ fail(e);
253
+ });
254
+ });
255
+ }); // auth requests
256
+ });