@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.
- package/CHANGELOG.md +12 -0
- package/README.md +7 -4
- package/dist/cjs/cli.js +52 -17
- package/dist/cjs/commands/populate-historic-data/index.js +2 -2
- package/dist/cjs/commands/populate-historic-data/lib/dependency-store.js +227 -451
- package/dist/cjs/commands/populate-historic-data/package.js +31 -71
- package/dist/cjs/commands/populate-historic-data/product.js +130 -253
- package/dist/cjs/commands/populate-historic-data/util/allowed-scopes.js +15 -0
- package/dist/cjs/commands/populate-historic-data/util/generate-csv.js +16 -21
- package/dist/cjs/constants.js +2 -2
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/util/analytics.js +82 -94
- package/dist/cjs/util/get-file-history-from-git.js +4 -4
- package/dist/cjs/util/get-package-version-history.js +11 -7
- package/dist/cjs/util/git.js +75 -205
- package/dist/cjs/util/statlas.js +27 -97
- package/dist/cjs/util/yarn.js +40 -101
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/cli.js +10 -4
- package/dist/es2019/commands/populate-historic-data/lib/dependency-store.js +6 -4
- package/dist/es2019/commands/populate-historic-data/package.js +11 -6
- package/dist/es2019/commands/populate-historic-data/product.js +25 -7
- package/dist/es2019/commands/populate-historic-data/util/allowed-scopes.js +7 -0
- package/dist/es2019/commands/populate-historic-data/util/generate-csv.js +1 -1
- package/dist/es2019/util/analytics.js +13 -0
- package/dist/es2019/util/get-package-version-history.js +7 -3
- package/dist/es2019/version.json +1 -1
- package/dist/esm/cli.js +8 -3
- package/dist/esm/commands/populate-historic-data/lib/dependency-store.js +20 -15
- package/dist/esm/commands/populate-historic-data/package.js +27 -21
- package/dist/esm/commands/populate-historic-data/product.js +121 -81
- package/dist/esm/commands/populate-historic-data/util/allowed-scopes.js +11 -0
- package/dist/esm/commands/populate-historic-data/util/generate-csv.js +1 -1
- package/dist/esm/util/analytics.js +19 -5
- package/dist/esm/util/get-package-version-history.js +7 -3
- package/dist/esm/util/git.js +14 -13
- package/dist/esm/util/statlas.js +8 -7
- package/dist/esm/util/yarn.js +6 -5
- package/dist/esm/version.json +1 -1
- package/dist/types/commands/populate-historic-data/lib/dependency-store.d.ts +3 -2
- package/dist/types/commands/populate-historic-data/types.d.ts +3 -2
- package/dist/types/commands/populate-historic-data/util/allowed-scopes.d.ts +2 -0
- package/dist/types/commands/populate-historic-data/util/generate-csv.d.ts +2 -2
- package/dist/types/types.d.ts +7 -0
- package/dist/types/util/analytics.d.ts +2 -1
- package/dist/types/util/get-package-version-history.d.ts +7 -3
- package/package.json +2 -2
- package/report.api.md +5 -0
- package/tmp/api-report-tmp.d.ts +5 -0
- 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
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
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(
|
|
34
|
-
return e != null;
|
|
35
|
-
});
|
|
25
|
+
}).filter(e => e != null);
|
|
36
26
|
return upgradeEvents;
|
|
37
27
|
};
|
|
38
|
-
function populatePackage(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
31
|
+
const prevVersion = prevDep && prevDep.type === type ? prevDep.version : undefined;
|
|
36
32
|
return (0, _analytics.createUpgradeEvent)(name, version, prevVersion, date, {
|
|
37
|
-
commitHash
|
|
33
|
+
commitHash,
|
|
38
34
|
dependencyType: type,
|
|
39
35
|
historical: true
|
|
40
36
|
});
|
|
41
|
-
}).filter(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
|
47
|
+
commitHash,
|
|
60
48
|
dependencyType: type,
|
|
61
49
|
historical: true
|
|
62
50
|
});
|
|
63
|
-
}).filter(
|
|
64
|
-
|
|
65
|
-
});
|
|
66
|
-
return [].concat((0, _toConsumableArray2.default)(addOrUpgradeEvents), (0, _toConsumableArray2.default)(removeEvents));
|
|
51
|
+
}).filter(e => e != null);
|
|
52
|
+
return [...addOrUpgradeEvents, ...removeEvents];
|
|
67
53
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
}
|
|
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
|
|
127
|
-
|
|
95
|
+
return {
|
|
96
|
+
allPackageChanges,
|
|
97
|
+
allUpgradeEvents
|
|
128
98
|
};
|
|
129
|
-
}
|
|
130
|
-
function getSinceRef(
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
return
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
packageChanges.forEach(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Object.entries(packageChange.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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 (
|
|
31
|
-
for (
|
|
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
|
-
|
|
40
|
-
csvData.forEach(
|
|
34
|
+
const csvStrings = [];
|
|
35
|
+
csvData.forEach(column => {
|
|
41
36
|
if (!column) {
|
|
42
37
|
return;
|
|
43
38
|
}
|
|
44
|
-
for (
|
|
45
|
-
|
|
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] += "
|
|
44
|
+
csvStrings[rowIndex] += `"${rowItem}",`;
|
|
50
45
|
}
|
|
51
46
|
});
|
|
52
47
|
return csvStrings.join('\n');
|
package/dist/cjs/constants.js
CHANGED
|
@@ -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
|
-
|
|
7
|
+
const DEFAULT_TAG = 'atlaskit-dependency-version-analytics-last-run';
|
|
8
8
|
exports.DEFAULT_TAG = DEFAULT_TAG;
|
|
9
|
-
|
|
9
|
+
const DEP_TYPES = [{
|
|
10
10
|
packageJsonKey: 'devDependencies',
|
|
11
11
|
depTypeName: 'devDependency'
|
|
12
12
|
}, {
|