bump-cli 2.9.0-0 → 2.9.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/README.md CHANGED
@@ -54,7 +54,7 @@ Or, with Yarn via
54
54
  yarn global add bump-cli
55
55
  ```
56
56
 
57
- ### Add Bump.sh to your node project
57
+ ### Add Bump.sh to your Node project
58
58
 
59
59
  As our CLI is a node package, you can easily embed it into your project by adding the package to your `package.json` file, either with NPM
60
60
 
@@ -74,7 +74,7 @@ You can then use any Bump.sh commands with `npx` (same as `npm exec`)
74
74
  npx bump --help
75
75
  ```
76
76
 
77
- ### How should I do if I'm not using npm ?
77
+ ### Can I install Bump.sh CLI without using NodeJS?
78
78
 
79
79
  Unfortunately, at the moment we only support the Node environment. However, you can download a standalone package directly from the [latest Github release](https://github.com/bump-sh/cli/releases) assets which you can run as a standalone binary. Or you can push your documentation using [our API](https://developers.bump.sh/) (advanced usage only).
80
80
 
@@ -87,7 +87,7 @@ $ bump --help
87
87
  The Bump.sh CLI is used to interact with your API documentation hosted on Bump.sh by using the API of developers.bump.sh
88
88
 
89
89
  VERSION
90
- bump-cli/2.8.0 linux-x64 node-v16.19.0
90
+ bump-cli/2.9.1 linux-x64 node-v20.18.1
91
91
 
92
92
  USAGE
93
93
  $ bump [COMMAND]
@@ -102,7 +102,7 @@ COMMANDS
102
102
 
103
103
  You can also get some help anytime by adding `--help` to any command. Example: `bump deploy --help`.
104
104
 
105
- ## Prepare your Bump.sh account
105
+ ### Prepare your Bump.sh account
106
106
 
107
107
  While some commands don't need any API token (`preview` or `diff`) you will need an access key if you want to interact with your Bump.sh documentation.
108
108
 
@@ -176,13 +176,16 @@ Please check `bump deploy --help` for more usage details.
176
176
 
177
177
  ### `bump diff [FILE]`
178
178
 
179
- _If you want to receive automatic `bump diff` results on your Github Pull Requests you might be interested by [our Github Action](https://github.com/marketplace/actions/api-documentation-on-bump#api-diff-on-pull-requests) diff command._
179
+ _If you want to receive automatic `bump diff` results on your Github Pull Requests you might be interested by [our Github Action](https://github.com/marketplace/actions/bump-sh-api-documentation-changelog) which also has a diff command._
180
180
 
181
181
  Please note that by default the command will always exit with a
182
182
  successful return code. If you want to use this command in a CI
183
183
  environment and want the command to fail **in case of a breaking
184
184
  change**, you will need to add the `--fail-on-breaking` flag to your
185
- diff command.
185
+ diff command. By default if the environment variable `CI=1` is present
186
+ (in most continuous integration environment), the flag will be
187
+ enabled. In that case you can disable the failures with
188
+ `--no-fail-on-breaking` flag.
186
189
 
187
190
  #### Public API diffs
188
191
 
@@ -198,7 +201,7 @@ Modified: GET /consommations
198
201
  > You can create as many diffs as you like without being authenticated. This is a **free and unlimited service** provided as long as you use the service fairly.
199
202
  {: .info}
200
203
 
201
- _Note: You can also test this feature in our dedicated web application at <https://api-diff.io/>._
204
+ _**Note:** You can also test this feature in our dedicated web application at <https://api-diff.io/>._
202
205
 
203
206
  #### Authenticated diffs related to your Bump.sh documentation
204
207
 
@@ -249,7 +252,7 @@ bump preview --live --open openapi-definition.json
249
252
  > You can create as many previews as you like without being authenticated. This is a **free and unlimited service**.
250
253
  {: .info}
251
254
 
252
- _Note: the additional `--open` flag helps to automatically open the preview URL in your browser._
255
+ _**Note:** the additional `--open` flag helps to automatically open the preview URL in your browser._
253
256
 
254
257
  Please check `bump preview --help` for more usage details
255
258
 
@@ -267,7 +270,7 @@ To redirect the output of the command to a new file you can run the following:
267
270
  bump overlay api-document.yaml overlay-file.yaml > api-overlayed-document.yaml
268
271
  ```
269
272
 
270
- _Note: you can also apply the overlay during the [`bump deploy` command]((#bump-deploy-file)) with the new `--overlay` flag:_
273
+ _Note: you can also apply overlays during the [`bump deploy` command]((#bump-deploy-file)) with the `--overlay` flag (which can be used multiples times):_
271
274
 
272
275
  ```shell
273
276
  bump deploy api-document.yaml --doc my-doc --token my-token --overlay overlay-file.yaml
@@ -330,3 +333,4 @@ This npm package starts at v2.0.0 for two main reasons:
330
333
  - Our [first version](https://github.com/bump-sh/bump-cli) of the Bump CLI was written in Ruby, starting at v2.0.0, which makes it clear we are working on our second version of the Bump CLI
331
334
 
332
335
  - The `bump-cli` package used to be [owned by Rico](https://github.com/rstacruz) which already published v1.x packages. If you are looking for the old npm package please head to [`@rstacruz/bump-cli` package](https://www.npmjs.com/package/@rstacruz/bump-cli). _A big thanks to Rico for transferring the ownership of the `bump-cli` package name!_
336
+ w
@@ -2,7 +2,7 @@ import { Config } from '@oclif/core';
2
2
  import { AxiosInstance, AxiosResponse } from 'axios';
3
3
  import { DiffRequest, DiffResponse, PingResponse, PreviewRequest, PreviewResponse, VersionRequest, VersionResponse, WithDiff } from './models.js';
4
4
  declare class BumpApi {
5
- protected config: Config;
5
+ protected config?: Config | undefined;
6
6
  protected readonly client: AxiosInstance;
7
7
  getDiff: (diffId: string, format: string) => Promise<AxiosResponse<DiffResponse>>;
8
8
  getPing: () => Promise<AxiosResponse<PingResponse>>;
@@ -15,7 +15,7 @@ declare class BumpApi {
15
15
  private authorizationHeader;
16
16
  private handleError;
17
17
  private initializeResponseInterceptor;
18
- constructor(config: Config);
18
+ constructor(config?: Config | undefined);
19
19
  }
20
20
  export { default as APIError } from './error.js';
21
21
  export { BumpApi };
package/dist/api/index.js CHANGED
@@ -31,8 +31,9 @@ class BumpApi {
31
31
  constructor(config) {
32
32
  this.config = config;
33
33
  const baseURL = `${vars.apiUrl}${vars.apiBasePath}`;
34
+ const userAgent = config?.userAgent || 'bump-cli';
34
35
  const headers = {
35
- 'User-Agent': vars.apiUserAgent(config.userAgent),
36
+ 'User-Agent': vars.apiUserAgent(userAgent),
36
37
  };
37
38
  this.client = axios.create({
38
39
  baseURL,
@@ -15,10 +15,10 @@ export default class Deploy extends BaseCommand<typeof Deploy> {
15
15
  'filename-pattern': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
16
16
  hub: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
17
17
  interactive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
- overlay: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ overlay: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
19
  token: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
20
20
  };
21
21
  protected deployDirectory(dir: string, dryRun: boolean, token: string, hub: string, autoCreate: boolean, interactive: boolean, filenamePattern: string, documentationName: string | undefined, branch: string | undefined): Promise<void>;
22
- protected deploySingleFile(api: API, dryRun: boolean, documentation: string, token: string, hub: string | undefined, autoCreate: boolean, documentationName: string | undefined, branch: string | undefined, overlay?: string | undefined): Promise<void>;
22
+ protected deploySingleFile(api: API, dryRun: boolean, documentation: string, token: string, hub: string | undefined, autoCreate: boolean, documentationName: string | undefined, branch: string | undefined, overlay?: string[] | undefined): Promise<void>;
23
23
  run(): Promise<void>;
24
24
  }
@@ -16,13 +16,13 @@ export default class Deploy extends BaseCommand {
16
16
  `Deploy a new version of ${chalk.underline('an existing documentation')}
17
17
 
18
18
  ${chalk.dim('$ bump deploy FILE --doc <your_doc_id_or_slug> --token <your_doc_token>')}
19
- * Let's deploy a new documentation version on Bump... done
19
+ * Let's deploy on Bump.sh... done
20
20
  * Your new documentation version will soon be ready
21
21
  `,
22
22
  `Deploy a new version of ${chalk.underline('an existing documentation attached to a hub')}
23
23
 
24
24
  ${chalk.dim('$ bump deploy FILE --doc <doc_slug> --hub <your_hub_id_or_slug> --token <your_doc_token>')}
25
- * Let's deploy a new documentation version on Bump... done
25
+ * Let's deploy on Bump.sh... done
26
26
  * Your new documentation version will soon be ready
27
27
  `,
28
28
  `Deploy a whole directory of ${chalk.underline('API definitions files to a hub')}
@@ -44,7 +44,7 @@ Let's deploy a new version to your my-jobs-service documentation on Bump.sh... d
44
44
  `${chalk.underline('Validate a new documentation version')} before deploying it
45
45
 
46
46
  ${chalk.dim('$ bump deploy FILE --dry-run --doc <doc_slug> --token <your_doc_token>')}
47
- * Let's validate a new documentation version on Bump... done
47
+ * Let's validate on Bump.sh... done
48
48
  * Definition is valid
49
49
  `,
50
50
  ];
@@ -45,7 +45,7 @@ export default class Diff extends BaseCommand {
45
45
  branch: flagsBuilder.branch(),
46
46
  doc: flagsBuilder.doc(),
47
47
  expires: flagsBuilder.expires(),
48
- 'fail-on-breaking': flagsBuilder.failOnBreaking(),
48
+ 'fail-on-breaking': flagsBuilder.failOnBreaking({ allowNo: true }),
49
49
  format: flagsBuilder.format(),
50
50
  hub: flagsBuilder.hub(),
51
51
  token: flagsBuilder.token({ required: false }),
@@ -98,7 +98,7 @@ export default class Diff extends BaseCommand {
98
98
  throw new CLIError('Please provide a second file argument or login with an existing token');
99
99
  }
100
100
  ux.action.status = '...diff on Bump.sh in progress';
101
- const diff = await new CoreDiff(this.bump).run(args.file, args.otherFile, documentation, hub, branch, token, format, expires);
101
+ const diff = await new CoreDiff(this.config).run(args.file, args.otherFile, documentation, hub, branch, token, format, expires);
102
102
  ux.action.stop();
103
103
  if (diff) {
104
104
  await this.displayCompareResult(diff, format, flags['fail-on-breaking']);
@@ -6,6 +6,6 @@ export declare class Deploy {
6
6
  constructor(bumpClient: BumpApi);
7
7
  protected createVersion(request: VersionRequest, token: string): Promise<VersionResponse | undefined>;
8
8
  d(formatter: any, ...args: any[]): void;
9
- run(api: API, dryRun: boolean, documentation: string, token: string, hub: string | undefined, autoCreate: boolean, documentationName: string | undefined, branch: string | undefined, overlay?: string | undefined): Promise<VersionResponse | undefined>;
9
+ run(api: API, dryRun: boolean, documentation: string, token: string, hub: string | undefined, autoCreate: boolean, documentationName: string | undefined, branch: string | undefined, overlay?: string[] | undefined): Promise<VersionResponse | undefined>;
10
10
  validateVersion(version: VersionRequest, token: string): Promise<undefined>;
11
11
  }
@@ -29,7 +29,13 @@ export class Deploy {
29
29
  async run(api, dryRun, documentation, token, hub, autoCreate, documentationName, branch, overlay) {
30
30
  let version;
31
31
  if (overlay) {
32
- await api.applyOverlay(overlay);
32
+ /* eslint-disable no-await-in-loop */
33
+ // Alternatively we can apply all overlays in parallel
34
+ // https://stackoverflow.com/questions/48957022/unexpected-await-inside-a-loop-no-await-in-loop
35
+ for (const overlayFile of overlay) {
36
+ await api.applyOverlay(overlayFile);
37
+ }
38
+ /* eslint-enable no-await-in-loop */
33
39
  }
34
40
  const [definition, references] = api.extractDefinition();
35
41
  const request = {
@@ -1,9 +1,12 @@
1
+ import { Config } from '@oclif/core';
1
2
  import { BumpApi } from '../api/index.js';
2
3
  import { DiffResponse, VersionResponse, WithDiff } from '../api/models.js';
3
4
  export declare class Diff {
4
5
  static readonly TIMEOUT = 120;
5
6
  private _bump;
6
- constructor(bumpClient: BumpApi);
7
+ private _config;
8
+ constructor(config?: Config);
9
+ get bumpClient(): BumpApi;
7
10
  get pollingPeriod(): number;
8
11
  createDiff(file1: string, file2: string, expires: string | undefined): Promise<DiffResponse | undefined>;
9
12
  createVersion(file: string, documentation: string, token: string, hub: string | undefined, branch_name: string | undefined, previous_version_id?: string | undefined): Promise<VersionResponse | undefined>;
package/dist/core/diff.js CHANGED
@@ -1,12 +1,22 @@
1
+ import { Config } from '@oclif/core';
1
2
  import { CLIError } from '@oclif/core/errors';
2
3
  import debug from 'debug';
4
+ import { BumpApi } from '../api/index.js';
3
5
  import { API } from '../definition.js';
4
6
  export class Diff {
5
7
  // 120 seconds = 2 minutes
6
8
  static TIMEOUT = 120;
7
9
  _bump;
8
- constructor(bumpClient) {
9
- this._bump = bumpClient;
10
+ _config;
11
+ constructor(config) {
12
+ if (config) {
13
+ this._config = config;
14
+ }
15
+ }
16
+ get bumpClient() {
17
+ if (!this._bump)
18
+ this._bump = new BumpApi(this._config);
19
+ return this._bump;
10
20
  }
11
21
  get pollingPeriod() {
12
22
  return process.env.BUMP_POLLING_PERIOD ? Number(process.env.BUMP_POLLING_PERIOD) : 1000;
@@ -23,7 +33,7 @@ export class Diff {
23
33
  previous_references,
24
34
  references,
25
35
  };
26
- const response = await this._bump.postDiff(request);
36
+ const response = await this.bumpClient.postDiff(request);
27
37
  switch (response.status) {
28
38
  case 201: {
29
39
  this.d(`Diff created with ID ${response.data.id}`);
@@ -48,7 +58,7 @@ export class Diff {
48
58
  references,
49
59
  unpublished: true,
50
60
  };
51
- const response = await this._bump.postVersion(request, token);
61
+ const response = await this.bumpClient.postVersion(request, token);
52
62
  switch (response.status) {
53
63
  case 201: {
54
64
  this.d(`Unpublished version created with ID ${response.data.id}`);
@@ -88,6 +98,8 @@ export class Diff {
88
98
  await this.delay(this.pollingPeriod);
89
99
  }
90
100
  async run(file1, file2, documentation, hub, branch, token, format, expires) {
101
+ if (!this._config)
102
+ this._config = await Config.load('../../');
91
103
  let diffVersion;
92
104
  if (file2 && (!documentation || !token)) {
93
105
  diffVersion = await this.createDiff(file1, file2, expires);
@@ -111,8 +123,8 @@ export class Diff {
111
123
  }
112
124
  async waitResult(result, token, opts) {
113
125
  const pollingResponse = await (this.isVersion(result) && token
114
- ? this._bump.getVersion(result.id, token)
115
- : this._bump.getDiff(result.id, opts.format));
126
+ ? this.bumpClient.getVersion(result.id, token)
127
+ : this.bumpClient.getDiff(result.id, opts.format));
116
128
  if (opts.timeout <= 0) {
117
129
  throw new CLIError('We were unable to compute your documentation diff. Sorry about that. Please try again later. If the error persists, please contact support at https://bump.sh.');
118
130
  }
@@ -1,7 +1,7 @@
1
1
  import { default as $RefParser, getJsonSchemaRefParserDefaultOptions } from '@apidevtools/json-schema-ref-parser';
2
2
  import asyncapi from '@asyncapi/specs';
3
3
  import { CLIError } from '@oclif/core/errors';
4
- import { safeStringify } from '@stoplight/yaml';
4
+ import { parseWithPointers, safeStringify } from '@stoplight/yaml';
5
5
  import debug from 'debug';
6
6
  import { createRequire } from 'node:module';
7
7
  import { default as nodePath } from 'node:path';
@@ -120,10 +120,11 @@ class API {
120
120
  async applyOverlay(overlayPath) {
121
121
  const overlay = await API.load(overlayPath);
122
122
  const overlayDefinition = overlay.definition;
123
+ const currentDefinition = this.overlayedDefinition || this.definition;
123
124
  if (!API.isOpenAPIOverlay(overlayDefinition)) {
124
125
  throw new Error(`${overlayPath} does not look like an OpenAPI overlay`);
125
126
  }
126
- this.overlayedDefinition = await new Overlay().run(this.definition, overlayDefinition);
127
+ this.overlayedDefinition = await new Overlay().run(currentDefinition, overlayDefinition);
127
128
  }
128
129
  extractDefinition(outputPath) {
129
130
  const references = [];
@@ -218,9 +219,11 @@ class API {
218
219
  }
219
220
  serializeDefinition(outputPath) {
220
221
  if (this.overlayedDefinition) {
222
+ const { comments } = parseWithPointers(this.rawDefinition, { attachComments: true });
223
+ const dumpOptions = { comments, lineWidth: Number.POSITIVE_INFINITY };
221
224
  return this.guessFormat(outputPath) === 'json'
222
225
  ? JSON.stringify(this.overlayedDefinition)
223
- : safeStringify(this.overlayedDefinition);
226
+ : safeStringify(this.overlayedDefinition, dumpOptions);
224
227
  }
225
228
  return this.rawDefinition;
226
229
  }
package/dist/flags.d.ts CHANGED
@@ -41,8 +41,8 @@ declare const out: Interfaces.FlagDefinition<string, Interfaces.CustomOptions, {
41
41
  multiple: false;
42
42
  requiredOrDefaulted: false;
43
43
  }>;
44
- declare const overlay: Interfaces.FlagDefinition<string, Interfaces.CustomOptions, {
45
- multiple: false;
44
+ declare const overlay: Interfaces.FlagDefinition<string[], Interfaces.CustomOptions, {
45
+ multiple: true;
46
46
  requiredOrDefaulted: false;
47
47
  }>;
48
48
  export { autoCreate, branch, doc, docName, dryRun, expires, failOnBreaking, filenamePattern, format, hub, interactive, live, open, out, overlay, token, };
package/dist/flags.js CHANGED
@@ -1,7 +1,4 @@
1
1
  import { Flags } from '@oclif/core';
2
- // import * as Parser from '@oclif/parser';
3
- // Re-export oclif flags https://oclif.io/docs/flags
4
- // export * from '@oclif/command/lib/flags';
5
2
  // Custom flags for bump-cli
6
3
  const doc = Flags.custom({
7
4
  char: 'd',
@@ -89,7 +86,7 @@ const failOnBreaking = (opts = {}) => {
89
86
  }
90
87
  return false;
91
88
  },
92
- description: 'Fail when diff contains a breaking change',
89
+ description: 'Fail when diff contains a breaking change. Defaults to false locally. In CI environments where the env variable CI=1 is set, it defaults to true.',
93
90
  });
94
91
  };
95
92
  const live = (opts = {}) => {
@@ -115,6 +112,7 @@ const out = Flags.custom({
115
112
  });
116
113
  const overlay = Flags.custom({
117
114
  char: 'o',
118
- description: 'Path or URL of an overlay file to apply before deploying',
115
+ description: 'Path or URL of overlay file(s) to apply before deploying',
116
+ multiple: true,
119
117
  });
120
118
  export { autoCreate, branch, doc, docName, dryRun, expires, failOnBreaking, filenamePattern, format, hub, interactive, live, open, out, overlay, token, };
@@ -11,10 +11,10 @@
11
11
  },
12
12
  "description": "Create a new version of your documentation from the given file or URL.",
13
13
  "examples": [
14
- "Deploy a new version of an existing documentation\n\n$ bump deploy FILE --doc <your_doc_id_or_slug> --token <your_doc_token>\n* Let's deploy a new documentation version on Bump... done\n* Your new documentation version will soon be ready\n",
15
- "Deploy a new version of an existing documentation attached to a hub\n\n$ bump deploy FILE --doc <doc_slug> --hub <your_hub_id_or_slug> --token <your_doc_token>\n* Let's deploy a new documentation version on Bump... done\n* Your new documentation version will soon be ready\n",
14
+ "Deploy a new version of an existing documentation\n\n$ bump deploy FILE --doc <your_doc_id_or_slug> --token <your_doc_token>\n* Let's deploy on Bump.sh... done\n* Your new documentation version will soon be ready\n",
15
+ "Deploy a new version of an existing documentation attached to a hub\n\n$ bump deploy FILE --doc <doc_slug> --hub <your_hub_id_or_slug> --token <your_doc_token>\n* Let's deploy on Bump.sh... done\n* Your new documentation version will soon be ready\n",
16
16
  "Deploy a whole directory of API definitions files to a hub\n\n$ bump deploy DIR --filename-pattern *-{slug}-api --hub <hub_slug> --token <hub_token>\nWe've found 2 valid API definitions to deploy\n└─ DIR\n └─ source-my-service-api.yml (OpenAPI spec version 3.1.0)\n └─ source-my-jobs-service-api.yml (AsyncAPI spec version 2.6.0)\n\nLet's deploy those documentations to your <hub_slug> hub on Bump.sh\n\n* Your new documentation version will soon be ready\nLet's deploy a new version to your my-service documentation on Bump.sh... done\n\n* Your new documentation version will soon be ready\nLet's deploy a new version to your my-jobs-service documentation on Bump.sh... done\n",
17
- "Validate a new documentation version before deploying it\n\n$ bump deploy FILE --dry-run --doc <doc_slug> --token <your_doc_token>\n* Let's validate a new documentation version on Bump... done\n* Definition is valid\n"
17
+ "Validate a new documentation version before deploying it\n\n$ bump deploy FILE --dry-run --doc <doc_slug> --token <your_doc_token>\n* Let's validate on Bump.sh... done\n* Definition is valid\n"
18
18
  ],
19
19
  "flags": {
20
20
  "auto-create": {
@@ -86,10 +86,10 @@
86
86
  },
87
87
  "overlay": {
88
88
  "char": "o",
89
- "description": "Path or URL of an overlay file to apply before deploying",
89
+ "description": "Path or URL of overlay file(s) to apply before deploying",
90
90
  "name": "overlay",
91
91
  "hasDynamicHelp": false,
92
- "multiple": false,
92
+ "multiple": true,
93
93
  "type": "option"
94
94
  },
95
95
  "token": {
@@ -157,9 +157,9 @@
157
157
  },
158
158
  "fail-on-breaking": {
159
159
  "char": "F",
160
- "description": "Fail when diff contains a breaking change",
160
+ "description": "Fail when diff contains a breaking change. Defaults to false locally. In CI environments where the env variable CI=1 is set, it defaults to true.",
161
161
  "name": "fail-on-breaking",
162
- "allowNo": false,
162
+ "allowNo": true,
163
163
  "type": "boolean"
164
164
  },
165
165
  "format": {
@@ -277,5 +277,5 @@
277
277
  "strict": true
278
278
  }
279
279
  },
280
- "version": "2.9.0-0"
280
+ "version": "2.9.2"
281
281
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bump-cli",
3
- "description": "The Bump CLI is used to interact with your API documentation hosted on Bump by using the API of developers.bump.sh",
4
- "version": "2.9.0-0",
3
+ "description": "The Bump CLI is used to interact with your API documentation hosted on Bump.sh by using the API of developers.bump.sh",
4
+ "version": "2.9.2",
5
5
  "author": "Paul Bonaud <paulr@bump.sh>",
6
6
  "bin": {
7
7
  "bump": "./bin/run.js"
@@ -10,20 +10,20 @@
10
10
  "devDependencies": {
11
11
  "@oclif/prettier-config": "^0.2.1",
12
12
  "@oclif/test": "^4",
13
- "@types/chai": "^4",
13
+ "@types/chai": "^5",
14
14
  "@types/debug": "^4.1.12",
15
15
  "@types/jsonpath": "^0.2.4",
16
16
  "@types/mocha": "^10",
17
- "@types/node": "^18",
17
+ "@types/node": "^22",
18
18
  "@types/sinon": "^17.0.3",
19
19
  "@typescript-eslint/eslint-plugin": "^8.13.0",
20
- "chai": "^4.5.0",
20
+ "chai": "^5.1.2",
21
21
  "eslint": "^8",
22
22
  "eslint-config-oclif": "^5",
23
23
  "eslint-config-oclif-typescript": "^3",
24
- "eslint-config-prettier": "^9.1.0",
24
+ "eslint-config-prettier": "^10.0.1",
25
25
  "eslint-plugin-prettier": "^5.2.1",
26
- "mocha": "^10",
26
+ "mocha": "^11",
27
27
  "mock-stdin": "^1.0.0",
28
28
  "nock": "^14.0.0-beta.16",
29
29
  "np": "^10.1.0",
@@ -73,10 +73,12 @@
73
73
  },
74
74
  "repository": "bump-sh/cli",
75
75
  "scripts": {
76
+ "prepare": "npm run build",
76
77
  "build": "shx rm -rf dist && tsc -b",
77
78
  "clean": "rm -rf dist/ oclif.manifest.json",
78
79
  "lint": "eslint . --ext .ts",
79
80
  "fmt": "eslint --fix . --ext .ts",
81
+ "pack": "oclif pack tarballs",
80
82
  "postpack": "shx rm -f oclif.manifest.json",
81
83
  "posttest": "npm run lint",
82
84
  "prepack": "npm run clean && npm run build && oclif manifest && oclif readme",