@fxri/toolkit 1.1.0 → 1.1.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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @fxri/toolkit
2
2
 
3
+ ## 1.1.1
4
+ > 2026-09-03 发布
5
+
6
+ ### 🐛 补丁修复
7
+
8
+ - CLI 改用 Commander 实现,新增 --help/--version 与 tasks/changelog 子命令帮助,changelog 透传子命令支持未知选项;commander@^14 作为运行时依赖。
9
+
3
10
  ## 1.1.0
4
11
  > 2026-09-03 发布
5
12
 
package/README.md CHANGED
@@ -40,6 +40,14 @@ npx toolkit changelog format # 仅格式化已有 CHANGELOG
40
40
  npx toolkit changelog status / publish # 其余 changeset 子命令透传
41
41
  ```
42
42
 
43
+ ### 通用选项
44
+
45
+ ```bash
46
+ -h, --help 显示帮助(全局或子命令)
47
+ -v, --version 显示版本号
48
+ --no-redact 关闭隐私脱敏(tasks / changelog 均可用)
49
+ ```
50
+
43
51
  ### 接入 package.json
44
52
 
45
53
  ```json
@@ -138,7 +146,9 @@ export const languages = {
138
146
  | 能力 | Node 20 | Node 18 |
139
147
  | --- | --- | --- |
140
148
  | 安装 | ✅ | ✅(npm 报 EBADENGINE 警告) |
149
+ | 帮助 / 版本(--help / --version) | ✅ | ✅ |
141
150
  | tasks(总览 / 归档) | ✅ | ✅ |
151
+ | 隐私脱敏(含 --no-redact 开关) | ✅ | ✅ |
142
152
  | changelog format(纯格式化) | ✅ | ✅ |
143
153
  | changelog init/add/version/publish | ✅ | ❌ |
144
154
 
package/dist/cli.cjs CHANGED
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
- var Q=()=>typeof document>"u"?new URL(`file:${__filename}`).href:document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"?document.currentScript.src:new URL("main.js",document.baseURI).href,f=Q();var K=require("module"),Y=require("child_process");var M=require("fs"),S=require("path");function T(e){let n=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!n)return{};let t={};for(let r of n[1].split(/\r?\n/)){let o=r.indexOf(":");if(o===-1)continue;let a=r.slice(0,o).trim(),s=r.slice(o+1).trim();(s.startsWith("'")&&s.endsWith("'")||s.startsWith('"')&&s.endsWith('"'))&&(s=s.slice(1,-1)),a&&(t[a]=s)}return t}function A(e){let n=e.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return n?e.slice(n[0].length):e}var $=require("fs"),y=require("path");function C(e){if(!(0,$.existsSync)(e))return[];let n=[];for(let t of(0,$.readdirSync)(e)){let r=(0,y.join)(e,t);if((0,$.statSync)(r).isDirectory())for(let o of(0,$.readdirSync)(r))o.endsWith(".md")&&n.push((0,y.join)(r,o));else t.endsWith(".md")&&n.push(r)}return n}function W(e){let t=(0,y.basename)(e,(0,y.extname)(e)).match(/^(\d{8})/);return t?t[1]:""}var Z=require("fs"),I=require("path"),V=[{name:"\u5185\u7F51URL",pattern:/(https?:\/\/)[a-zA-Z0-9.-]+(:\d{2,5})(?=\/|[\s]|$)/g,replacement:"$1***$2"},{name:"\u90AE\u7BB1",pattern:/([a-zA-Z0-9._%+-])[a-zA-Z0-9._%+-]*@(?:[a-zA-Z0-9-]+\.)+([a-zA-Z]{2,})/g,replacement:"$1***@***.$2"},{name:"JWT",pattern:/\beyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,replacement:"eyJ***.eyJ***.***"},{name:"AWS\u5BC6\u94A5",pattern:/\b(AKIA|ASIA)[A-Z0-9]{16}\b/g,replacement:"$1****"},{name:"GitHub\u5BC6\u94A5",pattern:/\b(ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{36,}\b/g,replacement:"$1_****"},{name:"OpenAI\u5BC6\u94A5",pattern:/\bsk-[A-Za-z0-9]{20,}\b/g,replacement:"sk-****"},{name:"Slack\u5BC6\u94A5",pattern:/\b(xox[baprs])-[A-Za-z0-9-]{10,}\b/g,replacement:"$1-****"},{name:"\u624B\u673A\u53F7",pattern:/(?<!\d)(1[3-9]\d)\d{4}(\d{4})(?!\d)/g,replacement:"$1****$2"},{name:"\u8EAB\u4EFD\u8BC1",pattern:/(?<!\d)(\d{6})\d{8}(\d{3}[\dXx])(?!\d)/g,replacement:"$1********$2"},{name:"IPv4",pattern:/(?<![\d.])(\d{1,3}\.\d{1,3})\.\d{1,3}\.\d{1,3}(?![\d.])/g,replacement:"$1.***.***"}],x,R=null;function N(){if(x!==void 0)return x;x=null;try{let e=(0,Z.readFileSync)((0,I.join)(process.cwd(),".toolkitrc.json"),"utf8");x=JSON.parse(e).redact??null}catch{}return x}function ee(){if(R)return R;let e=N(),n=new Set(e?.disable??[]),t=[];for(let r of e?.rules??[])try{t.push({name:r.name,pattern:new RegExp(r.pattern,r.flags??""),replacement:r.replacement})}catch{}return R=[...t,...V.filter(r=>!n.has(r.name))],R}function b(e,n){if(!n||!e)return e;let t=e;for(let r of ee())t=t.replace(r.pattern,r.replacement);return t}function O(e){return!(e.includes("--no-redact")||process.env.FX_REDACT==="0"||N()?.enabled===!1)}function te(e=".tasks"){let n=(0,S.join)(e,"active");return C(n).map(t=>{let r=(0,M.readFileSync)(t,"utf8"),o=T(r),a=r.split(/\r?\n/).find(s=>s.startsWith("# ")&&!s.startsWith("#!"))?.replace(/^#\s*/,"")||(0,S.basename)(t,".md");return{file:t,name:(0,S.basename)(t,".md"),date:W(t),title:a,frontmatter:o,body:A(r).trim()}})}function P(e=".tasks",n=!0){let t=te(e);if(t.length===0){console.log("\u5F53\u524D\u65E0\u6D3B\u8DC3\u4EFB\u52A1");return}let r=["\u8FDB\u884C\u4E2D","\u963B\u585E","\u5F85\u529E","\u5DF2\u5B8C\u6210","\u5DF2\u653E\u5F03","\u672A\u6807\u6CE8"],o={};for(let s of t){let l=r.includes(s.frontmatter.status)?s.frontmatter.status:"\u672A\u6807\u6CE8";(o[l]||=[]).push(s)}console.log(`\u4EFB\u52A1\u603B\u89C8\uFF1A
3
- `);let a=0;for(let s of r){let l=o[s]||[];if(l.length!==0){a+=l.length,console.log(`\u3010${s}\u3011${l.length} \u9879`);for(let i of l)console.log(` ${i.date} ${(i.frontmatter.owner||"\u672A\u6807\u6CE8").padEnd(8)} ${b(i.title,n)}`);console.log("")}}console.log(`\u5171 ${a} \u4E2A\u4EFB\u52A1\u6587\u4EF6`)}var d=require("fs"),m=require("path");var B=["\u5DF2\u5B8C\u6210","\u5DF2\u653E\u5F03"];function ne(e,n){let t=(0,m.resolve)(e),r=(0,m.resolve)(n);for(;t!==r&&t.startsWith(r+m.sep);){try{if((0,d.readdirSync)(t).length>0)break;(0,d.rmdirSync)(t)}catch{break}t=(0,m.dirname)(t)}}function G(e){let n=e.trim().match(/^(\d{4})-(\d{1,2})-(\d{1,2})[T\s](\d{1,2}):(\d{2})(?::\d{2})?$/);return n?`${n[1]}-${n[2].padStart(2,"0")}-${n[3].padStart(2,"0")} ${n[4].padStart(2,"0")}:${n[5]}`:e}function re(e){let n=(0,d.readFileSync)(e,"utf8"),t=[],r=/## (.+?)\n\n> [^\n]*完成时间:([^\n]+)\n\n([\s\S]*?)(?=\n\n---\n\n## |$)/g,o;for(;o=r.exec(n);)t.push({block:o[0].trim(),completed:o[2].trim()});return t}function J(e=".tasks",n=!0){let t=(0,m.join)(e,"active"),r=(0,m.join)(e,"archive"),o=C(t);if(o.length===0)return console.log("\u5F53\u524D\u65E0\u6D3B\u8DC3\u4EFB\u52A1\uFF0C\u65E0\u9700\u5F52\u6863"),{archived:0,skipped:[]};let a=[],s=[];for(let i of o){let g=(0,d.readFileSync)(i,"utf8"),u=T(g);if(!B.includes(u.status))continue;let h=G(u.completed||"");if(!h){s.push((0,m.basename)(i,".md")),console.log(`\u8DF3\u8FC7 ${(0,m.basename)(i,".md")}\uFF1A\u7F3A\u5C11 completed \u5B8C\u6210\u65F6\u95F4`);continue}a.push({file:i,name:(0,m.basename)(i,".md"),owner:u.owner||"\u672A\u6807\u6CE8",status:u.status||"\u672A\u6807\u6CE8",scope:u.scope||"-",completed:h,body:A(g).trim()})}if(a.length===0)return console.log("\u672C\u6B21\u65E0\u53EF\u5F52\u6863\u4EFB\u52A1"),{archived:0,skipped:s};let l={};for(let i of a){let g=i.completed.replace(/-/g,"").slice(0,8);(l[g]||=[]).push(i)}for(let[i,g]of Object.entries(l)){let u=(0,m.join)(r,i.slice(0,6));(0,d.mkdirSync)(u,{recursive:!0});let h=(0,m.join)(u,`${i}.md`),p=(0,d.existsSync)(h)?re(h):[];p.push(...g.map(c=>({block:`## ${c.name}
2
+ var Y=()=>typeof document>"u"?new URL(`file:${__filename}`).href:document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"?document.currentScript.src:new URL("main.js",document.baseURI).href,f=Y();var H=require("commander"),q=require("module"),X=require("child_process");var Z=require("fs"),S=require("path");function v(e){let n=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!n)return{};let t={};for(let r of n[1].split(/\r?\n/)){let o=r.indexOf(":");if(o===-1)continue;let c=r.slice(0,o).trim(),s=r.slice(o+1).trim();(s.startsWith("'")&&s.endsWith("'")||s.startsWith('"')&&s.endsWith('"'))&&(s=s.slice(1,-1)),c&&(t[c]=s)}return t}function x(e){let n=e.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return n?e.slice(n[0].length):e}var k=require("fs"),$=require("path");function T(e){if(!(0,k.existsSync)(e))return[];let n=[];for(let t of(0,k.readdirSync)(e)){let r=(0,$.join)(e,t);if((0,k.statSync)(r).isDirectory())for(let o of(0,k.readdirSync)(r))o.endsWith(".md")&&n.push((0,$.join)(r,o));else t.endsWith(".md")&&n.push(r)}return n}function U(e){let t=(0,$.basename)(e,(0,$.extname)(e)).match(/^(\d{8})/);return t?t[1]:""}var N=require("fs"),O=require("path"),Q=[{name:"\u5185\u7F51URL",pattern:/(https?:\/\/)[a-zA-Z0-9.-]+(:\d{2,5})(?=\/|[\s]|$)/g,replacement:"$1***$2"},{name:"\u90AE\u7BB1",pattern:/([a-zA-Z0-9._%+-])[a-zA-Z0-9._%+-]*@(?:[a-zA-Z0-9-]+\.)+([a-zA-Z]{2,})/g,replacement:"$1***@***.$2"},{name:"JWT",pattern:/\beyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,replacement:"eyJ***.eyJ***.***"},{name:"AWS\u5BC6\u94A5",pattern:/\b(AKIA|ASIA)[A-Z0-9]{16}\b/g,replacement:"$1****"},{name:"GitHub\u5BC6\u94A5",pattern:/\b(ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{36,}\b/g,replacement:"$1_****"},{name:"OpenAI\u5BC6\u94A5",pattern:/\bsk-[A-Za-z0-9]{20,}\b/g,replacement:"sk-****"},{name:"Slack\u5BC6\u94A5",pattern:/\b(xox[baprs])-[A-Za-z0-9-]{10,}\b/g,replacement:"$1-****"},{name:"\u624B\u673A\u53F7",pattern:/(?<!\d)(1[3-9]\d)\d{4}(\d{4})(?!\d)/g,replacement:"$1****$2"},{name:"\u8EAB\u4EFD\u8BC1",pattern:/(?<!\d)(\d{6})\d{8}(\d{3}[\dXx])(?!\d)/g,replacement:"$1********$2"},{name:"IPv4",pattern:/(?<![\d.])(\d{1,3}\.\d{1,3})\.\d{1,3}\.\d{1,3}(?![\d.])/g,replacement:"$1.***.***"}],y,C=null;function W(){if(y!==void 0)return y;y=null;try{let e=(0,N.readFileSync)((0,O.join)(process.cwd(),".toolkitrc.json"),"utf8");y=JSON.parse(e).redact??null}catch{}return y}function V(){if(C)return C;let e=W(),n=new Set(e?.disable??[]),t=[];for(let r of e?.rules??[])try{t.push({name:r.name,pattern:new RegExp(r.pattern,r.flags??""),replacement:r.replacement})}catch{}return C=[...t,...Q.filter(r=>!n.has(r.name))],C}function b(e,n){if(!n||!e)return e;let t=e;for(let r of V())t=t.replace(r.pattern,r.replacement);return t}function F(e){return!(!e||process.env.FX_REDACT==="0"||W()?.enabled===!1)}function ee(e=".tasks"){let n=(0,S.join)(e,"active");return T(n).map(t=>{let r=(0,Z.readFileSync)(t,"utf8"),o=v(r),c=r.split(/\r?\n/).find(s=>s.startsWith("# ")&&!s.startsWith("#!"))?.replace(/^#\s*/,"")||(0,S.basename)(t,".md");return{file:t,name:(0,S.basename)(t,".md"),date:U(t),title:c,frontmatter:o,body:x(r).trim()}})}function G(e=".tasks",n=!0){let t=ee(e);if(t.length===0){console.log("\u5F53\u524D\u65E0\u6D3B\u8DC3\u4EFB\u52A1");return}let r=["\u8FDB\u884C\u4E2D","\u963B\u585E","\u5F85\u529E","\u5DF2\u5B8C\u6210","\u5DF2\u653E\u5F03","\u672A\u6807\u6CE8"],o={};for(let s of t){let l=r.includes(s.frontmatter.status)?s.frontmatter.status:"\u672A\u6807\u6CE8";(o[l]||=[]).push(s)}console.log(`\u4EFB\u52A1\u603B\u89C8\uFF1A
3
+ `);let c=0;for(let s of r){let l=o[s]||[];if(l.length!==0){c+=l.length,console.log(`\u3010${s}\u3011${l.length} \u9879`);for(let a of l)console.log(` ${a.date} ${(a.frontmatter.owner||"\u672A\u6807\u6CE8").padEnd(8)} ${b(a.title,n)}`);console.log("")}}console.log(`\u5171 ${c} \u4E2A\u4EFB\u52A1\u6587\u4EF6`)}var d=require("fs"),m=require("path");var M=["\u5DF2\u5B8C\u6210","\u5DF2\u653E\u5F03"];function te(e,n){let t=(0,m.resolve)(e),r=(0,m.resolve)(n);for(;t!==r&&t.startsWith(r+m.sep);){try{if((0,d.readdirSync)(t).length>0)break;(0,d.rmdirSync)(t)}catch{break}t=(0,m.dirname)(t)}}function I(e){let n=e.trim().match(/^(\d{4})-(\d{1,2})-(\d{1,2})[T\s](\d{1,2}):(\d{2})(?::\d{2})?$/);return n?`${n[1]}-${n[2].padStart(2,"0")}-${n[3].padStart(2,"0")} ${n[4].padStart(2,"0")}:${n[5]}`:e}function ne(e){let n=(0,d.readFileSync)(e,"utf8"),t=[],r=/## (.+?)\n\n> [^\n]*完成时间:([^\n]+)\n\n([\s\S]*?)(?=\n\n---\n\n## |$)/g,o;for(;o=r.exec(n);)t.push({block:o[0].trim(),completed:o[2].trim()});return t}function P(e=".tasks",n=!0){let t=(0,m.join)(e,"active"),r=(0,m.join)(e,"archive"),o=T(t);if(o.length===0)return console.log("\u5F53\u524D\u65E0\u6D3B\u8DC3\u4EFB\u52A1\uFF0C\u65E0\u9700\u5F52\u6863"),{archived:0,skipped:[]};let c=[],s=[];for(let a of o){let g=(0,d.readFileSync)(a,"utf8"),u=v(g);if(!M.includes(u.status))continue;let h=I(u.completed||"");if(!h){s.push((0,m.basename)(a,".md")),console.log(`\u8DF3\u8FC7 ${(0,m.basename)(a,".md")}\uFF1A\u7F3A\u5C11 completed \u5B8C\u6210\u65F6\u95F4`);continue}c.push({file:a,name:(0,m.basename)(a,".md"),owner:u.owner||"\u672A\u6807\u6CE8",status:u.status||"\u672A\u6807\u6CE8",scope:u.scope||"-",completed:h,body:x(g).trim()})}if(c.length===0)return console.log("\u672C\u6B21\u65E0\u53EF\u5F52\u6863\u4EFB\u52A1"),{archived:0,skipped:s};let l={};for(let a of c){let g=a.completed.replace(/-/g,"").slice(0,8);(l[g]||=[]).push(a)}for(let[a,g]of Object.entries(l)){let u=(0,m.join)(r,a.slice(0,6));(0,d.mkdirSync)(u,{recursive:!0});let h=(0,m.join)(u,`${a}.md`),p=(0,d.existsSync)(h)?ne(h):[];p.push(...g.map(i=>({block:`## ${i.name}
4
4
 
5
- > \u8D1F\u8D23\u4EBA\uFF1A${c.owner}\u3000\u72B6\u6001\uFF1A${c.status}\u3000\u8303\u56F4\uFF1A${c.scope}\u3000\u5B8C\u6210\u65F6\u95F4\uFF1A${c.completed}
5
+ > \u8D1F\u8D23\u4EBA\uFF1A${i.owner}\u3000\u72B6\u6001\uFF1A${i.status}\u3000\u8303\u56F4\uFF1A${i.scope}\u3000\u5B8C\u6210\u65F6\u95F4\uFF1A${i.completed}
6
6
 
7
- ${b(c.body,n)}`,completed:c.completed})));for(let c of p)c.completed=G(c.completed);p.sort((c,U)=>U.completed.localeCompare(c.completed)),(0,d.writeFileSync)(h,`# ${i} \u5F52\u6863
7
+ ${b(i.body,n)}`,completed:i.completed})));for(let i of p)i.completed=I(i.completed);p.sort((i,z)=>z.completed.localeCompare(i.completed)),(0,d.writeFileSync)(h,`# ${a} \u5F52\u6863
8
8
 
9
9
  > \u672C\u6587\u4EF6\u7531 \`toolkit tasks archive\` \u81EA\u52A8\u751F\u6210\u3002
10
10
 
11
- ${p.map(c=>c.block).join(`
11
+ ${p.map(i=>i.block).join(`
12
12
 
13
13
  ---
14
14
 
15
15
  `)}
16
- `,"utf8");for(let c of g)(0,d.unlinkSync)(c.file);ne((0,m.dirname)(g[0].file),e),console.log(`\u5DF2\u5F52\u6863 ${g.length} \u4E2A\u4EFB\u52A1 \u2192 ${i}.md`)}return console.log(`\u5171\u5F52\u6863 ${a.length} \u4E2A\u4EFB\u52A1`),{archived:a.length,skipped:s}}var v={zh:{replacements:{"### Major Changes":"### \u{1F6A8} \u91CD\u5927\u53D8\u66F4","### \u91CD\u5927\u53D8\u66F4":"### \u{1F6A8} \u91CD\u5927\u53D8\u66F4","### Minor Changes":"### \u2728 \u65B0\u589E\u529F\u80FD","### \u65B0\u589E\u529F\u80FD":"### \u2728 \u65B0\u589E\u529F\u80FD","### Patch Changes":"### \u{1F41B} \u8865\u4E01\u4FEE\u590D","### \u8865\u4E01\u4FEE\u590D":"### \u{1F41B} \u8865\u4E01\u4FEE\u590D","### Dependent Changes":"### \u{1F517} \u4F9D\u8D56\u53D8\u66F4","### \u4F9D\u8D56\u53D8\u66F4":"### \u{1F517} \u4F9D\u8D56\u53D8\u66F4","- Updated dependencies":"- \u66F4\u65B0\u4F9D\u8D56"},deps:"- \u66F4\u65B0\u4F9D\u8D56",released:"\u53D1\u5E03"},en:{replacements:{"### Major Changes":"### \u{1F6A8} Major Changes","### Minor Changes":"### \u2728 Minor Changes","### Patch Changes":"### \u{1F41B} Patch Changes","### Dependent Changes":"### \u{1F517} Dependent Changes"},deps:"- Updated dependencies",released:"released"}},F="zh";var w=require("fs");var H=require("fs"),j=require("path");function q(e){let n=[],t=new Set(["node_modules",".git","dist"]),r=o=>{let a;try{a=(0,H.readdirSync)(o,{withFileTypes:!0})}catch{return}for(let s of a)if(s.isDirectory()){if(t.has(s.name))continue;r((0,j.join)(o,s.name))}else s.name==="CHANGELOG.md"&&n.push((0,j.join)(o,s.name))};return r(e),n}function L(){let e=new Date,n=t=>String(t).padStart(2,"0");return`${e.getFullYear()}-${n(e.getMonth()+1)}-${n(e.getDate())}`}function oe(e,n,t,r=!0){let o=(0,w.readFileSync)(e,"utf8"),a=o.includes(`\r
16
+ `,"utf8");for(let i of g)(0,d.unlinkSync)(i.file);te((0,m.dirname)(g[0].file),e),console.log(`\u5DF2\u5F52\u6863 ${g.length} \u4E2A\u4EFB\u52A1 \u2192 ${a}.md`)}return console.log(`\u5171\u5F52\u6863 ${c.length} \u4E2A\u4EFB\u52A1`),{archived:c.length,skipped:s}}var w={zh:{replacements:{"### Major Changes":"### \u{1F6A8} \u91CD\u5927\u53D8\u66F4","### \u91CD\u5927\u53D8\u66F4":"### \u{1F6A8} \u91CD\u5927\u53D8\u66F4","### Minor Changes":"### \u2728 \u65B0\u589E\u529F\u80FD","### \u65B0\u589E\u529F\u80FD":"### \u2728 \u65B0\u589E\u529F\u80FD","### Patch Changes":"### \u{1F41B} \u8865\u4E01\u4FEE\u590D","### \u8865\u4E01\u4FEE\u590D":"### \u{1F41B} \u8865\u4E01\u4FEE\u590D","### Dependent Changes":"### \u{1F517} \u4F9D\u8D56\u53D8\u66F4","### \u4F9D\u8D56\u53D8\u66F4":"### \u{1F517} \u4F9D\u8D56\u53D8\u66F4","- Updated dependencies":"- \u66F4\u65B0\u4F9D\u8D56"},deps:"- \u66F4\u65B0\u4F9D\u8D56",released:"\u53D1\u5E03"},en:{replacements:{"### Major Changes":"### \u{1F6A8} Major Changes","### Minor Changes":"### \u2728 Minor Changes","### Patch Changes":"### \u{1F41B} Patch Changes","### Dependent Changes":"### \u{1F517} Dependent Changes"},deps:"- Updated dependencies",released:"released"}},D="zh";var A=require("fs");var B=require("fs"),L=require("path");function J(e){let n=[],t=new Set(["node_modules",".git","dist"]),r=o=>{let c;try{c=(0,B.readdirSync)(o,{withFileTypes:!0})}catch{return}for(let s of c)if(s.isDirectory()){if(t.has(s.name))continue;r((0,L.join)(o,s.name))}else s.name==="CHANGELOG.md"&&n.push((0,L.join)(o,s.name))};return r(e),n}function j(){let e=new Date,n=t=>String(t).padStart(2,"0");return`${e.getFullYear()}-${n(e.getMonth()+1)}-${n(e.getDate())}`}function re(e,n,t,r=!0){let o=(0,A.readFileSync)(e,"utf8"),c=o.includes(`\r
17
17
  `)?`\r
18
18
  `:`
19
19
  `,s=o.replace(/\r\n/g,`
20
- `),l=s;for(let[p,c]of Object.entries(t.replacements))l=l.replaceAll(p,c);for(;l.includes(`${t.deps}
20
+ `),l=s;for(let[p,i]of Object.entries(t.replacements))l=l.replaceAll(p,i);for(;l.includes(`${t.deps}
21
21
  ${t.deps}`);)l=l.replace(`${t.deps}
22
- ${t.deps}`,t.deps);for(;;){let p=l.replace(/^- (.+)\n- \1$/gm,"- $1");if(p===l)break;l=p}let i=l.split(`
23
- `),g=[];for(let p=0;p<i.length;p++)if(g.push(i[p]),/^## \d+\.\d+\.\d+/.test(i[p])){let c=p+1;for(;c<i.length&&i[c].trim()==="";)c++;i[c]?.startsWith("> ")&&/^> \d{4}-\d{2}-\d{2} (?:发布|released)$/.test(i[c].trim())||g.push(`> ${n} ${t.released}`)}let u=g.join(`
24
- `),h=b(u,r);return h!==s?((0,w.writeFileSync)(e,h.replace(/\n/g,a),"utf8"),!0):!1}function _(e,n,t,r=!0){let o=[];for(let a of q(e))oe(a,n,t,r)&&o.push(a);if(o.length===0)console.log("\u65E0 CHANGELOG \u9700\u8981\u66F4\u65B0");else for(let a of o)console.log(`changelog \u5DF2\u66F4\u65B0\uFF1A${a}`);return o}var se=(0,K.createRequire)(f),ae=se.resolve("@changesets/cli/bin.js"),E=e=>{let n=(0,Y.spawnSync)(process.execPath,[ae,...e],{stdio:"inherit"});n.status!==0&&process.exit(n.status??1)},z=process.argv.slice(2),X=z[0],k=z.slice(1),D=O(z);if(X==="tasks"){let e=k.indexOf("--dir"),n=e>=0&&k[e+1]?k[e+1]:".tasks";(k.find(r=>!r.startsWith("--")&&r!==n)||"list")==="archive"?J(n,D):P(n,D)}else if(X==="changelog"){let e=k.indexOf("--lang"),n=e>=0&&k[e+1]?k[e+1]:F,t=(e>=0?k.filter((o,a)=>a!==e&&a!==e+1):k).filter(o=>o!=="--no-redact"),r=t[0];r==="version"?(E(["version"]),_(".",L(),v[n]??v[F],D)):r==="format"?_(".",L(),v[n]??v[F],D):E(r?t:[])}else console.log("\u7528\u6CD5\uFF1Atoolkit <tasks|changelog> ..."),console.log(" toolkit tasks \u4EFB\u52A1\u603B\u89C8"),console.log(" toolkit tasks archive \u5F52\u6863\u5DF2\u5B8C\u6210\u4EFB\u52A1"),console.log(" toolkit changelog \u521B\u5EFA\u53D8\u66F4\u96C6"),console.log(" toolkit changelog version \u53D1\u7248 + \u591A\u8BED\u8A00\u683C\u5F0F\u5316"),console.log(" toolkit changelog format \u7EAF\u683C\u5F0F\u5316");
22
+ ${t.deps}`,t.deps);for(;;){let p=l.replace(/^- (.+)\n- \1$/gm,"- $1");if(p===l)break;l=p}let a=l.split(`
23
+ `),g=[];for(let p=0;p<a.length;p++)if(g.push(a[p]),/^## \d+\.\d+\.\d+/.test(a[p])){let i=p+1;for(;i<a.length&&a[i].trim()==="";)i++;a[i]?.startsWith("> ")&&/^> \d{4}-\d{2}-\d{2} (?:发布|released)$/.test(a[i].trim())||g.push(`> ${n} ${t.released}`)}let u=g.join(`
24
+ `),h=b(u,r);return h!==s?((0,A.writeFileSync)(e,h.replace(/\n/g,c),"utf8"),!0):!1}function E(e,n,t,r=!0){let o=[];for(let c of J(e))re(c,n,t,r)&&o.push(c);if(o.length===0)console.log("\u65E0 CHANGELOG \u9700\u8981\u66F4\u65B0");else for(let c of o)console.log(`changelog \u5DF2\u66F4\u65B0\uFF1A${c}`);return o}var K=(0,q.createRequire)(f),oe=K.resolve("@changesets/cli/bin.js"),{version:se}=K("../package.json"),_=e=>{let n=(0,X.spawnSync)(process.execPath,[oe,...e],{stdio:"inherit"});n.status!==0&&process.exit(n.status??1)},R=new H.Command;R.name("toolkit").description("\u5F00\u53D1\u5DE5\u7A0B\u5316\u5DE5\u5177\u96C6\uFF1A\u4EFB\u52A1\u7BA1\u7406 + \u591A\u8BED\u8A00 CHANGELOG \u53D1\u5E03").version(se,"-v, --version","\u663E\u793A\u7248\u672C\u53F7").enablePositionalOptions(!0);R.command("tasks").description("\u4EFB\u52A1\u7BA1\u7406").option("--dir <path>","\u4EFB\u52A1\u76EE\u5F55",".tasks").option("--no-redact","\u5173\u95ED\u9690\u79C1\u8131\u654F").argument("[command]","\u5B50\u547D\u4EE4\uFF1Aarchive \u5F52\u6863\uFF0C\u7559\u7A7A\u4E3A\u603B\u89C8").action((e,n)=>{let t=F(n.redact);e==="archive"?P(n.dir,t):G(n.dir,t)});R.command("changelog").description("\u591A\u8BED\u8A00 CHANGELOG\uFF08\u5C01\u88C5 changesets\uFF09").option("--lang <lang>","\u8BED\u8A00 zh/en",D).option("--no-redact","\u5173\u95ED\u9690\u79C1\u8131\u654F").argument("[command...]","\u5B50\u547D\u4EE4\u53CA\u53C2\u6570\uFF08\u900F\u4F20\u7ED9 changesets\uFF09").passThroughOptions(!0).action((e,n)=>{let t=F(n.redact),r=w[n.lang]??w[D],o=e[0];o==="version"?(_(["version"]),E(".",j(),r,t)):o==="format"?E(".",j(),r,t):_(o?e:[])});R.parse();
package/dist/cli.js CHANGED
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
- import{createRequire as ye}from"module";import{spawnSync as be}from"child_process";import{readFileSync as re}from"fs";import{join as oe,basename as O}from"path";function b(e){let n=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!n)return{};let t={};for(let r of n[1].split(/\r?\n/)){let o=r.indexOf(":");if(o===-1)continue;let a=r.slice(0,o).trim(),s=r.slice(o+1).trim();(s.startsWith("'")&&s.endsWith("'")||s.startsWith('"')&&s.endsWith('"'))&&(s=s.slice(1,-1)),a&&(t[a]=s)}return t}function x(e){let n=e.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return n?e.slice(n[0].length):e}import{existsSync as X,readdirSync as L,statSync as K}from"fs";import{join as _,basename as Y,extname as Q}from"path";function v(e){if(!X(e))return[];let n=[];for(let t of L(e)){let r=_(e,t);if(K(r).isDirectory())for(let o of L(r))o.endsWith(".md")&&n.push(_(r,o));else t.endsWith(".md")&&n.push(r)}return n}function z(e){let t=Y(e,Q(e)).match(/^(\d{8})/);return t?t[1]:""}import{readFileSync as V}from"fs";import{join as ee}from"path";var te=[{name:"\u5185\u7F51URL",pattern:/(https?:\/\/)[a-zA-Z0-9.-]+(:\d{2,5})(?=\/|[\s]|$)/g,replacement:"$1***$2"},{name:"\u90AE\u7BB1",pattern:/([a-zA-Z0-9._%+-])[a-zA-Z0-9._%+-]*@(?:[a-zA-Z0-9-]+\.)+([a-zA-Z]{2,})/g,replacement:"$1***@***.$2"},{name:"JWT",pattern:/\beyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,replacement:"eyJ***.eyJ***.***"},{name:"AWS\u5BC6\u94A5",pattern:/\b(AKIA|ASIA)[A-Z0-9]{16}\b/g,replacement:"$1****"},{name:"GitHub\u5BC6\u94A5",pattern:/\b(ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{36,}\b/g,replacement:"$1_****"},{name:"OpenAI\u5BC6\u94A5",pattern:/\bsk-[A-Za-z0-9]{20,}\b/g,replacement:"sk-****"},{name:"Slack\u5BC6\u94A5",pattern:/\b(xox[baprs])-[A-Za-z0-9-]{10,}\b/g,replacement:"$1-****"},{name:"\u624B\u673A\u53F7",pattern:/(?<!\d)(1[3-9]\d)\d{4}(\d{4})(?!\d)/g,replacement:"$1****$2"},{name:"\u8EAB\u4EFD\u8BC1",pattern:/(?<!\d)(\d{6})\d{8}(\d{3}[\dXx])(?!\d)/g,replacement:"$1********$2"},{name:"IPv4",pattern:/(?<![\d.])(\d{1,3}\.\d{1,3})\.\d{1,3}\.\d{1,3}(?![\d.])/g,replacement:"$1.***.***"}],$,S=null;function W(){if($!==void 0)return $;$=null;try{let e=V(ee(process.cwd(),".toolkitrc.json"),"utf8");$=JSON.parse(e).redact??null}catch{}return $}function ne(){if(S)return S;let e=W(),n=new Set(e?.disable??[]),t=[];for(let r of e?.rules??[])try{t.push({name:r.name,pattern:new RegExp(r.pattern,r.flags??""),replacement:r.replacement})}catch{}return S=[...t,...te.filter(r=>!n.has(r.name))],S}function k(e,n){if(!n||!e)return e;let t=e;for(let r of ne())t=t.replace(r.pattern,r.replacement);return t}function Z(e){return!(e.includes("--no-redact")||process.env.FX_REDACT==="0"||W()?.enabled===!1)}function se(e=".tasks"){let n=oe(e,"active");return v(n).map(t=>{let r=re(t,"utf8"),o=b(r),a=r.split(/\r?\n/).find(s=>s.startsWith("# ")&&!s.startsWith("#!"))?.replace(/^#\s*/,"")||O(t,".md");return{file:t,name:O(t,".md"),date:z(t),title:a,frontmatter:o,body:x(r).trim()}})}function N(e=".tasks",n=!0){let t=se(e);if(t.length===0){console.log("\u5F53\u524D\u65E0\u6D3B\u8DC3\u4EFB\u52A1");return}let r=["\u8FDB\u884C\u4E2D","\u963B\u585E","\u5F85\u529E","\u5DF2\u5B8C\u6210","\u5DF2\u653E\u5F03","\u672A\u6807\u6CE8"],o={};for(let s of t){let l=r.includes(s.frontmatter.status)?s.frontmatter.status:"\u672A\u6807\u6CE8";(o[l]||=[]).push(s)}console.log(`\u4EFB\u52A1\u603B\u89C8\uFF1A
3
- `);let a=0;for(let s of r){let l=o[s]||[];if(l.length!==0){a+=l.length,console.log(`\u3010${s}\u3011${l.length} \u9879`);for(let i of l)console.log(` ${i.date} ${(i.frontmatter.owner||"\u672A\u6807\u6CE8").padEnd(8)} ${k(i.title,n)}`);console.log("")}}console.log(`\u5171 ${a} \u4E2A\u4EFB\u52A1\u6587\u4EF6`)}import{readFileSync as B,writeFileSync as ae,mkdirSync as ie,unlinkSync as ce,existsSync as le,readdirSync as me,rmdirSync as pe}from"fs";import{join as T,basename as R,dirname as G,resolve as U,sep as ge}from"path";var M=["\u5DF2\u5B8C\u6210","\u5DF2\u653E\u5F03"];function de(e,n){let t=U(e),r=U(n);for(;t!==r&&t.startsWith(r+ge);){try{if(me(t).length>0)break;pe(t)}catch{break}t=G(t)}}function I(e){let n=e.trim().match(/^(\d{4})-(\d{1,2})-(\d{1,2})[T\s](\d{1,2}):(\d{2})(?::\d{2})?$/);return n?`${n[1]}-${n[2].padStart(2,"0")}-${n[3].padStart(2,"0")} ${n[4].padStart(2,"0")}:${n[5]}`:e}function fe(e){let n=B(e,"utf8"),t=[],r=/## (.+?)\n\n> [^\n]*完成时间:([^\n]+)\n\n([\s\S]*?)(?=\n\n---\n\n## |$)/g,o;for(;o=r.exec(n);)t.push({block:o[0].trim(),completed:o[2].trim()});return t}function P(e=".tasks",n=!0){let t=T(e,"active"),r=T(e,"archive"),o=v(t);if(o.length===0)return console.log("\u5F53\u524D\u65E0\u6D3B\u8DC3\u4EFB\u52A1\uFF0C\u65E0\u9700\u5F52\u6863"),{archived:0,skipped:[]};let a=[],s=[];for(let i of o){let p=B(i,"utf8"),g=b(p);if(!M.includes(g.status))continue;let d=I(g.completed||"");if(!d){s.push(R(i,".md")),console.log(`\u8DF3\u8FC7 ${R(i,".md")}\uFF1A\u7F3A\u5C11 completed \u5B8C\u6210\u65F6\u95F4`);continue}a.push({file:i,name:R(i,".md"),owner:g.owner||"\u672A\u6807\u6CE8",status:g.status||"\u672A\u6807\u6CE8",scope:g.scope||"-",completed:d,body:x(p).trim()})}if(a.length===0)return console.log("\u672C\u6B21\u65E0\u53EF\u5F52\u6863\u4EFB\u52A1"),{archived:0,skipped:s};let l={};for(let i of a){let p=i.completed.replace(/-/g,"").slice(0,8);(l[p]||=[]).push(i)}for(let[i,p]of Object.entries(l)){let g=T(r,i.slice(0,6));ie(g,{recursive:!0});let d=T(g,`${i}.md`),m=le(d)?fe(d):[];m.push(...p.map(c=>({block:`## ${c.name}
2
+ import{Command as ke}from"commander";import{createRequire as $e}from"module";import{spawnSync as be}from"child_process";import{readFileSync as te}from"fs";import{join as ne,basename as O}from"path";function $(e){let n=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!n)return{};let t={};for(let r of n[1].split(/\r?\n/)){let o=r.indexOf(":");if(o===-1)continue;let c=r.slice(0,o).trim(),s=r.slice(o+1).trim();(s.startsWith("'")&&s.endsWith("'")||s.startsWith('"')&&s.endsWith('"'))&&(s=s.slice(1,-1)),c&&(t[c]=s)}return t}function b(e){let n=e.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return n?e.slice(n[0].length):e}import{existsSync as H,readdirSync as E,statSync as q}from"fs";import{join as L,basename as X,extname as K}from"path";function y(e){if(!H(e))return[];let n=[];for(let t of E(e)){let r=L(e,t);if(q(r).isDirectory())for(let o of E(r))o.endsWith(".md")&&n.push(L(r,o));else t.endsWith(".md")&&n.push(r)}return n}function z(e){let t=X(e,K(e)).match(/^(\d{8})/);return t?t[1]:""}import{readFileSync as Y}from"fs";import{join as Q}from"path";var V=[{name:"\u5185\u7F51URL",pattern:/(https?:\/\/)[a-zA-Z0-9.-]+(:\d{2,5})(?=\/|[\s]|$)/g,replacement:"$1***$2"},{name:"\u90AE\u7BB1",pattern:/([a-zA-Z0-9._%+-])[a-zA-Z0-9._%+-]*@(?:[a-zA-Z0-9-]+\.)+([a-zA-Z]{2,})/g,replacement:"$1***@***.$2"},{name:"JWT",pattern:/\beyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,replacement:"eyJ***.eyJ***.***"},{name:"AWS\u5BC6\u94A5",pattern:/\b(AKIA|ASIA)[A-Z0-9]{16}\b/g,replacement:"$1****"},{name:"GitHub\u5BC6\u94A5",pattern:/\b(ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{36,}\b/g,replacement:"$1_****"},{name:"OpenAI\u5BC6\u94A5",pattern:/\bsk-[A-Za-z0-9]{20,}\b/g,replacement:"sk-****"},{name:"Slack\u5BC6\u94A5",pattern:/\b(xox[baprs])-[A-Za-z0-9-]{10,}\b/g,replacement:"$1-****"},{name:"\u624B\u673A\u53F7",pattern:/(?<!\d)(1[3-9]\d)\d{4}(\d{4})(?!\d)/g,replacement:"$1****$2"},{name:"\u8EAB\u4EFD\u8BC1",pattern:/(?<!\d)(\d{6})\d{8}(\d{3}[\dXx])(?!\d)/g,replacement:"$1********$2"},{name:"IPv4",pattern:/(?<![\d.])(\d{1,3}\.\d{1,3})\.\d{1,3}\.\d{1,3}(?![\d.])/g,replacement:"$1.***.***"}],k,v=null;function _(){if(k!==void 0)return k;k=null;try{let e=Y(Q(process.cwd(),".toolkitrc.json"),"utf8");k=JSON.parse(e).redact??null}catch{}return k}function ee(){if(v)return v;let e=_(),n=new Set(e?.disable??[]),t=[];for(let r of e?.rules??[])try{t.push({name:r.name,pattern:new RegExp(r.pattern,r.flags??""),replacement:r.replacement})}catch{}return v=[...t,...V.filter(r=>!n.has(r.name))],v}function h(e,n){if(!n||!e)return e;let t=e;for(let r of ee())t=t.replace(r.pattern,r.replacement);return t}function A(e){return!(!e||process.env.FX_REDACT==="0"||_()?.enabled===!1)}function re(e=".tasks"){let n=ne(e,"active");return y(n).map(t=>{let r=te(t,"utf8"),o=$(r),c=r.split(/\r?\n/).find(s=>s.startsWith("# ")&&!s.startsWith("#!"))?.replace(/^#\s*/,"")||O(t,".md");return{file:t,name:O(t,".md"),date:z(t),title:c,frontmatter:o,body:b(r).trim()}})}function N(e=".tasks",n=!0){let t=re(e);if(t.length===0){console.log("\u5F53\u524D\u65E0\u6D3B\u8DC3\u4EFB\u52A1");return}let r=["\u8FDB\u884C\u4E2D","\u963B\u585E","\u5F85\u529E","\u5DF2\u5B8C\u6210","\u5DF2\u653E\u5F03","\u672A\u6807\u6CE8"],o={};for(let s of t){let l=r.includes(s.frontmatter.status)?s.frontmatter.status:"\u672A\u6807\u6CE8";(o[l]||=[]).push(s)}console.log(`\u4EFB\u52A1\u603B\u89C8\uFF1A
3
+ `);let c=0;for(let s of r){let l=o[s]||[];if(l.length!==0){c+=l.length,console.log(`\u3010${s}\u3011${l.length} \u9879`);for(let a of l)console.log(` ${a.date} ${(a.frontmatter.owner||"\u672A\u6807\u6CE8").padEnd(8)} ${h(a.title,n)}`);console.log("")}}console.log(`\u5171 ${c} \u4E2A\u4EFB\u52A1\u6587\u4EF6`)}import{readFileSync as M,writeFileSync as oe,mkdirSync as se,unlinkSync as ae,existsSync as ie,readdirSync as ce,rmdirSync as le}from"fs";import{join as x,basename as S,dirname as U,resolve as Z,sep as me}from"path";var W=["\u5DF2\u5B8C\u6210","\u5DF2\u653E\u5F03"];function pe(e,n){let t=Z(e),r=Z(n);for(;t!==r&&t.startsWith(r+me);){try{if(ce(t).length>0)break;le(t)}catch{break}t=U(t)}}function G(e){let n=e.trim().match(/^(\d{4})-(\d{1,2})-(\d{1,2})[T\s](\d{1,2}):(\d{2})(?::\d{2})?$/);return n?`${n[1]}-${n[2].padStart(2,"0")}-${n[3].padStart(2,"0")} ${n[4].padStart(2,"0")}:${n[5]}`:e}function de(e){let n=M(e,"utf8"),t=[],r=/## (.+?)\n\n> [^\n]*完成时间:([^\n]+)\n\n([\s\S]*?)(?=\n\n---\n\n## |$)/g,o;for(;o=r.exec(n);)t.push({block:o[0].trim(),completed:o[2].trim()});return t}function P(e=".tasks",n=!0){let t=x(e,"active"),r=x(e,"archive"),o=y(t);if(o.length===0)return console.log("\u5F53\u524D\u65E0\u6D3B\u8DC3\u4EFB\u52A1\uFF0C\u65E0\u9700\u5F52\u6863"),{archived:0,skipped:[]};let c=[],s=[];for(let a of o){let p=M(a,"utf8"),d=$(p);if(!W.includes(d.status))continue;let g=G(d.completed||"");if(!g){s.push(S(a,".md")),console.log(`\u8DF3\u8FC7 ${S(a,".md")}\uFF1A\u7F3A\u5C11 completed \u5B8C\u6210\u65F6\u95F4`);continue}c.push({file:a,name:S(a,".md"),owner:d.owner||"\u672A\u6807\u6CE8",status:d.status||"\u672A\u6807\u6CE8",scope:d.scope||"-",completed:g,body:b(p).trim()})}if(c.length===0)return console.log("\u672C\u6B21\u65E0\u53EF\u5F52\u6863\u4EFB\u52A1"),{archived:0,skipped:s};let l={};for(let a of c){let p=a.completed.replace(/-/g,"").slice(0,8);(l[p]||=[]).push(a)}for(let[a,p]of Object.entries(l)){let d=x(r,a.slice(0,6));se(d,{recursive:!0});let g=x(d,`${a}.md`),m=ie(g)?de(g):[];m.push(...p.map(i=>({block:`## ${i.name}
4
4
 
5
- > \u8D1F\u8D23\u4EBA\uFF1A${c.owner}\u3000\u72B6\u6001\uFF1A${c.status}\u3000\u8303\u56F4\uFF1A${c.scope}\u3000\u5B8C\u6210\u65F6\u95F4\uFF1A${c.completed}
5
+ > \u8D1F\u8D23\u4EBA\uFF1A${i.owner}\u3000\u72B6\u6001\uFF1A${i.status}\u3000\u8303\u56F4\uFF1A${i.scope}\u3000\u5B8C\u6210\u65F6\u95F4\uFF1A${i.completed}
6
6
 
7
- ${k(c.body,n)}`,completed:c.completed})));for(let c of m)c.completed=I(c.completed);m.sort((c,E)=>E.completed.localeCompare(c.completed)),ae(d,`# ${i} \u5F52\u6863
7
+ ${h(i.body,n)}`,completed:i.completed})));for(let i of m)i.completed=G(i.completed);m.sort((i,j)=>j.completed.localeCompare(i.completed)),oe(g,`# ${a} \u5F52\u6863
8
8
 
9
9
  > \u672C\u6587\u4EF6\u7531 \`toolkit tasks archive\` \u81EA\u52A8\u751F\u6210\u3002
10
10
 
11
- ${m.map(c=>c.block).join(`
11
+ ${m.map(i=>i.block).join(`
12
12
 
13
13
  ---
14
14
 
15
15
  `)}
16
- `,"utf8");for(let c of p)ce(c.file);de(G(p[0].file),e),console.log(`\u5DF2\u5F52\u6863 ${p.length} \u4E2A\u4EFB\u52A1 \u2192 ${i}.md`)}return console.log(`\u5171\u5F52\u6863 ${a.length} \u4E2A\u4EFB\u52A1`),{archived:a.length,skipped:s}}var y={zh:{replacements:{"### Major Changes":"### \u{1F6A8} \u91CD\u5927\u53D8\u66F4","### \u91CD\u5927\u53D8\u66F4":"### \u{1F6A8} \u91CD\u5927\u53D8\u66F4","### Minor Changes":"### \u2728 \u65B0\u589E\u529F\u80FD","### \u65B0\u589E\u529F\u80FD":"### \u2728 \u65B0\u589E\u529F\u80FD","### Patch Changes":"### \u{1F41B} \u8865\u4E01\u4FEE\u590D","### \u8865\u4E01\u4FEE\u590D":"### \u{1F41B} \u8865\u4E01\u4FEE\u590D","### Dependent Changes":"### \u{1F517} \u4F9D\u8D56\u53D8\u66F4","### \u4F9D\u8D56\u53D8\u66F4":"### \u{1F517} \u4F9D\u8D56\u53D8\u66F4","- Updated dependencies":"- \u66F4\u65B0\u4F9D\u8D56"},deps:"- \u66F4\u65B0\u4F9D\u8D56",released:"\u53D1\u5E03"},en:{replacements:{"### Major Changes":"### \u{1F6A8} Major Changes","### Minor Changes":"### \u2728 Minor Changes","### Patch Changes":"### \u{1F41B} Patch Changes","### Dependent Changes":"### \u{1F517} Dependent Changes"},deps:"- Updated dependencies",released:"released"}},A="zh";import{readFileSync as he,writeFileSync as ke}from"fs";import{readdirSync as ue}from"fs";import{join as J}from"path";function H(e){let n=[],t=new Set(["node_modules",".git","dist"]),r=o=>{let a;try{a=ue(o,{withFileTypes:!0})}catch{return}for(let s of a)if(s.isDirectory()){if(t.has(s.name))continue;r(J(o,s.name))}else s.name==="CHANGELOG.md"&&n.push(J(o,s.name))};return r(e),n}function F(){let e=new Date,n=t=>String(t).padStart(2,"0");return`${e.getFullYear()}-${n(e.getMonth()+1)}-${n(e.getDate())}`}function $e(e,n,t,r=!0){let o=he(e,"utf8"),a=o.includes(`\r
16
+ `,"utf8");for(let i of p)ae(i.file);pe(U(p[0].file),e),console.log(`\u5DF2\u5F52\u6863 ${p.length} \u4E2A\u4EFB\u52A1 \u2192 ${a}.md`)}return console.log(`\u5171\u5F52\u6863 ${c.length} \u4E2A\u4EFB\u52A1`),{archived:c.length,skipped:s}}var C={zh:{replacements:{"### Major Changes":"### \u{1F6A8} \u91CD\u5927\u53D8\u66F4","### \u91CD\u5927\u53D8\u66F4":"### \u{1F6A8} \u91CD\u5927\u53D8\u66F4","### Minor Changes":"### \u2728 \u65B0\u589E\u529F\u80FD","### \u65B0\u589E\u529F\u80FD":"### \u2728 \u65B0\u589E\u529F\u80FD","### Patch Changes":"### \u{1F41B} \u8865\u4E01\u4FEE\u590D","### \u8865\u4E01\u4FEE\u590D":"### \u{1F41B} \u8865\u4E01\u4FEE\u590D","### Dependent Changes":"### \u{1F517} \u4F9D\u8D56\u53D8\u66F4","### \u4F9D\u8D56\u53D8\u66F4":"### \u{1F517} \u4F9D\u8D56\u53D8\u66F4","- Updated dependencies":"- \u66F4\u65B0\u4F9D\u8D56"},deps:"- \u66F4\u65B0\u4F9D\u8D56",released:"\u53D1\u5E03"},en:{replacements:{"### Major Changes":"### \u{1F6A8} Major Changes","### Minor Changes":"### \u2728 Minor Changes","### Patch Changes":"### \u{1F41B} Patch Changes","### Dependent Changes":"### \u{1F517} Dependent Changes"},deps:"- Updated dependencies",released:"released"}},R="zh";import{readFileSync as fe,writeFileSync as ue}from"fs";import{readdirSync as ge}from"fs";import{join as B}from"path";function I(e){let n=[],t=new Set(["node_modules",".git","dist"]),r=o=>{let c;try{c=ge(o,{withFileTypes:!0})}catch{return}for(let s of c)if(s.isDirectory()){if(t.has(s.name))continue;r(B(o,s.name))}else s.name==="CHANGELOG.md"&&n.push(B(o,s.name))};return r(e),n}function F(){let e=new Date,n=t=>String(t).padStart(2,"0");return`${e.getFullYear()}-${n(e.getMonth()+1)}-${n(e.getDate())}`}function he(e,n,t,r=!0){let o=fe(e,"utf8"),c=o.includes(`\r
17
17
  `)?`\r
18
18
  `:`
19
19
  `,s=o.replace(/\r\n/g,`
20
- `),l=s;for(let[m,c]of Object.entries(t.replacements))l=l.replaceAll(m,c);for(;l.includes(`${t.deps}
20
+ `),l=s;for(let[m,i]of Object.entries(t.replacements))l=l.replaceAll(m,i);for(;l.includes(`${t.deps}
21
21
  ${t.deps}`);)l=l.replace(`${t.deps}
22
- ${t.deps}`,t.deps);for(;;){let m=l.replace(/^- (.+)\n- \1$/gm,"- $1");if(m===l)break;l=m}let i=l.split(`
23
- `),p=[];for(let m=0;m<i.length;m++)if(p.push(i[m]),/^## \d+\.\d+\.\d+/.test(i[m])){let c=m+1;for(;c<i.length&&i[c].trim()==="";)c++;i[c]?.startsWith("> ")&&/^> \d{4}-\d{2}-\d{2} (?:发布|released)$/.test(i[c].trim())||p.push(`> ${n} ${t.released}`)}let g=p.join(`
24
- `),d=k(g,r);return d!==s?(ke(e,d.replace(/\n/g,a),"utf8"),!0):!1}function w(e,n,t,r=!0){let o=[];for(let a of H(e))$e(a,n,t,r)&&o.push(a);if(o.length===0)console.log("\u65E0 CHANGELOG \u9700\u8981\u66F4\u65B0");else for(let a of o)console.log(`changelog \u5DF2\u66F4\u65B0\uFF1A${a}`);return o}var xe=ye(import.meta.url),ve=xe.resolve("@changesets/cli/bin.js"),D=e=>{let n=be(process.execPath,[ve,...e],{stdio:"inherit"});n.status!==0&&process.exit(n.status??1)},j=process.argv.slice(2),q=j[0],h=j.slice(1),C=Z(j);if(q==="tasks"){let e=h.indexOf("--dir"),n=e>=0&&h[e+1]?h[e+1]:".tasks";(h.find(r=>!r.startsWith("--")&&r!==n)||"list")==="archive"?P(n,C):N(n,C)}else if(q==="changelog"){let e=h.indexOf("--lang"),n=e>=0&&h[e+1]?h[e+1]:A,t=(e>=0?h.filter((o,a)=>a!==e&&a!==e+1):h).filter(o=>o!=="--no-redact"),r=t[0];r==="version"?(D(["version"]),w(".",F(),y[n]??y[A],C)):r==="format"?w(".",F(),y[n]??y[A],C):D(r?t:[])}else console.log("\u7528\u6CD5\uFF1Atoolkit <tasks|changelog> ..."),console.log(" toolkit tasks \u4EFB\u52A1\u603B\u89C8"),console.log(" toolkit tasks archive \u5F52\u6863\u5DF2\u5B8C\u6210\u4EFB\u52A1"),console.log(" toolkit changelog \u521B\u5EFA\u53D8\u66F4\u96C6"),console.log(" toolkit changelog version \u53D1\u7248 + \u591A\u8BED\u8A00\u683C\u5F0F\u5316"),console.log(" toolkit changelog format \u7EAF\u683C\u5F0F\u5316");
22
+ ${t.deps}`,t.deps);for(;;){let m=l.replace(/^- (.+)\n- \1$/gm,"- $1");if(m===l)break;l=m}let a=l.split(`
23
+ `),p=[];for(let m=0;m<a.length;m++)if(p.push(a[m]),/^## \d+\.\d+\.\d+/.test(a[m])){let i=m+1;for(;i<a.length&&a[i].trim()==="";)i++;a[i]?.startsWith("> ")&&/^> \d{4}-\d{2}-\d{2} (?:发布|released)$/.test(a[i].trim())||p.push(`> ${n} ${t.released}`)}let d=p.join(`
24
+ `),g=h(d,r);return g!==s?(ue(e,g.replace(/\n/g,c),"utf8"),!0):!1}function w(e,n,t,r=!0){let o=[];for(let c of I(e))he(c,n,t,r)&&o.push(c);if(o.length===0)console.log("\u65E0 CHANGELOG \u9700\u8981\u66F4\u65B0");else for(let c of o)console.log(`changelog \u5DF2\u66F4\u65B0\uFF1A${c}`);return o}var J=$e(import.meta.url),ye=J.resolve("@changesets/cli/bin.js"),{version:ve}=J("../package.json"),D=e=>{let n=be(process.execPath,[ye,...e],{stdio:"inherit"});n.status!==0&&process.exit(n.status??1)},T=new ke;T.name("toolkit").description("\u5F00\u53D1\u5DE5\u7A0B\u5316\u5DE5\u5177\u96C6\uFF1A\u4EFB\u52A1\u7BA1\u7406 + \u591A\u8BED\u8A00 CHANGELOG \u53D1\u5E03").version(ve,"-v, --version","\u663E\u793A\u7248\u672C\u53F7").enablePositionalOptions(!0);T.command("tasks").description("\u4EFB\u52A1\u7BA1\u7406").option("--dir <path>","\u4EFB\u52A1\u76EE\u5F55",".tasks").option("--no-redact","\u5173\u95ED\u9690\u79C1\u8131\u654F").argument("[command]","\u5B50\u547D\u4EE4\uFF1Aarchive \u5F52\u6863\uFF0C\u7559\u7A7A\u4E3A\u603B\u89C8").action((e,n)=>{let t=A(n.redact);e==="archive"?P(n.dir,t):N(n.dir,t)});T.command("changelog").description("\u591A\u8BED\u8A00 CHANGELOG\uFF08\u5C01\u88C5 changesets\uFF09").option("--lang <lang>","\u8BED\u8A00 zh/en",R).option("--no-redact","\u5173\u95ED\u9690\u79C1\u8131\u654F").argument("[command...]","\u5B50\u547D\u4EE4\u53CA\u53C2\u6570\uFF08\u900F\u4F20\u7ED9 changesets\uFF09").passThroughOptions(!0).action((e,n)=>{let t=A(n.redact),r=C[n.lang]??C[R],o=e[0];o==="version"?(D(["version"]),w(".",F(),r,t)):o==="format"?w(".",F(),r,t):D(o?e:[])});T.parse();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fxri/toolkit",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "开发工程化工具集:任务管理 + 多语言 CHANGELOG 发布。",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -44,7 +44,8 @@
44
44
  "i18n"
45
45
  ],
46
46
  "dependencies": {
47
- "@changesets/cli": "^2.31.1"
47
+ "@changesets/cli": "^2.31.1",
48
+ "commander": "^14.0.0"
48
49
  },
49
50
  "devDependencies": {
50
51
  "@types/node": "^20.19.21",