delectusnon 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,394 @@
1
+ const { spawn, exec, execSync } = require("child_process");
2
+ const { inspect } = require("util");
3
+ const { resolve } = require("path");
4
+ const { writeFile } = require("fs");
5
+ const { stripIndents } = require("common-tags");
6
+ const { format } = require("date-fns");
7
+ const parseChangelog = require("changelog-parser");
8
+ const parseCommit = require("conventional-commits-parser").sync;
9
+ const nunjucks = require("nunjucks");
10
+ const _ = require("lodash");
11
+
12
+ /**
13
+ * The purpose of this file is to parse all commits since the last release tag
14
+ * v*.*.* and update the contents of CHANGELOG.md to prepare for a new release.
15
+ */
16
+
17
+ const repo = "https://github.com/Esri/arcgis-rest-js";
18
+
19
+ function getTags() {
20
+ return new Promise((resolve, reject) => {
21
+ let tags = [];
22
+ const log = spawn("git", ["tag", "-l", "v*", "--sort", "v:refname"]);
23
+
24
+ log.stdout.on("data", data => {
25
+ tags = tags.concat(data.toString().split("\n"));
26
+ });
27
+
28
+ log.on("close", code => {
29
+ resolve(_.compact(tags));
30
+ });
31
+ });
32
+ }
33
+
34
+ function getFirstCommit() {
35
+ return new Promise((resolve, reject) => {
36
+ let commits = [];
37
+ const log = spawn("git", [
38
+ "rev-list",
39
+ "--max-parents=0",
40
+ "HEAD",
41
+ "--reverse"
42
+ ]);
43
+
44
+ log.stdout.on("data", data => {
45
+ commits = commits.concat(data.toString().split("\n"));
46
+ });
47
+
48
+ log.on("close", code => {
49
+ resolve(commits[0]);
50
+ });
51
+ });
52
+ }
53
+
54
+ function getCommitData(from, to) {
55
+ return new Promise((resolve, reject) => {
56
+ const hash = "%H";
57
+ const shortHash = "%h";
58
+ const authorName = "%an";
59
+ const authorEmail = "%ae";
60
+ const date = "%aI";
61
+ const subject = "%s";
62
+ const defaultFormat = {
63
+ hash,
64
+ shortHash,
65
+ date,
66
+ subject,
67
+ author: { name: authorName, email: authorEmail }
68
+ };
69
+
70
+ const cmd = `git log ${from}..${to} --pretty=format:'${JSON.stringify(
71
+ defaultFormat
72
+ )},'`;
73
+
74
+ exec(cmd, (err, stdout, stderr) => {
75
+ if (err) return reject(err);
76
+ if (stderr) return reject(stderr);
77
+ /*
78
+ order commits from most recent to least recent
79
+
80
+ graveyard
81
+ .replace(/"returns"/g, "returns")
82
+ .replace(/\\/g, "\\\\")
83
+ */
84
+ const commits = JSON.parse("[" + stdout.slice(0, -1).replace(/"access"/g, "'access'") + "]").reverse();
85
+ const today = new Date();
86
+ resolve({
87
+ previousVersion: /v\d\.\d\.\d/.test(from)
88
+ ? from.replace("v", "")
89
+ : from,
90
+ version: to === "HEAD" ? getPackageVersion() : to.replace("v", ""),
91
+ date: format(today, "MMMM Do YYYY"),
92
+ commits
93
+ });
94
+ });
95
+ });
96
+ }
97
+
98
+ function getPackageVersion() {
99
+ return require(resolve(process.cwd(), "./lerna.json")).version;
100
+ }
101
+
102
+ function pairReleases(releases) {
103
+ return Promise.all(
104
+ releases.reduce((pairs, release, idx, allReleases) => {
105
+ const nextRelease = allReleases[idx + 1];
106
+ if (nextRelease) {
107
+ pairs.push([release, nextRelease]);
108
+ }
109
+
110
+ return pairs;
111
+ }, [])
112
+ );
113
+ }
114
+
115
+ function processCommitMessages(releaseData) {
116
+ return releaseData.map(release => {
117
+ release.commits = _(release.commits)
118
+ .map(commit => {
119
+ const parsedCommit = parseCommit(
120
+ execSync(
121
+ `git log ${commit.hash} -n1 --pretty=format:'%B'`
122
+ ).toString(),
123
+ {
124
+ mergePattern: /^Merge pull request #(\d+) from (.*)$/,
125
+ mergeCorrespondence: ["id", "source"],
126
+ noteKeywords: [
127
+ "BREAKING CHANGE",
128
+ "ISSUES CLOSED",
129
+ "AFFECTS PACKAGES"
130
+ ]
131
+ }
132
+ );
133
+
134
+ if (!parsedCommit.type || !parsedCommit.scope) {
135
+ return;
136
+ }
137
+
138
+ Object.assign(commit, parsedCommit);
139
+
140
+ const breaking = commit.notes.findIndex(
141
+ n => n.title === "BREAKING CHANGE"
142
+ );
143
+
144
+ if (breaking >= 0) {
145
+ commit.breakingChanges = commit.notes[breaking].text;
146
+ }
147
+
148
+ const issues = commit.notes.findIndex(n => n.title === "ISSUES CLOSED");
149
+
150
+ if (issues >= 0) {
151
+ const issuesClosed = commit.notes[issues].text
152
+ .replace(/\n.*/gm, "")
153
+ .replace(/\s/g, "")
154
+ .split(",")
155
+ .map(i => i.replace("#", ""));
156
+
157
+ const issuesReferenced = commit.references.map(r => r.issue);
158
+
159
+ commit.relatedIssues = _.uniq(
160
+ issuesClosed.concat(issuesReferenced)
161
+ ).map(i => {
162
+ return {
163
+ issue: i,
164
+ url: `${repo}/issues/${i}`
165
+ };
166
+ });
167
+ }
168
+ return commit;
169
+ })
170
+ .compact()
171
+ .sortBy("type")
172
+ .value();
173
+
174
+ return release;
175
+ });
176
+ }
177
+
178
+ function getPackagesForCommit(commit) {
179
+ const idx = commit.notes.findIndex(note => note.title === "AFFECTS PACKAGES");
180
+ if (idx >= 0) {
181
+ const affectedPackages = commit.notes[idx].text.split("\n");
182
+ return affectedPackages;
183
+ }
184
+ return ["Other Changes"];
185
+ }
186
+
187
+ function findReleasedPackages(releases) {
188
+ return releases.map(release => {
189
+ release.packages = release.commits.reduce((packages, commit) => {
190
+ packages = packages.concat(getPackagesForCommit(commit));
191
+ return _(packages).compact().uniq().sortBy(p => p).value();
192
+ }, []);
193
+ return release;
194
+ });
195
+ }
196
+
197
+ function hasBreakingChanges(commit) {
198
+ return commit.notes.find(n => n.title === "BREAKING CHANGE");
199
+ }
200
+
201
+ function groupCommitsByPackage(releases) {
202
+ return releases.map(release => {
203
+ release.groups = release.packages.reduce((groups, package) => {
204
+ const commitsForPackage = release.commits.filter(commit => {
205
+ return getPackagesForCommit(commit).some(
206
+ commitPackage => commitPackage === package
207
+ );
208
+ });
209
+
210
+ const [breaking, nonBreaking] = _.partition(
211
+ commitsForPackage,
212
+ hasBreakingChanges
213
+ );
214
+
215
+ if (breaking.length === 0) {
216
+ groups[package] = Object.assign(
217
+ {},
218
+ _.groupBy(_.sortBy(nonBreaking, "type"), "type")
219
+ );
220
+ } else {
221
+ groups[package] = Object.assign(
222
+ { breaking },
223
+ _.groupBy(nonBreaking, "type")
224
+ );
225
+ }
226
+
227
+ return groups;
228
+ }, {});
229
+ delete release.commits;
230
+ return release;
231
+ });
232
+ }
233
+
234
+ function getTypeName(type) {
235
+ switch (type) {
236
+ case "feat":
237
+ return "New Features";
238
+ case "fix":
239
+ return "Bug Fixes";
240
+ case "docs":
241
+ return "Documentation";
242
+ case "style":
243
+ return "Code Style";
244
+ case "Refactor":
245
+ return "Refactoring";
246
+ case "perf":
247
+ return "Performance";
248
+ case "test":
249
+ return "Tests";
250
+ case "chore":
251
+ return "Chores";
252
+ case "revert":
253
+ return "Reverts";
254
+ case "breaking":
255
+ return "Breaking Changes";
256
+ case "WIP":
257
+ return "Work In Progress";
258
+ default:
259
+ return "Misc.";
260
+ }
261
+ }
262
+
263
+ const template = stripIndents`
264
+ {%- macro link(repo, shortHash, hash) -%}
265
+ [\`{{ shortHash }}\`]({{repo}}/commit/{{ hash }})
266
+ {%- endmacro %}
267
+
268
+ {%- macro relatedIssues(issues) -%}
269
+ {%- for i in issues -%}
270
+ {{" "}}[#{{i.issue}}]({{i.url}})
271
+ {%- endfor -%}
272
+ {%- endmacro %}
273
+
274
+ {%- for release in releases %}
275
+ ## [{{ release.version }}] - {{ release.date }}
276
+ {% for package, groups in release.groups %}
277
+ ### {{ package }}
278
+
279
+ {% for type, commits in groups -%}
280
+ * {{ getTypeName(type) }}
281
+ {% for c in commits -%}
282
+ {{" "}}* **{{ c.scope }}**: {{ c.subject }} {{link(repo, c.shortHash, c.hash)}}{{relatedIssues(c.relatedIssues)}}
283
+ {% endfor %}
284
+ {%- endfor %}
285
+ {%- endfor %}
286
+ {%- endfor %}
287
+ `;
288
+
289
+ function buildMarkdown(releases) {
290
+ return nunjucks.renderString(template, { releases, getTypeName, repo });
291
+ }
292
+
293
+ logStep = v => {
294
+ console.log(inspect(v, { depth: 7 }));
295
+ return v;
296
+ };
297
+
298
+ const changeLogTemplate = stripIndents`
299
+ # {{title}}
300
+
301
+ {{description}}
302
+ {{newVersion}}
303
+
304
+ {%- for version in oldVersions %}
305
+ ## {{version.title}}
306
+
307
+ {{version.body}}
308
+ {% endfor %}
309
+ {% for link in links -%}
310
+ [{{link.ref}}]: {{link.href}} "{{link.title}}"
311
+ {% endfor -%}
312
+ `;
313
+
314
+ function getReleases() {
315
+ return Promise.all([
316
+ getTags(),
317
+ getFirstCommit()
318
+ ]).then(([releases, firstCommit]) => {
319
+ if (releases.length === 0) {
320
+ return [];
321
+ }
322
+
323
+ releases.unshift(firstCommit);
324
+ releases.push("HEAD");
325
+ return releases;
326
+ });
327
+ }
328
+
329
+ function getChangelogData() {
330
+ return new Promise((resolve, reject) => {
331
+ parseChangelog("CHANGELOG.md", function(error, changelog) {
332
+ if (error) {
333
+ reject(error);
334
+ return;
335
+ }
336
+
337
+ resolve(changelog);
338
+ });
339
+ });
340
+ }
341
+
342
+ function filterReleases(releases) {
343
+ return releases.slice(-2);
344
+ }
345
+
346
+ getReleases()
347
+ .then(releases => filterReleases(releases))
348
+ .then(releases => pairReleases(releases))
349
+ .then(pairs =>
350
+ Promise.all(pairs.map(([from, to]) => getCommitData(from, to)))
351
+ )
352
+ .then(releaseData => processCommitMessages(releaseData))
353
+ .then(releaseData => findReleasedPackages(releaseData))
354
+ .then(releaseData => groupCommitsByPackage(releaseData))
355
+ .then(releaseData => buildMarkdown(releaseData))
356
+ .then(newVersion => {
357
+ return Promise.all([
358
+ getReleases().then(pairReleases),
359
+ getChangelogData(),
360
+ Promise.resolve(newVersion)
361
+ ]);
362
+ })
363
+ .then(([pairs, changelog, newVersion]) => {
364
+ const links = pairs.map(([from, to]) => {
365
+ to = to === "HEAD" ? "v" + getPackageVersion() : to;
366
+ return {
367
+ ref: to.replace("v", ""),
368
+ title: to,
369
+ href: `${repo}/compare/${from}...${to}`
370
+ };
371
+ });
372
+
373
+ if (links.length) {
374
+ links.push({
375
+ ref: "HEAD",
376
+ title: "Unreleased Changes",
377
+ href: `${repo}/compare/${_.last(links).title}...HEAD`
378
+ });
379
+ }
380
+
381
+ const rendered = nunjucks.renderString(changeLogTemplate, {
382
+ title: changelog.title,
383
+ description: changelog.description,
384
+ oldVersions: changelog.versions,
385
+ newVersion: newVersion,
386
+ links,
387
+ repo
388
+ });
389
+
390
+ writeFile("CHANGELOG.md", rendered, function(e) {});
391
+ })
392
+ .catch(error => {
393
+ console.error(error.stack);
394
+ });
@@ -0,0 +1,16 @@
1
+ const ghpages = require("gh-pages");
2
+
3
+ ghpages.publish(
4
+ "docs/build",
5
+ {
6
+ branch: "gh-pages",
7
+ repo: "https://github.com/Esri/arcgis-rest-js.git"
8
+ },
9
+ function(err) {
10
+ if (err) {
11
+ console.log("uh oh", err);
12
+ } else {
13
+ console.log("Deployed docs site!");
14
+ }
15
+ }
16
+ );
@@ -0,0 +1,43 @@
1
+ #!/bin/bash
2
+
3
+ # Make sure user is logged in to npm
4
+ npm whoami || exit 1
5
+
6
+ # Extract the version from lerna.json (this was updated by `npm run release:prepare`)
7
+ VERSION=$(node --eval "console.log(require('./lerna.json').version);")
8
+
9
+ # commit the changes from `npm run release:prepare`
10
+ git add --all
11
+ git commit -am "v$VERSION" --no-verify
12
+
13
+ # increment the package.json version to the lerna version so gh-release works
14
+ npm version $VERSION --allow-same-version --no-git-tag-version
15
+
16
+ # amend the changes from `npm version` to the release commit
17
+ git add --all
18
+ git commit -am "v$VERSION" --no-verify --amend
19
+
20
+ # tag this version
21
+ git tag v$VERSION
22
+
23
+ # push everything up to this point to master
24
+ git push https://github.com/Esri/arcgis-rest-js.git master
25
+
26
+ # push the new tag, not the old tags
27
+ git push https://github.com/Esri/arcgis-rest-js.git v$VERSION
28
+
29
+ # publish each package on npm
30
+ lerna publish --skip-git --yes --repo-version $VERSION --force-publish=*
31
+
32
+ # create a ZIP archive of the dist files
33
+ TEMP_FOLDER=arcgis-rest-js-v$VERSION;
34
+ mkdir $TEMP_FOLDER
35
+ cp packages/*/dist/umd/* $TEMP_FOLDER
36
+ zip -r $TEMP_FOLDER.zip $TEMP_FOLDER
37
+ rm -rf $TEMP_FOLDER
38
+
39
+ # Run gh-release to create a new release with our changelog changes and ZIP archive
40
+ gh-release --t v$VERSION --repo arcgis-rest-js --owner Esri -a $TEMP_FOLDER.zip
41
+
42
+ # Delete the ZIP archive
43
+ rm $TEMP_FOLDER.zip
@@ -0,0 +1,8 @@
1
+ require("isomorphic-fetch");
2
+ require("isomorphic-form-data");
3
+
4
+ require("ts-node").register({
5
+ compilerOptions: {
6
+ module: "commonjs"
7
+ }
8
+ });
package/tsconfig.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "compilerOptions": {
3
+ /* Basic Options */
4
+ "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'. */
5
+ "module": "es2015", /* Specify module code generation: 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
6
+ "lib": [
7
+ "dom",
8
+ "es2015"
9
+ ], /* Specify library files to be included in the compilation: */
10
+ // "allowJs": true, /* Allow javascript files to be compiled. */
11
+ // "checkJs": true, /* Report errors in .js files. */
12
+ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
13
+ "declaration": false, /* Generates corresponding '.d.ts' file. */
14
+ "sourceMap": true, /* Generates corresponding '.map' file. */
15
+ // "outFile": "./", /* Concatenate and emit output to single file. */
16
+ // "outDir": "./", /* Redirect output structure to the directory. */
17
+ // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
18
+ // "removeComments": true, /* Do not emit comments to output. */
19
+ // "noEmit": true, /* Do not emit outputs. */
20
+ "importHelpers": true, /* Import emit helpers from 'tslib'. */
21
+ // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
22
+ // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
23
+
24
+ /* Strict Type-Checking Options */
25
+ "strict": true, /* Enable all strict type-checking options. */
26
+ "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
27
+ "strictNullChecks": false, /* Enable strict null checks. */
28
+ // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
29
+ "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
30
+
31
+ /* Additional Checks */
32
+ // "noUnusedLocals": true, /* Report errors on unused locals. */
33
+ // "noUnusedParameters": true, /* Report errors on unused parameters. */
34
+ // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
35
+ // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
36
+
37
+ /* Module Resolution Options */
38
+ "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
39
+ // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
40
+ // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
41
+ // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
42
+ "typeRoots": [
43
+ "./node_modules/@types"
44
+ ], /* List of folders to include type definitions from. */
45
+ "types": [
46
+ "node",
47
+ "jasmine"
48
+ ] /* Type declaration files to be included in compilation. */
49
+ // "allowSyntheticDefaultImports": true /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
50
+
51
+ /* Source Map Options */
52
+ // "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
53
+ // "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
54
+ // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
55
+ // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
56
+
57
+ /* Experimental Options */
58
+ // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
59
+ // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
60
+ },
61
+ "exclude": [
62
+ "node_modules"
63
+ ],
64
+ "include": [
65
+ "./node_modules/@types",
66
+ "packages",
67
+ "support"
68
+ ]
69
+ }
package/tslint.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "extends": [
3
+ "tslint:recommended",
4
+ "tslint-config-standard",
5
+ "tslint-config-prettier"
6
+ ],
7
+ "rules": {
8
+ "strict-type-predicates": false,
9
+ "ordered-imports": ["any"],
10
+ "only-arrow-functions": [false],
11
+ "object-literal-sort-keys": false,
12
+ "interface-name": [true, "always-prefix"],
13
+ "no-string-literal": false
14
+ }
15
+ }
@@ -0,0 +1,82 @@
1
+ import typescript from "rollup-plugin-typescript2";
2
+ import resolve from "rollup-plugin-node-resolve";
3
+ import commonjs from "rollup-plugin-commonjs";
4
+ import json from "rollup-plugin-json";
5
+
6
+ const path = require("path");
7
+ const fs = require("fs");
8
+ const _ = require("lodash");
9
+
10
+ /**
11
+ * Since Rollup runs inside each package we can just get the current
12
+ * package we are bundling.
13
+ */
14
+ const pkg = require(path.join(process.cwd(), "package.json"));
15
+
16
+ /**
17
+ * and dig out its name.
18
+ */
19
+ const { name } = pkg;
20
+
21
+ /**
22
+ * to construct a copyright banner
23
+ */
24
+
25
+ const copyright = `/* @preserve
26
+ * ${pkg.name} - v${pkg.version} - ${pkg.license}
27
+ * Copyright (c) 2017-${new Date().getFullYear()} Esri, Inc.
28
+ * ${new Date().toString()}
29
+ */`;
30
+
31
+
32
+ /**
33
+ * The module name will be the name of the global variable used in UMD builds.
34
+ * All exported members of each package will be attached to this global.
35
+ */
36
+ const moduleName = "arcgisRest";
37
+
38
+ /**
39
+ * Now we need to discover all the `@esri/arcgis-rest-*` package names so we can create
40
+ * the `globals` and `externals` to pass to Rollup.
41
+ */
42
+ const packageNames = fs
43
+ .readdirSync(path.join(__dirname, "packages"))
44
+ .filter(p => p[0] !== ".")
45
+ .map(p => {
46
+ return require(path.join(__dirname, "packages", p, "package.json")).name;
47
+ }, {});
48
+
49
+ /**
50
+ * Rollup will use this map to determine where to lookup modules on the global
51
+ * window object when neither AMD or CommonJS is being used. This configuration
52
+ * will cause Rollup to lookup all imports from our packages on a single global
53
+ * `arcgisRest` object.
54
+ */
55
+ const globals = packageNames.reduce((globals, p) => {
56
+ globals[p] = moduleName;
57
+ return globals;
58
+ }, {});
59
+
60
+ /**
61
+ * Now we can export the Rollup config!
62
+ */
63
+ export default {
64
+ input: "./src/index.ts",
65
+ output: {
66
+ file: `./dist/umd/${name.replace("@esri/arcgis-rest-", "")}.umd.js`,
67
+ sourcemap: true,
68
+ banner: copyright,
69
+ format: "umd",
70
+ name: moduleName,
71
+ globals,
72
+ extend: true // causes this module to extend the global specified by `moduleName`
73
+ },
74
+ context: "window",
75
+ external: packageNames,
76
+ plugins: [
77
+ typescript(),
78
+ json(),
79
+ resolve(),
80
+ commonjs()
81
+ ]
82
+ };
@@ -0,0 +1,13 @@
1
+ import config from './umd-base-profile.js';
2
+ import uglify from "rollup-plugin-uglify";
3
+ import filesize from "rollup-plugin-filesize";
4
+
5
+ // use umd.min.js
6
+ config.output.file = config.output.file.replace(".umd.", ".umd.min.");
7
+
8
+ config.plugins.push(filesize())
9
+ config.plugins.push(uglify({
10
+ output: { comments: /@preserve/ }
11
+ }))
12
+
13
+ export default config;