@tikkhun/version 2025.7.7 → 2026.4.13

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.
Files changed (54) hide show
  1. package/README.md +179 -5
  2. package/dist/cli/date-version.js +4 -3
  3. package/dist/cli/date-version.mjs +4 -3
  4. package/dist/cli/node-version.js +4 -3
  5. package/dist/cli/node-version.mjs +4 -3
  6. package/dist/cli/semantic-version.js +4 -3
  7. package/dist/cli/semantic-version.mjs +4 -3
  8. package/dist/cli/shared.d.mts +130 -0
  9. package/dist/cli/shared.d.ts +130 -0
  10. package/dist/cli/shared.js +6 -0
  11. package/dist/cli/shared.mjs +6 -0
  12. package/dist/lib/VersionManager.d.mts +49 -14
  13. package/dist/lib/VersionManager.d.ts +49 -14
  14. package/dist/lib/VersionManager.js +4 -3
  15. package/dist/lib/VersionManager.mjs +4 -3
  16. package/dist/lib/VersionUpdateResult.d.mts +36 -24
  17. package/dist/lib/VersionUpdateResult.d.ts +36 -24
  18. package/dist/lib/VersionUpdateResult.js +2 -2
  19. package/dist/lib/VersionUpdateResult.mjs +2 -2
  20. package/dist/lib/getter/NodeVersionGetter.js +1 -1
  21. package/dist/lib/getter/NodeVersionGetter.mjs +1 -1
  22. package/dist/lib/getter/SemanticVersionGetter.js +1 -1
  23. package/dist/lib/getter/SemanticVersionGetter.mjs +1 -1
  24. package/dist/lib/getter/index.js +1 -1
  25. package/dist/lib/getter/index.mjs +1 -1
  26. package/dist/lib/index.d.mts +4 -1
  27. package/dist/lib/index.d.ts +4 -1
  28. package/dist/lib/index.js +4 -3
  29. package/dist/lib/index.mjs +4 -3
  30. package/dist/lib/store/ConfigStore.d.mts +69 -0
  31. package/dist/lib/store/ConfigStore.d.ts +69 -0
  32. package/dist/lib/store/ConfigStore.js +6 -0
  33. package/dist/lib/store/ConfigStore.mjs +6 -0
  34. package/dist/lib/store/JsonStore.d.mts +32 -9
  35. package/dist/lib/store/JsonStore.d.ts +32 -9
  36. package/dist/lib/store/JsonStore.js +4 -3
  37. package/dist/lib/store/JsonStore.mjs +4 -3
  38. package/dist/lib/store/Store.d.mts +182 -4
  39. package/dist/lib/store/Store.d.ts +182 -4
  40. package/dist/lib/store/StoreFactory.d.mts +14 -0
  41. package/dist/lib/store/StoreFactory.d.ts +14 -0
  42. package/dist/lib/store/StoreFactory.js +6 -0
  43. package/dist/lib/store/StoreFactory.mjs +6 -0
  44. package/dist/lib/store/TextStore.d.mts +62 -6
  45. package/dist/lib/store/TextStore.d.ts +62 -6
  46. package/dist/lib/store/TextStore.js +3 -3
  47. package/dist/lib/store/TextStore.mjs +3 -3
  48. package/dist/lib/store/index.d.mts +3 -1
  49. package/dist/lib/store/index.d.ts +3 -1
  50. package/dist/lib/store/index.js +4 -3
  51. package/dist/lib/store/index.mjs +4 -3
  52. package/dist/lib/utils.js +1 -1
  53. package/dist/lib/utils.mjs +1 -1
  54. package/package.json +10 -6
package/README.md CHANGED
@@ -2,7 +2,10 @@
2
2
 
3
3
  其实就是一个简单的版本控制器。
4
4
 
5
- - 可以生成版本,和保存版本
5
+ - 可以生成版本
6
+ - 可以读取版本
7
+ - 可以写入版本
8
+ - 可以批量更新多个目标文件
6
9
 
7
10
  ## 需求分析
8
11
 
@@ -17,20 +20,191 @@
17
20
  - 写入版本号
18
21
  - json、普通txt等的读取与写入
19
22
 
23
+ ## 当前能力
24
+
25
+ - `getter`: 负责生成新的版本值
26
+ - `store.get()`: 负责读取目标文件中的当前版本
27
+ - `store.set(value)`: 负责把指定版本写入目标文件
28
+ - `store.update(value)`: 负责执行一次更新语义的写入
29
+ - `VersionManager.read()`: 批量读取所有目标
30
+ - `VersionManager.set(value)`: 批量写入指定版本
31
+ - `VersionManager.update()`: 先通过 getter 生成版本, 再批量写入
32
+
33
+ ## 已支持的目标类型
34
+
35
+ - `json`
36
+ - `yaml`
37
+ - `toml`
38
+ - `xml`
39
+ - `env`
40
+ - `text.raw`
41
+ - `text.replace`
42
+
43
+ 结构化文件的读写优先复用 `@tikkhun/config-loader`, 文本文件由 `TextStore` 处理.
44
+
20
45
  ## 安装
21
46
 
22
47
  ```powershell
23
- npm install @tikkhun/version -D
48
+ pnpm add @tikkhun/version -D
24
49
 
25
50
  ```
26
51
 
27
52
  ## 使用
28
53
 
29
54
  ```powershell
30
- # 单纯获取
55
+ # 单纯生成日期版本
31
56
  date-version get
32
- # 更新package.json的版本
57
+ # 使用配置文件读取当前版本值
58
+ semantic-version read --config version.json --value-only
59
+ # 使用配置文件执行 patch 更新
60
+ semantic-version update --config version.json --position patch
61
+ # 读取 package.json 的版本
62
+ date-version read --file package.json --type json --key version
63
+ # 把日期版本更新到 package.json 的 version 字段
33
64
  date-version update
34
- #
65
+ # 把指定值写入 package.json 的 version 字段
66
+ date-version set 2026.04.13 --file package.json --type json --key version
67
+ # 读取 .node-version
68
+ node-version read
69
+ # 生成并写入当前 node 版本
35
70
  node-version save
71
+ # 读取 package.json 当前版本
72
+ semantic-version read --file package.json --type json --key version
73
+ # 把 patch +1 后写回 package.json
74
+ semantic-version update --position patch
75
+ ```
76
+
77
+ ## 配置文件驱动
78
+
79
+ 如果一个项目有多个版本落点, 更推荐直接使用 `version.json`, 而不是额外写脚本。
80
+
81
+ 例如:
82
+
83
+ ```json
84
+ {
85
+ "getter": {
86
+ "type": "semantic",
87
+ "file": "./package.json",
88
+ "key": "version",
89
+ "position": "patch"
90
+ },
91
+ "currentTargetIndex": 0,
92
+ "targets": [
93
+ {
94
+ "type": "json",
95
+ "file": "./package.json",
96
+ "path": "version"
97
+ },
98
+ {
99
+ "type": "text",
100
+ "file": "./wp-link-dispatcher.php",
101
+ "mode": "replace",
102
+ "pattern": "Version:\\s*(\\d+\\.\\d+\\.\\d+)",
103
+ "replacement": "Version: {{version}}"
104
+ }
105
+ ]
106
+ }
107
+ ```
108
+
109
+ 对应命令:
110
+
111
+ ```powershell
112
+ semantic-version read --config version.json --value-only
113
+ semantic-version update --config version.json --position patch
114
+ semantic-version update --config version.json --position minor
115
+ semantic-version update --config version.json --position major
116
+ ```
117
+
118
+ ## 代码示例
119
+
120
+ ```ts
121
+ import { SemanticVersionGetter, VersionManager } from '@tikkhun/version';
122
+
123
+ async function bootstrap() {
124
+ const manager = new VersionManager({
125
+ getter: new SemanticVersionGetter({
126
+ file: 'package.json',
127
+ key: 'version',
128
+ }),
129
+ targets: [
130
+ {
131
+ type: 'json',
132
+ file: 'package.json',
133
+ path: 'version',
134
+ },
135
+ {
136
+ type: 'text',
137
+ file: 'src/version.ts',
138
+ mode: 'replace',
139
+ pattern: "version\\s*=\\s*['\\\"]([^'\\\"]+)['\\\"]",
140
+ replacement: "version = '{{version}}'",
141
+ },
142
+ ],
143
+ });
144
+
145
+ const readResult = await manager.read();
146
+ const updateResult = await manager.update();
147
+
148
+ console.log(readResult);
149
+ console.log(updateResult);
150
+ }
151
+
152
+ bootstrap();
153
+ ```
154
+
155
+ ## WordPress 插件示例
156
+
157
+ 如果一个插件需要同时更新:
158
+
159
+ - `package.json` 的 `version`
160
+ - 主插件文件头部的 `Version:`
161
+ - 主插件文件里的 `WLD_VERSION`
162
+ - `README.txt` 里的 `Stable tag`
163
+
164
+ 可以直接声明多个 target:
165
+
166
+ ```ts
167
+ import { Positions, SemanticVersionGetter, VersionManager } from '@tikkhun/version';
168
+
169
+ async function bootstrap() {
170
+ const manager = new VersionManager({
171
+ getter: new SemanticVersionGetter({
172
+ file: 'package.json',
173
+ key: 'version',
174
+ position: Positions.patch,
175
+ }),
176
+ targets: [
177
+ {
178
+ type: 'json',
179
+ file: 'package.json',
180
+ path: 'version',
181
+ },
182
+ {
183
+ type: 'text',
184
+ file: 'wp-link-dispatcher.php',
185
+ mode: 'replace',
186
+ pattern: 'Version:\\s*(\\d+\\.\\d+\\.\\d+)',
187
+ replacement: 'Version: {{version}}',
188
+ },
189
+ {
190
+ type: 'text',
191
+ file: 'wp-link-dispatcher.php',
192
+ mode: 'replace',
193
+ pattern: "define\\('WLD_VERSION',\\s*'([^']+)'\\);",
194
+ replacement: "define('WLD_VERSION', '{{version}}');",
195
+ },
196
+ {
197
+ type: 'text',
198
+ file: 'README.txt',
199
+ mode: 'replace',
200
+ pattern: 'Stable tag:\\s*(\\d+\\.\\d+\\.\\d+)',
201
+ replacement: 'Stable tag: {{version}}',
202
+ },
203
+ ],
204
+ });
205
+
206
+ await manager.update();
207
+ }
208
+
209
+ bootstrap();
36
210
  ```
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
- 'use strict';var fsExtra=require('fs-extra'),logger=require('@tikkhun/logger'),dateVersion$1=require('@tikkhun/date-version'),utils=require('@tikkhun/utils'),commander=require('commander');/**
2
+ 'use strict';var fsExtra=require('fs-extra'),fastXmlParser=require('fast-xml-parser'),A=require('js-yaml'),lodash=require('lodash'),smolToml=require('smol-toml'),logger=require('@tikkhun/logger'),dateVersion$1=require('@tikkhun/date-version'),utils=require('@tikkhun/utils'),N=require('path'),commander=require('commander');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var A__default=/*#__PURE__*/_interopDefault(A);var N__default=/*#__PURE__*/_interopDefault(N);/**
3
3
  @tikkhun/version
4
- 2025.7.7
4
+ 2026.4.13
5
5
  */
6
- var I=Object.defineProperty,D=Object.defineProperties;var M=Object.getOwnPropertyDescriptors;var S=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable;var w=(r,t,e)=>t in r?I(r,t,{enumerable:true,configurable:true,writable:true,value:e}):r[t]=e,d=(r,t)=>{for(var e in t||(t={}))R.call(t,e)&&w(r,e,t[e]);if(S)for(var e of S(t))U.call(t,e)&&w(r,e,t[e]);return r},x=(r,t)=>D(r,M(t));var o=(r,t)=>()=>(r&&(t=r(r=0)),t);var L=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var i=(r,t,e)=>new Promise((a,n)=>{var A=s=>{try{c(e.next(s));}catch(g){n(g);}},G=s=>{try{c(e.throw(s));}catch(g){n(g);}},c=s=>s.done?a(s.value):Promise.resolve(s.value).then(A,G);c((e=e.apply(r,t)).next());});var l,p,E=o(()=>{l={file:"package.json",key:"version"},p=class{constructor(t){this.opts=Object.assign({},l,t);}update(t){return i(this,null,function*(){try{let e=yield fsExtra.readJson(this.opts.file);return yield fsExtra.writeJson(this.opts.file,x(d({},e),{[this.opts.key]:t}),{spaces:2}),!0}catch(e){return false}})}};});var T=o(()=>{});var u=o(()=>{process.cwd();});var y=o(()=>{u();});var h=o(()=>{E();T();y();});var z,m,_=o(()=>{h();z={getter:{get(){return dateVersion$1.getDateVersion()}},store:new p},m=class{constructor(t){this.logger=new logger.Logger("VersionManager");this.opts=Object.assign({},z,t);}get(){return this.opts.getter.get()}update(){return i(this,null,function*(){let t=yield this.get();this.logger.log("new version: "+t);let e=Array.isArray(this.opts.store)?this.opts.store:[this.opts.store];try{if((yield Promise.all(e.map(n=>n.update(t)))).filter(n=>!n).length)throw new Error("update, but error");return !0}catch(a){return false}})}};});var b=o(()=>{});var N=o(()=>{});var v=o(()=>{});var V=o(()=>{b();N();v();});var J=o(()=>{_();u();h();V();});var H=L(k=>{J();logger.Logger.log("[\u6B22\u8FCE] date-version");commander.program.command("update").description("\u66F4\u65B0JSON").option("-f --format <format>","\u65E5\u671F\u683C\u5F0F",dateVersion$1.DEFAULT_DATE_VERSION_GETTER_OPTIONS.pattern).option("-p --path <filePath>","json\u6587\u4EF6\u8DEF\u5F84",l.file).action(r=>i(null,null,function*(){let t=utils.findUp(r.path,process.cwd());if(!t)throw new Error(`\u66F4\u65B0\u7248\u672C\u53F7\uFF0C\u4F46\u5931\u8D25\uFF0C\u65E0\u6CD5\u83B7\u53D6${r.path}\u6587\u4EF6\u8DEF\u5F84`);logger.Logger.debug("\u66F4\u65B0\u7684\u6587\u4EF6\u8DEF\u5F84: "+t),(yield new m({getter:{get(){return dateVersion$1.getDateVersion()}},store:new p({file:r.path,key:"version"})}).update())&&logger.Logger.debug("package json \u7684\u7248\u672C\u66F4\u65B0\u6210\u529F");}));commander.program.command("get").description("\u83B7\u53D6\u7248\u672C").option("-p --pattern <pattern>","\u65E5\u671F\u683C\u5F0F",dateVersion$1.DEFAULT_DATE_VERSION_GETTER_OPTIONS.pattern).action(({pattern:r})=>{logger.Logger.log(dateVersion$1.getDateVersion({pattern:r}));});commander.program.parse(process.argv);});var dateVersion = H();module.exports=dateVersion;
6
+ var Z=Object.defineProperty,tt=Object.defineProperties;var et=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var rt=Object.prototype.hasOwnProperty,st=Object.prototype.propertyIsEnumerable;var j=(r,t,e)=>t in r?Z(r,t,{enumerable:true,configurable:true,writable:true,value:e}):r[t]=e,u=(r,t)=>{for(var e in t||(t={}))rt.call(t,e)&&j(r,e,t[e]);if(I)for(var e of I(t))st.call(t,e)&&j(r,e,t[e]);return r},f=(r,t)=>tt(r,et(t));var a=(r,t)=>()=>(r&&(t=r(r=0)),t);var ot=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var n=(r,t,e)=>new Promise((s,o)=>{var i=p=>{try{g(e.next(p));}catch(O){o(O);}},c=p=>{try{g(e.throw(p));}catch(O){o(O);}},g=p=>p.done?s(p.value):Promise.resolve(p.value).then(i,c);g((e=e.apply(r,t)).next());});var m,S=a(()=>{m=class{constructor(t){this.target=t;}get(){return n(this,null,function*(){var t;try{if(!(yield fsExtra.pathExists(this.target.file)))return this.createGetError(`file is not found: ${this.target.file}`);let e=yield this.loadStructuredConfig(),s=this.target.path?lodash.get(e,this.target.path):e;return s===void 0?this.createGetError(`path is not found: ${(t=this.target.path)!=null?t:"<root>"}`):typeof s!="string"&&typeof s!="number"?this.createGetError(`value is not string or number: ${JSON.stringify(s)}`):{action:"get",success:!0,file:this.target.file,type:this.target.type,value:s}}catch(e){return this.createGetError(this.getErrorMessage(e))}})}set(t){return n(this,null,function*(){try{let e=yield this.get(),s=e.success?e.value:void 0,o=yield fsExtra.pathExists(this.target.file);if(!o){if(!this.target.createIfNotExists)return this.createSetError(t,`file is not found: ${this.target.file}`,s,"set");yield fsExtra.ensureFile(this.target.file);}let i=o?yield this.loadStructuredConfig():{};if(this.target.path)lodash.set(i,this.target.path,t),yield this.saveStructuredConfig(i);else {if(typeof i=="object"&&i!==null&&!Array.isArray(i))return this.createSetError(t,"path is required for structured target",s,"set");yield this.saveStructuredConfig(t);}return {action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:s,newValue:t}}catch(e){return this.createSetError(t,this.getErrorMessage(e),void 0,"set")}})}update(t){return n(this,null,function*(){let e=yield this.set(t);return f(u({},e),{action:"update"})})}createGetError(t){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:t}}createSetError(t,e,s,o="set"){return {action:o,success:false,file:this.target.file,type:this.target.type,oldValue:s,newValue:t,message:e}}getErrorMessage(t){return t instanceof Error?t.message:String(t)}loadStructuredConfig(){return n(this,null,function*(){var e;let t=yield fsExtra.readFile(this.target.file,(e=this.target.encoding)!=null?e:"utf8");switch(this.target.type){case "json":return JSON.parse(t);case "yaml":return A__default.default.load(t);case "toml":return smolToml.parse(t);case "xml":return new fastXmlParser.XMLParser({ignoreAttributes:true}).parse(t);case "env":return this.parseEnvContent(t);default:throw new Error(`unsupported structured target type: ${this.target.type}`)}})}saveStructuredConfig(t){return n(this,null,function*(){var s;let e=(s=this.target.encoding)!=null?s:"utf8";switch(this.target.type){case "json":yield fsExtra.writeFile(this.target.file,JSON.stringify(t,null,2),e);return;case "yaml":yield fsExtra.writeFile(this.target.file,A__default.default.dump(t),e);return;case "toml":yield fsExtra.writeFile(this.target.file,smolToml.stringify(t),e);return;case "xml":yield fsExtra.writeFile(this.target.file,new fastXmlParser.XMLBuilder({format:true,ignoreAttributes:true}).build(t),e);return;case "env":yield fsExtra.writeFile(this.target.file,this.stringifyEnvContent(t),e);return;default:throw new Error(`unsupported structured target type: ${this.target.type}`)}})}parseEnvContent(t){let e={},s=t.split(/\r?\n/);for(let o of s){let i=o.trim();if(!i||i.startsWith("#"))continue;let c=i.indexOf("=");if(c<0)continue;let g=i.slice(0,c).trim(),p=i.slice(c+1).trim();lodash.set(e,g.replace(/__/g,"."),p);}return e}stringifyEnvContent(t){let e=[],s=(o,i)=>{if(o!==null&&typeof o=="object"&&!Array.isArray(o)){for(let[g,p]of Object.entries(o))s(p,[...i,g]);return}let c=i.join("__").toUpperCase();e.push(`${c}=${o!=null?o:""}`);};for(let[o,i]of Object.entries(t))s(i,[o]);return e.join(`
7
+ `)}};});var l,x,L=a(()=>{S();l={file:"package.json",key:"version"},x=class extends m{constructor(t){var o;let e=Object.assign({},l,t),s={type:"json",file:e.file,path:(o=e.path)!=null?o:e.key,createIfNotExists:e.createIfNotExists};super(s);}};});var $=a(()=>{});var mt,w,P=a(()=>{mt={file:"",mode:"raw",trim:true,replacement:"{{version}}"},w=class{constructor(t){this.target=u(u({type:"text"},mt),t);}get(){return n(this,null,function*(){var t;try{if(!(yield fsExtra.pathExists(this.target.file)))return this.createGetError(`file is not found: ${this.target.file}`);let e=yield fsExtra.readFile(this.target.file,(t=this.target.encoding)!=null?t:"utf8"),s=this.resolveValueFromText(e);return s===void 0?this.createGetError("version is not found in text content"):{action:"get",success:!0,file:this.target.file,type:this.target.type,value:s}}catch(e){return this.createGetError(this.getErrorMessage(e))}})}set(t){return n(this,null,function*(){try{let e=yield this.get(),s=e.success?e.value:void 0,o=yield this.createNextText(t);return yield this.writeText(o),{action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:s,newValue:t}}catch(e){return {action:"set",success:false,file:this.target.file,type:this.target.type,newValue:t,message:this.getErrorMessage(e)}}})}update(t){return n(this,null,function*(){let e=yield this.set(t);return f(u({},e),{action:"update"})})}resolveValueFromText(t){var e;if(this.target.mode==="replace"){let o=this.createPattern().exec(t);if(!o)return;let i=(e=o.groups)==null?void 0:e.version;return i!==void 0?i:o[1]!==void 0?o[1]:o[0]}return this.target.trim?t.trim():t}createNextText(t){return n(this,null,function*(){var e,s;if(this.target.mode==="replace"){if(!(yield fsExtra.pathExists(this.target.file)))throw new Error(`file is not found: ${this.target.file}`);let o=yield fsExtra.readFile(this.target.file,(e=this.target.encoding)!=null?e:"utf8");if(!this.createPattern().test(o))throw new Error("pattern is not matched");let c=((s=this.target.replacement)!=null?s:"{{version}}").replaceAll("{{version}}",String(t));return o.replace(this.createPattern(),c)}return String(t)})}writeText(t){return n(this,null,function*(){var e;if(!(yield fsExtra.pathExists(this.target.file))){if(!this.target.createIfNotExists)throw new Error(`file is not found: ${this.target.file}`);yield fsExtra.ensureFile(this.target.file);}yield fsExtra.writeFile(this.target.file,t,(e=this.target.encoding)!=null?e:"utf8");})}createPattern(){if(!this.target.pattern)throw new Error("pattern is required when text mode is replace");return new RegExp(this.target.pattern,this.target.flags)}createGetError(t){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:t}}getErrorMessage(t){return t instanceof Error?t.message:String(t)}};});var T,C,D=a(()=>{S();P();T=class{static create(t){return t.type==="text"?new w(t):t.type==="custom"?new C(t):new m(t)}},C=class{constructor(t){this.target=t;}get(){return n(this,null,function*(){if(!this.target.get)return {action:"get",success:false,file:this.target.file,type:this.target.type,message:"custom get is not implemented"};try{let t=yield this.target.get(this.target.file);return {action:"get",success:!0,file:this.target.file,type:this.target.type,value:t}}catch(t){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:t instanceof Error?t.message:String(t)}}})}set(t){return n(this,null,function*(){try{let e=yield this.get();return this.target.set?(yield this.target.set(t,this.target.file),{action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:e.success?e.value:void 0,newValue:t}):{action:"set",success:!1,file:this.target.file,type:this.target.type,oldValue:e.success?e.value:void 0,newValue:t,message:"custom set is not implemented"}}catch(e){return {action:"set",success:false,file:this.target.file,type:this.target.type,newValue:t,message:e instanceof Error?e.message:String(e)}}})}update(t){return n(this,null,function*(){let e=yield this.set(t);return f(u({},e),{action:"update"})})}};});var G=a(()=>{S();L();$();D();P();});var d,b=a(()=>{d=class{static create(t,e){return {success:t.every(s=>s.success),value:e,results:t}}};});var yt,h,B=a(()=>{G();b();yt={getter:{get(){return dateVersion$1.getDateVersion()}},store:new x,targets:[]},h=class{constructor(t){this.logger=new logger.Logger("VersionManager");this.opts=Object.assign({},yt,t);}get(){return this.opts.getter.get()}read(){return n(this,null,function*(){let t=this.resolveStores(),e=[];for(let s of t)e.push(yield s.get());return d.create(e)})}set(t){return n(this,null,function*(){this.logger.log("set version: "+t);let e=this.resolveStores(),s=[];for(let o of e)s.push(yield o.set(t));return d.create(s,t)})}update(){return n(this,null,function*(){let t=yield this.get();this.logger.log("new version: "+t);let e=this.resolveStores(),s=[];for(let o of e)s.push(yield o.update(t));return d.create(s,t)})}resolveStores(){var t;return (t=this.opts.targets)!=null&&t.length?this.opts.targets.map(e=>T.create(e)):Array.isArray(this.opts.store)?this.opts.store:[this.opts.store]}};});var U=a(()=>{process.cwd();});var X=a(()=>{});var q=a(()=>{});var K=a(()=>{});var W=a(()=>{X();q();K();});var M=a(()=>{B();b();U();G();W();});function xt(r,t=process.cwd(),e=true){var s;return N__default.default.isAbsolute(r)?r:e?(s=utils.findUp(r,t))!=null?s:N__default.default.resolve(t,r):N__default.default.resolve(t,r)}function E(r,t=process.cwd(),e=true){var o,i,c,g;let s=xt(r.file,t,e);if(r.type==="text")return {type:"text",file:s,mode:(o=r.mode)!=null?o:"raw",pattern:r.pattern,replacement:r.replacement,trim:(i=r.trim)!=null?i:true,createIfNotExists:r.createIfNotExists};if(r.type==="custom")throw new Error("cli does not support custom target directly");return {type:r.type,file:s,path:(g=(c=r.path)!=null?c:r.key)!=null?g:"version",createIfNotExists:r.createIfNotExists}}function R(r){logger.Logger.log(JSON.stringify(r,null,2));}var z=a(()=>{M();});var wt=ot(v=>{M();z();logger.Logger.log("[\u6B22\u8FCE] date-version");commander.program.command("update").description("\u751F\u6210\u65E5\u671F\u7248\u672C\u5E76\u5199\u5165\u76EE\u6807\u6587\u4EF6").option("-f --format <format>","\u65E5\u671F\u683C\u5F0F",dateVersion$1.DEFAULT_DATE_VERSION_GETTER_OPTIONS.pattern).option("-F --file <filePath>","\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84",l.file).option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","json").option("-k --key <key>","\u517C\u5BB9\u65E7\u7248 key \u53C2\u6570",l.key).option("--path <path>","\u7ED3\u6784\u5316\u8DEF\u5F84").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").option("--replacement <replacement>","\u6587\u672C\u66FF\u6362\u6A21\u677F","{{version}}").option("--create-if-not-exists","\u6587\u4EF6\u4E0D\u5B58\u5728\u65F6\u81EA\u52A8\u521B\u5EFA",false).action(r=>n(null,null,function*(){let e=yield new h({getter:{get(){return dateVersion$1.getDateVersion({pattern:r.format})}},targets:[E(r)]}).update();R(e);}));commander.program.command("get").description("\u751F\u6210\u65E5\u671F\u7248\u672C").option("-p --pattern <pattern>","\u65E5\u671F\u683C\u5F0F",dateVersion$1.DEFAULT_DATE_VERSION_GETTER_OPTIONS.pattern).action(({pattern:r})=>{logger.Logger.log(dateVersion$1.getDateVersion({pattern:r}));});commander.program.command("read").description("\u8BFB\u53D6\u76EE\u6807\u6587\u4EF6\u4E2D\u7684\u7248\u672C").option("-F --file <filePath>","\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84",l.file).option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","json").option("-k --key <key>","\u517C\u5BB9\u65E7\u7248 key \u53C2\u6570",l.key).option("--path <path>","\u7ED3\u6784\u5316\u8DEF\u5F84").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").action(r=>n(null,null,function*(){let e=yield new h({targets:[E(r)]}).read();R(e);}));commander.program.command("set").description("\u628A\u6307\u5B9A\u7248\u672C\u503C\u5199\u5165\u76EE\u6807\u6587\u4EF6").argument("<value>","\u7248\u672C\u503C").option("-F --file <filePath>","\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84",l.file).option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","json").option("-k --key <key>","\u517C\u5BB9\u65E7\u7248 key \u53C2\u6570",l.key).option("--path <path>","\u7ED3\u6784\u5316\u8DEF\u5F84").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").option("--replacement <replacement>","\u6587\u672C\u66FF\u6362\u6A21\u677F","{{version}}").option("--create-if-not-exists","\u6587\u4EF6\u4E0D\u5B58\u5728\u65F6\u81EA\u52A8\u521B\u5EFA",false).action((r,t)=>n(null,null,function*(){let s=yield new h({targets:[E(t)]}).set(r);R(s);}));commander.program.parse(process.argv);});var dateVersion = wt();module.exports=dateVersion;
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import {readJson,writeJson}from'fs-extra';import {Logger}from'@tikkhun/logger';import {DEFAULT_DATE_VERSION_GETTER_OPTIONS,getDateVersion}from'@tikkhun/date-version';import {findUp}from'@tikkhun/utils';import {program}from'commander';/**
2
+ import {pathExists,readFile,ensureFile,writeFile}from'fs-extra';import {XMLParser,XMLBuilder}from'fast-xml-parser';import A from'js-yaml';import {get,set}from'lodash';import {parse,stringify}from'smol-toml';import {Logger}from'@tikkhun/logger';import {DEFAULT_DATE_VERSION_GETTER_OPTIONS,getDateVersion}from'@tikkhun/date-version';import {findUp}from'@tikkhun/utils';import N from'path';import {program}from'commander';/**
3
3
  @tikkhun/version
4
- 2025.7.7
4
+ 2026.4.13
5
5
  */
6
- var I=Object.defineProperty,D=Object.defineProperties;var M=Object.getOwnPropertyDescriptors;var S=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable;var w=(r,t,e)=>t in r?I(r,t,{enumerable:true,configurable:true,writable:true,value:e}):r[t]=e,d=(r,t)=>{for(var e in t||(t={}))R.call(t,e)&&w(r,e,t[e]);if(S)for(var e of S(t))U.call(t,e)&&w(r,e,t[e]);return r},x=(r,t)=>D(r,M(t));var o=(r,t)=>()=>(r&&(t=r(r=0)),t);var L=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var i=(r,t,e)=>new Promise((a,n)=>{var A=s=>{try{c(e.next(s));}catch(g){n(g);}},G=s=>{try{c(e.throw(s));}catch(g){n(g);}},c=s=>s.done?a(s.value):Promise.resolve(s.value).then(A,G);c((e=e.apply(r,t)).next());});var l,p,E=o(()=>{l={file:"package.json",key:"version"},p=class{constructor(t){this.opts=Object.assign({},l,t);}update(t){return i(this,null,function*(){try{let e=yield readJson(this.opts.file);return yield writeJson(this.opts.file,x(d({},e),{[this.opts.key]:t}),{spaces:2}),!0}catch(e){return false}})}};});var T=o(()=>{});var u=o(()=>{process.cwd();});var y=o(()=>{u();});var h=o(()=>{E();T();y();});var z,m,_=o(()=>{h();z={getter:{get(){return getDateVersion()}},store:new p},m=class{constructor(t){this.logger=new Logger("VersionManager");this.opts=Object.assign({},z,t);}get(){return this.opts.getter.get()}update(){return i(this,null,function*(){let t=yield this.get();this.logger.log("new version: "+t);let e=Array.isArray(this.opts.store)?this.opts.store:[this.opts.store];try{if((yield Promise.all(e.map(n=>n.update(t)))).filter(n=>!n).length)throw new Error("update, but error");return !0}catch(a){return false}})}};});var b=o(()=>{});var N=o(()=>{});var v=o(()=>{});var V=o(()=>{b();N();v();});var J=o(()=>{_();u();h();V();});var H=L(k=>{J();Logger.log("[\u6B22\u8FCE] date-version");program.command("update").description("\u66F4\u65B0JSON").option("-f --format <format>","\u65E5\u671F\u683C\u5F0F",DEFAULT_DATE_VERSION_GETTER_OPTIONS.pattern).option("-p --path <filePath>","json\u6587\u4EF6\u8DEF\u5F84",l.file).action(r=>i(null,null,function*(){let t=findUp(r.path,process.cwd());if(!t)throw new Error(`\u66F4\u65B0\u7248\u672C\u53F7\uFF0C\u4F46\u5931\u8D25\uFF0C\u65E0\u6CD5\u83B7\u53D6${r.path}\u6587\u4EF6\u8DEF\u5F84`);Logger.debug("\u66F4\u65B0\u7684\u6587\u4EF6\u8DEF\u5F84: "+t),(yield new m({getter:{get(){return getDateVersion()}},store:new p({file:r.path,key:"version"})}).update())&&Logger.debug("package json \u7684\u7248\u672C\u66F4\u65B0\u6210\u529F");}));program.command("get").description("\u83B7\u53D6\u7248\u672C").option("-p --pattern <pattern>","\u65E5\u671F\u683C\u5F0F",DEFAULT_DATE_VERSION_GETTER_OPTIONS.pattern).action(({pattern:r})=>{Logger.log(getDateVersion({pattern:r}));});program.parse(process.argv);});var dateVersion = H();export{dateVersion as default};
6
+ var Z=Object.defineProperty,tt=Object.defineProperties;var et=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var rt=Object.prototype.hasOwnProperty,st=Object.prototype.propertyIsEnumerable;var j=(r,t,e)=>t in r?Z(r,t,{enumerable:true,configurable:true,writable:true,value:e}):r[t]=e,u=(r,t)=>{for(var e in t||(t={}))rt.call(t,e)&&j(r,e,t[e]);if(I)for(var e of I(t))st.call(t,e)&&j(r,e,t[e]);return r},f=(r,t)=>tt(r,et(t));var a=(r,t)=>()=>(r&&(t=r(r=0)),t);var ot=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var n=(r,t,e)=>new Promise((s,o)=>{var i=p=>{try{g(e.next(p));}catch(O){o(O);}},c=p=>{try{g(e.throw(p));}catch(O){o(O);}},g=p=>p.done?s(p.value):Promise.resolve(p.value).then(i,c);g((e=e.apply(r,t)).next());});var m,S=a(()=>{m=class{constructor(t){this.target=t;}get(){return n(this,null,function*(){var t;try{if(!(yield pathExists(this.target.file)))return this.createGetError(`file is not found: ${this.target.file}`);let e=yield this.loadStructuredConfig(),s=this.target.path?get(e,this.target.path):e;return s===void 0?this.createGetError(`path is not found: ${(t=this.target.path)!=null?t:"<root>"}`):typeof s!="string"&&typeof s!="number"?this.createGetError(`value is not string or number: ${JSON.stringify(s)}`):{action:"get",success:!0,file:this.target.file,type:this.target.type,value:s}}catch(e){return this.createGetError(this.getErrorMessage(e))}})}set(t){return n(this,null,function*(){try{let e=yield this.get(),s=e.success?e.value:void 0,o=yield pathExists(this.target.file);if(!o){if(!this.target.createIfNotExists)return this.createSetError(t,`file is not found: ${this.target.file}`,s,"set");yield ensureFile(this.target.file);}let i=o?yield this.loadStructuredConfig():{};if(this.target.path)set(i,this.target.path,t),yield this.saveStructuredConfig(i);else {if(typeof i=="object"&&i!==null&&!Array.isArray(i))return this.createSetError(t,"path is required for structured target",s,"set");yield this.saveStructuredConfig(t);}return {action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:s,newValue:t}}catch(e){return this.createSetError(t,this.getErrorMessage(e),void 0,"set")}})}update(t){return n(this,null,function*(){let e=yield this.set(t);return f(u({},e),{action:"update"})})}createGetError(t){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:t}}createSetError(t,e,s,o="set"){return {action:o,success:false,file:this.target.file,type:this.target.type,oldValue:s,newValue:t,message:e}}getErrorMessage(t){return t instanceof Error?t.message:String(t)}loadStructuredConfig(){return n(this,null,function*(){var e;let t=yield readFile(this.target.file,(e=this.target.encoding)!=null?e:"utf8");switch(this.target.type){case "json":return JSON.parse(t);case "yaml":return A.load(t);case "toml":return parse(t);case "xml":return new XMLParser({ignoreAttributes:true}).parse(t);case "env":return this.parseEnvContent(t);default:throw new Error(`unsupported structured target type: ${this.target.type}`)}})}saveStructuredConfig(t){return n(this,null,function*(){var s;let e=(s=this.target.encoding)!=null?s:"utf8";switch(this.target.type){case "json":yield writeFile(this.target.file,JSON.stringify(t,null,2),e);return;case "yaml":yield writeFile(this.target.file,A.dump(t),e);return;case "toml":yield writeFile(this.target.file,stringify(t),e);return;case "xml":yield writeFile(this.target.file,new XMLBuilder({format:true,ignoreAttributes:true}).build(t),e);return;case "env":yield writeFile(this.target.file,this.stringifyEnvContent(t),e);return;default:throw new Error(`unsupported structured target type: ${this.target.type}`)}})}parseEnvContent(t){let e={},s=t.split(/\r?\n/);for(let o of s){let i=o.trim();if(!i||i.startsWith("#"))continue;let c=i.indexOf("=");if(c<0)continue;let g=i.slice(0,c).trim(),p=i.slice(c+1).trim();set(e,g.replace(/__/g,"."),p);}return e}stringifyEnvContent(t){let e=[],s=(o,i)=>{if(o!==null&&typeof o=="object"&&!Array.isArray(o)){for(let[g,p]of Object.entries(o))s(p,[...i,g]);return}let c=i.join("__").toUpperCase();e.push(`${c}=${o!=null?o:""}`);};for(let[o,i]of Object.entries(t))s(i,[o]);return e.join(`
7
+ `)}};});var l,x,L=a(()=>{S();l={file:"package.json",key:"version"},x=class extends m{constructor(t){var o;let e=Object.assign({},l,t),s={type:"json",file:e.file,path:(o=e.path)!=null?o:e.key,createIfNotExists:e.createIfNotExists};super(s);}};});var $=a(()=>{});var mt,w,P=a(()=>{mt={file:"",mode:"raw",trim:true,replacement:"{{version}}"},w=class{constructor(t){this.target=u(u({type:"text"},mt),t);}get(){return n(this,null,function*(){var t;try{if(!(yield pathExists(this.target.file)))return this.createGetError(`file is not found: ${this.target.file}`);let e=yield readFile(this.target.file,(t=this.target.encoding)!=null?t:"utf8"),s=this.resolveValueFromText(e);return s===void 0?this.createGetError("version is not found in text content"):{action:"get",success:!0,file:this.target.file,type:this.target.type,value:s}}catch(e){return this.createGetError(this.getErrorMessage(e))}})}set(t){return n(this,null,function*(){try{let e=yield this.get(),s=e.success?e.value:void 0,o=yield this.createNextText(t);return yield this.writeText(o),{action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:s,newValue:t}}catch(e){return {action:"set",success:false,file:this.target.file,type:this.target.type,newValue:t,message:this.getErrorMessage(e)}}})}update(t){return n(this,null,function*(){let e=yield this.set(t);return f(u({},e),{action:"update"})})}resolveValueFromText(t){var e;if(this.target.mode==="replace"){let o=this.createPattern().exec(t);if(!o)return;let i=(e=o.groups)==null?void 0:e.version;return i!==void 0?i:o[1]!==void 0?o[1]:o[0]}return this.target.trim?t.trim():t}createNextText(t){return n(this,null,function*(){var e,s;if(this.target.mode==="replace"){if(!(yield pathExists(this.target.file)))throw new Error(`file is not found: ${this.target.file}`);let o=yield readFile(this.target.file,(e=this.target.encoding)!=null?e:"utf8");if(!this.createPattern().test(o))throw new Error("pattern is not matched");let c=((s=this.target.replacement)!=null?s:"{{version}}").replaceAll("{{version}}",String(t));return o.replace(this.createPattern(),c)}return String(t)})}writeText(t){return n(this,null,function*(){var e;if(!(yield pathExists(this.target.file))){if(!this.target.createIfNotExists)throw new Error(`file is not found: ${this.target.file}`);yield ensureFile(this.target.file);}yield writeFile(this.target.file,t,(e=this.target.encoding)!=null?e:"utf8");})}createPattern(){if(!this.target.pattern)throw new Error("pattern is required when text mode is replace");return new RegExp(this.target.pattern,this.target.flags)}createGetError(t){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:t}}getErrorMessage(t){return t instanceof Error?t.message:String(t)}};});var T,C,D=a(()=>{S();P();T=class{static create(t){return t.type==="text"?new w(t):t.type==="custom"?new C(t):new m(t)}},C=class{constructor(t){this.target=t;}get(){return n(this,null,function*(){if(!this.target.get)return {action:"get",success:false,file:this.target.file,type:this.target.type,message:"custom get is not implemented"};try{let t=yield this.target.get(this.target.file);return {action:"get",success:!0,file:this.target.file,type:this.target.type,value:t}}catch(t){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:t instanceof Error?t.message:String(t)}}})}set(t){return n(this,null,function*(){try{let e=yield this.get();return this.target.set?(yield this.target.set(t,this.target.file),{action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:e.success?e.value:void 0,newValue:t}):{action:"set",success:!1,file:this.target.file,type:this.target.type,oldValue:e.success?e.value:void 0,newValue:t,message:"custom set is not implemented"}}catch(e){return {action:"set",success:false,file:this.target.file,type:this.target.type,newValue:t,message:e instanceof Error?e.message:String(e)}}})}update(t){return n(this,null,function*(){let e=yield this.set(t);return f(u({},e),{action:"update"})})}};});var G=a(()=>{S();L();$();D();P();});var d,b=a(()=>{d=class{static create(t,e){return {success:t.every(s=>s.success),value:e,results:t}}};});var yt,h,B=a(()=>{G();b();yt={getter:{get(){return getDateVersion()}},store:new x,targets:[]},h=class{constructor(t){this.logger=new Logger("VersionManager");this.opts=Object.assign({},yt,t);}get(){return this.opts.getter.get()}read(){return n(this,null,function*(){let t=this.resolveStores(),e=[];for(let s of t)e.push(yield s.get());return d.create(e)})}set(t){return n(this,null,function*(){this.logger.log("set version: "+t);let e=this.resolveStores(),s=[];for(let o of e)s.push(yield o.set(t));return d.create(s,t)})}update(){return n(this,null,function*(){let t=yield this.get();this.logger.log("new version: "+t);let e=this.resolveStores(),s=[];for(let o of e)s.push(yield o.update(t));return d.create(s,t)})}resolveStores(){var t;return (t=this.opts.targets)!=null&&t.length?this.opts.targets.map(e=>T.create(e)):Array.isArray(this.opts.store)?this.opts.store:[this.opts.store]}};});var U=a(()=>{process.cwd();});var X=a(()=>{});var q=a(()=>{});var K=a(()=>{});var W=a(()=>{X();q();K();});var M=a(()=>{B();b();U();G();W();});function xt(r,t=process.cwd(),e=true){var s;return N.isAbsolute(r)?r:e?(s=findUp(r,t))!=null?s:N.resolve(t,r):N.resolve(t,r)}function E(r,t=process.cwd(),e=true){var o,i,c,g;let s=xt(r.file,t,e);if(r.type==="text")return {type:"text",file:s,mode:(o=r.mode)!=null?o:"raw",pattern:r.pattern,replacement:r.replacement,trim:(i=r.trim)!=null?i:true,createIfNotExists:r.createIfNotExists};if(r.type==="custom")throw new Error("cli does not support custom target directly");return {type:r.type,file:s,path:(g=(c=r.path)!=null?c:r.key)!=null?g:"version",createIfNotExists:r.createIfNotExists}}function R(r){Logger.log(JSON.stringify(r,null,2));}var z=a(()=>{M();});var wt=ot(v=>{M();z();Logger.log("[\u6B22\u8FCE] date-version");program.command("update").description("\u751F\u6210\u65E5\u671F\u7248\u672C\u5E76\u5199\u5165\u76EE\u6807\u6587\u4EF6").option("-f --format <format>","\u65E5\u671F\u683C\u5F0F",DEFAULT_DATE_VERSION_GETTER_OPTIONS.pattern).option("-F --file <filePath>","\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84",l.file).option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","json").option("-k --key <key>","\u517C\u5BB9\u65E7\u7248 key \u53C2\u6570",l.key).option("--path <path>","\u7ED3\u6784\u5316\u8DEF\u5F84").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").option("--replacement <replacement>","\u6587\u672C\u66FF\u6362\u6A21\u677F","{{version}}").option("--create-if-not-exists","\u6587\u4EF6\u4E0D\u5B58\u5728\u65F6\u81EA\u52A8\u521B\u5EFA",false).action(r=>n(null,null,function*(){let e=yield new h({getter:{get(){return getDateVersion({pattern:r.format})}},targets:[E(r)]}).update();R(e);}));program.command("get").description("\u751F\u6210\u65E5\u671F\u7248\u672C").option("-p --pattern <pattern>","\u65E5\u671F\u683C\u5F0F",DEFAULT_DATE_VERSION_GETTER_OPTIONS.pattern).action(({pattern:r})=>{Logger.log(getDateVersion({pattern:r}));});program.command("read").description("\u8BFB\u53D6\u76EE\u6807\u6587\u4EF6\u4E2D\u7684\u7248\u672C").option("-F --file <filePath>","\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84",l.file).option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","json").option("-k --key <key>","\u517C\u5BB9\u65E7\u7248 key \u53C2\u6570",l.key).option("--path <path>","\u7ED3\u6784\u5316\u8DEF\u5F84").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").action(r=>n(null,null,function*(){let e=yield new h({targets:[E(r)]}).read();R(e);}));program.command("set").description("\u628A\u6307\u5B9A\u7248\u672C\u503C\u5199\u5165\u76EE\u6807\u6587\u4EF6").argument("<value>","\u7248\u672C\u503C").option("-F --file <filePath>","\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84",l.file).option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","json").option("-k --key <key>","\u517C\u5BB9\u65E7\u7248 key \u53C2\u6570",l.key).option("--path <path>","\u7ED3\u6784\u5316\u8DEF\u5F84").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").option("--replacement <replacement>","\u6587\u672C\u66FF\u6362\u6A21\u677F","{{version}}").option("--create-if-not-exists","\u6587\u4EF6\u4E0D\u5B58\u5728\u65F6\u81EA\u52A8\u521B\u5EFA",false).action((r,t)=>n(null,null,function*(){let s=yield new h({targets:[E(t)]}).set(r);R(s);}));program.parse(process.argv);});var dateVersion = wt();export{dateVersion as default};
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
- 'use strict';var fsExtra=require('fs-extra'),$=require('fs'),q=require('path'),logger=require('@tikkhun/logger'),dateVersion=require('@tikkhun/date-version'),utils=require('@tikkhun/utils'),commander=require('commander');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var $__default=/*#__PURE__*/_interopDefault($);var q__default=/*#__PURE__*/_interopDefault(q);/**
2
+ 'use strict';var fsExtra=require('fs-extra'),fastXmlParser=require('fast-xml-parser'),F=require('js-yaml'),lodash=require('lodash'),smolToml=require('smol-toml'),logger=require('@tikkhun/logger'),dateVersion=require('@tikkhun/date-version'),utils=require('@tikkhun/utils'),k=require('path'),commander=require('commander');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var F__default=/*#__PURE__*/_interopDefault(F);var k__default=/*#__PURE__*/_interopDefault(k);/**
3
3
  @tikkhun/version
4
- 2025.7.7
4
+ 2026.4.13
5
5
  */
6
- var M=Object.defineProperty,I=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var O=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var S=(r,t,e)=>t in r?M(r,t,{enumerable:true,configurable:true,writable:true,value:e}):r[t]=e,w=(r,t)=>{for(var e in t||(t={}))R.call(t,e)&&S(r,e,t[e]);if(O)for(var e of O(t))D.call(t,e)&&S(r,e,t[e]);return r},x=(r,t)=>I(r,L(t));var o=(r,t)=>()=>(r&&(t=r(r=0)),t);var F=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var i=(r,t,e)=>new Promise((c,n)=>{var J=s=>{try{g(e.next(s));}catch(l){n(l);}},A=s=>{try{g(e.throw(s));}catch(l){n(l);}},g=s=>s.done?c(s.value):Promise.resolve(s.value).then(J,A);g((e=e.apply(r,t)).next());});var X,p,d=o(()=>{X={file:"package.json",key:"version"},p=class{constructor(t){this.opts=Object.assign({},X,t);}update(t){return i(this,null,function*(){try{let e=yield fsExtra.readJson(this.opts.file);return yield fsExtra.writeJson(this.opts.file,x(w({},e),{[this.opts.key]:t}),{spaces:2}),!0}catch(e){return false}})}};});var y=o(()=>{});var T,u=o(()=>{T=process.cwd();});var a,b=o(()=>{u();a=class{constructor(t){this.opts=t,this.filePath=q__default.default.join(T,this.opts.file);}update(t){try{return typeof t!="string"&&(t=JSON.stringify(t)),$__default.default.writeFileSync(this.filePath,t,"utf8"),!0}catch(e){return false}}};});var h=o(()=>{d();y();b();});var H,m,v=o(()=>{h();H={getter:{get(){return dateVersion.getDateVersion()}},store:new p},m=class{constructor(t){this.logger=new logger.Logger("VersionManager");this.opts=Object.assign({},H,t);}get(){return this.opts.getter.get()}update(){return i(this,null,function*(){let t=yield this.get();this.logger.log("new version: "+t);let e=Array.isArray(this.opts.store)?this.opts.store:[this.opts.store];try{if((yield Promise.all(e.map(n=>n.update(t)))).filter(n=>!n).length)throw new Error("update, but error");return !0}catch(c){return false}})}};});var f,E=o(()=>{f=class{get(){return utils.currentNodeVersion}};});var N=o(()=>{});var V=o(()=>{});var _=o(()=>{E();N();V();});var j=o(()=>{v();u();h();_();});var Q=F(k=>{j();logger.Logger.log("[\u6B22\u8FCE] node-version");commander.program.command("save").description("\u4FDD\u5B58\u7248\u672C").action(()=>i(null,null,function*(){(yield new m({getter:new f,store:new a({file:".node-version"})}).update())&&logger.Logger.debug("node \u7248\u672C\u66F4\u65B0\u6210\u529F");}));commander.program.parse(process.argv);});var nodeVersion = Q();module.exports=nodeVersion;
6
+ var Q=Object.defineProperty,Y=Object.defineProperties;var Z=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var ee=Object.prototype.hasOwnProperty,te=Object.prototype.propertyIsEnumerable;var j=(r,e,t)=>e in r?Q(r,e,{enumerable:true,configurable:true,writable:true,value:t}):r[e]=t,p=(r,e)=>{for(var t in e||(e={}))ee.call(e,t)&&j(r,t,e[t]);if(I)for(var t of I(e))te.call(e,t)&&j(r,t,e[t]);return r},l=(r,e)=>Y(r,Z(e));var a=(r,e)=>()=>(r&&(e=r(r=0)),e);var re=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var n=(r,e,t)=>new Promise((s,o)=>{var i=u=>{try{g(t.next(u));}catch(O){o(O);}},c=u=>{try{g(t.throw(u));}catch(O){o(O);}},g=u=>u.done?s(u.value):Promise.resolve(u.value).then(i,c);g((t=t.apply(r,e)).next());});var f,S=a(()=>{f=class{constructor(e){this.target=e;}get(){return n(this,null,function*(){var e;try{if(!(yield fsExtra.pathExists(this.target.file)))return this.createGetError(`file is not found: ${this.target.file}`);let t=yield this.loadStructuredConfig(),s=this.target.path?lodash.get(t,this.target.path):t;return s===void 0?this.createGetError(`path is not found: ${(e=this.target.path)!=null?e:"<root>"}`):typeof s!="string"&&typeof s!="number"?this.createGetError(`value is not string or number: ${JSON.stringify(s)}`):{action:"get",success:!0,file:this.target.file,type:this.target.type,value:s}}catch(t){return this.createGetError(this.getErrorMessage(t))}})}set(e){return n(this,null,function*(){try{let t=yield this.get(),s=t.success?t.value:void 0,o=yield fsExtra.pathExists(this.target.file);if(!o){if(!this.target.createIfNotExists)return this.createSetError(e,`file is not found: ${this.target.file}`,s,"set");yield fsExtra.ensureFile(this.target.file);}let i=o?yield this.loadStructuredConfig():{};if(this.target.path)lodash.set(i,this.target.path,e),yield this.saveStructuredConfig(i);else {if(typeof i=="object"&&i!==null&&!Array.isArray(i))return this.createSetError(e,"path is required for structured target",s,"set");yield this.saveStructuredConfig(e);}return {action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:s,newValue:e}}catch(t){return this.createSetError(e,this.getErrorMessage(t),void 0,"set")}})}update(e){return n(this,null,function*(){let t=yield this.set(e);return l(p({},t),{action:"update"})})}createGetError(e){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:e}}createSetError(e,t,s,o="set"){return {action:o,success:false,file:this.target.file,type:this.target.type,oldValue:s,newValue:e,message:t}}getErrorMessage(e){return e instanceof Error?e.message:String(e)}loadStructuredConfig(){return n(this,null,function*(){var t;let e=yield fsExtra.readFile(this.target.file,(t=this.target.encoding)!=null?t:"utf8");switch(this.target.type){case "json":return JSON.parse(e);case "yaml":return F__default.default.load(e);case "toml":return smolToml.parse(e);case "xml":return new fastXmlParser.XMLParser({ignoreAttributes:true}).parse(e);case "env":return this.parseEnvContent(e);default:throw new Error(`unsupported structured target type: ${this.target.type}`)}})}saveStructuredConfig(e){return n(this,null,function*(){var s;let t=(s=this.target.encoding)!=null?s:"utf8";switch(this.target.type){case "json":yield fsExtra.writeFile(this.target.file,JSON.stringify(e,null,2),t);return;case "yaml":yield fsExtra.writeFile(this.target.file,F__default.default.dump(e),t);return;case "toml":yield fsExtra.writeFile(this.target.file,smolToml.stringify(e),t);return;case "xml":yield fsExtra.writeFile(this.target.file,new fastXmlParser.XMLBuilder({format:true,ignoreAttributes:true}).build(e),t);return;case "env":yield fsExtra.writeFile(this.target.file,this.stringifyEnvContent(e),t);return;default:throw new Error(`unsupported structured target type: ${this.target.type}`)}})}parseEnvContent(e){let t={},s=e.split(/\r?\n/);for(let o of s){let i=o.trim();if(!i||i.startsWith("#"))continue;let c=i.indexOf("=");if(c<0)continue;let g=i.slice(0,c).trim(),u=i.slice(c+1).trim();lodash.set(t,g.replace(/__/g,"."),u);}return t}stringifyEnvContent(e){let t=[],s=(o,i)=>{if(o!==null&&typeof o=="object"&&!Array.isArray(o)){for(let[g,u]of Object.entries(o))s(u,[...i,g]);return}let c=i.join("__").toUpperCase();t.push(`${c}=${o!=null?o:""}`);};for(let[o,i]of Object.entries(e))s(i,[o]);return t.join(`
7
+ `)}};});var ge,w,$=a(()=>{S();ge={file:"package.json",key:"version"},w=class extends f{constructor(e){var o;let t=Object.assign({},ge,e),s={type:"json",file:t.file,path:(o=t.path)!=null?o:t.key,createIfNotExists:t.createIfNotExists};super(s);}};});var J=a(()=>{});var fe,T,P=a(()=>{fe={file:"",mode:"raw",trim:true,replacement:"{{version}}"},T=class{constructor(e){this.target=p(p({type:"text"},fe),e);}get(){return n(this,null,function*(){var e;try{if(!(yield fsExtra.pathExists(this.target.file)))return this.createGetError(`file is not found: ${this.target.file}`);let t=yield fsExtra.readFile(this.target.file,(e=this.target.encoding)!=null?e:"utf8"),s=this.resolveValueFromText(t);return s===void 0?this.createGetError("version is not found in text content"):{action:"get",success:!0,file:this.target.file,type:this.target.type,value:s}}catch(t){return this.createGetError(this.getErrorMessage(t))}})}set(e){return n(this,null,function*(){try{let t=yield this.get(),s=t.success?t.value:void 0,o=yield this.createNextText(e);return yield this.writeText(o),{action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:s,newValue:e}}catch(t){return {action:"set",success:false,file:this.target.file,type:this.target.type,newValue:e,message:this.getErrorMessage(t)}}})}update(e){return n(this,null,function*(){let t=yield this.set(e);return l(p({},t),{action:"update"})})}resolveValueFromText(e){var t;if(this.target.mode==="replace"){let o=this.createPattern().exec(e);if(!o)return;let i=(t=o.groups)==null?void 0:t.version;return i!==void 0?i:o[1]!==void 0?o[1]:o[0]}return this.target.trim?e.trim():e}createNextText(e){return n(this,null,function*(){var t,s;if(this.target.mode==="replace"){if(!(yield fsExtra.pathExists(this.target.file)))throw new Error(`file is not found: ${this.target.file}`);let o=yield fsExtra.readFile(this.target.file,(t=this.target.encoding)!=null?t:"utf8");if(!this.createPattern().test(o))throw new Error("pattern is not matched");let c=((s=this.target.replacement)!=null?s:"{{version}}").replaceAll("{{version}}",String(e));return o.replace(this.createPattern(),c)}return String(e)})}writeText(e){return n(this,null,function*(){var t;if(!(yield fsExtra.pathExists(this.target.file))){if(!this.target.createIfNotExists)throw new Error(`file is not found: ${this.target.file}`);yield fsExtra.ensureFile(this.target.file);}yield fsExtra.writeFile(this.target.file,e,(t=this.target.encoding)!=null?t:"utf8");})}createPattern(){if(!this.target.pattern)throw new Error("pattern is required when text mode is replace");return new RegExp(this.target.pattern,this.target.flags)}createGetError(e){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:e}}getErrorMessage(e){return e instanceof Error?e.message:String(e)}};});var E,G,B=a(()=>{S();P();E=class{static create(e){return e.type==="text"?new T(e):e.type==="custom"?new G(e):new f(e)}},G=class{constructor(e){this.target=e;}get(){return n(this,null,function*(){if(!this.target.get)return {action:"get",success:false,file:this.target.file,type:this.target.type,message:"custom get is not implemented"};try{let e=yield this.target.get(this.target.file);return {action:"get",success:!0,file:this.target.file,type:this.target.type,value:e}}catch(e){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:e instanceof Error?e.message:String(e)}}})}set(e){return n(this,null,function*(){try{let t=yield this.get();return this.target.set?(yield this.target.set(e,this.target.file),{action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:t.success?t.value:void 0,newValue:e}):{action:"set",success:!1,file:this.target.file,type:this.target.type,oldValue:t.success?t.value:void 0,newValue:e,message:"custom set is not implemented"}}catch(t){return {action:"set",success:false,file:this.target.file,type:this.target.type,newValue:e,message:t instanceof Error?t.message:String(t)}}})}update(e){return n(this,null,function*(){let t=yield this.set(e);return l(p({},t),{action:"update"})})}};});var N=a(()=>{S();$();J();B();P();});var m,b=a(()=>{m=class{static create(e,t){return {success:e.every(s=>s.success),value:t,results:e}}};});var he,d,U=a(()=>{N();b();he={getter:{get(){return dateVersion.getDateVersion()}},store:new w,targets:[]},d=class{constructor(e){this.logger=new logger.Logger("VersionManager");this.opts=Object.assign({},he,e);}get(){return this.opts.getter.get()}read(){return n(this,null,function*(){let e=this.resolveStores(),t=[];for(let s of e)t.push(yield s.get());return m.create(t)})}set(e){return n(this,null,function*(){this.logger.log("set version: "+e);let t=this.resolveStores(),s=[];for(let o of t)s.push(yield o.set(e));return m.create(s,e)})}update(){return n(this,null,function*(){let e=yield this.get();this.logger.log("new version: "+e);let t=this.resolveStores(),s=[];for(let o of t)s.push(yield o.update(e));return m.create(s,e)})}resolveStores(){var e;return (e=this.opts.targets)!=null&&e.length?this.opts.targets.map(t=>E.create(t)):Array.isArray(this.opts.store)?this.opts.store:[this.opts.store]}};});var D=a(()=>{process.cwd();});var y,X=a(()=>{y=class{get(){return utils.currentNodeVersion}};});var q=a(()=>{});var K=a(()=>{});var W=a(()=>{X();q();K();});var M=a(()=>{U();b();D();N();W();});function Se(r,e=process.cwd(),t=true){var s;return k__default.default.isAbsolute(r)?r:t?(s=utils.findUp(r,e))!=null?s:k__default.default.resolve(e,r):k__default.default.resolve(e,r)}function R(r,e=process.cwd(),t=true){var o,i,c,g;let s=Se(r.file,e,t);if(r.type==="text")return {type:"text",file:s,mode:(o=r.mode)!=null?o:"raw",pattern:r.pattern,replacement:r.replacement,trim:(i=r.trim)!=null?i:true,createIfNotExists:r.createIfNotExists};if(r.type==="custom")throw new Error("cli does not support custom target directly");return {type:r.type,file:s,path:(g=(c=r.path)!=null?c:r.key)!=null?g:"version",createIfNotExists:r.createIfNotExists}}function v(r){logger.Logger.log(JSON.stringify(r,null,2));}var z=a(()=>{M();});var we=re(x=>{M();z();logger.Logger.log("[\u6B22\u8FCE] node-version");commander.program.command("save").description("\u83B7\u53D6\u5F53\u524D Node \u7248\u672C\u5E76\u5199\u5165\u76EE\u6807\u6587\u4EF6").option("-F --file <filePath>","\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84",".node-version").option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","text").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").option("--replacement <replacement>","\u6587\u672C\u66FF\u6362\u6A21\u677F","{{version}}").option("--create-if-not-exists","\u6587\u4EF6\u4E0D\u5B58\u5728\u65F6\u81EA\u52A8\u521B\u5EFA",true).action(r=>n(null,null,function*(){let t=yield new d({getter:new y,targets:[R(r)]}).update();v(t);}));commander.program.command("get").description("\u83B7\u53D6\u5F53\u524D Node \u7248\u672C").action(()=>n(null,null,function*(){let r=new y;logger.Logger.log(yield r.get());}));commander.program.command("read").description("\u8BFB\u53D6\u76EE\u6807\u6587\u4EF6\u4E2D\u7684\u7248\u672C").option("-F --file <filePath>","\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84",".node-version").option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","text").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").action(r=>n(null,null,function*(){let t=yield new d({targets:[R(r)]}).read();v(t);}));commander.program.command("set").description("\u628A\u6307\u5B9A\u7248\u672C\u503C\u5199\u5165\u76EE\u6807\u6587\u4EF6").argument("<value>","\u7248\u672C\u503C").option("-F --file <filePath>","\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84",".node-version").option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","text").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").option("--replacement <replacement>","\u6587\u672C\u66FF\u6362\u6A21\u677F","{{version}}").option("--create-if-not-exists","\u6587\u4EF6\u4E0D\u5B58\u5728\u65F6\u81EA\u52A8\u521B\u5EFA",true).action((r,e)=>n(null,null,function*(){let s=yield new d({targets:[R(e)]}).set(r);v(s);}));commander.program.parse(process.argv);});var nodeVersion = we();module.exports=nodeVersion;
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import {readJson,writeJson}from'fs-extra';import $ from'fs';import q from'path';import {Logger}from'@tikkhun/logger';import {getDateVersion}from'@tikkhun/date-version';import {currentNodeVersion}from'@tikkhun/utils';import {program}from'commander';/**
2
+ import {pathExists,readFile,ensureFile,writeFile}from'fs-extra';import {XMLParser,XMLBuilder}from'fast-xml-parser';import F from'js-yaml';import {get,set}from'lodash';import {parse,stringify}from'smol-toml';import {Logger}from'@tikkhun/logger';import {getDateVersion}from'@tikkhun/date-version';import {currentNodeVersion,findUp}from'@tikkhun/utils';import k from'path';import {program}from'commander';/**
3
3
  @tikkhun/version
4
- 2025.7.7
4
+ 2026.4.13
5
5
  */
6
- var M=Object.defineProperty,I=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var O=Object.getOwnPropertySymbols;var R=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var S=(r,t,e)=>t in r?M(r,t,{enumerable:true,configurable:true,writable:true,value:e}):r[t]=e,w=(r,t)=>{for(var e in t||(t={}))R.call(t,e)&&S(r,e,t[e]);if(O)for(var e of O(t))D.call(t,e)&&S(r,e,t[e]);return r},x=(r,t)=>I(r,L(t));var o=(r,t)=>()=>(r&&(t=r(r=0)),t);var F=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var i=(r,t,e)=>new Promise((c,n)=>{var J=s=>{try{g(e.next(s));}catch(l){n(l);}},A=s=>{try{g(e.throw(s));}catch(l){n(l);}},g=s=>s.done?c(s.value):Promise.resolve(s.value).then(J,A);g((e=e.apply(r,t)).next());});var X,p,d=o(()=>{X={file:"package.json",key:"version"},p=class{constructor(t){this.opts=Object.assign({},X,t);}update(t){return i(this,null,function*(){try{let e=yield readJson(this.opts.file);return yield writeJson(this.opts.file,x(w({},e),{[this.opts.key]:t}),{spaces:2}),!0}catch(e){return false}})}};});var y=o(()=>{});var T,u=o(()=>{T=process.cwd();});var a,b=o(()=>{u();a=class{constructor(t){this.opts=t,this.filePath=q.join(T,this.opts.file);}update(t){try{return typeof t!="string"&&(t=JSON.stringify(t)),$.writeFileSync(this.filePath,t,"utf8"),!0}catch(e){return false}}};});var h=o(()=>{d();y();b();});var H,m,v=o(()=>{h();H={getter:{get(){return getDateVersion()}},store:new p},m=class{constructor(t){this.logger=new Logger("VersionManager");this.opts=Object.assign({},H,t);}get(){return this.opts.getter.get()}update(){return i(this,null,function*(){let t=yield this.get();this.logger.log("new version: "+t);let e=Array.isArray(this.opts.store)?this.opts.store:[this.opts.store];try{if((yield Promise.all(e.map(n=>n.update(t)))).filter(n=>!n).length)throw new Error("update, but error");return !0}catch(c){return false}})}};});var f,E=o(()=>{f=class{get(){return currentNodeVersion}};});var N=o(()=>{});var V=o(()=>{});var _=o(()=>{E();N();V();});var j=o(()=>{v();u();h();_();});var Q=F(k=>{j();Logger.log("[\u6B22\u8FCE] node-version");program.command("save").description("\u4FDD\u5B58\u7248\u672C").action(()=>i(null,null,function*(){(yield new m({getter:new f,store:new a({file:".node-version"})}).update())&&Logger.debug("node \u7248\u672C\u66F4\u65B0\u6210\u529F");}));program.parse(process.argv);});var nodeVersion = Q();export{nodeVersion as default};
6
+ var Q=Object.defineProperty,Y=Object.defineProperties;var Z=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var ee=Object.prototype.hasOwnProperty,te=Object.prototype.propertyIsEnumerable;var j=(r,e,t)=>e in r?Q(r,e,{enumerable:true,configurable:true,writable:true,value:t}):r[e]=t,p=(r,e)=>{for(var t in e||(e={}))ee.call(e,t)&&j(r,t,e[t]);if(I)for(var t of I(e))te.call(e,t)&&j(r,t,e[t]);return r},l=(r,e)=>Y(r,Z(e));var a=(r,e)=>()=>(r&&(e=r(r=0)),e);var re=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var n=(r,e,t)=>new Promise((s,o)=>{var i=u=>{try{g(t.next(u));}catch(O){o(O);}},c=u=>{try{g(t.throw(u));}catch(O){o(O);}},g=u=>u.done?s(u.value):Promise.resolve(u.value).then(i,c);g((t=t.apply(r,e)).next());});var f,S=a(()=>{f=class{constructor(e){this.target=e;}get(){return n(this,null,function*(){var e;try{if(!(yield pathExists(this.target.file)))return this.createGetError(`file is not found: ${this.target.file}`);let t=yield this.loadStructuredConfig(),s=this.target.path?get(t,this.target.path):t;return s===void 0?this.createGetError(`path is not found: ${(e=this.target.path)!=null?e:"<root>"}`):typeof s!="string"&&typeof s!="number"?this.createGetError(`value is not string or number: ${JSON.stringify(s)}`):{action:"get",success:!0,file:this.target.file,type:this.target.type,value:s}}catch(t){return this.createGetError(this.getErrorMessage(t))}})}set(e){return n(this,null,function*(){try{let t=yield this.get(),s=t.success?t.value:void 0,o=yield pathExists(this.target.file);if(!o){if(!this.target.createIfNotExists)return this.createSetError(e,`file is not found: ${this.target.file}`,s,"set");yield ensureFile(this.target.file);}let i=o?yield this.loadStructuredConfig():{};if(this.target.path)set(i,this.target.path,e),yield this.saveStructuredConfig(i);else {if(typeof i=="object"&&i!==null&&!Array.isArray(i))return this.createSetError(e,"path is required for structured target",s,"set");yield this.saveStructuredConfig(e);}return {action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:s,newValue:e}}catch(t){return this.createSetError(e,this.getErrorMessage(t),void 0,"set")}})}update(e){return n(this,null,function*(){let t=yield this.set(e);return l(p({},t),{action:"update"})})}createGetError(e){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:e}}createSetError(e,t,s,o="set"){return {action:o,success:false,file:this.target.file,type:this.target.type,oldValue:s,newValue:e,message:t}}getErrorMessage(e){return e instanceof Error?e.message:String(e)}loadStructuredConfig(){return n(this,null,function*(){var t;let e=yield readFile(this.target.file,(t=this.target.encoding)!=null?t:"utf8");switch(this.target.type){case "json":return JSON.parse(e);case "yaml":return F.load(e);case "toml":return parse(e);case "xml":return new XMLParser({ignoreAttributes:true}).parse(e);case "env":return this.parseEnvContent(e);default:throw new Error(`unsupported structured target type: ${this.target.type}`)}})}saveStructuredConfig(e){return n(this,null,function*(){var s;let t=(s=this.target.encoding)!=null?s:"utf8";switch(this.target.type){case "json":yield writeFile(this.target.file,JSON.stringify(e,null,2),t);return;case "yaml":yield writeFile(this.target.file,F.dump(e),t);return;case "toml":yield writeFile(this.target.file,stringify(e),t);return;case "xml":yield writeFile(this.target.file,new XMLBuilder({format:true,ignoreAttributes:true}).build(e),t);return;case "env":yield writeFile(this.target.file,this.stringifyEnvContent(e),t);return;default:throw new Error(`unsupported structured target type: ${this.target.type}`)}})}parseEnvContent(e){let t={},s=e.split(/\r?\n/);for(let o of s){let i=o.trim();if(!i||i.startsWith("#"))continue;let c=i.indexOf("=");if(c<0)continue;let g=i.slice(0,c).trim(),u=i.slice(c+1).trim();set(t,g.replace(/__/g,"."),u);}return t}stringifyEnvContent(e){let t=[],s=(o,i)=>{if(o!==null&&typeof o=="object"&&!Array.isArray(o)){for(let[g,u]of Object.entries(o))s(u,[...i,g]);return}let c=i.join("__").toUpperCase();t.push(`${c}=${o!=null?o:""}`);};for(let[o,i]of Object.entries(e))s(i,[o]);return t.join(`
7
+ `)}};});var ge,w,$=a(()=>{S();ge={file:"package.json",key:"version"},w=class extends f{constructor(e){var o;let t=Object.assign({},ge,e),s={type:"json",file:t.file,path:(o=t.path)!=null?o:t.key,createIfNotExists:t.createIfNotExists};super(s);}};});var J=a(()=>{});var fe,T,P=a(()=>{fe={file:"",mode:"raw",trim:true,replacement:"{{version}}"},T=class{constructor(e){this.target=p(p({type:"text"},fe),e);}get(){return n(this,null,function*(){var e;try{if(!(yield pathExists(this.target.file)))return this.createGetError(`file is not found: ${this.target.file}`);let t=yield readFile(this.target.file,(e=this.target.encoding)!=null?e:"utf8"),s=this.resolveValueFromText(t);return s===void 0?this.createGetError("version is not found in text content"):{action:"get",success:!0,file:this.target.file,type:this.target.type,value:s}}catch(t){return this.createGetError(this.getErrorMessage(t))}})}set(e){return n(this,null,function*(){try{let t=yield this.get(),s=t.success?t.value:void 0,o=yield this.createNextText(e);return yield this.writeText(o),{action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:s,newValue:e}}catch(t){return {action:"set",success:false,file:this.target.file,type:this.target.type,newValue:e,message:this.getErrorMessage(t)}}})}update(e){return n(this,null,function*(){let t=yield this.set(e);return l(p({},t),{action:"update"})})}resolveValueFromText(e){var t;if(this.target.mode==="replace"){let o=this.createPattern().exec(e);if(!o)return;let i=(t=o.groups)==null?void 0:t.version;return i!==void 0?i:o[1]!==void 0?o[1]:o[0]}return this.target.trim?e.trim():e}createNextText(e){return n(this,null,function*(){var t,s;if(this.target.mode==="replace"){if(!(yield pathExists(this.target.file)))throw new Error(`file is not found: ${this.target.file}`);let o=yield readFile(this.target.file,(t=this.target.encoding)!=null?t:"utf8");if(!this.createPattern().test(o))throw new Error("pattern is not matched");let c=((s=this.target.replacement)!=null?s:"{{version}}").replaceAll("{{version}}",String(e));return o.replace(this.createPattern(),c)}return String(e)})}writeText(e){return n(this,null,function*(){var t;if(!(yield pathExists(this.target.file))){if(!this.target.createIfNotExists)throw new Error(`file is not found: ${this.target.file}`);yield ensureFile(this.target.file);}yield writeFile(this.target.file,e,(t=this.target.encoding)!=null?t:"utf8");})}createPattern(){if(!this.target.pattern)throw new Error("pattern is required when text mode is replace");return new RegExp(this.target.pattern,this.target.flags)}createGetError(e){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:e}}getErrorMessage(e){return e instanceof Error?e.message:String(e)}};});var E,G,B=a(()=>{S();P();E=class{static create(e){return e.type==="text"?new T(e):e.type==="custom"?new G(e):new f(e)}},G=class{constructor(e){this.target=e;}get(){return n(this,null,function*(){if(!this.target.get)return {action:"get",success:false,file:this.target.file,type:this.target.type,message:"custom get is not implemented"};try{let e=yield this.target.get(this.target.file);return {action:"get",success:!0,file:this.target.file,type:this.target.type,value:e}}catch(e){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:e instanceof Error?e.message:String(e)}}})}set(e){return n(this,null,function*(){try{let t=yield this.get();return this.target.set?(yield this.target.set(e,this.target.file),{action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:t.success?t.value:void 0,newValue:e}):{action:"set",success:!1,file:this.target.file,type:this.target.type,oldValue:t.success?t.value:void 0,newValue:e,message:"custom set is not implemented"}}catch(t){return {action:"set",success:false,file:this.target.file,type:this.target.type,newValue:e,message:t instanceof Error?t.message:String(t)}}})}update(e){return n(this,null,function*(){let t=yield this.set(e);return l(p({},t),{action:"update"})})}};});var N=a(()=>{S();$();J();B();P();});var m,b=a(()=>{m=class{static create(e,t){return {success:e.every(s=>s.success),value:t,results:e}}};});var he,d,U=a(()=>{N();b();he={getter:{get(){return getDateVersion()}},store:new w,targets:[]},d=class{constructor(e){this.logger=new Logger("VersionManager");this.opts=Object.assign({},he,e);}get(){return this.opts.getter.get()}read(){return n(this,null,function*(){let e=this.resolveStores(),t=[];for(let s of e)t.push(yield s.get());return m.create(t)})}set(e){return n(this,null,function*(){this.logger.log("set version: "+e);let t=this.resolveStores(),s=[];for(let o of t)s.push(yield o.set(e));return m.create(s,e)})}update(){return n(this,null,function*(){let e=yield this.get();this.logger.log("new version: "+e);let t=this.resolveStores(),s=[];for(let o of t)s.push(yield o.update(e));return m.create(s,e)})}resolveStores(){var e;return (e=this.opts.targets)!=null&&e.length?this.opts.targets.map(t=>E.create(t)):Array.isArray(this.opts.store)?this.opts.store:[this.opts.store]}};});var D=a(()=>{process.cwd();});var y,X=a(()=>{y=class{get(){return currentNodeVersion}};});var q=a(()=>{});var K=a(()=>{});var W=a(()=>{X();q();K();});var M=a(()=>{U();b();D();N();W();});function Se(r,e=process.cwd(),t=true){var s;return k.isAbsolute(r)?r:t?(s=findUp(r,e))!=null?s:k.resolve(e,r):k.resolve(e,r)}function R(r,e=process.cwd(),t=true){var o,i,c,g;let s=Se(r.file,e,t);if(r.type==="text")return {type:"text",file:s,mode:(o=r.mode)!=null?o:"raw",pattern:r.pattern,replacement:r.replacement,trim:(i=r.trim)!=null?i:true,createIfNotExists:r.createIfNotExists};if(r.type==="custom")throw new Error("cli does not support custom target directly");return {type:r.type,file:s,path:(g=(c=r.path)!=null?c:r.key)!=null?g:"version",createIfNotExists:r.createIfNotExists}}function v(r){Logger.log(JSON.stringify(r,null,2));}var z=a(()=>{M();});var we=re(x=>{M();z();Logger.log("[\u6B22\u8FCE] node-version");program.command("save").description("\u83B7\u53D6\u5F53\u524D Node \u7248\u672C\u5E76\u5199\u5165\u76EE\u6807\u6587\u4EF6").option("-F --file <filePath>","\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84",".node-version").option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","text").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").option("--replacement <replacement>","\u6587\u672C\u66FF\u6362\u6A21\u677F","{{version}}").option("--create-if-not-exists","\u6587\u4EF6\u4E0D\u5B58\u5728\u65F6\u81EA\u52A8\u521B\u5EFA",true).action(r=>n(null,null,function*(){let t=yield new d({getter:new y,targets:[R(r)]}).update();v(t);}));program.command("get").description("\u83B7\u53D6\u5F53\u524D Node \u7248\u672C").action(()=>n(null,null,function*(){let r=new y;Logger.log(yield r.get());}));program.command("read").description("\u8BFB\u53D6\u76EE\u6807\u6587\u4EF6\u4E2D\u7684\u7248\u672C").option("-F --file <filePath>","\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84",".node-version").option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","text").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").action(r=>n(null,null,function*(){let t=yield new d({targets:[R(r)]}).read();v(t);}));program.command("set").description("\u628A\u6307\u5B9A\u7248\u672C\u503C\u5199\u5165\u76EE\u6807\u6587\u4EF6").argument("<value>","\u7248\u672C\u503C").option("-F --file <filePath>","\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84",".node-version").option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","text").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").option("--replacement <replacement>","\u6587\u672C\u66FF\u6362\u6A21\u677F","{{version}}").option("--create-if-not-exists","\u6587\u4EF6\u4E0D\u5B58\u5728\u65F6\u81EA\u52A8\u521B\u5EFA",true).action((r,e)=>n(null,null,function*(){let s=yield new d({targets:[R(e)]}).set(r);v(s);}));program.parse(process.argv);});var nodeVersion = we();export{nodeVersion as default};
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
- 'use strict';var fsExtra=require('fs-extra'),logger=require('@tikkhun/logger'),dateVersion=require('@tikkhun/date-version'),utils=require('@tikkhun/utils'),commander=require('commander');/**
2
+ 'use strict';var fsExtra=require('fs-extra'),fastXmlParser=require('fast-xml-parser'),U=require('js-yaml'),lodash=require('lodash'),smolToml=require('smol-toml'),logger=require('@tikkhun/logger'),dateVersion=require('@tikkhun/date-version'),utils=require('@tikkhun/utils'),G=require('path'),commander=require('commander');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var U__default=/*#__PURE__*/_interopDefault(U);var G__default=/*#__PURE__*/_interopDefault(G);/**
3
3
  @tikkhun/version
4
- 2025.7.7
4
+ 2026.4.13
5
5
  */
6
- var I=Object.defineProperty,M=Object.defineProperties;var R=Object.getOwnPropertyDescriptors;var x=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var d=(r,t,o)=>t in r?I(r,t,{enumerable:true,configurable:true,writable:true,value:o}):r[t]=o,E=(r,t)=>{for(var o in t||(t={}))L.call(t,o)&&d(r,o,t[o]);if(x)for(var o of x(t))D.call(t,o)&&d(r,o,t[o]);return r},T=(r,t)=>M(r,R(t));var s=(r,t)=>()=>(r&&(t=r(r=0)),t);var F=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var n=(r,t,o)=>new Promise((e,i)=>{var A=p=>{try{u(o.next(p));}catch(h){i(h);}},J=p=>{try{u(o.throw(p));}catch(h){i(h);}},u=p=>p.done?e(p.value):Promise.resolve(p.value).then(A,J);u((o=o.apply(r,t)).next());});var $,a,b=s(()=>{$={file:"package.json",key:"version"},a=class{constructor(t){this.opts=Object.assign({},$,t);}update(t){return n(this,null,function*(){try{let o=yield fsExtra.readJson(this.opts.file);return yield fsExtra.writeJson(this.opts.file,T(E({},o),{[this.opts.key]:t}),{spaces:2}),!0}catch(o){return false}})}};});var N=s(()=>{});var O=s(()=>{process.cwd();});var v=s(()=>{O();});var S=s(()=>{b();N();v();});var B,l,_=s(()=>{S();B={getter:{get(){return dateVersion.getDateVersion()}},store:new a},l=class{constructor(t){this.logger=new logger.Logger("VersionManager");this.opts=Object.assign({},B,t);}get(){return this.opts.getter.get()}update(){return n(this,null,function*(){let t=yield this.get();this.logger.log("new version: "+t);let o=Array.isArray(this.opts.store)?this.opts.store:[this.opts.store];try{if((yield Promise.all(o.map(i=>i.update(t)))).filter(i=>!i).length)throw new Error("update, but error");return !0}catch(e){return false}})}};});var j=s(()=>{});var f,c,m,P=s(()=>{f=(e=>(e[e.major=0]="major",e[e.minor=1]="minor",e[e.patch=2]="patch",e))(f||{}),c={file:"package.json",position:2,key:"version"},m=class{constructor(t){this.opts=Object.assign({},c,t);}get(){return n(this,null,function*(){if(!(yield fsExtra.pathExists(this.opts.file)))throw new Error("get new version,but error: the file is not found");let{[this.opts.key]:t}=yield fsExtra.readJson(this.opts.file);if(!t)throw new Error("get new version, but error: the old version is not found");if(typeof t!="string")throw new Error(`get new version, but error: the old version is not string,old version: ${JSON.stringify(t)}`);let[o,e,i]=t.split(".");return this.opts.position===0?[Number(o)+1,e,i].join("."):this.opts.position===1?[o,Number(e)+1,i].join("."):[o,e,Number(i)+1].join(".")})}};});var k=s(()=>{});var V=s(()=>{j();P();k();});var G=s(()=>{_();O();S();V();});var W=F(y=>{G();logger.Logger.log("[\u6B22\u8FCE] semantic-version");commander.program.command("update").description("\u66F4\u65B0").option("-p --position <position>","\u66F4\u65B0\u4F4D\u7F6E<major,minor,patch>",f[c.position]).option("-f --file <fileName>","json\u6587\u4EF6\u540D\u79F0",c.file).action(r=>n(null,null,function*(){let t=f[r.position],o=utils.findUp(r.file,process.cwd());if(!o)throw new Error(`\u66F4\u65B0\u7248\u672C\u53F7\uFF0C\u4F46\u5931\u8D25\uFF0C\u65E0\u6CD5\u83B7\u53D6${r.file}\u6587\u4EF6\u8DEF\u5F84`);logger.Logger.debug("\u66F4\u65B0\u7684\u6587\u4EF6\u8DEF\u5F84: "+o),(yield new l({getter:new m({position:t,file:o}),store:new a({file:o,key:"version"})}).update())&&logger.Logger.debug("package json \u7684\u7248\u672C\u66F4\u65B0\u6210\u529F");}));commander.program.command("get").description("\u83B7\u53D6\u7248\u672C").option("-p --position <position>","\u66F4\u65B0\u4F4D\u7F6E",f[c.position]).action(r=>n(null,null,function*(){let t=f[r.position],o=new m({position:t});logger.Logger.log(yield o.get());}));commander.program.parse(process.argv);});var semanticVersion = W();module.exports=semanticVersion;
6
+ var ne=Object.defineProperty,ae=Object.defineProperties;var ce=Object.getOwnPropertyDescriptors;var L=Object.getOwnPropertySymbols;var ge=Object.prototype.hasOwnProperty,pe=Object.prototype.propertyIsEnumerable;var J=(s,e,t)=>e in s?ne(s,e,{enumerable:true,configurable:true,writable:true,value:t}):s[e]=t,u=(s,e)=>{for(var t in e||(e={}))ge.call(e,t)&&J(s,t,e[t]);if(L)for(var t of L(e))pe.call(e,t)&&J(s,t,e[t]);return s},m=(s,e)=>ae(s,ce(e));var c=(s,e)=>()=>(s&&(e=s(s=0)),e);var ue=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var n=(s,e,t)=>new Promise((r,o)=>{var i=g=>{try{p(t.next(g));}catch(y){o(y);}},a=g=>{try{p(t.throw(g));}catch(y){o(y);}},p=g=>g.done?r(g.value):Promise.resolve(g.value).then(i,a);p((t=t.apply(s,e)).next());});var V,O=c(()=>{V=class{constructor(e){this.target=e;}get(){return n(this,null,function*(){var e;try{if(!(yield fsExtra.pathExists(this.target.file)))return this.createGetError(`file is not found: ${this.target.file}`);let t=yield this.loadStructuredConfig(),r=this.target.path?lodash.get(t,this.target.path):t;return r===void 0?this.createGetError(`path is not found: ${(e=this.target.path)!=null?e:"<root>"}`):typeof r!="string"&&typeof r!="number"?this.createGetError(`value is not string or number: ${JSON.stringify(r)}`):{action:"get",success:!0,file:this.target.file,type:this.target.type,value:r}}catch(t){return this.createGetError(this.getErrorMessage(t))}})}set(e){return n(this,null,function*(){try{let t=yield this.get(),r=t.success?t.value:void 0,o=yield fsExtra.pathExists(this.target.file);if(!o){if(!this.target.createIfNotExists)return this.createSetError(e,`file is not found: ${this.target.file}`,r,"set");yield fsExtra.ensureFile(this.target.file);}let i=o?yield this.loadStructuredConfig():{};if(this.target.path)lodash.set(i,this.target.path,e),yield this.saveStructuredConfig(i);else {if(typeof i=="object"&&i!==null&&!Array.isArray(i))return this.createSetError(e,"path is required for structured target",r,"set");yield this.saveStructuredConfig(e);}return {action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:r,newValue:e}}catch(t){return this.createSetError(e,this.getErrorMessage(t),void 0,"set")}})}update(e){return n(this,null,function*(){let t=yield this.set(e);return m(u({},t),{action:"update"})})}createGetError(e){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:e}}createSetError(e,t,r,o="set"){return {action:o,success:false,file:this.target.file,type:this.target.type,oldValue:r,newValue:e,message:t}}getErrorMessage(e){return e instanceof Error?e.message:String(e)}loadStructuredConfig(){return n(this,null,function*(){var t;let e=yield fsExtra.readFile(this.target.file,(t=this.target.encoding)!=null?t:"utf8");switch(this.target.type){case "json":return JSON.parse(e);case "yaml":return U__default.default.load(e);case "toml":return smolToml.parse(e);case "xml":return new fastXmlParser.XMLParser({ignoreAttributes:true}).parse(e);case "env":return this.parseEnvContent(e);default:throw new Error(`unsupported structured target type: ${this.target.type}`)}})}saveStructuredConfig(e){return n(this,null,function*(){var r;let t=(r=this.target.encoding)!=null?r:"utf8";switch(this.target.type){case "json":yield fsExtra.writeFile(this.target.file,JSON.stringify(e,null,2),t);return;case "yaml":yield fsExtra.writeFile(this.target.file,U__default.default.dump(e),t);return;case "toml":yield fsExtra.writeFile(this.target.file,smolToml.stringify(e),t);return;case "xml":yield fsExtra.writeFile(this.target.file,new fastXmlParser.XMLBuilder({format:true,ignoreAttributes:true}).build(e),t);return;case "env":yield fsExtra.writeFile(this.target.file,this.stringifyEnvContent(e),t);return;default:throw new Error(`unsupported structured target type: ${this.target.type}`)}})}parseEnvContent(e){let t={},r=e.split(/\r?\n/);for(let o of r){let i=o.trim();if(!i||i.startsWith("#"))continue;let a=i.indexOf("=");if(a<0)continue;let p=i.slice(0,a).trim(),g=i.slice(a+1).trim();lodash.set(t,p.replace(/__/g,"."),g);}return t}stringifyEnvContent(e){let t=[],r=(o,i)=>{if(o!==null&&typeof o=="object"&&!Array.isArray(o)){for(let[p,g]of Object.entries(o))r(g,[...i,p]);return}let a=i.join("__").toUpperCase();t.push(`${a}=${o!=null?o:""}`);};for(let[o,i]of Object.entries(e))r(i,[o]);return t.join(`
7
+ `)}};});var we,k,q=c(()=>{O();we={file:"package.json",key:"version"},k=class extends V{constructor(e){var o;let t=Object.assign({},we,e),r={type:"json",file:t.file,path:(o=t.path)!=null?o:t.key,createIfNotExists:t.createIfNotExists};super(r);}};});var X=c(()=>{});var Te,C,N=c(()=>{Te={file:"",mode:"raw",trim:true,replacement:"{{version}}"},C=class{constructor(e){this.target=u(u({type:"text"},Te),e);}get(){return n(this,null,function*(){var e;try{if(!(yield fsExtra.pathExists(this.target.file)))return this.createGetError(`file is not found: ${this.target.file}`);let t=yield fsExtra.readFile(this.target.file,(e=this.target.encoding)!=null?e:"utf8"),r=this.resolveValueFromText(t);return r===void 0?this.createGetError("version is not found in text content"):{action:"get",success:!0,file:this.target.file,type:this.target.type,value:r}}catch(t){return this.createGetError(this.getErrorMessage(t))}})}set(e){return n(this,null,function*(){try{let t=yield this.get(),r=t.success?t.value:void 0,o=yield this.createNextText(e);return yield this.writeText(o),{action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:r,newValue:e}}catch(t){return {action:"set",success:false,file:this.target.file,type:this.target.type,newValue:e,message:this.getErrorMessage(t)}}})}update(e){return n(this,null,function*(){let t=yield this.set(e);return m(u({},t),{action:"update"})})}resolveValueFromText(e){var t;if(this.target.mode==="replace"){let o=this.createPattern().exec(e);if(!o)return;let i=(t=o.groups)==null?void 0:t.version;return i!==void 0?i:o[1]!==void 0?o[1]:o[0]}return this.target.trim?e.trim():e}createNextText(e){return n(this,null,function*(){var t,r;if(this.target.mode==="replace"){if(!(yield fsExtra.pathExists(this.target.file)))throw new Error(`file is not found: ${this.target.file}`);let o=yield fsExtra.readFile(this.target.file,(t=this.target.encoding)!=null?t:"utf8");if(!this.createPattern().test(o))throw new Error("pattern is not matched");let a=((r=this.target.replacement)!=null?r:"{{version}}").replaceAll("{{version}}",String(e));return o.replace(this.createPattern(),a)}return String(e)})}writeText(e){return n(this,null,function*(){var t;if(!(yield fsExtra.pathExists(this.target.file))){if(!this.target.createIfNotExists)throw new Error(`file is not found: ${this.target.file}`);yield fsExtra.ensureFile(this.target.file);}yield fsExtra.writeFile(this.target.file,e,(t=this.target.encoding)!=null?t:"utf8");})}createPattern(){if(!this.target.pattern)throw new Error("pattern is required when text mode is replace");return new RegExp(this.target.pattern,this.target.flags)}createGetError(e){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:e}}getErrorMessage(e){return e instanceof Error?e.message:String(e)}};});var P,I,W=c(()=>{O();N();P=class{static create(e){return e.type==="text"?new C(e):e.type==="custom"?new I(e):new V(e)}},I=class{constructor(e){this.target=e;}get(){return n(this,null,function*(){if(!this.target.get)return {action:"get",success:false,file:this.target.file,type:this.target.type,message:"custom get is not implemented"};try{let e=yield this.target.get(this.target.file);return {action:"get",success:!0,file:this.target.file,type:this.target.type,value:e}}catch(e){return {action:"get",success:false,file:this.target.file,type:this.target.type,message:e instanceof Error?e.message:String(e)}}})}set(e){return n(this,null,function*(){try{let t=yield this.get();return this.target.set?(yield this.target.set(e,this.target.file),{action:"set",success:!0,file:this.target.file,type:this.target.type,oldValue:t.success?t.value:void 0,newValue:e}):{action:"set",success:!1,file:this.target.file,type:this.target.type,oldValue:t.success?t.value:void 0,newValue:e,message:"custom set is not implemented"}}catch(t){return {action:"set",success:false,file:this.target.file,type:this.target.type,newValue:e,message:t instanceof Error?t.message:String(t)}}})}update(e){return n(this,null,function*(){let t=yield this.set(e);return m(u({},t),{action:"update"})})}};});var j=c(()=>{O();q();X();W();N();});var w,F=c(()=>{w=class{static create(e,t){return {success:e.every(r=>r.success),value:t,results:e}}};});var ve,f,z=c(()=>{j();F();ve={getter:{get(){return dateVersion.getDateVersion()}},store:new k,targets:[]},f=class{constructor(e){this.logger=new logger.Logger("VersionManager");this.opts=Object.assign({},ve,e);}get(){return this.opts.getter.get()}read(){return n(this,null,function*(){let e=this.resolveStores(),t=[];for(let r of e)t.push(yield r.get());return w.create(t)})}set(e){return n(this,null,function*(){this.logger.log("set version: "+e);let t=this.resolveStores(),r=[];for(let o of t)r.push(yield o.set(e));return w.create(r,e)})}update(){return n(this,null,function*(){let e=yield this.get();this.logger.log("new version: "+e);let t=this.resolveStores(),r=[];for(let o of t)r.push(yield o.update(e));return w.create(r,e)})}resolveStores(){var e;return (e=this.opts.targets)!=null&&e.length?this.opts.targets.map(t=>P.create(t)):Array.isArray(this.opts.store)?this.opts.store:[this.opts.store]}};});var H=c(()=>{process.cwd();});var Q=c(()=>{});var d,l,h,Y=c(()=>{d=(r=>(r[r.major=0]="major",r[r.minor=1]="minor",r[r.patch=2]="patch",r))(d||{}),l={file:"package.json",position:2,key:"version"},h=class{constructor(e){this.opts=Object.assign({},l,e);}get(){return n(this,null,function*(){if(!(yield fsExtra.pathExists(this.opts.file)))throw new Error("get new version,but error: the file is not found");let{[this.opts.key]:e}=yield fsExtra.readJson(this.opts.file);if(!e)throw new Error("get new version, but error: the old version is not found");if(typeof e!="string")throw new Error(`get new version, but error: the old version is not string,old version: ${JSON.stringify(e)}`);let[t,r,o]=e.split(".");return this.opts.position===0?[Number(t)+1,r,o].join("."):this.opts.position===1?[t,Number(r)+1,o].join("."):[t,r,Number(o)+1].join(".")})}};});var Z=c(()=>{});var ee=c(()=>{Q();Y();Z();});var A=c(()=>{z();F();H();j();ee();});function x(s,e=process.cwd(),t=true){var r;return G__default.default.isAbsolute(s)?s:t?(r=utils.findUp(s,e))!=null?r:G__default.default.resolve(e,s):G__default.default.resolve(e,s)}function T(s,e=process.cwd(),t=true){var o,i,a,p;let r=x(s.file,e,t);if(s.type==="text")return {type:"text",file:r,mode:(o=s.mode)!=null?o:"raw",pattern:s.pattern,replacement:s.replacement,trim:(i=s.trim)!=null?i:true,createIfNotExists:s.createIfNotExists};if(s.type==="custom")throw new Error("cli does not support custom target directly");return {type:s.type,file:r,path:(p=(a=s.path)!=null?a:s.key)!=null?p:"version",createIfNotExists:s.createIfNotExists}}function E(s,e){return n(this,null,function*(){var g,y,_,$;let t=x(s),r=G__default.default.dirname(t),o=yield fsExtra.readJson(t),i=((g=o.targets)!=null?g:[]).map(ie=>T(ie,r,false)),a=(y=o.currentTargetIndex)!=null?y:0;if(!o.getter)return {targets:i,currentTargetIndex:a};if(o.getter.type!=="semantic")throw new Error(`unsupported getter type: ${o.getter.type}`);return {getter:new h({file:x(o.getter.file,r,false),key:(_=o.getter.key)!=null?_:"version",position:d[($=e!=null?e:o.getter.position)!=null?$:"patch"]}),targets:i,currentTargetIndex:a}})}function re(s,e=0){var o;let t=(o=s.results[e])!=null?o:s.results.find(i=>i.success),r=t&&"value"in t?t.value:"";logger.Logger.log(String(r!=null?r:""));}function M(s){logger.Logger.log(JSON.stringify(s,null,2));}var se=c(()=>{A();});var be=ue(v=>{A();se();logger.Logger.log("[\u6B22\u8FCE] semantic-version");commander.program.command("update").description("\u9012\u589E\u8BED\u4E49\u5316\u7248\u672C\u5E76\u5199\u5165\u76EE\u6807\u6587\u4EF6").option("-p --position <position>","\u66F4\u65B0\u4F4D\u7F6E<major,minor,patch>",d[l.position]).option("-c --config <configFile>","\u7248\u672C\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84").option("-F --file <fileName>","\u76EE\u6807\u6587\u4EF6\u540D\u79F0",l.file).option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","json").option("-k --key <key>","\u517C\u5BB9\u65E7\u7248 key \u53C2\u6570",l.key).option("--path <path>","\u7ED3\u6784\u5316\u8DEF\u5F84").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").option("--replacement <replacement>","\u6587\u672C\u66FF\u6362\u6A21\u677F","{{version}}").option("--create-if-not-exists","\u6587\u4EF6\u4E0D\u5B58\u5728\u65F6\u81EA\u52A8\u521B\u5EFA",false).action(s=>n(null,null,function*(){let e=s.position,r=yield (s.config?yield Me(s.config,e):Ge(s,e)).update();M(r);}));commander.program.command("get").description("\u83B7\u53D6\u7248\u672C").option("-p --position <position>","\u66F4\u65B0\u4F4D\u7F6E",d[l.position]).option("-c --config <configFile>","\u7248\u672C\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84").action(s=>n(null,null,function*(){let e=s.position,t=s.config?(yield E(s.config,e)).getter:new h({position:d[e]});if(!t)throw new Error("getter is required when using semantic-version get");logger.Logger.log(yield t.get());}));commander.program.command("read").description("\u8BFB\u53D6\u76EE\u6807\u6587\u4EF6\u4E2D\u7684\u5F53\u524D\u7248\u672C").option("-c --config <configFile>","\u7248\u672C\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84").option("-F --file <fileName>","\u76EE\u6807\u6587\u4EF6\u540D\u79F0",l.file).option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","json").option("-k --key <key>","\u517C\u5BB9\u65E7\u7248 key \u53C2\u6570",l.key).option("--path <path>","\u7ED3\u6784\u5316\u8DEF\u5F84").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").option("--value-only","\u53EA\u8F93\u51FA\u5F53\u524D\u503C",false).action(s=>n(null,null,function*(){let e=s.config?yield E(s.config):void 0,r=yield (e?new f({targets:e.targets}):new f({targets:[T(s)]})).read();if(s.valueOnly){re(r,e==null?void 0:e.currentTargetIndex);return}M(r);}));commander.program.command("set").description("\u628A\u6307\u5B9A\u7248\u672C\u503C\u5199\u5165\u76EE\u6807\u6587\u4EF6").argument("<value>","\u7248\u672C\u503C").option("-c --config <configFile>","\u7248\u672C\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84").option("-F --file <fileName>","\u76EE\u6807\u6587\u4EF6\u540D\u79F0",l.file).option("-t --type <type>","\u76EE\u6807\u6587\u4EF6\u7C7B\u578B","json").option("-k --key <key>","\u517C\u5BB9\u65E7\u7248 key \u53C2\u6570",l.key).option("--path <path>","\u7ED3\u6784\u5316\u8DEF\u5F84").option("--mode <mode>","\u6587\u672C\u6A21\u5F0F. raw \u6216 replace","raw").option("--pattern <pattern>","\u6587\u672C\u66FF\u6362\u6B63\u5219").option("--replacement <replacement>","\u6587\u672C\u66FF\u6362\u6A21\u677F","{{version}}").option("--create-if-not-exists","\u6587\u4EF6\u4E0D\u5B58\u5728\u65F6\u81EA\u52A8\u521B\u5EFA",false).action((s,e)=>n(null,null,function*(){let t=e.config?yield E(e.config):void 0,o=yield (t?new f({targets:t.targets}):new f({targets:[T(e)]})).set(s);M(o);}));commander.program.parse(process.argv);function Ge(s,e){let t=d[e],r=x(s.file);return new f({getter:new h({position:t,file:r}),targets:[T(m(u({},s),{file:r}))]})}function Me(s,e){return n(this,null,function*(){let t=yield E(s,e);if(!t.getter)throw new Error("getter is required when using semantic-version update with config");return new f({getter:t.getter,targets:t.targets})})}});var semanticVersion = be();module.exports=semanticVersion;