ducimusipsa 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 (307) hide show
  1. package/.prettierignore +2 -0
  2. package/.travis.yml +34 -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 +180 -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 +115 -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 +38 -0
  22. package/demos/express/README.md +15 -0
  23. package/demos/express/config.json.template +3 -0
  24. package/demos/express/package-lock.json +428 -0
  25. package/demos/express/package.json +18 -0
  26. package/demos/express/server.js +33 -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 +25 -0
  38. package/demos/jsapi-integration/config.js +6 -0
  39. package/demos/jsapi-integration/index.html +85 -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 +14 -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 +303 -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 +41 -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 +129 -0
  104. package/packages/arcgis-rest-auth/README.md +67 -0
  105. package/packages/arcgis-rest-auth/package-lock.json +11 -0
  106. package/packages/arcgis-rest-auth/package.json +53 -0
  107. package/packages/arcgis-rest-auth/src/ApplicationSession.ts +108 -0
  108. package/packages/arcgis-rest-auth/src/UserSession.ts +880 -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 +1005 -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/README.md +57 -0
  120. package/packages/arcgis-rest-common/package-lock.json +11 -0
  121. package/packages/arcgis-rest-common/package.json +41 -0
  122. package/packages/arcgis-rest-common/src/index.ts +10 -0
  123. package/packages/arcgis-rest-common/src/types/feature.ts +14 -0
  124. package/packages/arcgis-rest-common/src/types/geometry.ts +47 -0
  125. package/packages/arcgis-rest-common/src/types/symbol.ts +21 -0
  126. package/packages/arcgis-rest-common/src/util/location.ts +19 -0
  127. package/packages/arcgis-rest-common/test/location.test.ts +73 -0
  128. package/packages/arcgis-rest-common/tsconfig.json +6 -0
  129. package/packages/arcgis-rest-common-types/README.md +64 -0
  130. package/packages/arcgis-rest-common-types/package.json +40 -0
  131. package/packages/arcgis-rest-common-types/src/group.ts +54 -0
  132. package/packages/arcgis-rest-common-types/src/index.ts +469 -0
  133. package/packages/arcgis-rest-common-types/src/item.ts +47 -0
  134. package/packages/arcgis-rest-common-types/src/webmap.ts +1267 -0
  135. package/packages/arcgis-rest-common-types/tsconfig.json +11 -0
  136. package/packages/arcgis-rest-feature-service/README.md +73 -0
  137. package/packages/arcgis-rest-feature-service/package-lock.json +11 -0
  138. package/packages/arcgis-rest-feature-service/package.json +53 -0
  139. package/packages/arcgis-rest-feature-service/src/add.ts +90 -0
  140. package/packages/arcgis-rest-feature-service/src/addAttachment.ts +64 -0
  141. package/packages/arcgis-rest-feature-service/src/decodeValues.ts +129 -0
  142. package/packages/arcgis-rest-feature-service/src/delete.ts +97 -0
  143. package/packages/arcgis-rest-feature-service/src/deleteAttachments.ts +67 -0
  144. package/packages/arcgis-rest-feature-service/src/getAttachments.ts +64 -0
  145. package/packages/arcgis-rest-feature-service/src/getLayer.ts +27 -0
  146. package/packages/arcgis-rest-feature-service/src/helpers.ts +50 -0
  147. package/packages/arcgis-rest-feature-service/src/index.ts +14 -0
  148. package/packages/arcgis-rest-feature-service/src/query.ts +183 -0
  149. package/packages/arcgis-rest-feature-service/src/queryRelated.ts +94 -0
  150. package/packages/arcgis-rest-feature-service/src/update.ts +90 -0
  151. package/packages/arcgis-rest-feature-service/src/updateAttachment.ts +73 -0
  152. package/packages/arcgis-rest-feature-service/test/attachments.test.ts +203 -0
  153. package/packages/arcgis-rest-feature-service/test/crud.test.ts +263 -0
  154. package/packages/arcgis-rest-feature-service/test/decodeValues.test.ts +67 -0
  155. package/packages/arcgis-rest-feature-service/test/getLayer.test.ts +31 -0
  156. package/packages/arcgis-rest-feature-service/test/mocks/cvdQueryResponse.ts +225 -0
  157. package/packages/arcgis-rest-feature-service/test/mocks/feature.ts +281 -0
  158. package/packages/arcgis-rest-feature-service/test/mocks/fields.ts +779 -0
  159. package/packages/arcgis-rest-feature-service/test/mocks/foo.txt +1 -0
  160. package/packages/arcgis-rest-feature-service/test/mocks/service.ts +259 -0
  161. package/packages/arcgis-rest-feature-service/test/query.test.ts +140 -0
  162. package/packages/arcgis-rest-feature-service/tsconfig.json +6 -0
  163. package/packages/arcgis-rest-feature-service-admin/README.md +69 -0
  164. package/packages/arcgis-rest-feature-service-admin/package-lock.json +11 -0
  165. package/packages/arcgis-rest-feature-service-admin/package.json +56 -0
  166. package/packages/arcgis-rest-feature-service-admin/src/addTo.ts +74 -0
  167. package/packages/arcgis-rest-feature-service-admin/src/create.ts +207 -0
  168. package/packages/arcgis-rest-feature-service-admin/src/index.ts +2 -0
  169. package/packages/arcgis-rest-feature-service-admin/test/addTo.test.ts +353 -0
  170. package/packages/arcgis-rest-feature-service-admin/test/create.test.ts +412 -0
  171. package/packages/arcgis-rest-feature-service-admin/test/mocks/layerDefinition.ts +79 -0
  172. package/packages/arcgis-rest-feature-service-admin/test/mocks/move.ts +14 -0
  173. package/packages/arcgis-rest-feature-service-admin/test/mocks/service.ts +72 -0
  174. package/packages/arcgis-rest-feature-service-admin/tsconfig.json +6 -0
  175. package/packages/arcgis-rest-geocoder/README.md +83 -0
  176. package/packages/arcgis-rest-geocoder/package-lock.json +11 -0
  177. package/packages/arcgis-rest-geocoder/package.json +55 -0
  178. package/packages/arcgis-rest-geocoder/src/bulk.ts +102 -0
  179. package/packages/arcgis-rest-geocoder/src/geocode.ts +130 -0
  180. package/packages/arcgis-rest-geocoder/src/helpers.ts +80 -0
  181. package/packages/arcgis-rest-geocoder/src/index.ts +8 -0
  182. package/packages/arcgis-rest-geocoder/src/reverse.ts +83 -0
  183. package/packages/arcgis-rest-geocoder/src/suggest.ts +69 -0
  184. package/packages/arcgis-rest-geocoder/test/bulk.test.ts +113 -0
  185. package/packages/arcgis-rest-geocoder/test/geocode.test.ts +176 -0
  186. package/packages/arcgis-rest-geocoder/test/helpers.test.ts +111 -0
  187. package/packages/arcgis-rest-geocoder/test/mocks/responses.ts +629 -0
  188. package/packages/arcgis-rest-geocoder/test/reverse.test.ts +126 -0
  189. package/packages/arcgis-rest-geocoder/test/suggest.test.ts +98 -0
  190. package/packages/arcgis-rest-geocoder/tsconfig.json +6 -0
  191. package/packages/arcgis-rest-groups/README.md +67 -0
  192. package/packages/arcgis-rest-groups/package-lock.json +11 -0
  193. package/packages/arcgis-rest-groups/package.json +55 -0
  194. package/packages/arcgis-rest-groups/src/create.ts +34 -0
  195. package/packages/arcgis-rest-groups/src/get.ts +95 -0
  196. package/packages/arcgis-rest-groups/src/helpers.ts +27 -0
  197. package/packages/arcgis-rest-groups/src/index.ts +11 -0
  198. package/packages/arcgis-rest-groups/src/notification.ts +77 -0
  199. package/packages/arcgis-rest-groups/src/protect.ts +40 -0
  200. package/packages/arcgis-rest-groups/src/remove.ts +23 -0
  201. package/packages/arcgis-rest-groups/src/search.ts +64 -0
  202. package/packages/arcgis-rest-groups/src/update.ts +36 -0
  203. package/packages/arcgis-rest-groups/test/crud.test.ts +134 -0
  204. package/packages/arcgis-rest-groups/test/get.test.ts +101 -0
  205. package/packages/arcgis-rest-groups/test/mocks/responses.ts +141 -0
  206. package/packages/arcgis-rest-groups/test/notification.test.ts +102 -0
  207. package/packages/arcgis-rest-groups/test/protect.test.ts +64 -0
  208. package/packages/arcgis-rest-groups/test/search.test.ts +85 -0
  209. package/packages/arcgis-rest-groups/tsconfig.json +6 -0
  210. package/packages/arcgis-rest-items/README.md +69 -0
  211. package/packages/arcgis-rest-items/package-lock.json +11 -0
  212. package/packages/arcgis-rest-items/package.json +55 -0
  213. package/packages/arcgis-rest-items/src/add.ts +103 -0
  214. package/packages/arcgis-rest-items/src/create.ts +110 -0
  215. package/packages/arcgis-rest-items/src/get.ts +79 -0
  216. package/packages/arcgis-rest-items/src/helpers.ts +147 -0
  217. package/packages/arcgis-rest-items/src/index.ts +11 -0
  218. package/packages/arcgis-rest-items/src/protect.ts +38 -0
  219. package/packages/arcgis-rest-items/src/remove.ts +58 -0
  220. package/packages/arcgis-rest-items/src/search.ts +78 -0
  221. package/packages/arcgis-rest-items/src/update.ts +134 -0
  222. package/packages/arcgis-rest-items/test/add.test.ts +256 -0
  223. package/packages/arcgis-rest-items/test/create.test.ts +371 -0
  224. package/packages/arcgis-rest-items/test/get.test.ts +181 -0
  225. package/packages/arcgis-rest-items/test/mocks/foo.zip +0 -0
  226. package/packages/arcgis-rest-items/test/mocks/item.ts +35 -0
  227. package/packages/arcgis-rest-items/test/mocks/resources.ts +31 -0
  228. package/packages/arcgis-rest-items/test/mocks/search.ts +62 -0
  229. package/packages/arcgis-rest-items/test/protect.test.ts +122 -0
  230. package/packages/arcgis-rest-items/test/remove.test.ts +161 -0
  231. package/packages/arcgis-rest-items/test/search.test.ts +159 -0
  232. package/packages/arcgis-rest-items/test/update.test.ts +450 -0
  233. package/packages/arcgis-rest-items/tsconfig.json +6 -0
  234. package/packages/arcgis-rest-request/README.md +68 -0
  235. package/packages/arcgis-rest-request/package-lock.json +11 -0
  236. package/packages/arcgis-rest-request/package.json +45 -0
  237. package/packages/arcgis-rest-request/src/index.ts +15 -0
  238. package/packages/arcgis-rest-request/src/request.ts +358 -0
  239. package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +76 -0
  240. package/packages/arcgis-rest-request/src/utils/ErrorTypes.ts +29 -0
  241. package/packages/arcgis-rest-request/src/utils/append-custom-params.ts +29 -0
  242. package/packages/arcgis-rest-request/src/utils/encode-form-data.ts +34 -0
  243. package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +23 -0
  244. package/packages/arcgis-rest-request/src/utils/get-portal-url.ts +25 -0
  245. package/packages/arcgis-rest-request/src/utils/get-portal.ts +45 -0
  246. package/packages/arcgis-rest-request/src/utils/params.ts +52 -0
  247. package/packages/arcgis-rest-request/src/utils/process-params.ts +99 -0
  248. package/packages/arcgis-rest-request/src/utils/retryAuthError.ts +9 -0
  249. package/packages/arcgis-rest-request/src/utils/warn.ts +11 -0
  250. package/packages/arcgis-rest-request/test/mocks/errors.ts +68 -0
  251. package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +13 -0
  252. package/packages/arcgis-rest-request/test/mocks/portal.ts +112 -0
  253. package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +41 -0
  254. package/packages/arcgis-rest-request/test/mocks/webmap.ts +41 -0
  255. package/packages/arcgis-rest-request/test/request.test.ts +323 -0
  256. package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +170 -0
  257. package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +51 -0
  258. package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +111 -0
  259. package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +133 -0
  260. package/packages/arcgis-rest-request/test/utils/get-portal-url.test.ts +37 -0
  261. package/packages/arcgis-rest-request/test/utils/portal.test.ts +97 -0
  262. package/packages/arcgis-rest-request/test/utils/process-params.test.ts +193 -0
  263. package/packages/arcgis-rest-request/tsconfig.json +6 -0
  264. package/packages/arcgis-rest-routing/README.md +71 -0
  265. package/packages/arcgis-rest-routing/package-lock.json +11 -0
  266. package/packages/arcgis-rest-routing/package.json +54 -0
  267. package/packages/arcgis-rest-routing/src/helpers.ts +16 -0
  268. package/packages/arcgis-rest-routing/src/index.ts +4 -0
  269. package/packages/arcgis-rest-routing/src/solveRoute.ts +102 -0
  270. package/packages/arcgis-rest-routing/test/mocks/responses.ts +825 -0
  271. package/packages/arcgis-rest-routing/test/solveRoute.test.ts +267 -0
  272. package/packages/arcgis-rest-routing/tsconfig.json +6 -0
  273. package/packages/arcgis-rest-sharing/README.md +70 -0
  274. package/packages/arcgis-rest-sharing/package-lock.json +11 -0
  275. package/packages/arcgis-rest-sharing/package.json +60 -0
  276. package/packages/arcgis-rest-sharing/src/access.ts +85 -0
  277. package/packages/arcgis-rest-sharing/src/group-sharing.ts +211 -0
  278. package/packages/arcgis-rest-sharing/src/helpers.ts +82 -0
  279. package/packages/arcgis-rest-sharing/src/index.ts +5 -0
  280. package/packages/arcgis-rest-sharing/test/access.test.ts +154 -0
  281. package/packages/arcgis-rest-sharing/test/group-sharing.test.ts +566 -0
  282. package/packages/arcgis-rest-sharing/test/helpers.test.ts +55 -0
  283. package/packages/arcgis-rest-sharing/test/mocks/sharing.ts +18 -0
  284. package/packages/arcgis-rest-sharing/tsconfig.json +6 -0
  285. package/packages/arcgis-rest-users/README.md +74 -0
  286. package/packages/arcgis-rest-users/package-lock.json +11 -0
  287. package/packages/arcgis-rest-users/package.json +54 -0
  288. package/packages/arcgis-rest-users/src/get.ts +69 -0
  289. package/packages/arcgis-rest-users/src/index.ts +6 -0
  290. package/packages/arcgis-rest-users/src/invitation.ts +166 -0
  291. package/packages/arcgis-rest-users/src/notification.ts +73 -0
  292. package/packages/arcgis-rest-users/test/get.test.ts +99 -0
  293. package/packages/arcgis-rest-users/test/invitation.test.ts +169 -0
  294. package/packages/arcgis-rest-users/test/mocks/invitation.ts +70 -0
  295. package/packages/arcgis-rest-users/test/mocks/notification.ts +34 -0
  296. package/packages/arcgis-rest-users/test/mocks/user.ts +173 -0
  297. package/packages/arcgis-rest-users/test/notification.test.ts +83 -0
  298. package/packages/arcgis-rest-users/tsconfig.json +6 -0
  299. package/support/changelog.js +394 -0
  300. package/support/deploy-doc-site.js +16 -0
  301. package/support/dev.sh +6 -0
  302. package/support/publish.sh +43 -0
  303. package/support/test-helpers.js +8 -0
  304. package/tsconfig.json +69 -0
  305. package/tslint.json +16 -0
  306. package/umd-base-profile.js +82 -0
  307. package/umd-production-profile.js +13 -0
@@ -0,0 +1,133 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { encodeFormData } from "../../src/utils/encode-form-data";
5
+ import {
6
+ requiresFormData,
7
+ processParams
8
+ } from "../../src/utils/process-params";
9
+ import { attachmentFile } from "../../../arcgis-rest-feature-service/test/attachments.test";
10
+
11
+ describe("encodeFormData", () => {
12
+ it("should encode in form data for multipart file requests", () => {
13
+ const binaryObj = attachmentFile();
14
+
15
+ const formData = encodeFormData({ binary: binaryObj });
16
+ expect(formData instanceof FormData).toBeTruthy();
17
+
18
+ const data = formData as FormData;
19
+ if (data.get) {
20
+ expect(data.get("binary") instanceof File).toBeTruthy();
21
+ expect((data.get("binary") as File).name).toBe("foo.txt");
22
+ }
23
+ });
24
+
25
+ it("should encode in form data for multipart blob requests", () => {
26
+ const binaryObj =
27
+ typeof Blob !== "undefined"
28
+ ? new Blob([], {
29
+ type: "text/plain"
30
+ })
31
+ : Buffer.from("");
32
+
33
+ const formData = encodeFormData({ binary: binaryObj });
34
+ expect(formData instanceof FormData).toBeTruthy();
35
+
36
+ const data = formData as FormData;
37
+ if (data.get) {
38
+ expect(data.get("binary") instanceof File).toBeTruthy();
39
+ expect((data.get("binary") as File).name).toBe("binary");
40
+ }
41
+ });
42
+
43
+ it("should encode as query string for basic types", () => {
44
+ const dateValue = 1471417200000;
45
+
46
+ // null, undefined, function are excluded. If you want to send an empty key you need to send an empty string "".
47
+ // See https://github.com/Esri/arcgis-rest-js/issues/18
48
+ const params = {
49
+ myArray1: new Array(8),
50
+ myArray2: [1, 2, 4, 16],
51
+ myArray3: [{ a: 1, b: 2 }, { c: "abc" }],
52
+ myDate: new Date(dateValue),
53
+ myFunction: () => {
54
+ return 3.1415;
55
+ },
56
+ myBoolean: true,
57
+ myString: "Hello, world!",
58
+ myEmptyString: "",
59
+ myNumber: 380
60
+ };
61
+
62
+ expect(requiresFormData(params)).toBeFalsy();
63
+
64
+ const formData = processParams(params);
65
+ expect(typeof formData).toBe("object");
66
+ expect(formData.myArray1).toBe(",,,,,,,");
67
+ expect(formData.myArray2).toBe("1,2,4,16");
68
+ expect(formData.myArray3).toBe('[{"a":1,"b":2},{"c":"abc"}]');
69
+ expect(formData.myDate).toBe(dateValue);
70
+ expect(formData.myBoolean).toBeTruthy();
71
+ expect(formData.myString).toBe("Hello, world!");
72
+ expect(formData.myEmptyString).toBe("");
73
+ expect(formData.myNumber).toBe(380);
74
+
75
+ const encodedFormData = encodeFormData(params);
76
+ expect(typeof encodedFormData).toBe("string");
77
+ expect(encodedFormData).toBe(
78
+ "myArray1=%2C%2C%2C%2C%2C%2C%2C&" +
79
+ "myArray2=1%2C2%2C4%2C16&" +
80
+ "myArray3=%5B%7B%22a%22%3A1%2C%22b%22%3A2%7D%2C%7B%22c%22%3A%22abc%22%7D%5D&" +
81
+ "myDate=1471417200000&" +
82
+ "myBoolean=true&" +
83
+ "myString=Hello%2C%20world!&" +
84
+ "myEmptyString=&" +
85
+ "myNumber=380"
86
+ );
87
+ });
88
+
89
+ it("should switch to form data if any item is not a basic type", () => {
90
+ const dateValue = 1471417200000;
91
+ const file = attachmentFile();
92
+ if (!file.name) {
93
+ // The file's name is used for adding files to a form, so supply a name when we're in a testing
94
+ // environment that doesn't support File (attachmentFile creates a File with the name "foo.txt"
95
+ // if File is supported and a file stream otherwise)
96
+ file.name = "foo.txt";
97
+ }
98
+
99
+ // null, undefined, function are excluded. If you want to send an empty key you need to send an empty string "".
100
+ // See https://github.com/Esri/arcgis-rest-js/issues/18
101
+ const params = {
102
+ myArray1: new Array(8),
103
+ myArray2: [1, 2, 4, 16],
104
+ myArray3: [{ a: 1, b: 2 }, { c: "abc" }],
105
+ myDate: new Date(dateValue),
106
+ myFunction: () => {
107
+ return 3.1415;
108
+ },
109
+ myBoolean: true,
110
+ myString: "Hello, world!",
111
+ myEmptyString: "",
112
+ myNumber: 380,
113
+ file
114
+ };
115
+
116
+ expect(requiresFormData(params)).toBeTruthy();
117
+
118
+ const formData = processParams(params);
119
+ expect(typeof formData).toBe("object");
120
+ expect(formData.myArray1).toBe(",,,,,,,");
121
+ expect(formData.myArray2).toBe("1,2,4,16");
122
+ expect(formData.myArray3).toBe('[{"a":1,"b":2},{"c":"abc"}]');
123
+ expect(formData.myDate).toBe(dateValue);
124
+ expect(formData.myBoolean).toBeTruthy();
125
+ expect(formData.myString).toBe("Hello, world!");
126
+ expect(formData.myEmptyString).toBe("");
127
+ expect(formData.myNumber).toBe(380);
128
+ expect(typeof formData.file).toBe("object");
129
+
130
+ const encodedFormData = encodeFormData(params);
131
+ expect(encodedFormData instanceof FormData).toBeTruthy();
132
+ });
133
+ });
@@ -0,0 +1,37 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { getPortalUrl } from "../../src/index";
5
+
6
+ describe("getPortalUrl", () => {
7
+ it("should default to arcgis.com", () => {
8
+ const url = getPortalUrl();
9
+ expect(url).toEqual("https://www.arcgis.com/sharing/rest");
10
+ });
11
+ it("should use the portal from authorization if passed", () => {
12
+ const requestOptions = {
13
+ authentication: {
14
+ portal: "https://foo.com/arcgis/sharing/rest",
15
+ getToken() {
16
+ return Promise.resolve("fake");
17
+ }
18
+ }
19
+ };
20
+ const url = getPortalUrl(requestOptions);
21
+ expect(url).toEqual("https://foo.com/arcgis/sharing/rest");
22
+ });
23
+
24
+ it("should use the portal in the requestOptions if passed", () => {
25
+ const requestOptions = {
26
+ authentication: {
27
+ portal: "https://foo.com/arcgis/sharing/rest",
28
+ getToken() {
29
+ return Promise.resolve("fake");
30
+ }
31
+ },
32
+ portal: "https://bar.com/arcgis/sharing/rest"
33
+ };
34
+ const url = getPortalUrl(requestOptions);
35
+ expect(url).toEqual("https://bar.com/arcgis/sharing/rest");
36
+ });
37
+ });
@@ -0,0 +1,97 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { getSelf, getPortal } from "../../src/index";
5
+
6
+ import { PortalResponse } from "./../mocks/portal";
7
+
8
+ import * as fetchMock from "fetch-mock";
9
+
10
+ describe("portal", () => {
11
+ let paramsSpy: jasmine.Spy;
12
+
13
+ beforeEach(() => {
14
+ paramsSpy = spyOn(FormData.prototype, "append").and.callThrough();
15
+ });
16
+
17
+ afterAll(() => {
18
+ paramsSpy.calls.reset();
19
+ });
20
+
21
+ afterEach(fetchMock.restore);
22
+
23
+ describe("getPortal", () => {
24
+ // setup an authmgr to use in all these tests
25
+ const MOCK_AUTH = {
26
+ getToken() {
27
+ return Promise.resolve("fake-token");
28
+ },
29
+ portal: "https://myorg.maps.arcgis.com/sharing/rest"
30
+ };
31
+ const MOCK_REQOPTS = {
32
+ authentication: MOCK_AUTH
33
+ };
34
+
35
+ it("should get the portal by id", done => {
36
+ fetchMock.once("*", PortalResponse);
37
+ getPortal("5BZFaKe", MOCK_REQOPTS)
38
+ .then(response => {
39
+ expect(fetchMock.called()).toEqual(true);
40
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
41
+ expect(url).toEqual(
42
+ "https://myorg.maps.arcgis.com/sharing/rest/portals/5BZFaKe?f=json&token=fake-token"
43
+ );
44
+ expect(options.method).toBe("GET");
45
+ done();
46
+ })
47
+ .catch(e => {
48
+ fail(e);
49
+ });
50
+ });
51
+ it("should get the portal self if no id", done => {
52
+ fetchMock.once("*", PortalResponse);
53
+ getPortal(null, MOCK_REQOPTS)
54
+ .then(response => {
55
+ expect(fetchMock.called()).toEqual(true);
56
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
57
+ expect(url).toEqual(
58
+ "https://myorg.maps.arcgis.com/sharing/rest/portals/self?f=json&token=fake-token"
59
+ );
60
+ expect(options.method).toBe("GET");
61
+ done();
62
+ })
63
+ .catch(e => {
64
+ fail(e);
65
+ });
66
+ });
67
+ });
68
+ describe("getSelf", () => {
69
+ // setup an authmgr to use in all these tests
70
+ const MOCK_AUTH = {
71
+ getToken() {
72
+ return Promise.resolve("fake-token");
73
+ },
74
+ portal: "https://myorg.maps.arcgis.com/sharing/rest"
75
+ };
76
+ const MOCK_REQOPTS = {
77
+ authentication: MOCK_AUTH
78
+ };
79
+
80
+ it("should get the portal by id", done => {
81
+ fetchMock.once("*", PortalResponse);
82
+ getSelf(MOCK_REQOPTS)
83
+ .then(response => {
84
+ expect(fetchMock.called()).toEqual(true);
85
+ const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
86
+ expect(url).toEqual(
87
+ "https://myorg.maps.arcgis.com/sharing/rest/portals/self?f=json&token=fake-token"
88
+ );
89
+ expect(options.method).toBe("GET");
90
+ done();
91
+ })
92
+ .catch(e => {
93
+ fail(e);
94
+ });
95
+ });
96
+ });
97
+ });
@@ -0,0 +1,193 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { processParams, requiresFormData } from "../../src/index";
5
+
6
+ describe("processParams", () => {
7
+ it("should pass non Date, Function, Array and Object params through", () => {
8
+ const params = {
9
+ foo: "foo",
10
+ bar: 1
11
+ };
12
+
13
+ const expected = {
14
+ foo: "foo",
15
+ bar: 1
16
+ };
17
+ expect(processParams(params)).toEqual(expected);
18
+ });
19
+
20
+ it("should encode Dates as timestamps", () => {
21
+ const date = new Date();
22
+
23
+ const params = {
24
+ foo: date
25
+ };
26
+
27
+ const expected = {
28
+ foo: date.getTime()
29
+ };
30
+ expect(processParams(params)).toEqual(expected);
31
+ });
32
+
33
+ it("should not encode a function", () => {
34
+ const params = {
35
+ foo() {} // tslint:disable-line no-empty
36
+ };
37
+
38
+ expect(processParams(params)).toEqual({});
39
+ });
40
+
41
+ it("should stringify objects", () => {
42
+ const params = {
43
+ foo: {
44
+ bar: "bar"
45
+ }
46
+ };
47
+
48
+ const expected = {
49
+ foo: '{"bar":"bar"}'
50
+ };
51
+
52
+ expect(processParams(params)).toEqual(expected);
53
+ });
54
+
55
+ it("should stringify arrays of objects", () => {
56
+ const params = {
57
+ foo: [
58
+ {
59
+ bar: "bar"
60
+ }
61
+ ]
62
+ };
63
+
64
+ const expected = {
65
+ foo: '[{"bar":"bar"}]'
66
+ };
67
+
68
+ expect(processParams(params)).toEqual(expected);
69
+ });
70
+
71
+ it("should comma seperate arrays of non objects", () => {
72
+ const params = {
73
+ foo: ["bar", "baz"]
74
+ };
75
+
76
+ const expected = {
77
+ foo: "bar,baz"
78
+ };
79
+
80
+ expect(processParams(params)).toEqual(expected);
81
+ });
82
+
83
+ it("should stringify booleans", () => {
84
+ const params = {
85
+ foo: true,
86
+ bar: false
87
+ };
88
+
89
+ const expected = {
90
+ foo: "true",
91
+ bar: "false"
92
+ };
93
+
94
+ expect(processParams(params)).toEqual(expected);
95
+ });
96
+
97
+ it("should exclude null and undefined, but not a zero", () => {
98
+ const params: any = {
99
+ foo: null,
100
+ bar: undefined,
101
+ baz: 0
102
+ };
103
+
104
+ const expected = {
105
+ baz: 0
106
+ };
107
+
108
+ expect(processParams(params)).toEqual(expected);
109
+ });
110
+
111
+ it("should not require form data for simple requests", () => {
112
+ expect(
113
+ requiresFormData({
114
+ string: "string"
115
+ })
116
+ ).toBeFalsy();
117
+
118
+ expect(
119
+ requiresFormData({
120
+ number: 123
121
+ })
122
+ ).toBeFalsy();
123
+
124
+ expect(
125
+ requiresFormData({
126
+ date: new Date()
127
+ })
128
+ ).toBeFalsy();
129
+
130
+ expect(
131
+ requiresFormData({
132
+ boolean: true
133
+ })
134
+ ).toBeFalsy();
135
+
136
+ expect(
137
+ requiresFormData({
138
+ array: []
139
+ })
140
+ ).toBeFalsy();
141
+
142
+ expect(
143
+ requiresFormData({
144
+ object: {}
145
+ })
146
+ ).toBeFalsy();
147
+
148
+ expect(
149
+ requiresFormData({
150
+ fn: () => {
151
+ return;
152
+ }
153
+ })
154
+ ).toBeFalsy();
155
+
156
+ expect(
157
+ requiresFormData({
158
+ falsy: null
159
+ })
160
+ ).toBeFalsy();
161
+ });
162
+
163
+ it("should require form data for multipart requests", () => {
164
+ const binaryObj =
165
+ typeof File !== "undefined"
166
+ ? new File(["foo"], "foo.txt", {
167
+ type: "text/plain"
168
+ })
169
+ : Buffer.from("");
170
+
171
+ expect(
172
+ requiresFormData({
173
+ binary: binaryObj
174
+ })
175
+ ).toBeTruthy();
176
+ });
177
+
178
+ it("should require form data for mixed multipart requests", () => {
179
+ const binaryObj =
180
+ typeof File !== "undefined"
181
+ ? new File(["foo"], "foo.txt", {
182
+ type: "text/plain"
183
+ })
184
+ : Buffer.from("");
185
+
186
+ expect(
187
+ requiresFormData({
188
+ string: "string",
189
+ binary: binaryObj
190
+ })
191
+ ).toBeTruthy();
192
+ });
193
+ });
@@ -0,0 +1,6 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "include": [
4
+ "src/**/*.ts"
5
+ ]
6
+ }
@@ -0,0 +1,71 @@
1
+ [![npm version][npm-img]][npm-url]
2
+ [![build status][travis-img]][travis-url]
3
+ [![Coverage Status][coverage-img]][coverage-url]
4
+ [![apache licensed](https://img.shields.io/badge/license-Apache-green.svg?style=flat-square)](https://raw.githubusercontent.com/Esri/arcgis-rest-js/master/LICENSE)
5
+
6
+ [npm-img]: https://img.shields.io/npm/v/@esri/arcgis-rest-routing.svg?style=flat-square
7
+ [npm-url]: https://www.npmjs.com/package/@esri/arcgis-rest-routing
8
+ [travis-img]: https://img.shields.io/travis/Esri/arcgis-rest-js/master.svg?style=flat-square
9
+ [travis-url]: https://travis-ci.org/Esri/arcgis-rest-js
10
+ [coverage-img]: https://coveralls.io/repos/github/Esri/arcgis-rest-js/badge.svg
11
+ [coverage-url]: https://coveralls.io/github/Esri/arcgis-rest-js
12
+
13
+ # @esri/arcgis-rest-routing
14
+
15
+ > Routing helpers for [`@esri/arcgis-rest-request`](https://github.com/Esri/arcgis-rest-js).
16
+
17
+ ### Example
18
+
19
+ ```bash
20
+ npm install @esri/arcgis-rest-request
21
+ npm install @esri/arcgis-rest-common
22
+ npm install @esri/arcgis-rest-routing
23
+ ```
24
+
25
+ ```js
26
+ solveRoute({
27
+ stops: [
28
+ [-117.195677, 34.056383],
29
+ [-117.918976, 33.812092],
30
+ ],
31
+ authentication
32
+ })
33
+ .then(response)
34
+ // {routes: {features: [{attributes: { ... }, geometry:{ ... }}]}}
35
+ ```
36
+
37
+ ### [API Reference](https://esri.github.io/arcgis-rest-js/api/routing/)
38
+
39
+ ### Issues
40
+
41
+ If something isn't working the way you expected, please take a look at [previously logged issues](https://github.com/Esri/arcgis-rest-js/issues) first. Have you found a new bug? Want to request a new feature? We'd [**love**](https://github.com/Esri/arcgis-rest-js/issues/new) to hear from you.
42
+
43
+ If you're looking for help you can also post issues on [GIS Stackexchange](http://gis.stackexchange.com/questions/ask?tags=esri-oss).
44
+
45
+ ### Versioning
46
+
47
+ For transparency into the release cycle and in striving to maintain backward compatibility, @esri/arcgis-rest-js is maintained under Semantic Versioning guidelines and will adhere to these rules whenever possible.
48
+
49
+ For more information on SemVer, please visit <http://semver.org/>.
50
+
51
+ ### Contributing
52
+
53
+ Esri welcomes contributions from anyone and everyone. Please see our [guidelines for contributing](CONTRIBUTING.md).
54
+
55
+ ### License
56
+
57
+ Copyright &copy; 2018 Esri
58
+
59
+ Licensed under the Apache License, Version 2.0 (the "License");
60
+ you may not use this file except in compliance with the License.
61
+ You may obtain a copy of the License at
62
+
63
+ > http://www.apache.org/licenses/LICENSE-2.0
64
+
65
+ Unless required by applicable law or agreed to in writing, software
66
+ distributed under the License is distributed on an "AS IS" BASIS,
67
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
68
+ See the License for the specific language governing permissions and
69
+ limitations under the License.
70
+
71
+ A copy of the license is available in the repository's [LICENSE](../../LICENSE) file.
@@ -0,0 +1,11 @@
1
+ {
2
+ "requires": true,
3
+ "lockfileVersion": 1,
4
+ "dependencies": {
5
+ "tslib": {
6
+ "version": "1.9.3",
7
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
8
+ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@esri/arcgis-rest-routing",
3
+ "version": "1.14.1",
4
+ "description": "Routing helpers for @esri/arcgis-rest-request",
5
+ "main": "dist/node/index.js",
6
+ "browser": "dist/umd/routing.umd.js",
7
+ "module": "dist/esm/index.js",
8
+ "js:next": "dist/esm/index.js",
9
+ "types": "dist/esm/index.d.ts",
10
+ "license": "Apache-2.0",
11
+ "files": [
12
+ "dist/**"
13
+ ],
14
+ "dependencies": {
15
+ "tslib": "^1.9.3"
16
+ },
17
+ "devDependencies": {
18
+ "@esri/arcgis-rest-auth": "^1.14.1",
19
+ "@esri/arcgis-rest-common": "^1.14.1",
20
+ "@esri/arcgis-rest-request": "^1.14.1"
21
+ },
22
+ "peerDependencies": {
23
+ "@esri/arcgis-rest-auth": "^1.14.1",
24
+ "@esri/arcgis-rest-common": "^1.14.1",
25
+ "@esri/arcgis-rest-request": "^1.14.1"
26
+ },
27
+ "scripts": {
28
+ "prepare": "npm run build",
29
+ "build": "npm run build:node && npm run build:umd && npm run build:esm",
30
+ "build:esm": "tsc -p ./tsconfig.json --module es2015 --outDir ./dist/esm --declaration",
31
+ "build:umd": "rollup -c ../../umd-base-profile.js && rollup -c ../../umd-production-profile.js",
32
+ "build:node": "tsc -p ./tsconfig.json --module commonjs --outDir ./dist/node",
33
+ "dev:esm": "tsc -w --module es2015 --outDir ./dist/esm --declaration",
34
+ "dev:umd": "rollup -w -c ../../umd-base-profile.js",
35
+ "dev:node": "tsc -w --module commonjs --outDir ./dist/node"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "git+https://github.com/Esri/arcgis-rest-js.git"
43
+ },
44
+ "contributors": [
45
+ {
46
+ "name": "Gavin Rehkemper",
47
+ "email": "gavin@gavinr.com"
48
+ }
49
+ ],
50
+ "bugs": {
51
+ "url": "https://github.com/Esri/arcgis-rest-js/issues"
52
+ },
53
+ "homepage": "https://github.com/Esri/arcgis-rest-js#readme"
54
+ }
@@ -0,0 +1,16 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ import { IRequestOptions } from "@esri/arcgis-rest-request";
5
+
6
+ // https always
7
+ export const worldRoutingService =
8
+ "https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World/";
9
+
10
+ // nice to have: verify custom endpoints contain 'NAServer' and end in a '/'
11
+ export interface IEndpointRequestOptions extends IRequestOptions {
12
+ /**
13
+ * Any ArcGIS Routing service (example: https://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Network/USA/NAServer/Route/ ) to use for the routing service request.
14
+ */
15
+ endpoint?: string;
16
+ }
@@ -0,0 +1,4 @@
1
+ /* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
2
+ * Apache-2.0 */
3
+
4
+ export * from "./solveRoute";