- Notifications
You must be signed in to change notification settings - Fork5
Parser for Github, GitLab and Bitbucket issues actions, references and mentions
License
semantic-release/issue-parser
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Parser forGithub,GitLab andBitbucket issues actions, references and mentions
The parser can identify:
- GitHubclosing keywords,duplicate keyword,issue references anduser mentions
- GitLabclosing keywords,duplicate keyword,issue references anduser mentions
- Bitbucketclosing keywords,issue references anduser mentions
- Custom oradditional keywords
$ npm install --save issue-parser
constissueParser=require('issue-parser');constparse=issueParser('github');parse('Issue description, ref user/package#1, Fix #2, Duplicate of #3 /cc @user');/*{ refs: [{raw: 'user/package#1', slug: 'user/package', prefix: '#', issue: '1'}], actions: { close: [{raw: 'Fix #2', action: 'Fix', prefix: '#', issue: '2'}], duplicate: [{raw: 'Duplicate of #3', action: 'Duplicate of', prefix: '#', issue: '3'}], }, mentions: [{raw: '@user', prefix: '@', user: 'user'}],}*/
constissueParser=require('issue-parser');constparse=issueParser('gitlab');parse('Issue description, ref group/user/package#1, !2, implement #3, /duplicate #4 /cc @user');/*{ refs: [ {raw: 'group/user/package#1', slug: 'group/user/package', prefix: '#', issue: '1'}, {raw: '!2', slug: 'group/user/package', prefix: '!', issue: '2'}, ], actions: { close: [{raw: 'implement #3', action: 'Implement', prefix: '#', issue: '4'}], duplicate: [{raw: 'Duplicate of #4', action: 'Duplicate of', prefix: '#', issue: '4'}], }, mentions: [{raw: '@user', prefix: '@', user: 'user'}],}*/
constissueParser=require('issue-parser');constparse=issueParser('bitbucket');parse('Issue description, ref user/package#1, fixing #2. /cc @user');/*{ refs: [{raw: 'user/package#1', slug: 'user/package', prefix: '#', issue: '1'}], actions: { close: [{raw: 'fixing #2', action: 'Fixing', prefix: '#', issue: '2'}], }, mentions: [{raw: '@user', prefix: '@', user: 'user'}],}*/
constissueParser=require('issue-parser');constparse=issueParser({actions:{fix:['complete'],hold:['holds up']},issuePrefixes:['🐛']});parse('Issue description, related to user/package🐛1, Complete 🐛2, holds up 🐛3');/*{ refs: [{raw: 'user/package🐛1', slug: 'user/package', prefix: '🐛', issue: '1'}], actions: { fix: [{raw: 'Complete 🐛2', action: 'Complete', prefix: '🐛', issue: '2'}], hold: [{raw: 'holds up 🐛3', action: 'Holds up', prefix: '🐛', issue: '3'}], },}*/
constissueParser=require('issue-parser');constparse=issueParser('github',{actions:{parent:['parent of'],related:['related to']}});parse('Issue description, ref user/package#1, Fix #2, Parent of #3, related to #4 /cc @user');/*{ refs: [{raw: 'user/package#1', slug: 'user/package', prefix: '#', issue: '1'}], actions: { close: [{raw: 'Fix #2', action: 'Fix', prefix: '#', issue: '2'}], parent: [{raw: 'Parent of #3', action: 'Parent of', prefix: '#', issue: '3'}], related: [{raw: 'related to #4', action: 'Related to', prefix: '#', issue: '4'}], }, mentions: [{raw: '@user', prefix: '@', user: 'user'}],}*/
#1{refs:[{raw:'#1',slug:undefined,prefix:'#',issue:'1'}]}
owner/repo#1{refs:[{raw:'owner/repo#1',slug:'owner/repo',prefix:'#',issue:'1'}]}
Fix #1{actions:{close:[{raw:'Fix #1',action:'Fix',slug:undefined,prefix:'#',issue:'1'}]}}
Duplicate of #1{actions:{duplicate:[{raw:'Duplicate of #1',action:'Duplicate of',slug:undefined,prefix:'#',issue:'1'}]}}
@user{mentions:[{raw:'@user',prefix:'@',user:'user'}]}
https://github.com/owner/repo/pull/1Fix https://github.com/owner/repo/issues/2{ refs:[{raw:'https://github.com/owner/repo/pull/1',slug:'owner/repo',prefix:undefined,issue:'1'},] actions:{close:[{raw:'Fix https://github.com/owner/repo/issues/2',action:'Fix',slug:'owner/repo',prefix:undefined,issue:'2'}]}}
FIX #1{actions:{close:[{raw:'FIX #1',action:'Fix',slug:undefined,prefix:'#',issue:'1'}]}}
Fix: #1{actions:{close:[{raw:'Fix: #1',action:'Fix',slug:undefined,prefix:'#',issue:'1'}]}}
Fix #1 `Fix #2` @user1 `@user2`{actions:{close:[{raw:'Fix #1',action:'Fix',slug:undefined,prefix:'#',issue:'1'}]},mentions:[{raw:'@user1',prefix:'@',user:'user1'}]}
\`Fix #1\` \`@user\`{actions:{close:[{raw:'Fix #1',action:'Fix',slug:undefined,prefix:'#',issue:'1'}]},mentions:[{raw:'@user1',prefix:'@',user:'user1'}]}
Fix #1```jsconsole.log('Fix #2');```@user1```jsconsole.log('@user2');```{actions:{close:[{raw:'Fix #1',action:'Fix',slug:undefined,prefix:'#',issue:'1'}]},mentions:[{raw:'@user1',prefix:'@',user:'user1'}]}
\`\`\`Fix #1\`\`\`\`\`\`@user\`\`\`{actions:{close:[{raw:'Fix #1',action:'Fix',slug:undefined,prefix:'#',issue:'1'}]},mentions:[{raw:'@user',prefix:'@',user:'user'}]}
Fix #1<code>Fix #2</code><code><code>Fix #3</code></code>@user1<code>@user2</code>{actions:{close:[{raw:'Fix #1',action:'Fix',slug:undefined,prefix:'#',issue:'1'}]},mentions:[{raw:'@user1',prefix:'@',user:'user1'}]}
`<code>`Fix #1`</code>``<code>`@user`</code>`{actions:{close:[{raw:'Fix #1',action:'Fix',slug:undefined,prefix:'#',issue:'1'}]},mentions:[{raw:'@user',prefix:'@',user:'user'}]}
Fix #1 Fix #2a Fix a#3{actions:{close:[{raw:'Fix #1',action:'Fix',slug:undefined,prefix:'#',issue:'1'}]}}
Create aparser.
Type:ObjectString
Parser options. Can begithub,gitlab orbitbucket for predefined options, or an object for custom options.
Type:Object
Default:{close: ['close', 'closes', 'closed', 'closing', 'fix', 'fixes', 'fixed', 'fixing', 'resolve', 'resolves', 'resolved', 'resolving', 'implement', 'implements', 'implemented', 'implementing'], duplicate: ['Duplicate of', '/duplicate']}
Object with type of action as key and array of keywords as value.
Each keyword match will be placed in the corresponding property of theresultaction object. For example the with the configuration{actions: fix: ['fixed', 'fixing']} each action matchingfixed orfixing will be underresult.actions.fix.
Type:Array<String>String
Default:[':']
List of delimiter characters allowed between an action keywords and the issue reference. The characters space () and tab () are always allowed.
Type:Array<String>String
Default:['@']
List of keywords used to identify user mentions.
Type:Array<String>String
Default:['#', 'gh-']
List of keywords used to identify issues and pull requests.
Type:Array<String>String
Default:['https://github.com', 'https://gitlab.com']
List of base URL used to identify issues and pull requests withfull URL.
Type:Array<String>String
Default:['issues', 'pull', 'merge_requests']
List of URL segment used to identify issues and pull requests withfull URL.
Type:Object
Option overrides. Useful when using predefinedoptions (such asgithub,gitlab orbitbucket). Theoverrides object can define the same properties asoptions.
For example, the following will use all thegithub predefined options but with a differenthosts option:
constissueParser=require('issue-parser');constparse=issueParser('github',{hosts:['https://custom-url.com']});
Parse an issue description and returns aResult object.
Type:String
Issue text to parse.
Type:Object
List of matching actions by type.
Each type of action is an array of objects with the following properties:
| Name | Type | Description |
|---|---|---|
| raw | String | The raw value parsed, for exampleFix #1. |
| action | String | The keyword used to identify the action, capitalized. |
| slug | String | The repository owner and name, for issue referred as<owner>/<repo>#<issue number>. |
| prefix | String | The prefix used to identify the issue. |
| issue | String | The issue number. |
Type:Array<Object>
List of issues and pull requests referenced, but not matched with an action.
Each reference has the following properties:
| Name | Type | Description |
|---|---|---|
| raw | String | The raw value parsed, for example#1. |
| slug | String | The repository owner and name, for issue referred as<owner>/<repo>#<issue number>. |
| prefix | String | The prefix used to identify the issue. |
| issue | String | The issue number. |
Type:Array<Object>
List of users mentioned.
Each mention has the following properties:
| Name | Type | Description |
|---|---|---|
| raw | String | The raw value parsed, for example@user. |
| prefix | String | The prefix used to identify the mention. |
| user | String | The user name |
Type:Array<Object>
List of all issues and pull requestsreferenced or matching anaction.
Each reference has the following properties:
| Name | Type | Description |
|---|---|---|
| raw | String | The raw value parsed, for exampleFix #1. |
| action | String | The keyword used to identify the action or the duplicate, capitalized. Only if matched by an action. |
| slug | String | The repository owner and name, for issue referred as<owner>/<repo>#<issue number>. |
| prefix | String | The prefix used to identify the issue. |
| issue | String | The issue number. |
About
Parser for Github, GitLab and Bitbucket issues actions, references and mentions
Topics
Resources
License
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors8
Uh oh!
There was an error while loading.Please reload this page.