@atlaskit/dependency-version-analytics 1.1.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 (44) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +5 -3
  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 +30 -73
  7. package/dist/cjs/commands/populate-historic-data/product.js +129 -289
  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 +77 -102
  13. package/dist/cjs/util/get-file-history-from-git.js +4 -4
  14. package/dist/cjs/util/get-package-version-history.js +5 -5
  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 +4 -2
  22. package/dist/es2019/commands/populate-historic-data/product.js +8 -6
  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/version.json +1 -1
  26. package/dist/esm/cli.js +8 -3
  27. package/dist/esm/commands/populate-historic-data/lib/dependency-store.js +20 -15
  28. package/dist/esm/commands/populate-historic-data/package.js +20 -17
  29. package/dist/esm/commands/populate-historic-data/product.js +45 -42
  30. package/dist/esm/commands/populate-historic-data/util/allowed-scopes.js +11 -0
  31. package/dist/esm/commands/populate-historic-data/util/generate-csv.js +1 -1
  32. package/dist/esm/util/analytics.js +4 -3
  33. package/dist/esm/util/git.js +14 -13
  34. package/dist/esm/util/statlas.js +8 -7
  35. package/dist/esm/util/yarn.js +6 -5
  36. package/dist/esm/version.json +1 -1
  37. package/dist/types/commands/populate-historic-data/lib/dependency-store.d.ts +3 -2
  38. package/dist/types/commands/populate-historic-data/types.d.ts +3 -2
  39. package/dist/types/commands/populate-historic-data/util/allowed-scopes.d.ts +2 -0
  40. package/dist/types/commands/populate-historic-data/util/generate-csv.d.ts +2 -2
  41. package/package.json +2 -2
  42. package/report.api.md +1 -0
  43. package/tmp/api-report-tmp.d.ts +1 -0
  44. package/tokenize-arg-string.ts +0 -0
@@ -5,88 +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, packageVersionHistoryAndTags, since) {
15
- var packageVersionHistory = packageVersionHistoryAndTags['time'];
16
- var tags = packageVersionHistoryAndTags['dist-tags'];
17
- var sortedPackageVersionHistory = Object.entries(packageVersionHistory).filter(function (_ref) {
18
- var _ref2 = (0, _slicedToArray2.default)(_ref, 1),
19
- version = _ref2[0];
20
- return _semver.default.valid(version);
21
- }).sort(function (a, b) {
22
- return Number(new Date(a[1])) - Number(new Date(b[1]));
23
- });
24
- var upgradeEvents = sortedPackageVersionHistory.map(function (_ref3, i) {
25
- var _ref4 = (0, _slicedToArray2.default)(_ref3, 2),
26
- version = _ref4[0],
27
- 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) => {
28
17
  if (since && Number(new Date(time)) <= Number(new Date(since))) {
29
18
  return null;
30
19
  }
31
- var previousVersion = sortedPackageVersionHistory[i - 1] && sortedPackageVersionHistory[i - 1][0];
20
+ const previousVersion = sortedPackageVersionHistory[i - 1] && sortedPackageVersionHistory[i - 1][0];
32
21
  return (0, _analytics.createUpgradeEvent)(packageName, version, previousVersion, time, {
33
22
  historical: true,
34
- tags: tags
23
+ tags
35
24
  });
36
- }).filter(function (e) {
37
- return e != null;
38
- });
25
+ }).filter(e => e != null);
39
26
  return upgradeEvents;
40
27
  };
41
- function populatePackage(_x) {
42
- return _populatePackage.apply(this, arguments);
43
- }
44
- function _populatePackage() {
45
- _populatePackage = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(flags) {
46
- var packageVersionHistory, analyticsEvents;
47
- return _regenerator.default.wrap(function _callee$(_context) {
48
- while (1) {
49
- switch (_context.prev = _context.next) {
50
- case 0:
51
- if (flags.pkg.startsWith('@atlaskit/')) {
52
- _context.next = 2;
53
- break;
54
- }
55
- throw new Error("Package must start with '@atlaskit/'");
56
- case 2:
57
- _context.next = 4;
58
- return (0, _getPackageVersionHistory.default)(flags.pkg);
59
- case 4:
60
- packageVersionHistory = _context.sent;
61
- if (!(flags.since && Number.isNaN(Number(new Date(flags.since))))) {
62
- _context.next = 7;
63
- break;
64
- }
65
- throw new Error("'since' flag is an invalid date");
66
- case 7:
67
- analyticsEvents = createAnalyticsEvents(flags.pkg, packageVersionHistory, flags.since);
68
- if (!flags.dryRun) {
69
- _context.next = 11;
70
- break;
71
- }
72
- console.log(JSON.stringify(analyticsEvents));
73
- return _context.abrupt("return", analyticsEvents);
74
- case 11:
75
- _context.next = 13;
76
- return (0, _analytics.sendAnalytics)(analyticsEvents, {
77
- dev: flags.dev,
78
- limit: flags.limit,
79
- product: 'atlaskit',
80
- skipPrompt: !flags.interactive
81
- });
82
- case 13:
83
- return _context.abrupt("return", analyticsEvents);
84
- case 14:
85
- case "end":
86
- return _context.stop();
87
- }
88
- }
89
- }, _callee);
90
- }));
91
- 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;
92
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");
@@ -19,303 +14,148 @@ var _generateCsv = require("./util/generate-csv");
19
14
  var _assert = require("../../util/assert");
20
15
  var _dependencyStore = require("./lib/dependency-store");
21
16
  var _getPackageVersionHistory = _interopRequireDefault(require("../../util/get-package-version-history"));
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); }
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; }
24
- var getUpgradeEventsFromPkgChange = function getUpgradeEventsFromPkgChange(oldDeps, newDeps, _ref) {
25
- var date = _ref.date,
26
- commitHash = _ref.commitHash;
27
- var addOrUpgradeEvents = Object.entries(newDeps).map(function (_ref2) {
28
- var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
29
- name = _ref3[0],
30
- _ref3$ = _ref3[1],
31
- version = _ref3$.version,
32
- type = _ref3$.type;
33
- var prevDep = oldDeps[name];
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];
34
29
  // Only treat a dependency as previous if the dependency type matches
35
30
  // Otherwise, we want separate add/remove events
36
- var prevVersion = prevDep && prevDep.type === type ? prevDep.version : undefined;
31
+ const prevVersion = prevDep && prevDep.type === type ? prevDep.version : undefined;
37
32
  return (0, _analytics.createUpgradeEvent)(name, version, prevVersion, date, {
38
- commitHash: commitHash,
33
+ commitHash,
39
34
  dependencyType: type,
40
35
  historical: true
41
36
  });
42
- }).filter(function (e) {
43
- return e != null;
44
- });
45
- var removeEvents = Object.entries(oldDeps).filter(function (_ref4) {
46
- var _ref5 = (0, _slicedToArray2.default)(_ref4, 2),
47
- name = _ref5[0],
48
- type = _ref5[1].type;
49
- return (
50
- // Treat the same dep under a different dependency type as a new dep
51
- newDeps[name] == null || newDeps[name].type !== type
52
- );
53
- }).map(function (_ref6) {
54
- var _ref7 = (0, _slicedToArray2.default)(_ref6, 2),
55
- name = _ref7[0],
56
- _ref7$ = _ref7[1],
57
- version = _ref7$.version,
58
- 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
+ }]) => {
59
46
  return (0, _analytics.createUpgradeEvent)(name, undefined, version, date, {
60
- commitHash: commitHash,
47
+ commitHash,
61
48
  dependencyType: type,
62
49
  historical: true
63
50
  });
64
- }).filter(function (e) {
65
- return e != null;
66
- });
67
- return [].concat((0, _toConsumableArray2.default)(addOrUpgradeEvents), (0, _toConsumableArray2.default)(removeEvents));
51
+ }).filter(e => e != null);
52
+ return [...addOrUpgradeEvents, ...removeEvents];
68
53
  };
69
- var getEventsFromHistory = /*#__PURE__*/function () {
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) {
73
- while (1) {
74
- switch (_context2.prev = _context2.next) {
75
- case 0:
76
- cwd = _ref8.cwd;
77
- allPackageChanges = [];
78
- allUpgradeEvents = [];
79
- (0, _assert.assert)(packageChangesLog.all.length > 0, '');
80
- dependencyStore = new _dependencyStore.DependencyStore(cwd);
81
- _context2.next = 7;
82
- return dependencyStore.initialise(prevRunHash);
83
- case 7:
84
- dependencies = _context2.sent;
85
- i = 0;
86
- case 9:
87
- if (!(i < packageChangesLog.all.length)) {
88
- _context2.next = 21;
89
- break;
90
- }
91
- item = packageChangesLog.all[i];
92
- if (allPackageChanges.length > 0) {
93
- dependencies = allPackageChanges[allPackageChanges.length - 1].akDeps;
94
- }
95
- _context2.next = 14;
96
- return dependencyStore.update(item);
97
- case 14:
98
- newDependencies = _context2.sent;
99
- packageChange = {
100
- date: new Date(item.date).toISOString(),
101
- akDeps: newDependencies
102
- };
103
- upgradeEvents = getUpgradeEventsFromPkgChange(dependencies, newDependencies, {
104
- date: packageChange.date,
105
- commitHash: item.hash
106
- });
107
- if (upgradeEvents.length > 0) {
108
- (_allUpgradeEvents = allUpgradeEvents).push.apply(_allUpgradeEvents, (0, _toConsumableArray2.default)(upgradeEvents));
109
- allPackageChanges.push(packageChange);
110
- }
111
- case 18:
112
- i++;
113
- _context2.next = 9;
114
- break;
115
- case 21:
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", {
153
- allPackageChanges: allPackageChanges,
154
- allUpgradeEvents: allUpgradeEvents
155
- });
156
- case 25:
157
- case "end":
158
- return _context2.stop();
159
- }
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];
160
88
  }
161
- }, _callee2);
89
+ });
90
+ upgradeEvent.hotfixTag = distTags['hotfix'] ?? null;
91
+ upgradeEvent.latestTag = distTags['latest'] ?? null;
92
+ upgradeEvent.nextTag = distTags['next'] ?? null;
93
+ return upgradeEvent;
162
94
  }));
163
- return function getEventsFromHistory(_x, _x2, _x3) {
164
- return _ref9.apply(this, arguments);
95
+ return {
96
+ allPackageChanges,
97
+ allUpgradeEvents
165
98
  };
166
- }();
167
- function getSinceRef(_x5) {
168
- return _getSinceRef.apply(this, arguments);
169
- }
170
- function _getSinceRef() {
171
- _getSinceRef = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(flags) {
172
- var meta, tag, tagExists;
173
- return _regenerator.default.wrap(function _callee3$(_context3) {
174
- while (1) {
175
- switch (_context3.prev = _context3.next) {
176
- case 0:
177
- if (!flags.statlas) {
178
- _context3.next = 9;
179
- break;
180
- }
181
- _context3.next = 3;
182
- return statlas.getMeta(flags.product);
183
- case 3:
184
- meta = _context3.sent;
185
- if (!(!meta || !meta.lastRunHash)) {
186
- _context3.next = 6;
187
- break;
188
- }
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")));
190
- case 6:
191
- return _context3.abrupt("return", meta.lastRunHash);
192
- case 9:
193
- tag = flags.tag || _constants.DEFAULT_TAG;
194
- _context3.next = 12;
195
- return (0, _git.refetchTag)(tag);
196
- case 12:
197
- _context3.next = 14;
198
- return (0, _git.doesTagExist)(tag);
199
- case 14:
200
- tagExists = _context3.sent;
201
- if (tagExists) {
202
- _context3.next = 17;
203
- break;
204
- }
205
- throw new Error(_chalk.default.red("Tag '".concat(tag, "' does not exist. Must use --reset for populating from start of history.")));
206
- case 17:
207
- return _context3.abrupt("return", tag);
208
- case 18:
209
- case "end":
210
- return _context3.stop();
211
- }
212
- }
213
- }, _callee3);
214
- }));
215
- return _getSinceRef.apply(this, arguments);
216
- }
217
- function populateProduct(_x6) {
218
- 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
+ }
219
116
  }
220
- function _populateProduct() {
221
- _populateProduct = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(flags) {
222
- var cwd, sinceRef, log, _yield$getEventsFromH, allPackageChanges, allUpgradeEvents, csv, currentCommit;
223
- return _regenerator.default.wrap(function _callee4$(_context4) {
224
- while (1) {
225
- switch (_context4.prev = _context4.next) {
226
- case 0:
227
- cwd = flags.cwd || process.cwd();
228
- if (!flags.reset) {
229
- _context4.next = 5;
230
- break;
231
- }
232
- _context4.t0 = undefined;
233
- _context4.next = 8;
234
- break;
235
- case 5:
236
- _context4.next = 7;
237
- return getSinceRef(flags);
238
- case 7:
239
- _context4.t0 = _context4.sent;
240
- case 8:
241
- sinceRef = _context4.t0;
242
- _context4.next = 11;
243
- return (0, _git.getChangesSince)(sinceRef);
244
- case 11:
245
- log = _context4.sent;
246
- if (!(log.all.length === 0)) {
247
- _context4.next = 15;
248
- break;
249
- }
250
- console.log("No package.json changes found since '".concat(sinceRef, "'."));
251
- return _context4.abrupt("return");
252
- case 15:
253
- _context4.next = 17;
254
- return getEventsFromHistory(log, sinceRef, {
255
- cwd: cwd
256
- });
257
- case 17:
258
- _yield$getEventsFromH = _context4.sent;
259
- allPackageChanges = _yield$getEventsFromH.allPackageChanges;
260
- allUpgradeEvents = _yield$getEventsFromH.allUpgradeEvents;
261
- if (!flags.csv) {
262
- _context4.next = 24;
263
- break;
264
- }
265
- csv = (0, _generateCsv.generateCSV)(allPackageChanges);
266
- console.log(csv);
267
- return _context4.abrupt("return");
268
- case 24:
269
- if (!flags.dryRun) {
270
- _context4.next = 27;
271
- break;
272
- }
273
- console.log(JSON.stringify(allUpgradeEvents));
274
- return _context4.abrupt("return");
275
- case 27:
276
- if (!(allUpgradeEvents.length > 0)) {
277
- _context4.next = 32;
278
- break;
279
- }
280
- _context4.next = 30;
281
- return (0, _analytics.sendAnalytics)(allUpgradeEvents, {
282
- dev: flags.dev,
283
- limit: flags.limit,
284
- product: flags.product,
285
- skipPrompt: !flags.interactive
286
- });
287
- case 30:
288
- _context4.next = 33;
289
- break;
290
- case 32:
291
- console.log("Found no AK dependency changes since last run from ref \"".concat(sinceRef, "\"'"));
292
- case 33:
293
- if (!flags.statlas) {
294
- _context4.next = 42;
295
- break;
296
- }
297
- _context4.next = 36;
298
- return (0, _git.getHash)('HEAD');
299
- case 36:
300
- currentCommit = _context4.sent;
301
- _context4.next = 39;
302
- return statlas.uploadMeta(flags.product, currentCommit);
303
- case 39:
304
- console.log('Finished');
305
- _context4.next = 46;
306
- break;
307
- case 42:
308
- console.log('Updating tag to current commit...');
309
- _context4.next = 45;
310
- return (0, _git.tagCommit)(_constants.DEFAULT_TAG);
311
- case 45:
312
- console.log("Finished. Run 'git push origin tag ".concat(sinceRef, "'."));
313
- case 46:
314
- case "end":
315
- return _context4.stop();
316
- }
317
- }
318
- }, _callee4);
319
- }));
320
- 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
+ }
321
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;