{"_id":"@feng3d/ctc","_rev":"16-c0c177f7e5a71318c4b51488d45ab30d","name":"@feng3d/ctc","dist-tags":{"latest":"0.2.1"},"versions":{"0.0.6":{"name":"@feng3d/ctc","version":"0.0.6","_id":"@feng3d/ctc@0.0.6","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"5e9f8f3d4109f4d29e6852025b5641d1d5915c6f","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.6.tgz","fileCount":30,"integrity":"sha512-xyY3UskFJUqOiwFl/9dOeapeWBPT48o39HXL/TIfquKBBXdS0nJbRwlXEFLZIrwPN8QuNhT9jt6DK41Bnub7Vw==","signatures":[{"sig":"MEQCICgwtkMwHWD3JczKwbfENzSn9Y8kE3tlT48yf5xCWcOoAiAM2h6i8YWzWdZCmiab8iwKNWB2W11L6XevHo2DzASiFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154859},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ba69858c51ea01768274e6b564ab2f3c2d5937f9","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","test:watch":"vitest watch"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.6"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.6_1770818070031_0.3815164888482152","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@feng3d/ctc","version":"0.0.7","_id":"@feng3d/ctc@0.0.7","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"fff386e0731858b17c6ab3da8460ba5f83d1eaec","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.7.tgz","fileCount":30,"integrity":"sha512-S0yCVKkFkLk+r3bJ91rBtVShlqLlLL/za2sIoWpLqkYb8e1zRHLpPgFFQ98onCavwxie43E1oIpw89nlheYpfA==","signatures":[{"sig":"MEQCIBYwBH4YrrGhPQNTQ+tk3HwYx+w9WrXfpzQ0zKdgkCdJAiBSiY33YG9ikAruIMV3Aii1wugetK5QLKN8MEdk/ISnAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154859},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b28cd46283743285a50d0deaa34def2f7f58f178","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","test:watch":"vitest watch"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.7_1770818324295_0.05005224929975016","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@feng3d/ctc","version":"0.0.8","_id":"@feng3d/ctc@0.0.8","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"b60ee84073d0f6f84ccc664286bc48cd3e1f079f","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.8.tgz","fileCount":30,"integrity":"sha512-Da+M4QJPyTH8tbDx0Pe0FIdskOKeyXkFwV8BOIlqkK80NEzsEo8V0uzAquLFt73avpMAR22BxBPC960s0Vqf0A==","signatures":[{"sig":"MEYCIQDptKNrp1sJ1Sur80vtL8Sx+EUZNRktykdGRhjU6UyOdAIhALPaC6nQTsQ4uZiGL9Qwqjh2eaNgW0PewxMk5q3oA9SA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154859},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ef4e03652644c0bc03ccf6a0057b94e68c7fda96","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","test:watch":"vitest watch"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.8"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.8_1770818829197_0.003957714974790916","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@feng3d/ctc","version":"0.0.9","_id":"@feng3d/ctc@0.0.9","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"81db5dc1959823636c9c5083ea11f7e67d3b7fe2","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.9.tgz","fileCount":30,"integrity":"sha512-p+QZu3LF6rYhKMsfgygMgqpesWqyfxcwZSzGky44Xqdhk8RgvnmOfWHuuHeq7gzYP/Wk7wEFI+mKeuOIn2Kkig==","signatures":[{"sig":"MEQCIHBh4PMK7wRsjqng8wrqhYDj09JSvadhu7gE1PeG16MRAiBdt80X0PvWRkOUqzKkY7oWdPhYbM0nxgh552SaY3UiVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154859},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c39d2596824af6ccb1ff8dc78dcea67f4d6cc55f","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","test:watch":"vitest watch"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.9_1770819094708_0.5322617383300816","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@feng3d/ctc","version":"0.0.10","_id":"@feng3d/ctc@0.0.10","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"4a3b42b6a16dd2aa84af3fab2b498891b217b505","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.10.tgz","fileCount":30,"integrity":"sha512-wAcEZwBiPqRsnkRzo7TfDpB6updmCd6inOUr1NSkRAS6JYjjTXSwEvGZTOcVO9CFpEB1lwIhDtd75cmaekNkzA==","signatures":[{"sig":"MEQCIEmvaQOLm1kiGWYUkPtE58K0N90dGhrxmYgkEjDlBHxfAiAymgdLh5Esv6Qydm4Sdmi0pgLRNc/Gx/C19+7ro6sJcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154861},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"242a046d9ccdd120600afebb344b14f5fa4b6879","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","test:watch":"vitest watch"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.10"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.10_1770819111558_0.026255161979215513","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@feng3d/ctc","version":"0.0.11","_id":"@feng3d/ctc@0.0.11","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"3708dbc159653fddaef946bcdea69e7081bdc60e","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.11.tgz","fileCount":38,"integrity":"sha512-6czWhjNNNOp3sHHOOhrjkV87yR0+EDFNLUopes+VPZ9X7lqWTKj42Mu8EPSUNPxB3srASmXxtDbBWhR5okH78Q==","signatures":[{"sig":"MEUCIA82cHi/jIjFr7O/xSxoieMIqcJuOppg80z07ElGl+TDAiEA88/QTnsrYUglB5kOPLWAazEqdJ2w+cgcTXpXEK5cU5U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168231},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"556fde5be059348847ff52ed5fb94c22bfc73276","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch --pretty","test:watch":"vitest watch","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.11"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.11_1770880459999_0.009134016126577826","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@feng3d/ctc","version":"0.0.12","_id":"@feng3d/ctc@0.0.12","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"e8b2a1609964ee0f0f499b7c1da5b1082c09bc82","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.12.tgz","fileCount":42,"integrity":"sha512-3v0/x+oywMeeYeYwBS3AvuQF1KZz74/DVQh1j8ETj/SHHuox2SioNJvpzazrBPYUNb89etp3yLLL2ddJ6fTusw==","signatures":[{"sig":"MEQCIHTmkgPY8PLmbTXGCbT1zQFEx6ufZm9LYn93S7Fa0mY+AiBvaZx8Co6xMEbtn6rqFgbduxbiNHHr+0ZlVKCzAo1W6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":270464},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"e74c59c3c4aa9df1cb7ea3c3d2b0cbd230ba8407","scripts":{"test":"vitest run","build":"npm run build --workspace=@feng3d/ctc-ui && tsc","clean":"rm -rf dist","watch":"tsc --watch --pretty","test:watch":"vitest watch","test:coverage":"vitest run --coverage","build:admin-ui":"cd admin-ui && npm run build"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.12"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.12_1771940101005_0.22482945553529254","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@feng3d/ctc","version":"0.0.13","_id":"@feng3d/ctc@0.0.13","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"d4b867ba64170a3f79d4d728b6ddd99f93bcdaac","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.13.tgz","fileCount":45,"integrity":"sha512-iFcaLbLqrkhESsYNZUU7uAcvZVWioLXAtlzwhGrfFl67BKjHniQk9KIkAxfe9JPPJsy8VtnDKFxxy9aywLkdsA==","signatures":[{"sig":"MEYCIQCbn8ds/hSvPDqquaAv1UDjAe3+9Jr5wdNdsuFqBt66/QIhAL6n0b13qRi4DfiYN+VauuqrtF5rYeyeL5qomY7001DP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":300343},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9afe30ece69753c71b4035563f63438f4752928a","scripts":{"test":"vitest run","build":"npm run build --workspace=@feng3d/ctc-ui && tsc","clean":"rm -rf dist","watch":"tsc --watch --pretty","test:watch":"vitest watch","test:coverage":"vitest run --coverage","build:admin-ui":"cd admin-ui && npm run build"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.13"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.13_1771940684751_0.4410357302289576","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@feng3d/ctc","version":"0.0.14","_id":"@feng3d/ctc@0.0.14","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"9106155a85f6393f94a00a297ad9bf446e284040","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.14.tgz","fileCount":45,"integrity":"sha512-Z2ejwIk0pvbbS77pQN7EJXmWxvmzX8Puq5IHu9qzk03pw7efaNyQ9NnL9ghUDGja1e3hnH4nNJ6CmGE71UCEfQ==","signatures":[{"sig":"MEUCIQCScr/1eOhVuDdDT086PHRSvKSl0LVvT3xmeZ6Dgwe+DQIgBAFYFriD+bexy4H6VMDMWELOhWuHuRI6vRtkIo7rvcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":301262},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"fa596fe4c8f0fa02bd4afcdcb0eccbdbcef858a7","scripts":{"test":"vitest run","build":"npm run build --workspace=@feng3d/ctc-ui && tsc","clean":"rm -rf dist","watch":"tsc --watch --pretty","test:watch":"vitest watch","test:coverage":"vitest run --coverage","build:admin-ui":"cd admin-ui && npm run build"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.14"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.14_1771943687489_0.48618169028239144","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@feng3d/ctc","version":"0.0.17","_id":"@feng3d/ctc@0.0.17","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"552e0a7e254cf1786f1b0126de4adb5f0d2ee760","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.17.tgz","fileCount":45,"integrity":"sha512-wvJ+0dkz52CBWQ8KzZyfZ8Bg3x1/sQR7XDLBiHYI2+Fh63U903CD12Q9KY1uE7aHBxkbleQhBu7KZyT1u7I68A==","signatures":[{"sig":"MEYCIQCzyDu5FL+WpIjU+9kfsMOS7eQvxmhNncFteQvoVGJo4QIhAOe/2cUGHmQgied/1V9yurKkYQDIS3AQsjE9YKcItP9J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306243},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7a30a8847f07d28abcc34fb76da451f8f1d69aab","scripts":{"test":"vitest run","build":"npm run build --workspace=@feng3d/ctc-ui && tsc","clean":"rm -rf dist","watch":"tsc --watch --pretty","test:watch":"vitest watch","test:coverage":"vitest run --coverage","build:admin-ui":"cd admin-ui && npm run build"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.17"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.17_1771955183912_0.7139502131690585","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"@feng3d/ctc","version":"0.0.18","_id":"@feng3d/ctc@0.0.18","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"db728ba846a21cd9b809b992f29027e31cccede5","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.18.tgz","fileCount":45,"integrity":"sha512-PGKKt/7SnmUZzQK7wz1JwIi9jZ2Iwx18wT6YhvEIBtRD3yXZCkfraVqtfSgTNtHJB+7MXqKbz/UdNDPvE+udqg==","signatures":[{"sig":"MEUCIGhxdFQ7WCZsUSzp9v0Q/LJoBkAmHw/s8qx8p3SPBaadAiEA5GLVU02pbFbPlwcQi8MkAAgQBTvpcFNR+vnq1EPE4aI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306243},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"642cdd460a858a77d9233153e099feea18e120c8","scripts":{"test":"vitest run","build":"npm run build --workspace=@feng3d/ctc-ui && tsc","clean":"rm -rf dist","watch":"tsc --watch --pretty","test:watch":"vitest watch","test:coverage":"vitest run --coverage","build:admin-ui":"cd admin-ui && npm run build"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.18"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.18_1771996194417_0.6072625791296418","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"@feng3d/ctc","version":"0.0.19","_id":"@feng3d/ctc@0.0.19","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"d7cef32b3756137edae72d15f61ef5e82987395e","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.19.tgz","fileCount":45,"integrity":"sha512-lTZDleAM+tPEe0xp3NVilwSltJloXvXzvH2czXl+UxdF3EWp//DoHlwgOpTluAf8t50w7tsf0RzGPTIrFNURlA==","signatures":[{"sig":"MEUCIBKNCNp13uOW8AlMEcBObD/T8miltBEHuKK+6FWVhjE/AiEA7MiIR8EkfrGYfJVJj8lRlHfLgn/bPKcDIgE8MhIdqA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":310894},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f49c077c22c2ad175439194ef5aa955263bc5d4a","scripts":{"test":"vitest run","build":"npm run build --workspace=@feng3d/ctc-ui && tsc","clean":"rm -rf dist","watch":"tsc --watch --pretty","test:watch":"vitest watch","test:coverage":"vitest run --coverage","build:admin-ui":"cd admin-ui && npm run build"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.19"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.19_1772024576210_0.6522852580968914","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"@feng3d/ctc","version":"0.0.20","_id":"@feng3d/ctc@0.0.20","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"01630567c51f21c32b9d96b9cd24319ad47343a9","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.0.20.tgz","fileCount":61,"integrity":"sha512-579JP7ff1htrziBO9/CooRSEuPROCBwKn5Ed0QCZhRo0SGU9GIOeGz3Sh4ddSFW0BR62+xGSt3pCpXtOB97zpg==","signatures":[{"sig":"MEUCIQDgI/INBzHtxkNDOWNOAalOKCTT6gIqMVO7lJ52w3xHhwIgKwavkhTHpT0ovYntgPdZj9ALH9oMiSVPH/luz5pZOUw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":343989},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app":{"import":"./dist/app.js"}},"gitHead":"42a1e40a2da76078ab5d91b49eb442d2fbc92faf","scripts":{"test":"vitest run","build":"npm run build:admin-ui && tsc","clean":"rm -rf dist","start":"node dist/app.js","watch":"tsc --watch --pretty","test:watch":"vitest watch","test:coverage":"vitest run --coverage","build:admin-ui":"cd admin-ui && npm run build"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.0.20"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.0.20_1772167138250_0.7818977807999614","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@feng3d/ctc","version":"0.1.0","_id":"@feng3d/ctc@0.1.0","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"42eb4beebbf4f1ff0765bed0388112e3d0e6f937","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.1.0.tgz","fileCount":30,"integrity":"sha512-Hhed2mNTAMqTZ46wEWbqG+gtCouiti/lo8nVBnGrp+e4PWiCcnx414MBWITeSUxJc1W6iTDKYrawKTx099R5Fg==","signatures":[{"sig":"MEUCIDqRqEYMcd5z0MENPz9GhMz1LKSJd16bd9LuhOYZJGDcAiEAoALOySEVuu5pHT0AAE+BlYe0y/UnSgC8FqnOFKO1GKE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110243},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"449bd3a7e9b91a2731e0b2701cb6bc288fa8cb7b","scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","start":"node dist/cli.js","watch":"tsc --watch --pretty","test:watch":"vitest watch","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.9.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.1.0_1783584617621_0.14296217731741234","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@feng3d/ctc","version":"0.2.0","_id":"@feng3d/ctc@0.2.0","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"bin":{"feng3d-ctc":"dist/cli.js"},"dist":{"shasum":"fd4ef0534fcfff297ed11f4ee9a1642841afca95","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.2.0.tgz","fileCount":30,"integrity":"sha512-mxVEUUsiP6XTg9pvMkP7z1x0HCrx5bInSOLtsH1yG4OLsJQyfo1CStSD/jWZuV9VfJVefTtIB3JND61F6B85Fg==","signatures":[{"sig":"MEUCIQC7Hnk9iBtfl1RRJBByK2i90aUAi2Z+WiETSe0V/TeVlwIgfjzSwkRaQM69KOABt0sai6p4LpVPPRaSYk5Y0VuQVH4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110597},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"62889b9299553da0b9f07c9f3f2393af203e473b","scripts":{"test":"vitest run","build":"tsc","clean":"rm -rf dist","start":"node dist/cli.js","watch":"tsc --watch --pretty","test:watch":"vitest watch","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"_npmVersion":"10.8.2","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ws":"^8.16.0","uuid":"^9.0.1","chalk":"^5.6.2","commander":"^14.0.3","@feng3d/chuantou-shared":"^0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.9","@types/ws":"^8.5.10","typescript":"^5.3.3","@types/node":"^20.10.0","@types/uuid":"^9.0.7","@vitest/coverage-v8":"^2.1.9"},"_npmOperationalInternal":{"tmp":"tmp/ctc_0.2.0_1783604667853_0.8533742609546628","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@feng3d/ctc","version":"0.2.1","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"feng3d-ctc":"dist/cli.js"},"exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"start":"node dist/cli.js","build":"tsc","watch":"tsc --watch --pretty","clean":"rm -rf dist","test":"vitest run","test:watch":"vitest watch","test:coverage":"vitest run --coverage"},"dependencies":{"@feng3d/chuantou-shared":"^0.2.1","chalk":"^5.6.2","commander":"^14.0.3","uuid":"^9.0.1","ws":"^8.16.0"},"devDependencies":{"@types/node":"^20.10.0","@types/uuid":"^9.0.7","@types/ws":"^8.5.10","@vitest/coverage-v8":"^2.1.9","typescript":"^5.3.3","vitest":"^2.1.9"},"_id":"@feng3d/ctc@0.2.1","gitHead":"e9f50fac76289230387e0601c1fcccb73b74b412","description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","_nodeVersion":"20.19.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-nTfopr1QXFMnfBueUOXCGngF8+DHD/r5GoMAaxfznTuGiVAp9nr7Ho3afvel6Jp1bOEVbmRr/zgXfL2gOa+99A==","shasum":"46f7319e853398179bd5e036672b8b6fa27f8d41","tarball":"https://registry.npmjs.org/@feng3d/ctc/-/ctc-0.2.1.tgz","fileCount":30,"unpackedSize":110597,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD2uqKJaq0gmI83WtQOUU5qdsRZx/W2MlPbG2jhLJIllwIhAN2IEPUM5BhpOFlEvjdrXd9Vi9H6OUPXUanBH571htx+"}]},"_npmUser":{"name":"feng3d","email":"908087098@qq.com"},"directories":{},"maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ctc_0.2.1_1783605694084_0.1389818983880815"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-11T13:54:29.959Z","modified":"2026-07-09T14:01:34.321Z","0.0.6":"2026-02-11T13:54:30.183Z","0.0.7":"2026-02-11T13:58:44.451Z","0.0.8":"2026-02-11T14:07:09.348Z","0.0.9":"2026-02-11T14:11:34.865Z","0.0.10":"2026-02-11T14:11:51.702Z","0.0.11":"2026-02-12T07:14:20.159Z","0.0.12":"2026-02-24T13:35:01.163Z","0.0.13":"2026-02-24T13:44:44.896Z","0.0.14":"2026-02-24T14:34:47.636Z","0.0.17":"2026-02-24T17:46:24.080Z","0.0.18":"2026-02-25T05:09:54.580Z","0.0.19":"2026-02-25T13:02:56.378Z","0.0.20":"2026-02-27T04:38:58.448Z","0.1.0":"2026-07-09T08:10:17.752Z","0.2.0":"2026-07-09T13:44:27.982Z","0.2.1":"2026-07-09T14:01:34.224Z"},"description":"**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。","maintainers":[{"name":"feng3d","email":"908087098@qq.com"}],"readme":"# @feng3d/ctc\n\n**ctc** 是 **穿透客户端**（Chuantou Client）的缩写。\n\n内网穿透转发系统的客户端，运行在内网机器上，将本地服务暴露到公网。\n\n## 特性\n\n- 极简设计，仅两步：`set` 配置服务端 → `-p <端口>` 映射\n- 远程端口由服务端自动分配，无需手动指定\n- **每个代理端口同时支持 HTTP/WebSocket/TCP/UDP 四种协议**\n- 三通道架构：WebSocket 控制通道 + TCP 二进制数据通道 + UDP 数据通道\n- 自动重连机制\n\n## 快速开始\n\n推荐使用 `npx` 直接运行，无需全局安装。两步即可完成映射：\n\n### 1. 配置服务端访问信息\n\n从服务端启动时打印的命令中复制（服务端 `start` 会自动给出）：\n\n```bash\nnpx -y @feng3d/ctc set -ip 203.0.113.10 -p 9000 -t a1b2c3d4-e5f6-7890-abcd-ef1234567890\n```\n\n服务端启用 TLS 时追加 `--tls`。配置保存在 `~/.chuantou/config.json`。\n\n### 2. 映射本地端口\n\n```bash\nnpx -y @feng3d/ctc -p 3000\n```\n\n服务端自动分配远程端口，映射成功后打印访问地址：\n\n```\n  端口映射成功\n  ───────────────────────────────────\n  本地端口: 3000\n  服务端映射端口: 9123\n  访问地址: http://203.0.113.10:9123\n  ───────────────────────────────────\n```\n\n访问 `http://<服务端IP>:<映射端口>` 即可访问本地的 3000 端口服务。\n\n## 命令说明\n\n### `set` - 配置服务端访问信息\n\n```bash\nnpx -y @feng3d/ctc set [选项]\n```\n\n**参数说明：**\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| `-ip <ip>` | 服务端 IP 或域名（简写，标准形式 `--ip`） | （必填） |\n| `-p, --server-port <port>` | 服务端控制端口 | （必填） |\n| `-t, --token <token>` | 认证 token（与服务端一致） | （必填） |\n| `--tls` | 服务端启用 TLS（使用 wss/https） | `false` |\n\n**示例：**\n\n```bash\n# 标准用法（推荐直接复制服务端打印的命令）\nnpx -y @feng3d/ctc set -ip 203.0.113.10 -p 9000 -t my-token\n\n# 使用域名 + TLS\nnpx -y @feng3d/ctc set -ip your.domain.com -p 9000 -t my-token --tls\n```\n\n> 说明：`-ip` 是用户习惯的简写（commander 短选项本是单字符，内部会自动重写为 `--ip`）。`set` 上下文中的 `-p` 指服务端控制端口，与映射命令的 `-p`（本地端口）含义不同。\n\n### 映射本地端口（默认动作）\n\n```bash\nnpx -y @feng3d/ctc -p <本地端口> [选项]\n```\n\n**参数说明：**\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| `-p, --port <localPort>` | 要映射的本地端口 | （必填） |\n| `-d, --detach` | 后台运行（终端关闭不停止） | 前台运行 |\n\n**示例：**\n\n```bash\n# 前台运行，映射本地 3000 端口\nnpx -y @feng3d/ctc -p 3000\n\n# 后台运行\nnpx -y @feng3d/ctc -p 3000 -d\n```\n\n不带任何参数运行会显示帮助。\n\n## 运行模式\n\n默认前台运行，Ctrl+C 或关闭终端即停止。\n\n追加 `-d` 后台运行（脱离终端），日志写入 `~/.chuantou/client.log`：\n\n```bash\nnpx -y @feng3d/ctc -p 3000 -d\n```\n\n后台进程停止用 `kill <pid>`（Linux）或 `taskkill /F /PID <pid>`（Windows），PID 在启动时打印。\n\n## 配置文件\n\n`set` 命令将服务端访问信息写入 `~/.chuantou/config.json`：\n\n```json\n{\n  \"serverIp\": \"203.0.113.10\",\n  \"serverPort\": 9000,\n  \"token\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n  \"tls\": false\n}\n```\n\n映射命令（`-p`）启动时读取该配置连接服务端。如需切换服务端，重新执行 `set` 即可覆盖。\n\n## 作为库使用\n\n```typescript\nimport { Controller, ProxyManager } from '@feng3d/ctc';\n\nconst controller = new Controller({\n  serverUrl: 'ws://203.0.113.10:9000/control',\n  token: 'my-token',\n  reconnectInterval: 5000,\n  maxReconnectAttempts: Infinity,\n});\n\nconst proxyManager = new ProxyManager(controller);\n\nawait controller.connect();\n// 认证成功后注册代理，服务端自动分配远程端口\ncontroller.on('authenticated', async () => {\n  await proxyManager.registerProxy({ localPort: 3000 });\n});\n\nproxyManager.on('registered', (assignedPort: number) => {\n  console.log(`已映射，访问地址: http://203.0.113.10:${assignedPort}`);\n});\n```\n\n## 许可证\n\nISC\n","readmeFilename":"README.md"}