bumpp 7.0.0 → 7.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.
@@ -1,642 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- var __objRest = (source, exclude) => {
21
- var target = {};
22
- for (var prop in source)
23
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
- target[prop] = source[prop];
25
- if (source != null && __getOwnPropSymbols)
26
- for (var prop of __getOwnPropSymbols(source)) {
27
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
- target[prop] = source[prop];
29
- }
30
- return target;
31
- };
32
- var __commonJS = (cb, mod) => function __require() {
33
- return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
34
- };
35
-
36
- // package.json
37
- var require_package = __commonJS({
38
- "package.json"(exports, module) {
39
- module.exports = {
40
- name: "bumpp",
41
- version: "7.0.0",
42
- description: "Automatically (or with prompts) bump your version number, commit changes, tag, and push to Git",
43
- keywords: [
44
- "version",
45
- "bump",
46
- "npm",
47
- "node",
48
- "bower",
49
- "package",
50
- "git",
51
- "tag",
52
- "push",
53
- "prompt"
54
- ],
55
- author: {
56
- name: "James Messinger",
57
- url: "https://jamesmessinger.com"
58
- },
59
- license: "MIT",
60
- homepage: "https://jstools.dev/version-bump-prompt",
61
- repository: {
62
- type: "git",
63
- url: "https://github.com/antfu/bumpp.git"
64
- },
65
- main: "dist/index.js",
66
- types: "dist/index.d.ts",
67
- bin: {
68
- bump: "bin/bumpp.js"
69
- },
70
- files: [
71
- "bin",
72
- "dist"
73
- ],
74
- scripts: {
75
- clean: "rimraf .nyc_output coverage dist",
76
- lint: "eslint src test",
77
- build: "tsup src/index.ts src/cli/index.ts --format esm,cjs --dts",
78
- watch: "npm run build -- --watch src",
79
- test: "mocha && npm run lint",
80
- coverage: "nyc node_modules/mocha/bin/mocha",
81
- upgrade: "npm-check -u && npm audit fix",
82
- bump: "esno src/cli/run.ts --tag --push --all",
83
- prepublishOnly: "npm run clean && npm run build",
84
- release: "npm run bump && npm publish"
85
- },
86
- devDependencies: {
87
- "@jsdevtools/chai-exec": "^2.1.1",
88
- "@jsdevtools/eslint-config": "^1.1.4",
89
- "@types/chai": "^4.2.12",
90
- "@types/command-line-args": "^5.0.0",
91
- "@types/globby": "^9.1.0",
92
- "@types/inquirer": "^7.3.1",
93
- "@types/mocha": "^8.0.3",
94
- "@types/node": "^14.6.2",
95
- "@types/semver": "^7.3.3",
96
- chai: "^4.2.0",
97
- del: "^5.1.0",
98
- eslint: "^7.7.0",
99
- esno: "^0.9.1",
100
- mocha: "^8.1.3",
101
- "npm-check": "^5.9.0",
102
- nyc: "^15.1.0",
103
- rimraf: "^3.0.2",
104
- shx: "^0.3.2",
105
- "strip-ansi": "^6.0.0",
106
- tsup: "^4.14.0",
107
- typescript: "^4.0.2"
108
- },
109
- dependencies: {
110
- "@jsdevtools/ez-spawn": "^3.0.4",
111
- "command-line-args": "^5.1.1",
112
- "detect-indent": "^6.0.0",
113
- "detect-newline": "^3.1.0",
114
- globby: "^11.0.1",
115
- inquirer: "^7.3.3",
116
- "log-symbols": "^4.0.0",
117
- semver: "^7.3.2"
118
- },
119
- engines: {
120
- node: ">=10"
121
- },
122
- engineStrict: true
123
- };
124
- }
125
- });
126
-
127
- // src/release-type.ts
128
- var _semver = require('semver');
129
- var prereleaseTypes = ["premajor", "preminor", "prepatch", "prerelease"];
130
- var releaseTypes = prereleaseTypes.concat(["major", "minor", "patch"]);
131
- function isPrerelease(value) {
132
- return prereleaseTypes.includes(value);
133
- }
134
- function isReleaseType(value) {
135
- return releaseTypes.includes(value);
136
- }
137
-
138
- // src/manifest.ts
139
- var manifest = require_package();
140
- function isManifest(obj) {
141
- return obj && typeof obj === "object" && isOptionalString(obj.name) && isOptionalString(obj.version) && isOptionalString(obj.description);
142
- }
143
- function isOptionalString(value) {
144
- let type = typeof value;
145
- return value === null || type === "undefined" || type === "string";
146
- }
147
-
148
- // src/types/version-bump-progress.ts
149
- var ProgressEvent;
150
- (function(ProgressEvent2) {
151
- ProgressEvent2["FileUpdated"] = "file updated";
152
- ProgressEvent2["FileSkipped"] = "file skipped";
153
- ProgressEvent2["GitCommit"] = "git commit";
154
- ProgressEvent2["GitTag"] = "git tag";
155
- ProgressEvent2["GitPush"] = "git push";
156
- ProgressEvent2["NpmScript"] = "npm script";
157
- })(ProgressEvent || (ProgressEvent = exports.ProgressEvent = {}));
158
- var NpmScript;
159
- (function(NpmScript3) {
160
- NpmScript3["PreVersion"] = "preversion";
161
- NpmScript3["Version"] = "version";
162
- NpmScript3["PostVersion"] = "postversion";
163
- })(NpmScript || (NpmScript = exports.NpmScript = {}));
164
-
165
- // src/version-bump.ts
166
-
167
-
168
- var _ezspawn = require('@jsdevtools/ez-spawn');
169
-
170
- // src/get-new-version.ts
171
-
172
-
173
-
174
- var _inquirer = require('inquirer');
175
-
176
-
177
-
178
-
179
-
180
- async function getNewVersion(operation) {
181
- let { release } = operation.options;
182
- let { oldVersion } = operation.state;
183
- switch (release.type) {
184
- case "prompt":
185
- return promptForNewVersion(operation);
186
- case "version":
187
- let newSemVer = new (0, _semver.SemVer)(release.version, true);
188
- return operation.update({
189
- newVersion: newSemVer.version
190
- });
191
- default:
192
- return operation.update({
193
- release: release.type,
194
- newVersion: getNextVersion(oldVersion, release)
195
- });
196
- }
197
- }
198
- function getNextVersion(oldVersion, bump) {
199
- let oldSemVer = new (0, _semver.SemVer)(oldVersion);
200
- let newSemVer = oldSemVer.inc(bump.type, bump.preid);
201
- if (isPrerelease(bump.type) && newSemVer.prerelease.length === 2 && newSemVer.prerelease[0] === bump.preid && String(newSemVer.prerelease[1]) === "0") {
202
- newSemVer.prerelease[1] = "1";
203
- newSemVer.format();
204
- }
205
- return newSemVer.version;
206
- }
207
- function getNextVersions(oldVersion, preid) {
208
- let next = {};
209
- for (let type of releaseTypes) {
210
- next[type] = getNextVersion(oldVersion, { type, preid });
211
- }
212
- return next;
213
- }
214
- async function promptForNewVersion(operation) {
215
- let { oldVersion, oldVersionSource } = operation.state;
216
- let release = operation.options.release;
217
- let prompts = _inquirer.createPromptModule.call(void 0, operation.options.interface);
218
- let next = getNextVersions(oldVersion, release.preid);
219
- let answers;
220
- answers = await prompts([
221
- {
222
- type: "list",
223
- name: "release",
224
- message: `
225
- The current version in ${oldVersionSource} is ${oldVersion}
226
- How would you like to bump it?`,
227
- default: "patch",
228
- pageSize: 10,
229
- choices: [
230
- { value: "major", name: `major (${next.major})` },
231
- { value: "minor", name: `minor (${next.minor})` },
232
- { value: "patch", name: `patch (${next.patch})` },
233
- { value: "premajor", name: `pre-release major (${next.premajor})` },
234
- { value: "preminor", name: `pre-release minor (${next.preminor})` },
235
- { value: "prepatch", name: `pre-release patch (${next.prepatch})` },
236
- { value: "prerelease", name: `pre-release (${next.prerelease})` },
237
- new (0, _inquirer.Separator)(),
238
- { value: "none", name: `leave as-is (${oldVersion})` },
239
- { value: "custom", name: "custom..." }
240
- ]
241
- },
242
- {
243
- type: "input",
244
- name: "newVersion",
245
- message: "Enter the new version number:",
246
- default: oldVersion,
247
- when: (previousAnswer) => previousAnswer.release === "custom",
248
- filter: _semver.clean,
249
- validate: (newVersion) => {
250
- return _semver.valid.call(void 0, newVersion) ? true : "That's not a valid version number";
251
- }
252
- }
253
- ]);
254
- switch (answers.release) {
255
- case "none":
256
- return operation.update({ newVersion: oldVersion });
257
- case "custom":
258
- return operation.update({ newVersion: answers.newVersion });
259
- default:
260
- return operation.update({
261
- release: answers.release,
262
- newVersion: next[answers.release]
263
- });
264
- }
265
- }
266
-
267
- // src/get-old-version.ts
268
-
269
-
270
-
271
-
272
- // src/fs.ts
273
- var _detectindent = require('detect-indent'); var _detectindent2 = _interopRequireDefault(_detectindent);
274
- var _detectnewline = require('detect-newline'); var _detectnewline2 = _interopRequireDefault(_detectnewline);
275
- var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);
276
- var _path = require('path'); var _path2 = _interopRequireDefault(_path);
277
- async function readJsonFile(name, cwd) {
278
- let file = await readTextFile(name, cwd);
279
- let data = JSON.parse(file.data);
280
- let indent = _detectindent2.default.call(void 0, file.data).indent;
281
- let newline = _detectnewline2.default.call(void 0, file.data);
282
- return __spreadProps(__spreadValues({}, file), { data, indent, newline });
283
- }
284
- async function writeJsonFile(file) {
285
- let json = JSON.stringify(file.data, void 0, file.indent);
286
- if (file.newline) {
287
- json += file.newline;
288
- }
289
- return writeTextFile(__spreadProps(__spreadValues({}, file), { data: json }));
290
- }
291
- function readTextFile(name, cwd) {
292
- return new Promise((resolve, reject) => {
293
- let filePath = _path2.default.join(cwd, name);
294
- _fs2.default.readFile(filePath, "utf8", (err, text) => {
295
- if (err) {
296
- reject(err);
297
- } else {
298
- resolve({
299
- path: filePath,
300
- data: text
301
- });
302
- }
303
- });
304
- });
305
- }
306
- function writeTextFile(file) {
307
- return new Promise((resolve, reject) => {
308
- _fs2.default.writeFile(file.path, file.data, (err) => {
309
- if (err) {
310
- reject(err);
311
- } else {
312
- resolve();
313
- }
314
- });
315
- });
316
- }
317
-
318
- // src/get-old-version.ts
319
- async function getOldVersion(operation) {
320
- let { cwd, files } = operation.options;
321
- let filesToCheck = files.filter((file) => file.endsWith(".json"));
322
- if (!filesToCheck.includes("package.json")) {
323
- filesToCheck.push("package.json");
324
- }
325
- for (let file of filesToCheck) {
326
- let version = await readVersion(file, cwd);
327
- if (version) {
328
- return operation.update({
329
- oldVersionSource: file,
330
- oldVersion: version
331
- });
332
- }
333
- }
334
- throw new Error(`Unable to determine the current version number. Checked ${filesToCheck.join(", ")}.`);
335
- }
336
- async function readVersion(file, cwd) {
337
- try {
338
- let { data: manifest2 } = await readJsonFile(file, cwd);
339
- if (isManifest(manifest2)) {
340
- if (_semver.valid.call(void 0, manifest2.version)) {
341
- return manifest2.version;
342
- }
343
- }
344
- } catch (error) {
345
- return void 0;
346
- }
347
- }
348
-
349
- // src/git.ts
350
-
351
-
352
-
353
- async function gitCommit(operation) {
354
- if (!operation.options.commit) {
355
- return operation;
356
- }
357
- let { all, noVerify, message } = operation.options.commit;
358
- let { updatedFiles, newVersion } = operation.state;
359
- let args = [];
360
- if (all) {
361
- args.push("--all");
362
- }
363
- if (noVerify) {
364
- args.push("--no-verify");
365
- }
366
- let commitMessage = formatVersionString(message, newVersion);
367
- args.push("--message", commitMessage);
368
- if (!all) {
369
- args = args.concat(updatedFiles);
370
- }
371
- await _ezspawn.async.call(void 0, "git", ["commit", ...args]);
372
- return operation.update({ event: ProgressEvent.GitCommit, commitMessage });
373
- }
374
- async function gitTag(operation) {
375
- if (!operation.options.tag) {
376
- return operation;
377
- }
378
- let { commit, tag } = operation.options;
379
- let { newVersion } = operation.state;
380
- let args = [
381
- "--annotate",
382
- "--message",
383
- formatVersionString(commit.message, newVersion)
384
- ];
385
- let tagName = formatVersionString(tag.name, newVersion);
386
- args.push(tagName);
387
- await _ezspawn.async.call(void 0, "git", ["tag", ...args]);
388
- return operation.update({ event: ProgressEvent.GitTag, tagName });
389
- }
390
- async function gitPush(operation) {
391
- if (!operation.options.push) {
392
- return operation;
393
- }
394
- await _ezspawn.async.call(void 0, "git", "push");
395
- if (operation.options.tag) {
396
- await _ezspawn.async.call(void 0, "git", ["push", "--tags"]);
397
- }
398
- return operation.update({ event: ProgressEvent.GitPush });
399
- }
400
- function formatVersionString(template, newVersion) {
401
- if (template.includes("%s")) {
402
- return template.replace(/%s/g, newVersion);
403
- } else {
404
- return template + newVersion;
405
- }
406
- }
407
-
408
- // src/normalize-options.ts
409
- var _globby = require('globby'); var _globby2 = _interopRequireDefault(_globby);
410
-
411
- async function normalizeOptions(raw) {
412
- let preid = typeof raw.preid === "string" ? raw.preid : "beta";
413
- let push = Boolean(raw.push);
414
- let all = Boolean(raw.all);
415
- let noVerify = Boolean(raw.noVerify);
416
- let cwd = raw.cwd || process.cwd();
417
- let ignoreScripts = Boolean(raw.ignoreScripts);
418
- let execute = raw.execute;
419
- let release;
420
- if (!raw.release || raw.release === "prompt") {
421
- release = { type: "prompt", preid };
422
- } else if (isReleaseType(raw.release)) {
423
- release = { type: raw.release, preid };
424
- } else {
425
- release = { type: "version", version: raw.release };
426
- }
427
- let tag;
428
- if (typeof raw.tag === "string") {
429
- tag = { name: raw.tag };
430
- } else if (raw.tag) {
431
- tag = { name: "v" };
432
- }
433
- let commit;
434
- if (typeof raw.commit === "string") {
435
- commit = { all, noVerify, message: raw.commit };
436
- } else if (raw.commit || tag || push) {
437
- commit = { all, noVerify, message: "release v" };
438
- }
439
- let files;
440
- if (Array.isArray(raw.files) && raw.files.length > 0) {
441
- files = await strictGlobMatches(raw.files, { cwd });
442
- } else {
443
- files = await _globby2.default.call(void 0, ["package.json", "package-lock.json"], { cwd });
444
- }
445
- let ui;
446
- if (raw.interface === false) {
447
- ui = { input: false, outut: false };
448
- } else if (raw.interface === true || !raw.interface) {
449
- ui = { input: process.stdin, output: process.stdout };
450
- } else {
451
- let _a = raw.interface, { input, output } = _a, other = __objRest(_a, ["input", "output"]);
452
- if (input === true || input !== false && !input) {
453
- input = process.stdin;
454
- }
455
- if (output === true || output !== false && !output) {
456
- output = process.stdout;
457
- }
458
- ui = __spreadValues({ input, output }, other);
459
- }
460
- if (release.type === "prompt" && !(ui.input && ui.output)) {
461
- throw new Error("Cannot prompt for the version number because input or output has been disabled.");
462
- }
463
- return { release, commit, tag, push, files, cwd, interface: ui, ignoreScripts, execute };
464
- }
465
- async function strictGlobMatches(files, options) {
466
- let matches = await Promise.all(files.map((file) => strictGlobMatch(file, options)));
467
- let matchedFiles = new Set();
468
- for (let match of matches) {
469
- for (let file of match) {
470
- matchedFiles.add(file);
471
- }
472
- }
473
- return [...matchedFiles];
474
- }
475
- async function strictGlobMatch(file, options) {
476
- let matches = await _globby2.default.call(void 0, file, options);
477
- if (matches.length === 0) {
478
- if (_globby.hasMagic.call(void 0, file)) {
479
- throw new Error(`Could not find any files matching "${file}".`);
480
- } else {
481
- throw new Error(`Could not find file: ${file}.`);
482
- }
483
- }
484
- return matches.sort();
485
- }
486
-
487
- // src/operation.ts
488
- var Operation = class {
489
- constructor(options, progress) {
490
- this.state = {
491
- release: void 0,
492
- oldVersion: "",
493
- oldVersionSource: "",
494
- newVersion: "",
495
- commitMessage: "",
496
- tagName: "",
497
- updatedFiles: [],
498
- skippedFiles: []
499
- };
500
- this.options = options;
501
- this._progress = progress;
502
- }
503
- get results() {
504
- let options = this.options;
505
- let state = this.state;
506
- return {
507
- release: state.release,
508
- oldVersion: state.oldVersion,
509
- newVersion: state.newVersion,
510
- commit: options.commit ? state.commitMessage : false,
511
- tag: options.tag ? state.tagName : false,
512
- updatedFiles: state.updatedFiles.slice(),
513
- skippedFiles: state.skippedFiles.slice()
514
- };
515
- }
516
- static async start(input) {
517
- let options = await normalizeOptions(input);
518
- return new Operation(options, input.progress);
519
- }
520
- update(_a) {
521
- var _b = _a, { event, script } = _b, newState = __objRest(_b, ["event", "script"]);
522
- Object.assign(this.state, newState);
523
- if (event && this._progress) {
524
- this._progress(__spreadValues({ event, script }, this.results));
525
- }
526
- return this;
527
- }
528
- };
529
-
530
- // src/run-npm-script.ts
531
-
532
-
533
-
534
- async function runNpmScript(script, operation) {
535
- let { cwd, ignoreScripts } = operation.options;
536
- if (!ignoreScripts) {
537
- let { data: manifest2 } = await readJsonFile("package.json", cwd);
538
- if (isManifest(manifest2) && hasScript(manifest2, script)) {
539
- await _ezspawn.async.call(void 0, "npm", ["run", script, "--silent"], { stdio: "inherit" });
540
- operation.update({ event: ProgressEvent.NpmScript, script });
541
- }
542
- }
543
- return operation;
544
- }
545
- function hasScript(manifest2, script) {
546
- let scripts = manifest2.scripts;
547
- if (scripts && typeof scripts === "object") {
548
- return Boolean(scripts[script]);
549
- }
550
- return false;
551
- }
552
-
553
- // src/update-files.ts
554
-
555
-
556
-
557
- async function updateFiles(operation) {
558
- let { files } = operation.options;
559
- for (let relPath of files) {
560
- let modified = await updateFile(relPath, operation);
561
- if (modified) {
562
- operation.update({
563
- event: ProgressEvent.FileUpdated,
564
- updatedFiles: operation.state.updatedFiles.concat(relPath)
565
- });
566
- } else {
567
- operation.update({
568
- event: ProgressEvent.FileSkipped,
569
- skippedFiles: operation.state.skippedFiles.concat(relPath)
570
- });
571
- }
572
- }
573
- return operation;
574
- }
575
- async function updateFile(relPath, operation) {
576
- let name = _path.basename.call(void 0, relPath).trim().toLowerCase();
577
- switch (name) {
578
- case "package.json":
579
- case "package-lock.json":
580
- case "bower.json":
581
- case "component.json":
582
- return updateManifestFile(relPath, operation);
583
- default:
584
- return updateTextFile(relPath, operation);
585
- }
586
- }
587
- async function updateManifestFile(relPath, operation) {
588
- let { cwd } = operation.options;
589
- let { newVersion } = operation.state;
590
- let modified = false;
591
- let file = await readJsonFile(relPath, cwd);
592
- if (isManifest(file.data) && file.data.version !== newVersion) {
593
- file.data.version = newVersion;
594
- await writeJsonFile(file);
595
- modified = true;
596
- }
597
- return modified;
598
- }
599
- async function updateTextFile(relPath, operation) {
600
- let { cwd } = operation.options;
601
- let { oldVersion, newVersion } = operation.state;
602
- let modified = false;
603
- let file = await readTextFile(relPath, cwd);
604
- if (file.data.includes(oldVersion)) {
605
- let sanitizedVersion = oldVersion.replace(/(\W)/g, "\\$1");
606
- let replacePattern = new RegExp("(\\b|v)" + sanitizedVersion + "\\b", "g");
607
- file.data = file.data.replace(replacePattern, "$1" + newVersion);
608
- await writeTextFile(file);
609
- return true;
610
- }
611
- return modified;
612
- }
613
-
614
- // src/version-bump.ts
615
- async function versionBump(arg = {}) {
616
- if (typeof arg === "string") {
617
- arg = { release: arg };
618
- }
619
- let operation = await Operation.start(arg);
620
- await getOldVersion(operation);
621
- await getNewVersion(operation);
622
- await runNpmScript(NpmScript.PreVersion, operation);
623
- await updateFiles(operation);
624
- if (operation.options.execute) {
625
- await _ezspawn.async.call(void 0, operation.options.execute, { stdio: "inherit" });
626
- }
627
- await runNpmScript(NpmScript.Version, operation);
628
- await gitCommit(operation);
629
- await gitTag(operation);
630
- await runNpmScript(NpmScript.PostVersion, operation);
631
- await gitPush(operation);
632
- return operation.results;
633
- }
634
-
635
-
636
-
637
-
638
-
639
-
640
-
641
-
642
- exports.ReleaseType = _semver.ReleaseType; exports.isReleaseType = isReleaseType; exports.manifest = manifest; exports.ProgressEvent = ProgressEvent; exports.NpmScript = NpmScript; exports.versionBump = versionBump;