@ohos-ports/nx 19.8.4-beta.0 → 19.8.4-beta.2
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/package.json +21 -9
- package/src/native/index.js +1 -0
- package/src/native/native-bindings.js +10 -16
- package/src/native/{nx.openharmony-arm64.node → nx.ohos-arm64.node} +0 -0
- package/.eslintrc.json +0 -140
- package/node_modules/@nrwl/tao/LICENSE +0 -22
- package/node_modules/@nrwl/tao/README.md +0 -18
- package/node_modules/@nrwl/tao/index.d.ts +0 -1
- package/node_modules/@nrwl/tao/index.js +0 -7
- package/node_modules/@nrwl/tao/package.json +0 -41
- package/node_modules/@nrwl/tao/src/commands/ngcli-adapter.d.ts +0 -1
- package/node_modules/@nrwl/tao/src/commands/ngcli-adapter.js +0 -5
- package/node_modules/@nrwl/tao/src/shared/logger.d.ts +0 -1
- package/node_modules/@nrwl/tao/src/shared/logger.js +0 -5
- package/node_modules/@nrwl/tao/src/shared/nx.d.ts +0 -1
- package/node_modules/@nrwl/tao/src/shared/nx.js +0 -5
- package/node_modules/@nrwl/tao/src/shared/package-manager.d.ts +0 -1
- package/node_modules/@nrwl/tao/src/shared/package-manager.js +0 -5
- package/node_modules/@nrwl/tao/src/shared/project-graph.d.ts +0 -1
- package/node_modules/@nrwl/tao/src/shared/project-graph.js +0 -5
- package/node_modules/@nrwl/tao/src/shared/tree.d.ts +0 -1
- package/node_modules/@nrwl/tao/src/shared/tree.js +0 -5
- package/node_modules/@nrwl/tao/src/utils/app-root.d.ts +0 -1
- package/node_modules/@nrwl/tao/src/utils/app-root.js +0 -5
- package/release/changelog-renderer/index.d.ts +0 -80
- package/release/changelog-renderer/index.js +0 -315
- package/release/index.d.ts +0 -4
- package/release/index.js +0 -12
- package/schemas/nx-schema.json +0 -819
- package/schemas/project-schema.json +0 -331
- package/schemas/workspace-schema.json +0 -185
- package/tasks-runners/default.d.ts +0 -1
- package/tasks-runners/default.js +0 -5
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const semver_1 = require("semver");
|
|
4
|
-
const conventional_commits_1 = require("../../src/command-line/release/config/conventional-commits");
|
|
5
|
-
const github_1 = require("../../src/command-line/release/utils/github");
|
|
6
|
-
// axios types and values don't seem to match
|
|
7
|
-
const _axios = require("axios");
|
|
8
|
-
const axios = _axios;
|
|
9
|
-
/**
|
|
10
|
-
* The default ChangelogRenderer implementation that nx exports for the common case of generating markdown
|
|
11
|
-
* from the given commits and other metadata.
|
|
12
|
-
*/
|
|
13
|
-
const defaultChangelogRenderer = async ({ projectGraph, changes, releaseVersion, project, entryWhenNoChanges, changelogRenderOptions, dependencyBumps, repoSlug, conventionalCommitsConfig, repoData, }) => {
|
|
14
|
-
const markdownLines = [];
|
|
15
|
-
// If the current range of changes contains both a commit and its revert, we strip them both from the final list. Changes from version plans are unaffected, as they have no hashes.
|
|
16
|
-
for (const change of changes) {
|
|
17
|
-
if (change.type === 'revert' && change.revertedHashes) {
|
|
18
|
-
for (const revertedHash of change.revertedHashes) {
|
|
19
|
-
const revertedCommit = changes.find((c) => c.shortHash && revertedHash.startsWith(c.shortHash));
|
|
20
|
-
if (revertedCommit) {
|
|
21
|
-
changes.splice(changes.indexOf(revertedCommit), 1);
|
|
22
|
-
changes.splice(changes.indexOf(change), 1);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
let relevantChanges = changes;
|
|
28
|
-
const breakingChanges = [];
|
|
29
|
-
// For now to keep the interface of the changelog renderer non-breaking for v19 releases we have a somewhat indirect check for whether or not we are generating a changelog for version plans
|
|
30
|
-
const isVersionPlans = !conventionalCommitsConfig;
|
|
31
|
-
// Only applicable for version plans
|
|
32
|
-
const additionalChangesForAuthorsSection = [];
|
|
33
|
-
// Provide a default configuration for version plans to allow most of the subsequent logic to work in the same way it would for conventional commits
|
|
34
|
-
// NOTE: The one exception is breaking/major changes, where we do not follow the same structure and instead only show the changes once
|
|
35
|
-
if (isVersionPlans) {
|
|
36
|
-
conventionalCommitsConfig = {
|
|
37
|
-
types: {
|
|
38
|
-
feat: conventional_commits_1.DEFAULT_CONVENTIONAL_COMMITS_CONFIG.types.feat,
|
|
39
|
-
fix: conventional_commits_1.DEFAULT_CONVENTIONAL_COMMITS_CONFIG.types.fix,
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
// Trim down "relevant changes" to only include non-breaking ones so that we can render them differently under version plans,
|
|
43
|
-
// but keep track of the changes for the purposes of the authors section
|
|
44
|
-
// TODO(v20): Clean this abstraction up as part of the larger overall refactor of changelog rendering
|
|
45
|
-
for (let i = 0; i < relevantChanges.length; i++) {
|
|
46
|
-
if (relevantChanges[i].isBreaking) {
|
|
47
|
-
const change = relevantChanges[i];
|
|
48
|
-
additionalChangesForAuthorsSection.push(change);
|
|
49
|
-
const line = formatChange(change, changelogRenderOptions, isVersionPlans, repoData);
|
|
50
|
-
breakingChanges.push(line);
|
|
51
|
-
relevantChanges.splice(i, 1);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
const changeTypes = conventionalCommitsConfig.types;
|
|
56
|
-
// workspace root level changelog
|
|
57
|
-
if (project === null) {
|
|
58
|
-
// No changes for the workspace
|
|
59
|
-
if (relevantChanges.length === 0 && breakingChanges.length === 0) {
|
|
60
|
-
if (dependencyBumps?.length) {
|
|
61
|
-
applyAdditionalDependencyBumps({
|
|
62
|
-
markdownLines,
|
|
63
|
-
dependencyBumps,
|
|
64
|
-
releaseVersion,
|
|
65
|
-
changelogRenderOptions,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
else if (entryWhenNoChanges) {
|
|
69
|
-
markdownLines.push('', `${createVersionTitle(releaseVersion, changelogRenderOptions)}\n\n${entryWhenNoChanges}`, '');
|
|
70
|
-
}
|
|
71
|
-
return markdownLines.join('\n').trim();
|
|
72
|
-
}
|
|
73
|
-
const typeGroups = groupBy(relevantChanges, 'type');
|
|
74
|
-
markdownLines.push('', createVersionTitle(releaseVersion, changelogRenderOptions), '');
|
|
75
|
-
for (const type of Object.keys(changeTypes)) {
|
|
76
|
-
const group = typeGroups[type];
|
|
77
|
-
if (!group || group.length === 0) {
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
markdownLines.push('', '### ' + changeTypes[type].changelog.title, '');
|
|
81
|
-
/**
|
|
82
|
-
* In order to make the final changelog most readable, we organize changes as follows:
|
|
83
|
-
* - By scope, where scopes are in alphabetical order (changes with no scope are listed first)
|
|
84
|
-
* - Within a particular scope grouping, we list changes in chronological order
|
|
85
|
-
*/
|
|
86
|
-
const changesInChronologicalOrder = group.reverse();
|
|
87
|
-
const changesGroupedByScope = groupBy(changesInChronologicalOrder, 'scope');
|
|
88
|
-
const scopesSortedAlphabetically = Object.keys(changesGroupedByScope).sort();
|
|
89
|
-
for (const scope of scopesSortedAlphabetically) {
|
|
90
|
-
const changes = changesGroupedByScope[scope];
|
|
91
|
-
for (const change of changes) {
|
|
92
|
-
const line = formatChange(change, changelogRenderOptions, isVersionPlans, repoData);
|
|
93
|
-
markdownLines.push(line);
|
|
94
|
-
if (change.isBreaking) {
|
|
95
|
-
const breakingChangeExplanation = extractBreakingChangeExplanation(change.body);
|
|
96
|
-
breakingChanges.push(breakingChangeExplanation
|
|
97
|
-
? `- ${change.scope ? `**${change.scope.trim()}:** ` : ''}${breakingChangeExplanation}`
|
|
98
|
-
: line);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
// project level changelog
|
|
106
|
-
relevantChanges = relevantChanges.filter((c) => c.affectedProjects &&
|
|
107
|
-
(c.affectedProjects === '*' || c.affectedProjects.includes(project)));
|
|
108
|
-
// Generating for a named project, but that project has no relevant changes in the current set of commits, exit early
|
|
109
|
-
if (relevantChanges.length === 0 && breakingChanges.length === 0) {
|
|
110
|
-
if (dependencyBumps?.length) {
|
|
111
|
-
applyAdditionalDependencyBumps({
|
|
112
|
-
markdownLines,
|
|
113
|
-
dependencyBumps,
|
|
114
|
-
releaseVersion,
|
|
115
|
-
changelogRenderOptions,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
else if (entryWhenNoChanges) {
|
|
119
|
-
markdownLines.push('', `${createVersionTitle(releaseVersion, changelogRenderOptions)}\n\n${entryWhenNoChanges}`, '');
|
|
120
|
-
}
|
|
121
|
-
return markdownLines.join('\n').trim();
|
|
122
|
-
}
|
|
123
|
-
markdownLines.push('', createVersionTitle(releaseVersion, changelogRenderOptions), '');
|
|
124
|
-
const typeGroups = groupBy(
|
|
125
|
-
// Sort the relevant changes to have the unscoped changes first, before grouping by type
|
|
126
|
-
relevantChanges.sort((a, b) => (b.scope ? 1 : 0) - (a.scope ? 1 : 0)), 'type');
|
|
127
|
-
for (const type of Object.keys(changeTypes)) {
|
|
128
|
-
const group = typeGroups[type];
|
|
129
|
-
if (!group || group.length === 0) {
|
|
130
|
-
continue;
|
|
131
|
-
}
|
|
132
|
-
markdownLines.push('', `### ${changeTypes[type].changelog.title}`, '');
|
|
133
|
-
const changesInChronologicalOrder = group.reverse();
|
|
134
|
-
for (const change of changesInChronologicalOrder) {
|
|
135
|
-
const line = formatChange(change, changelogRenderOptions, isVersionPlans, repoData);
|
|
136
|
-
markdownLines.push(line + '\n');
|
|
137
|
-
if (change.isBreaking) {
|
|
138
|
-
const breakingChangeExplanation = extractBreakingChangeExplanation(change.body);
|
|
139
|
-
breakingChanges.push(breakingChangeExplanation
|
|
140
|
-
? `- ${change.scope ? `**${change.scope.trim()}:** ` : ''}${breakingChangeExplanation}`
|
|
141
|
-
: line);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
if (breakingChanges.length > 0) {
|
|
147
|
-
markdownLines.push('', '### ⚠️ Breaking Changes', '', ...breakingChanges);
|
|
148
|
-
}
|
|
149
|
-
if (dependencyBumps?.length) {
|
|
150
|
-
applyAdditionalDependencyBumps({
|
|
151
|
-
markdownLines,
|
|
152
|
-
dependencyBumps,
|
|
153
|
-
releaseVersion,
|
|
154
|
-
changelogRenderOptions,
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
if (changelogRenderOptions.authors) {
|
|
158
|
-
const _authors = new Map();
|
|
159
|
-
for (const change of [
|
|
160
|
-
...relevantChanges,
|
|
161
|
-
...additionalChangesForAuthorsSection,
|
|
162
|
-
]) {
|
|
163
|
-
if (!change.author) {
|
|
164
|
-
continue;
|
|
165
|
-
}
|
|
166
|
-
const name = formatName(change.author.name);
|
|
167
|
-
if (!name || name.includes('[bot]')) {
|
|
168
|
-
continue;
|
|
169
|
-
}
|
|
170
|
-
if (_authors.has(name)) {
|
|
171
|
-
const entry = _authors.get(name);
|
|
172
|
-
entry.email.add(change.author.email);
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
_authors.set(name, { email: new Set([change.author.email]) });
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
// Try to map authors to github usernames
|
|
179
|
-
if (repoData && changelogRenderOptions.mapAuthorsToGitHubUsernames) {
|
|
180
|
-
await Promise.all([..._authors.keys()].map(async (authorName) => {
|
|
181
|
-
const meta = _authors.get(authorName);
|
|
182
|
-
for (const email of meta.email) {
|
|
183
|
-
// For these pseudo-anonymized emails we can just extract the Github username from before the @
|
|
184
|
-
// It could either be in the format: username@ or github_id+username@
|
|
185
|
-
if (email.endsWith('@users.noreply.github.com')) {
|
|
186
|
-
const match = email.match(/^(\d+\+)?([^@]+)@users\.noreply\.github\.com$/);
|
|
187
|
-
if (match && match[2]) {
|
|
188
|
-
meta.github = match[2];
|
|
189
|
-
break;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
// Look up any other emails against the ungh.cc API
|
|
193
|
-
const { data } = await axios
|
|
194
|
-
.get(`https://ungh.cc/users/find/${email}`)
|
|
195
|
-
.catch(() => ({ data: { user: null } }));
|
|
196
|
-
if (data?.user) {
|
|
197
|
-
meta.github = data.user.username;
|
|
198
|
-
break;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}));
|
|
202
|
-
}
|
|
203
|
-
const authors = [..._authors.entries()].map((e) => ({
|
|
204
|
-
name: e[0],
|
|
205
|
-
...e[1],
|
|
206
|
-
}));
|
|
207
|
-
if (authors.length > 0) {
|
|
208
|
-
markdownLines.push('', '### ' + '❤️ Thank You', '', ...authors
|
|
209
|
-
// Sort the contributors by name
|
|
210
|
-
.sort((a, b) => a.name.localeCompare(b.name))
|
|
211
|
-
.map((i) => {
|
|
212
|
-
// Tag the author's Github username if we were able to resolve it so that Github adds them as a contributor
|
|
213
|
-
const github = i.github ? ` @${i.github}` : '';
|
|
214
|
-
return `- ${i.name}${github}`;
|
|
215
|
-
}));
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
return markdownLines.join('\n').trim();
|
|
219
|
-
};
|
|
220
|
-
exports.default = defaultChangelogRenderer;
|
|
221
|
-
function applyAdditionalDependencyBumps({ markdownLines, dependencyBumps, releaseVersion, changelogRenderOptions, }) {
|
|
222
|
-
if (markdownLines.length === 0) {
|
|
223
|
-
markdownLines.push('', `${createVersionTitle(releaseVersion, changelogRenderOptions)}\n`, '');
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
markdownLines.push('');
|
|
227
|
-
}
|
|
228
|
-
markdownLines.push('### 🧱 Updated Dependencies\n');
|
|
229
|
-
dependencyBumps.forEach(({ dependencyName, newVersion }) => {
|
|
230
|
-
markdownLines.push(`- Updated ${dependencyName} to ${newVersion}`);
|
|
231
|
-
});
|
|
232
|
-
markdownLines.push('');
|
|
233
|
-
}
|
|
234
|
-
function formatName(name = '') {
|
|
235
|
-
return name
|
|
236
|
-
.split(' ')
|
|
237
|
-
.map((p) => p.trim())
|
|
238
|
-
.join(' ');
|
|
239
|
-
}
|
|
240
|
-
function groupBy(items, key) {
|
|
241
|
-
const groups = {};
|
|
242
|
-
for (const item of items) {
|
|
243
|
-
groups[item[key]] = groups[item[key]] || [];
|
|
244
|
-
groups[item[key]].push(item);
|
|
245
|
-
}
|
|
246
|
-
return groups;
|
|
247
|
-
}
|
|
248
|
-
function formatChange(change, changelogRenderOptions, isVersionPlans, repoData) {
|
|
249
|
-
let description = change.description;
|
|
250
|
-
let extraLines = [];
|
|
251
|
-
let extraLinesStr = '';
|
|
252
|
-
if (description.includes('\n')) {
|
|
253
|
-
[description, ...extraLines] = description.split('\n');
|
|
254
|
-
// Align the extra lines with the start of the description for better readability
|
|
255
|
-
const indentation = ' ';
|
|
256
|
-
extraLinesStr = extraLines
|
|
257
|
-
.filter((l) => l.trim().length > 0)
|
|
258
|
-
.map((l) => `${indentation}${l}`)
|
|
259
|
-
.join('\n');
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* In version plans changelogs:
|
|
263
|
-
* - don't repeat the breaking change icon
|
|
264
|
-
* - don't render the scope
|
|
265
|
-
*/
|
|
266
|
-
let changeLine = '- ' +
|
|
267
|
-
(!isVersionPlans && change.isBreaking ? '⚠️ ' : '') +
|
|
268
|
-
(!isVersionPlans && change.scope ? `**${change.scope.trim()}:** ` : '') +
|
|
269
|
-
description;
|
|
270
|
-
if (repoData && changelogRenderOptions.commitReferences) {
|
|
271
|
-
changeLine += (0, github_1.formatReferences)(change.githubReferences, repoData);
|
|
272
|
-
}
|
|
273
|
-
if (extraLinesStr) {
|
|
274
|
-
changeLine += '\n\n' + extraLinesStr;
|
|
275
|
-
}
|
|
276
|
-
return changeLine;
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* It is common to add further information about a breaking change in the commit body,
|
|
280
|
-
* and it is naturally that information that should be included in the BREAKING CHANGES
|
|
281
|
-
* section of changelog, rather than repeating the commit title/description.
|
|
282
|
-
*/
|
|
283
|
-
function extractBreakingChangeExplanation(message) {
|
|
284
|
-
if (!message) {
|
|
285
|
-
return null;
|
|
286
|
-
}
|
|
287
|
-
const breakingChangeIdentifier = 'BREAKING CHANGE:';
|
|
288
|
-
const startIndex = message.indexOf(breakingChangeIdentifier);
|
|
289
|
-
if (startIndex === -1) {
|
|
290
|
-
// "BREAKING CHANGE:" not found in the message
|
|
291
|
-
return null;
|
|
292
|
-
}
|
|
293
|
-
const startOfBreakingChange = startIndex + breakingChangeIdentifier.length;
|
|
294
|
-
const endOfBreakingChange = message.indexOf('\n', startOfBreakingChange);
|
|
295
|
-
if (endOfBreakingChange === -1) {
|
|
296
|
-
// No newline character found, extract till the end of the message
|
|
297
|
-
return message.substring(startOfBreakingChange).trim();
|
|
298
|
-
}
|
|
299
|
-
// Extract and return the breaking change message
|
|
300
|
-
return message.substring(startOfBreakingChange, endOfBreakingChange).trim();
|
|
301
|
-
}
|
|
302
|
-
function createVersionTitle(version, changelogRenderOptions) {
|
|
303
|
-
// Normalize by removing any leading `v` during comparison
|
|
304
|
-
const isMajorVersion = `${(0, semver_1.major)(version)}.0.0` === version.replace(/^v/, '');
|
|
305
|
-
let maybeDateStr = '';
|
|
306
|
-
if (changelogRenderOptions.versionTitleDate) {
|
|
307
|
-
// YYYY-MM-DD
|
|
308
|
-
const dateStr = new Date().toISOString().slice(0, 10);
|
|
309
|
-
maybeDateStr = ` (${dateStr})`;
|
|
310
|
-
}
|
|
311
|
-
if (isMajorVersion) {
|
|
312
|
-
return `# ${version}${maybeDateStr}`;
|
|
313
|
-
}
|
|
314
|
-
return `## ${version}${maybeDateStr}`;
|
|
315
|
-
}
|
package/release/index.d.ts
DELETED
package/release/index.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.releaseVersion = exports.releasePublish = exports.releaseChangelog = exports.release = exports.ReleaseClient = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* @public Programmatic API for nx release
|
|
6
|
-
*/
|
|
7
|
-
var release_1 = require("../src/command-line/release");
|
|
8
|
-
Object.defineProperty(exports, "ReleaseClient", { enumerable: true, get: function () { return release_1.ReleaseClient; } });
|
|
9
|
-
Object.defineProperty(exports, "release", { enumerable: true, get: function () { return release_1.release; } });
|
|
10
|
-
Object.defineProperty(exports, "releaseChangelog", { enumerable: true, get: function () { return release_1.releaseChangelog; } });
|
|
11
|
-
Object.defineProperty(exports, "releasePublish", { enumerable: true, get: function () { return release_1.releasePublish; } });
|
|
12
|
-
Object.defineProperty(exports, "releaseVersion", { enumerable: true, get: function () { return release_1.releaseVersion; } });
|