electerm 2.3.126 → 2.3.151
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/npm/install.js +206 -26
- package/package.json +8 -127
package/README.md
CHANGED
|
@@ -133,12 +133,13 @@ wechat donate
|
|
|
133
133
|
## Dev
|
|
134
134
|
|
|
135
135
|
```bash
|
|
136
|
-
#
|
|
137
|
-
# needs nodejs/npm, suggest using
|
|
136
|
+
# May only works in Linux
|
|
137
|
+
# needs nodejs/npm, suggest using nvm to install nodejs/npm
|
|
138
138
|
# with nodejs 22.x
|
|
139
139
|
|
|
140
140
|
git clone git@github.com:electerm/electerm.git
|
|
141
141
|
cd electerm
|
|
142
|
+
npm config set legacy-peer-deps true
|
|
142
143
|
npm i
|
|
143
144
|
|
|
144
145
|
# start vite dev server, requires port 5570
|
|
@@ -168,7 +169,7 @@ npm run test
|
|
|
168
169
|
## Test build
|
|
169
170
|
|
|
170
171
|
```bash
|
|
171
|
-
#
|
|
172
|
+
# May only works in Linux
|
|
172
173
|
# Install yarn first(to do yarn autoclean)
|
|
173
174
|
# See https://yarnpkg.com/en/docs/install
|
|
174
175
|
|
|
@@ -184,9 +185,9 @@ npm run pb
|
|
|
184
185
|
./node_modules/.bin/electron-builder --linux --arm64
|
|
185
186
|
```
|
|
186
187
|
|
|
187
|
-
## Video
|
|
188
|
+
## Video guide
|
|
188
189
|
|
|
189
|
-
- [
|
|
190
|
+
- [https://electerm.html5beta.com/videos](https://electerm.html5beta.com/videos)
|
|
190
191
|
|
|
191
192
|
## Change log
|
|
192
193
|
|
package/npm/install.js
CHANGED
|
@@ -8,12 +8,7 @@ const { exec, rm, mv } = require('shelljs')
|
|
|
8
8
|
const rp = require('phin').promisified
|
|
9
9
|
const download = require('download')
|
|
10
10
|
const plat = os.platform()
|
|
11
|
-
const isWin = plat === 'win32'
|
|
12
|
-
const isMac = plat === 'darwin'
|
|
13
|
-
const isLinux = plat === 'linux'
|
|
14
11
|
const arch = os.arch()
|
|
15
|
-
const isArm = arch === 'arm'
|
|
16
|
-
const isArm64 = arch === 'arm64'
|
|
17
12
|
const { homepage } = require('../package.json')
|
|
18
13
|
const releaseInfoUrl = `${homepage}/data/electerm-github-release.json?_=${+new Date()}`
|
|
19
14
|
const versionUrl = `${homepage}/version.html?_=${+new Date()}`
|
|
@@ -47,49 +42,234 @@ function getReleaseInfo (filter) {
|
|
|
47
42
|
})
|
|
48
43
|
}
|
|
49
44
|
|
|
50
|
-
|
|
45
|
+
function showFinalMessage () {
|
|
46
|
+
console.log('\n========================================')
|
|
47
|
+
console.log('electerm installation complete!')
|
|
48
|
+
console.log('========================================')
|
|
49
|
+
console.log('\nFor more information, documentation, and updates, please visit:')
|
|
50
|
+
console.log('\x1b[36m%s\x1b[0m', 'https://electerm.html5beta.com')
|
|
51
|
+
console.log('\nThank you for using electerm!')
|
|
52
|
+
console.log('========================================\n')
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Check if running on Windows 7 or earlier
|
|
56
|
+
function isWindows7OrEarlier (platform, release) {
|
|
57
|
+
if (platform !== 'win32') return false
|
|
58
|
+
// Windows 7 is NT 6.1, Windows 8 is NT 6.2, Windows 10 is NT 10.0
|
|
59
|
+
const [major, minor] = release.split('.').map(Number)
|
|
60
|
+
return major < 10 && (major < 6 || (major === 6 && minor <= 1))
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Check if running on macOS 10.x (older than Big Sur 11.0)
|
|
64
|
+
function isMacOS10 (platform, release) {
|
|
65
|
+
if (platform !== 'darwin') return false
|
|
66
|
+
// Darwin kernel version: macOS 11 (Big Sur) = Darwin 20.x, macOS 10.15 = Darwin 19.x
|
|
67
|
+
const majorVersion = parseInt(release.split('.')[0], 10)
|
|
68
|
+
return majorVersion < 20
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Check if running on Linux with old glibc (< 2.34)
|
|
72
|
+
function isLinuxLegacy (platform, glibcVersion) {
|
|
73
|
+
if (platform !== 'linux') return false
|
|
74
|
+
if (typeof glibcVersion === 'number') {
|
|
75
|
+
return glibcVersion < 2.34
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const result = exec('ldd --version 2>&1 | head -n1', { silent: true })
|
|
79
|
+
if (result.code !== 0) return false
|
|
80
|
+
const output = result.stdout || ''
|
|
81
|
+
// Extract version number like "ldd (GNU libc) 2.31" or "ldd (Ubuntu GLIBC 2.35-0ubuntu3) 2.35"
|
|
82
|
+
const match = output.match(/(\d+\.\d+)\s*$/)
|
|
83
|
+
if (match) {
|
|
84
|
+
const version = parseFloat(match[1])
|
|
85
|
+
return version < 2.34
|
|
86
|
+
}
|
|
87
|
+
return false
|
|
88
|
+
} catch (e) {
|
|
89
|
+
return false
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Get the file pattern for download based on platform/arch/legacy status
|
|
94
|
+
function getDownloadPattern (platform, architecture, options = {}) {
|
|
95
|
+
const { win7, mac10, linuxLegacy } = options
|
|
96
|
+
|
|
97
|
+
if (platform === 'win32') {
|
|
98
|
+
if (win7) {
|
|
99
|
+
return { pattern: /electerm-\d+\.\d+\.\d+-win7\.tar\.gz$/, type: 'win7' }
|
|
100
|
+
} else if (architecture === 'arm64') {
|
|
101
|
+
return { pattern: /electerm-\d+\.\d+\.\d+-win-arm64\.tar\.gz$/, type: 'win-arm64' }
|
|
102
|
+
} else {
|
|
103
|
+
return { pattern: /electerm-\d+\.\d+\.\d+-win-x64\.tar\.gz$/, type: 'win-x64' }
|
|
104
|
+
}
|
|
105
|
+
} else if (platform === 'darwin') {
|
|
106
|
+
if (mac10) {
|
|
107
|
+
return { pattern: /mac10-x64\.dmg$/, type: 'mac10-x64' }
|
|
108
|
+
} else if (architecture === 'arm64') {
|
|
109
|
+
return { pattern: /mac-arm64\.dmg$/, type: 'mac-arm64' }
|
|
110
|
+
} else {
|
|
111
|
+
return { pattern: /mac-x64\.dmg$/, type: 'mac-x64' }
|
|
112
|
+
}
|
|
113
|
+
} else if (platform === 'linux') {
|
|
114
|
+
const suffix = linuxLegacy ? '-legacy' : ''
|
|
115
|
+
if (architecture === 'arm64') {
|
|
116
|
+
return { pattern: new RegExp(`linux-arm64${suffix}\\.tar\\.gz$`), type: `linux-arm64${suffix}` }
|
|
117
|
+
} else if (architecture === 'arm') {
|
|
118
|
+
return { pattern: new RegExp(`linux-armv7l${suffix}\\.tar\\.gz$`), type: `linux-armv7l${suffix}` }
|
|
119
|
+
} else {
|
|
120
|
+
return { pattern: new RegExp(`linux-x64${suffix}\\.tar\\.gz$`), type: `linux-x64${suffix}` }
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return { pattern: null, type: 'unsupported' }
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
async function runLinux (folderName, filePattern) {
|
|
51
127
|
const ver = await getVer()
|
|
52
|
-
const target = resolve(__dirname, `../electerm-${ver.replace('v', '')}-${
|
|
128
|
+
const target = resolve(__dirname, `../electerm-${ver.replace('v', '')}-${folderName}`)
|
|
53
129
|
const targetNew = resolve(__dirname, '../electerm')
|
|
54
130
|
exec(`rm -rf ${target} ${targetNew}`)
|
|
55
|
-
const releaseInfo = await getReleaseInfo(r => r.name.includes(
|
|
131
|
+
const releaseInfo = await getReleaseInfo(r => r.name.includes(filePattern))
|
|
132
|
+
if (!releaseInfo) {
|
|
133
|
+
throw new Error(`No release found for pattern: ${filePattern}`)
|
|
134
|
+
}
|
|
56
135
|
await down(releaseInfo.browser_download_url)
|
|
57
|
-
// await down('http://192.168.0.67:7500/electerm-0.16.1.tar.gz')
|
|
58
136
|
exec(`mv ${target} ${targetNew}`)
|
|
137
|
+
showFinalMessage()
|
|
59
138
|
exec('electerm')
|
|
60
139
|
}
|
|
61
140
|
|
|
62
|
-
async function runMac () {
|
|
63
|
-
const
|
|
141
|
+
async function runMac (archName) {
|
|
142
|
+
const pattern = new RegExp(`mac-${archName}\\.dmg$`)
|
|
143
|
+
const releaseInfo = await getReleaseInfo(r => pattern.test(r.name))
|
|
144
|
+
if (!releaseInfo) {
|
|
145
|
+
throw new Error(`No release found for Mac ${archName}`)
|
|
146
|
+
}
|
|
64
147
|
await down(releaseInfo.browser_download_url, false)
|
|
65
|
-
// await down('http://192.168.0.67:7500/electerm-0.16.1-mac.dmg', false)
|
|
66
148
|
const target = resolve(__dirname, '../', releaseInfo.name)
|
|
149
|
+
showFinalMessage()
|
|
67
150
|
exec(`open ${target}`)
|
|
68
151
|
}
|
|
69
152
|
|
|
70
|
-
|
|
153
|
+
// macOS 10.x specific version
|
|
154
|
+
async function runMac10 () {
|
|
155
|
+
const releaseInfo = await getReleaseInfo(r => /mac10-x64\.dmg$/.test(r.name))
|
|
156
|
+
if (!releaseInfo) {
|
|
157
|
+
throw new Error('No release found for macOS 10.x')
|
|
158
|
+
}
|
|
159
|
+
await down(releaseInfo.browser_download_url, false)
|
|
160
|
+
const target = resolve(__dirname, '../', releaseInfo.name)
|
|
161
|
+
showFinalMessage()
|
|
162
|
+
exec(`open ${target}`)
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
async function runWin (archName) {
|
|
71
166
|
const ver = await getVer()
|
|
72
|
-
const target = resolve(__dirname, `../electerm-${ver.replace('v', '')}-win
|
|
167
|
+
const target = resolve(__dirname, `../electerm-${ver.replace('v', '')}-win-${archName}`)
|
|
73
168
|
const targetNew = resolve(__dirname, '../electerm')
|
|
74
169
|
rm('-rf', [
|
|
75
170
|
target,
|
|
76
171
|
targetNew
|
|
77
172
|
])
|
|
78
|
-
const
|
|
173
|
+
const pattern = new RegExp(`electerm-\\d+\\.\\d+\\.\\d+-win-${archName}\\.tar\\.gz$`)
|
|
174
|
+
const releaseInfo = await getReleaseInfo(r => pattern.test(r.name))
|
|
175
|
+
if (!releaseInfo) {
|
|
176
|
+
throw new Error(`No release found for Windows ${archName}`)
|
|
177
|
+
}
|
|
79
178
|
await down(releaseInfo.browser_download_url)
|
|
80
|
-
// await down('http://192.168.0.67:7500/electerm-0.16.1-win.tar.gz')
|
|
81
179
|
await mv(target, targetNew)
|
|
180
|
+
showFinalMessage()
|
|
82
181
|
require('child_process').execFile(`${targetNew}\\electerm.exe`)
|
|
83
182
|
}
|
|
84
183
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
184
|
+
// Windows 7 specific version
|
|
185
|
+
async function runWin7 () {
|
|
186
|
+
const ver = await getVer()
|
|
187
|
+
const target = resolve(__dirname, `../electerm-${ver.replace('v', '')}-win7`)
|
|
188
|
+
const targetNew = resolve(__dirname, '../electerm')
|
|
189
|
+
rm('-rf', [
|
|
190
|
+
target,
|
|
191
|
+
targetNew
|
|
192
|
+
])
|
|
193
|
+
const releaseInfo = await getReleaseInfo(r => /electerm-\d+\.\d+\.\d+-win7\.tar\.gz$/.test(r.name))
|
|
194
|
+
if (!releaseInfo) {
|
|
195
|
+
throw new Error('No release found for Windows 7')
|
|
196
|
+
}
|
|
197
|
+
await down(releaseInfo.browser_download_url)
|
|
198
|
+
await mv(target, targetNew)
|
|
199
|
+
showFinalMessage()
|
|
200
|
+
require('child_process').execFile(`${targetNew}\\electerm.exe`)
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
async function main () {
|
|
204
|
+
console.log(`Detected platform: ${plat}, architecture: ${arch}`)
|
|
205
|
+
|
|
206
|
+
// Check for legacy systems
|
|
207
|
+
const win7 = isWindows7OrEarlier(plat, os.release())
|
|
208
|
+
const mac10 = isMacOS10(plat, os.release())
|
|
209
|
+
const linuxLegacy = isLinuxLegacy(plat)
|
|
210
|
+
|
|
211
|
+
if (win7) console.log('Detected: Windows 7 or earlier')
|
|
212
|
+
if (mac10) console.log('Detected: macOS 10.x')
|
|
213
|
+
if (linuxLegacy) console.log('Detected: Linux with glibc < 2.34 (legacy)')
|
|
214
|
+
|
|
215
|
+
console.log('Fetching release information...\n')
|
|
216
|
+
|
|
217
|
+
try {
|
|
218
|
+
if (plat === 'win32') {
|
|
219
|
+
// Windows: x64, arm64, win7
|
|
220
|
+
if (win7) {
|
|
221
|
+
await runWin7()
|
|
222
|
+
} else if (arch === 'arm64') {
|
|
223
|
+
await runWin('arm64')
|
|
224
|
+
} else {
|
|
225
|
+
// Default to x64 for all other Windows architectures
|
|
226
|
+
await runWin('x64')
|
|
227
|
+
}
|
|
228
|
+
} else if (plat === 'darwin') {
|
|
229
|
+
// macOS: x64, arm64, mac10
|
|
230
|
+
if (mac10) {
|
|
231
|
+
await runMac10()
|
|
232
|
+
} else if (arch === 'arm64') {
|
|
233
|
+
await runMac('arm64')
|
|
234
|
+
} else {
|
|
235
|
+
// Default to x64 for Intel Macs
|
|
236
|
+
await runMac('x64')
|
|
237
|
+
}
|
|
238
|
+
} else if (plat === 'linux') {
|
|
239
|
+
// Linux: x64, arm64, armv7l (with legacy variants)
|
|
240
|
+
const suffix = linuxLegacy ? '-legacy' : ''
|
|
241
|
+
if (arch === 'arm64') {
|
|
242
|
+
await runLinux(`linux-arm64${suffix}`, `linux-arm64${suffix}.tar.gz`)
|
|
243
|
+
} else if (arch === 'arm') {
|
|
244
|
+
await runLinux(`linux-armv7l${suffix}`, `linux-armv7l${suffix}.tar.gz`)
|
|
245
|
+
} else {
|
|
246
|
+
// Default to x64 for all other Linux architectures
|
|
247
|
+
await runLinux(`linux-x64${suffix}`, `linux-x64${suffix}.tar.gz`)
|
|
248
|
+
}
|
|
249
|
+
} else {
|
|
250
|
+
throw new Error(`Platform "${plat}" is not supported.`)
|
|
251
|
+
}
|
|
252
|
+
} catch (err) {
|
|
253
|
+
console.error('\n========================================')
|
|
254
|
+
console.error('Installation failed!')
|
|
255
|
+
console.error('========================================')
|
|
256
|
+
console.error(`Error: ${err.message}`)
|
|
257
|
+
console.error(`\nPlatform: ${plat}, Architecture: ${arch}`)
|
|
258
|
+
console.error('\nPlease visit https://electerm.html5beta.com for manual download options.')
|
|
259
|
+
console.error('========================================\n')
|
|
260
|
+
process.exit(1)
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// Export functions for testing
|
|
265
|
+
module.exports = {
|
|
266
|
+
isWindows7OrEarlier,
|
|
267
|
+
isMacOS10,
|
|
268
|
+
isLinuxLegacy,
|
|
269
|
+
getDownloadPattern
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// Run main only if this file is executed directly
|
|
273
|
+
if (require.main === module) {
|
|
274
|
+
main()
|
|
95
275
|
}
|
package/package.json
CHANGED
|
@@ -1,39 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "electerm",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.151",
|
|
4
4
|
"description": "Terminal/ssh/telnet/serialport/sftp client(linux, mac, win)",
|
|
5
5
|
"main": "app.js",
|
|
6
6
|
"bin": "npm/electerm",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"start": "node build/bin/start.js",
|
|
11
|
-
"icon": "node build/bin/icon",
|
|
12
|
-
"clean": "node build/bin/clean",
|
|
13
|
-
"compile": "node build/bin/build",
|
|
14
|
-
"vite-build": "node build/bin/vite-build.js",
|
|
15
|
-
"prepublishOnly": "node build/bin/prepublish",
|
|
16
|
-
"postpublish": "node build/bin/postpublish",
|
|
17
|
-
"prepare-file": "node build/bin/prepare",
|
|
18
|
-
"pb": "node build/bin/prepare-electron-build.js",
|
|
19
|
-
"prepare-test": "PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -E playwright@1.28.1 --no-save && npm i -E @playwright/test@1.28.1 --no-save",
|
|
20
|
-
"postinstall": "node build/bin/post-install",
|
|
21
|
-
"lint": "./node_modules/.bin/standard --verbose",
|
|
22
|
-
"fix": "./node_modules/.bin/standard --fix",
|
|
23
|
-
"test": "npm run test1 && npm run test2",
|
|
24
|
-
"test1": "./node_modules/.bin/playwright test test/e2e/00*.js --workers=1",
|
|
25
|
-
"test2": "./node_modules/.bin/playwright test test/e2e/01*.js --workers=1",
|
|
26
|
-
"b": "npm run clean && npm run compile && npm run prepare-file",
|
|
27
|
-
"r": "./build/bin/release",
|
|
28
|
-
"w": "./build/bin/web-release",
|
|
29
|
-
"t": "./node_modules/.bin/electron work/app/app.js",
|
|
30
|
-
"lock": "npm i --package-lock-only"
|
|
8
|
+
"postinstall": "node npm/install.js",
|
|
9
|
+
"postpublish": "node bin/postpublish.js"
|
|
31
10
|
},
|
|
32
11
|
"license": "MIT",
|
|
33
|
-
"langugeRepo": "https://github.com/electerm/electerm-locales",
|
|
34
|
-
"privacyNoticeLink": "https://github.com/electerm/electerm/wiki/privacy-notice",
|
|
35
|
-
"knownIssuesLink": "https://github.com/electerm/electerm/wiki/Know-issues",
|
|
36
|
-
"sponsorLink": "https://electerm.html5beta.com/sponsor-electerm.html",
|
|
37
12
|
"repository": {
|
|
38
13
|
"type": "git",
|
|
39
14
|
"url": "git+https://github.com/electerm/electerm.git"
|
|
@@ -47,112 +22,18 @@
|
|
|
47
22
|
"url": "https://github.com/electerm/electerm/issues"
|
|
48
23
|
},
|
|
49
24
|
"homepage": "https://electerm.html5beta.com",
|
|
50
|
-
"releases": "https://github.com/electerm/electerm/releases",
|
|
51
25
|
"engines": {
|
|
52
26
|
"node": ">=16.0.0"
|
|
53
27
|
},
|
|
54
28
|
"preferGlobal": true,
|
|
55
|
-
"devDependencies": {
|
|
56
|
-
"@ant-design/icons": "5.6.1",
|
|
57
|
-
"@electerm/electerm-resource": "1.3.7",
|
|
58
|
-
"@electron/rebuild": "4.0.1",
|
|
59
|
-
"@fontsource/maple-mono": "^5.2.5",
|
|
60
|
-
"@novnc/novnc": "1.4.0",
|
|
61
|
-
"@types/node": "22.9.3",
|
|
62
|
-
"@vitejs/plugin-react": "4.3.4",
|
|
63
|
-
"@xterm/addon-attach": "0.11.0",
|
|
64
|
-
"@xterm/addon-canvas": "0.7.0",
|
|
65
|
-
"@xterm/addon-fit": "0.10.0",
|
|
66
|
-
"@xterm/addon-ligatures": "0.9.0",
|
|
67
|
-
"@xterm/addon-search": "0.15.0",
|
|
68
|
-
"@xterm/addon-unicode11": "0.8.0",
|
|
69
|
-
"@xterm/addon-web-links": "0.11.0",
|
|
70
|
-
"@xterm/addon-webgl": "0.18.0",
|
|
71
|
-
"@xterm/xterm": "5.5.0",
|
|
72
|
-
"antd": "5.27.1",
|
|
73
|
-
"classnames": "2.5.1",
|
|
74
|
-
"cross-env": "7.0.3",
|
|
75
|
-
"dotenv": "16.4.5",
|
|
76
|
-
"electerm-icons": "1.0.1",
|
|
77
|
-
"electron": "38.2.2",
|
|
78
|
-
"electron-builder": "26.0.20",
|
|
79
|
-
"filesize": "10.1.6",
|
|
80
|
-
"filesize-parser": "1.5.1",
|
|
81
|
-
"firacode": "^6.2.0",
|
|
82
|
-
"ftp-srv": "^4.6.3",
|
|
83
|
-
"glob": "^11.0.0",
|
|
84
|
-
"lodash-es": "^4.17.21",
|
|
85
|
-
"manate": "2.0.0",
|
|
86
|
-
"morgan": "1.10.1",
|
|
87
|
-
"pug": "3.0.3",
|
|
88
|
-
"react": "18.3.1",
|
|
89
|
-
"react-colorful": "^5.6.1",
|
|
90
|
-
"react-delta-hooks": "1.1.5",
|
|
91
|
-
"react-dom": "18.3.1",
|
|
92
|
-
"react-markdown": "9.0.1",
|
|
93
|
-
"replace-in-file": "6.3.5",
|
|
94
|
-
"shelljs": "0.8.5",
|
|
95
|
-
"standard": "^17.1.0",
|
|
96
|
-
"stylus": "^0.64.0",
|
|
97
|
-
"trzsz": "^1.1.3",
|
|
98
|
-
"vite": "6.3.6",
|
|
99
|
-
"vite-plugin-commonjs": "0.10.4",
|
|
100
|
-
"zmodem-ts": "1.0.4"
|
|
101
|
-
},
|
|
102
29
|
"dependencies": {
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"@electerm/rdpjs": "^1.0.0",
|
|
107
|
-
"@electerm/ssh2": "1.16.2",
|
|
108
|
-
"@electerm/strip-ansi": "1.0.0",
|
|
109
|
-
"axios": "1.12.2",
|
|
110
|
-
"basic-ftp": "^5.0.5",
|
|
111
|
-
"commander": "12.1.0",
|
|
112
|
-
"diffie-hellman": "^5.0.3",
|
|
113
|
-
"electerm-sync": "1.2.1",
|
|
114
|
-
"electron-log": "4.3.5",
|
|
115
|
-
"express": "4.21.2",
|
|
116
|
-
"express-ws": "5.0.2",
|
|
117
|
-
"fast-deep-equal": "3.1.3",
|
|
118
|
-
"find-free-port": "2.0.0",
|
|
119
|
-
"font-list": "1.5.1",
|
|
120
|
-
"gist-wrapper": "0.4.1",
|
|
121
|
-
"gitee-client": "0.2.0",
|
|
122
|
-
"https-proxy-agent": "7.0.1",
|
|
123
|
-
"json-deep-copy": "1.3.1",
|
|
124
|
-
"jsonwebtoken": "^9.0.1",
|
|
125
|
-
"nanoid": "3.3.8",
|
|
126
|
-
"node-bash": "5.0.1",
|
|
127
|
-
"node-pty": "1.1.0-beta34",
|
|
128
|
-
"os-locale-s": "1.0.8",
|
|
129
|
-
"serialport": "13.0.0",
|
|
130
|
-
"socks": "2.7.1",
|
|
131
|
-
"socks-proxy-agent": "8.0.1",
|
|
132
|
-
"socksv5-electron": "^0.0.6",
|
|
133
|
-
"ssh-config": "5.0.1",
|
|
134
|
-
"tar": "7.4.3"
|
|
30
|
+
"shelljs": "*",
|
|
31
|
+
"phin": "*",
|
|
32
|
+
"download": "*"
|
|
135
33
|
},
|
|
136
34
|
"files": [
|
|
137
35
|
"npm",
|
|
138
36
|
"README.md",
|
|
139
37
|
"LICENSE"
|
|
140
|
-
]
|
|
141
|
-
|
|
142
|
-
"sourceType": "module",
|
|
143
|
-
"ignore": [
|
|
144
|
-
"/app/assets/",
|
|
145
|
-
"src/client/entry/rle.js"
|
|
146
|
-
],
|
|
147
|
-
"globals": [
|
|
148
|
-
"log",
|
|
149
|
-
"MouseEvent",
|
|
150
|
-
"WebSocket",
|
|
151
|
-
"FileReader",
|
|
152
|
-
"CustomEvent",
|
|
153
|
-
"onmessage",
|
|
154
|
-
"requestAnimationFrame",
|
|
155
|
-
"self"
|
|
156
|
-
]
|
|
157
|
-
}
|
|
158
|
-
}
|
|
38
|
+
]
|
|
39
|
+
}
|