@atlaskit/dependency-version-analytics 1.0.0 → 1.2.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 (50) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +7 -4
  3. package/dist/cjs/cli.js +52 -17
  4. package/dist/cjs/commands/populate-historic-data/index.js +2 -2
  5. package/dist/cjs/commands/populate-historic-data/lib/dependency-store.js +227 -451
  6. package/dist/cjs/commands/populate-historic-data/package.js +31 -71
  7. package/dist/cjs/commands/populate-historic-data/product.js +130 -253
  8. package/dist/cjs/commands/populate-historic-data/util/allowed-scopes.js +15 -0
  9. package/dist/cjs/commands/populate-historic-data/util/generate-csv.js +16 -21
  10. package/dist/cjs/constants.js +2 -2
  11. package/dist/cjs/index.js +3 -3
  12. package/dist/cjs/util/analytics.js +82 -94
  13. package/dist/cjs/util/get-file-history-from-git.js +4 -4
  14. package/dist/cjs/util/get-package-version-history.js +11 -7
  15. package/dist/cjs/util/git.js +75 -205
  16. package/dist/cjs/util/statlas.js +27 -97
  17. package/dist/cjs/util/yarn.js +40 -101
  18. package/dist/cjs/version.json +1 -1
  19. package/dist/es2019/cli.js +10 -4
  20. package/dist/es2019/commands/populate-historic-data/lib/dependency-store.js +6 -4
  21. package/dist/es2019/commands/populate-historic-data/package.js +11 -6
  22. package/dist/es2019/commands/populate-historic-data/product.js +25 -7
  23. package/dist/es2019/commands/populate-historic-data/util/allowed-scopes.js +7 -0
  24. package/dist/es2019/commands/populate-historic-data/util/generate-csv.js +1 -1
  25. package/dist/es2019/util/analytics.js +13 -0
  26. package/dist/es2019/util/get-package-version-history.js +7 -3
  27. package/dist/es2019/version.json +1 -1
  28. package/dist/esm/cli.js +8 -3
  29. package/dist/esm/commands/populate-historic-data/lib/dependency-store.js +20 -15
  30. package/dist/esm/commands/populate-historic-data/package.js +27 -21
  31. package/dist/esm/commands/populate-historic-data/product.js +121 -81
  32. package/dist/esm/commands/populate-historic-data/util/allowed-scopes.js +11 -0
  33. package/dist/esm/commands/populate-historic-data/util/generate-csv.js +1 -1
  34. package/dist/esm/util/analytics.js +19 -5
  35. package/dist/esm/util/get-package-version-history.js +7 -3
  36. package/dist/esm/util/git.js +14 -13
  37. package/dist/esm/util/statlas.js +8 -7
  38. package/dist/esm/util/yarn.js +6 -5
  39. package/dist/esm/version.json +1 -1
  40. package/dist/types/commands/populate-historic-data/lib/dependency-store.d.ts +3 -2
  41. package/dist/types/commands/populate-historic-data/types.d.ts +3 -2
  42. package/dist/types/commands/populate-historic-data/util/allowed-scopes.d.ts +2 -0
  43. package/dist/types/commands/populate-historic-data/util/generate-csv.d.ts +2 -2
  44. package/dist/types/types.d.ts +7 -0
  45. package/dist/types/util/analytics.d.ts +2 -1
  46. package/dist/types/util/get-package-version-history.d.ts +7 -3
  47. package/package.json +2 -2
  48. package/report.api.md +5 -0
  49. package/tmp/api-report-tmp.d.ts +5 -0
  50. package/tokenize-arg-string.ts +0 -0
@@ -5,85 +5,45 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = populatePackage;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
8
  var _semver = _interopRequireDefault(require("semver"));
12
9
  var _getPackageVersionHistory = _interopRequireDefault(require("../../util/get-package-version-history"));
13
10
  var _analytics = require("../../util/analytics");
14
- var createAnalyticsEvents = function createAnalyticsEvents(packageName, packageVersionHistory, since) {
15
- var sortedPackageVersionHistory = Object.entries(packageVersionHistory).filter(function (_ref) {
16
- var _ref2 = (0, _slicedToArray2.default)(_ref, 1),
17
- version = _ref2[0];
18
- return _semver.default.valid(version);
19
- }).sort(function (a, b) {
20
- return Number(new Date(a[1])) - Number(new Date(b[1]));
21
- });
22
- var upgradeEvents = sortedPackageVersionHistory.map(function (_ref3, i) {
23
- var _ref4 = (0, _slicedToArray2.default)(_ref3, 2),
24
- version = _ref4[0],
25
- time = _ref4[1];
11
+ var _allowedScopes = require("./util/allowed-scopes");
12
+ const createAnalyticsEvents = (packageName, packageVersionHistoryAndTags, since) => {
13
+ const packageVersionHistory = packageVersionHistoryAndTags['time'];
14
+ const tags = packageVersionHistoryAndTags['dist-tags'];
15
+ const sortedPackageVersionHistory = Object.entries(packageVersionHistory).filter(([version]) => _semver.default.valid(version)).sort((a, b) => Number(new Date(a[1])) - Number(new Date(b[1])));
16
+ const upgradeEvents = sortedPackageVersionHistory.map(([version, time], i) => {
26
17
  if (since && Number(new Date(time)) <= Number(new Date(since))) {
27
18
  return null;
28
19
  }
29
- var previousVersion = sortedPackageVersionHistory[i - 1] && sortedPackageVersionHistory[i - 1][0];
20
+ const previousVersion = sortedPackageVersionHistory[i - 1] && sortedPackageVersionHistory[i - 1][0];
30
21
  return (0, _analytics.createUpgradeEvent)(packageName, version, previousVersion, time, {
31
- historical: true
22
+ historical: true,
23
+ tags
32
24
  });
33
- }).filter(function (e) {
34
- return e != null;
35
- });
25
+ }).filter(e => e != null);
36
26
  return upgradeEvents;
37
27
  };
38
- function populatePackage(_x) {
39
- return _populatePackage.apply(this, arguments);
40
- }
41
- function _populatePackage() {
42
- _populatePackage = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(flags) {
43
- var packageVersionHistory, analyticsEvents;
44
- return _regenerator.default.wrap(function _callee$(_context) {
45
- while (1) {
46
- switch (_context.prev = _context.next) {
47
- case 0:
48
- if (flags.pkg.startsWith('@atlaskit/')) {
49
- _context.next = 2;
50
- break;
51
- }
52
- throw new Error("Package must start with '@atlaskit/'");
53
- case 2:
54
- _context.next = 4;
55
- return (0, _getPackageVersionHistory.default)(flags.pkg);
56
- case 4:
57
- packageVersionHistory = _context.sent;
58
- if (!(flags.since && Number.isNaN(Number(new Date(flags.since))))) {
59
- _context.next = 7;
60
- break;
61
- }
62
- throw new Error("'since' flag is an invalid date");
63
- case 7:
64
- analyticsEvents = createAnalyticsEvents(flags.pkg, packageVersionHistory, flags.since);
65
- if (!flags.dryRun) {
66
- _context.next = 11;
67
- break;
68
- }
69
- console.log(JSON.stringify(analyticsEvents));
70
- return _context.abrupt("return", analyticsEvents);
71
- case 11:
72
- _context.next = 13;
73
- return (0, _analytics.sendAnalytics)(analyticsEvents, {
74
- dev: flags.dev,
75
- limit: flags.limit,
76
- product: 'atlaskit',
77
- skipPrompt: !flags.interactive
78
- });
79
- case 13:
80
- return _context.abrupt("return", analyticsEvents);
81
- case 14:
82
- case "end":
83
- return _context.stop();
84
- }
85
- }
86
- }, _callee);
87
- }));
88
- return _populatePackage.apply(this, arguments);
28
+ async function populatePackage(flags) {
29
+ const supportedScopes = (0, _allowedScopes.getSupportedScopes)(flags.includeRestrictedScopes);
30
+ if (!(0, _allowedScopes.isPackageFromSupportedScopes)(flags.pkg, supportedScopes)) {
31
+ throw new Error(`Package must start with ${supportedScopes.join(', ')}`);
32
+ }
33
+ const packageVersionHistory = await (0, _getPackageVersionHistory.default)(flags.pkg);
34
+ if (flags.since && Number.isNaN(Number(new Date(flags.since)))) {
35
+ throw new Error(`'since' flag is an invalid date`);
36
+ }
37
+ const analyticsEvents = createAnalyticsEvents(flags.pkg, packageVersionHistory, flags.since);
38
+ if (flags.dryRun) {
39
+ console.log(JSON.stringify(analyticsEvents));
40
+ return analyticsEvents;
41
+ }
42
+ await (0, _analytics.sendAnalytics)(analyticsEvents, {
43
+ dev: flags.dev,
44
+ limit: flags.limit,
45
+ product: 'atlaskit',
46
+ skipPrompt: !flags.interactive
47
+ });
48
+ return analyticsEvents;
89
49
  }
@@ -1,15 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = populateProduct;
9
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
8
  var _constants = require("../../constants");
14
9
  var _chalk = _interopRequireDefault(require("chalk"));
15
10
  var _analytics = require("../../util/analytics");
@@ -18,267 +13,149 @@ var statlas = _interopRequireWildcard(require("../../util/statlas"));
18
13
  var _generateCsv = require("./util/generate-csv");
19
14
  var _assert = require("../../util/assert");
20
15
  var _dependencyStore = require("./lib/dependency-store");
21
- 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
- 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
- var getUpgradeEventsFromPkgChange = function getUpgradeEventsFromPkgChange(oldDeps, newDeps, _ref) {
24
- var date = _ref.date,
25
- commitHash = _ref.commitHash;
26
- var addOrUpgradeEvents = Object.entries(newDeps).map(function (_ref2) {
27
- var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
28
- name = _ref3[0],
29
- _ref3$ = _ref3[1],
30
- version = _ref3$.version,
31
- type = _ref3$.type;
32
- var prevDep = oldDeps[name];
16
+ var _getPackageVersionHistory = _interopRequireDefault(require("../../util/get-package-version-history"));
17
+ var _allowedScopes = require("./util/allowed-scopes");
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+ 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; }
20
+ const getUpgradeEventsFromPkgChange = (oldDeps, newDeps, {
21
+ date,
22
+ commitHash
23
+ }) => {
24
+ const addOrUpgradeEvents = Object.entries(newDeps).map(([name, {
25
+ version,
26
+ type
27
+ }]) => {
28
+ const prevDep = oldDeps[name];
33
29
  // Only treat a dependency as previous if the dependency type matches
34
30
  // Otherwise, we want separate add/remove events
35
- var prevVersion = prevDep && prevDep.type === type ? prevDep.version : undefined;
31
+ const prevVersion = prevDep && prevDep.type === type ? prevDep.version : undefined;
36
32
  return (0, _analytics.createUpgradeEvent)(name, version, prevVersion, date, {
37
- commitHash: commitHash,
33
+ commitHash,
38
34
  dependencyType: type,
39
35
  historical: true
40
36
  });
41
- }).filter(function (e) {
42
- return e != null;
43
- });
44
- var removeEvents = Object.entries(oldDeps).filter(function (_ref4) {
45
- var _ref5 = (0, _slicedToArray2.default)(_ref4, 2),
46
- name = _ref5[0],
47
- type = _ref5[1].type;
48
- return (
49
- // Treat the same dep under a different dependency type as a new dep
50
- newDeps[name] == null || newDeps[name].type !== type
51
- );
52
- }).map(function (_ref6) {
53
- var _ref7 = (0, _slicedToArray2.default)(_ref6, 2),
54
- name = _ref7[0],
55
- _ref7$ = _ref7[1],
56
- version = _ref7$.version,
57
- type = _ref7$.type;
37
+ }).filter(e => e != null);
38
+ const removeEvents = Object.entries(oldDeps).filter(([name, {
39
+ type
40
+ }]) =>
41
+ // Treat the same dep under a different dependency type as a new dep
42
+ newDeps[name] == null || newDeps[name].type !== type).map(([name, {
43
+ version,
44
+ type
45
+ }]) => {
58
46
  return (0, _analytics.createUpgradeEvent)(name, undefined, version, date, {
59
- commitHash: commitHash,
47
+ commitHash,
60
48
  dependencyType: type,
61
49
  historical: true
62
50
  });
63
- }).filter(function (e) {
64
- return e != null;
65
- });
66
- return [].concat((0, _toConsumableArray2.default)(addOrUpgradeEvents), (0, _toConsumableArray2.default)(removeEvents));
51
+ }).filter(e => e != null);
52
+ return [...addOrUpgradeEvents, ...removeEvents];
67
53
  };
68
- 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) {
72
- while (1) {
73
- switch (_context.prev = _context.next) {
74
- case 0:
75
- cwd = _ref8.cwd;
76
- allPackageChanges = [];
77
- allUpgradeEvents = [];
78
- (0, _assert.assert)(packageChangesLog.all.length > 0, '');
79
- dependencyStore = new _dependencyStore.DependencyStore(cwd);
80
- _context.next = 7;
81
- return dependencyStore.initialise(prevRunHash);
82
- case 7:
83
- dependencies = _context.sent;
84
- i = 0;
85
- case 9:
86
- if (!(i < packageChangesLog.all.length)) {
87
- _context.next = 21;
88
- break;
89
- }
90
- item = packageChangesLog.all[i];
91
- if (allPackageChanges.length > 0) {
92
- dependencies = allPackageChanges[allPackageChanges.length - 1].akDeps;
93
- }
94
- _context.next = 14;
95
- return dependencyStore.update(item);
96
- case 14:
97
- newDependencies = _context.sent;
98
- packageChange = {
99
- date: new Date(item.date).toISOString(),
100
- akDeps: newDependencies
101
- };
102
- upgradeEvents = getUpgradeEventsFromPkgChange(dependencies, newDependencies, {
103
- date: packageChange.date,
104
- commitHash: item.hash
105
- });
106
- if (upgradeEvents.length > 0) {
107
- allUpgradeEvents.push.apply(allUpgradeEvents, (0, _toConsumableArray2.default)(upgradeEvents));
108
- allPackageChanges.push(packageChange);
109
- }
110
- case 18:
111
- i++;
112
- _context.next = 9;
113
- break;
114
- case 21:
115
- return _context.abrupt("return", {
116
- allPackageChanges: allPackageChanges,
117
- allUpgradeEvents: allUpgradeEvents
118
- });
119
- case 22:
120
- case "end":
121
- return _context.stop();
122
- }
54
+ const getEventsFromHistory = async (packageChangesLog, prevRunHash, {
55
+ cwd
56
+ }, supportedScopes) => {
57
+ const allPackageChanges = [];
58
+ let allUpgradeEvents = [];
59
+ (0, _assert.assert)(packageChangesLog.all.length > 0, '');
60
+ let dependencyStore = new _dependencyStore.DependencyStore(cwd, supportedScopes);
61
+ let dependencies = await dependencyStore.initialise(prevRunHash);
62
+ for (let i = 0; i < packageChangesLog.all.length; i++) {
63
+ let item = packageChangesLog.all[i];
64
+ if (allPackageChanges.length > 0) {
65
+ dependencies = allPackageChanges[allPackageChanges.length - 1].deps;
66
+ }
67
+ const newDependencies = await dependencyStore.update(item);
68
+ const packageChange = {
69
+ date: new Date(item.date).toISOString(),
70
+ deps: newDependencies
71
+ };
72
+ const upgradeEvents = getUpgradeEventsFromPkgChange(dependencies, newDependencies, {
73
+ date: packageChange.date,
74
+ commitHash: item.hash
75
+ });
76
+ if (upgradeEvents.length > 0) {
77
+ allUpgradeEvents.push(...upgradeEvents);
78
+ allPackageChanges.push(packageChange);
79
+ }
80
+ }
81
+ // add dist-tags to upgrade event
82
+ allUpgradeEvents = await Promise.all(allUpgradeEvents.map(async upgradeEvent => {
83
+ const getPackageTags = await (0, _getPackageVersionHistory.default)(upgradeEvent.dependencyName);
84
+ const distTags = getPackageTags['dist-tags'];
85
+ Object.keys(distTags).forEach(key => {
86
+ if (key.startsWith('rc')) {
87
+ upgradeEvent.rcTag = distTags[key];
123
88
  }
124
- }, _callee);
89
+ });
90
+ upgradeEvent.hotfixTag = distTags['hotfix'] ?? null;
91
+ upgradeEvent.latestTag = distTags['latest'] ?? null;
92
+ upgradeEvent.nextTag = distTags['next'] ?? null;
93
+ return upgradeEvent;
125
94
  }));
126
- return function getEventsFromHistory(_x, _x2, _x3) {
127
- return _ref9.apply(this, arguments);
95
+ return {
96
+ allPackageChanges,
97
+ allUpgradeEvents
128
98
  };
129
- }();
130
- function getSinceRef(_x4) {
131
- return _getSinceRef.apply(this, arguments);
132
- }
133
- function _getSinceRef() {
134
- _getSinceRef = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(flags) {
135
- var meta, tag, tagExists;
136
- return _regenerator.default.wrap(function _callee2$(_context2) {
137
- while (1) {
138
- switch (_context2.prev = _context2.next) {
139
- case 0:
140
- if (!flags.statlas) {
141
- _context2.next = 9;
142
- break;
143
- }
144
- _context2.next = 3;
145
- return statlas.getMeta(flags.product);
146
- case 3:
147
- meta = _context2.sent;
148
- if (!(!meta || !meta.lastRunHash)) {
149
- _context2.next = 6;
150
- break;
151
- }
152
- 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
- case 6:
154
- return _context2.abrupt("return", meta.lastRunHash);
155
- case 9:
156
- tag = flags.tag || _constants.DEFAULT_TAG;
157
- _context2.next = 12;
158
- return (0, _git.refetchTag)(tag);
159
- case 12:
160
- _context2.next = 14;
161
- return (0, _git.doesTagExist)(tag);
162
- case 14:
163
- tagExists = _context2.sent;
164
- if (tagExists) {
165
- _context2.next = 17;
166
- break;
167
- }
168
- throw new Error(_chalk.default.red("Tag '".concat(tag, "' does not exist. Must use --reset for populating from start of history.")));
169
- case 17:
170
- return _context2.abrupt("return", tag);
171
- case 18:
172
- case "end":
173
- return _context2.stop();
174
- }
175
- }
176
- }, _callee2);
177
- }));
178
- return _getSinceRef.apply(this, arguments);
179
- }
180
- function populateProduct(_x5) {
181
- return _populateProduct.apply(this, arguments);
99
+ };
100
+ async function getSinceRef(flags) {
101
+ if (flags.statlas) {
102
+ const meta = await statlas.getMeta(flags.product);
103
+ if (!meta || !meta.lastRunHash) {
104
+ throw new Error(_chalk.default.red(`Missing or invalid metadata file for ${flags.product}. Must use --reset for populating from start of history`));
105
+ }
106
+ return meta.lastRunHash;
107
+ } else {
108
+ const tag = flags.tag || _constants.DEFAULT_TAG;
109
+ await (0, _git.refetchTag)(tag);
110
+ const tagExists = await (0, _git.doesTagExist)(tag);
111
+ if (!tagExists) {
112
+ throw new Error(_chalk.default.red(`Tag '${tag}' does not exist. Must use --reset for populating from start of history.`));
113
+ }
114
+ return tag;
115
+ }
182
116
  }
183
- function _populateProduct() {
184
- _populateProduct = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(flags) {
185
- var cwd, sinceRef, log, _yield$getEventsFromH, allPackageChanges, allUpgradeEvents, csv, currentCommit;
186
- return _regenerator.default.wrap(function _callee3$(_context3) {
187
- while (1) {
188
- switch (_context3.prev = _context3.next) {
189
- case 0:
190
- cwd = flags.cwd || process.cwd();
191
- if (!flags.reset) {
192
- _context3.next = 5;
193
- break;
194
- }
195
- _context3.t0 = undefined;
196
- _context3.next = 8;
197
- break;
198
- case 5:
199
- _context3.next = 7;
200
- return getSinceRef(flags);
201
- case 7:
202
- _context3.t0 = _context3.sent;
203
- case 8:
204
- sinceRef = _context3.t0;
205
- _context3.next = 11;
206
- return (0, _git.getChangesSince)(sinceRef);
207
- case 11:
208
- log = _context3.sent;
209
- if (!(log.all.length === 0)) {
210
- _context3.next = 15;
211
- break;
212
- }
213
- console.log("No package.json changes found since '".concat(sinceRef, "'."));
214
- return _context3.abrupt("return");
215
- case 15:
216
- _context3.next = 17;
217
- return getEventsFromHistory(log, sinceRef, {
218
- cwd: cwd
219
- });
220
- case 17:
221
- _yield$getEventsFromH = _context3.sent;
222
- allPackageChanges = _yield$getEventsFromH.allPackageChanges;
223
- allUpgradeEvents = _yield$getEventsFromH.allUpgradeEvents;
224
- if (!flags.csv) {
225
- _context3.next = 24;
226
- break;
227
- }
228
- csv = (0, _generateCsv.generateCSV)(allPackageChanges);
229
- console.log(csv);
230
- return _context3.abrupt("return");
231
- case 24:
232
- if (!flags.dryRun) {
233
- _context3.next = 27;
234
- break;
235
- }
236
- console.log(JSON.stringify(allUpgradeEvents));
237
- return _context3.abrupt("return");
238
- case 27:
239
- if (!(allUpgradeEvents.length > 0)) {
240
- _context3.next = 32;
241
- break;
242
- }
243
- _context3.next = 30;
244
- return (0, _analytics.sendAnalytics)(allUpgradeEvents, {
245
- dev: flags.dev,
246
- limit: flags.limit,
247
- product: flags.product,
248
- skipPrompt: !flags.interactive
249
- });
250
- case 30:
251
- _context3.next = 33;
252
- break;
253
- case 32:
254
- console.log("Found no AK dependency changes since last run from ref \"".concat(sinceRef, "\"'"));
255
- case 33:
256
- if (!flags.statlas) {
257
- _context3.next = 42;
258
- break;
259
- }
260
- _context3.next = 36;
261
- return (0, _git.getHash)('HEAD');
262
- case 36:
263
- currentCommit = _context3.sent;
264
- _context3.next = 39;
265
- return statlas.uploadMeta(flags.product, currentCommit);
266
- case 39:
267
- console.log('Finished');
268
- _context3.next = 46;
269
- break;
270
- case 42:
271
- console.log('Updating tag to current commit...');
272
- _context3.next = 45;
273
- return (0, _git.tagCommit)(_constants.DEFAULT_TAG);
274
- case 45:
275
- console.log("Finished. Run 'git push origin tag ".concat(sinceRef, "'."));
276
- case 46:
277
- case "end":
278
- return _context3.stop();
279
- }
280
- }
281
- }, _callee3);
282
- }));
283
- return _populateProduct.apply(this, arguments);
117
+ async function populateProduct(flags) {
118
+ const cwd = flags.cwd || process.cwd();
119
+ const sinceRef = flags.reset ? undefined : await getSinceRef(flags);
120
+ const log = await (0, _git.getChangesSince)(sinceRef);
121
+ const supportedScopes = (0, _allowedScopes.getSupportedScopes)(flags.includeRestrictedScopes);
122
+ if (log.all.length === 0) {
123
+ console.log(`No package.json changes found since '${sinceRef}'.`);
124
+ return;
125
+ }
126
+ const {
127
+ allPackageChanges,
128
+ allUpgradeEvents
129
+ } = await getEventsFromHistory(log, sinceRef, {
130
+ cwd
131
+ }, supportedScopes);
132
+ if (flags.csv) {
133
+ const csv = (0, _generateCsv.generateCSV)(allPackageChanges);
134
+ console.log(csv);
135
+ return;
136
+ }
137
+ if (flags.dryRun) {
138
+ console.log(JSON.stringify(allUpgradeEvents));
139
+ return;
140
+ }
141
+ if (allUpgradeEvents.length > 0) {
142
+ await (0, _analytics.sendAnalytics)(allUpgradeEvents, {
143
+ dev: flags.dev,
144
+ limit: flags.limit,
145
+ product: flags.product,
146
+ skipPrompt: !flags.interactive
147
+ });
148
+ } else {
149
+ console.log(`Found no dependency changes from supported scopes ${supportedScopes.join(', ')} since last run from ref "${sinceRef}"'`);
150
+ }
151
+ if (flags.statlas) {
152
+ // Upload latest commit to statlas
153
+ const currentCommit = await (0, _git.getHash)('HEAD');
154
+ await statlas.uploadMeta(flags.product, currentCommit);
155
+ console.log('Finished');
156
+ } else {
157
+ console.log('Updating tag to current commit...');
158
+ await (0, _git.tagCommit)(_constants.DEFAULT_TAG);
159
+ console.log(`Finished. Run 'git push origin tag ${sinceRef}'.`);
160
+ }
284
161
  }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isPackageFromSupportedScopes = exports.getSupportedScopes = void 0;
7
+ const defaultScopes = ['@atlaskit', '@atlassian', '@atlassiansox'];
8
+ const getSupportedScopes = (enableNonAtlaskitPackages = false) => {
9
+ return enableNonAtlaskitPackages ? defaultScopes : ['@atlaskit'];
10
+ };
11
+ exports.getSupportedScopes = getSupportedScopes;
12
+ const isPackageFromSupportedScopes = (packageName, supportedScopes = defaultScopes) => {
13
+ return supportedScopes.some(scope => packageName.startsWith(scope));
14
+ };
15
+ exports.isPackageFromSupportedScopes = isPackageFromSupportedScopes;
@@ -1,24 +1,19 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.generateCSV = void 0;
8
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
7
  /** Generates a CSV of product package changes over time */
10
- var generateCSV = function generateCSV(packageChanges) {
11
- var csvData = [['']];
12
- packageChanges.forEach(function (packageChange) {
13
- var firstColumn = csvData[0];
14
- var currentRow = firstColumn.push(packageChange.date) - 1;
15
- Object.entries(packageChange.akDeps).forEach(function (_ref) {
16
- var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
17
- name = _ref2[0],
18
- version = _ref2[1].version;
19
- var depColumnIndex = csvData.findIndex(function (item) {
20
- return item[0] === name;
21
- });
8
+ const generateCSV = packageChanges => {
9
+ const csvData = [['']];
10
+ packageChanges.forEach(packageChange => {
11
+ const firstColumn = csvData[0];
12
+ const currentRow = firstColumn.push(packageChange.date) - 1;
13
+ Object.entries(packageChange.deps).forEach(([name, {
14
+ version
15
+ }]) => {
16
+ let depColumnIndex = csvData.findIndex(item => item[0] === name);
22
17
  if (depColumnIndex === -1) {
23
18
  depColumnIndex = csvData.push([name]) - 1;
24
19
  }
@@ -27,8 +22,8 @@ var generateCSV = function generateCSV(packageChanges) {
27
22
  csvData[depColumnIndex][currentRow] = version;
28
23
  });
29
24
  });
30
- for (var i = 0; i < csvData.length; i++) {
31
- for (var j = 0; j < csvData.length; j++) {
25
+ for (let i = 0; i < csvData.length; i++) {
26
+ for (let j = 0; j < csvData.length; j++) {
32
27
  if (typeof csvData[i][j] !== 'string') {
33
28
  // console.log('found empty cell');
34
29
  csvData[i][j] = '';
@@ -36,17 +31,17 @@ var generateCSV = function generateCSV(packageChanges) {
36
31
  }
37
32
  if (i !== 0 && csvData[0].length < csvData[i].length) {}
38
33
  }
39
- var csvStrings = [];
40
- csvData.forEach(function (column) {
34
+ const csvStrings = [];
35
+ csvData.forEach(column => {
41
36
  if (!column) {
42
37
  return;
43
38
  }
44
- for (var rowIndex = 0; rowIndex < csvData[0].length; rowIndex++) {
45
- var rowItem = column[rowIndex] || '';
39
+ for (let rowIndex = 0; rowIndex < csvData[0].length; rowIndex++) {
40
+ const rowItem = column[rowIndex] || '';
46
41
  if (typeof csvStrings[rowIndex] !== 'string') {
47
42
  csvStrings[rowIndex] = '';
48
43
  }
49
- csvStrings[rowIndex] += "\"".concat(rowItem, "\",");
44
+ csvStrings[rowIndex] += `"${rowItem}",`;
50
45
  }
51
46
  });
52
47
  return csvStrings.join('\n');
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.DEP_TYPES = exports.DEFAULT_TAG = void 0;
7
- var DEFAULT_TAG = 'atlaskit-dependency-version-analytics-last-run';
7
+ const DEFAULT_TAG = 'atlaskit-dependency-version-analytics-last-run';
8
8
  exports.DEFAULT_TAG = DEFAULT_TAG;
9
- var DEP_TYPES = [{
9
+ const DEP_TYPES = [{
10
10
  packageJsonKey: 'devDependencies',
11
11
  depTypeName: 'devDependency'
12
12
  }, {