ccommit 4.0.0 → 4.0.3-canary.1

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/index.mjs CHANGED
@@ -7,7 +7,15 @@ import e from"meow";import t from"node:process";import n from"enquirer";import r
7
7
 
8
8
 
9
9
  {REPLACE}
10
- `,GENERATOR_TAKING_OVER:`❯ Generator will take it from here (CTRL+C to quit)`,MODE_CONFLICT:`❯ Please choose one or the other: --commit, -c | --hook, -u`,REPLACE:`{REPLACE}`,STAGED_FILES:`❯ There are no staged files for git. Did you mean to do a dry-run (-n)?`,TYPE_INCORRECT:`❯ There is no gitmoji/type associated with: {REPLACE}`},TYPES:{ERROR:`error`,INFO:`info`,SUCCESS:`success`,WARNING:`warning`}},h=Object.freeze({FORMAT:`format`,MESSAGE:`message`,SCOPE:`scope`,TITLE:`title`,TYPE:`type`}),g={MAX:12,MIN:3},_={MAJOR:`major`,MINOR:`minor`,NULL:`null`,PATCH:`patch`},v={MAX:48,MAX_SWAG:40,MIN:3,MIN_SWAG:15},y={MAX:15},b=()=>i(`git`,[`rev-parse`,`--absolute-git-dir`]).then(({stdout:e})=>{(r.existsSync(e+`/rebase-merge`)||r.existsSync(e+`/rebase-apply`))&&t.exit(0)}),x=()=>new Promise(e=>{let n=t.argv[4];n&&(n.startsWith(`commit`)||n.startsWith(`merge`))&&t.exit(0),e()}),S=()=>x().then(b),C=[{code:`:wheelchair:`,description:`Improve Accessibility`,emoji:`♿️`,emojiLength:1,semver:_.PATCH,type:`access`},{code:`:chart_with_upwards_trend:`,description:`Add or Update Analytics or Track Code`,emoji:`📈`,emojiLength:1,semver:_.PATCH,type:`analytics`},{code:`:dizzy:`,description:`Add or Update Animations and Transitions`,emoji:`💫`,emojiLength:1,semver:_.PATCH,type:`animation`},{code:`:building_construction:`,description:`Make Architectural Changes`,emoji:`🏗️`,emojiLength:0,semver:_.NULL,type:`arch`},{code:`:bento:`,description:`Add or Update Assets`,emoji:`🍱`,emojiLength:1,semver:_.PATCH,type:`assets`},{code:`:t-rex:`,description:`Backwards Compatibility`,emoji:`🦖`,emojiLength:1,semver:_.NULL,type:`backwards`},{code:`:beers:`,description:`Write Code Drunkenly`,emoji:`🍻`,emojiLength:1,semver:_.NULL,type:`beer`},{code:`:boom:`,description:`Introduce Breaking Changes`,emoji:`💥`,emojiLength:1,semver:_.MAJOR,type:`breaking`},{code:`:hammer:`,description:`Add or Update Development Scripts`,emoji:`🔨`,emojiLength:1,semver:_.NULL,type:`build`},{code:`:goal_net:`,description:`Catch Errors`,emoji:`🥅`,emojiLength:1,semver:_.PATCH,type:`catch`},{code:`:computer_disk:`,description:`Changes That Don’t Modify Src or Test Files`,emoji:`💽️`,emojiLength:1,semver:_.NULL,type:`chore`},{code:`:construction_worker:`,description:`Add or Update CI Build System`,emoji:`👷`,emojiLength:1,semver:_.NULL,type:`ci`},{code:`:wastebasket:`,description:`Deprecate Code That Needs to Be Cleaned Up`,emoji:`🗑️`,emojiLength:0,semver:_.PATCH,type:`clean`},{code:`:alien:`,description:`Update Code Due to External API Changes`,emoji:`👽️`,emojiLength:1,semver:_.PATCH,type:`compat`},{code:`:thread:`,description:`Add or Update Code Related to Multithreading or Concurrency`,emoji:`🧵`,emojiLength:1,semver:_.NULL,type:`concurrency`},{code:`:wrench:`,description:`Add or Update Configuration Files`,emoji:`🔧`,emojiLength:1,semver:_.PATCH,type:`config`},{code:`:busts_in_silhouette:`,description:`Add or Update Contributor(s)`,emoji:`👥`,emojiLength:1,semver:_.NULL,type:`contrib-add`},{code:`:monocle_face:`,description:`Data Exploration/inspection`,emoji:`🧐`,emojiLength:1,semver:_.NULL,type:`data`},{code:`:card_file_box:`,description:`Perform Database Related Changes`,emoji:`🗃️`,emojiLength:0,semver:_.PATCH,type:`db`},{code:`:heavy_plus_sign:`,description:`Add a Dependency`,emoji:`➕`,emojiLength:1,semver:_.PATCH,type:`dep-add`},{code:`:heavy_minus_sign:`,description:`Remove a Dependency`,emoji:`➖`,emojiLength:1,semver:_.PATCH,type:`dep-rm`},{code:`:package:`,description:`Add or Update Compiled Files or Packages`,emoji:`📦️`,emojiLength:1,semver:_.PATCH,type:`dep-up`},{code:`:rocket:`,description:`Deploy Stuff`,emoji:`🚀`,emojiLength:1,semver:_.NULL,type:`deploy`},{code:`:bulb:`,description:`Add or Update Comments in Source Code`,emoji:`💡`,emojiLength:1,semver:_.NULL,type:`docs-code`},{code:`:memo:`,description:`Add or Update Documentation`,emoji:`📝`,emojiLength:1,semver:_.NULL,type:`docs`},{code:`:arrow_down:`,description:`Downgrade Dependencies`,emoji:`⬇️`,emojiLength:0,semver:_.PATCH,type:`downgrade`},{code:`:technologist:`,description:`Improve Developer Experience`,emoji:`💻`,emojiLength:1,semver:_.NULL,type:`dx`},{code:`:egg:`,description:`Add or Update an Easter Egg`,emoji:`🥚`,emojiLength:1,semver:_.PATCH,type:`egg`},{code:`:alembic:`,description:`Perform Experiments`,emoji:`⚗️`,emojiLength:0,semver:_.PATCH,type:`experiment`},{code:`:sparkles:`,description:`Introduce New Features`,emoji:`✨`,emojiLength:1,semver:_.MINOR,type:`feat`},{code:`:bug:`,description:`Fix a Bug`,emoji:`🐛`,emojiLength:1,semver:_.PATCH,type:`fix`},{code:`:green_heart:`,description:`Fix CI Build`,emoji:`💚`,emojiLength:1,semver:_.NULL,type:`fix-ci`},{code:`:triangular_flag_on_post:`,description:`Add Update or Remove Feature Flags`,emoji:`🚩`,emojiLength:1,semver:_.PATCH,type:`flags`},{code:`:stethoscope:`,description:`Add or Update Healthcheck`,emoji:`🩺`,emojiLength:1,semver:_.NULL,type:`healthcheck`},{code:`:ambulance:`,description:`Critical Hotfix`,emoji:`🚑️`,emojiLength:1,semver:_.PATCH,type:`hotfix`},{code:`:globe_with_meridians:`,description:`Internationalization and Localization`,emoji:`🌐`,emojiLength:1,semver:_.PATCH,type:`i18n`},{code:`:see_no_evil:`,description:`Add or Update a Gitignore File.`,emoji:`🙈`,emojiLength:1,semver:_.NULL,type:`ignore`},{code:`:bricks:`,description:`Infrastructure Related Changes`,emoji:`🧱`,emojiLength:1,semver:_.NULL,type:`inf`},{code:`:tada:`,description:`Begin a Project`,emoji:`🎉`,emojiLength:1,semver:_.PATCH,type:`init`},{code:`:iphone:`,description:`Work on Responsive Design`,emoji:`📱`,emojiLength:1,semver:_.PATCH,type:`iphone`},{code:`:page_facing_up:`,description:`Add or Update License`,emoji:`📄`,emojiLength:1,semver:_.NULL,type:`license`},{code:`:rotating_light:`,description:`Fix Compiler / Linter Warnings`,emoji:`🚨`,emojiLength:1,semver:_.NULL,type:`lint`},{code:`:loud_sound:`,description:`Add or Update Logs`,emoji:`🔊`,emojiLength:1,semver:_.NULL,type:`log-add`},{code:`:mute:`,description:`Remove Logs`,emoji:`🔇`,emojiLength:1,semver:_.NULL,type:`log-rm`},{code:`:necktie:`,description:`Add or Update Business Logic`,emoji:`👔`,emojiLength:1,semver:_.PATCH,type:`logic`},{code:`:twisted_rightwards_arrows:`,description:`Merge Branches`,emoji:`🔀`,emojiLength:1,semver:_.NULL,type:`merge`},{code:`:clown_face:`,description:`Mock Things`,emoji:`🤡`,emojiLength:1,semver:_.NULL,type:`mock`},{code:`:truck:`,description:`Move or Rename Resources (Eg.: Files Paths Routes).`,emoji:`🚚`,emojiLength:1,semver:_.NULL,type:`mv`},{code:`:airplane:`,description:`Provide offline support`,emoji:`✈️`,emojiLength:1,semver:_.PATCH,type:`offline`},{code:`:adhesive_bandage:`,description:`Simple Fix for a Non-Critical Issue`,emoji:`🩹`,emojiLength:1,semver:_.PATCH,type:`patch`},{code:`:zap:`,description:`Improve Performance`,emoji:`⚡️`,emojiLength:1,semver:_.PATCH,type:`perf`},{code:`:poop:`,description:`Write Bad Code That Needs to Be Improved`,emoji:`💩`,emojiLength:1,semver:_.NULL,type:`poo`},{code:`:fire:`,description:`Remove Code or Files`,emoji:`🔥`,emojiLength:1,semver:_.NULL,type:`prune`},{code:`:pushpin:`,description:`Pin Dependencies to Specific Versions`,emoji:`📌`,emojiLength:1,semver:_.PATCH,type:`pushpin`},{code:`:recycle:`,description:`Refactor Code`,emoji:`♻️`,emojiLength:0,semver:_.NULL,type:`refactor`},{code:`:bookmark:`,description:`Release / Version Tags`,emoji:`🔖`,emojiLength:1,semver:_.NULL,type:`release`},{code:`:rewind:`,description:`Revert Changes`,emoji:`⏪️`,emojiLength:1,semver:_.PATCH,type:`revert`},{code:`:coffin:`,description:`Remove Dead Code`,emoji:`⚰️`,emojiLength:0,semver:_.NULL,type:`rip`},{code:`:passport_control:`,description:`Work on Code Related to Authorization Roles and Permissions`,emoji:`🛂`,emojiLength:1,semver:_.PATCH,type:`roles`},{code:`:fast_forward:`,description:`Create Rollforward Version`,emoji:`⏩️`,emojiLength:1,semver:_.NULL,type:`rollforward`},{code:`:rocket:`,description:`Custom Type for CI/CD to Hook into Run Build Override`,emoji:`🚀️`,emojiLength:1,semver:_.PATCH,type:`run-build`},{code:`:closed_lock_with_key:`,description:`Add or Update Secrets`,emoji:`🔐`,emojiLength:1,semver:_.NULL,type:`secrets`},{code:`:lock:`,description:`Fix Security Issues`,emoji:`🔒️`,emojiLength:1,semver:_.PATCH,type:`security`},{code:`:seedling:`,description:`Add or Update Seed Files`,emoji:`🌱`,emojiLength:1,semver:_.NULL,type:`seed`},{code:`:mag:`,description:`Improve Seo`,emoji:`🔍️`,emojiLength:1,semver:_.PATCH,type:`seo`},{code:`:camera_flash:`,description:`Add or Update Snapshots`,emoji:`📸`,emojiLength:1,semver:_.NULL,type:`snapshot`},{code:`:money_with_wings:`,description:`Add Sponsorships or Money Related Infrastructure`,emoji:`💸`,emojiLength:1,semver:_.NULL,type:`sponsor`},{code:`:art:`,description:`Improve Structure / Format of the Code`,emoji:`🎨`,emojiLength:1,semver:_.NULL,type:`style`},{code:`:test_tube:`,description:`Add a Failing Test`,emoji:`🧪`,emojiLength:1,semver:_.NULL,type:`test-fail`},{code:`:white_check_mark:`,description:`Add Update or Pass Tests`,emoji:`✅`,emojiLength:1,semver:_.NULL,type:`test`},{code:`:speech_balloon:`,description:`Add or Update Text and Literals`,emoji:`💬`,emojiLength:1,semver:_.PATCH,type:`texts`},{code:`:label:`,description:`Add or Update Types`,emoji:`🏷️`,emojiLength:0,semver:_.PATCH,type:`types`},{code:`:pencil2:`,description:`Fix Typos`,emoji:`✏️`,emojiLength:0,semver:_.PATCH,type:`typo`},{code:`:lipstick:`,description:`Add or Update the UI and Style Files`,emoji:`💄`,emojiLength:1,semver:_.PATCH,type:`ui`},{code:`:arrow_up:`,description:`Upgrade Dependencies`,emoji:`⬆️`,emojiLength:0,semver:_.PATCH,type:`upgrade`},{code:`:children_crossing:`,description:`Improve User Experience / Usability`,emoji:`🚸`,emojiLength:1,semver:_.PATCH,type:`ux`},{code:`:safety_vest:`,description:`Add or update code related to validation`,emoji:`🦺`,emojiLength:1,semver:_.PATCH,type:`validation`},{code:`:construction:`,description:`Work in Progress`,emoji:`🚧`,emojiLength:1,semver:_.NULL,type:`wip`}],w=(e,t,n)=>C[C.findIndex(n=>n[t]===e)]?.[n],T=(e,t)=>[f.COMMIT,f.HOOK].includes(e)?{dryrun:t[f.DRYRUN],emoji:t[f.EMOJI],format:t[h.FORMAT]===l.CONVENTIONAL?t[f.EMOJI]?l.CONVENTIONAL:l.CONVENTIONAL_NO_EMOJI:l.GITMOJI,message:t[h.MESSAGE],mode:e===f.HOOK?u.HOOK:u.CLIENT,scope:t[h.SCOPE],skip:t[f.SKIP],title:t[h.TITLE],type:t[h.TYPE]}:null,E=(e,n)=>{let r=e.flags,i=Object.keys(r).map(e=>r[e]&&e).find(e=>n[e]),a=I();!r[f.DRYRUN]&&!a&&(console.log(j(m.TYPES.ERROR,m.MESSAGES.STAGED_FILES)),t.exit(2)),r[f.COMMIT]&&r[f.HOOK]&&(console.log(j(m.TYPES.ERROR,m.MESSAGES.MODE_CONFLICT)),t.exit(2)),(r[h.MESSAGE]||r[h.SCOPE]||r[h.TITLE]||r[h.TYPE])&&(r[f.SKIP]=!0),r[f.SKIP]&&(r[h.TITLE]&&r[h.TYPE]?r[f.SKIP]=!0:(r[f.SKIP]=!1,console.log(j(m.TYPES.ERROR,m.MESSAGES.COMMAND_LINE_WITHOUT_REQUIRED)),r[h.TITLE]=void 0,r[h.TYPE]=void 0));let o=T(i,r);return n[i]?n[i](o):e.showHelp()},D=({emoji:e,emojiLength:t})=>t===0?`${e} `:`${e} `,O=e=>e?.padEnd(y.MAX),k=e=>e.map(({description:e,emoji:t,emojiLength:n,type:r})=>{console.log(`${D({emoji:t,emojiLength:n})} ${O(r)} ${e}`)}),A=(e,t)=>{let n=p[e?.format],r=t?.gitmoji?`${t?.gitmoji} `:``,i=t?.scope?`(${t?.scope.replace(/ {2}/g,`--`).replace(/ /g,`-`).toLowerCase().trim()})`:``;return i=i&&e?.format===l.GITMOJI?`${i} `:i,n.replace(/\{emoji\}/g,r).replace(/\{scope\}/g,i).replace(/\{breaking\}/g,``).replace(/\{title\}/g,t?.title).replace(/\{type\}/g,t?.type)},j=(e,t,n)=>{let r=n?t.replace(/\{REPLACE\}/g,n):t;return r=`\n${r}\n`,e===m.TYPES.ERROR?a.magenta.bold(r):e===m.TYPES.INFO?a.blue.bold(r):e===m.TYPES.WARNING?a.yellow.bold(r):a.green.bold(r)},M=(e,t,n)=>{let r=n?t.replace(/\{REPLACE\}/g,n):t;return e===m.TYPES.ERROR?a.red.bold(r):e===m.TYPES.INFO?a.white.bold(r):e===m.TYPES.WARNING?a.yellow.bold(r):a.green.bold(r)},N=e=>{let t=e.length,n=t.toString(),r=m.TYPES.SUCCESS;return t<v.MIN||t>v.MAX?r=m.TYPES.ERROR:(t<v.MIN_SWAG||t>v.MAX_SWAG)&&(r=m.TYPES.WARNING),M(r,m.MESSAGES.REPLACE,n)},P=()=>o(`git rev-parse --show-toplevel 2>`+(process.platform===`win32`?` nul`:`/dev/null`)).toString().trim(),F=()=>{let e,t=``;e=o(`git rev-parse --abbrev-ref HEAD`),e=e.toString().trim().split(`/`);let n=e[0],r=(e[1]?e[1]:n).split(`-`),i=r[0],a=r[1]?r[1]:i,s=`${i}-${a}`;return!isNaN(parseFloat(a))&&isFinite(parseFloat(a))&&(t=s),t},I=()=>!!o(`git diff --name-only --staged`).toString().trim(),L=e=>{console.log(a.magenta.bold(`❯ dry-run mode: ${e}\n`))},R=()=>{t.on(`SIGINT`,()=>{console.log(a.magenta.bold(`❯ [ccommit] interrupted`)),t.exit(0)})},z=()=>C.map(({description:e,emoji:t,emojiLength:n,type:r})=>({description:e,emoji:t,emojiLength:n,type:r})),B=(e,t)=>{let n=`Character Count (${N(e)}/${t})`;return`${a.dim.cyan(`›`)} ${a.dim.bold(n)}`},V=e=>e.submitted?e.cancelled?a.magenta(`✖`):a.green(`✔`):a.cyan(`?`),H=[{default:`(y/N)`,format(e){let t=e?`yes`:`no`;return this.state.submitted?a.green(t):a.dim(t)},initial:!1,message:`Is there a breaking change?`,name:`breaking`,prefix(){return V(this.state)},styles:{primary:a.white},type:`confirm`},{footer(){return B(this.state.input,v.MAX)},message:`Please share breaking change info`,name:`messageBreaking`,result(e){return e?`BREAKING CHANGE: ${e.trim()}`:``},skip(){return!this.state.answers.breaking},type:`input`,validate(e){let t=e?.length||0;return this.state.answers.breaking?t<15?`Must have at least 15 characters`:t>v.MAX?`Cannot exceed ${v.MAX} characters`:!0:!0}},{choices:z().map(({description:e,emoji:t,emojiLength:n,type:r})=>{let i=t;return{name:` ${D({emoji:t,emojiLength:n})} ${O(r)} ${e}`,value:i}}),footer(){return`${a.dim.cyan(`›`)} ${a.dim.bold(`scroll up and down to reveal more ↕`)}`},highlight(e){return a.cyanBright(e)},limit:18,message:`Please choose a commit type`,name:`gitmoji`,type:`autocomplete`},{footer(){return B(this.state.input,g.MAX)},format(){return this.state.submitted?a.green(this.value):this.value},message:`Please share the scope (if any)`,name:`scope`,type:`input`,validate(e){let t=e.length;return t===0?!0:t<g.MIN?`Must have at least ${g.MIN} characters`:t>g.MAX?`Cannot exceed ${g.MAX} characters`:!0}},{footer(){return B(this.state.input,v.MAX)},hint(){return this.state.initial?`… tab to use initial value`:``},initial:F()?`${F()} `:``,message:`Please enter the commit title`,name:`title`,type:`input`,validate(e){let t=e.length;return t<v.MIN?`Must have at least ${v.MIN} characters`:t>v.MAX?`Cannot exceed ${v.MAX} characters`:!0}},{footer(){return`${a.dim.cyan(`›`)} ${a.dim(`Return twice to submit/skip: ⮑ ⮑`)}`},message:`Please share a more detailed commit message (if applicable)`,multiline:!0,name:`message`,result(e){return e===`
10
+ `,GENERATOR_TAKING_OVER:`❯ Generator will take it from here (CTRL+C to quit)`,MODE_CONFLICT:`❯ Please choose one or the other: --commit, -c | --hook, -u`,REPLACE:`{REPLACE}`,STAGED_FILES:`❯ There are no staged files for git. Did you mean to do a dry-run (-n)?`,TYPE_INCORRECT:`❯ There is no gitmoji/type associated with: {REPLACE}`},TYPES:{ERROR:`error`,INFO:`info`,SUCCESS:`success`,WARNING:`warning`}},h=Object.freeze({FORMAT:`format`,MESSAGE:`message`,SCOPE:`scope`,TITLE:`title`,TYPE:`type`}),g={MAX:12,MIN:3},_={MAJOR:`major`,MINOR:`minor`,NULL:`null`,PATCH:`patch`},v={MAX:48,MAX_SWAG:40,MIN:3,MIN_SWAG:15},y={MAX:15},b=()=>i(`git`,[`rev-parse`,`--absolute-git-dir`]).then(({stdout:e})=>{
11
+ /*!
12
+ * reference: https://github.com/carloscuesta/gitmoji-cli
13
+ */
14
+ (r.existsSync(e+`/rebase-merge`)||r.existsSync(e+`/rebase-apply`))&&t.exit(0)}),x=()=>new Promise(e=>{let n=t.argv[4];n&&(n.startsWith(`commit`)||n.startsWith(`merge`))&&t.exit(0),e()}),S=()=>x().then(b),C=[{code:`:wheelchair:`,description:`Improve Accessibility`,emoji:`♿️`,emojiLength:1,semver:_.PATCH,type:`access`},{code:`:chart_with_upwards_trend:`,description:`Add or Update Analytics or Track Code`,emoji:`📈`,emojiLength:1,semver:_.PATCH,type:`analytics`},{code:`:dizzy:`,description:`Add or Update Animations and Transitions`,emoji:`💫`,emojiLength:1,semver:_.PATCH,type:`animation`},{code:`:building_construction:`,description:`Make Architectural Changes`,emoji:`🏗️`,emojiLength:0,semver:_.NULL,type:`arch`},{code:`:bento:`,description:`Add or Update Assets`,emoji:`🍱`,emojiLength:1,semver:_.PATCH,type:`assets`},{code:`:t-rex:`,description:`Backwards Compatibility`,emoji:`🦖`,emojiLength:1,semver:_.NULL,type:`backwards`},{code:`:beers:`,description:`Write Code Drunkenly`,emoji:`🍻`,emojiLength:1,semver:_.NULL,type:`beer`},{code:`:boom:`,description:`Introduce Breaking Changes`,emoji:`💥`,emojiLength:1,semver:_.MAJOR,type:`breaking`},{code:`:hammer:`,description:`Add or Update Development Scripts`,emoji:`🔨`,emojiLength:1,semver:_.NULL,type:`build`},{code:`:goal_net:`,description:`Catch Errors`,emoji:`🥅`,emojiLength:1,semver:_.PATCH,type:`catch`},{code:`:computer_disk:`,description:`Changes That Don’t Modify Src or Test Files`,emoji:`💽️`,emojiLength:1,semver:_.NULL,type:`chore`},{code:`:construction_worker:`,description:`Add or Update CI Build System`,emoji:`👷`,emojiLength:1,semver:_.NULL,type:`ci`},{code:`:wastebasket:`,description:`Deprecate Code That Needs to Be Cleaned Up`,emoji:`🗑️`,emojiLength:0,semver:_.PATCH,type:`clean`},{code:`:alien:`,description:`Update Code Due to External API Changes`,emoji:`👽️`,emojiLength:1,semver:_.PATCH,type:`compat`},{code:`:thread:`,description:`Add or Update Code Related to Multithreading or Concurrency`,emoji:`🧵`,emojiLength:1,semver:_.NULL,type:`concurrency`},{code:`:wrench:`,description:`Add or Update Configuration Files`,emoji:`🔧`,emojiLength:1,semver:_.PATCH,type:`config`},{code:`:busts_in_silhouette:`,description:`Add or Update Contributor(s)`,emoji:`👥`,emojiLength:1,semver:_.NULL,type:`contrib-add`},{code:`:monocle_face:`,description:`Data Exploration/inspection`,emoji:`🧐`,emojiLength:1,semver:_.NULL,type:`data`},{code:`:card_file_box:`,description:`Perform Database Related Changes`,emoji:`🗃️`,emojiLength:0,semver:_.PATCH,type:`db`},{code:`:heavy_plus_sign:`,description:`Add a Dependency`,emoji:`➕`,emojiLength:1,semver:_.PATCH,type:`dep-add`},{code:`:heavy_minus_sign:`,description:`Remove a Dependency`,emoji:`➖`,emojiLength:1,semver:_.PATCH,type:`dep-rm`},{code:`:package:`,description:`Add or Update Compiled Files or Packages`,emoji:`📦️`,emojiLength:1,semver:_.PATCH,type:`dep-up`},{code:`:rocket:`,description:`Deploy Stuff`,emoji:`🚀`,emojiLength:1,semver:_.NULL,type:`deploy`},{code:`:bulb:`,description:`Add or Update Comments in Source Code`,emoji:`💡`,emojiLength:1,semver:_.NULL,type:`docs-code`},{code:`:memo:`,description:`Add or Update Documentation`,emoji:`📝`,emojiLength:1,semver:_.NULL,type:`docs`},{code:`:arrow_down:`,description:`Downgrade Dependencies`,emoji:`⬇️`,emojiLength:0,semver:_.PATCH,type:`downgrade`},{code:`:technologist:`,description:`Improve Developer Experience`,emoji:`💻`,emojiLength:1,semver:_.NULL,type:`dx`},{code:`:egg:`,description:`Add or Update an Easter Egg`,emoji:`🥚`,emojiLength:1,semver:_.PATCH,type:`egg`},{code:`:alembic:`,description:`Perform Experiments`,emoji:`⚗️`,emojiLength:0,semver:_.PATCH,type:`experiment`},{code:`:sparkles:`,description:`Introduce New Features`,emoji:`✨`,emojiLength:1,semver:_.MINOR,type:`feat`},{code:`:bug:`,description:`Fix a Bug`,emoji:`🐛`,emojiLength:1,semver:_.PATCH,type:`fix`},{code:`:green_heart:`,description:`Fix CI Build`,emoji:`💚`,emojiLength:1,semver:_.NULL,type:`fix-ci`},{code:`:triangular_flag_on_post:`,description:`Add Update or Remove Feature Flags`,emoji:`🚩`,emojiLength:1,semver:_.PATCH,type:`flags`},{code:`:stethoscope:`,description:`Add or Update Healthcheck`,emoji:`🩺`,emojiLength:1,semver:_.NULL,type:`healthcheck`},{code:`:ambulance:`,description:`Critical Hotfix`,emoji:`🚑️`,emojiLength:1,semver:_.PATCH,type:`hotfix`},{code:`:globe_with_meridians:`,description:`Internationalization and Localization`,emoji:`🌐`,emojiLength:1,semver:_.PATCH,type:`i18n`},{code:`:see_no_evil:`,description:`Add or Update a Gitignore File.`,emoji:`🙈`,emojiLength:1,semver:_.NULL,type:`ignore`},{code:`:bricks:`,description:`Infrastructure Related Changes`,emoji:`🧱`,emojiLength:1,semver:_.NULL,type:`inf`},{code:`:tada:`,description:`Begin a Project`,emoji:`🎉`,emojiLength:1,semver:_.PATCH,type:`init`},{code:`:iphone:`,description:`Work on Responsive Design`,emoji:`📱`,emojiLength:1,semver:_.PATCH,type:`iphone`},{code:`:page_facing_up:`,description:`Add or Update License`,emoji:`📄`,emojiLength:1,semver:_.NULL,type:`license`},{code:`:rotating_light:`,description:`Fix Compiler / Linter Warnings`,emoji:`🚨`,emojiLength:1,semver:_.NULL,type:`lint`},{code:`:loud_sound:`,description:`Add or Update Logs`,emoji:`🔊`,emojiLength:1,semver:_.NULL,type:`log-add`},{code:`:mute:`,description:`Remove Logs`,emoji:`🔇`,emojiLength:1,semver:_.NULL,type:`log-rm`},{code:`:necktie:`,description:`Add or Update Business Logic`,emoji:`👔`,emojiLength:1,semver:_.PATCH,type:`logic`},{code:`:twisted_rightwards_arrows:`,description:`Merge Branches`,emoji:`🔀`,emojiLength:1,semver:_.NULL,type:`merge`},{code:`:clown_face:`,description:`Mock Things`,emoji:`🤡`,emojiLength:1,semver:_.NULL,type:`mock`},{code:`:truck:`,description:`Move or Rename Resources (Eg.: Files Paths Routes).`,emoji:`🚚`,emojiLength:1,semver:_.NULL,type:`mv`},{code:`:airplane:`,description:`Provide offline support`,emoji:`✈️`,emojiLength:1,semver:_.PATCH,type:`offline`},{code:`:adhesive_bandage:`,description:`Simple Fix for a Non-Critical Issue`,emoji:`🩹`,emojiLength:1,semver:_.PATCH,type:`patch`},{code:`:zap:`,description:`Improve Performance`,emoji:`⚡️`,emojiLength:1,semver:_.PATCH,type:`perf`},{code:`:poop:`,description:`Write Bad Code That Needs to Be Improved`,emoji:`💩`,emojiLength:1,semver:_.NULL,type:`poo`},{code:`:fire:`,description:`Remove Code or Files`,emoji:`🔥`,emojiLength:1,semver:_.NULL,type:`prune`},{code:`:pushpin:`,description:`Pin Dependencies to Specific Versions`,emoji:`📌`,emojiLength:1,semver:_.PATCH,type:`pushpin`},{code:`:recycle:`,description:`Refactor Code`,emoji:`♻️`,emojiLength:0,semver:_.NULL,type:`refactor`},{code:`:bookmark:`,description:`Release / Version Tags`,emoji:`🔖`,emojiLength:1,semver:_.NULL,type:`release`},{code:`:rewind:`,description:`Revert Changes`,emoji:`⏪️`,emojiLength:1,semver:_.PATCH,type:`revert`},{code:`:coffin:`,description:`Remove Dead Code`,emoji:`⚰️`,emojiLength:0,semver:_.NULL,type:`rip`},{code:`:passport_control:`,description:`Work on Code Related to Authorization Roles and Permissions`,emoji:`🛂`,emojiLength:1,semver:_.PATCH,type:`roles`},{code:`:fast_forward:`,description:`Create Rollforward Version`,emoji:`⏩️`,emojiLength:1,semver:_.NULL,type:`rollforward`},{code:`:rocket:`,description:`Custom Type for CI/CD to Hook into Run Build Override`,emoji:`🚀️`,emojiLength:1,semver:_.PATCH,type:`run-build`},{code:`:closed_lock_with_key:`,description:`Add or Update Secrets`,emoji:`🔐`,emojiLength:1,semver:_.NULL,type:`secrets`},{code:`:lock:`,description:`Fix Security Issues`,emoji:`🔒️`,emojiLength:1,semver:_.PATCH,type:`security`},{code:`:seedling:`,description:`Add or Update Seed Files`,emoji:`🌱`,emojiLength:1,semver:_.NULL,type:`seed`},{code:`:mag:`,description:`Improve Seo`,emoji:`🔍️`,emojiLength:1,semver:_.PATCH,type:`seo`},{code:`:camera_flash:`,description:`Add or Update Snapshots`,emoji:`📸`,emojiLength:1,semver:_.NULL,type:`snapshot`},{code:`:money_with_wings:`,description:`Add Sponsorships or Money Related Infrastructure`,emoji:`💸`,emojiLength:1,semver:_.NULL,type:`sponsor`},{code:`:art:`,description:`Improve Structure / Format of the Code`,emoji:`🎨`,emojiLength:1,semver:_.NULL,type:`style`},{code:`:test_tube:`,description:`Add a Failing Test`,emoji:`🧪`,emojiLength:1,semver:_.NULL,type:`test-fail`},{code:`:white_check_mark:`,description:`Add Update or Pass Tests`,emoji:`✅`,emojiLength:1,semver:_.NULL,type:`test`},{code:`:speech_balloon:`,description:`Add or Update Text and Literals`,emoji:`💬`,emojiLength:1,semver:_.PATCH,type:`texts`},{code:`:label:`,description:`Add or Update Types`,emoji:`🏷️`,emojiLength:0,semver:_.PATCH,type:`types`},{code:`:pencil2:`,description:`Fix Typos`,emoji:`✏️`,emojiLength:0,semver:_.PATCH,type:`typo`},{code:`:lipstick:`,description:`Add or Update the UI and Style Files`,emoji:`💄`,emojiLength:1,semver:_.PATCH,type:`ui`},{code:`:arrow_up:`,description:`Upgrade Dependencies`,emoji:`⬆️`,emojiLength:0,semver:_.PATCH,type:`upgrade`},{code:`:children_crossing:`,description:`Improve User Experience / Usability`,emoji:`🚸`,emojiLength:1,semver:_.PATCH,type:`ux`},{code:`:safety_vest:`,description:`Add or update code related to validation`,emoji:`🦺`,emojiLength:1,semver:_.PATCH,type:`validation`},{code:`:construction:`,description:`Work in Progress`,emoji:`🚧`,emojiLength:1,semver:_.NULL,type:`wip`}],w=(e,t,n)=>C[C.findIndex(n=>n[t]===e)]?.[n],T=(e,t)=>[f.COMMIT,f.HOOK].includes(e)?{dryrun:t[f.DRYRUN],emoji:t[f.EMOJI],format:t[h.FORMAT]===l.CONVENTIONAL?t[f.EMOJI]?l.CONVENTIONAL:l.CONVENTIONAL_NO_EMOJI:l.GITMOJI,message:t[h.MESSAGE],mode:e===f.HOOK?u.HOOK:u.CLIENT,scope:t[h.SCOPE],skip:t[f.SKIP],title:t[h.TITLE],type:t[h.TYPE]}:null,E=(e,n)=>{let r=e.flags,i=Object.keys(r).map(e=>r[e]&&e).find(e=>n[e]),a=I();!r[f.DRYRUN]&&!a&&(console.log(j(m.TYPES.ERROR,m.MESSAGES.STAGED_FILES)),t.exit(2)),r[f.COMMIT]&&r[f.HOOK]&&(console.log(j(m.TYPES.ERROR,m.MESSAGES.MODE_CONFLICT)),t.exit(2)),(r[h.MESSAGE]||r[h.SCOPE]||r[h.TITLE]||r[h.TYPE])&&(r[f.SKIP]=!0),r[f.SKIP]&&(r[h.TITLE]&&r[h.TYPE]?r[f.SKIP]=!0:(r[f.SKIP]=!1,console.log(j(m.TYPES.ERROR,m.MESSAGES.COMMAND_LINE_WITHOUT_REQUIRED)),r[h.TITLE]=void 0,r[h.TYPE]=void 0));let o=T(i,r);return n[i]?n[i](o):e.showHelp()},D=({emoji:e,emojiLength:t})=>t===0?`${e} `:`${e} `,O=e=>e?.padEnd(y.MAX),k=e=>e.map(({description:e,emoji:t,emojiLength:n,type:r})=>{console.log(`${D({emoji:t,emojiLength:n})} ${O(r)} ${e}`)}),A=(e,t)=>{let n=p[e?.format],r=t?.gitmoji?`${t?.gitmoji} `:``,i=t?.scope?`(${t?.scope.replace(/ {2}/g,`--`).replace(/ /g,`-`).toLowerCase().trim()})`:``;return i=i&&e?.format===l.GITMOJI?`${i} `:i,n.replace(/\{emoji\}/g,r).replace(/\{scope\}/g,i).replace(/\{breaking\}/g,``).replace(/\{title\}/g,t?.title).replace(/\{type\}/g,t?.type)},j=(e,t,n)=>{let r=n?t.replace(/\{REPLACE\}/g,n):t;return r=`\n${r}\n`,e===m.TYPES.ERROR?a.magenta.bold(r):e===m.TYPES.INFO?a.blue.bold(r):e===m.TYPES.WARNING?a.yellow.bold(r):a.green.bold(r)},M=(e,t,n)=>{let r=n?t.replace(/\{REPLACE\}/g,n):t;return e===m.TYPES.ERROR?a.red.bold(r):e===m.TYPES.INFO?a.white.bold(r):e===m.TYPES.WARNING?a.yellow.bold(r):a.green.bold(r)},N=e=>{let t=e.length,n=t.toString(),r=m.TYPES.SUCCESS;return t<v.MIN||t>v.MAX?r=m.TYPES.ERROR:(t<v.MIN_SWAG||t>v.MAX_SWAG)&&(r=m.TYPES.WARNING),M(r,m.MESSAGES.REPLACE,n)},P=()=>o(`git rev-parse --show-toplevel 2>`+(process.platform===`win32`?` nul`:`/dev/null`)).toString().trim(),F=()=>{let e,t=``;e=o(`git rev-parse --abbrev-ref HEAD`),e=e.toString().trim().split(`/`);let n=e[0],r=(e[1]?e[1]:n).split(`-`),i=r[0],a=r[1]?r[1]:i,s=`${i}-${a}`;return!isNaN(parseFloat(a))&&isFinite(parseFloat(a))&&(t=s),t},I=()=>!!o(`git diff --name-only --staged`).toString().trim(),L=e=>{console.log(a.magenta.bold(`❯ dry-run mode: ${e}\n`))},R=()=>{
15
+ /*!
16
+ * reference: https://github.com/carloscuesta/gitmoji-cli
17
+ */
18
+ t.on(`SIGINT`,()=>{console.log(a.magenta.bold(`❯ [ccommit] interrupted`)),t.exit(0)})},z=()=>C.map(({description:e,emoji:t,emojiLength:n,type:r})=>({description:e,emoji:t,emojiLength:n,type:r})),B=(e,t)=>{let n=`Character Count (${N(e)}/${t})`;return`${a.dim.cyan(`›`)} ${a.dim.bold(n)}`},V=e=>e.submitted?e.cancelled?a.magenta(`✖`):a.green(`✔`):a.cyan(`?`),H=[{default:`(y/N)`,format(e){let t=e?`yes`:`no`;return this.state.submitted?a.green(t):a.dim(t)},initial:!1,message:`Is there a breaking change?`,name:`breaking`,prefix(){return V(this.state)},styles:{primary:a.white},type:`confirm`},{footer(){return B(this.state.input,v.MAX)},message:`Please share breaking change info`,name:`messageBreaking`,result(e){return e?`BREAKING CHANGE: ${e.trim()}`:``},skip(){return!this.state.answers.breaking},type:`input`,validate(e){let t=e?.length||0;return this.state.answers.breaking?t<15?`Must have at least 15 characters`:t>v.MAX?`Cannot exceed ${v.MAX} characters`:!0:!0}},{choices:z().map(({description:e,emoji:t,emojiLength:n,type:r})=>{let i=t;return{name:` ${D({emoji:t,emojiLength:n})} ${O(r)} ${e}`,value:i}}),footer(){return`${a.dim.cyan(`›`)} ${a.dim.bold(`scroll up and down to reveal more ↕`)}`},highlight(e){return a.cyanBright(e)},limit:18,message:`Please choose a commit type`,name:`gitmoji`,type:`autocomplete`},{footer(){return B(this.state.input,g.MAX)},format(){return this.state.submitted?a.green(this.value):this.value},message:`Please share the scope (if any)`,name:`scope`,type:`input`,validate(e){let t=e.length;return t===0?!0:t<g.MIN?`Must have at least ${g.MIN} characters`:t>g.MAX?`Cannot exceed ${g.MAX} characters`:!0}},{footer(){return B(this.state.input,v.MAX)},hint(){return this.state.initial?`… tab to use initial value`:``},initial:F()?`${F()} `:``,message:`Please enter the commit title`,name:`title`,type:`input`,validate(e){let t=e.length;return t<v.MIN?`Must have at least ${v.MIN} characters`:t>v.MAX?`Cannot exceed ${v.MAX} characters`:!0}},{footer(){return`${a.dim.cyan(`›`)} ${a.dim(`Return twice to submit/skip: ⮑ ⮑`)}`},message:`Please share a more detailed commit message (if applicable)`,multiline:!0,name:`message`,result(e){return e===`
11
19
  `?``:e},type:`input`}],U=async(e,n)=>{try{let t=e?.subject,r=e?.message,a=e?.messageBreaking,o=[`commit`,`-m`,t];r&&o.push(`-m`,r),a&&o.push(`-m`,a),n?.dryrun?L([`git`,...o].join(` `)):await i(`git`,o,{buffer:!1,stdio:`inherit`})}catch(e){console.error(j(m.TYPES.ERROR,m.MESSAGES.COMMIT_FAIL,e.escapedCommand)),t.exit(1)}},W=s(P(),`.git`,`COMMIT_EDITMSG`),G=(e,n)=>{try{let t=e?.subject;e?.message&&e?.message!==`
12
20
  `&&(t+=`\n\n${e.message}`),e?.messageBreaking&&e?.messageBreaking!==`
13
21
  `&&(t+=`\n\n${e.messageBreaking}`),n?.dryrun?L(t):r.writeFileSync(W,t)}catch(e){console.error(e),t.exit(1)}finally{t.exit(0)}},{prompt:K}=n,q=async e=>{let n={};return e.skip?(n=e,n.gitmoji=w(n.type,d.TYPE,d.EMOJI),n.gitmoji||(console.log(j(m.TYPES.ERROR,m.MESSAGES.TYPE_INCORRECT,n.type)),t.exit(2))):await K(H).then(e=>(e.type=w(e.gitmoji,d.EMOJI,d.TYPE),e)).then(e=>{n=e}).catch(console.error),n.subject=n?A(e,n):``,e.mode===u.HOOK?G(n,e):U(n,e)};var J=e=>e.mode===u.HOOK?(R(),S().then(()=>q(e))):q(e),Y=()=>k(C);
package/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["process","commitTypes","commitTypes","commitTypes","commit","list"],"sources":["../src/lib/index.ts","../src/utils/cancelIf.ts","../src/data/types.ts","../src/utils/findBy.ts","../src/utils/findCommand.ts","../src/utils/format.ts","../src/utils/generateLog.ts","../src/utils/getCharsLeft.ts","../src/utils/getGitRootDir.ts","../src/utils/getIssueTracker.ts","../src/utils/getStagedFiles.ts","../src/utils/printDryRun.ts","../src/utils/registerHookInterruptionHandler.ts","../src/commands/commit/questions.ts","../src/commands/commit/withClient.ts","../src/commands/commit/withHook.ts","../src/commands/commit/commit.ts","../src/commands/commit/index.ts","../src/commands/list/list.ts","../src/commands/list/index.ts","../src/index.ts"],"sourcesContent":["const COMMANDS = {\n COMMIT: 'commit',\n HOOK: 'hook',\n LIST: 'list',\n}\nconst COMMIT_FORMATS = {\n CONVENTIONAL: 'conventional',\n CONVENTIONAL_NO_EMOJI: 'conventional-no-emoji',\n GITMOJI: 'gitmoji',\n}\n\nconst COMMIT_MODES = {\n CLIENT: 'client',\n HOOK: 'hook',\n}\n\nconst FIND_BY = {\n EMOJI: 'emoji',\n TYPE: 'type',\n}\n\nconst FLAGS = Object.freeze({\n BREAKING: 'breaking',\n COMMIT: 'commit',\n DRYRUN: 'dryrun',\n EMOJI: 'emoji',\n HELP: 'help',\n HOOK: 'hook',\n LIST: 'list',\n SKIP: 'skip',\n VERSION: 'version',\n})\n\nconst FORMAT = {\n [COMMIT_FORMATS.CONVENTIONAL]: '{type}{scope}{breaking}: {emoji}{title}',\n [COMMIT_FORMATS.CONVENTIONAL_NO_EMOJI]: '{type}{scope}{breaking}: {title}',\n [COMMIT_FORMATS.GITMOJI]: '{emoji}{breaking}{scope}{title}',\n}\n\nconst LOGS = {\n MESSAGES: {\n COMMAND_LINE_WITHOUT_REQUIRED:\n '❯ Command line option requires both: --title, --type',\n COMMIT_FAIL: `❯ \\n\n ❯ Oops! An error occurred. There is likely additional logging output above.\\n\n ❯ You can run the same commit with this command:\\n\n ❯ \\t\n {REPLACE}\n `,\n GENERATOR_TAKING_OVER: '❯ Generator will take it from here (CTRL+C to quit)',\n MODE_CONFLICT: '❯ Please choose one or the other: --commit, -c | --hook, -u',\n REPLACE: '{REPLACE}',\n STAGED_FILES:\n '❯ There are no staged files for git. Did you mean to do a dry-run (-n)?',\n TYPE_INCORRECT: '❯ There is no gitmoji/type associated with: {REPLACE}',\n },\n TYPES: {\n ERROR: 'error',\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n },\n}\n\nconst OPTIONS = Object.freeze({\n FORMAT: 'format',\n MESSAGE: 'message',\n SCOPE: 'scope',\n TITLE: 'title',\n TYPE: 'type',\n})\n\nconst SCOPE = {\n MAX: 12,\n MIN: 3,\n}\n\nconst SEMVER = {\n MAJOR: 'major',\n MINOR: 'minor',\n NULL: 'null',\n PATCH: 'patch',\n}\n\nconst TITLE = {\n MAX: 48,\n MAX_SWAG: 40,\n MIN: 3,\n MIN_SWAG: 15,\n}\n\nconst TYPE = {\n MAX: 15,\n}\n\nexport {\n COMMANDS,\n COMMIT_FORMATS,\n COMMIT_MODES,\n FIND_BY,\n FLAGS,\n FORMAT,\n LOGS,\n OPTIONS,\n SCOPE,\n SEMVER,\n TITLE,\n TYPE,\n}\n","/*!\n * reference: https://github.com/carloscuesta/gitmoji-cli\n */\nimport fs from 'node:fs'\nimport process from 'node:process'\n\nimport { execa } from 'execa'\n\nconst cancelIfRebasing = (): Promise<void> =>\n execa('git', ['rev-parse', '--absolute-git-dir']).then(\n ({ stdout: gitDirectory }) => {\n // see https://stackoverflow.com/questions/3921409/how-to-know-if-there-is-a-git-rebase-in-progress\n // to understand how a rebase is detected\n if (\n // biome-ignore lint/style/useTemplate: migrate\n fs.existsSync(gitDirectory + '/rebase-merge') ||\n // biome-ignore lint/style/useTemplate: migrate\n fs.existsSync(gitDirectory + '/rebase-apply')\n ) {\n process.exit(0)\n }\n },\n )\n\nconst COMMIT_MESSAGE_SOURCE = 4\n\nconst cancelIfAmending = (): Promise<void> =>\n new Promise<void>((resolve) => {\n /*\n from https://git-scm.com/docs/githooks#_prepare_commit_msg\n the commit message source is passed as second argument and corresponding 4 for ccommit\n `gitmoji --hook $1 $2`\n */\n const commitMessageSource: string = process.argv[COMMIT_MESSAGE_SOURCE]\n if (\n commitMessageSource &&\n (commitMessageSource.startsWith('commit') ||\n commitMessageSource.startsWith('merge'))\n ) {\n process.exit(0)\n }\n resolve()\n })\n\n// I avoid Promise.all to avoid race condition in future cancel callbacks\nconst cancelIfNeeded = (): Promise<void> => cancelIfAmending().then(cancelIfRebasing)\n\nexport { COMMIT_MESSAGE_SOURCE, cancelIfAmending, cancelIfNeeded, cancelIfRebasing }\n","// @todo(ccommit) cache + generation from: @jeromefitz/conventional-gitmoji\nimport { SEMVER } from '~ccommit/lib/index'\n\n// @hack(ccommit) emojiLength is to help with formatting until can do it programmatically\nconst types = [\n {\n code: ':wheelchair:',\n description: 'Improve Accessibility',\n emoji: '♿️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'access',\n },\n {\n code: ':chart_with_upwards_trend:',\n description: 'Add or Update Analytics or Track Code',\n emoji: '📈',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'analytics',\n },\n {\n code: ':dizzy:',\n description: 'Add or Update Animations and Transitions',\n emoji: '💫',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'animation',\n },\n {\n code: ':building_construction:',\n description: 'Make Architectural Changes',\n emoji: '🏗️',\n emojiLength: 0,\n semver: SEMVER.NULL,\n type: 'arch',\n },\n {\n code: ':bento:',\n description: 'Add or Update Assets',\n emoji: '🍱',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'assets',\n },\n {\n code: ':t-rex:',\n description: 'Backwards Compatibility',\n emoji: '🦖',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'backwards',\n },\n {\n code: ':beers:',\n description: 'Write Code Drunkenly',\n emoji: '🍻',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'beer',\n },\n {\n code: ':boom:',\n description: 'Introduce Breaking Changes',\n emoji: '💥',\n emojiLength: 1,\n semver: SEMVER.MAJOR,\n type: 'breaking',\n },\n {\n code: ':hammer:',\n description: 'Add or Update Development Scripts',\n emoji: '🔨',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'build',\n },\n {\n code: ':goal_net:',\n description: 'Catch Errors',\n emoji: '🥅',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'catch',\n },\n {\n code: ':computer_disk:',\n description: 'Changes That Don’t Modify Src or Test Files',\n emoji: '💽️',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'chore',\n },\n {\n code: ':construction_worker:',\n description: 'Add or Update CI Build System',\n emoji: '👷',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'ci',\n },\n {\n code: ':wastebasket:',\n description: 'Deprecate Code That Needs to Be Cleaned Up',\n emoji: '🗑️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'clean',\n },\n {\n code: ':alien:',\n description: 'Update Code Due to External API Changes',\n emoji: '👽️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'compat',\n },\n {\n code: ':thread:',\n description: 'Add or Update Code Related to Multithreading or Concurrency',\n emoji: '🧵',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'concurrency',\n },\n {\n code: ':wrench:',\n description: 'Add or Update Configuration Files',\n emoji: '🔧',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'config',\n },\n {\n code: ':busts_in_silhouette:',\n description: 'Add or Update Contributor(s)',\n emoji: '👥',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'contrib-add',\n },\n {\n code: ':monocle_face:',\n description: 'Data Exploration/inspection',\n emoji: '🧐',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'data',\n },\n {\n code: ':card_file_box:',\n description: 'Perform Database Related Changes',\n emoji: '🗃️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'db',\n },\n {\n code: ':heavy_plus_sign:',\n description: 'Add a Dependency',\n emoji: '➕',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'dep-add',\n },\n {\n code: ':heavy_minus_sign:',\n description: 'Remove a Dependency',\n emoji: '➖',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'dep-rm',\n },\n {\n code: ':package:',\n description: 'Add or Update Compiled Files or Packages',\n emoji: '📦️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'dep-up',\n },\n {\n code: ':rocket:',\n description: 'Deploy Stuff',\n emoji: '🚀',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'deploy',\n },\n {\n code: ':bulb:',\n description: 'Add or Update Comments in Source Code',\n emoji: '💡',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'docs-code',\n },\n {\n code: ':memo:',\n description: 'Add or Update Documentation',\n emoji: '📝',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'docs',\n },\n {\n code: ':arrow_down:',\n description: 'Downgrade Dependencies',\n emoji: '⬇️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'downgrade',\n },\n {\n code: ':technologist:',\n description: 'Improve Developer Experience',\n emoji: '💻',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'dx',\n },\n {\n code: ':egg:',\n description: 'Add or Update an Easter Egg',\n emoji: '🥚',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'egg',\n },\n {\n code: ':alembic:',\n description: 'Perform Experiments',\n emoji: '⚗️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'experiment',\n },\n {\n code: ':sparkles:',\n description: 'Introduce New Features',\n emoji: '✨',\n emojiLength: 1,\n semver: SEMVER.MINOR,\n type: 'feat',\n },\n {\n code: ':bug:',\n description: 'Fix a Bug',\n emoji: '🐛',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'fix',\n },\n {\n code: ':green_heart:',\n description: 'Fix CI Build',\n emoji: '💚',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'fix-ci',\n },\n {\n code: ':triangular_flag_on_post:',\n description: 'Add Update or Remove Feature Flags',\n emoji: '🚩',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'flags',\n },\n {\n code: ':stethoscope:',\n description: 'Add or Update Healthcheck',\n emoji: '🩺',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'healthcheck',\n },\n {\n code: ':ambulance:',\n description: 'Critical Hotfix',\n emoji: '🚑️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'hotfix',\n },\n {\n code: ':globe_with_meridians:',\n description: 'Internationalization and Localization',\n emoji: '🌐',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'i18n',\n },\n {\n code: ':see_no_evil:',\n description: 'Add or Update a Gitignore File.',\n emoji: '🙈',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'ignore',\n },\n {\n code: ':bricks:',\n description: 'Infrastructure Related Changes',\n emoji: '🧱',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'inf',\n },\n {\n code: ':tada:',\n description: 'Begin a Project',\n emoji: '🎉',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'init',\n },\n {\n code: ':iphone:',\n description: 'Work on Responsive Design',\n emoji: '📱',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'iphone',\n },\n {\n code: ':page_facing_up:',\n description: 'Add or Update License',\n emoji: '📄',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'license',\n },\n {\n code: ':rotating_light:',\n description: 'Fix Compiler / Linter Warnings',\n emoji: '🚨',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'lint',\n },\n {\n code: ':loud_sound:',\n description: 'Add or Update Logs',\n emoji: '🔊',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'log-add',\n },\n {\n code: ':mute:',\n description: 'Remove Logs',\n emoji: '🔇',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'log-rm',\n },\n {\n code: ':necktie:',\n description: 'Add or Update Business Logic',\n emoji: '👔',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'logic',\n },\n {\n code: ':twisted_rightwards_arrows:',\n description: 'Merge Branches',\n emoji: '🔀',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'merge',\n },\n {\n code: ':clown_face:',\n description: 'Mock Things',\n emoji: '🤡',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'mock',\n },\n {\n code: ':truck:',\n description: 'Move or Rename Resources (Eg.: Files Paths Routes).',\n emoji: '🚚',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'mv',\n },\n {\n code: ':airplane:',\n description: 'Provide offline support',\n emoji: '✈️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'offline',\n },\n {\n code: ':adhesive_bandage:',\n description: 'Simple Fix for a Non-Critical Issue',\n emoji: '🩹',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'patch',\n },\n {\n code: ':zap:',\n description: 'Improve Performance',\n emoji: '⚡️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'perf',\n },\n {\n code: ':poop:',\n description: 'Write Bad Code That Needs to Be Improved',\n emoji: '💩',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'poo',\n },\n {\n code: ':fire:',\n description: 'Remove Code or Files',\n emoji: '🔥',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'prune',\n },\n {\n code: ':pushpin:',\n description: 'Pin Dependencies to Specific Versions',\n emoji: '📌',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'pushpin',\n },\n {\n code: ':recycle:',\n description: 'Refactor Code',\n emoji: '♻️',\n emojiLength: 0,\n semver: SEMVER.NULL,\n type: 'refactor',\n },\n {\n code: ':bookmark:',\n description: 'Release / Version Tags',\n emoji: '🔖',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'release',\n },\n {\n code: ':rewind:',\n description: 'Revert Changes',\n emoji: '⏪️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'revert',\n },\n {\n code: ':coffin:',\n description: 'Remove Dead Code',\n emoji: '⚰️',\n emojiLength: 0,\n semver: SEMVER.NULL,\n type: 'rip',\n },\n {\n code: ':passport_control:',\n description: 'Work on Code Related to Authorization Roles and Permissions',\n emoji: '🛂',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'roles',\n },\n {\n code: ':fast_forward:',\n description: 'Create Rollforward Version',\n emoji: '⏩️',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'rollforward',\n },\n {\n code: ':rocket:',\n description: 'Custom Type for CI/CD to Hook into Run Build Override',\n emoji: '🚀️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'run-build',\n },\n {\n code: ':closed_lock_with_key:',\n description: 'Add or Update Secrets',\n emoji: '🔐',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'secrets',\n },\n {\n code: ':lock:',\n description: 'Fix Security Issues',\n emoji: '🔒️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'security',\n },\n {\n code: ':seedling:',\n description: 'Add or Update Seed Files',\n emoji: '🌱',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'seed',\n },\n {\n code: ':mag:',\n description: 'Improve Seo',\n emoji: '🔍️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'seo',\n },\n {\n code: ':camera_flash:',\n description: 'Add or Update Snapshots',\n emoji: '📸',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'snapshot',\n },\n {\n code: ':money_with_wings:',\n description: 'Add Sponsorships or Money Related Infrastructure',\n emoji: '💸',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'sponsor',\n },\n {\n code: ':art:',\n description: 'Improve Structure / Format of the Code',\n emoji: '🎨',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'style',\n },\n {\n code: ':test_tube:',\n description: 'Add a Failing Test',\n emoji: '🧪',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'test-fail',\n },\n {\n code: ':white_check_mark:',\n description: 'Add Update or Pass Tests',\n emoji: '✅',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'test',\n },\n {\n code: ':speech_balloon:',\n description: 'Add or Update Text and Literals',\n emoji: '💬',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'texts',\n },\n {\n code: ':label:',\n description: 'Add or Update Types',\n emoji: '🏷️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'types',\n },\n {\n code: ':pencil2:',\n description: 'Fix Typos',\n emoji: '✏️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'typo',\n },\n {\n code: ':lipstick:',\n description: 'Add or Update the UI and Style Files',\n emoji: '💄',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'ui',\n },\n {\n code: ':arrow_up:',\n description: 'Upgrade Dependencies',\n emoji: '⬆️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'upgrade',\n },\n {\n code: ':children_crossing:',\n description: 'Improve User Experience / Usability',\n emoji: '🚸',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'ux',\n },\n {\n code: ':safety_vest:',\n description: 'Add or update code related to validation',\n emoji: '🦺',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'validation',\n },\n {\n code: ':construction:',\n description: 'Work in Progress',\n emoji: '🚧',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'wip',\n },\n]\n\nexport default types\n","import commitTypes from '~ccommit/data/types'\n\nconst findBy = (str, from, to): string | undefined => {\n const key = commitTypes.findIndex((el) => el[from] === str)\n return commitTypes[key]?.[to]\n}\n\nexport { findBy }\n","/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport process from 'node:process'\n\nimport {\n COMMIT_FORMATS,\n COMMIT_MODES,\n FLAGS,\n LOGS,\n OPTIONS,\n} from '~ccommit/lib/index'\nimport { generateLog, getStagedFiles } from '~ccommit/utils/index'\n\nconst getOptionsForCommand = (command: string, flags: any): any => {\n const commandsWithOptions = [FLAGS.COMMIT, FLAGS.HOOK]\n\n // @ts-ignore\n if (commandsWithOptions.includes(command)) {\n const options = {\n dryrun: flags[FLAGS.DRYRUN],\n emoji: flags[FLAGS.EMOJI],\n // options\n format:\n flags[OPTIONS.FORMAT] === COMMIT_FORMATS.CONVENTIONAL\n ? flags[FLAGS.EMOJI]\n ? COMMIT_FORMATS.CONVENTIONAL\n : COMMIT_FORMATS.CONVENTIONAL_NO_EMOJI\n : COMMIT_FORMATS.GITMOJI,\n message: flags[OPTIONS.MESSAGE],\n mode: command === FLAGS.HOOK ? COMMIT_MODES.HOOK : COMMIT_MODES.CLIENT,\n scope: flags[OPTIONS.SCOPE],\n skip: flags[FLAGS.SKIP],\n title: flags[OPTIONS.TITLE],\n type: flags[OPTIONS.TYPE],\n }\n\n return options\n }\n\n return null\n}\n\n// @todo(lint) complexity: 11\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: migrate\nconst findCommand = (cli: any, options: any): void => {\n const flags = cli.flags\n const commandFlag = Object.keys(flags)\n .map((flag) => flags[flag] && flag)\n .find((flag) => options[flag])\n\n const filesChanged = getStagedFiles()\n\n if (!flags[FLAGS.DRYRUN] && !filesChanged) {\n console.log(generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.STAGED_FILES))\n process.exit(2)\n }\n\n if (flags[FLAGS.COMMIT] && flags[FLAGS.HOOK]) {\n console.log(generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.MODE_CONFLICT))\n process.exit(2)\n }\n\n if (\n flags[OPTIONS.MESSAGE] ||\n flags[OPTIONS.SCOPE] ||\n flags[OPTIONS.TITLE] ||\n flags[OPTIONS.TYPE]\n ) {\n flags[FLAGS.SKIP] = true\n }\n\n if (flags[FLAGS.SKIP]) {\n if (flags[OPTIONS.TITLE] && flags[OPTIONS.TYPE]) {\n flags[FLAGS.SKIP] = true\n } else {\n flags[FLAGS.SKIP] = false\n console.log(\n generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.COMMAND_LINE_WITHOUT_REQUIRED),\n )\n flags[OPTIONS.TITLE] = undefined\n flags[OPTIONS.TYPE] = undefined\n }\n }\n\n const commandOptions = getOptionsForCommand(commandFlag, flags)\n\n // biome-ignore lint/correctness/noVoidTypeReturn: migrate\n return options[commandFlag] ? options[commandFlag](commandOptions) : cli.showHelp()\n}\n\nexport { findCommand }\n","/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport { COMMIT_FORMATS, FORMAT, TYPE } from '~ccommit/lib/index'\n\nconst formatCliEmoji = ({ emoji, emojiLength }) =>\n emojiLength === 0 ? `${emoji} ` : `${emoji} `\n\nconst formatCliType = (type) => type?.padEnd(TYPE.MAX)\n\nconst formatCliTypes = (commitTypes: any) => {\n // console.log(`EMOJI TYPE DESCRIPTION`)\n // console.log(`----- ---- -----------`)\n return commitTypes.map(({ description, emoji, emojiLength, type }) => {\n console.log(\n `${formatCliEmoji({\n emoji,\n emojiLength,\n })} ${formatCliType(type)} ${description}`,\n )\n })\n}\n\nconst formatCommitSubject = (options, answers) => {\n const format = FORMAT[options?.format]\n\n // @note(ccommit) two spaces after emoji\n const emoji = answers?.gitmoji ? `${answers?.gitmoji} ` : ''\n\n let scope = answers?.scope\n ? `(${answers?.scope\n .replace(/ {2}/g, '--')\n .replace(/ /g, '-')\n .toLowerCase()\n .trim()})`\n : ''\n // @note(ccommit) only add space to scope if format is: gitmoji\n scope = scope && options?.format === COMMIT_FORMATS.GITMOJI ? `${scope} ` : scope\n\n /**\n * @todo(ccommit) breaking identification in commit subject\n */\n // const breaking = answers?.breaking\n // ? options?.format === COMMIT_FORMATS.GITMOJI\n // ? `💥 `\n // : '!'\n // : ''\n\n return format\n .replace(/\\{emoji\\}/g, emoji)\n .replace(/\\{scope\\}/g, scope)\n .replace(/\\{breaking\\}/g, '')\n .replace(/\\{title\\}/g, answers?.title)\n .replace(/\\{type\\}/g, answers?.type)\n}\n\nexport { formatCliEmoji, formatCliType, formatCliTypes, formatCommitSubject }\n","import colors from 'ansi-colors'\n\nimport { LOGS } from '~ccommit/lib/index'\n\ntype GenerateLog = (type: string, message: string, replace?: string) => void\n/**\n * @todo(ccommit) this is a bit much, can we reduce?\n */\nconst generateLog: GenerateLog = (type, message, replace) => {\n let msg = replace ? message.replace(/\\{REPLACE\\}/g, replace) : message\n msg = `\\n${msg}\\n`\n\n if (type === LOGS.TYPES.ERROR) {\n return colors.magenta.bold(msg)\n }\n if (type === LOGS.TYPES.INFO) {\n return colors.blue.bold(msg)\n }\n if (type === LOGS.TYPES.WARNING) {\n return colors.yellow.bold(msg)\n }\n return colors.green.bold(msg)\n}\n\nconst generateCount: GenerateLog = (type, message, replace) => {\n const msg = replace ? message.replace(/\\{REPLACE\\}/g, replace) : message\n\n if (type === LOGS.TYPES.ERROR) {\n return colors.red.bold(msg)\n }\n if (type === LOGS.TYPES.INFO) {\n return colors.white.bold(msg)\n }\n if (type === LOGS.TYPES.WARNING) {\n return colors.yellow.bold(msg)\n }\n return colors.green.bold(msg)\n}\n\nexport { generateCount, generateLog }\n","import { LOGS, TITLE } from '~ccommit/lib/index'\nimport { generateCount } from '~ccommit/utils/index'\n\nconst getCharsLeft = (str: string) => {\n const chars = str.length\n const message = chars.toString()\n let logType = LOGS.TYPES.SUCCESS\n\n if (chars < TITLE.MIN || chars > TITLE.MAX) {\n logType = LOGS.TYPES.ERROR\n } else if (chars < TITLE.MIN_SWAG || chars > TITLE.MAX_SWAG) {\n logType = LOGS.TYPES.WARNING\n }\n return generateCount(logType, LOGS.MESSAGES.REPLACE, message)\n}\n\nexport { getCharsLeft }\n","import { execSync } from 'node:child_process'\n\nconst getGitRootDir = () => {\n const devNull = process.platform === 'win32' ? ' nul' : '/dev/null'\n // biome-ignore lint/style/useTemplate: migrate\n const dir = execSync('git rev-parse --show-toplevel 2>' + devNull)\n .toString()\n .trim()\n\n return dir\n}\n\nexport { getGitRootDir }\n","import { execSync } from 'node:child_process'\n\nconst getIssueTracker = () => {\n let branch: any,\n init = ''\n\n // branch = 'ABC-123'\n branch = execSync('git rev-parse --abbrev-ref HEAD')\n branch = branch.toString().trim().split('/')\n const branchType = branch[0]\n const branchName = !branch[1] ? branchType : branch[1]\n\n const it = branchName.split('-')\n const itProject = it[0]\n const itNumber = !it[1] ? itProject : it[1]\n const itTicket = `${itProject}-${itNumber}`\n\n // biome-ignore lint/suspicious/noGlobalIsFinite: migrate\n // biome-ignore lint/suspicious/noGlobalIsNan: migrate\n if (!isNaN(parseFloat(itNumber)) && isFinite(parseFloat(itNumber))) {\n init = itTicket\n }\n return init\n}\n\nexport { getIssueTracker }\n","import { execSync } from 'node:child_process'\n\nconst getStagedFiles = () => {\n const stagedFiles = execSync('git diff --name-only --staged').toString().trim()\n\n return !!stagedFiles\n}\n\nexport { getStagedFiles }\n","/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport colors from 'ansi-colors'\n\nconst printDryRun = (v) => {\n console.log(colors.magenta.bold(`❯ dry-run mode: ${v}\\n`))\n}\n\nexport { printDryRun }\n","/*!\n * reference: https://github.com/carloscuesta/gitmoji-cli\n */\n/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport process from 'node:process'\n\nimport colors from 'ansi-colors'\n\nconst registerHookInterruptionHandler = () => {\n // Allow to interrupt the hook without cancelling the commit\n process.on('SIGINT', () => {\n console.log(colors.magenta.bold('❯ [ccommit] interrupted'))\n process.exit(0)\n })\n}\n\nexport { registerHookInterruptionHandler }\n","import colors from 'ansi-colors'\n\nimport commitTypes from '~ccommit/data/types'\nimport { SCOPE, TITLE } from '~ccommit/lib/index'\nimport {\n formatCliEmoji,\n formatCliType,\n getCharsLeft,\n getIssueTracker,\n} from '~ccommit/utils/index'\n\nconst getTypes = () =>\n commitTypes.map(({ description, emoji, emojiLength, type }) => ({\n description,\n emoji,\n emojiLength,\n type,\n }))\n\nconst characterCount = (input, max) => {\n const count = getCharsLeft(input)\n const countMessage = `Character Count (${count}/${max})`\n return `${colors.dim.cyan(`›`)} ${colors.dim.bold(countMessage)}`\n}\n\nconst prefixState = (state) => {\n return state.submitted\n ? state.cancelled\n ? colors.magenta('✖')\n : colors.green('✔')\n : colors.cyan('?')\n}\n\n/**\n * @note(enquirier) 3.x will \"fix\" skip passing answers for now\n * you can access \"this\" state by __not__ using arrow functions\n */\nconst questions = [\n {\n default: '(y/N)',\n format(input) {\n const yn = input ? 'yes' : 'no'\n // @ts-ignore\n return this.state.submitted ? colors.green(yn) : colors.dim(yn)\n },\n initial: false,\n message: 'Is there a breaking change?',\n name: 'breaking',\n prefix() {\n // @ts-ignore\n return prefixState(this.state)\n },\n styles: { primary: colors.white },\n type: 'confirm',\n },\n {\n footer() {\n // @ts-ignore\n return characterCount(this.state.input, TITLE.MAX)\n },\n message: 'Please share breaking change info',\n name: 'messageBreaking',\n result(value) {\n return value ? `BREAKING CHANGE: ${value.trim()}` : ''\n },\n skip() {\n // @ts-ignore\n return !this.state.answers.breaking\n },\n type: 'input',\n validate(input) {\n const chars = input?.length || 0\n // @ts-ignore\n if (!this.state.answers.breaking) {\n return true\n } else if (chars < 15) {\n return `Must have at least 15 characters`\n } else if (chars > TITLE.MAX) {\n return `Cannot exceed ${TITLE.MAX} characters`\n } else {\n return true\n }\n },\n },\n {\n choices: getTypes().map(({ description, emoji, emojiLength, type }) => {\n const value = emoji\n const name = ` ${formatCliEmoji({\n emoji,\n emojiLength,\n })} ${formatCliType(type)} ${description}`\n return {\n name,\n value,\n }\n }),\n footer() {\n return `${colors.dim.cyan(`›`)} ${colors.dim.bold(\n `scroll up and down to reveal more ↕`,\n )}`\n },\n highlight(str) {\n return colors.cyanBright(str)\n },\n limit: 18,\n message: 'Please choose a commit type',\n name: 'gitmoji',\n type: 'autocomplete',\n },\n {\n footer() {\n // @ts-ignore\n return characterCount(this.state.input, SCOPE.MAX)\n },\n format() {\n // @ts-ignore\n return this.state.submitted ? colors.green(this.value) : this.value\n },\n message: 'Please share the scope (if any)',\n name: 'scope',\n type: 'input',\n validate(input) {\n const chars = input.length\n if (chars === 0) {\n return true\n } else if (chars < SCOPE.MIN) {\n return `Must have at least ${SCOPE.MIN} characters`\n } else if (chars > SCOPE.MAX) {\n return `Cannot exceed ${SCOPE.MAX} characters`\n } else {\n return true\n }\n },\n },\n {\n footer() {\n // @ts-ignore\n return characterCount(this.state.input, TITLE.MAX)\n },\n hint() {\n // @ts-ignore\n return this.state.initial ? `… tab to use initial value` : ''\n },\n initial: getIssueTracker() ? `${getIssueTracker()} ` : '',\n message: 'Please enter the commit title',\n name: 'title',\n type: 'input',\n validate(input) {\n const chars = input.length\n if (chars < TITLE.MIN) {\n return `Must have at least ${TITLE.MIN} characters`\n } else if (chars > TITLE.MAX) {\n return `Cannot exceed ${TITLE.MAX} characters`\n } else {\n return true\n }\n },\n },\n {\n footer() {\n return `${colors.dim.cyan(`›`)} ${colors.dim(\n 'Return twice to submit/skip: ⮑ ⮑',\n )}`\n },\n message: 'Please share a more detailed commit message (if applicable)',\n multiline: true,\n name: 'message',\n result(input) {\n return input === '\\n' ? '' : input\n },\n type: 'input',\n },\n]\n\nexport default questions\n","/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport process from 'node:process'\n\nimport { execa } from 'execa'\n\nimport { LOGS } from '~ccommit/lib/index'\nimport { generateLog, printDryRun } from '~ccommit/utils/index'\n\nconst withClient = async (answers, options) => {\n try {\n const title = answers?.subject\n const message = answers?.message\n const messageBreaking = answers?.messageBreaking\n\n const commitArray = ['commit', '-m', title]\n if (message) commitArray.push('-m', message)\n if (messageBreaking) commitArray.push('-m', messageBreaking)\n\n if (options?.dryrun) {\n printDryRun(['git', ...commitArray].join(' '))\n } else {\n await execa('git', commitArray, {\n buffer: false,\n // env: { HUSKY: '0' },\n stdio: 'inherit',\n })\n }\n } catch (error: any) {\n console.error(\n generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.COMMIT_FAIL, error.escapedCommand),\n )\n process.exit(1)\n }\n}\n\nexport default withClient\n","/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport fs from 'node:fs'\nimport { join } from 'node:path'\nimport process from 'node:process'\n\nimport { getGitRootDir, printDryRun } from '~ccommit/utils/index'\n\nconst commitMsgFile = join(getGitRootDir(), '.git', 'COMMIT_EDITMSG')\n\nconst withHook = (answers, options) => {\n try {\n let commitMessage = answers?.subject\n if (answers?.message && answers?.message !== '\\n') {\n commitMessage += `\\n\\n${answers.message}`\n }\n if (answers?.messageBreaking && answers?.messageBreaking !== '\\n') {\n commitMessage += `\\n\\n${answers.messageBreaking}`\n }\n\n if (options?.dryrun) {\n printDryRun(commitMessage)\n } else {\n fs.writeFileSync(commitMsgFile, commitMessage)\n }\n } catch (error) {\n console.error(error)\n process.exit(1)\n } finally {\n process.exit(0)\n }\n}\n\nexport default withHook\n","/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport process from 'node:process'\n\nimport enquirer from 'enquirer'\n\nimport { COMMIT_MODES, FIND_BY, LOGS } from '~ccommit/lib/index'\nimport {\n cancelIfNeeded,\n findBy,\n formatCommitSubject,\n generateLog,\n registerHookInterruptionHandler,\n} from '~ccommit/utils/index'\n\nimport questions from './questions'\nimport withClient from './withClient'\nimport withHook from './withHook'\n\nconst { prompt } = enquirer\n\n// biome-ignore lint/style/useConsistentTypeDefinitions: migrate\nexport type CommitOptions = {\n message?: string\n mode: typeof COMMIT_MODES.CLIENT\n // mode: typeof COMMIT_MODES.CLIENT | typeof COMMIT_MODES.HOOK\n scope?: string\n skip: boolean\n title?: string\n}\n\n/**\n * @todo(ccommit) this is a hacky way to bypass the generator :X\n */\nconst promptAndCommit = async (options: CommitOptions) => {\n let data: any = {}\n\n if (options.skip) {\n data = options\n // @note(ccommit) very type is an actual type\n data.gitmoji = findBy(data.type, FIND_BY.TYPE, FIND_BY.EMOJI)\n if (!data.gitmoji) {\n console.log(\n generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.TYPE_INCORRECT, data.type),\n )\n process.exit(2)\n }\n } else {\n // @ts-ignore\n await prompt(questions)\n .then((answers: any) => {\n answers.type = findBy(answers.gitmoji, FIND_BY.EMOJI, FIND_BY.TYPE)\n return answers\n })\n .then((answers) => {\n data = answers\n })\n .catch(console.error)\n }\n\n // biome-ignore lint/complexity/noExtraBooleanCast: migrate\n data.subject = !!data ? formatCommitSubject(options, data) : ''\n\n if (options.mode === COMMIT_MODES.HOOK) {\n return withHook(data, options)\n } else {\n return withClient(data, options)\n }\n}\nconst commit = (options: CommitOptions) => {\n if (options.mode === COMMIT_MODES.HOOK) {\n registerHookInterruptionHandler()\n return cancelIfNeeded().then(() => promptAndCommit(options))\n }\n return promptAndCommit(options)\n}\n\nexport default commit\n","import commit from './commit'\n\nexport default commit\n","import commitTypes from '~ccommit/data/types'\nimport { formatCliTypes } from '~ccommit/utils/index'\n\nconst list = () => formatCliTypes(commitTypes)\n\nexport default list\n","import list from './list'\n\nexport default list\n","#!/usr/bin/env node\n\n/*!\n * For license information please see index.js.LICENSE.txt\n */\nimport meow from 'meow'\n\nimport { commit, list } from '~ccommit/commands/index'\nimport { COMMANDS, COMMIT_FORMATS, FLAGS, OPTIONS } from '~ccommit/lib/index'\nimport { findCommand } from '~ccommit/utils/index'\n\nconst cli = meow(\n `\n Usage\n $ ccommit -c\n\n Flags\n --${FLAGS.BREAKING}, -b 💥 Breaking Change\n --${FLAGS.COMMIT}, -c 💽 Mode: Client\n --${FLAGS.DRYRUN}, -n 🎽 Mode: Dry Run\n --${FLAGS.EMOJI}, -e 😜 Emoji (default)\n --${FLAGS.HOOK}, -u 🪝 Mode: Hook\n --${FLAGS.LIST}, -l 📖 List all types\n --${FLAGS.VERSION}, -v 📦 Print installed version\n\n Options\n --${OPTIONS.FORMAT} 😜 Commit Format: conventional|gitmoji (default)\n --${OPTIONS.MESSAGE} 📝 Commit Message\n --${OPTIONS.SCOPE} 🔬 Commit Scope\n --${OPTIONS.TITLE} 📓 Commit Title\n --${OPTIONS.TYPE} ✨ Commit Type\n\n Notes\n - Pass any non-format options the following will be required: --title, --type\n - If you do not pass any options the Conventional Commit Generator prompt will run\n - Branch Name detection is enabled to pre-populate Issue Tracker information in prompt\n`,\n {\n flags: {\n // Flags\n [FLAGS.BREAKING]: { default: false, shortFlag: 'b', type: 'boolean' },\n [FLAGS.COMMIT]: { shortFlag: 'c', type: 'boolean' },\n [FLAGS.DRYRUN]: { shortFlag: 'n', type: 'boolean' },\n [FLAGS.EMOJI]: { default: true, shortFlag: 'e', type: 'boolean' },\n [FLAGS.HELP]: { shortFlag: 'h', type: 'boolean' },\n [FLAGS.HOOK]: { shortFlag: 'u', type: 'boolean' },\n [FLAGS.LIST]: { shortFlag: 'l', type: 'boolean' },\n [FLAGS.SKIP]: { default: false, type: 'boolean' },\n [FLAGS.VERSION]: { shortFlag: 'v', type: 'boolean' },\n // Options\n [OPTIONS.FORMAT]: { default: COMMIT_FORMATS.GITMOJI, type: 'string' },\n [OPTIONS.MESSAGE]: { type: 'string' },\n [OPTIONS.SCOPE]: { type: 'string' },\n [OPTIONS.TITLE]: { type: 'string' },\n [OPTIONS.TYPE]: { type: 'string' },\n },\n importMeta: import.meta,\n },\n)\n\nconst commands = {\n [COMMANDS.COMMIT]: (options: any) => commit(options),\n [COMMANDS.HOOK]: (options: any) => commit(options),\n [COMMANDS.LIST]: () => list(),\n}\n\nfindCommand(cli, commands)\n"],"mappings":";uOAAA,MAAM,EAAW,CACf,OAAQ,SACR,KAAM,OACN,KAAM,OACP,CACK,EAAiB,CACrB,aAAc,eACd,sBAAuB,wBACvB,QAAS,UACV,CAEK,EAAe,CACnB,OAAQ,SACR,KAAM,OACP,CAEK,EAAU,CACd,MAAO,QACP,KAAM,OACP,CAEK,EAAQ,OAAO,OAAO,CAC1B,SAAU,WACV,OAAQ,SACR,OAAQ,SACR,MAAO,QACP,KAAM,OACN,KAAM,OACN,KAAM,OACN,KAAM,OACN,QAAS,UACV,CAAC,CAEI,EAAS,EACZ,EAAe,cAAe,2CAC9B,EAAe,uBAAwB,oCACvC,EAAe,SAAU,kCAC3B,CAEK,EAAO,CACX,SAAU,CACR,8BACE,uDACF,YAAa;;;;;;;;MAMb,sBAAuB,sDACvB,cAAe,8DACf,QAAS,YACT,aACE,0EACF,eAAgB,wDACjB,CACD,MAAO,CACL,MAAO,QACP,KAAM,OACN,QAAS,UACT,QAAS,UACV,CACF,CAEK,EAAU,OAAO,OAAO,CAC5B,OAAQ,SACR,QAAS,UACT,MAAO,QACP,MAAO,QACP,KAAM,OACP,CAAC,CAEI,EAAQ,CACZ,IAAK,GACL,IAAK,EACN,CAEK,EAAS,CACb,MAAO,QACP,MAAO,QACP,KAAM,OACN,MAAO,QACR,CAEK,EAAQ,CACZ,IAAK,GACL,SAAU,GACV,IAAK,EACL,SAAU,GACX,CAEK,EAAO,CACX,IAAK,GACN,CCrFK,MACJ,EAAM,MAAO,CAAC,YAAa,qBAAqB,CAAC,CAAC,MAC/C,CAAE,OAAQ,KAAmB,EAK1B,EAAG,WAAW,EAAe,gBAAgB,EAE7C,EAAG,WAAW,EAAe,gBAAgB,GAE7C,EAAQ,KAAK,EAAE,EAGpB,CAIG,MACJ,IAAI,QAAe,GAAY,CAM7B,IAAM,EAA8BA,EAAQ,KAAA,GAE1C,IACC,EAAoB,WAAW,SAAS,EACvC,EAAoB,WAAW,QAAQ,GAEzC,EAAQ,KAAK,EAAE,CAEjB,GAAS,EACT,CAGE,MAAsC,GAAkB,CAAC,KAAK,EAAiB,CCzC/E,EAAQ,CACZ,CACE,KAAM,eACN,YAAa,wBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACP,CACD,CACE,KAAM,6BACN,YAAa,wCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,YACP,CACD,CACE,KAAM,UACN,YAAa,2CACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,YACP,CACD,CACE,KAAM,0BACN,YAAa,6BACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACP,CACD,CACE,KAAM,UACN,YAAa,uBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACP,CACD,CACE,KAAM,UACN,YAAa,0BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,YACP,CACD,CACE,KAAM,UACN,YAAa,uBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACP,CACD,CACE,KAAM,SACN,YAAa,6BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,WACP,CACD,CACE,KAAM,WACN,YAAa,oCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,QACP,CACD,CACE,KAAM,aACN,YAAa,eACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACP,CACD,CACE,KAAM,kBACN,YAAa,8CACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,QACP,CACD,CACE,KAAM,wBACN,YAAa,gCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,KACP,CACD,CACE,KAAM,gBACN,YAAa,6CACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACP,CACD,CACE,KAAM,UACN,YAAa,0CACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACP,CACD,CACE,KAAM,WACN,YAAa,8DACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,cACP,CACD,CACE,KAAM,WACN,YAAa,oCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACP,CACD,CACE,KAAM,wBACN,YAAa,+BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,cACP,CACD,CACE,KAAM,iBACN,YAAa,8BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACP,CACD,CACE,KAAM,kBACN,YAAa,mCACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,KACP,CACD,CACE,KAAM,oBACN,YAAa,mBACb,MAAO,IACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,UACP,CACD,CACE,KAAM,qBACN,YAAa,sBACb,MAAO,IACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACP,CACD,CACE,KAAM,YACN,YAAa,2CACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACP,CACD,CACE,KAAM,WACN,YAAa,eACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACP,CACD,CACE,KAAM,SACN,YAAa,wCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,YACP,CACD,CACE,KAAM,SACN,YAAa,8BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACP,CACD,CACE,KAAM,eACN,YAAa,yBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,YACP,CACD,CACE,KAAM,iBACN,YAAa,+BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,KACP,CACD,CACE,KAAM,QACN,YAAa,8BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,MACP,CACD,CACE,KAAM,YACN,YAAa,sBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,aACP,CACD,CACE,KAAM,aACN,YAAa,yBACb,MAAO,IACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACP,CACD,CACE,KAAM,QACN,YAAa,YACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,MACP,CACD,CACE,KAAM,gBACN,YAAa,eACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACP,CACD,CACE,KAAM,4BACN,YAAa,qCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACP,CACD,CACE,KAAM,gBACN,YAAa,4BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,cACP,CACD,CACE,KAAM,cACN,YAAa,kBACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACP,CACD,CACE,KAAM,yBACN,YAAa,wCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACP,CACD,CACE,KAAM,gBACN,YAAa,kCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACP,CACD,CACE,KAAM,WACN,YAAa,iCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACP,CACD,CACE,KAAM,SACN,YAAa,kBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACP,CACD,CACE,KAAM,WACN,YAAa,4BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACP,CACD,CACE,KAAM,mBACN,YAAa,wBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,UACP,CACD,CACE,KAAM,mBACN,YAAa,iCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACP,CACD,CACE,KAAM,eACN,YAAa,qBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,UACP,CACD,CACE,KAAM,SACN,YAAa,cACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACP,CACD,CACE,KAAM,YACN,YAAa,+BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACP,CACD,CACE,KAAM,8BACN,YAAa,iBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,QACP,CACD,CACE,KAAM,eACN,YAAa,cACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACP,CACD,CACE,KAAM,UACN,YAAa,sDACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,KACP,CACD,CACE,KAAM,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"}
1
+ {"version":3,"file":"index.mjs","names":["process","commitTypes","commitTypes","commitTypes","commit","list"],"sources":["../src/lib/index.ts","../src/utils/cancelIf.ts","../src/data/types.ts","../src/utils/findBy.ts","../src/utils/findCommand.ts","../src/utils/format.ts","../src/utils/generateLog.ts","../src/utils/getCharsLeft.ts","../src/utils/getGitRootDir.ts","../src/utils/getIssueTracker.ts","../src/utils/getStagedFiles.ts","../src/utils/printDryRun.ts","../src/utils/registerHookInterruptionHandler.ts","../src/commands/commit/questions.ts","../src/commands/commit/withClient.ts","../src/commands/commit/withHook.ts","../src/commands/commit/commit.ts","../src/commands/commit/index.ts","../src/commands/list/list.ts","../src/commands/list/index.ts","../src/index.ts"],"sourcesContent":["const COMMANDS = {\n COMMIT: 'commit',\n HOOK: 'hook',\n LIST: 'list',\n}\nconst COMMIT_FORMATS = {\n CONVENTIONAL: 'conventional',\n CONVENTIONAL_NO_EMOJI: 'conventional-no-emoji',\n GITMOJI: 'gitmoji',\n}\n\nconst COMMIT_MODES = {\n CLIENT: 'client',\n HOOK: 'hook',\n}\n\nconst FIND_BY = {\n EMOJI: 'emoji',\n TYPE: 'type',\n}\n\nconst FLAGS = Object.freeze({\n BREAKING: 'breaking',\n COMMIT: 'commit',\n DRYRUN: 'dryrun',\n EMOJI: 'emoji',\n HELP: 'help',\n HOOK: 'hook',\n LIST: 'list',\n SKIP: 'skip',\n VERSION: 'version',\n})\n\nconst FORMAT = {\n [COMMIT_FORMATS.CONVENTIONAL]: '{type}{scope}{breaking}: {emoji}{title}',\n [COMMIT_FORMATS.CONVENTIONAL_NO_EMOJI]: '{type}{scope}{breaking}: {title}',\n [COMMIT_FORMATS.GITMOJI]: '{emoji}{breaking}{scope}{title}',\n}\n\nconst LOGS = {\n MESSAGES: {\n COMMAND_LINE_WITHOUT_REQUIRED:\n '❯ Command line option requires both: --title, --type',\n COMMIT_FAIL: `❯ \\n\n ❯ Oops! An error occurred. There is likely additional logging output above.\\n\n ❯ You can run the same commit with this command:\\n\n ❯ \\t\n {REPLACE}\n `,\n GENERATOR_TAKING_OVER: '❯ Generator will take it from here (CTRL+C to quit)',\n MODE_CONFLICT: '❯ Please choose one or the other: --commit, -c | --hook, -u',\n REPLACE: '{REPLACE}',\n STAGED_FILES:\n '❯ There are no staged files for git. Did you mean to do a dry-run (-n)?',\n TYPE_INCORRECT: '❯ There is no gitmoji/type associated with: {REPLACE}',\n },\n TYPES: {\n ERROR: 'error',\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n },\n}\n\nconst OPTIONS = Object.freeze({\n FORMAT: 'format',\n MESSAGE: 'message',\n SCOPE: 'scope',\n TITLE: 'title',\n TYPE: 'type',\n})\n\nconst SCOPE = {\n MAX: 12,\n MIN: 3,\n}\n\nconst SEMVER = {\n MAJOR: 'major',\n MINOR: 'minor',\n NULL: 'null',\n PATCH: 'patch',\n}\n\nconst TITLE = {\n MAX: 48,\n MAX_SWAG: 40,\n MIN: 3,\n MIN_SWAG: 15,\n}\n\nconst TYPE = {\n MAX: 15,\n}\n\nexport {\n COMMANDS,\n COMMIT_FORMATS,\n COMMIT_MODES,\n FIND_BY,\n FLAGS,\n FORMAT,\n LOGS,\n OPTIONS,\n SCOPE,\n SEMVER,\n TITLE,\n TYPE,\n}\n","/*!\n * reference: https://github.com/carloscuesta/gitmoji-cli\n */\nimport fs from 'node:fs'\nimport process from 'node:process'\n\nimport { execa } from 'execa'\n\nconst cancelIfRebasing = (): Promise<void> =>\n execa('git', ['rev-parse', '--absolute-git-dir']).then(\n ({ stdout: gitDirectory }) => {\n // see https://stackoverflow.com/questions/3921409/how-to-know-if-there-is-a-git-rebase-in-progress\n // to understand how a rebase is detected\n if (\n // biome-ignore lint/style/useTemplate: migrate\n fs.existsSync(gitDirectory + '/rebase-merge') ||\n // biome-ignore lint/style/useTemplate: migrate\n fs.existsSync(gitDirectory + '/rebase-apply')\n ) {\n process.exit(0)\n }\n },\n )\n\nconst COMMIT_MESSAGE_SOURCE = 4\n\nconst cancelIfAmending = (): Promise<void> =>\n new Promise<void>((resolve) => {\n /*\n from https://git-scm.com/docs/githooks#_prepare_commit_msg\n the commit message source is passed as second argument and corresponding 4 for ccommit\n `gitmoji --hook $1 $2`\n */\n const commitMessageSource: string = process.argv[COMMIT_MESSAGE_SOURCE]\n if (\n commitMessageSource &&\n (commitMessageSource.startsWith('commit') ||\n commitMessageSource.startsWith('merge'))\n ) {\n process.exit(0)\n }\n resolve()\n })\n\n// I avoid Promise.all to avoid race condition in future cancel callbacks\nconst cancelIfNeeded = (): Promise<void> => cancelIfAmending().then(cancelIfRebasing)\n\nexport { COMMIT_MESSAGE_SOURCE, cancelIfAmending, cancelIfNeeded, cancelIfRebasing }\n","// @todo(ccommit) cache + generation from: @jeromefitz/conventional-gitmoji\nimport { SEMVER } from '~ccommit/lib/index'\n\n// @hack(ccommit) emojiLength is to help with formatting until can do it programmatically\nconst types = [\n {\n code: ':wheelchair:',\n description: 'Improve Accessibility',\n emoji: '♿️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'access',\n },\n {\n code: ':chart_with_upwards_trend:',\n description: 'Add or Update Analytics or Track Code',\n emoji: '📈',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'analytics',\n },\n {\n code: ':dizzy:',\n description: 'Add or Update Animations and Transitions',\n emoji: '💫',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'animation',\n },\n {\n code: ':building_construction:',\n description: 'Make Architectural Changes',\n emoji: '🏗️',\n emojiLength: 0,\n semver: SEMVER.NULL,\n type: 'arch',\n },\n {\n code: ':bento:',\n description: 'Add or Update Assets',\n emoji: '🍱',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'assets',\n },\n {\n code: ':t-rex:',\n description: 'Backwards Compatibility',\n emoji: '🦖',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'backwards',\n },\n {\n code: ':beers:',\n description: 'Write Code Drunkenly',\n emoji: '🍻',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'beer',\n },\n {\n code: ':boom:',\n description: 'Introduce Breaking Changes',\n emoji: '💥',\n emojiLength: 1,\n semver: SEMVER.MAJOR,\n type: 'breaking',\n },\n {\n code: ':hammer:',\n description: 'Add or Update Development Scripts',\n emoji: '🔨',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'build',\n },\n {\n code: ':goal_net:',\n description: 'Catch Errors',\n emoji: '🥅',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'catch',\n },\n {\n code: ':computer_disk:',\n description: 'Changes That Don’t Modify Src or Test Files',\n emoji: '💽️',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'chore',\n },\n {\n code: ':construction_worker:',\n description: 'Add or Update CI Build System',\n emoji: '👷',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'ci',\n },\n {\n code: ':wastebasket:',\n description: 'Deprecate Code That Needs to Be Cleaned Up',\n emoji: '🗑️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'clean',\n },\n {\n code: ':alien:',\n description: 'Update Code Due to External API Changes',\n emoji: '👽️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'compat',\n },\n {\n code: ':thread:',\n description: 'Add or Update Code Related to Multithreading or Concurrency',\n emoji: '🧵',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'concurrency',\n },\n {\n code: ':wrench:',\n description: 'Add or Update Configuration Files',\n emoji: '🔧',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'config',\n },\n {\n code: ':busts_in_silhouette:',\n description: 'Add or Update Contributor(s)',\n emoji: '👥',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'contrib-add',\n },\n {\n code: ':monocle_face:',\n description: 'Data Exploration/inspection',\n emoji: '🧐',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'data',\n },\n {\n code: ':card_file_box:',\n description: 'Perform Database Related Changes',\n emoji: '🗃️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'db',\n },\n {\n code: ':heavy_plus_sign:',\n description: 'Add a Dependency',\n emoji: '➕',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'dep-add',\n },\n {\n code: ':heavy_minus_sign:',\n description: 'Remove a Dependency',\n emoji: '➖',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'dep-rm',\n },\n {\n code: ':package:',\n description: 'Add or Update Compiled Files or Packages',\n emoji: '📦️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'dep-up',\n },\n {\n code: ':rocket:',\n description: 'Deploy Stuff',\n emoji: '🚀',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'deploy',\n },\n {\n code: ':bulb:',\n description: 'Add or Update Comments in Source Code',\n emoji: '💡',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'docs-code',\n },\n {\n code: ':memo:',\n description: 'Add or Update Documentation',\n emoji: '📝',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'docs',\n },\n {\n code: ':arrow_down:',\n description: 'Downgrade Dependencies',\n emoji: '⬇️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'downgrade',\n },\n {\n code: ':technologist:',\n description: 'Improve Developer Experience',\n emoji: '💻',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'dx',\n },\n {\n code: ':egg:',\n description: 'Add or Update an Easter Egg',\n emoji: '🥚',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'egg',\n },\n {\n code: ':alembic:',\n description: 'Perform Experiments',\n emoji: '⚗️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'experiment',\n },\n {\n code: ':sparkles:',\n description: 'Introduce New Features',\n emoji: '✨',\n emojiLength: 1,\n semver: SEMVER.MINOR,\n type: 'feat',\n },\n {\n code: ':bug:',\n description: 'Fix a Bug',\n emoji: '🐛',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'fix',\n },\n {\n code: ':green_heart:',\n description: 'Fix CI Build',\n emoji: '💚',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'fix-ci',\n },\n {\n code: ':triangular_flag_on_post:',\n description: 'Add Update or Remove Feature Flags',\n emoji: '🚩',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'flags',\n },\n {\n code: ':stethoscope:',\n description: 'Add or Update Healthcheck',\n emoji: '🩺',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'healthcheck',\n },\n {\n code: ':ambulance:',\n description: 'Critical Hotfix',\n emoji: '🚑️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'hotfix',\n },\n {\n code: ':globe_with_meridians:',\n description: 'Internationalization and Localization',\n emoji: '🌐',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'i18n',\n },\n {\n code: ':see_no_evil:',\n description: 'Add or Update a Gitignore File.',\n emoji: '🙈',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'ignore',\n },\n {\n code: ':bricks:',\n description: 'Infrastructure Related Changes',\n emoji: '🧱',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'inf',\n },\n {\n code: ':tada:',\n description: 'Begin a Project',\n emoji: '🎉',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'init',\n },\n {\n code: ':iphone:',\n description: 'Work on Responsive Design',\n emoji: '📱',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'iphone',\n },\n {\n code: ':page_facing_up:',\n description: 'Add or Update License',\n emoji: '📄',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'license',\n },\n {\n code: ':rotating_light:',\n description: 'Fix Compiler / Linter Warnings',\n emoji: '🚨',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'lint',\n },\n {\n code: ':loud_sound:',\n description: 'Add or Update Logs',\n emoji: '🔊',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'log-add',\n },\n {\n code: ':mute:',\n description: 'Remove Logs',\n emoji: '🔇',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'log-rm',\n },\n {\n code: ':necktie:',\n description: 'Add or Update Business Logic',\n emoji: '👔',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'logic',\n },\n {\n code: ':twisted_rightwards_arrows:',\n description: 'Merge Branches',\n emoji: '🔀',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'merge',\n },\n {\n code: ':clown_face:',\n description: 'Mock Things',\n emoji: '🤡',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'mock',\n },\n {\n code: ':truck:',\n description: 'Move or Rename Resources (Eg.: Files Paths Routes).',\n emoji: '🚚',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'mv',\n },\n {\n code: ':airplane:',\n description: 'Provide offline support',\n emoji: '✈️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'offline',\n },\n {\n code: ':adhesive_bandage:',\n description: 'Simple Fix for a Non-Critical Issue',\n emoji: '🩹',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'patch',\n },\n {\n code: ':zap:',\n description: 'Improve Performance',\n emoji: '⚡️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'perf',\n },\n {\n code: ':poop:',\n description: 'Write Bad Code That Needs to Be Improved',\n emoji: '💩',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'poo',\n },\n {\n code: ':fire:',\n description: 'Remove Code or Files',\n emoji: '🔥',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'prune',\n },\n {\n code: ':pushpin:',\n description: 'Pin Dependencies to Specific Versions',\n emoji: '📌',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'pushpin',\n },\n {\n code: ':recycle:',\n description: 'Refactor Code',\n emoji: '♻️',\n emojiLength: 0,\n semver: SEMVER.NULL,\n type: 'refactor',\n },\n {\n code: ':bookmark:',\n description: 'Release / Version Tags',\n emoji: '🔖',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'release',\n },\n {\n code: ':rewind:',\n description: 'Revert Changes',\n emoji: '⏪️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'revert',\n },\n {\n code: ':coffin:',\n description: 'Remove Dead Code',\n emoji: '⚰️',\n emojiLength: 0,\n semver: SEMVER.NULL,\n type: 'rip',\n },\n {\n code: ':passport_control:',\n description: 'Work on Code Related to Authorization Roles and Permissions',\n emoji: '🛂',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'roles',\n },\n {\n code: ':fast_forward:',\n description: 'Create Rollforward Version',\n emoji: '⏩️',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'rollforward',\n },\n {\n code: ':rocket:',\n description: 'Custom Type for CI/CD to Hook into Run Build Override',\n emoji: '🚀️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'run-build',\n },\n {\n code: ':closed_lock_with_key:',\n description: 'Add or Update Secrets',\n emoji: '🔐',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'secrets',\n },\n {\n code: ':lock:',\n description: 'Fix Security Issues',\n emoji: '🔒️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'security',\n },\n {\n code: ':seedling:',\n description: 'Add or Update Seed Files',\n emoji: '🌱',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'seed',\n },\n {\n code: ':mag:',\n description: 'Improve Seo',\n emoji: '🔍️',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'seo',\n },\n {\n code: ':camera_flash:',\n description: 'Add or Update Snapshots',\n emoji: '📸',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'snapshot',\n },\n {\n code: ':money_with_wings:',\n description: 'Add Sponsorships or Money Related Infrastructure',\n emoji: '💸',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'sponsor',\n },\n {\n code: ':art:',\n description: 'Improve Structure / Format of the Code',\n emoji: '🎨',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'style',\n },\n {\n code: ':test_tube:',\n description: 'Add a Failing Test',\n emoji: '🧪',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'test-fail',\n },\n {\n code: ':white_check_mark:',\n description: 'Add Update or Pass Tests',\n emoji: '✅',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'test',\n },\n {\n code: ':speech_balloon:',\n description: 'Add or Update Text and Literals',\n emoji: '💬',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'texts',\n },\n {\n code: ':label:',\n description: 'Add or Update Types',\n emoji: '🏷️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'types',\n },\n {\n code: ':pencil2:',\n description: 'Fix Typos',\n emoji: '✏️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'typo',\n },\n {\n code: ':lipstick:',\n description: 'Add or Update the UI and Style Files',\n emoji: '💄',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'ui',\n },\n {\n code: ':arrow_up:',\n description: 'Upgrade Dependencies',\n emoji: '⬆️',\n emojiLength: 0,\n semver: SEMVER.PATCH,\n type: 'upgrade',\n },\n {\n code: ':children_crossing:',\n description: 'Improve User Experience / Usability',\n emoji: '🚸',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'ux',\n },\n {\n code: ':safety_vest:',\n description: 'Add or update code related to validation',\n emoji: '🦺',\n emojiLength: 1,\n semver: SEMVER.PATCH,\n type: 'validation',\n },\n {\n code: ':construction:',\n description: 'Work in Progress',\n emoji: '🚧',\n emojiLength: 1,\n semver: SEMVER.NULL,\n type: 'wip',\n },\n]\n\nexport default types\n","import commitTypes from '~ccommit/data/types'\n\nconst findBy = (str, from, to): string | undefined => {\n const key = commitTypes.findIndex((el) => el[from] === str)\n return commitTypes[key]?.[to]\n}\n\nexport { findBy }\n","/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport process from 'node:process'\n\nimport {\n COMMIT_FORMATS,\n COMMIT_MODES,\n FLAGS,\n LOGS,\n OPTIONS,\n} from '~ccommit/lib/index'\nimport { generateLog, getStagedFiles } from '~ccommit/utils/index'\n\nconst getOptionsForCommand = (command: string, flags: any): any => {\n const commandsWithOptions = [FLAGS.COMMIT, FLAGS.HOOK]\n\n // @ts-ignore\n if (commandsWithOptions.includes(command)) {\n const options = {\n dryrun: flags[FLAGS.DRYRUN],\n emoji: flags[FLAGS.EMOJI],\n // options\n format:\n flags[OPTIONS.FORMAT] === COMMIT_FORMATS.CONVENTIONAL\n ? flags[FLAGS.EMOJI]\n ? COMMIT_FORMATS.CONVENTIONAL\n : COMMIT_FORMATS.CONVENTIONAL_NO_EMOJI\n : COMMIT_FORMATS.GITMOJI,\n message: flags[OPTIONS.MESSAGE],\n mode: command === FLAGS.HOOK ? COMMIT_MODES.HOOK : COMMIT_MODES.CLIENT,\n scope: flags[OPTIONS.SCOPE],\n skip: flags[FLAGS.SKIP],\n title: flags[OPTIONS.TITLE],\n type: flags[OPTIONS.TYPE],\n }\n\n return options\n }\n\n return null\n}\n\n// @todo(lint) complexity: 11\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: migrate\nconst findCommand = (cli: any, options: any): void => {\n const flags = cli.flags\n const commandFlag = Object.keys(flags)\n .map((flag) => flags[flag] && flag)\n .find((flag) => options[flag])\n\n const filesChanged = getStagedFiles()\n\n if (!flags[FLAGS.DRYRUN] && !filesChanged) {\n console.log(generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.STAGED_FILES))\n process.exit(2)\n }\n\n if (flags[FLAGS.COMMIT] && flags[FLAGS.HOOK]) {\n console.log(generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.MODE_CONFLICT))\n process.exit(2)\n }\n\n if (\n flags[OPTIONS.MESSAGE] ||\n flags[OPTIONS.SCOPE] ||\n flags[OPTIONS.TITLE] ||\n flags[OPTIONS.TYPE]\n ) {\n flags[FLAGS.SKIP] = true\n }\n\n if (flags[FLAGS.SKIP]) {\n if (flags[OPTIONS.TITLE] && flags[OPTIONS.TYPE]) {\n flags[FLAGS.SKIP] = true\n } else {\n flags[FLAGS.SKIP] = false\n console.log(\n generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.COMMAND_LINE_WITHOUT_REQUIRED),\n )\n flags[OPTIONS.TITLE] = undefined\n flags[OPTIONS.TYPE] = undefined\n }\n }\n\n const commandOptions = getOptionsForCommand(commandFlag, flags)\n\n // biome-ignore lint/correctness/noVoidTypeReturn: migrate\n return options[commandFlag] ? options[commandFlag](commandOptions) : cli.showHelp()\n}\n\nexport { findCommand }\n","/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport { COMMIT_FORMATS, FORMAT, TYPE } from '~ccommit/lib/index'\n\nconst formatCliEmoji = ({ emoji, emojiLength }) =>\n emojiLength === 0 ? `${emoji} ` : `${emoji} `\n\nconst formatCliType = (type) => type?.padEnd(TYPE.MAX)\n\nconst formatCliTypes = (commitTypes: any) => {\n // console.log(`EMOJI TYPE DESCRIPTION`)\n // console.log(`----- ---- -----------`)\n return commitTypes.map(({ description, emoji, emojiLength, type }) => {\n console.log(\n `${formatCliEmoji({\n emoji,\n emojiLength,\n })} ${formatCliType(type)} ${description}`,\n )\n })\n}\n\nconst formatCommitSubject = (options, answers) => {\n const format = FORMAT[options?.format]\n\n // @note(ccommit) two spaces after emoji\n const emoji = answers?.gitmoji ? `${answers?.gitmoji} ` : ''\n\n let scope = answers?.scope\n ? `(${answers?.scope\n .replace(/ {2}/g, '--')\n .replace(/ /g, '-')\n .toLowerCase()\n .trim()})`\n : ''\n // @note(ccommit) only add space to scope if format is: gitmoji\n scope = scope && options?.format === COMMIT_FORMATS.GITMOJI ? `${scope} ` : scope\n\n /**\n * @todo(ccommit) breaking identification in commit subject\n */\n // const breaking = answers?.breaking\n // ? options?.format === COMMIT_FORMATS.GITMOJI\n // ? `💥 `\n // : '!'\n // : ''\n\n return format\n .replace(/\\{emoji\\}/g, emoji)\n .replace(/\\{scope\\}/g, scope)\n .replace(/\\{breaking\\}/g, '')\n .replace(/\\{title\\}/g, answers?.title)\n .replace(/\\{type\\}/g, answers?.type)\n}\n\nexport { formatCliEmoji, formatCliType, formatCliTypes, formatCommitSubject }\n","import colors from 'ansi-colors'\n\nimport { LOGS } from '~ccommit/lib/index'\n\ntype GenerateLog = (type: string, message: string, replace?: string) => void\n/**\n * @todo(ccommit) this is a bit much, can we reduce?\n */\nconst generateLog: GenerateLog = (type, message, replace) => {\n let msg = replace ? message.replace(/\\{REPLACE\\}/g, replace) : message\n msg = `\\n${msg}\\n`\n\n if (type === LOGS.TYPES.ERROR) {\n return colors.magenta.bold(msg)\n }\n if (type === LOGS.TYPES.INFO) {\n return colors.blue.bold(msg)\n }\n if (type === LOGS.TYPES.WARNING) {\n return colors.yellow.bold(msg)\n }\n return colors.green.bold(msg)\n}\n\nconst generateCount: GenerateLog = (type, message, replace) => {\n const msg = replace ? message.replace(/\\{REPLACE\\}/g, replace) : message\n\n if (type === LOGS.TYPES.ERROR) {\n return colors.red.bold(msg)\n }\n if (type === LOGS.TYPES.INFO) {\n return colors.white.bold(msg)\n }\n if (type === LOGS.TYPES.WARNING) {\n return colors.yellow.bold(msg)\n }\n return colors.green.bold(msg)\n}\n\nexport { generateCount, generateLog }\n","import { LOGS, TITLE } from '~ccommit/lib/index'\nimport { generateCount } from '~ccommit/utils/index'\n\nconst getCharsLeft = (str: string) => {\n const chars = str.length\n const message = chars.toString()\n let logType = LOGS.TYPES.SUCCESS\n\n if (chars < TITLE.MIN || chars > TITLE.MAX) {\n logType = LOGS.TYPES.ERROR\n } else if (chars < TITLE.MIN_SWAG || chars > TITLE.MAX_SWAG) {\n logType = LOGS.TYPES.WARNING\n }\n return generateCount(logType, LOGS.MESSAGES.REPLACE, message)\n}\n\nexport { getCharsLeft }\n","import { execSync } from 'node:child_process'\n\nconst getGitRootDir = () => {\n const devNull = process.platform === 'win32' ? ' nul' : '/dev/null'\n // biome-ignore lint/style/useTemplate: migrate\n const dir = execSync('git rev-parse --show-toplevel 2>' + devNull)\n .toString()\n .trim()\n\n return dir\n}\n\nexport { getGitRootDir }\n","import { execSync } from 'node:child_process'\n\nconst getIssueTracker = () => {\n let branch: any,\n init = ''\n\n // branch = 'ABC-123'\n branch = execSync('git rev-parse --abbrev-ref HEAD')\n branch = branch.toString().trim().split('/')\n const branchType = branch[0]\n const branchName = !branch[1] ? branchType : branch[1]\n\n const it = branchName.split('-')\n const itProject = it[0]\n const itNumber = !it[1] ? itProject : it[1]\n const itTicket = `${itProject}-${itNumber}`\n\n // biome-ignore lint/suspicious/noGlobalIsFinite: migrate\n // biome-ignore lint/suspicious/noGlobalIsNan: migrate\n if (!isNaN(parseFloat(itNumber)) && isFinite(parseFloat(itNumber))) {\n init = itTicket\n }\n return init\n}\n\nexport { getIssueTracker }\n","import { execSync } from 'node:child_process'\n\nconst getStagedFiles = () => {\n const stagedFiles = execSync('git diff --name-only --staged').toString().trim()\n\n return !!stagedFiles\n}\n\nexport { getStagedFiles }\n","/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport colors from 'ansi-colors'\n\nconst printDryRun = (v) => {\n console.log(colors.magenta.bold(`❯ dry-run mode: ${v}\\n`))\n}\n\nexport { printDryRun }\n","/*!\n * reference: https://github.com/carloscuesta/gitmoji-cli\n */\n/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport process from 'node:process'\n\nimport colors from 'ansi-colors'\n\nconst registerHookInterruptionHandler = () => {\n // Allow to interrupt the hook without cancelling the commit\n process.on('SIGINT', () => {\n console.log(colors.magenta.bold('❯ [ccommit] interrupted'))\n process.exit(0)\n })\n}\n\nexport { registerHookInterruptionHandler }\n","import colors from 'ansi-colors'\n\nimport commitTypes from '~ccommit/data/types'\nimport { SCOPE, TITLE } from '~ccommit/lib/index'\nimport {\n formatCliEmoji,\n formatCliType,\n getCharsLeft,\n getIssueTracker,\n} from '~ccommit/utils/index'\n\nconst getTypes = () =>\n commitTypes.map(({ description, emoji, emojiLength, type }) => ({\n description,\n emoji,\n emojiLength,\n type,\n }))\n\nconst characterCount = (input, max) => {\n const count = getCharsLeft(input)\n const countMessage = `Character Count (${count}/${max})`\n return `${colors.dim.cyan(`›`)} ${colors.dim.bold(countMessage)}`\n}\n\nconst prefixState = (state) => {\n return state.submitted\n ? state.cancelled\n ? colors.magenta('✖')\n : colors.green('✔')\n : colors.cyan('?')\n}\n\n/**\n * @note(enquirier) 3.x will \"fix\" skip passing answers for now\n * you can access \"this\" state by __not__ using arrow functions\n */\nconst questions = [\n {\n default: '(y/N)',\n format(input) {\n const yn = input ? 'yes' : 'no'\n // @ts-ignore\n return this.state.submitted ? colors.green(yn) : colors.dim(yn)\n },\n initial: false,\n message: 'Is there a breaking change?',\n name: 'breaking',\n prefix() {\n // @ts-ignore\n return prefixState(this.state)\n },\n styles: { primary: colors.white },\n type: 'confirm',\n },\n {\n footer() {\n // @ts-ignore\n return characterCount(this.state.input, TITLE.MAX)\n },\n message: 'Please share breaking change info',\n name: 'messageBreaking',\n result(value) {\n return value ? `BREAKING CHANGE: ${value.trim()}` : ''\n },\n skip() {\n // @ts-ignore\n return !this.state.answers.breaking\n },\n type: 'input',\n validate(input) {\n const chars = input?.length || 0\n // @ts-ignore\n if (!this.state.answers.breaking) {\n return true\n } else if (chars < 15) {\n return `Must have at least 15 characters`\n } else if (chars > TITLE.MAX) {\n return `Cannot exceed ${TITLE.MAX} characters`\n } else {\n return true\n }\n },\n },\n {\n choices: getTypes().map(({ description, emoji, emojiLength, type }) => {\n const value = emoji\n const name = ` ${formatCliEmoji({\n emoji,\n emojiLength,\n })} ${formatCliType(type)} ${description}`\n return {\n name,\n value,\n }\n }),\n footer() {\n return `${colors.dim.cyan(`›`)} ${colors.dim.bold(\n `scroll up and down to reveal more ↕`,\n )}`\n },\n highlight(str) {\n return colors.cyanBright(str)\n },\n limit: 18,\n message: 'Please choose a commit type',\n name: 'gitmoji',\n type: 'autocomplete',\n },\n {\n footer() {\n // @ts-ignore\n return characterCount(this.state.input, SCOPE.MAX)\n },\n format() {\n // @ts-ignore\n return this.state.submitted ? colors.green(this.value) : this.value\n },\n message: 'Please share the scope (if any)',\n name: 'scope',\n type: 'input',\n validate(input) {\n const chars = input.length\n if (chars === 0) {\n return true\n } else if (chars < SCOPE.MIN) {\n return `Must have at least ${SCOPE.MIN} characters`\n } else if (chars > SCOPE.MAX) {\n return `Cannot exceed ${SCOPE.MAX} characters`\n } else {\n return true\n }\n },\n },\n {\n footer() {\n // @ts-ignore\n return characterCount(this.state.input, TITLE.MAX)\n },\n hint() {\n // @ts-ignore\n return this.state.initial ? `… tab to use initial value` : ''\n },\n initial: getIssueTracker() ? `${getIssueTracker()} ` : '',\n message: 'Please enter the commit title',\n name: 'title',\n type: 'input',\n validate(input) {\n const chars = input.length\n if (chars < TITLE.MIN) {\n return `Must have at least ${TITLE.MIN} characters`\n } else if (chars > TITLE.MAX) {\n return `Cannot exceed ${TITLE.MAX} characters`\n } else {\n return true\n }\n },\n },\n {\n footer() {\n return `${colors.dim.cyan(`›`)} ${colors.dim(\n 'Return twice to submit/skip: ⮑ ⮑',\n )}`\n },\n message: 'Please share a more detailed commit message (if applicable)',\n multiline: true,\n name: 'message',\n result(input) {\n return input === '\\n' ? '' : input\n },\n type: 'input',\n },\n]\n\nexport default questions\n","/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport process from 'node:process'\n\nimport { execa } from 'execa'\n\nimport { LOGS } from '~ccommit/lib/index'\nimport { generateLog, printDryRun } from '~ccommit/utils/index'\n\nconst withClient = async (answers, options) => {\n try {\n const title = answers?.subject\n const message = answers?.message\n const messageBreaking = answers?.messageBreaking\n\n const commitArray = ['commit', '-m', title]\n if (message) commitArray.push('-m', message)\n if (messageBreaking) commitArray.push('-m', messageBreaking)\n\n if (options?.dryrun) {\n printDryRun(['git', ...commitArray].join(' '))\n } else {\n await execa('git', commitArray, {\n buffer: false,\n // env: { HUSKY: '0' },\n stdio: 'inherit',\n })\n }\n } catch (error: any) {\n console.error(\n generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.COMMIT_FAIL, error.escapedCommand),\n )\n process.exit(1)\n }\n}\n\nexport default withClient\n","/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport fs from 'node:fs'\nimport { join } from 'node:path'\nimport process from 'node:process'\n\nimport { getGitRootDir, printDryRun } from '~ccommit/utils/index'\n\nconst commitMsgFile = join(getGitRootDir(), '.git', 'COMMIT_EDITMSG')\n\nconst withHook = (answers, options) => {\n try {\n let commitMessage = answers?.subject\n if (answers?.message && answers?.message !== '\\n') {\n commitMessage += `\\n\\n${answers.message}`\n }\n if (answers?.messageBreaking && answers?.messageBreaking !== '\\n') {\n commitMessage += `\\n\\n${answers.messageBreaking}`\n }\n\n if (options?.dryrun) {\n printDryRun(commitMessage)\n } else {\n fs.writeFileSync(commitMsgFile, commitMessage)\n }\n } catch (error) {\n console.error(error)\n process.exit(1)\n } finally {\n process.exit(0)\n }\n}\n\nexport default withHook\n","/** biome-ignore-all lint/suspicious/noConsole: migrate */\nimport process from 'node:process'\n\nimport enquirer from 'enquirer'\n\nimport { COMMIT_MODES, FIND_BY, LOGS } from '~ccommit/lib/index'\nimport {\n cancelIfNeeded,\n findBy,\n formatCommitSubject,\n generateLog,\n registerHookInterruptionHandler,\n} from '~ccommit/utils/index'\n\nimport questions from './questions'\nimport withClient from './withClient'\nimport withHook from './withHook'\n\nconst { prompt } = enquirer\n\n// biome-ignore lint/style/useConsistentTypeDefinitions: migrate\nexport type CommitOptions = {\n message?: string\n mode: typeof COMMIT_MODES.CLIENT\n // mode: typeof COMMIT_MODES.CLIENT | typeof COMMIT_MODES.HOOK\n scope?: string\n skip: boolean\n title?: string\n}\n\n/**\n * @todo(ccommit) this is a hacky way to bypass the generator :X\n */\nconst promptAndCommit = async (options: CommitOptions) => {\n let data: any = {}\n\n if (options.skip) {\n data = options\n // @note(ccommit) very type is an actual type\n data.gitmoji = findBy(data.type, FIND_BY.TYPE, FIND_BY.EMOJI)\n if (!data.gitmoji) {\n console.log(\n generateLog(LOGS.TYPES.ERROR, LOGS.MESSAGES.TYPE_INCORRECT, data.type),\n )\n process.exit(2)\n }\n } else {\n // @ts-ignore\n await prompt(questions)\n .then((answers: any) => {\n answers.type = findBy(answers.gitmoji, FIND_BY.EMOJI, FIND_BY.TYPE)\n return answers\n })\n .then((answers) => {\n data = answers\n })\n .catch(console.error)\n }\n\n // biome-ignore lint/complexity/noExtraBooleanCast: migrate\n data.subject = !!data ? formatCommitSubject(options, data) : ''\n\n if (options.mode === COMMIT_MODES.HOOK) {\n return withHook(data, options)\n } else {\n return withClient(data, options)\n }\n}\nconst commit = (options: CommitOptions) => {\n if (options.mode === COMMIT_MODES.HOOK) {\n registerHookInterruptionHandler()\n return cancelIfNeeded().then(() => promptAndCommit(options))\n }\n return promptAndCommit(options)\n}\n\nexport default commit\n","import commit from './commit'\n\nexport default commit\n","import commitTypes from '~ccommit/data/types'\nimport { formatCliTypes } from '~ccommit/utils/index'\n\nconst list = () => formatCliTypes(commitTypes)\n\nexport default list\n","import list from './list'\n\nexport default list\n","#!/usr/bin/env node\n\n/*!\n * For license information please see index.js.LICENSE.txt\n */\nimport meow from 'meow'\n\nimport { commit, list } from '~ccommit/commands/index'\nimport { COMMANDS, COMMIT_FORMATS, FLAGS, OPTIONS } from '~ccommit/lib/index'\nimport { findCommand } from '~ccommit/utils/index'\n\nconst cli = meow(\n `\n Usage\n $ ccommit -c\n\n Flags\n --${FLAGS.BREAKING}, -b 💥 Breaking Change\n --${FLAGS.COMMIT}, -c 💽 Mode: Client\n --${FLAGS.DRYRUN}, -n 🎽 Mode: Dry Run\n --${FLAGS.EMOJI}, -e 😜 Emoji (default)\n --${FLAGS.HOOK}, -u 🪝 Mode: Hook\n --${FLAGS.LIST}, -l 📖 List all types\n --${FLAGS.VERSION}, -v 📦 Print installed version\n\n Options\n --${OPTIONS.FORMAT} 😜 Commit Format: conventional|gitmoji (default)\n --${OPTIONS.MESSAGE} 📝 Commit Message\n --${OPTIONS.SCOPE} 🔬 Commit Scope\n --${OPTIONS.TITLE} 📓 Commit Title\n --${OPTIONS.TYPE} ✨ Commit Type\n\n Notes\n - Pass any non-format options the following will be required: --title, --type\n - If you do not pass any options the Conventional Commit Generator prompt will run\n - Branch Name detection is enabled to pre-populate Issue Tracker information in prompt\n`,\n {\n flags: {\n // Flags\n [FLAGS.BREAKING]: { default: false, shortFlag: 'b', type: 'boolean' },\n [FLAGS.COMMIT]: { shortFlag: 'c', type: 'boolean' },\n [FLAGS.DRYRUN]: { shortFlag: 'n', type: 'boolean' },\n [FLAGS.EMOJI]: { default: true, shortFlag: 'e', type: 'boolean' },\n [FLAGS.HELP]: { shortFlag: 'h', type: 'boolean' },\n [FLAGS.HOOK]: { shortFlag: 'u', type: 'boolean' },\n [FLAGS.LIST]: { shortFlag: 'l', type: 'boolean' },\n [FLAGS.SKIP]: { default: false, type: 'boolean' },\n [FLAGS.VERSION]: { shortFlag: 'v', type: 'boolean' },\n // Options\n [OPTIONS.FORMAT]: { default: COMMIT_FORMATS.GITMOJI, type: 'string' },\n [OPTIONS.MESSAGE]: { type: 'string' },\n [OPTIONS.SCOPE]: { type: 'string' },\n [OPTIONS.TITLE]: { type: 'string' },\n [OPTIONS.TYPE]: { type: 'string' },\n },\n importMeta: import.meta,\n },\n)\n\nconst commands = {\n [COMMANDS.COMMIT]: (options: any) => commit(options),\n [COMMANDS.HOOK]: (options: any) => commit(options),\n [COMMANDS.LIST]: () => list(),\n}\n\nfindCommand(cli, commands)\n"],"mappings":";uOAAA,MAAM,EAAW,CACf,OAAQ,SACR,KAAM,OACN,KAAM,MACR,EACM,EAAiB,CACrB,aAAc,eACd,sBAAuB,wBACvB,QAAS,SACX,EAEM,EAAe,CACnB,OAAQ,SACR,KAAM,MACR,EAEM,EAAU,CACd,MAAO,QACP,KAAM,MACR,EAEM,EAAQ,OAAO,OAAO,CAC1B,SAAU,WACV,OAAQ,SACR,OAAQ,SACR,MAAO,QACP,KAAM,OACN,KAAM,OACN,KAAM,OACN,KAAM,OACN,QAAS,SACX,CAAC,EAEK,EAAS,EACZ,EAAe,cAAe,2CAC9B,EAAe,uBAAwB,oCACvC,EAAe,SAAU,iCAC5B,EAEM,EAAO,CACX,SAAU,CACR,8BACE,uDACF,YAAa;;;;;;;;MAMb,sBAAuB,sDACvB,cAAe,8DACf,QAAS,YACT,aACE,0EACF,eAAgB,uDAClB,EACA,MAAO,CACL,MAAO,QACP,KAAM,OACN,QAAS,UACT,QAAS,SACX,CACF,EAEM,EAAU,OAAO,OAAO,CAC5B,OAAQ,SACR,QAAS,UACT,MAAO,QACP,MAAO,QACP,KAAM,MACR,CAAC,EAEK,EAAQ,CACZ,IAAK,GACL,IAAK,CACP,EAEM,EAAS,CACb,MAAO,QACP,MAAO,QACP,KAAM,OACN,MAAO,OACT,EAEM,EAAQ,CACZ,IAAK,GACL,SAAU,GACV,IAAK,EACL,SAAU,EACZ,EAEM,EAAO,CACX,IAAK,EACP,ECrFM,MACJ,EAAM,MAAO,CAAC,YAAa,oBAAoB,CAAC,EAAE,MAC/C,CAAE,OAAQ,KAAmB;;;;CAK1B,EAAG,WAAW,EAAe,eAAe,GAE5C,EAAG,WAAW,EAAe,eAAe,IAE5C,EAAQ,KAAK,CAAC,CAElB,CACF,EAII,MACJ,IAAI,QAAe,GAAY,CAM7B,IAAM,EAA8BA,EAAQ,KAAA,GAE1C,IACC,EAAoB,WAAW,QAAQ,GACtC,EAAoB,WAAW,OAAO,IAExC,EAAQ,KAAK,CAAC,EAEhB,EAAQ,CACV,CAAC,EAGG,MAAsC,EAAiB,EAAE,KAAK,CAAgB,ECzC9E,EAAQ,CACZ,CACE,KAAM,eACN,YAAa,wBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,6BACN,YAAa,wCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,WACR,EACA,CACE,KAAM,UACN,YAAa,2CACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,WACR,EACA,CACE,KAAM,0BACN,YAAa,6BACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,UACN,YAAa,uBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,UACN,YAAa,0BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,WACR,EACA,CACE,KAAM,UACN,YAAa,uBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,SACN,YAAa,6BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,UACR,EACA,CACE,KAAM,WACN,YAAa,oCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACR,EACA,CACE,KAAM,aACN,YAAa,eACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,kBACN,YAAa,8CACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACR,EACA,CACE,KAAM,wBACN,YAAa,gCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,IACR,EACA,CACE,KAAM,gBACN,YAAa,6CACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,UACN,YAAa,0CACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,WACN,YAAa,8DACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,aACR,EACA,CACE,KAAM,WACN,YAAa,oCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,wBACN,YAAa,+BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,aACR,EACA,CACE,KAAM,iBACN,YAAa,8BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,kBACN,YAAa,mCACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,IACR,EACA,CACE,KAAM,oBACN,YAAa,mBACb,MAAO,IACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACR,EACA,CACE,KAAM,qBACN,YAAa,sBACb,MAAO,IACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,YACN,YAAa,2CACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,WACN,YAAa,eACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,QACR,EACA,CACE,KAAM,SACN,YAAa,wCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,WACR,EACA,CACE,KAAM,SACN,YAAa,8BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,eACN,YAAa,yBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,WACR,EACA,CACE,KAAM,iBACN,YAAa,+BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,IACR,EACA,CACE,KAAM,QACN,YAAa,8BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,KACR,EACA,CACE,KAAM,YACN,YAAa,sBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,YACR,EACA,CACE,KAAM,aACN,YAAa,yBACb,MAAO,IACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,MACR,EACA,CACE,KAAM,QACN,YAAa,YACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,KACR,EACA,CACE,KAAM,gBACN,YAAa,eACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,QACR,EACA,CACE,KAAM,4BACN,YAAa,qCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,gBACN,YAAa,4BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,aACR,EACA,CACE,KAAM,cACN,YAAa,kBACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,yBACN,YAAa,wCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,MACR,EACA,CACE,KAAM,gBACN,YAAa,kCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,QACR,EACA,CACE,KAAM,WACN,YAAa,iCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,KACR,EACA,CACE,KAAM,SACN,YAAa,kBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,MACR,EACA,CACE,KAAM,WACN,YAAa,4BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,mBACN,YAAa,wBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACR,EACA,CACE,KAAM,mBACN,YAAa,iCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,eACN,YAAa,qBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACR,EACA,CACE,KAAM,SACN,YAAa,cACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,QACR,EACA,CACE,KAAM,YACN,YAAa,+BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,8BACN,YAAa,iBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACR,EACA,CACE,KAAM,eACN,YAAa,cACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,UACN,YAAa,sDACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,IACR,EACA,CACE,KAAM,aACN,YAAa,0BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACR,EACA,CACE,KAAM,qBACN,YAAa,sCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,QACN,YAAa,sBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,MACR,EACA,CACE,KAAM,SACN,YAAa,2CACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,KACR,EACA,CACE,KAAM,SACN,YAAa,uBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACR,EACA,CACE,KAAM,YACN,YAAa,wCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACR,EACA,CACE,KAAM,YACN,YAAa,gBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,UACR,EACA,CACE,KAAM,aACN,YAAa,yBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACR,EACA,CACE,KAAM,WACN,YAAa,iBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,QACR,EACA,CACE,KAAM,WACN,YAAa,mBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,KACR,EACA,CACE,KAAM,qBACN,YAAa,8DACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,iBACN,YAAa,6BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,aACR,EACA,CACE,KAAM,WACN,YAAa,wDACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,WACR,EACA,CACE,KAAM,yBACN,YAAa,wBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACR,EACA,CACE,KAAM,SACN,YAAa,sBACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,UACR,EACA,CACE,KAAM,aACN,YAAa,2BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,QACN,YAAa,cACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,KACR,EACA,CACE,KAAM,iBACN,YAAa,0BACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,UACR,EACA,CACE,KAAM,qBACN,YAAa,mDACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,SACR,EACA,CACE,KAAM,QACN,YAAa,yCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,OACR,EACA,CACE,KAAM,cACN,YAAa,qBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,WACR,EACA,CACE,KAAM,qBACN,YAAa,2BACb,MAAO,IACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,MACR,EACA,CACE,KAAM,mBACN,YAAa,kCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,UACN,YAAa,sBACb,MAAO,MACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,OACR,EACA,CACE,KAAM,YACN,YAAa,YACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,MACR,EACA,CACE,KAAM,aACN,YAAa,uCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,IACR,EACA,CACE,KAAM,aACN,YAAa,uBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,SACR,EACA,CACE,KAAM,sBACN,YAAa,sCACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,IACR,EACA,CACE,KAAM,gBACN,YAAa,2CACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,MACf,KAAM,YACR,EACA,CACE,KAAM,iBACN,YAAa,mBACb,MAAO,KACP,YAAa,EACb,OAAQ,EAAO,KACf,KAAM,KACR,CACF,ECnnBM,GAAU,EAAK,EAAM,IAElBC,EADKA,EAAY,UAAW,GAAO,EAAG,KAAU,CAClC,KAAK,GCQtB,GAAwB,EAAiB,IAIzC,CAHyB,EAAM,OAAQ,EAAM,IAG3B,EAAE,SAAS,CAAO,EAmB/B,CAjBL,OAAQ,EAAM,EAAM,QACpB,MAAO,EAAM,EAAM,OAEnB,OACE,EAAM,EAAQ,UAAY,EAAe,aACrC,EAAM,EAAM,OACV,EAAe,aACf,EAAe,sBACjB,EAAe,QACrB,QAAS,EAAM,EAAQ,SACvB,KAAM,IAAY,EAAM,KAAO,EAAa,KAAO,EAAa,OAChE,MAAO,EAAM,EAAQ,OACrB,KAAM,EAAM,EAAM,MAClB,MAAO,EAAM,EAAQ,OACrB,KAAM,EAAM,EAAQ,KAGT,EAGR,KAKH,GAAe,EAAU,IAAuB,CACpD,IAAM,EAAQ,EAAI,MACZ,EAAc,OAAO,KAAK,CAAK,EAClC,IAAK,GAAS,EAAM,IAAS,CAAI,EACjC,KAAM,GAAS,EAAQ,EAAK,EAEzB,EAAe,EAAe,EAEhC,CAAC,EAAM,EAAM,SAAW,CAAC,IAC3B,QAAQ,IAAI,EAAY,EAAK,MAAM,MAAO,EAAK,SAAS,YAAY,CAAC,EACrE,EAAQ,KAAK,CAAC,GAGZ,EAAM,EAAM,SAAW,EAAM,EAAM,QACrC,QAAQ,IAAI,EAAY,EAAK,MAAM,MAAO,EAAK,SAAS,aAAa,CAAC,EACtE,EAAQ,KAAK,CAAC,IAId,EAAM,EAAQ,UACd,EAAM,EAAQ,QACd,EAAM,EAAQ,QACd,EAAM,EAAQ,SAEd,EAAM,EAAM,MAAQ,IAGlB,EAAM,EAAM,QACV,EAAM,EAAQ,QAAU,EAAM,EAAQ,MACxC,EAAM,EAAM,MAAQ,IAEpB,EAAM,EAAM,MAAQ,GACpB,QAAQ,IACN,EAAY,EAAK,MAAM,MAAO,EAAK,SAAS,6BAA6B,CAC3E,EACA,EAAM,EAAQ,OAAS,IAAA,GACvB,EAAM,EAAQ,MAAQ,IAAA,KAI1B,IAAM,EAAiB,EAAqB,EAAa,CAAK,EAG9D,OAAO,EAAQ,GAAe,EAAQ,GAAa,CAAc,EAAI,EAAI,SAAS,CACpF,ECpFM,GAAkB,CAAE,QAAO,iBAC/B,IAAgB,EAAI,GAAG,EAAM,OAAS,GAAG,EAAM,MAE3C,EAAiB,GAAS,GAAM,OAAO,EAAK,GAAG,EAE/C,EAAkB,GAGf,EAAY,KAAK,CAAE,cAAa,QAAO,cAAa,UAAW,CACpE,QAAQ,IACN,GAAG,EAAe,CAChB,QACA,aACF,CAAC,EAAE,GAAG,EAAc,CAAI,EAAE,GAAG,GAC/B,CACF,CAAC,EAGG,GAAuB,EAAS,IAAY,CAChD,IAAM,EAAS,EAAO,GAAS,QAGzB,EAAQ,GAAS,QAAU,GAAG,GAAS,QAAQ,IAAM,GAEvD,EAAQ,GAAS,MACjB,IAAI,GAAS,MACV,QAAQ,QAAS,IAAI,EACrB,QAAQ,KAAM,GAAG,EACjB,YAAY,EACZ,KAAK,EAAE,GACV,GAaJ,MAXA,GAAQ,GAAS,GAAS,SAAW,EAAe,QAAU,GAAG,EAAM,GAAK,EAWrE,EACJ,QAAQ,aAAc,CAAK,EAC3B,QAAQ,aAAc,CAAK,EAC3B,QAAQ,gBAAiB,EAAE,EAC3B,QAAQ,aAAc,GAAS,KAAK,EACpC,QAAQ,YAAa,GAAS,IAAI,CACvC,EC5CM,GAA4B,EAAM,EAAS,IAAY,CAC3D,IAAI,EAAM,EAAU,EAAQ,QAAQ,eAAgB,CAAO,EAAI,EAY/D,MAXA,GAAM,KAAK,EAAI,IAEX,IAAS,EAAK,MAAM,MACf,EAAO,QAAQ,KAAK,CAAG,EAE5B,IAAS,EAAK,MAAM,KACf,EAAO,KAAK,KAAK,CAAG,EAEzB,IAAS,EAAK,MAAM,QACf,EAAO,OAAO,KAAK,CAAG,EAExB,EAAO,MAAM,KAAK,CAAG,CAC9B,EAEM,GAA8B,EAAM,EAAS,IAAY,CAC7D,IAAM,EAAM,EAAU,EAAQ,QAAQ,eAAgB,CAAO,EAAI,EAWjE,OATI,IAAS,EAAK,MAAM,MACf,EAAO,IAAI,KAAK,CAAG,EAExB,IAAS,EAAK,MAAM,KACf,EAAO,MAAM,KAAK,CAAG,EAE1B,IAAS,EAAK,MAAM,QACf,EAAO,OAAO,KAAK,CAAG,EAExB,EAAO,MAAM,KAAK,CAAG,CAC9B,EClCM,EAAgB,GAAgB,CACpC,IAAM,EAAQ,EAAI,OACZ,EAAU,EAAM,SAAS,EAC3B,EAAU,EAAK,MAAM,QAOzB,OALI,EAAQ,EAAM,KAAO,EAAQ,EAAM,IACrC,EAAU,EAAK,MAAM,OACZ,EAAQ,EAAM,UAAY,EAAQ,EAAM,YACjD,EAAU,EAAK,MAAM,SAEhB,EAAc,EAAS,EAAK,SAAS,QAAS,CAAO,CAC9D,ECZM,MAGQ,EAAS,oCAFL,QAAQ,WAAa,QAAU,OAAS,YAES,EAC9D,SAAS,EACT,KAEM,ECPL,MAAwB,CAC5B,IAAI,EACF,EAAO,GAGT,EAAS,EAAS,iCAAiC,EACnD,EAAS,EAAO,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,EAC3C,IAAM,EAAa,EAAO,GAGpB,GAFc,EAAO,GAAkB,EAAO,GAApB,GAEV,MAAM,GAAG,EACzB,EAAY,EAAG,GACf,EAAY,EAAG,GAAiB,EAAG,GAAf,EACpB,EAAW,GAAG,EAAU,GAAG,IAOjC,MAHI,CAAC,MAAM,WAAW,CAAQ,CAAC,GAAK,SAAS,WAAW,CAAQ,CAAC,IAC/D,EAAO,GAEF,CACT,ECrBM,MAGG,CAAC,CAFY,EAAS,+BAA+B,EAAE,SAAS,EAAE,KAEtD,ECFf,EAAe,GAAM,CACzB,QAAQ,IAAI,EAAO,QAAQ,KAAK,mBAAmB,EAAE,GAAG,CAAC,CAC3D,ECGM,MAAwC;;;;AAE5C,EAAQ,GAAG,aAAgB,CACzB,QAAQ,IAAI,EAAO,QAAQ,KAAK,yBAAyB,CAAC,EAC1D,EAAQ,KAAK,CAAC,CAChB,CAAC,CACH,ECHM,MACJC,EAAY,KAAK,CAAE,cAAa,QAAO,cAAa,WAAY,CAC9D,cACA,QACA,cACA,MACF,EAAE,EAEE,GAAkB,EAAO,IAAQ,CAErC,IAAM,EAAe,oBADP,EAAa,CACkB,EAAE,GAAG,EAAI,GACtD,MAAO,GAAG,EAAO,IAAI,KAAK,GAAG,EAAE,GAAG,EAAO,IAAI,KAAK,CAAY,GAChE,EAEM,EAAe,GACZ,EAAM,UACT,EAAM,UACJ,EAAO,QAAQ,GAAG,EAClB,EAAO,MAAM,GAAG,EAClB,EAAO,KAAK,GAAG,EAOf,EAAY,CAChB,CACE,QAAS,QACT,OAAO,EAAO,CACZ,IAAM,EAAK,EAAQ,MAAQ,KAE3B,OAAO,KAAK,MAAM,UAAY,EAAO,MAAM,CAAE,EAAI,EAAO,IAAI,CAAE,CAChE,EACA,QAAS,GACT,QAAS,8BACT,KAAM,WACN,QAAS,CAEP,OAAO,EAAY,KAAK,KAAK,CAC/B,EACA,OAAQ,CAAE,QAAS,EAAO,KAAM,EAChC,KAAM,SACR,EACA,CACE,QAAS,CAEP,OAAO,EAAe,KAAK,MAAM,MAAO,EAAM,GAAG,CACnD,EACA,QAAS,oCACT,KAAM,kBACN,OAAO,EAAO,CACZ,OAAO,EAAQ,oBAAoB,EAAM,KAAK,IAAM,EACtD,EACA,MAAO,CAEL,MAAO,CAAC,KAAK,MAAM,QAAQ,QAC7B,EACA,KAAM,QACN,SAAS,EAAO,CACd,IAAM,EAAQ,GAAO,QAAU,EAS7B,OAPG,KAAK,MAAM,QAAQ,SAEb,EAAQ,GACV,mCACE,EAAQ,EAAM,IAChB,iBAAiB,EAAM,IAAI,aAE3B,GANA,EAQX,CACF,EACA,CACE,QAAS,EAAS,EAAE,KAAK,CAAE,cAAa,QAAO,cAAa,UAAW,CACrE,IAAM,EAAQ,EAKd,MAAO,CACL,KAAA,KALgB,EAAe,CAC/B,QACA,aACF,CAAC,EAAE,IAAI,EAAc,CAAI,EAAE,GAAG,IAG5B,OACF,CACF,CAAC,EACD,QAAS,CACP,MAAO,GAAG,EAAO,IAAI,KAAK,GAAG,EAAE,GAAG,EAAO,IAAI,KAC3C,qCACF,GACF,EACA,UAAU,EAAK,CACb,OAAO,EAAO,WAAW,CAAG,CAC9B,EACA,MAAO,GACP,QAAS,8BACT,KAAM,UACN,KAAM,cACR,EACA,CACE,QAAS,CAEP,OAAO,EAAe,KAAK,MAAM,MAAO,EAAM,GAAG,CACnD,EACA,QAAS,CAEP,OAAO,KAAK,MAAM,UAAY,EAAO,MAAM,KAAK,KAAK,EAAI,KAAK,KAChE,EACA,QAAS,kCACT,KAAM,QACN,KAAM,QACN,SAAS,EAAO,CACd,IAAM,EAAQ,EAAM,OAQlB,OAPE,IAAU,EACL,GACE,EAAQ,EAAM,IAChB,sBAAsB,EAAM,IAAI,aAC9B,EAAQ,EAAM,IAChB,iBAAiB,EAAM,IAAI,aAE3B,EAEX,CACF,EACA,CACE,QAAS,CAEP,OAAO,EAAe,KAAK,MAAM,MAAO,EAAM,GAAG,CACnD,EACA,MAAO,CAEL,OAAO,KAAK,MAAM,QAAU,6BAA+B,EAC7D,EACA,QAAS,EAAgB,EAAI,GAAG,EAAgB,EAAE,GAAK,GACvD,QAAS,gCACT,KAAM,QACN,KAAM,QACN,SAAS,EAAO,CACd,IAAM,EAAQ,EAAM,OAMlB,OALE,EAAQ,EAAM,IACT,sBAAsB,EAAM,IAAI,aAC9B,EAAQ,EAAM,IAChB,iBAAiB,EAAM,IAAI,aAE3B,EAEX,CACF,EACA,CACE,QAAS,CACP,MAAO,GAAG,EAAO,IAAI,KAAK,GAAG,EAAE,GAAG,EAAO,IACvC,mCACF,GACF,EACA,QAAS,8DACT,UAAW,GACX,KAAM,UACN,OAAO,EAAO,CACZ,OAAO,IAAU;EAAO,GAAK,CAC/B,EACA,KAAM,OACR,CACF,ECpKM,EAAa,MAAO,EAAS,IAAY,CAC7C,GAAI,CACF,IAAM,EAAQ,GAAS,QACjB,EAAU,GAAS,QACnB,EAAkB,GAAS,gBAE3B,EAAc,CAAC,SAAU,KAAM,CAAK,EACtC,GAAS,EAAY,KAAK,KAAM,CAAO,EACvC,GAAiB,EAAY,KAAK,KAAM,CAAe,EAEvD,GAAS,OACX,EAAY,CAAC,MAAO,GAAG,CAAW,EAAE,KAAK,GAAG,CAAC,EAE7C,MAAM,EAAM,MAAO,EAAa,CAC9B,OAAQ,GAER,MAAO,SACT,CAAC,CAEL,OAAS,EAAY,CACnB,QAAQ,MACN,EAAY,EAAK,MAAM,MAAO,EAAK,SAAS,YAAa,EAAM,cAAc,CAC/E,EACA,EAAQ,KAAK,CAAC,CAChB,CACF,EC1BM,EAAgB,EAAK,EAAc,EAAG,OAAQ,gBAAgB,EAE9D,GAAY,EAAS,IAAY,CACrC,GAAI,CACF,IAAI,EAAgB,GAAS,QACzB,GAAS,SAAW,GAAS,UAAY;IAC3C,GAAiB,OAAO,EAAQ,WAE9B,GAAS,iBAAmB,GAAS,kBAAoB;IAC3D,GAAiB,OAAO,EAAQ,mBAG9B,GAAS,OACX,EAAY,CAAa,EAEzB,EAAG,cAAc,EAAe,CAAa,CAEjD,OAAS,EAAO,CACd,QAAQ,MAAM,CAAK,EACnB,EAAQ,KAAK,CAAC,CAChB,QAAU,CACR,EAAQ,KAAK,CAAC,CAChB,CACF,ECZM,CAAE,UAAW,EAeb,EAAkB,KAAO,IAA2B,CACxD,IAAI,EAAY,CAAC,EA+Bf,OA7BE,EAAQ,MACV,EAAO,EAEP,EAAK,QAAU,EAAO,EAAK,KAAM,EAAQ,KAAM,EAAQ,KAAK,EACvD,EAAK,UACR,QAAQ,IACN,EAAY,EAAK,MAAM,MAAO,EAAK,SAAS,eAAgB,EAAK,IAAI,CACvE,EACA,EAAQ,KAAK,CAAC,IAIhB,MAAM,EAAO,CAAS,EACnB,KAAM,IACL,EAAQ,KAAO,EAAO,EAAQ,QAAS,EAAQ,MAAO,EAAQ,IAAI,EAC3D,EACR,EACA,KAAM,GAAY,CACjB,EAAO,CACT,CAAC,EACA,MAAM,QAAQ,KAAK,EAIxB,EAAK,QAAY,EAAO,EAAoB,EAAS,CAAI,EAAI,GAEzD,EAAQ,OAAS,EAAa,KACzB,EAAS,EAAM,CAAO,EAEtB,EAAW,EAAM,CAAO,CAEnC,ECjEA,IAAA,EDkEgB,GACV,EAAQ,OAAS,EAAa,MAChC,EAAgC,EACzB,EAAe,EAAE,SAAW,EAAgB,CAAO,CAAC,GAEtD,EAAgB,CAAO,EGvEhC,MDCmB,EAAeC,CAAW;;;;AE+D7C,EAvDY,EACV;;;;;QAKM,EAAM,SAAS;QACf,EAAM,OAAO;QACb,EAAM,OAAO;QACb,EAAM,MAAM;QACZ,EAAM,KAAK;QACX,EAAM,KAAK;QACX,EAAM,QAAQ;;;QAGd,EAAQ,OAAO;QACf,EAAQ,QAAQ;QAChB,EAAQ,MAAM;QACd,EAAQ,MAAM;QACd,EAAQ,KAAK;;;;;;EAOnB,CACE,MAAO,EAEJ,EAAM,UAAW,CAAE,QAAS,GAAO,UAAW,IAAK,KAAM,SAAU,GACnE,EAAM,QAAS,CAAE,UAAW,IAAK,KAAM,SAAU,GACjD,EAAM,QAAS,CAAE,UAAW,IAAK,KAAM,SAAU,GACjD,EAAM,OAAQ,CAAE,QAAS,GAAM,UAAW,IAAK,KAAM,SAAU,GAC/D,EAAM,MAAO,CAAE,UAAW,IAAK,KAAM,SAAU,GAC/C,EAAM,MAAO,CAAE,UAAW,IAAK,KAAM,SAAU,GAC/C,EAAM,MAAO,CAAE,UAAW,IAAK,KAAM,SAAU,GAC/C,EAAM,MAAO,CAAE,QAAS,GAAO,KAAM,SAAU,GAC/C,EAAM,SAAU,CAAE,UAAW,IAAK,KAAM,SAAU,GAElD,EAAQ,QAAS,CAAE,QAAS,EAAe,QAAS,KAAM,QAAS,GACnE,EAAQ,SAAU,CAAE,KAAM,QAAS,GACnC,EAAQ,OAAQ,CAAE,KAAM,QAAS,GACjC,EAAQ,OAAQ,CAAE,KAAM,QAAS,GACjC,EAAQ,MAAO,CAAE,KAAM,QAAS,CACnC,EACA,WAAY,OAAO,IACrB,CASY,EAAG,EALd,EAAS,QAAU,GAAiBC,EAAO,CAAO,GAClD,EAAS,MAAQ,GAAiBA,EAAO,CAAO,GAChD,EAAS,UAAaC,EAAK,CAGN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccommit",
3
- "version": "4.0.0",
3
+ "version": "4.0.3-canary.1",
4
4
  "type": "module",
5
5
  "description": "😜 ➕ 👔 🟰 ccommit \n Conventional Commit Generator that interprets commit types from gitmoji and conventional",
6
6
  "repository": {
@@ -46,7 +46,6 @@
46
46
  "dry:run": "pnpm run build && node ./index.js -c -n",
47
47
  "lint": "pnpm run lint:typescript",
48
48
  "lint:typescript": "tsc --noEmit --declaration",
49
- "package": "pkg . --output ./.bin/ccommit --targets latest-linux-x64,latest-macos-x64,latest-win-x64",
50
49
  "prepare": "is-ci || pnpm run build",
51
50
  "semantic-release": "semantic-release",
52
51
  "semantic-release:dry": "semantic-release --dry-run"
@@ -55,12 +54,11 @@
55
54
  "ansi-colors": "4.1.3",
56
55
  "enquirer": "2.4.1",
57
56
  "execa": "9.6.1",
58
- "fuse.js": "7.1.0",
57
+ "fuse.js": "7.4.2",
59
58
  "meow": "14.1.0"
60
59
  },
61
60
  "devDependencies": {
62
- "is-ci": "4.1.0",
63
- "pkg": "5.8.1"
61
+ "is-ci": "4.1.0"
64
62
  },
65
63
  "publishConfig": {
66
64
  "registry": "https://registry.npmjs.org/",