@vamdawn/cconvo 1.3.0 → 1.4.0

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.
@@ -9,6 +9,77 @@ const messages = {
9
9
  turns: 'turns',
10
10
  thinking: 'Thinking',
11
11
  tool: 'Tool',
12
+ // 新增:交互式界面文案
13
+ currentProject: 'Current Project',
14
+ selectConversation: 'Select a conversation',
15
+ noConversationsFound: 'No conversations found',
16
+ conversationInfo: 'Conversation Info',
17
+ sessionId: 'Session ID',
18
+ startTime: 'Start Time',
19
+ messageCount: 'Message Count',
20
+ projectPath: 'Project Path',
21
+ pressAnyKeyToReturn: 'Press any key to return...',
22
+ exported: 'Exported',
23
+ exportFormat: 'Export format',
24
+ searchPlaceholder: 'Search',
25
+ noMatchingConversations: 'No matching conversations',
26
+ clearSearch: 'Clear search',
27
+ // 快捷键提示
28
+ shortcuts: '[e] Export [i] Info [/] Search [Esc] Back [m] Home [q] Quit',
29
+ shortcutsSearch: '[Esc] Clear [Enter] Select',
30
+ // 项目浏览相关
31
+ browseProjects: 'Browse Projects',
32
+ viewStatistics: 'View Statistics',
33
+ noProjects: 'No projects found',
34
+ selectProject: 'Select a project',
35
+ selectAction: 'Select an action',
36
+ conversations: 'conversations',
37
+ menu: 'Menu',
38
+ // 通用列表组件
39
+ listShortcuts: '[Enter] Select [/] Search [Esc] Back [q] Quit',
40
+ listShortcutsSearch: '[Esc] Clear [Enter] Select',
41
+ noData: 'No data',
42
+ moreItems: 'more items',
43
+ moreItemsAbove: 'more items above',
44
+ // 加载提示
45
+ detectingProject: 'Detecting current project...',
46
+ detectedProject: 'Detected project',
47
+ loadingProjects: 'Loading projects...',
48
+ calculatingStats: 'Calculating statistics...',
49
+ goodbye: 'Goodbye!',
50
+ // 统计页面
51
+ statistics: 'Statistics',
52
+ totalProjects: 'Total Projects',
53
+ totalConversations: 'Total Conversations',
54
+ totalSize: 'Total Size',
55
+ topProjectsBySize: 'Top 10 Projects by Size',
56
+ msgs: 'msgs',
57
+ more: 'more',
58
+ deleted: 'Deleted',
59
+ settings: 'Settings',
60
+ language: 'Language',
61
+ selectLanguage: 'Select Language',
62
+ languageChanged: 'Language changed',
63
+ // CLI 命令翻译
64
+ scanningConversations: 'Scanning conversations...',
65
+ noProjectsMatching: 'No projects matching',
66
+ foundConversations: 'Found',
67
+ conversationsIn: 'conversations in',
68
+ projects: 'projects',
69
+ findingConversation: 'Finding conversation...',
70
+ conversationNotFound: 'Conversation not found',
71
+ parsingConversation: 'Parsing conversation...',
72
+ exporting: 'Exporting...',
73
+ exportedTo: 'Exported to',
74
+ ambiguousSessionId: 'Ambiguous session ID prefix',
75
+ matched: 'matched',
76
+ useLongerPrefix: 'Please use a longer prefix to uniquely identify the conversation.',
77
+ exportFailed: 'Export failed',
78
+ failedToCalculate: 'Failed to calculate statistics',
79
+ failedToScan: 'Failed to scan conversations',
80
+ andMore: 'and',
81
+ moreConversations: 'more conversations',
82
+ moreProjects: 'more projects',
12
83
  },
13
84
  zh: {
14
85
  userInput: '用户输入',
@@ -20,6 +91,77 @@ const messages = {
20
91
  turns: '轮对话',
21
92
  thinking: '思考过程',
22
93
  tool: '工具',
94
+ // 新增:交互式界面文案
95
+ currentProject: '当前项目',
96
+ selectConversation: '选择对话',
97
+ noConversationsFound: '未找到对话',
98
+ conversationInfo: '对话信息',
99
+ sessionId: '会话 ID',
100
+ startTime: '开始时间',
101
+ messageCount: '消息数量',
102
+ projectPath: '项目路径',
103
+ pressAnyKeyToReturn: '按任意键返回...',
104
+ exported: '已导出',
105
+ exportFormat: '导出格式',
106
+ searchPlaceholder: '搜索',
107
+ noMatchingConversations: '没有匹配的对话',
108
+ clearSearch: '清除搜索',
109
+ // 快捷键提示
110
+ shortcuts: '[e] 导出 [i] 信息 [/] 搜索 [Esc] 返回 [m] 首页 [q] 退出',
111
+ shortcutsSearch: '[Esc] 清除 [回车] 选择',
112
+ // 项目浏览相关
113
+ browseProjects: '浏览项目',
114
+ viewStatistics: '查看统计',
115
+ noProjects: '未找到项目',
116
+ selectProject: '选择项目',
117
+ selectAction: '选择操作',
118
+ conversations: '个对话',
119
+ menu: '菜单',
120
+ // 通用列表组件
121
+ listShortcuts: '[回车] 选择 [/] 搜索 [Esc] 返回 [q] 退出',
122
+ listShortcutsSearch: '[Esc] 清除 [回车] 选择',
123
+ noData: '无数据',
124
+ moreItems: '项',
125
+ moreItemsAbove: '项在上方',
126
+ // 加载提示
127
+ detectingProject: '正在检测当前项目...',
128
+ detectedProject: '检测到项目',
129
+ loadingProjects: '正在加载项目...',
130
+ calculatingStats: '正在计算统计...',
131
+ goodbye: '再见!',
132
+ // 统计页面
133
+ statistics: '统计信息',
134
+ totalProjects: '项目总数',
135
+ totalConversations: '对话总数',
136
+ totalSize: '总大小',
137
+ topProjectsBySize: '按大小排序 Top 10',
138
+ msgs: '条消息',
139
+ more: '更多',
140
+ deleted: '已删除',
141
+ settings: '设置',
142
+ language: '语言',
143
+ selectLanguage: '选择语言',
144
+ languageChanged: '语言已更改',
145
+ // CLI 命令翻译
146
+ scanningConversations: '正在扫描对话...',
147
+ noProjectsMatching: '没有匹配的项目',
148
+ foundConversations: '找到',
149
+ conversationsIn: '个对话,来自',
150
+ projects: '个项目',
151
+ findingConversation: '正在查找对话...',
152
+ conversationNotFound: '未找到对话',
153
+ parsingConversation: '正在解析对话...',
154
+ exporting: '正在导出...',
155
+ exportedTo: '已导出到',
156
+ ambiguousSessionId: '会话 ID 前缀不明确',
157
+ matched: '匹配了',
158
+ useLongerPrefix: '请使用更长的前缀来唯一标识对话。',
159
+ exportFailed: '导出失败',
160
+ failedToCalculate: '计算统计失败',
161
+ failedToScan: '扫描对话失败',
162
+ andMore: '以及',
163
+ moreConversations: '个对话',
164
+ moreProjects: '个项目',
23
165
  },
24
166
  };
25
167
  // 获取翻译文本
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"AAGA,MAAM,QAAQ,GAA6C;IACzD,EAAE,EAAE;QACF,SAAS,EAAE,YAAY;QACvB,cAAc,EAAE,iBAAiB;QACjC,UAAU,EAAE,WAAW;QACvB,SAAS,EAAE,YAAY;QACvB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;KACb;IACD,EAAE,EAAE;QACF,SAAS,EAAE,MAAM;QACjB,cAAc,EAAE,WAAW;QAC3B,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,MAAM;QACjB,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,IAAI;KACX;CACF,CAAC;AAEF,SAAS;AACT,MAAM,UAAU,CAAC,CAAC,GAAW,EAAE,IAAc;IAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"AAGA,MAAM,QAAQ,GAA6C;IACzD,EAAE,EAAE;QACF,SAAS,EAAE,YAAY;QACvB,cAAc,EAAE,iBAAiB;QACjC,UAAU,EAAE,WAAW;QACvB,SAAS,EAAE,YAAY;QACvB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;QACZ,aAAa;QACb,cAAc,EAAE,iBAAiB;QACjC,kBAAkB,EAAE,uBAAuB;QAC3C,oBAAoB,EAAE,wBAAwB;QAC9C,gBAAgB,EAAE,mBAAmB;QACrC,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,YAAY;QACvB,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,cAAc;QAC3B,mBAAmB,EAAE,4BAA4B;QACjD,QAAQ,EAAE,UAAU;QACpB,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,QAAQ;QAC3B,uBAAuB,EAAE,2BAA2B;QACpD,WAAW,EAAE,cAAc;QAC3B,QAAQ;QACR,SAAS,EAAE,kEAAkE;QAC7E,eAAe,EAAE,6BAA6B;QAC9C,SAAS;QACT,cAAc,EAAE,iBAAiB;QACjC,cAAc,EAAE,iBAAiB;QACjC,UAAU,EAAE,mBAAmB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,YAAY,EAAE,kBAAkB;QAChC,aAAa,EAAE,eAAe;QAC9B,IAAI,EAAE,MAAM;QACZ,SAAS;QACT,aAAa,EAAE,kDAAkD;QACjE,mBAAmB,EAAE,6BAA6B;QAClD,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,YAAY;QACvB,cAAc,EAAE,kBAAkB;QAClC,OAAO;QACP,gBAAgB,EAAE,8BAA8B;QAChD,eAAe,EAAE,kBAAkB;QACnC,eAAe,EAAE,qBAAqB;QACtC,gBAAgB,EAAE,2BAA2B;QAC7C,OAAO,EAAE,UAAU;QACnB,OAAO;QACP,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE,gBAAgB;QAC/B,kBAAkB,EAAE,qBAAqB;QACzC,SAAS,EAAE,YAAY;QACvB,iBAAiB,EAAE,yBAAyB;QAC5C,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;QACpB,cAAc,EAAE,iBAAiB;QACjC,eAAe,EAAE,kBAAkB;QACnC,WAAW;QACX,qBAAqB,EAAE,2BAA2B;QAClD,kBAAkB,EAAE,sBAAsB;QAC1C,kBAAkB,EAAE,OAAO;QAC3B,eAAe,EAAE,kBAAkB;QACnC,QAAQ,EAAE,UAAU;QACpB,mBAAmB,EAAE,yBAAyB;QAC9C,oBAAoB,EAAE,wBAAwB;QAC9C,mBAAmB,EAAE,yBAAyB;QAC9C,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,aAAa;QACzB,kBAAkB,EAAE,6BAA6B;QACjD,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,mEAAmE;QACpF,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,gCAAgC;QACnD,YAAY,EAAE,8BAA8B;QAC5C,OAAO,EAAE,KAAK;QACd,iBAAiB,EAAE,oBAAoB;QACvC,YAAY,EAAE,eAAe;KAC9B;IACD,EAAE,EAAE;QACF,SAAS,EAAE,MAAM;QACjB,cAAc,EAAE,WAAW;QAC3B,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,MAAM;QACjB,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,IAAI;QACV,aAAa;QACb,cAAc,EAAE,MAAM;QACtB,kBAAkB,EAAE,MAAM;QAC1B,oBAAoB,EAAE,OAAO;QAC7B,gBAAgB,EAAE,MAAM;QACxB,SAAS,EAAE,OAAO;QAClB,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,MAAM;QACnB,mBAAmB,EAAE,WAAW;QAChC,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,MAAM;QACpB,iBAAiB,EAAE,IAAI;QACvB,uBAAuB,EAAE,SAAS;QAClC,WAAW,EAAE,MAAM;QACnB,QAAQ;QACR,SAAS,EAAE,kDAAkD;QAC7D,eAAe,EAAE,mBAAmB;QACpC,SAAS;QACT,cAAc,EAAE,MAAM;QACtB,cAAc,EAAE,MAAM;QACtB,UAAU,EAAE,OAAO;QACnB,aAAa,EAAE,MAAM;QACrB,YAAY,EAAE,MAAM;QACpB,aAAa,EAAE,KAAK;QACpB,IAAI,EAAE,IAAI;QACV,SAAS;QACT,aAAa,EAAE,mCAAmC;QAClD,mBAAmB,EAAE,mBAAmB;QACxC,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,GAAG;QACd,cAAc,EAAE,MAAM;QACtB,OAAO;QACP,gBAAgB,EAAE,aAAa;QAC/B,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,WAAW;QAC5B,gBAAgB,EAAE,WAAW;QAC7B,OAAO,EAAE,KAAK;QACd,OAAO;QACP,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,MAAM;QACrB,kBAAkB,EAAE,MAAM;QAC1B,SAAS,EAAE,KAAK;QAChB,iBAAiB,EAAE,cAAc;QACjC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,MAAM;QACtB,eAAe,EAAE,OAAO;QACxB,WAAW;QACX,qBAAqB,EAAE,WAAW;QAClC,kBAAkB,EAAE,SAAS;QAC7B,kBAAkB,EAAE,IAAI;QACxB,eAAe,EAAE,QAAQ;QACzB,QAAQ,EAAE,KAAK;QACf,mBAAmB,EAAE,WAAW;QAChC,oBAAoB,EAAE,OAAO;QAC7B,mBAAmB,EAAE,WAAW;QAChC,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,MAAM;QAClB,kBAAkB,EAAE,aAAa;QACjC,OAAO,EAAE,KAAK;QACd,eAAe,EAAE,kBAAkB;QACnC,YAAY,EAAE,MAAM;QACpB,iBAAiB,EAAE,QAAQ;QAC3B,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,IAAI;QACb,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,KAAK;KACpB;CACF,CAAC;AAEF,SAAS;AACT,MAAM,UAAU,CAAC,CAAC,GAAW,EAAE,IAAc;IAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACpC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Language } from './i18n.js';
2
+ export interface Settings {
3
+ language: Language;
4
+ }
5
+ export declare function getSettingsPath(): string;
6
+ export declare function loadSettings(): Settings;
7
+ export declare function saveSettings(settings: Settings): void;
8
+ export declare function getLanguage(): Language;
9
+ export declare function setLanguage(lang: Language): void;
10
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG1C,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAaD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAGD,wBAAgB,YAAY,IAAI,QAAQ,CAcvC;AAGD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAUrD;AAGD,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAGD,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAIhD"}
@@ -0,0 +1,51 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ // 默认配置
5
+ const DEFAULT_SETTINGS = {
6
+ language: 'en',
7
+ };
8
+ // 获取配置目录路径
9
+ function getSettingsDir() {
10
+ return path.join(os.homedir(), '.cconvo');
11
+ }
12
+ // 获取配置文件路径
13
+ export function getSettingsPath() {
14
+ return path.join(getSettingsDir(), 'settings.json');
15
+ }
16
+ // 加载配置
17
+ export function loadSettings() {
18
+ const filePath = getSettingsPath();
19
+ try {
20
+ if (fs.existsSync(filePath)) {
21
+ const content = fs.readFileSync(filePath, 'utf-8');
22
+ const parsed = JSON.parse(content);
23
+ return { ...DEFAULT_SETTINGS, ...parsed };
24
+ }
25
+ }
26
+ catch {
27
+ // 配置文件损坏时返回默认值
28
+ }
29
+ return { ...DEFAULT_SETTINGS };
30
+ }
31
+ // 保存配置
32
+ export function saveSettings(settings) {
33
+ const dir = getSettingsDir();
34
+ const filePath = getSettingsPath();
35
+ // 确保目录存在
36
+ if (!fs.existsSync(dir)) {
37
+ fs.mkdirSync(dir, { recursive: true });
38
+ }
39
+ fs.writeFileSync(filePath, JSON.stringify(settings, null, 2), 'utf-8');
40
+ }
41
+ // 获取当前语言
42
+ export function getLanguage() {
43
+ return loadSettings().language;
44
+ }
45
+ // 设置语言
46
+ export function setLanguage(lang) {
47
+ const settings = loadSettings();
48
+ settings.language = lang;
49
+ saveSettings(settings);
50
+ }
51
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAQpB,OAAO;AACP,MAAM,gBAAgB,GAAa;IACjC,QAAQ,EAAE,IAAI;CACf,CAAC;AAEF,WAAW;AACX,SAAS,cAAc;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,WAAW;AACX,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,CAAC,CAAC;AACtD,CAAC;AAED,OAAO;AACP,MAAM,UAAU,YAAY;IAC1B,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;YACxD,OAAO,EAAE,GAAG,gBAAgB,EAAE,GAAG,MAAM,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;AACjC,CAAC;AAED,OAAO;AACP,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IAEnC,SAAS;IACT,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED,SAAS;AACT,MAAM,UAAU,WAAW;IACzB,OAAO,YAAY,EAAE,CAAC,QAAQ,CAAC;AACjC,CAAC;AAED,OAAO;AACP,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vamdawn/cconvo",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "Interactive CLI tool to browse and export Claude Code conversations",
5
5
  "main": "dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -44,11 +44,9 @@
44
44
  "commander": "^12.1.0",
45
45
  "dayjs": "^1.11.13",
46
46
  "handlebars": "^4.7.8",
47
- "inquirer": "^12.3.0",
48
47
  "ora": "^8.1.1"
49
48
  },
50
49
  "devDependencies": {
51
- "@types/inquirer": "^9.0.7",
52
50
  "@types/node": "^22.10.5",
53
51
  "tsx": "^4.19.2",
54
52
  "typescript": "^5.7.3"