# 编程猫 CoCo 源代码计划
**Repository Path**: glacier-studio/CoCo-Source-Code-Plan
## Basic Information
- **Project Name**: 编程猫 CoCo 源代码计划
- **Description**: 还原编程猫 CoCo 编辑器、CoCo Player 等的代码。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-06-22
- **Last Updated**: 2025-11-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 编程猫 CoCo 源代码计划
-blue?style=flat-square)
还原编程猫 CoCo 编辑器、CoCo Player 等的代码。
> [!IMPORTANT]
>
> 停更通知:
>
> 该项目唯一的核心维护者 SLIGHTNING 由于学业繁忙,将无法维护该项目。预计将于 2026 年 6 月 17 日后恢复更新。
## 一、介绍
### 1.是什么
CoCo 源代码计划是一个从 CoCo 的分发文件中还原 CoCo 代码的项目。该项目使用 Babel、ESLint 等技术来辅助这个过程。同时保证得到的代码可以打包运行。
### 2.产生背景
CoCo 由于编程猫不知道什么原因的问题,CoCo 长久不进行有效更新,然而 CoCo 中还有许多 BUG,功能也尚不完善,更过分的是,每次 CoCo 更新都会添加一些限制。面对编程猫这种情况,社区大佬尝试通过修改 CoCo 代码的方式为 CoCo 提供更好的使用体验(如:CoCoPro、青柠绕审核),然而,这些项目大多通过 Hook 全局 API 和修改分发文件的方式来改进 CoCo,这样存在许多问题(如:逆向难度高、不方便进行版本管理)。
这样进行少量修改还尚且可以应对,但是 SLIGHTNING 想要深度修改 CoCo,出于此,还原 CoCo 代码就显得至关重要。
### 3.不是什么
CoCo 源代码计划并不是也不能完全还原 CoCo 的源代码,该项目最多得到的只是在功能上与 CoCo 等价的适用于人类阅读的代码。
### 4.那些项目在使用 CoCo 源代码计划
- [CoCo Next](https://gitee.com/oldsquaw/CoCo-Next):CoCo Next 基于 CoCo 源代码计划二次开发 CoCo。
## 二、进度
| 模块 | 抓取 | 拆包 | 语法升级 | JSX 反向转换 | 反压缩 |
| :-: | :-: | :-: | :-: | :-: | :-: |
| CoCo Home | ✅ | 75% | ❌ | ❌ | / |
| CoCo Editor | ✅ | 75% | ❌ | ❌ | 0% |
| CoCo Editor Player | ✅ | 75% | ❌ | ❌ | ❌ |
| CoCo Editor ServiceWorker | ✅ | ✅ | ❌ | / | ❌ |
| CoCo Player | ✅ | 75% | ❌ | ❌ | ❌ |
| CoCo About | ✅ | 75% | ❌ | ❌ | ❌ |
过程说明:
- 抓取:把公开文件的代码放到仓库中;
- 拆包:把打包过的代码拆成模块;
- 语法升级:将降级后的语法转换成降级前的;
- JSX 反向转换:将转换后的 `React.createElement` 调用转换为 JSX;
- 反压缩:给模块名称、代码中的量的名称等重新设置一个有意义的名称。
符号说明:
- `✅`:全部完成;
- `❌`:一点没动;
- `/`:不需要;
- `xx%`:完成比例(估计值,可能不准确)。
## 三、构建和运行
### 1.准备
#### (1)克隆仓库到本地
```sh
git clone https://github.com/glacier-studio/CoCo-Source-Code-Plan.git
# 或从 Gitee 克隆:
# git clone https://gitee.com/glacier-studio/CoCo-Source-Code-Plan.git
```
#### (2)安装依赖
```sh
$ npm install --legacy-peer-deps
```
### 2.自动还原代码
自动还原代码指使用自动化工具还原代码,包括以下几个步骤:
- 解包
- 转换
- 格式化
仓库中已包含自动还原后的代码,无需还原即可使用。
当然你也可以重新自动还原代码。
自动还原代码的设备性能要求:
- 有 4GiB 的行运行内存可用。
提示:如果设备内存不多,Node.js 的内存限制会比较小,可以通过设置环境变量 `NODE_OPTIONS = "--max_old_space_size=4096"` 来调大内存限制。
```sh
$ npm run auto-reverse
```
### 3.以开发模式打包运行解包后的代码
#### (1)启动开发服务
```sh
$ npm run start
```
#### (2)在浏览器中打开
在本机浏览器中打开 。
### 4.构建生产版本
```sh
$ npm run build
```
提示:你可以使用下面这个命令在本地启动一个服务器来查看生产版本。
```sh
$ npm run serve
```
依然是在 中打开。
## 四、目录结构说明
### 1.公开文件(/public)
编程猫 CoCo 编辑器的公开代码文件(经格式化)。
不保留历史版本。
当存储的前版本为 v1.21.7。
### 2.未还原的(/unrestored)
已拆成模块但还未还原的代码。
### 3.源文件(/src)
还原过的的代码。
## 五、派生
尽管还原 CoCo 源代码是一个漫长的过程,但是 CoCo 源代码计划允许已还原和未还原的代码混合运行,使得 CoCo 源代码现在就可以被用来派生 CoCo。
你可以使用本项目还原出来的代码制作其他功能,如:制作绕审核 Player、CoCo Next。
> [!WARNING]
>
> 但是请注意:
>
> 不建议更改未还原的代码(位于 /unrestored 中的代码),这些代码可能经常变更!
## 六、参与贡献
> [!WARNING]
>
> 请注意:
>
> 参与贡献时,请确保做出修改后的代码能够正常打包运行。
### (1)解包代码
目前以下部分需要贡献:
- 依赖项排除;
- 后期代码转换。
### (2)反压缩
请安如下步骤进行:
1.把目标代码移动到 `/src` 目录中恰当的位置;
2.在相应的解包程序中添加移动规则;
3.重命名给模块名称、代码中的量的名称等重新设置一个有意义的名称。