conventional-commits-parser 3.2.3 → 4.0.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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url] [![Coverage Status][coveralls-image]][coveralls-url]
1
+ # [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url] [![Coverage Status][coverage-image]][coverage-url]
2
2
 
3
3
  > Parse raw conventional commits
4
4
 
@@ -201,7 +201,8 @@ Used to define if `issuePrefixes` should be considered case sensitive.
201
201
 
202
202
  ##### noteKeywords
203
203
 
204
- Type: `array` of `string` or `string` Default: `['BREAKING CHANGE']`
204
+ Type: `array` of `string` or `string` Default: `['BREAKING CHANGE',
205
+ 'BREAKING-CHANGE']`
205
206
 
206
207
  Keywords for important notes. This value is case **insensitive**. If it's a `string` it will be converted to an `array` separated by a comma.
207
208
 
@@ -378,5 +379,5 @@ MIT © [Steve Mao](https://github.com/stevemao)
378
379
  [travis-url]: https://travis-ci.org/conventional-changelog/conventional-commits-parser
379
380
  [daviddm-image]: https://david-dm.org/conventional-changelog/conventional-commits-parser.svg?theme=shields.io
380
381
  [daviddm-url]: https://david-dm.org/conventional-changelog/conventional-commits-parser
381
- [coveralls-image]: https://coveralls.io/repos/conventional-changelog/conventional-commits-parser/badge.svg
382
- [coveralls-url]: https://coveralls.io/r/conventional-changelog/conventional-commits-parser
382
+ [coverage-image]: https://coveralls.io/repos/github/conventional-changelog/conventional-changelog/badge.svg?branch=master
383
+ [coverage-url]: https://coveralls.io/github/conventional-changelog/conventional-changelog?branch=master
package/cli.js CHANGED
@@ -1,14 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict'
3
3
  const conventionalCommitsParser = require('./')
4
- const forEach = require('lodash').forEach
5
4
  const fs = require('fs')
5
+ const { Transform } = require('stream')
6
6
  const isTextPath = require('is-text-path')
7
7
  const JSONStream = require('JSONStream')
8
8
  const meow = require('meow')
9
9
  const readline = require('readline')
10
10
  const split = require('split2')
11
- const through = require('through2')
12
11
 
13
12
  const filePaths = []
14
13
  let separator = '\n\n\n'
@@ -83,7 +82,7 @@ const cli = meow(`
83
82
  }
84
83
  })
85
84
 
86
- forEach(cli.input, function (arg) {
85
+ cli.input.forEach(function (arg) {
87
86
  if (isTextPath(arg)) {
88
87
  filePaths.push(arg)
89
88
  } else {
@@ -123,7 +122,9 @@ if (process.stdin.isTTY) {
123
122
  processFile(0)
124
123
  } else {
125
124
  let commit = ''
126
- const stream = through()
125
+ const stream = new Transform({
126
+ transform: (chunk, enc, cb) => cb(null, chunk)
127
+ })
127
128
  const rl = readline.createInterface({
128
129
  input: process.stdin,
129
130
  output: process.stdout,
@@ -132,13 +133,17 @@ if (process.stdin.isTTY) {
132
133
 
133
134
  stream.pipe(conventionalCommitsParser(options))
134
135
  .pipe(JSONStream.stringify('', '', ''))
135
- .pipe(through(function (chunk, enc, cb) {
136
- if (chunk.toString() === '""') {
137
- cb(null, 'Commit cannot be parsed\n')
138
- } else {
139
- cb(null, chunk + '\n')
140
- }
141
- }))
136
+ .pipe(
137
+ new Transform({
138
+ transform (chunk, enc, cb) {
139
+ if (chunk.toString() === '""') {
140
+ cb(null, 'Commit cannot be parsed\n')
141
+ } else {
142
+ cb(null, chunk + '\n')
143
+ }
144
+ }
145
+ })
146
+ )
142
147
  .pipe(process.stdout)
143
148
 
144
149
  rl.on('line', function (line) {
package/index.js CHANGED
@@ -1,12 +1,11 @@
1
1
  'use strict'
2
2
 
3
+ const { Transform } = require('stream')
3
4
  const parser = require('./lib/parser')
4
5
  const regex = require('./lib/regex')
5
- const through = require('through2')
6
- const _ = require('lodash')
7
6
 
8
7
  function assignOpts (options) {
9
- options = _.extend({
8
+ options = {
10
9
  headerPattern: /^(\w*)(?:\(([\w$.\-*/ ]*)\))?: (.*)$/,
11
10
  headerCorrespondence: ['type', 'scope', 'subject'],
12
11
  referenceActions: [
@@ -21,14 +20,15 @@ function assignOpts (options) {
21
20
  'resolved'
22
21
  ],
23
22
  issuePrefixes: ['#'],
24
- noteKeywords: ['BREAKING CHANGE'],
23
+ noteKeywords: ['BREAKING CHANGE', 'BREAKING-CHANGE'],
25
24
  fieldPattern: /^-(.*?)-$/,
26
25
  revertPattern: /^Revert\s"([\s\S]*)"\s*This reverts commit (\w*)\./,
27
26
  revertCorrespondence: ['header', 'hash'],
28
27
  warn: function () {},
29
28
  mergePattern: null,
30
- mergeCorrespondence: null
31
- }, options)
29
+ mergeCorrespondence: null,
30
+ ...options
31
+ }
32
32
 
33
33
  if (typeof options.headerPattern === 'string') {
34
34
  options.headerPattern = new RegExp(options.headerPattern)
@@ -73,18 +73,22 @@ function conventionalCommitsParser (options) {
73
73
  options = assignOpts(options)
74
74
  const reg = regex(options)
75
75
 
76
- return through.obj(function (data, enc, cb) {
77
- let commit
78
-
79
- try {
80
- commit = parser(data.toString(), options, reg)
81
- cb(null, commit)
82
- } catch (err) {
83
- if (options.warn === true) {
84
- cb(err)
85
- } else {
86
- options.warn(err.toString())
87
- cb(null, '')
76
+ return new Transform({
77
+ objectMode: true,
78
+ highWaterMark: 16,
79
+ transform (data, enc, cb) {
80
+ let commit
81
+
82
+ try {
83
+ commit = parser(data.toString(), options, reg)
84
+ cb(null, commit)
85
+ } catch (err) {
86
+ if (options.warn === true) {
87
+ cb(err)
88
+ } else {
89
+ options.warn(err.toString())
90
+ cb(null, '')
91
+ }
88
92
  }
89
93
  }
90
94
  })
package/lib/parser.js CHANGED
@@ -1,5 +1,4 @@
1
1
  'use strict'
2
- const _ = require('lodash')
3
2
 
4
3
  const CATCH_ALL = /()(.+)/gi
5
4
  const SCISSOR = '# ------------------------ >8 ------------------------'
@@ -91,11 +90,11 @@ function parser (raw, options, regex) {
91
90
  throw new TypeError('Expected a raw commit')
92
91
  }
93
92
 
94
- if (_.isEmpty(options)) {
93
+ if (!options || (typeof options === 'object' && !Object.keys(options).length)) {
95
94
  throw new TypeError('Expected options')
96
95
  }
97
96
 
98
- if (_.isEmpty(regex)) {
97
+ if (!regex) {
99
98
  throw new TypeError('Expected regex')
100
99
  }
101
100
 
@@ -112,15 +111,15 @@ function parser (raw, options, regex) {
112
111
 
113
112
  let continueNote = false
114
113
  let isBody = true
115
- const headerCorrespondence = _.map(options.headerCorrespondence, function (part) {
114
+ const headerCorrespondence = options.headerCorrespondence?.map(function (part) {
116
115
  return part.trim()
117
- })
118
- const revertCorrespondence = _.map(options.revertCorrespondence, function (field) {
116
+ }) || []
117
+ const revertCorrespondence = options.revertCorrespondence?.map(function (field) {
119
118
  return field.trim()
120
- })
121
- const mergeCorrespondence = _.map(options.mergeCorrespondence, function (field) {
119
+ }) || []
120
+ const mergeCorrespondence = options.mergeCorrespondence?.map(function (field) {
122
121
  return field.trim()
123
- })
122
+ }) || []
124
123
 
125
124
  let body = null
126
125
  let footer = null
@@ -166,7 +165,7 @@ function parser (raw, options, regex) {
166
165
  header = ''
167
166
  }
168
167
 
169
- _.forEach(mergeCorrespondence, function (partName, index) {
168
+ mergeCorrespondence.forEach(function (partName, index) {
170
169
  const partValue = mergeMatch[index + 1] || null
171
170
  mergeParts[partName] = partValue
172
171
  })
@@ -174,30 +173,30 @@ function parser (raw, options, regex) {
174
173
  header = merge
175
174
  merge = null
176
175
 
177
- _.forEach(mergeCorrespondence, function (partName) {
176
+ mergeCorrespondence.forEach(function (partName) {
178
177
  mergeParts[partName] = null
179
178
  })
180
179
  }
181
180
 
182
181
  const headerMatch = header.match(options.headerPattern)
183
182
  if (headerMatch) {
184
- _.forEach(headerCorrespondence, function (partName, index) {
183
+ headerCorrespondence.forEach(function (partName, index) {
185
184
  const partValue = headerMatch[index + 1] || null
186
185
  headerParts[partName] = partValue
187
186
  })
188
187
  } else {
189
- _.forEach(headerCorrespondence, function (partName) {
188
+ headerCorrespondence.forEach(function (partName) {
190
189
  headerParts[partName] = null
191
190
  })
192
191
  }
193
192
 
194
- Array.prototype.push.apply(references, getReferences(header, {
193
+ references.push(...getReferences(header, {
195
194
  references: regex.references,
196
195
  referenceParts: regex.referenceParts
197
196
  }))
198
197
 
199
198
  // body or footer
200
- _.forEach(lines, function (line) {
199
+ lines.forEach(function (line) {
201
200
  if (options.fieldPattern) {
202
201
  const fieldMatch = options.fieldPattern.exec(line)
203
202
 
@@ -285,7 +284,7 @@ function parser (raw, options, regex) {
285
284
  const revertMatch = raw.match(options.revertPattern)
286
285
  if (revertMatch) {
287
286
  revert = {}
288
- _.forEach(revertCorrespondence, function (partName, index) {
287
+ revertCorrespondence.forEach(function (partName, index) {
289
288
  const partValue = revertMatch[index + 1] || null
290
289
  revert[partName] = partValue
291
290
  })
@@ -293,13 +292,13 @@ function parser (raw, options, regex) {
293
292
  revert = null
294
293
  }
295
294
 
296
- _.map(notes, function (note) {
295
+ notes.forEach(function (note) {
297
296
  note.text = trimOffNewlines(note.text)
298
-
299
- return note
300
297
  })
301
298
 
302
- const msg = _.merge(headerParts, mergeParts, {
299
+ const msg = {
300
+ ...headerParts,
301
+ ...mergeParts,
303
302
  merge: merge,
304
303
  header: header,
305
304
  body: body ? trimOffNewlines(body) : null,
@@ -307,8 +306,9 @@ function parser (raw, options, regex) {
307
306
  notes: notes,
308
307
  references: references,
309
308
  mentions: mentions,
310
- revert: revert
311
- }, otherFields)
309
+ revert: revert,
310
+ ...otherFields
311
+ }
312
312
 
313
313
  return msg
314
314
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "conventional-commits-parser",
3
- "version": "3.2.3",
3
+ "version": "4.0.0",
4
4
  "description": "Parse raw conventional commits",
5
5
  "bugs": {
6
6
  "url": "https://github.com/conventional-changelog/conventional-changelog/issues"
@@ -17,7 +17,7 @@
17
17
  },
18
18
  "license": "MIT",
19
19
  "engines": {
20
- "node": ">=10"
20
+ "node": ">=14"
21
21
  },
22
22
  "files": [
23
23
  "index.js",
@@ -33,20 +33,18 @@
33
33
  "logs"
34
34
  ],
35
35
  "dependencies": {
36
+ "JSONStream": "^1.3.5",
36
37
  "is-text-path": "^1.0.1",
37
- "JSONStream": "^1.0.4",
38
- "lodash": "^4.17.15",
39
- "meow": "^8.0.0",
40
- "split2": "^3.0.0",
41
- "through2": "^4.0.0"
42
- },
43
- "scripts": {
44
- "test-windows": "echo 'make work on windows'"
38
+ "meow": "^8.1.2",
39
+ "split2": "^3.2.2"
45
40
  },
46
41
  "bin": {
47
42
  "conventional-commits-parser": "cli.js"
48
43
  },
49
44
  "devDependencies": {
50
45
  "forceable-tty": "^0.1.0"
46
+ },
47
+ "scripts": {
48
+ "test-windows": "echo 'make work on windows'"
51
49
  }
52
- }
50
+ }
package/CHANGELOG.md DELETED
@@ -1,456 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- # [3.2.0](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@3.1.0...conventional-commits-parser@3.2.0) (2020-11-05)
7
-
8
-
9
- ### Bug Fixes
10
-
11
- * ignore gpg lines ([#685](https://github.com/conventional-changelog/conventional-changelog/issues/685)) ([f8fcbc2](https://github.com/conventional-changelog/conventional-changelog/commit/f8fcbc2e8b0834c29178ace6382b438a020ad828))
12
- * **deps:** update dependency through2 to v4 ([#657](https://github.com/conventional-changelog/conventional-changelog/issues/657)) ([7ae618c](https://github.com/conventional-changelog/conventional-changelog/commit/7ae618c81491841e5b1d796d3933aac0c54bc312))
13
-
14
-
15
- ### Features
16
-
17
- * allows notes pattern to be customized ([#586](https://github.com/conventional-changelog/conventional-changelog/issues/586)) ([9c00f32](https://github.com/conventional-changelog/conventional-changelog/commit/9c00f3242d916be1774a618d943f908f8d9699a6))
18
-
19
-
20
-
21
-
22
-
23
- # [3.1.0](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@3.0.8...conventional-commits-parser@3.1.0) (2020-05-08)
24
-
25
-
26
- ### Bug Fixes
27
-
28
- * **deps:** update yargs-parser to move off a flagged-vulnerable version. ([#635](https://github.com/conventional-changelog/conventional-changelog/issues/635)) ([aafc0f0](https://github.com/conventional-changelog/conventional-changelog/commit/aafc0f00412c3e4b23b8418300e5a570a48fe24d))
29
-
30
-
31
- ### Features
32
-
33
- * **conventional-commits-parser:** add issuePrefixesCaseSensitive parser option ([#580](https://github.com/conventional-changelog/conventional-changelog/issues/580)) ([526b282](https://github.com/conventional-changelog/conventional-changelog/commit/526b28214d12c55158eb2e4d44408378587ceb97))
34
- * support slash in headerPattern default options ([93a547d](https://github.com/conventional-changelog/conventional-changelog/commit/93a547d742634d8676f499cfa2a274bc3792d020))
35
-
36
-
37
-
38
-
39
-
40
- ### [3.2.3](https://www.github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser-v3.2.2...conventional-commits-parser-v3.2.3) (2021-10-23)
41
-
42
-
43
- ### Bug Fixes
44
-
45
- * address ReDoS issue ([#861](https://www.github.com/conventional-changelog/conventional-changelog/issues/861)) ([c696fa3](https://www.github.com/conventional-changelog/conventional-changelog/commit/c696fa35f93e0ee13728d6cf1221587ac6386311))
46
-
47
- ### [3.2.2](https://www.github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser-v3.2.1...conventional-commits-parser-v3.2.2) (2021-09-09)
48
-
49
-
50
- ### Bug Fixes
51
-
52
- * **conventional-commits-parser:** address CVE-2021-23425 ([#841](https://www.github.com/conventional-changelog/conventional-changelog/issues/841)) ([02b3d53](https://www.github.com/conventional-changelog/conventional-changelog/commit/02b3d53a0c142f0c28ee7d190d210c76a62887c2))
53
-
54
- ### [3.2.1](https://www.github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@3.2.0...v3.2.1) (2021-02-15)
55
-
56
-
57
- ### Bug Fixes
58
-
59
- * handle missing header in merge commit ([#757](https://www.github.com/conventional-changelog/conventional-changelog/issues/757)) ([d189d3e](https://www.github.com/conventional-changelog/conventional-changelog/commit/d189d3e45b82e7141115ce8eccd95c8cf2d7db77))
60
-
61
- ## [3.0.8](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@3.0.7...conventional-commits-parser@3.0.8) (2019-11-14)
62
-
63
-
64
- ### Bug Fixes
65
-
66
- * add types for cli flags ([#551](https://github.com/conventional-changelog/conventional-changelog/issues/551)) ([bf1d64a](https://github.com/conventional-changelog/conventional-changelog/commit/bf1d64aeaf8f262d4b2beec02d2aebb78df7343b))
67
-
68
-
69
-
70
-
71
-
72
- ## [3.0.7](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@3.0.6...conventional-commits-parser@3.0.7) (2019-11-07)
73
-
74
-
75
- ### Bug Fixes
76
-
77
- * **conventional-commits-parser:** add breaking change notes if header match `breakingHeaderPattern` ([#544](https://github.com/conventional-changelog/conventional-changelog/issues/544)) ([efdf3cb](https://github.com/conventional-changelog/conventional-changelog/commit/efdf3cbc9de3278b180a48beebb74e596e3c5f94))
78
- * **conventional-commits-parser:** add missing separator pipe to non tty parser ([#546](https://github.com/conventional-changelog/conventional-changelog/issues/546)) ([c522743](https://github.com/conventional-changelog/conventional-changelog/commit/c5227437b0b300f30a57e8ba5df2a8ab8d163af0))
79
-
80
-
81
-
82
-
83
-
84
- ## [3.0.6](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@3.0.5...conventional-commits-parser@3.0.6) (2019-10-24)
85
-
86
-
87
- ### Bug Fixes
88
-
89
- * **conventional-commits-parser:** downgrade is-text-path due to node 6 incompatibility ([#536](https://github.com/conventional-changelog/conventional-changelog/issues/536)) ([3aa2637](https://github.com/conventional-changelog/conventional-changelog/commit/3aa2637a1c65bb4db3d8bf2c6ce17e6f5abe1ca1))
90
- * **deps:** update lodash to fix security issues ([#535](https://github.com/conventional-changelog/conventional-changelog/issues/535)) ([ac43f51](https://github.com/conventional-changelog/conventional-changelog/commit/ac43f51de1f3b597c32f7f8442917a2d06199018))
91
-
92
-
93
-
94
-
95
-
96
- ## [3.0.4](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@3.0.3...conventional-commits-parser@3.0.4) (2019-10-02)
97
-
98
- **Note:** Version bump only for package conventional-commits-parser
99
-
100
-
101
-
102
-
103
-
104
- ## [3.0.3](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@3.0.2...conventional-commits-parser@3.0.3) (2019-05-18)
105
-
106
-
107
- ### Bug Fixes
108
-
109
- * **deps:** update dependency is-text-path to v2 ([#455](https://github.com/conventional-changelog/conventional-changelog/issues/455)) ([0f40ec3](https://github.com/conventional-changelog/conventional-changelog/commit/0f40ec3))
110
-
111
-
112
-
113
-
114
-
115
- ## [3.0.2](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@3.0.1...conventional-commits-parser@3.0.2) (2019-04-10)
116
-
117
-
118
- ### Bug Fixes
119
-
120
- * **deps:** update dependency through2 to v3 ([#392](https://github.com/conventional-changelog/conventional-changelog/issues/392)) ([26fe91f](https://github.com/conventional-changelog/conventional-changelog/commit/26fe91f))
121
-
122
-
123
-
124
-
125
-
126
- ## [3.0.1](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@3.0.0...conventional-commits-parser@3.0.1) (2018-11-01)
127
-
128
-
129
- ### Bug Fixes
130
-
131
- * Upgrade to Lerna 3, fix Node.js v11 error ([#385](https://github.com/conventional-changelog/conventional-changelog/issues/385)) ([cdef282](https://github.com/conventional-changelog/conventional-changelog/commit/cdef282))
132
-
133
-
134
-
135
-
136
-
137
- <a name="3.0.0"></a>
138
- # [3.0.0](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@2.1.7...conventional-commits-parser@3.0.0) (2018-05-29)
139
-
140
-
141
- ### Chores
142
-
143
- * **package:** set Node requirement to oldest supported LTS ([#329](https://github.com/conventional-changelog/conventional-changelog/issues/329)) ([cae2fe0](https://github.com/conventional-changelog/conventional-changelog/commit/cae2fe0))
144
-
145
-
146
- ### BREAKING CHANGES
147
-
148
- * **package:** Set the package's minimum required Node version to be the oldest LTS
149
- currently supported by the Node Release working group. At this time,
150
- that is Node 6 (which is in its Maintenance LTS phase).
151
-
152
-
153
-
154
-
155
- <a name="2.1.7"></a>
156
- ## [2.1.7](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@2.1.6...conventional-commits-parser@2.1.7) (2018-03-27)
157
-
158
-
159
-
160
-
161
- **Note:** Version bump only for package conventional-commits-parser
162
-
163
- <a name="2.1.6"></a>
164
- ## [2.1.6](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@2.1.5...conventional-commits-parser@2.1.6) (2018-03-22)
165
-
166
-
167
-
168
-
169
- **Note:** Version bump only for package conventional-commits-parser
170
-
171
- <a name="2.1.5"></a>
172
- ## [2.1.5](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@2.1.4...conventional-commits-parser@2.1.5) (2018-02-24)
173
-
174
-
175
-
176
-
177
- **Note:** Version bump only for package conventional-commits-parser
178
-
179
- <a name="2.1.4"></a>
180
- ## [2.1.4](https://github.com/conventional-changelog/conventional-changelog/compare/conventional-commits-parser@2.1.3...conventional-commits-parser@2.1.4) (2018-02-20)
181
-
182
-
183
-
184
-
185
- **Note:** Version bump only for package conventional-commits-parser
186
-
187
- <a name="2.1.3"></a>
188
- ## [2.1.3](https://github.com/conventional-changelog/conventional-commits-parser/compare/conventional-commits-parser@2.1.2...conventional-commits-parser@2.1.3) (2018-02-13)
189
-
190
-
191
-
192
-
193
- **Note:** Version bump only for package conventional-commits-parser
194
-
195
- <a name="2.1.2"></a>
196
- ## [2.1.2](https://github.com/conventional-changelog/conventional-commits-parser/compare/conventional-commits-parser@2.1.1...conventional-commits-parser@2.1.2) (2018-02-13)
197
-
198
-
199
-
200
-
201
- **Note:** Version bump only for package conventional-commits-parser
202
-
203
- <a name="2.1.1"></a>
204
- ## [2.1.1](https://github.com/conventional-changelog/conventional-commits-parser/compare/conventional-commits-parser@2.1.0...conventional-commits-parser@2.1.1) (2018-02-05)
205
-
206
-
207
- ### Bug Fixes
208
-
209
- * truncate after scissors line ([#267](https://github.com/conventional-changelog/conventional-commits-parser/issues/267)) ([e09df10](https://github.com/conventional-changelog/conventional-commits-parser/commit/e09df10))
210
-
211
-
212
-
213
-
214
- <a name="2.1.0"></a>
215
- # [2.1.0](https://github.com/conventional-changelog/conventional-commits-parser/compare/conventional-commits-parser@2.0.1...conventional-commits-parser@2.1.0) (2017-12-08)
216
-
217
-
218
- ### Bug Fixes
219
-
220
- * always parse references ([e84a9ae](https://github.com/conventional-changelog/conventional-commits-parser/commit/e84a9ae)), closes [#248](https://github.com/conventional-changelog/conventional-commits-parser/issues/248)
221
-
222
-
223
- ### Features
224
-
225
- * make comment stripping optional ([db5b711](https://github.com/conventional-changelog/conventional-commits-parser/commit/db5b711)), closes [#251](https://github.com/conventional-changelog/conventional-commits-parser/issues/251)
226
-
227
-
228
-
229
-
230
- <a name="2.0.1"></a>
231
- ## [2.0.1](https://github.com/conventional-changelog/conventional-commits-parser/compare/conventional-commits-parser@2.0.0...conventional-commits-parser@2.0.1) (2017-11-13)
232
-
233
-
234
- ### Bug Fixes
235
-
236
- * **conventional-commits-parser:** ignore comments ([#231](https://github.com/conventional-changelog/conventional-commits-parser/issues/231)) ([9db53e3](https://github.com/conventional-changelog/conventional-commits-parser/commit/9db53e3)), closes [#224](https://github.com/conventional-changelog/conventional-commits-parser/issues/224)
237
-
238
-
239
-
240
-
241
- <a name="2.0.0"></a>
242
- # 2.0.0 (2017-07-17)
243
-
244
-
245
- ### Bug Fixes
246
-
247
- * **cli:** commit can be split when testing a commit file ([f3b3a3f](https://github.com/conventional-changelog/conventional-commits-parser/commit/f3b3a3f))
248
- * **cli:** error handling for ENOENT is fixed ([3c92233](https://github.com/conventional-changelog/conventional-commits-parser/commit/3c92233))
249
- * **cli:** fix "undefined" in json string ([0680e42](https://github.com/conventional-changelog/conventional-commits-parser/commit/0680e42))
250
- * **cli:** options format ([491357e](https://github.com/conventional-changelog/conventional-commits-parser/commit/491357e))
251
- * **deps:** require split2 ([1941c37](https://github.com/conventional-changelog/conventional-commits-parser/commit/1941c37))
252
- * **error:** change error type and wordings ([d8be5e5](https://github.com/conventional-changelog/conventional-commits-parser/commit/d8be5e5))
253
- * **footer:** notes contains more than one paragraphs after references ([d744ec7](https://github.com/conventional-changelog/conventional-commits-parser/commit/d744ec7))
254
- * **headerCorrespondence:** string value for cli ([fb774fc](https://github.com/conventional-changelog/conventional-commits-parser/commit/fb774fc))
255
- * **headerPattern:** change how capturing groups works ([fe1fe0c](https://github.com/conventional-changelog/conventional-commits-parser/commit/fe1fe0c))
256
- * **issuePrefixes:** should return noMatch if falsy ([72db2bf](https://github.com/conventional-changelog/conventional-commits-parser/commit/72db2bf))
257
- * **mention:** fix mention matching ([965986b](https://github.com/conventional-changelog/conventional-commits-parser/commit/965986b)), closes [#26](https://github.com/conventional-changelog/conventional-commits-parser/issues/26)
258
- * **newlines:** preserve newlines in a part ([06b8c7c](https://github.com/conventional-changelog/conventional-commits-parser/commit/06b8c7c)), closes [#15](https://github.com/conventional-changelog/conventional-commits-parser/issues/15)
259
- * **notes:** note keywords must appear at the beginning of a sentence ([5a2059e](https://github.com/conventional-changelog/conventional-commits-parser/commit/5a2059e)), closes [#23](https://github.com/conventional-changelog/conventional-commits-parser/issues/23)
260
- * **parser:** do not trim spaces but newlines ([1e8c4c5](https://github.com/conventional-changelog/conventional-commits-parser/commit/1e8c4c5))
261
- * **parser:** it returns null if there is no header ([8571c9e](https://github.com/conventional-changelog/conventional-commits-parser/commit/8571c9e))
262
- * **regex:** do not treat it as note if there are texts after keywords ([571b03e](https://github.com/conventional-changelog/conventional-commits-parser/commit/571b03e))
263
- * **regex:** make getReferencePartsRegex stricter ([62adf54](https://github.com/conventional-changelog/conventional-commits-parser/commit/62adf54)), closes [#27](https://github.com/conventional-changelog/conventional-commits-parser/issues/27) [#30](https://github.com/conventional-changelog/conventional-commits-parser/issues/30) [#27](https://github.com/conventional-changelog/conventional-commits-parser/issues/27) [#28](https://github.com/conventional-changelog/conventional-commits-parser/issues/28)
264
- * **revertPattern:** correct regex ([8628983](https://github.com/conventional-changelog/conventional-commits-parser/commit/8628983))
265
- * **util:** remove an accidentally commited file ([3710a8c](https://github.com/conventional-changelog/conventional-commits-parser/commit/3710a8c))
266
- * **warn:** should tell which commit cannot be parsed ([04b0a9b](https://github.com/conventional-changelog/conventional-commits-parser/commit/04b0a9b))
267
-
268
-
269
- ### Chores
270
-
271
- * init ([a529841](https://github.com/conventional-changelog/conventional-commits-parser/commit/a529841))
272
-
273
-
274
- ### Code Refactoring
275
-
276
- * **breaks:** change `breaks` to `notes` ([5189a61](https://github.com/conventional-changelog/conventional-commits-parser/commit/5189a61)), closes [#2](https://github.com/conventional-changelog/conventional-commits-parser/issues/2)
277
- * **merge:** pull-request should be merge ([4e7c61c](https://github.com/conventional-changelog/conventional-commits-parser/commit/4e7c61c))
278
- * **regex:** regex now takes `options` ([eea319a](https://github.com/conventional-changelog/conventional-commits-parser/commit/eea319a))
279
-
280
-
281
- ### Features
282
-
283
- * **cli:** able to have two files, separator works for interactive ([db1e3b5](https://github.com/conventional-changelog/conventional-commits-parser/commit/db1e3b5))
284
- * **cli:** add aliases, more help details and tests ([eb654a2](https://github.com/conventional-changelog/conventional-commits-parser/commit/eb654a2))
285
- * **cli:** add missing options ([8ac1cf7](https://github.com/conventional-changelog/conventional-commits-parser/commit/8ac1cf7))
286
- * **cli:** add warn function for interactive shell ([84fe31f](https://github.com/conventional-changelog/conventional-commits-parser/commit/84fe31f))
287
- * **correspondence:** add `headerCorrespondence` and improve commit parts ([aca9e95](https://github.com/conventional-changelog/conventional-commits-parser/commit/aca9e95)), closes [#6](https://github.com/conventional-changelog/conventional-commits-parser/issues/6)
288
- * **fieldPattern:** should support string format ([b6b6b52](https://github.com/conventional-changelog/conventional-commits-parser/commit/b6b6b52))
289
- * **hash:** drop support ([1ccc751](https://github.com/conventional-changelog/conventional-commits-parser/commit/1ccc751))
290
- * **headerParts:** headerParts can be anything ([31e1c11](https://github.com/conventional-changelog/conventional-commits-parser/commit/31e1c11)), closes [#10](https://github.com/conventional-changelog/conventional-commits-parser/issues/10)
291
- * **issuePrefixes:** init and referenceKeywords -> referenceActions ([86bf798](https://github.com/conventional-changelog/conventional-commits-parser/commit/86bf798)), closes [#11](https://github.com/conventional-changelog/conventional-commits-parser/issues/11)
292
- * **maxSubjectLength:** removed ([3448582](https://github.com/conventional-changelog/conventional-commits-parser/commit/3448582))
293
- * **mentions:** [@someone](https://github.com/someone) in commit ([d60fe76](https://github.com/conventional-changelog/conventional-commits-parser/commit/d60fe76)), closes [#24](https://github.com/conventional-changelog/conventional-commits-parser/issues/24)
294
- * **newline:** fields does not contain leading or trailing newlines ([6db453b](https://github.com/conventional-changelog/conventional-commits-parser/commit/6db453b)), closes [#14](https://github.com/conventional-changelog/conventional-commits-parser/issues/14)
295
- * **note:** noteKeywords is case insensitive ([f779a29](https://github.com/conventional-changelog/conventional-commits-parser/commit/f779a29)), closes [#21](https://github.com/conventional-changelog/conventional-commits-parser/issues/21)
296
- * **options:** all options can be a string ([0fa17b4](https://github.com/conventional-changelog/conventional-commits-parser/commit/0fa17b4))
297
- * **otherFields:** other fields are possible to be included ([9e06278](https://github.com/conventional-changelog/conventional-commits-parser/commit/9e06278))
298
- * improvements and bug fixes ([1cde104](https://github.com/conventional-changelog/conventional-commits-parser/commit/1cde104)), closes [#5](https://github.com/conventional-changelog/conventional-commits-parser/issues/5)
299
- * migrate repo to lerna mono-repo ([793e823](https://github.com/conventional-changelog/conventional-commits-parser/commit/793e823))
300
- * **regex:** matching JIRA-123 like references ([20f1f7a](https://github.com/conventional-changelog/conventional-commits-parser/commit/20f1f7a)), closes [#19](https://github.com/conventional-changelog/conventional-commits-parser/issues/19)
301
- * support squash commits ([#31](https://github.com/conventional-changelog/conventional-changelog/issues/31)) ([fff60c0](https://github.com/conventional-changelog/conventional-commits-parser/commit/fff60c0))
302
- * **owner:** yield owner field ([d8d0334](https://github.com/conventional-changelog/conventional-commits-parser/commit/d8d0334)), closes [#12](https://github.com/conventional-changelog/conventional-commits-parser/issues/12)
303
- * **parser:** notes can have more than one paragraph ([733bfa9](https://github.com/conventional-changelog/conventional-commits-parser/commit/733bfa9)), closes [#3](https://github.com/conventional-changelog/conventional-commits-parser/issues/3)
304
- * **pullRequest:** Allow to skip and parse pull request header ([a2e929f](https://github.com/conventional-changelog/conventional-commits-parser/commit/a2e929f)), closes [#20](https://github.com/conventional-changelog/conventional-commits-parser/issues/20)
305
- * **reference:** able to reference an issue without an action ([6474123](https://github.com/conventional-changelog/conventional-commits-parser/commit/6474123)), closes [#22](https://github.com/conventional-changelog/conventional-commits-parser/issues/22)
306
- * **reference:** expose prefix ([47df766](https://github.com/conventional-changelog/conventional-commits-parser/commit/47df766)), closes [#17](https://github.com/conventional-changelog/conventional-commits-parser/issues/17)
307
- * **references:** allow header to reference an issue ([df18a24](https://github.com/conventional-changelog/conventional-commits-parser/commit/df18a24))
308
- * **references:** support other formats of references ([7c70213](https://github.com/conventional-changelog/conventional-commits-parser/commit/7c70213)), closes [#4](https://github.com/conventional-changelog/conventional-commits-parser/issues/4) [#8](https://github.com/conventional-changelog/conventional-commits-parser/issues/8)
309
- * **regex:** leading and trailing space for closes and breaks keywords are trimmed ([9639860](https://github.com/conventional-changelog/conventional-commits-parser/commit/9639860))
310
- * **revert:** parse a commit that reverts ([2af7233](https://github.com/conventional-changelog/conventional-commits-parser/commit/2af7233))
311
- * **stream:** emmit an empty string to down stream if commit cannot be parsed ([76bf84e](https://github.com/conventional-changelog/conventional-commits-parser/commit/76bf84e))
312
- * **sync:** add the sync function ([82071c6](https://github.com/conventional-changelog/conventional-commits-parser/commit/82071c6)), closes [#13](https://github.com/conventional-changelog/conventional-commits-parser/issues/13)
313
- * **warn:** optionally warn user what is wrong when commit cannot be parsed ([32b3cda](https://github.com/conventional-changelog/conventional-commits-parser/commit/32b3cda))
314
-
315
-
316
- ### Performance Improvements
317
-
318
- * **regex:** regex should be constructed in index.html ([15afd26](https://github.com/conventional-changelog/conventional-commits-parser/commit/15afd26))
319
-
320
-
321
- ### BREAKING CHANGES
322
-
323
- * **merge:** `pull request` should be `merge`. Also make the parsed result to be consistent with other parts.
324
- * This module is imported from https://github.com/ajoslin/conventional-changelog, and is originally written by @vojtajina, @btford and @ajoslin.
325
- * **hash:** hash is no longer supported. This parser should just parse raw commit messages. Also text fields are appended with a newline "
326
- ".
327
- * **regex:** It returns a nomatch regex if it's keywords are missing.
328
- * **headerParts:** `headerParts` does not limit to `type`, `scope` and `subject`. They can now be defined in `options.headerCorrespondence` and the order is the order of capturing group in `options.headerPattern`. If part is missing in `options.headerCorrespondence` it is `undefined`. If part is not captured but is not missing in `options.headerCorrespondence` it is `null`.
329
- * **maxSubjectLength:** `maxSubjectLength` is not available any more.
330
- * **issuePrefixes:** `options.referenceKeywords` is now `options.referenceActions`
331
- * **references:** `closes` now becomes `references` and it is loosely based the links above.
332
- * **parser:** The regex for matching notes are loosen. The semicolon and space are optional. The `notes` object is no longer a key-value object but an array of note object, such as
333
- ```js
334
- {
335
- title: 'BREAKING AMEND',
336
- text: 'some breaking change'
337
- }
338
- ```
339
- The detection of notes, closes, continueNote and isBody are mutually exclusive.
340
- * **breaks:** Variable name related to `breaks` changes to `notes`, because "Important Notes" a more generic term. There is no functional changes.
341
- * **stream:** It no longer skips the chunk if commit cannot be parsed. An empty string is passed to down stream
342
- * **correspondence:** body and footer will be null if they are not found. type and subject are nullable too.
343
-
344
- <a name="1.3.0"></a>
345
- # [1.3.0](https://github.com/conventional-changelog/conventional-commits-parser/compare/v1.2.3...v1.3.0) (2016-10-15)
346
-
347
-
348
- ### Features
349
-
350
- * support squash commits (#31) ([860c7a1](https://github.com/conventional-changelog/conventional-commits-parser/commit/860c7a1))
351
-
352
-
353
-
354
- <a name="1.2.3"></a>
355
- ## [1.2.3](https://github.com/conventional-changelog/conventional-commits-parser/compare/v1.2.2...v1.2.3) (2016-08-06)
356
-
357
-
358
- ### Bug Fixes
359
-
360
- * **regex:** do not treat it as note if there are texts after keywords ([9cb56bc](https://github.com/conventional-changelog/conventional-commits-parser/commit/9cb56bc))
361
-
362
-
363
-
364
- <a name="1.2.2"></a>
365
- ## [1.2.2](https://github.com/conventional-changelog/conventional-commits-parser/compare/v1.2.1...v1.2.2) (2016-05-04)
366
-
367
-
368
- ### Bug Fixes
369
-
370
- * **regex:** make getReferencePartsRegex stricter ([b8a9fda](https://github.com/conventional-changelog/conventional-commits-parser/commit/b8a9fda)), closes [#27](https://github.com/conventional-changelog/conventional-commits-parser/issues/27) [(#30](https://github.com/(/issues/30) [#27](https://github.com/conventional-changelog/conventional-commits-parser/issues/27) [#28](https://github.com/conventional-changelog/conventional-commits-parser/issues/28)
371
-
372
-
373
-
374
- <a name="1.2.1"></a>
375
- ## [1.2.1](https://github.com/conventional-changelog/conventional-commits-parser/compare/v1.2.0...v1.2.1) (2016-04-24)
376
-
377
-
378
- ### Bug Fixes
379
-
380
- * **mention:** fix mention matching ([43b32e7](https://github.com/conventional-changelog/conventional-commits-parser/commit/43b32e7)), closes [#26](https://github.com/conventional-changelog/conventional-commits-parser/issues/26)
381
-
382
-
383
-
384
- <a name="1.2.0"></a>
385
- # [1.2.0](https://github.com/conventional-changelog/conventional-commits-parser/compare/v1.1.0...v1.2.0) (2016-04-15)
386
-
387
-
388
- ### Features
389
-
390
- * **mentions:** @someone in commit ([b2eabbf](https://github.com/conventional-changelog/conventional-commits-parser/commit/b2eabbf)), closes [#24](https://github.com/conventional-changelog/conventional-commits-parser/issues/24)
391
-
392
-
393
-
394
- <a name="1.1.0"></a>
395
- # [1.1.0](https://github.com/conventional-changelog/conventional-commits-parser/compare/v1.0.1...v1.1.0) (2016-04-10)
396
-
397
-
398
- ### Bug Fixes
399
-
400
- * **notes:** note keywords must appear at the beginning of a sentence ([6e13789](https://github.com/conventional-changelog/conventional-commits-parser/commit/6e13789)), closes [#23](https://github.com/conventional-changelog/conventional-commits-parser/issues/23)
401
-
402
- ### Features
403
-
404
- * **reference:** able to reference an issue without an action ([cf847b1](https://github.com/conventional-changelog/conventional-commits-parser/commit/cf847b1)), closes [#22](https://github.com/conventional-changelog/conventional-commits-parser/issues/22)
405
-
406
-
407
-
408
- <a name="1.0.1"></a>
409
- ## [1.0.1](https://github.com/stevemao/conventional-commits-parser/compare/v1.0.0...v1.0.1) (2016-02-05)
410
-
411
-
412
- ### Bug Fixes
413
-
414
- * **deps:** require split2 ([ad55810](https://github.com/stevemao/conventional-commits-parser/commit/ad55810))
415
-
416
-
417
-
418
- <a name="1.0.0"></a>
419
- # [1.0.0](https://github.com/stevemao/conventional-commits-parser/compare/v0.2.0...v1.0.0) (2016-02-05)
420
-
421
-
422
-
423
-
424
- <a name="0.2.0"></a>
425
- # [0.2.0](https://github.com/stevemao/conventional-commits-parser/compare/v0.1.2...v0.2.0) (2016-02-04)
426
-
427
-
428
- ### Features
429
-
430
- * **note:** noteKeywords is case insensitive ([4442b86](https://github.com/stevemao/conventional-commits-parser/commit/4442b86)), closes [#21](https://github.com/stevemao/conventional-commits-parser/issues/21)
431
- * **pullRequest:** Allow to skip and parse pull request header ([aa85033](https://github.com/stevemao/conventional-commits-parser/commit/aa85033)), closes [#20](https://github.com/stevemao/conventional-commits-parser/issues/20)
432
- * **regex:** matching JIRA-123 like references ([5342f45](https://github.com/stevemao/conventional-commits-parser/commit/5342f45)), closes [#19](https://github.com/stevemao/conventional-commits-parser/issues/19)
433
-
434
-
435
-
436
- <a name="0.1.2"></a>
437
- ## [0.1.2](https://github.com/stevemao/conventional-commits-parser/compare/v0.1.1...v0.1.2) (2015-09-18)
438
-
439
-
440
- ### Bug Fixes
441
-
442
- * **parser:** do not trim spaces but newlines ([62e7bf5](https://github.com/stevemao/conventional-commits-parser/commit/62e7bf5))
443
-
444
-
445
-
446
- <a name="0.1.1"></a>
447
- ## [0.1.1](https://github.com/stevemao/conventional-commits-parser/compare/v0.1.0...v0.1.1) (2015-09-12)
448
-
449
-
450
- ### Bug Fixes
451
-
452
- * **newlines:** preserve newlines in a part ([beb3d05](https://github.com/stevemao/conventional-commits-parser/commit/beb3d05)), closes [#15](https://github.com/stevemao/conventional-commits-parser/issues/15)
453
-
454
- ### Features
455
-
456
- * **reference:** expose prefix ([9962dda](https://github.com/stevemao/conventional-commits-parser/commit/9962dda)), closes [#17](https://github.com/stevemao/conventional-commits-parser/issues/17)