UNPKG

commitlint-plugin-shr-jira

Version:

A plugin that implement all jira commits messages style rules and validate commit messages

1 lines 4.72 kB
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("commitlintPluginJira",[],e):"object"==typeof exports?exports.commitlintPluginJira=e():t.commitlintPluginJira=e()}(this,(()=>(()=>{var t={911:function(t){t.exports=(()=>{"use strict";var t={d:(e,r)=>{for(var i in r)t.o(r,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:r[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.d(e,{default:()=>d});var r={};t.r(r),t.d(r,{COMMIT_DESCRIPTION_SEPARATOR:()=>l,COMMIT_MESSAGE_SEPARATOR:()=>o,COMMIT_STATUS_SEPARATORS:()=>c,COMMIT_TASK_IDS_SEPARATOR:()=>s,COMMIT_TASK_STATUS_PATTERN:()=>n,COMMIT_TASK_STATUS_SQUARE_PATTERN:()=>a,JIRA_RULES:()=>i,LOWERCASE:()=>u,TASK_ID_SEPARATOR:()=>m,UPPERCASE:()=>p});const i={commitMessageSeparator:"jira-commit-message-separator",commitTypeCase:"jira-commit-type-case",commitScopeOptionalCase:"jira-scope-optional-case",commitTicketIdCase:"jira-ticket-id-case",commitTitleCase:"jira-title-case"},o=":",s=",",a=/\[.*\]/gi,n=/\(.*\)/gi,m="-",c={start:"[",end:"]"},p="uppercase",u="lowercase",l="\n",d={commitlintJiraConstants:r,parseCommitMessage:t=>{const e=t.split(l).filter((t=>t))[0].split(o),r=e.length>=2?e[0]:"",i=r.replace(r.includes(")")?n:a,"").trim(),s=r.replace(i,""),m=e.length>2?e.filter(((t,e)=>e>0)).join(o).trim():e[e.length-1].trim();return{type:i,rawCommitScope:s,ticketId:m.includes("]")?m.split("]")[0].replace("[","").trim():"",title:m.replace(a,"").trim()}}};return e.default})()}},e={};function r(i){var o=e[i];if(void 0!==o)return o.exports;var s=e[i]={exports:{}};return t[i].call(s.exports,s,s.exports,r),s.exports}r.d=(t,e)=>{for(var i in e)r.o(e,i)&&!r.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var i={};return(()=>{"use strict";r.d(i,{default:()=>e});var t=r(911);const e={rules:{[t.commitlintJiraConstants.JIRA_RULES.commitMessageSeparator]:(e,r,i=t.commitlintJiraConstants.COMMIT_MESSAGE_SEPARATOR)=>{const o=e.raw;if(!o)return[!1,"Commit message should not be empty"];let s=!1;const a=o.match(new RegExp(`${i}`,"ig"));return a&&a[0]&&(s=!0),[s,"Commit message parts must be separated with <type>[<scope>(optional)]: [<ticket-id>(uppercase-number)] <title>"]},[t.commitlintJiraConstants.JIRA_RULES.commitScopeOptionalCase]:e=>{const r=e.raw;if(!r)return[!1,"Commit message should not be empty"];const i=(0,t.parseCommitMessage)(r);if(!i.rawCommitScope)return[!0,""];const{rawCommitScope:o}=i;if(o.match(/\[.*\]/gi))return[!0,""];if(o.match(/\(.*\)/gi)){const t=o.replace("(","").replace(")","").trim().split("-");if(2!==t.length)return[!1,"scope must be format: [ticket-id(uppercase-number)]"];if(!/^[A-Z]+$/.test(t[0]))return[!1,"scope must be format: [ticket-id(uppercase-number)]"];if(!/^[0-9]+$/.test(t[1]))return[!1,"scope must be format: [ticket-id(uppercase-number)]"]}return[!0,""]},[t.commitlintJiraConstants.JIRA_RULES.commitTypeCase]:(e,r,i=["build","ci","docs","fix","feat","perf","refactor","style","test","chore"])=>{const o=e.raw;if(!o)return[!1,"Commit message should not be empty"];const s=(0,t.parseCommitMessage)(o);return s.type&&i.includes(s.type)?[!0,""]:[!1,`type must be one of: [${i.map((t=>`${t}`)).join(", ")}]`]},[t.commitlintJiraConstants.JIRA_RULES.commitTicketIdCase]:e=>{const r=e.raw;if(!r)return[!1,"Commit message should not be empty"];const i=(0,t.parseCommitMessage)(r),{type:o,ticketId:s}=i;if(!o)return[!1,"ticket-id must be format: [ticket-id(uppercase-number)]"];if(["fix","feat"].includes(o)){const t=s.split("-");if(2!==t.length)return[!1,"ticket-id must be format: [ticket-id(uppercase-number)]"];if(!/^[A-Z]+$/.test(t[0]))return[!1,"ticket-id must be format: [ticket-id(uppercase-number)]"];if(!/^[0-9]+$/.test(t[1]))return[!1,"ticket-id must be format: [ticket-id(uppercase-number)]"]}else{if(!s)return[!0,""];const t=s.split("-");if(2!==t.length)return[!1,"ticket-id must be format: [ticket-id(uppercase-number)]"];if(!/^[A-Z]+$/.test(t[0]))return[!1,"ticket-id must be format: [ticket-id(uppercase-number)]"];if(!/^[0-9]+$/.test(t[1]))return[!1,"ticket-id must be format: [ticket-id(uppercase-number)]"]}return[!0,""]},[t.commitlintJiraConstants.JIRA_RULES.commitTitleCase]:e=>{const r=e.raw;if(!r)return[!1,"Commit message should not be empty"];const{title:i}=(0,t.parseCommitMessage)(r);return/^.{10,100}$/.test(i)&&/[^.]$/.test(i)?[!0,""]:[!1,"title must be at least 10-character and max 100-character long, no capitalization, no ending dot"]}}}})(),i.default})()));