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,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;