@atlaskit/dependency-version-analytics 1.0.0 → 1.1.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlaskit/dependency-version-analytics
2
2
 
3
+ ## 1.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`dd9a70fcafc`](https://bitbucket.org/atlassian/atlassian-frontend/commits/dd9a70fcafc) - Add npm dist-tags (latest, next, rc, hotfix) to analytics
8
+
3
9
  ## 1.0.0
4
10
 
5
11
  ### Major Changes
package/README.md CHANGED
@@ -59,7 +59,8 @@ This command will be used to record when atlaskit publish new versions of their
59
59
  This will run the 'dev' mode of the tool and compile typescript on the fly. Any changes made to the source will instantly reflect in the product repo.
60
60
 
61
61
  1. Run `yarn link` inside the package
62
- 2. Run `yarn link add '@atlaskit/dependency-version-analytics'` inside the product repo of your choosing
62
+ 2. `cd` to the root of the `alassian-frontend` repo then run `yarn build @atlaskit/dependency-version-analytics`
63
+ 2. Run `yarn link '@atlaskit/dependency-version-analytics'` inside the product repo of your choosing or in the [`atlaskit-version-analytics`](https://bitbucket.org/atlassian/atlaskit-version-analytics/src/master/) repo to test your changes
63
64
 
64
65
  Make dev changes + save.
65
66
 
@@ -11,7 +11,9 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
11
11
  var _semver = _interopRequireDefault(require("semver"));
12
12
  var _getPackageVersionHistory = _interopRequireDefault(require("../../util/get-package-version-history"));
13
13
  var _analytics = require("../../util/analytics");
14
- var createAnalyticsEvents = function createAnalyticsEvents(packageName, packageVersionHistory, since) {
14
+ var createAnalyticsEvents = function createAnalyticsEvents(packageName, packageVersionHistoryAndTags, since) {
15
+ var packageVersionHistory = packageVersionHistoryAndTags['time'];
16
+ var tags = packageVersionHistoryAndTags['dist-tags'];
15
17
  var sortedPackageVersionHistory = Object.entries(packageVersionHistory).filter(function (_ref) {
16
18
  var _ref2 = (0, _slicedToArray2.default)(_ref, 1),
17
19
  version = _ref2[0];
@@ -28,7 +30,8 @@ var createAnalyticsEvents = function createAnalyticsEvents(packageName, packageV
28
30
  }
29
31
  var previousVersion = sortedPackageVersionHistory[i - 1] && sortedPackageVersionHistory[i - 1][0];
30
32
  return (0, _analytics.createUpgradeEvent)(packageName, version, previousVersion, time, {
31
- historical: true
33
+ historical: true,
34
+ tags: tags
32
35
  });
33
36
  }).filter(function (e) {
34
37
  return e != null;
@@ -18,6 +18,7 @@ var statlas = _interopRequireWildcard(require("../../util/statlas"));
18
18
  var _generateCsv = require("./util/generate-csv");
19
19
  var _assert = require("../../util/assert");
20
20
  var _dependencyStore = require("./lib/dependency-store");
21
+ var _getPackageVersionHistory = _interopRequireDefault(require("../../util/get-package-version-history"));
21
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
23
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
24
  var getUpgradeEventsFromPkgChange = function getUpgradeEventsFromPkgChange(oldDeps, newDeps, _ref) {
@@ -66,35 +67,35 @@ var getUpgradeEventsFromPkgChange = function getUpgradeEventsFromPkgChange(oldDe
66
67
  return [].concat((0, _toConsumableArray2.default)(addOrUpgradeEvents), (0, _toConsumableArray2.default)(removeEvents));
67
68
  };
68
69
  var getEventsFromHistory = /*#__PURE__*/function () {
69
- var _ref9 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(packageChangesLog, prevRunHash, _ref8) {
70
- var cwd, allPackageChanges, allUpgradeEvents, dependencyStore, dependencies, i, item, newDependencies, packageChange, upgradeEvents;
71
- return _regenerator.default.wrap(function _callee$(_context) {
70
+ var _ref9 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(packageChangesLog, prevRunHash, _ref8) {
71
+ var cwd, allPackageChanges, allUpgradeEvents, dependencyStore, dependencies, i, item, newDependencies, packageChange, upgradeEvents, _allUpgradeEvents;
72
+ return _regenerator.default.wrap(function _callee2$(_context2) {
72
73
  while (1) {
73
- switch (_context.prev = _context.next) {
74
+ switch (_context2.prev = _context2.next) {
74
75
  case 0:
75
76
  cwd = _ref8.cwd;
76
77
  allPackageChanges = [];
77
78
  allUpgradeEvents = [];
78
79
  (0, _assert.assert)(packageChangesLog.all.length > 0, '');
79
80
  dependencyStore = new _dependencyStore.DependencyStore(cwd);
80
- _context.next = 7;
81
+ _context2.next = 7;
81
82
  return dependencyStore.initialise(prevRunHash);
82
83
  case 7:
83
- dependencies = _context.sent;
84
+ dependencies = _context2.sent;
84
85
  i = 0;
85
86
  case 9:
86
87
  if (!(i < packageChangesLog.all.length)) {
87
- _context.next = 21;
88
+ _context2.next = 21;
88
89
  break;
89
90
  }
90
91
  item = packageChangesLog.all[i];
91
92
  if (allPackageChanges.length > 0) {
92
93
  dependencies = allPackageChanges[allPackageChanges.length - 1].akDeps;
93
94
  }
94
- _context.next = 14;
95
+ _context2.next = 14;
95
96
  return dependencyStore.update(item);
96
97
  case 14:
97
- newDependencies = _context.sent;
98
+ newDependencies = _context2.sent;
98
99
  packageChange = {
99
100
  date: new Date(item.date).toISOString(),
100
101
  akDeps: newDependencies
@@ -104,143 +105,179 @@ var getEventsFromHistory = /*#__PURE__*/function () {
104
105
  commitHash: item.hash
105
106
  });
106
107
  if (upgradeEvents.length > 0) {
107
- allUpgradeEvents.push.apply(allUpgradeEvents, (0, _toConsumableArray2.default)(upgradeEvents));
108
+ (_allUpgradeEvents = allUpgradeEvents).push.apply(_allUpgradeEvents, (0, _toConsumableArray2.default)(upgradeEvents));
108
109
  allPackageChanges.push(packageChange);
109
110
  }
110
111
  case 18:
111
112
  i++;
112
- _context.next = 9;
113
+ _context2.next = 9;
113
114
  break;
114
115
  case 21:
115
- return _context.abrupt("return", {
116
+ _context2.next = 23;
117
+ return Promise.all(allUpgradeEvents.map( /*#__PURE__*/function () {
118
+ var _ref10 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(upgradeEvent) {
119
+ var _distTags$hotfix, _distTags$latest, _distTags$next;
120
+ var getPackageTags, distTags;
121
+ return _regenerator.default.wrap(function _callee$(_context) {
122
+ while (1) {
123
+ switch (_context.prev = _context.next) {
124
+ case 0:
125
+ _context.next = 2;
126
+ return (0, _getPackageVersionHistory.default)(upgradeEvent.dependencyName);
127
+ case 2:
128
+ getPackageTags = _context.sent;
129
+ distTags = getPackageTags['dist-tags'];
130
+ Object.keys(distTags).forEach(function (key) {
131
+ if (key.startsWith('rc')) {
132
+ upgradeEvent.rcTag = distTags[key];
133
+ }
134
+ });
135
+ upgradeEvent.hotfixTag = (_distTags$hotfix = distTags['hotfix']) !== null && _distTags$hotfix !== void 0 ? _distTags$hotfix : null;
136
+ upgradeEvent.latestTag = (_distTags$latest = distTags['latest']) !== null && _distTags$latest !== void 0 ? _distTags$latest : null;
137
+ upgradeEvent.nextTag = (_distTags$next = distTags['next']) !== null && _distTags$next !== void 0 ? _distTags$next : null;
138
+ return _context.abrupt("return", upgradeEvent);
139
+ case 9:
140
+ case "end":
141
+ return _context.stop();
142
+ }
143
+ }
144
+ }, _callee);
145
+ }));
146
+ return function (_x4) {
147
+ return _ref10.apply(this, arguments);
148
+ };
149
+ }()));
150
+ case 23:
151
+ allUpgradeEvents = _context2.sent;
152
+ return _context2.abrupt("return", {
116
153
  allPackageChanges: allPackageChanges,
117
154
  allUpgradeEvents: allUpgradeEvents
118
155
  });
119
- case 22:
156
+ case 25:
120
157
  case "end":
121
- return _context.stop();
158
+ return _context2.stop();
122
159
  }
123
160
  }
124
- }, _callee);
161
+ }, _callee2);
125
162
  }));
126
163
  return function getEventsFromHistory(_x, _x2, _x3) {
127
164
  return _ref9.apply(this, arguments);
128
165
  };
129
166
  }();
130
- function getSinceRef(_x4) {
167
+ function getSinceRef(_x5) {
131
168
  return _getSinceRef.apply(this, arguments);
132
169
  }
133
170
  function _getSinceRef() {
134
- _getSinceRef = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(flags) {
171
+ _getSinceRef = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(flags) {
135
172
  var meta, tag, tagExists;
136
- return _regenerator.default.wrap(function _callee2$(_context2) {
173
+ return _regenerator.default.wrap(function _callee3$(_context3) {
137
174
  while (1) {
138
- switch (_context2.prev = _context2.next) {
175
+ switch (_context3.prev = _context3.next) {
139
176
  case 0:
140
177
  if (!flags.statlas) {
141
- _context2.next = 9;
178
+ _context3.next = 9;
142
179
  break;
143
180
  }
144
- _context2.next = 3;
181
+ _context3.next = 3;
145
182
  return statlas.getMeta(flags.product);
146
183
  case 3:
147
- meta = _context2.sent;
184
+ meta = _context3.sent;
148
185
  if (!(!meta || !meta.lastRunHash)) {
149
- _context2.next = 6;
186
+ _context3.next = 6;
150
187
  break;
151
188
  }
152
189
  throw new Error(_chalk.default.red("Missing or invalid metadata file for ".concat(flags.product, ". Must use --reset for populating from start of history")));
153
190
  case 6:
154
- return _context2.abrupt("return", meta.lastRunHash);
191
+ return _context3.abrupt("return", meta.lastRunHash);
155
192
  case 9:
156
193
  tag = flags.tag || _constants.DEFAULT_TAG;
157
- _context2.next = 12;
194
+ _context3.next = 12;
158
195
  return (0, _git.refetchTag)(tag);
159
196
  case 12:
160
- _context2.next = 14;
197
+ _context3.next = 14;
161
198
  return (0, _git.doesTagExist)(tag);
162
199
  case 14:
163
- tagExists = _context2.sent;
200
+ tagExists = _context3.sent;
164
201
  if (tagExists) {
165
- _context2.next = 17;
202
+ _context3.next = 17;
166
203
  break;
167
204
  }
168
205
  throw new Error(_chalk.default.red("Tag '".concat(tag, "' does not exist. Must use --reset for populating from start of history.")));
169
206
  case 17:
170
- return _context2.abrupt("return", tag);
207
+ return _context3.abrupt("return", tag);
171
208
  case 18:
172
209
  case "end":
173
- return _context2.stop();
210
+ return _context3.stop();
174
211
  }
175
212
  }
176
- }, _callee2);
213
+ }, _callee3);
177
214
  }));
178
215
  return _getSinceRef.apply(this, arguments);
179
216
  }
180
- function populateProduct(_x5) {
217
+ function populateProduct(_x6) {
181
218
  return _populateProduct.apply(this, arguments);
182
219
  }
183
220
  function _populateProduct() {
184
- _populateProduct = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(flags) {
221
+ _populateProduct = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(flags) {
185
222
  var cwd, sinceRef, log, _yield$getEventsFromH, allPackageChanges, allUpgradeEvents, csv, currentCommit;
186
- return _regenerator.default.wrap(function _callee3$(_context3) {
223
+ return _regenerator.default.wrap(function _callee4$(_context4) {
187
224
  while (1) {
188
- switch (_context3.prev = _context3.next) {
225
+ switch (_context4.prev = _context4.next) {
189
226
  case 0:
190
227
  cwd = flags.cwd || process.cwd();
191
228
  if (!flags.reset) {
192
- _context3.next = 5;
229
+ _context4.next = 5;
193
230
  break;
194
231
  }
195
- _context3.t0 = undefined;
196
- _context3.next = 8;
232
+ _context4.t0 = undefined;
233
+ _context4.next = 8;
197
234
  break;
198
235
  case 5:
199
- _context3.next = 7;
236
+ _context4.next = 7;
200
237
  return getSinceRef(flags);
201
238
  case 7:
202
- _context3.t0 = _context3.sent;
239
+ _context4.t0 = _context4.sent;
203
240
  case 8:
204
- sinceRef = _context3.t0;
205
- _context3.next = 11;
241
+ sinceRef = _context4.t0;
242
+ _context4.next = 11;
206
243
  return (0, _git.getChangesSince)(sinceRef);
207
244
  case 11:
208
- log = _context3.sent;
245
+ log = _context4.sent;
209
246
  if (!(log.all.length === 0)) {
210
- _context3.next = 15;
247
+ _context4.next = 15;
211
248
  break;
212
249
  }
213
250
  console.log("No package.json changes found since '".concat(sinceRef, "'."));
214
- return _context3.abrupt("return");
251
+ return _context4.abrupt("return");
215
252
  case 15:
216
- _context3.next = 17;
253
+ _context4.next = 17;
217
254
  return getEventsFromHistory(log, sinceRef, {
218
255
  cwd: cwd
219
256
  });
220
257
  case 17:
221
- _yield$getEventsFromH = _context3.sent;
258
+ _yield$getEventsFromH = _context4.sent;
222
259
  allPackageChanges = _yield$getEventsFromH.allPackageChanges;
223
260
  allUpgradeEvents = _yield$getEventsFromH.allUpgradeEvents;
224
261
  if (!flags.csv) {
225
- _context3.next = 24;
262
+ _context4.next = 24;
226
263
  break;
227
264
  }
228
265
  csv = (0, _generateCsv.generateCSV)(allPackageChanges);
229
266
  console.log(csv);
230
- return _context3.abrupt("return");
267
+ return _context4.abrupt("return");
231
268
  case 24:
232
269
  if (!flags.dryRun) {
233
- _context3.next = 27;
270
+ _context4.next = 27;
234
271
  break;
235
272
  }
236
273
  console.log(JSON.stringify(allUpgradeEvents));
237
- return _context3.abrupt("return");
274
+ return _context4.abrupt("return");
238
275
  case 27:
239
276
  if (!(allUpgradeEvents.length > 0)) {
240
- _context3.next = 32;
277
+ _context4.next = 32;
241
278
  break;
242
279
  }
243
- _context3.next = 30;
280
+ _context4.next = 30;
244
281
  return (0, _analytics.sendAnalytics)(allUpgradeEvents, {
245
282
  dev: flags.dev,
246
283
  limit: flags.limit,
@@ -248,37 +285,37 @@ function _populateProduct() {
248
285
  skipPrompt: !flags.interactive
249
286
  });
250
287
  case 30:
251
- _context3.next = 33;
288
+ _context4.next = 33;
252
289
  break;
253
290
  case 32:
254
291
  console.log("Found no AK dependency changes since last run from ref \"".concat(sinceRef, "\"'"));
255
292
  case 33:
256
293
  if (!flags.statlas) {
257
- _context3.next = 42;
294
+ _context4.next = 42;
258
295
  break;
259
296
  }
260
- _context3.next = 36;
297
+ _context4.next = 36;
261
298
  return (0, _git.getHash)('HEAD');
262
299
  case 36:
263
- currentCommit = _context3.sent;
264
- _context3.next = 39;
300
+ currentCommit = _context4.sent;
301
+ _context4.next = 39;
265
302
  return statlas.uploadMeta(flags.product, currentCommit);
266
303
  case 39:
267
304
  console.log('Finished');
268
- _context3.next = 46;
305
+ _context4.next = 46;
269
306
  break;
270
307
  case 42:
271
308
  console.log('Updating tag to current commit...');
272
- _context3.next = 45;
309
+ _context4.next = 45;
273
310
  return (0, _git.tagCommit)(_constants.DEFAULT_TAG);
274
311
  case 45:
275
312
  console.log("Finished. Run 'git push origin tag ".concat(sinceRef, "'."));
276
313
  case 46:
277
314
  case "end":
278
- return _context3.stop();
315
+ return _context4.stop();
279
316
  }
280
317
  }
281
- }, _callee3);
318
+ }, _callee4);
282
319
  }));
283
320
  return _populateProduct.apply(this, arguments);
284
321
  }
@@ -50,6 +50,7 @@ function getUpgradeSubType(version, previousVersion) {
50
50
  return upgradeSubType;
51
51
  }
52
52
  function createUpgradeEvent(name, version, previousVersion, date) {
53
+ var _optionalArgs$tags, _ref, _tags$next, _tags$hotfix, _ref2;
53
54
  var optionalArgs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
54
55
  if (Number.isNaN(Date.parse(date))) {
55
56
  throw new Error("Invalid date: '".concat(date, "'"));
@@ -62,6 +63,14 @@ function createUpgradeEvent(name, version, previousVersion, date) {
62
63
  var upgradeSubType = getUpgradeSubType(version, previousVersion);
63
64
  var eventVersion = upgradeType !== 'remove' ? version : previousVersion;
64
65
  var parsedVersion = _semver.default.coerce(eventVersion);
66
+ var rcKey = null;
67
+ var tags = (_optionalArgs$tags = optionalArgs === null || optionalArgs === void 0 ? void 0 : optionalArgs.tags) !== null && _optionalArgs$tags !== void 0 ? _optionalArgs$tags : {};
68
+ Object.keys(tags).forEach(function (key) {
69
+ if (key.startsWith('rc')) {
70
+ rcKey = key;
71
+ return;
72
+ }
73
+ });
65
74
  return _objectSpread({
66
75
  cliVersion: _version.version,
67
76
  dependencyName: name,
@@ -71,20 +80,24 @@ function createUpgradeEvent(name, version, previousVersion, date) {
71
80
  patch: parsedVersion ? "".concat(parsedVersion.patch) : null,
72
81
  date: new Date(date).toISOString(),
73
82
  upgradeType: upgradeType,
74
- upgradeSubType: upgradeSubType
83
+ upgradeSubType: upgradeSubType,
84
+ latestTag: (_ref = tags && tags['latest']) !== null && _ref !== void 0 ? _ref : null,
85
+ nextTag: (_tags$next = tags['next']) !== null && _tags$next !== void 0 ? _tags$next : null,
86
+ hotfixTag: (_tags$hotfix = tags['hotfix']) !== null && _tags$hotfix !== void 0 ? _tags$hotfix : null,
87
+ rcTag: (_ref2 = rcKey && tags[rcKey]) !== null && _ref2 !== void 0 ? _ref2 : null
75
88
  }, optionalArgs);
76
89
  }
77
90
  function sendAnalytics(_x, _x2) {
78
91
  return _sendAnalytics.apply(this, arguments);
79
92
  }
80
93
  function _sendAnalytics() {
81
- _sendAnalytics = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(analyticsEvents, _ref) {
94
+ _sendAnalytics = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(analyticsEvents, _ref3) {
82
95
  var dev, limit, product, skipPrompt, analyticsEnv, eventsToSend, client, answers, promises;
83
96
  return _regenerator.default.wrap(function _callee$(_context) {
84
97
  while (1) {
85
98
  switch (_context.prev = _context.next) {
86
99
  case 0:
87
- dev = _ref.dev, limit = _ref.limit, product = _ref.product, skipPrompt = _ref.skipPrompt;
100
+ dev = _ref3.dev, limit = _ref3.limit, product = _ref3.product, skipPrompt = _ref3.skipPrompt;
88
101
  analyticsEnv = dev ? 'dev' : 'prod';
89
102
  eventsToSend = limit != null ? analyticsEvents.slice(0, limit) : analyticsEvents;
90
103
  client = (0, _analyticsNodeClient.analyticsClient)({
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = getPackageVersionHistory;
6
+ exports.default = getPackageVersionHistoryAndTags;
7
7
  var _child_process = require("child_process");
8
- function getPackageVersionHistory(packageName) {
8
+ function getPackageVersionHistoryAndTags(packageName) {
9
9
  return new Promise(function (resolve, reject) {
10
- (0, _child_process.exec)("yarn info ".concat(packageName, " --json time"), function (error, stdout, stderr) {
10
+ (0, _child_process.exec)("yarn info ".concat(packageName, " --json"), function (error, stdout, stderr) {
11
11
  if (error) {
12
12
  reject(error);
13
13
  }
@@ -16,7 +16,11 @@ function getPackageVersionHistory(packageName) {
16
16
  }
17
17
  var json;
18
18
  try {
19
- json = JSON.parse(stdout).data;
19
+ var parseData = JSON.parse(stdout).data;
20
+ json = {
21
+ time: parseData['time'],
22
+ 'dist-tags': parseData['dist-tags']
23
+ };
20
24
  } catch (e) {
21
25
  reject("Error parsing json output: ".concat(e));
22
26
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/dependency-version-analytics",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,7 +1,9 @@
1
1
  import semver from 'semver';
2
- import getPackageVersionHistory from '../../util/get-package-version-history';
2
+ import getPackageVersionHistoryAndTags from '../../util/get-package-version-history';
3
3
  import { createUpgradeEvent, sendAnalytics } from '../../util/analytics';
4
- const createAnalyticsEvents = (packageName, packageVersionHistory, since) => {
4
+ const createAnalyticsEvents = (packageName, packageVersionHistoryAndTags, since) => {
5
+ const packageVersionHistory = packageVersionHistoryAndTags['time'];
6
+ const tags = packageVersionHistoryAndTags['dist-tags'];
5
7
  const sortedPackageVersionHistory = Object.entries(packageVersionHistory).filter(([version]) => semver.valid(version)).sort((a, b) => Number(new Date(a[1])) - Number(new Date(b[1])));
6
8
  const upgradeEvents = sortedPackageVersionHistory.map(([version, time], i) => {
7
9
  if (since && Number(new Date(time)) <= Number(new Date(since))) {
@@ -9,7 +11,8 @@ const createAnalyticsEvents = (packageName, packageVersionHistory, since) => {
9
11
  }
10
12
  const previousVersion = sortedPackageVersionHistory[i - 1] && sortedPackageVersionHistory[i - 1][0];
11
13
  return createUpgradeEvent(packageName, version, previousVersion, time, {
12
- historical: true
14
+ historical: true,
15
+ tags
13
16
  });
14
17
  }).filter(e => e != null);
15
18
  return upgradeEvents;
@@ -18,7 +21,7 @@ export default async function populatePackage(flags) {
18
21
  if (!flags.pkg.startsWith('@atlaskit/')) {
19
22
  throw new Error(`Package must start with '@atlaskit/'`);
20
23
  }
21
- const packageVersionHistory = await getPackageVersionHistory(flags.pkg);
24
+ const packageVersionHistory = await getPackageVersionHistoryAndTags(flags.pkg);
22
25
  if (flags.since && Number.isNaN(Number(new Date(flags.since)))) {
23
26
  throw new Error(`'since' flag is an invalid date`);
24
27
  }
@@ -6,6 +6,7 @@ import * as statlas from '../../util/statlas';
6
6
  import { generateCSV } from './util/generate-csv';
7
7
  import { assert } from '../../util/assert';
8
8
  import { DependencyStore } from './lib/dependency-store';
9
+ import getPackageVersionHistoryAndTags from '../../util/get-package-version-history';
9
10
  const getUpgradeEventsFromPkgChange = (oldDeps, newDeps, {
10
11
  date,
11
12
  commitHash
@@ -44,7 +45,7 @@ const getEventsFromHistory = async (packageChangesLog, prevRunHash, {
44
45
  cwd
45
46
  }) => {
46
47
  const allPackageChanges = [];
47
- const allUpgradeEvents = [];
48
+ let allUpgradeEvents = [];
48
49
  assert(packageChangesLog.all.length > 0, '');
49
50
  let dependencyStore = new DependencyStore(cwd);
50
51
  let dependencies = await dependencyStore.initialise(prevRunHash);
@@ -67,6 +68,21 @@ const getEventsFromHistory = async (packageChangesLog, prevRunHash, {
67
68
  allPackageChanges.push(packageChange);
68
69
  }
69
70
  }
71
+ // add dist-tags to upgrade event
72
+ allUpgradeEvents = await Promise.all(allUpgradeEvents.map(async upgradeEvent => {
73
+ var _distTags$hotfix, _distTags$latest, _distTags$next;
74
+ const getPackageTags = await getPackageVersionHistoryAndTags(upgradeEvent.dependencyName);
75
+ const distTags = getPackageTags['dist-tags'];
76
+ Object.keys(distTags).forEach(key => {
77
+ if (key.startsWith('rc')) {
78
+ upgradeEvent.rcTag = distTags[key];
79
+ }
80
+ });
81
+ upgradeEvent.hotfixTag = (_distTags$hotfix = distTags['hotfix']) !== null && _distTags$hotfix !== void 0 ? _distTags$hotfix : null;
82
+ upgradeEvent.latestTag = (_distTags$latest = distTags['latest']) !== null && _distTags$latest !== void 0 ? _distTags$latest : null;
83
+ upgradeEvent.nextTag = (_distTags$next = distTags['next']) !== null && _distTags$next !== void 0 ? _distTags$next : null;
84
+ return upgradeEvent;
85
+ }));
70
86
  return {
71
87
  allPackageChanges,
72
88
  allUpgradeEvents
@@ -39,6 +39,7 @@ function getUpgradeSubType(version, previousVersion) {
39
39
  return upgradeSubType;
40
40
  }
41
41
  export function createUpgradeEvent(name, version, previousVersion, date, optionalArgs = {}) {
42
+ var _optionalArgs$tags, _ref, _tags$next, _tags$hotfix, _ref2;
42
43
  if (Number.isNaN(Date.parse(date))) {
43
44
  throw new Error(`Invalid date: '${date}'`);
44
45
  }
@@ -50,6 +51,14 @@ export function createUpgradeEvent(name, version, previousVersion, date, optiona
50
51
  const upgradeSubType = getUpgradeSubType(version, previousVersion);
51
52
  const eventVersion = upgradeType !== 'remove' ? version : previousVersion;
52
53
  const parsedVersion = semver.coerce(eventVersion);
54
+ let rcKey = null;
55
+ const tags = (_optionalArgs$tags = optionalArgs === null || optionalArgs === void 0 ? void 0 : optionalArgs.tags) !== null && _optionalArgs$tags !== void 0 ? _optionalArgs$tags : {};
56
+ Object.keys(tags).forEach(key => {
57
+ if (key.startsWith('rc')) {
58
+ rcKey = key;
59
+ return;
60
+ }
61
+ });
53
62
  return {
54
63
  cliVersion: packageVersion,
55
64
  dependencyName: name,
@@ -60,6 +69,10 @@ export function createUpgradeEvent(name, version, previousVersion, date, optiona
60
69
  date: new Date(date).toISOString(),
61
70
  upgradeType,
62
71
  upgradeSubType,
72
+ latestTag: (_ref = tags && tags['latest']) !== null && _ref !== void 0 ? _ref : null,
73
+ nextTag: (_tags$next = tags['next']) !== null && _tags$next !== void 0 ? _tags$next : null,
74
+ hotfixTag: (_tags$hotfix = tags['hotfix']) !== null && _tags$hotfix !== void 0 ? _tags$hotfix : null,
75
+ rcTag: (_ref2 = rcKey && tags[rcKey]) !== null && _ref2 !== void 0 ? _ref2 : null,
63
76
  ...optionalArgs
64
77
  };
65
78
  }
@@ -1,7 +1,7 @@
1
1
  import { exec } from 'child_process';
2
- export default function getPackageVersionHistory(packageName) {
2
+ export default function getPackageVersionHistoryAndTags(packageName) {
3
3
  return new Promise((resolve, reject) => {
4
- exec(`yarn info ${packageName} --json time`, (error, stdout, stderr) => {
4
+ exec(`yarn info ${packageName} --json`, (error, stdout, stderr) => {
5
5
  if (error) {
6
6
  reject(error);
7
7
  }
@@ -10,7 +10,11 @@ export default function getPackageVersionHistory(packageName) {
10
10
  }
11
11
  let json;
12
12
  try {
13
- json = JSON.parse(stdout).data;
13
+ const parseData = JSON.parse(stdout).data;
14
+ json = {
15
+ time: parseData['time'],
16
+ 'dist-tags': parseData['dist-tags']
17
+ };
14
18
  } catch (e) {
15
19
  reject(`Error parsing json output: ${e}`);
16
20
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/dependency-version-analytics",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "sideEffects": false
5
5
  }
@@ -2,9 +2,11 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
4
  import semver from 'semver';
5
- import getPackageVersionHistory from '../../util/get-package-version-history';
5
+ import getPackageVersionHistoryAndTags from '../../util/get-package-version-history';
6
6
  import { createUpgradeEvent, sendAnalytics } from '../../util/analytics';
7
- var createAnalyticsEvents = function createAnalyticsEvents(packageName, packageVersionHistory, since) {
7
+ var createAnalyticsEvents = function createAnalyticsEvents(packageName, packageVersionHistoryAndTags, since) {
8
+ var packageVersionHistory = packageVersionHistoryAndTags['time'];
9
+ var tags = packageVersionHistoryAndTags['dist-tags'];
8
10
  var sortedPackageVersionHistory = Object.entries(packageVersionHistory).filter(function (_ref) {
9
11
  var _ref2 = _slicedToArray(_ref, 1),
10
12
  version = _ref2[0];
@@ -21,7 +23,8 @@ var createAnalyticsEvents = function createAnalyticsEvents(packageName, packageV
21
23
  }
22
24
  var previousVersion = sortedPackageVersionHistory[i - 1] && sortedPackageVersionHistory[i - 1][0];
23
25
  return createUpgradeEvent(packageName, version, previousVersion, time, {
24
- historical: true
26
+ historical: true,
27
+ tags: tags
25
28
  });
26
29
  }).filter(function (e) {
27
30
  return e != null;
@@ -45,7 +48,7 @@ function _populatePackage() {
45
48
  throw new Error("Package must start with '@atlaskit/'");
46
49
  case 2:
47
50
  _context.next = 4;
48
- return getPackageVersionHistory(flags.pkg);
51
+ return getPackageVersionHistoryAndTags(flags.pkg);
49
52
  case 4:
50
53
  packageVersionHistory = _context.sent;
51
54
  if (!(flags.since && Number.isNaN(Number(new Date(flags.since))))) {
@@ -10,6 +10,7 @@ import * as statlas from '../../util/statlas';
10
10
  import { generateCSV } from './util/generate-csv';
11
11
  import { assert } from '../../util/assert';
12
12
  import { DependencyStore } from './lib/dependency-store';
13
+ import getPackageVersionHistoryAndTags from '../../util/get-package-version-history';
13
14
  var getUpgradeEventsFromPkgChange = function getUpgradeEventsFromPkgChange(oldDeps, newDeps, _ref) {
14
15
  var date = _ref.date,
15
16
  commitHash = _ref.commitHash;
@@ -56,35 +57,35 @@ var getUpgradeEventsFromPkgChange = function getUpgradeEventsFromPkgChange(oldDe
56
57
  return [].concat(_toConsumableArray(addOrUpgradeEvents), _toConsumableArray(removeEvents));
57
58
  };
58
59
  var getEventsFromHistory = /*#__PURE__*/function () {
59
- var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(packageChangesLog, prevRunHash, _ref8) {
60
- var cwd, allPackageChanges, allUpgradeEvents, dependencyStore, dependencies, i, item, newDependencies, packageChange, upgradeEvents;
61
- return _regeneratorRuntime.wrap(function _callee$(_context) {
60
+ var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(packageChangesLog, prevRunHash, _ref8) {
61
+ var cwd, allPackageChanges, allUpgradeEvents, dependencyStore, dependencies, i, item, newDependencies, packageChange, upgradeEvents, _allUpgradeEvents;
62
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
62
63
  while (1) {
63
- switch (_context.prev = _context.next) {
64
+ switch (_context2.prev = _context2.next) {
64
65
  case 0:
65
66
  cwd = _ref8.cwd;
66
67
  allPackageChanges = [];
67
68
  allUpgradeEvents = [];
68
69
  assert(packageChangesLog.all.length > 0, '');
69
70
  dependencyStore = new DependencyStore(cwd);
70
- _context.next = 7;
71
+ _context2.next = 7;
71
72
  return dependencyStore.initialise(prevRunHash);
72
73
  case 7:
73
- dependencies = _context.sent;
74
+ dependencies = _context2.sent;
74
75
  i = 0;
75
76
  case 9:
76
77
  if (!(i < packageChangesLog.all.length)) {
77
- _context.next = 21;
78
+ _context2.next = 21;
78
79
  break;
79
80
  }
80
81
  item = packageChangesLog.all[i];
81
82
  if (allPackageChanges.length > 0) {
82
83
  dependencies = allPackageChanges[allPackageChanges.length - 1].akDeps;
83
84
  }
84
- _context.next = 14;
85
+ _context2.next = 14;
85
86
  return dependencyStore.update(item);
86
87
  case 14:
87
- newDependencies = _context.sent;
88
+ newDependencies = _context2.sent;
88
89
  packageChange = {
89
90
  date: new Date(item.date).toISOString(),
90
91
  akDeps: newDependencies
@@ -94,143 +95,179 @@ var getEventsFromHistory = /*#__PURE__*/function () {
94
95
  commitHash: item.hash
95
96
  });
96
97
  if (upgradeEvents.length > 0) {
97
- allUpgradeEvents.push.apply(allUpgradeEvents, _toConsumableArray(upgradeEvents));
98
+ (_allUpgradeEvents = allUpgradeEvents).push.apply(_allUpgradeEvents, _toConsumableArray(upgradeEvents));
98
99
  allPackageChanges.push(packageChange);
99
100
  }
100
101
  case 18:
101
102
  i++;
102
- _context.next = 9;
103
+ _context2.next = 9;
103
104
  break;
104
105
  case 21:
105
- return _context.abrupt("return", {
106
+ _context2.next = 23;
107
+ return Promise.all(allUpgradeEvents.map( /*#__PURE__*/function () {
108
+ var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(upgradeEvent) {
109
+ var _distTags$hotfix, _distTags$latest, _distTags$next;
110
+ var getPackageTags, distTags;
111
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
112
+ while (1) {
113
+ switch (_context.prev = _context.next) {
114
+ case 0:
115
+ _context.next = 2;
116
+ return getPackageVersionHistoryAndTags(upgradeEvent.dependencyName);
117
+ case 2:
118
+ getPackageTags = _context.sent;
119
+ distTags = getPackageTags['dist-tags'];
120
+ Object.keys(distTags).forEach(function (key) {
121
+ if (key.startsWith('rc')) {
122
+ upgradeEvent.rcTag = distTags[key];
123
+ }
124
+ });
125
+ upgradeEvent.hotfixTag = (_distTags$hotfix = distTags['hotfix']) !== null && _distTags$hotfix !== void 0 ? _distTags$hotfix : null;
126
+ upgradeEvent.latestTag = (_distTags$latest = distTags['latest']) !== null && _distTags$latest !== void 0 ? _distTags$latest : null;
127
+ upgradeEvent.nextTag = (_distTags$next = distTags['next']) !== null && _distTags$next !== void 0 ? _distTags$next : null;
128
+ return _context.abrupt("return", upgradeEvent);
129
+ case 9:
130
+ case "end":
131
+ return _context.stop();
132
+ }
133
+ }
134
+ }, _callee);
135
+ }));
136
+ return function (_x4) {
137
+ return _ref10.apply(this, arguments);
138
+ };
139
+ }()));
140
+ case 23:
141
+ allUpgradeEvents = _context2.sent;
142
+ return _context2.abrupt("return", {
106
143
  allPackageChanges: allPackageChanges,
107
144
  allUpgradeEvents: allUpgradeEvents
108
145
  });
109
- case 22:
146
+ case 25:
110
147
  case "end":
111
- return _context.stop();
148
+ return _context2.stop();
112
149
  }
113
150
  }
114
- }, _callee);
151
+ }, _callee2);
115
152
  }));
116
153
  return function getEventsFromHistory(_x, _x2, _x3) {
117
154
  return _ref9.apply(this, arguments);
118
155
  };
119
156
  }();
120
- function getSinceRef(_x4) {
157
+ function getSinceRef(_x5) {
121
158
  return _getSinceRef.apply(this, arguments);
122
159
  }
123
160
  function _getSinceRef() {
124
- _getSinceRef = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(flags) {
161
+ _getSinceRef = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(flags) {
125
162
  var meta, tag, tagExists;
126
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
163
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
127
164
  while (1) {
128
- switch (_context2.prev = _context2.next) {
165
+ switch (_context3.prev = _context3.next) {
129
166
  case 0:
130
167
  if (!flags.statlas) {
131
- _context2.next = 9;
168
+ _context3.next = 9;
132
169
  break;
133
170
  }
134
- _context2.next = 3;
171
+ _context3.next = 3;
135
172
  return statlas.getMeta(flags.product);
136
173
  case 3:
137
- meta = _context2.sent;
174
+ meta = _context3.sent;
138
175
  if (!(!meta || !meta.lastRunHash)) {
139
- _context2.next = 6;
176
+ _context3.next = 6;
140
177
  break;
141
178
  }
142
179
  throw new Error(chalk.red("Missing or invalid metadata file for ".concat(flags.product, ". Must use --reset for populating from start of history")));
143
180
  case 6:
144
- return _context2.abrupt("return", meta.lastRunHash);
181
+ return _context3.abrupt("return", meta.lastRunHash);
145
182
  case 9:
146
183
  tag = flags.tag || DEFAULT_TAG;
147
- _context2.next = 12;
184
+ _context3.next = 12;
148
185
  return refetchTag(tag);
149
186
  case 12:
150
- _context2.next = 14;
187
+ _context3.next = 14;
151
188
  return doesTagExist(tag);
152
189
  case 14:
153
- tagExists = _context2.sent;
190
+ tagExists = _context3.sent;
154
191
  if (tagExists) {
155
- _context2.next = 17;
192
+ _context3.next = 17;
156
193
  break;
157
194
  }
158
195
  throw new Error(chalk.red("Tag '".concat(tag, "' does not exist. Must use --reset for populating from start of history.")));
159
196
  case 17:
160
- return _context2.abrupt("return", tag);
197
+ return _context3.abrupt("return", tag);
161
198
  case 18:
162
199
  case "end":
163
- return _context2.stop();
200
+ return _context3.stop();
164
201
  }
165
202
  }
166
- }, _callee2);
203
+ }, _callee3);
167
204
  }));
168
205
  return _getSinceRef.apply(this, arguments);
169
206
  }
170
- export default function populateProduct(_x5) {
207
+ export default function populateProduct(_x6) {
171
208
  return _populateProduct.apply(this, arguments);
172
209
  }
173
210
  function _populateProduct() {
174
- _populateProduct = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(flags) {
211
+ _populateProduct = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(flags) {
175
212
  var cwd, sinceRef, log, _yield$getEventsFromH, allPackageChanges, allUpgradeEvents, csv, currentCommit;
176
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
213
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
177
214
  while (1) {
178
- switch (_context3.prev = _context3.next) {
215
+ switch (_context4.prev = _context4.next) {
179
216
  case 0:
180
217
  cwd = flags.cwd || process.cwd();
181
218
  if (!flags.reset) {
182
- _context3.next = 5;
219
+ _context4.next = 5;
183
220
  break;
184
221
  }
185
- _context3.t0 = undefined;
186
- _context3.next = 8;
222
+ _context4.t0 = undefined;
223
+ _context4.next = 8;
187
224
  break;
188
225
  case 5:
189
- _context3.next = 7;
226
+ _context4.next = 7;
190
227
  return getSinceRef(flags);
191
228
  case 7:
192
- _context3.t0 = _context3.sent;
229
+ _context4.t0 = _context4.sent;
193
230
  case 8:
194
- sinceRef = _context3.t0;
195
- _context3.next = 11;
231
+ sinceRef = _context4.t0;
232
+ _context4.next = 11;
196
233
  return getChangesSince(sinceRef);
197
234
  case 11:
198
- log = _context3.sent;
235
+ log = _context4.sent;
199
236
  if (!(log.all.length === 0)) {
200
- _context3.next = 15;
237
+ _context4.next = 15;
201
238
  break;
202
239
  }
203
240
  console.log("No package.json changes found since '".concat(sinceRef, "'."));
204
- return _context3.abrupt("return");
241
+ return _context4.abrupt("return");
205
242
  case 15:
206
- _context3.next = 17;
243
+ _context4.next = 17;
207
244
  return getEventsFromHistory(log, sinceRef, {
208
245
  cwd: cwd
209
246
  });
210
247
  case 17:
211
- _yield$getEventsFromH = _context3.sent;
248
+ _yield$getEventsFromH = _context4.sent;
212
249
  allPackageChanges = _yield$getEventsFromH.allPackageChanges;
213
250
  allUpgradeEvents = _yield$getEventsFromH.allUpgradeEvents;
214
251
  if (!flags.csv) {
215
- _context3.next = 24;
252
+ _context4.next = 24;
216
253
  break;
217
254
  }
218
255
  csv = generateCSV(allPackageChanges);
219
256
  console.log(csv);
220
- return _context3.abrupt("return");
257
+ return _context4.abrupt("return");
221
258
  case 24:
222
259
  if (!flags.dryRun) {
223
- _context3.next = 27;
260
+ _context4.next = 27;
224
261
  break;
225
262
  }
226
263
  console.log(JSON.stringify(allUpgradeEvents));
227
- return _context3.abrupt("return");
264
+ return _context4.abrupt("return");
228
265
  case 27:
229
266
  if (!(allUpgradeEvents.length > 0)) {
230
- _context3.next = 32;
267
+ _context4.next = 32;
231
268
  break;
232
269
  }
233
- _context3.next = 30;
270
+ _context4.next = 30;
234
271
  return sendAnalytics(allUpgradeEvents, {
235
272
  dev: flags.dev,
236
273
  limit: flags.limit,
@@ -238,37 +275,37 @@ function _populateProduct() {
238
275
  skipPrompt: !flags.interactive
239
276
  });
240
277
  case 30:
241
- _context3.next = 33;
278
+ _context4.next = 33;
242
279
  break;
243
280
  case 32:
244
281
  console.log("Found no AK dependency changes since last run from ref \"".concat(sinceRef, "\"'"));
245
282
  case 33:
246
283
  if (!flags.statlas) {
247
- _context3.next = 42;
284
+ _context4.next = 42;
248
285
  break;
249
286
  }
250
- _context3.next = 36;
287
+ _context4.next = 36;
251
288
  return getHash('HEAD');
252
289
  case 36:
253
- currentCommit = _context3.sent;
254
- _context3.next = 39;
290
+ currentCommit = _context4.sent;
291
+ _context4.next = 39;
255
292
  return statlas.uploadMeta(flags.product, currentCommit);
256
293
  case 39:
257
294
  console.log('Finished');
258
- _context3.next = 46;
295
+ _context4.next = 46;
259
296
  break;
260
297
  case 42:
261
298
  console.log('Updating tag to current commit...');
262
- _context3.next = 45;
299
+ _context4.next = 45;
263
300
  return tagCommit(DEFAULT_TAG);
264
301
  case 45:
265
302
  console.log("Finished. Run 'git push origin tag ".concat(sinceRef, "'."));
266
303
  case 46:
267
304
  case "end":
268
- return _context3.stop();
305
+ return _context4.stop();
269
306
  }
270
307
  }
271
- }, _callee3);
308
+ }, _callee4);
272
309
  }));
273
310
  return _populateProduct.apply(this, arguments);
274
311
  }
@@ -44,6 +44,7 @@ function getUpgradeSubType(version, previousVersion) {
44
44
  return upgradeSubType;
45
45
  }
46
46
  export function createUpgradeEvent(name, version, previousVersion, date) {
47
+ var _optionalArgs$tags, _ref, _tags$next, _tags$hotfix, _ref2;
47
48
  var optionalArgs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
48
49
  if (Number.isNaN(Date.parse(date))) {
49
50
  throw new Error("Invalid date: '".concat(date, "'"));
@@ -56,6 +57,14 @@ export function createUpgradeEvent(name, version, previousVersion, date) {
56
57
  var upgradeSubType = getUpgradeSubType(version, previousVersion);
57
58
  var eventVersion = upgradeType !== 'remove' ? version : previousVersion;
58
59
  var parsedVersion = semver.coerce(eventVersion);
60
+ var rcKey = null;
61
+ var tags = (_optionalArgs$tags = optionalArgs === null || optionalArgs === void 0 ? void 0 : optionalArgs.tags) !== null && _optionalArgs$tags !== void 0 ? _optionalArgs$tags : {};
62
+ Object.keys(tags).forEach(function (key) {
63
+ if (key.startsWith('rc')) {
64
+ rcKey = key;
65
+ return;
66
+ }
67
+ });
59
68
  return _objectSpread({
60
69
  cliVersion: packageVersion,
61
70
  dependencyName: name,
@@ -65,20 +74,24 @@ export function createUpgradeEvent(name, version, previousVersion, date) {
65
74
  patch: parsedVersion ? "".concat(parsedVersion.patch) : null,
66
75
  date: new Date(date).toISOString(),
67
76
  upgradeType: upgradeType,
68
- upgradeSubType: upgradeSubType
77
+ upgradeSubType: upgradeSubType,
78
+ latestTag: (_ref = tags && tags['latest']) !== null && _ref !== void 0 ? _ref : null,
79
+ nextTag: (_tags$next = tags['next']) !== null && _tags$next !== void 0 ? _tags$next : null,
80
+ hotfixTag: (_tags$hotfix = tags['hotfix']) !== null && _tags$hotfix !== void 0 ? _tags$hotfix : null,
81
+ rcTag: (_ref2 = rcKey && tags[rcKey]) !== null && _ref2 !== void 0 ? _ref2 : null
69
82
  }, optionalArgs);
70
83
  }
71
84
  export function sendAnalytics(_x, _x2) {
72
85
  return _sendAnalytics.apply(this, arguments);
73
86
  }
74
87
  function _sendAnalytics() {
75
- _sendAnalytics = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(analyticsEvents, _ref) {
88
+ _sendAnalytics = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(analyticsEvents, _ref3) {
76
89
  var dev, limit, product, skipPrompt, analyticsEnv, eventsToSend, client, answers, promises;
77
90
  return _regeneratorRuntime.wrap(function _callee$(_context) {
78
91
  while (1) {
79
92
  switch (_context.prev = _context.next) {
80
93
  case 0:
81
- dev = _ref.dev, limit = _ref.limit, product = _ref.product, skipPrompt = _ref.skipPrompt;
94
+ dev = _ref3.dev, limit = _ref3.limit, product = _ref3.product, skipPrompt = _ref3.skipPrompt;
82
95
  analyticsEnv = dev ? 'dev' : 'prod';
83
96
  eventsToSend = limit != null ? analyticsEvents.slice(0, limit) : analyticsEvents;
84
97
  client = analyticsClient({
@@ -1,7 +1,7 @@
1
1
  import { exec } from 'child_process';
2
- export default function getPackageVersionHistory(packageName) {
2
+ export default function getPackageVersionHistoryAndTags(packageName) {
3
3
  return new Promise(function (resolve, reject) {
4
- exec("yarn info ".concat(packageName, " --json time"), function (error, stdout, stderr) {
4
+ exec("yarn info ".concat(packageName, " --json"), function (error, stdout, stderr) {
5
5
  if (error) {
6
6
  reject(error);
7
7
  }
@@ -10,7 +10,11 @@ export default function getPackageVersionHistory(packageName) {
10
10
  }
11
11
  var json;
12
12
  try {
13
- json = JSON.parse(stdout).data;
13
+ var parseData = JSON.parse(stdout).data;
14
+ json = {
15
+ time: parseData['time'],
16
+ 'dist-tags': parseData['dist-tags']
17
+ };
14
18
  } catch (e) {
15
19
  reject("Error parsing json output: ".concat(e));
16
20
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/dependency-version-analytics",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "sideEffects": false
5
5
  }
@@ -12,7 +12,14 @@ export declare type UpgradeEvent = {
12
12
  upgradeType: UpgradeType;
13
13
  upgradeSubType: UpgradeSubType;
14
14
  cliVersion: string;
15
+ latestTag: string | null;
16
+ nextTag: string | null;
17
+ hotfixTag: string | null;
18
+ rcTag: string | null;
15
19
  dependencyType?: DependencyType;
16
20
  historical?: boolean;
17
21
  commitHash?: string;
18
22
  };
23
+ export declare type DistTagsType = {
24
+ [tag: string]: string;
25
+ };
@@ -1,8 +1,9 @@
1
- import { UpgradeEvent, DependencyType } from '../types';
1
+ import { UpgradeEvent, DependencyType, DistTagsType } from '../types';
2
2
  export declare function createUpgradeEvent(name: string, version: string | undefined, previousVersion: string | undefined, date: string, optionalArgs?: {
3
3
  commitHash?: string;
4
4
  dependencyType?: DependencyType;
5
5
  historical?: boolean;
6
+ tags?: DistTagsType;
6
7
  }): UpgradeEvent | null;
7
8
  export declare function sendAnalytics(analyticsEvents: UpgradeEvent[], { dev, limit, product, skipPrompt, }: {
8
9
  dev?: boolean;
@@ -1,4 +1,8 @@
1
- export declare type PackageVersionHistory = {
2
- [version: string]: string;
1
+ import { DistTagsType } from '../types';
2
+ export declare type PackageVersionHistoryAndTagsType = {
3
+ time: {
4
+ [version: string]: string;
5
+ };
6
+ 'dist-tags': DistTagsType;
3
7
  };
4
- export default function getPackageVersionHistory(packageName: string): Promise<PackageVersionHistory>;
8
+ export default function getPackageVersionHistoryAndTags(packageName: string): Promise<PackageVersionHistoryAndTagsType>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/dependency-version-analytics",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Tool to pull atlaskit version history from a repo",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
package/report.api.md CHANGED
@@ -83,6 +83,10 @@ export type UpgradeEvent = {
83
83
  upgradeType: UpgradeType;
84
84
  upgradeSubType: UpgradeSubType;
85
85
  cliVersion: string;
86
+ latestTag: null | string;
87
+ nextTag: null | string;
88
+ hotfixTag: null | string;
89
+ rcTag: null | string;
86
90
  dependencyType?: DependencyType;
87
91
  historical?: boolean;
88
92
  commitHash?: string;
@@ -58,6 +58,10 @@ export type UpgradeEvent = {
58
58
  upgradeType: UpgradeType;
59
59
  upgradeSubType: UpgradeSubType;
60
60
  cliVersion: string;
61
+ latestTag: null | string;
62
+ nextTag: null | string;
63
+ hotfixTag: null | string;
64
+ rcTag: null | string;
61
65
  dependencyType?: DependencyType;
62
66
  historical?: boolean;
63
67
  commitHash?: string;