7223 changed files with 810943 additions and 0 deletions
@ -0,0 +1,294 @@ |
|||
# 应用部署文档 |
|||
|
|||
## 1. 环境要求 |
|||
|
|||
### 服务器要求 |
|||
- 操作系统:Linux(推荐 Ubuntu 18.04+ 或 CentOS 7+) |
|||
- 内存:至少 2GB RAM |
|||
- 存储空间:至少 10GB 可用空间 |
|||
- 网络:可访问 Gitea 仓库(http://8.137.125.67:4000)和互联网 |
|||
|
|||
### 软件依赖 |
|||
- Docker:用于容器化部署 |
|||
- Git:用于代码拉取 |
|||
|
|||
## 2. 部署前准备 |
|||
|
|||
### 2.1 安装 Docker |
|||
|
|||
#### Ubuntu/Debian |
|||
```bash |
|||
# 更新系统包 |
|||
apt-get update |
|||
|
|||
# 安装 Docker |
|||
curl -fsSL https://get.docker.com | sh |
|||
|
|||
# 启动 Docker 服务 |
|||
systemctl start docker |
|||
|
|||
# 设置 Docker 开机自启 |
|||
systemctl enable docker |
|||
``` |
|||
|
|||
#### CentOS/RHEL |
|||
```bash |
|||
# 更新系统包 |
|||
yum update |
|||
|
|||
# 安装 Docker |
|||
yum install -y docker |
|||
|
|||
# 启动 Docker 服务 |
|||
systemctl start docker |
|||
|
|||
# 设置 Docker 开机自启 |
|||
systemctl enable docker |
|||
``` |
|||
|
|||
### 2.2 配置防火墙和安全组 |
|||
|
|||
#### 2.2.1 系统防火墙设置 |
|||
|
|||
确保服务器开放以下端口: |
|||
- 3000:应用访问端口 |
|||
- 4000:Gitea 仓库访问端口(仅在需要访问仓库时) |
|||
|
|||
##### Ubuntu/Debian (ufw) |
|||
```bash |
|||
# 允许 3000 端口 |
|||
ufw allow 3000/tcp |
|||
|
|||
# 允许 4000 端口(如果需要) |
|||
ufw allow 4000/tcp |
|||
|
|||
# 启用防火墙 |
|||
ufw enable |
|||
|
|||
# 查看防火墙规则 |
|||
ufw status verbose |
|||
``` |
|||
|
|||
##### CentOS/RHEL (firewalld) |
|||
```bash |
|||
# 允许 3000 端口 |
|||
firewall-cmd --zone=public --add-port=3000/tcp --permanent |
|||
|
|||
# 允许 4000 端口(如果需要) |
|||
firewall-cmd --zone=public --add-port=4000/tcp --permanent |
|||
|
|||
# 重新加载防火墙 |
|||
firewall-cmd --reload |
|||
|
|||
# 查看防火墙规则 |
|||
firewall-cmd --list-ports --zone=public |
|||
``` |
|||
|
|||
#### 2.2.2 云服务商安全组设置 |
|||
|
|||
如果您使用的是云服务器(如阿里云、腾讯云、华为云等),还需要在云服务商控制台配置安全组规则: |
|||
|
|||
1. 登录云服务器控制台 |
|||
2. 找到对应服务器的安全组配置 |
|||
3. 添加入站规则: |
|||
- 端口范围:3000/3000 |
|||
- 协议:TCP |
|||
- 授权对象:0.0.0.0/0(允许所有IP访问,或根据需要设置特定IP) |
|||
- 描述:应用访问端口 |
|||
|
|||
### 2.3 配置 Git 凭证(可选) |
|||
|
|||
如果 Gitea 仓库需要认证,可以配置 Git 凭证缓存: |
|||
|
|||
```bash |
|||
# 设置凭证缓存时间(1小时) |
|||
git config --global credential.helper cache |
|||
|
|||
# 设置凭证永久保存 |
|||
git config --global credential.helper store |
|||
|
|||
# 首次拉取时会要求输入用户名和密码,之后会自动保存 |
|||
``` |
|||
## 3. 部署步骤 |
|||
|
|||
### 3.1 下载部署脚本 |
|||
|
|||
将 `deploy.sh` 脚本上传到服务器的任意目录,例如 `/root` 目录。 |
|||
|
|||
### 3.2 设置执行权限 |
|||
|
|||
```bash |
|||
chmod +x deploy.sh |
|||
``` |
|||
|
|||
### 3.3 运行部署脚本 |
|||
|
|||
```bash |
|||
./deploy.sh |
|||
``` |
|||
|
|||
### 3.4 部署过程说明 |
|||
|
|||
脚本将执行以下步骤: |
|||
1. **检查应用目录**:如果不存在则克隆仓库,存在则拉取最新代码 |
|||
2. **切换分支**:确保使用正确的 `Ly` 分支 |
|||
3. **拉取代码**:从 Gitea 仓库拉取最新代码 |
|||
4. **停止旧容器**:停止并删除旧的 Docker 容器 |
|||
5. **检查端口**:确保 3000 端口未被占用 |
|||
6. **构建镜像**:重新构建 Docker 镜像 |
|||
7. **启动容器**:启动新的 Docker 容器 |
|||
8. **清理镜像**:清理无用的 Docker 镜像 |
|||
|
|||
## 4. 验证部署 |
|||
|
|||
### 4.1 检查容器状态 |
|||
|
|||
```bash |
|||
docker ps | grep reject-app |
|||
``` |
|||
|
|||
正常输出示例: |
|||
``` |
|||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
|||
abcdef123456 reject-app "node Reject.js" 1 minute ago Up 1 minute 0.0.0.0:3000->3000/tcp reject-app |
|||
``` |
|||
|
|||
### 4.2 检查端口映射 |
|||
|
|||
```bash |
|||
docker port reject-app |
|||
``` |
|||
|
|||
正常输出示例: |
|||
``` |
|||
3000/tcp -> 0.0.0.0:3000 |
|||
``` |
|||
|
|||
### 4.3 访问应用 |
|||
|
|||
在浏览器中访问:http://8.137.125.67:3000 |
|||
|
|||
## 5. 常见问题解决 |
|||
|
|||
### 5.1 拒绝连接错误 |
|||
|
|||
**错误现象**:访问 http://8.137.125.67:3000 时显示"拒绝连接" |
|||
|
|||
**可能原因及解决方法**: |
|||
|
|||
1. **防火墙未开放端口** |
|||
- 检查防火墙规则是否允许 3000 端口 |
|||
- 按照 2.2 节重新配置防火墙 |
|||
|
|||
2. **容器未正常启动** |
|||
- 检查容器状态:`docker ps -a | grep reject-app` |
|||
- 查看容器日志:`docker logs reject-app` |
|||
|
|||
3. **端口被占用** |
|||
- 检查 3000 端口占用情况:`lsof -i :3000` 或 `netstat -tulpn | grep :3000` |
|||
- 停止占用端口的进程或容器 |
|||
|
|||
### 5.2 数据库连接错误 |
|||
|
|||
**错误现象**:应用启动后显示数据库连接失败 |
|||
|
|||
**可能原因及解决方法**: |
|||
|
|||
1. **数据库配置错误** |
|||
- 检查 `Reject.js` 中的数据库连接配置 |
|||
- 确保数据库地址、用户名、密码正确 |
|||
|
|||
2. **数据库服务器未运行** |
|||
- 检查数据库服务器状态 |
|||
- 确保数据库服务器允许远程连接 |
|||
|
|||
### 5.3 代码拉取失败 |
|||
|
|||
**错误现象**:脚本执行时显示"代码拉取失败" |
|||
|
|||
**可能原因及解决方法**: |
|||
|
|||
1. **Gitea 仓库不可访问** |
|||
- 检查 Gitea 服务器状态:`curl -I http://8.137.125.67:4000` |
|||
- 确保服务器可以访问 Gitea 仓库 |
|||
|
|||
2. **分支名称错误** |
|||
- 检查 `deploy.sh` 中的 `BRANCH` 变量是否正确 |
|||
- 确保仓库中存在指定的分支 |
|||
|
|||
## 6. 应用维护 |
|||
|
|||
### 6.1 查看应用日志 |
|||
|
|||
```bash |
|||
docker logs reject-app |
|||
# 实时查看日志 |
|||
docker logs -f reject-app |
|||
``` |
|||
|
|||
### 6.2 重启应用 |
|||
|
|||
```bash |
|||
docker restart reject-app |
|||
``` |
|||
|
|||
### 6.3 更新应用 |
|||
|
|||
再次运行部署脚本即可更新应用: |
|||
|
|||
```bash |
|||
./deploy.sh |
|||
``` |
|||
|
|||
### 6.4 停止应用 |
|||
|
|||
```bash |
|||
docker stop reject-app |
|||
``` |
|||
|
|||
### 6.5 删除应用 |
|||
|
|||
```bash |
|||
# 停止并删除容器 |
|||
docker stop reject-app |
|||
docker rm reject-app |
|||
|
|||
# 删除镜像 |
|||
docker rmi reject-app |
|||
|
|||
# 删除应用目录 |
|||
rm -rf /app |
|||
``` |
|||
|
|||
## 7. 脚本说明 |
|||
|
|||
### 7.1 配置参数 |
|||
|
|||
脚本中的主要配置参数: |
|||
|
|||
- `REPO_URL`:Gitea 仓库地址 |
|||
- `APP_DIR`:应用部署目录 |
|||
- `BRANCH`:使用的代码分支 |
|||
|
|||
### 7.2 脚本功能 |
|||
|
|||
- **自动代码拉取**:从 Gitea 仓库拉取最新代码 |
|||
- **容器管理**:自动停止旧容器并启动新容器 |
|||
- **端口管理**:自动检查并清理占用 3000 端口的进程 |
|||
- **错误检查**:提供详细的错误信息和处理建议 |
|||
- **日志记录**:记录部署过程中的关键步骤 |
|||
|
|||
## 8. 注意事项 |
|||
|
|||
1. **第一次部署**:脚本会自动克隆仓库并启动应用 |
|||
2. **后续部署**:脚本会自动拉取最新代码并重启应用 |
|||
3. **分支切换**:如需切换分支,请修改 `deploy.sh` 中的 `BRANCH` 变量 |
|||
4. **数据持久化**:应用数据通过 Docker 卷映射到 `/app` 目录,确保该目录安全 |
|||
5. **定期备份**:建议定期备份 `/app` 目录和数据库 |
|||
|
|||
## 9. 联系方式 |
|||
|
|||
如有部署问题,请联系: |
|||
- 技术支持:[技术支持邮箱] |
|||
- 管理员:[管理员联系方式] |
|||
|
|||
@ -0,0 +1,23 @@ |
|||
# 使用Node.js作为基础镜像 |
|||
FROM node:18-alpine |
|||
|
|||
# 设置工作目录 |
|||
WORKDIR /app |
|||
|
|||
# 设置npm镜像源为国内源加速依赖安装 |
|||
RUN npm config set registry https://registry.npmmirror.com |
|||
|
|||
# 复制package.json和package-lock.json |
|||
COPY package*.json ./ |
|||
|
|||
# 安装项目依赖 |
|||
RUN npm install |
|||
|
|||
# 复制应用代码 |
|||
COPY . . |
|||
|
|||
# 暴露端口 |
|||
EXPOSE 3000 |
|||
|
|||
# 直接使用node启动应用 |
|||
CMD ["node", "Reject.js"] |
|||
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -0,0 +1,111 @@ |
|||
#!/bin/bash |
|||
|
|||
# 部署脚本:当Gitea仓库有更新时,一键部署新代码到云服务器 |
|||
|
|||
# 配置参数 |
|||
GITEA_USER="SwtTt29" |
|||
GITEA_PASSWORD="qazswt123" |
|||
REPO_URL="http://${GITEA_USER}:${GITEA_PASSWORD}@8.137.125.67:4000/SwtTt29/Review.git" |
|||
APP_DIR="/app" |
|||
DOCKER_COMPOSE_FILE="docker-compose.yml" |
|||
BRANCH="sh" |
|||
IMAGE_NAME="reject-app" # 改为与docker-compose.yml中一致的镜像名称 |
|||
CONTAINER_NAME="reject-app" |
|||
|
|||
# 输出日志函数 |
|||
log() { |
|||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" |
|||
} |
|||
|
|||
# 关闭错误立即停止,改用手动错误检查 |
|||
source /etc/profile |
|||
|
|||
log "开始部署应用..." |
|||
|
|||
# 确保脚本具有执行权限 |
|||
chmod +x "$0" |
|||
|
|||
# 1. 检查应用目录是否存在 |
|||
if [ ! -d "$APP_DIR" ]; then |
|||
log "应用目录不存在,开始克隆仓库..." |
|||
git clone "$REPO_URL" "$APP_DIR" |
|||
if [ $? -ne 0 ]; then |
|||
log "错误:克隆仓库失败!请检查网络连接和仓库地址。" |
|||
exit 1 |
|||
fi |
|||
cd "$APP_DIR" |
|||
git checkout "$BRANCH" |
|||
if [ $? -ne 0 ]; then |
|||
log "错误:切换分支失败!请检查分支名称是否正确。" |
|||
exit 1 |
|||
fi |
|||
else |
|||
log "应用目录已存在,开始拉取最新代码..." |
|||
cd "$APP_DIR" |
|||
# 处理分支冲突问题 |
|||
if ! git pull origin "$BRANCH" --ff-only; then |
|||
log "快进合并失败,尝试先重置本地分支再拉取..." |
|||
git fetch origin |
|||
git reset --hard origin/"$BRANCH" |
|||
if [ $? -ne 0 ]; then |
|||
log "错误:重置本地分支失败!" |
|||
exit 1 |
|||
fi |
|||
fi |
|||
fi |
|||
|
|||
# 2. 检查docker-compose.yml文件是否存在 |
|||
if [ ! -f "$DOCKER_COMPOSE_FILE" ]; then |
|||
log "错误:$DOCKER_COMPOSE_FILE 文件不存在!" |
|||
exit 1 |
|||
fi |
|||
|
|||
# 3. 停止并删除旧的Docker容器 |
|||
log "停止并删除旧的Docker容器..." |
|||
docker-compose -f "$DOCKER_COMPOSE_FILE" down |
|||
if [ $? -ne 0 ]; then |
|||
log "警告:docker-compose down失败,尝试直接删除容器..." |
|||
fi |
|||
|
|||
# 强制删除可能残留的容器 |
|||
if docker ps -a | grep -q "$CONTAINER_NAME"; then |
|||
log "强制删除残留的容器 $CONTAINER_NAME..." |
|||
docker rm -f "$CONTAINER_NAME" |
|||
if [ $? -ne 0 ]; then |
|||
log "错误:强制删除容器失败!" |
|||
exit 1 |
|||
fi |
|||
fi |
|||
|
|||
# 4. 直接使用docker build命令构建镜像,绕过docker-compose的buildx依赖 |
|||
log "重新构建Docker镜像..." |
|||
docker build -t "$IMAGE_NAME" . |
|||
if [ $? -ne 0 ]; then |
|||
log "错误:构建镜像失败!请检查Dockerfile和依赖。" |
|||
exit 1 |
|||
fi |
|||
|
|||
# 5. 启动新的Docker容器(不使用build参数) |
|||
log "启动新的Docker容器..." |
|||
# 使用--no-build参数避免docker-compose尝试重新构建 |
|||
docker-compose -f "$DOCKER_COMPOSE_FILE" up -d --no-build |
|||
if [ $? -ne 0 ]; then |
|||
log "错误:启动容器失败!请检查配置文件。" |
|||
exit 1 |
|||
fi |
|||
|
|||
# 6. 验证容器是否正常启动 |
|||
log "验证容器运行状态..." |
|||
sleep 10 |
|||
if docker-compose -f "$DOCKER_COMPOSE_FILE" ps | grep -q "Up"; then |
|||
log "容器启动成功!" |
|||
else |
|||
log "警告:容器可能未正常启动,正在检查日志..." |
|||
docker-compose -f "$DOCKER_COMPOSE_FILE" logs | tail -50 |
|||
fi |
|||
|
|||
# 7. 清理无用的Docker镜像 |
|||
log "清理无用的Docker镜像..." |
|||
docker image prune -f |
|||
|
|||
log "应用部署完成!" |
|||
@ -0,0 +1,22 @@ |
|||
# 移除version声明以解决兼容性警告 |
|||
|
|||
services: |
|||
app: |
|||
build: . |
|||
image: reject-app |
|||
container_name: reject-app |
|||
ports: |
|||
- "3000:3000" |
|||
environment: |
|||
- NODE_ENV=production |
|||
- DB_HOST=1.95.162.61 |
|||
- DB_USER=root |
|||
- DB_PASSWORD=schl@2025 |
|||
- DB_NAME=wechat_app |
|||
- USER_LOGIN_DB_NAME=userlogin |
|||
restart: always |
|||
logging: |
|||
driver: "json-file" |
|||
options: |
|||
max-size: "10m" |
|||
max-file: "3" |
|||
@ -0,0 +1,106 @@ |
|||
#!/bin/bash |
|||
|
|||
# 健康检查脚本:定期检查应用是否正常运行,如果不正常则自动重启 |
|||
|
|||
# 配置参数 |
|||
APP_DIR="/app" |
|||
DOCKER_COMPOSE_FILE="docker-compose.yml" |
|||
CHECK_INTERVAL=300 # 检查间隔(秒) |
|||
MAX_RESTARTS=3 # 最大重启次数 |
|||
RESTART_INTERVAL=3600 # 重启间隔(秒) |
|||
|
|||
# 带颜色的日志函数 |
|||
colored_log() { |
|||
local color=$1 |
|||
local message=$2 |
|||
local reset="\033[0m" |
|||
local colors=( |
|||
["red"]="\033[31m" |
|||
["green"]="\033[32m" |
|||
["yellow"]="\033[33m" |
|||
["blue"]="\033[34m" |
|||
["purple"]="\033[35m" |
|||
) |
|||
echo -e "${colors[$color]}[$(date '+%Y-%m-%d %H:%M:%S')] $message$reset" |
|||
} |
|||
|
|||
log() { |
|||
colored_log "blue" "$1" |
|||
} |
|||
|
|||
success() { |
|||
colored_log "green" "$1" |
|||
} |
|||
|
|||
error() { |
|||
colored_log "red" "$1" |
|||
} |
|||
|
|||
warning() { |
|||
colored_log "yellow" "$1" |
|||
} |
|||
|
|||
log "启动健康检查服务..." |
|||
|
|||
# 初始化重启计数器 |
|||
restart_count=0 |
|||
last_restart_time=$(date +%s) |
|||
|
|||
while true; do |
|||
log "开始健康检查..." |
|||
|
|||
cd "$APP_DIR" |
|||
|
|||
# 检查容器是否在运行 |
|||
if docker-compose -f "$DOCKER_COMPOSE_FILE" ps | grep -q "Up"; then |
|||
# 检查应用是否能正常响应 |
|||
if curl -s -o /dev/null -w "%{http_code}" http://localhost:3000 > /dev/null; then |
|||
success "应用运行正常" |
|||
else |
|||
warning "应用容器在运行,但无法正常响应请求" |
|||
|
|||
# 查看应用日志 |
|||
log "查看应用日志:" |
|||
docker-compose -f "$DOCKER_COMPOSE_FILE" logs -n 10 |
|||
|
|||
# 检查重启次数 |
|||
current_time=$(date +%s) |
|||
time_since_last_restart=$((current_time - last_restart_time)) |
|||
|
|||
if [ $restart_count -lt $MAX_RESTARTS ] || [ $time_since_last_restart -gt $RESTART_INTERVAL ]; then |
|||
log "尝试重启应用..." |
|||
if docker-compose -f "$DOCKER_COMPOSE_FILE" restart; then |
|||
success "应用已重启" |
|||
restart_count=$((restart_count + 1)) |
|||
last_restart_time=$current_time |
|||
else |
|||
error "应用重启失败" |
|||
fi |
|||
else |
|||
error "已达到最大重启次数,在$RESTART_INTERVAL秒内不再尝试重启" |
|||
fi |
|||
fi |
|||
else |
|||
warning "应用容器未运行" |
|||
|
|||
# 检查重启次数 |
|||
current_time=$(date +%s) |
|||
time_since_last_restart=$((current_time - last_restart_time)) |
|||
|
|||
if [ $restart_count -lt $MAX_RESTARTS ] || [ $time_since_last_restart -gt $RESTART_INTERVAL ]; then |
|||
log "尝试启动应用..." |
|||
if docker-compose -f "$DOCKER_COMPOSE_FILE" up -d; then |
|||
success "应用已启动" |
|||
restart_count=$((restart_count + 1)) |
|||
last_restart_time=$current_time |
|||
else |
|||
error "应用启动失败" |
|||
fi |
|||
else |
|||
error "已达到最大重启次数,在$RESTART_INTERVAL秒内不再尝试启动" |
|||
fi |
|||
fi |
|||
|
|||
log "健康检查完成,等待$CHECK_INTERVAL秒后再次检查..." |
|||
sleep $CHECK_INTERVAL |
|||
done |
|||
@ -0,0 +1,124 @@ |
|||
const sharp = require('sharp'); |
|||
|
|||
class ImageProcessor { |
|||
/** |
|||
* 为图片添加文字水印 |
|||
* @param {Buffer} imageBuffer - 原始图片的Buffer数据 |
|||
* @param {String} text - 水印文字内容 |
|||
* @param {Object} options - 水印配置选项 |
|||
* @returns {Promise<Buffer>} - 添加水印后的图片Buffer |
|||
*/ |
|||
static async addWatermark(imageBuffer, text = '又鸟蛋平台', options = {}) { |
|||
try { |
|||
console.log('【图片处理】开始添加水印'); |
|||
|
|||
// 设置默认配置
|
|||
const defaultOptions = { |
|||
fontSize: 20, // 字体大小 - 减小以确保完整显示
|
|||
color: 'rgba(0,0,0,0.5)', // 文字颜色(加深以便更清晰)
|
|||
position: 'bottom-right', // 水印位置
|
|||
marginX: -50, // X轴边距 - 调整使水印居中在红色框中
|
|||
marginY: 10 // Y轴边距 - 减小使水印靠下,放入红色框中
|
|||
}; |
|||
|
|||
// 强制使用'bottom-right'位置
|
|||
options.position = 'bottom-right'; |
|||
|
|||
const config = { ...defaultOptions, ...options }; |
|||
|
|||
// 使用sharp处理图片
|
|||
const image = sharp(imageBuffer); |
|||
|
|||
// 获取图片信息以确定水印位置
|
|||
const metadata = await image.metadata(); |
|||
const width = metadata.width || 800; |
|||
const height = metadata.height || 600; |
|||
|
|||
// 确定水印位置
|
|||
let x = config.marginX; |
|||
let y = config.marginY; |
|||
|
|||
if (config.position === 'bottom-right') { |
|||
// 右下角位置,需要计算文字宽度(这里简化处理,实际应该根据字体计算)
|
|||
// 这里使用一个简单的估算:每个字符约占字体大小的0.6倍宽度
|
|||
const estimatedTextWidth = text.length * config.fontSize * 0.6; |
|||
x = width - estimatedTextWidth - config.marginX; |
|||
y = height - config.fontSize - config.marginY; |
|||
} else if (config.position === 'center') { |
|||
x = (width / 2) - (text.length * config.fontSize * 0.3); |
|||
y = height / 2; |
|||
} else if (config.position === 'top-left') { |
|||
// 左上角,使用默认的margin值
|
|||
} |
|||
|
|||
// 确保位置不会超出图片边界
|
|||
x = Math.max(0, Math.min(x, width - 1)); |
|||
y = Math.max(config.fontSize, Math.min(y, height - 1)); |
|||
|
|||
// 添加文字水印
|
|||
const watermarkedBuffer = await image |
|||
.composite([{ |
|||
input: Buffer.from(`<svg width="${width}" height="${height}">
|
|||
<text x="${x}" y="${y}" font-family="Arial" font-size="${config.fontSize}" fill="${config.color}">${text}</text> |
|||
</svg>`), |
|||
gravity: 'southeast' |
|||
}]) |
|||
.toBuffer(); |
|||
|
|||
console.log('【图片处理】水印添加成功'); |
|||
return watermarkedBuffer; |
|||
} catch (error) { |
|||
console.error('【图片处理】添加水印失败:', error.message); |
|||
console.error('【图片处理】错误详情:', error); |
|||
// 如果水印添加失败,返回原始图片
|
|||
return imageBuffer; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 批量为图片添加水印 |
|||
* @param {Array<Buffer>} imageBuffers - 图片Buffer数组 |
|||
* @param {String} text - 水印文字内容 |
|||
* @param {Object} options - 水印配置选项 |
|||
* @returns {Promise<Array<Buffer>>} - 添加水印后的图片Buffer数组 |
|||
*/ |
|||
static async addWatermarkToMultiple(imageBuffers, text = '又鸟蛋平台', options = {}) { |
|||
try { |
|||
console.log(`【图片处理】开始批量添加水印,共${imageBuffers.length}张图片`); |
|||
|
|||
const watermarkedPromises = imageBuffers.map(buffer => |
|||
this.addWatermark(buffer, text, options) |
|||
); |
|||
|
|||
const results = await Promise.all(watermarkedPromises); |
|||
console.log('【图片处理】批量水印添加完成'); |
|||
return results; |
|||
} catch (error) { |
|||
console.error('【图片处理】批量添加水印失败:', error.message); |
|||
throw error; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 为Base64编码的图片添加水印 |
|||
* @param {String} base64Image - Base64编码的图片 |
|||
* @param {String} text - 水印文字内容 |
|||
* @param {Object} options - 水印配置选项 |
|||
* @returns {Promise<Buffer>} - 添加水印后的图片Buffer |
|||
*/ |
|||
static async addWatermarkToBase64(base64Image, text = '又鸟蛋平台', options = {}) { |
|||
try { |
|||
// 移除Base64前缀
|
|||
const base64Data = base64Image.replace(/^data:image\/(png|jpeg|jpg|gif);base64,/, ''); |
|||
// 转换为Buffer
|
|||
const buffer = Buffer.from(base64Data, 'base64'); |
|||
// 添加水印
|
|||
return await this.addWatermark(buffer, text, options); |
|||
} catch (error) { |
|||
console.error('【图片处理】为Base64图片添加水印失败:', error.message); |
|||
throw error; |
|||
} |
|||
} |
|||
} |
|||
|
|||
module.exports = ImageProcessor; |
|||
@ -0,0 +1,255 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="zh-CN"> |
|||
<head> |
|||
<meta charset="UTF-8"> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<title>登录页面</title> |
|||
<style> |
|||
body { |
|||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; |
|||
margin: 0; |
|||
padding: 0; |
|||
background-color: #f5f5f5; |
|||
color: #333; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
min-height: 100vh; |
|||
} |
|||
|
|||
.login-container { |
|||
background-color: white; |
|||
width: 90%; |
|||
max-width: 400px; |
|||
border-radius: 12px; |
|||
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); |
|||
padding: 40px; |
|||
} |
|||
|
|||
.login-title { |
|||
text-align: center; |
|||
font-size: 24px; |
|||
font-weight: 600; |
|||
margin-bottom: 30px; |
|||
color: #333; |
|||
} |
|||
|
|||
.form-group { |
|||
margin-bottom: 24px; |
|||
} |
|||
|
|||
.form-label { |
|||
display: block; |
|||
margin-bottom: 8px; |
|||
font-size: 14px; |
|||
font-weight: 500; |
|||
color: #666; |
|||
} |
|||
|
|||
.form-input { |
|||
width: 100%; |
|||
padding: 12px 16px; |
|||
border: 1px solid #d9d9d9; |
|||
border-radius: 8px; |
|||
font-size: 14px; |
|||
box-sizing: border-box; |
|||
transition: all 0.3s; |
|||
background-color: #fff; |
|||
} |
|||
|
|||
.form-input:hover { |
|||
border-color: #1677ff; |
|||
} |
|||
|
|||
.form-input:focus { |
|||
outline: none; |
|||
border-color: #1677ff; |
|||
box-shadow: 0 0 0 2px rgba(22, 119, 255, 0.2); |
|||
} |
|||
|
|||
.login-btn { |
|||
width: 100%; |
|||
padding: 14px; |
|||
background-color: #1677ff; |
|||
color: white; |
|||
border: none; |
|||
border-radius: 8px; |
|||
font-size: 16px; |
|||
font-weight: 500; |
|||
cursor: pointer; |
|||
transition: all 0.3s; |
|||
margin-top: 10px; |
|||
} |
|||
|
|||
.login-btn:hover { |
|||
background-color: #4096ff; |
|||
box-shadow: 0 4px 12px rgba(22, 119, 255, 0.3); |
|||
} |
|||
|
|||
.login-btn:disabled { |
|||
background-color: #d9d9d9; |
|||
cursor: not-allowed; |
|||
box-shadow: none; |
|||
} |
|||
|
|||
.error-message { |
|||
color: #f5222d; |
|||
font-size: 12px; |
|||
margin-top: 8px; |
|||
display: none; |
|||
} |
|||
|
|||
.error-message.show { |
|||
display: block; |
|||
} |
|||
|
|||
.loading { |
|||
display: inline-block; |
|||
width: 16px; |
|||
height: 16px; |
|||
border: 2px solid rgba(255, 255, 255, 0.3); |
|||
border-radius: 50%; |
|||
border-top-color: white; |
|||
animation: spin 0.8s linear infinite; |
|||
margin-right: 8px; |
|||
} |
|||
|
|||
@keyframes spin { |
|||
to { transform: rotate(360deg); } |
|||
} |
|||
</style> |
|||
</head> |
|||
<body> |
|||
<div class="login-container"> |
|||
<h1 class="login-title">审核系统登录</h1> |
|||
|
|||
<form id="loginForm"> |
|||
<div class="form-group"> |
|||
<label class="form-label" for="projectName">职位名称</label> |
|||
<input type="text" class="form-input" id="projectName" name="projectName" placeholder="请输入职位名称" required> |
|||
<div class="error-message" id="projectNameError"></div> |
|||
</div> |
|||
|
|||
<div class="form-group"> |
|||
<label class="form-label" for="userName">用户名</label> |
|||
<input type="text" class="form-input" id="userName" name="userName" placeholder="请输入用户名" required> |
|||
<div class="error-message" id="userNameError"></div> |
|||
</div> |
|||
|
|||
<div class="form-group"> |
|||
<label class="form-label" for="password">密码</label> |
|||
<input type="password" class="form-input" id="password" name="password" placeholder="请输入密码" required> |
|||
<div class="error-message" id="passwordError"></div> |
|||
</div> |
|||
|
|||
<div class="error-message" id="loginError"></div> |
|||
|
|||
<button type="submit" class="login-btn" id="loginBtn"> |
|||
登录 |
|||
</button> |
|||
</form> |
|||
</div> |
|||
|
|||
<script> |
|||
// 登录表单提交事件 |
|||
document.getElementById('loginForm').addEventListener('submit', async (e) => { |
|||
e.preventDefault(); |
|||
|
|||
// 获取表单数据 |
|||
const projectName = document.getElementById('projectName').value.trim(); |
|||
const userName = document.getElementById('userName').value.trim(); |
|||
const password = document.getElementById('password').value.trim(); |
|||
|
|||
// 验证表单 |
|||
let isValid = true; |
|||
|
|||
// 职位名称验证 |
|||
const projectNameError = document.getElementById('projectNameError'); |
|||
if (!projectName) { |
|||
projectNameError.textContent = '请输入职位名称'; |
|||
projectNameError.classList.add('show'); |
|||
isValid = false; |
|||
} else { |
|||
projectNameError.classList.remove('show'); |
|||
} |
|||
|
|||
// 用户名验证 |
|||
const userNameError = document.getElementById('userNameError'); |
|||
if (!userName) { |
|||
userNameError.textContent = '请输入用户名'; |
|||
userNameError.classList.add('show'); |
|||
isValid = false; |
|||
} else { |
|||
userNameError.classList.remove('show'); |
|||
} |
|||
|
|||
// 密码验证 |
|||
const passwordError = document.getElementById('passwordError'); |
|||
if (!password) { |
|||
passwordError.textContent = '请输入密码'; |
|||
passwordError.classList.add('show'); |
|||
isValid = false; |
|||
} else { |
|||
passwordError.classList.remove('show'); |
|||
} |
|||
|
|||
if (!isValid) { |
|||
return; |
|||
} |
|||
|
|||
// 显示加载状态 |
|||
const loginBtn = document.getElementById('loginBtn'); |
|||
const originalText = loginBtn.innerHTML; |
|||
loginBtn.innerHTML = '<span class="loading"></span>登录中...'; |
|||
loginBtn.disabled = true; |
|||
|
|||
const loginError = document.getElementById('loginError'); |
|||
loginError.classList.remove('show'); |
|||
|
|||
try { |
|||
// 发送登录请求 |
|||
const response = await fetch('/api/login', { |
|||
method: 'POST', |
|||
headers: { |
|||
'Content-Type': 'application/json' |
|||
}, |
|||
body: JSON.stringify({ |
|||
projectName, |
|||
userName, |
|||
password |
|||
}) |
|||
}); |
|||
|
|||
const result = await response.json(); |
|||
|
|||
if (result.success) { |
|||
// 登录成功,保存登录信息到localStorage |
|||
localStorage.setItem('userInfo', JSON.stringify(result.data.userInfo)); |
|||
localStorage.setItem('token', result.data.token); |
|||
|
|||
// 跳转到审核页面 |
|||
window.location.href = 'Reject.html'; |
|||
} else { |
|||
// 登录失败 |
|||
loginError.textContent = result.message || '登录失败,请检查用户名和密码'; |
|||
loginError.classList.add('show'); |
|||
} |
|||
} catch (error) { |
|||
console.error('登录失败:', error); |
|||
loginError.textContent = '登录失败,请检查网络连接'; |
|||
loginError.classList.add('show'); |
|||
} finally { |
|||
// 恢复按钮状态 |
|||
loginBtn.innerHTML = originalText; |
|||
loginBtn.disabled = false; |
|||
} |
|||
}); |
|||
|
|||
// 检查是否已登录 |
|||
if (localStorage.getItem('userInfo') && localStorage.getItem('token')) { |
|||
// 如果已经登录,直接跳转到审核页面 |
|||
window.location.href = 'Reject.html'; |
|||
} |
|||
</script> |
|||
</body> |
|||
</html> |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../mocha/bin/_mocha" "$@" |
|||
else |
|||
exec node "$basedir/../mocha/bin/_mocha" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mocha\bin\_mocha" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../mocha/bin/_mocha" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../mocha/bin/_mocha" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../mocha/bin/_mocha" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../mocha/bin/_mocha" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../baseline-browser-mapping/dist/cli.js" "$@" |
|||
else |
|||
exec node "$basedir/../baseline-browser-mapping/dist/cli.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\baseline-browser-mapping\dist\cli.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../baseline-browser-mapping/dist/cli.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../baseline-browser-mapping/dist/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../baseline-browser-mapping/dist/cli.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../baseline-browser-mapping/dist/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../browserslist/cli.js" "$@" |
|||
else |
|||
exec node "$basedir/../browserslist/cli.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\browserslist\cli.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../browserslist/cli.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../browserslist/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../browserslist/cli.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../browserslist/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../esprima/bin/esparse.js" "$@" |
|||
else |
|||
exec node "$basedir/../esprima/bin/esparse.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esprima\bin\esparse.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../esprima/bin/esparse.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../esprima/bin/esparse.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../esprima/bin/esparse.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../esprima/bin/esparse.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../esprima/bin/esvalidate.js" "$@" |
|||
else |
|||
exec node "$basedir/../esprima/bin/esvalidate.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esprima\bin\esvalidate.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../esprima/bin/esvalidate.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../esprima/bin/esvalidate.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../esprima/bin/esvalidate.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../esprima/bin/esvalidate.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../flat/cli.js" "$@" |
|||
else |
|||
exec node "$basedir/../flat/cli.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\flat\cli.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../flat/cli.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../flat/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../flat/cli.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../flat/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../glob/dist/esm/bin.mjs" "$@" |
|||
else |
|||
exec node "$basedir/../glob/dist/esm/bin.mjs" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\glob\dist\esm\bin.mjs" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../glob/dist/esm/bin.mjs" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../glob/dist/esm/bin.mjs" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../glob/dist/esm/bin.mjs" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../glob/dist/esm/bin.mjs" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../he/bin/he" "$@" |
|||
else |
|||
exec node "$basedir/../he/bin/he" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\he\bin\he" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../he/bin/he" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../he/bin/he" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../he/bin/he" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../he/bin/he" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../js-yaml/bin/js-yaml.js" "$@" |
|||
else |
|||
exec node "$basedir/../js-yaml/bin/js-yaml.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\js-yaml\bin\js-yaml.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../js-yaml/bin/js-yaml.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../jsesc/bin/jsesc" "$@" |
|||
else |
|||
exec node "$basedir/../jsesc/bin/jsesc" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\jsesc\bin\jsesc" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../jsesc/bin/jsesc" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../jsesc/bin/jsesc" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../jsesc/bin/jsesc" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../jsesc/bin/jsesc" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../json5/lib/cli.js" "$@" |
|||
else |
|||
exec node "$basedir/../json5/lib/cli.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\json5\lib\cli.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../json5/lib/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../json5/lib/cli.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../json5/lib/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../mime/cli.js" "$@" |
|||
else |
|||
exec node "$basedir/../mime/cli.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mime\cli.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../mime/cli.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../mime/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../mime/cli.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../mime/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@" |
|||
else |
|||
exec node "$basedir/../mkdirp/bin/cmd.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mkdirp\bin\cmd.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../mkdirp/bin/cmd.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../mkdirp/bin/cmd.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../mkdirp/bin/cmd.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../mkdirp/bin/cmd.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../mocha/bin/mocha.js" "$@" |
|||
else |
|||
exec node "$basedir/../mocha/bin/mocha.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mocha\bin\mocha.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../mocha/bin/mocha.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../mocha/bin/mocha.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../mocha/bin/mocha.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../mocha/bin/mocha.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../which/bin/node-which" "$@" |
|||
else |
|||
exec node "$basedir/../which/bin/node-which" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\which\bin\node-which" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../which/bin/node-which" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../which/bin/node-which" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../which/bin/node-which" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../nyc/bin/nyc.js" "$@" |
|||
else |
|||
exec node "$basedir/../nyc/bin/nyc.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nyc\bin\nyc.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../nyc/bin/nyc.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../nyc/bin/nyc.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../nyc/bin/nyc.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../nyc/bin/nyc.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../os-name/cli.js" "$@" |
|||
else |
|||
exec node "$basedir/../os-name/cli.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\os-name\cli.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../os-name/cli.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../os-name/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../os-name/cli.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../os-name/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../osx-release/cli.js" "$@" |
|||
else |
|||
exec node "$basedir/../osx-release/cli.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\osx-release\cli.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../osx-release/cli.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../osx-release/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../osx-release/cli.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../osx-release/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../@babel/parser/bin/babel-parser.js" "$@" |
|||
else |
|||
exec node "$basedir/../@babel/parser/bin/babel-parser.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\@babel\parser\bin\babel-parser.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../rimraf/bin.js" "$@" |
|||
else |
|||
exec node "$basedir/../rimraf/bin.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rimraf\bin.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../rimraf/bin.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../rimraf/bin.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../rimraf/bin.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../rimraf/bin.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../semver/bin/semver.js" "$@" |
|||
else |
|||
exec node "$basedir/../semver/bin/semver.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\semver\bin\semver.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../semver/bin/semver.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../semver/bin/semver.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../update-browserslist-db/cli.js" "$@" |
|||
else |
|||
exec node "$basedir/../update-browserslist-db/cli.js" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\update-browserslist-db\cli.js" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../update-browserslist-db/cli.js" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../update-browserslist-db/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../update-browserslist-db/cli.js" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../update-browserslist-db/cli.js" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") |
|||
|
|||
case `uname` in |
|||
*CYGWIN*|*MINGW*|*MSYS*) |
|||
if command -v cygpath > /dev/null 2>&1; then |
|||
basedir=`cygpath -w "$basedir"` |
|||
fi |
|||
;; |
|||
esac |
|||
|
|||
if [ -x "$basedir/node" ]; then |
|||
exec "$basedir/node" "$basedir/../uuid/dist/bin/uuid" "$@" |
|||
else |
|||
exec node "$basedir/../uuid/dist/bin/uuid" "$@" |
|||
fi |
|||
@ -0,0 +1,17 @@ |
|||
@ECHO off |
|||
GOTO start |
|||
:find_dp0 |
|||
SET dp0=%~dp0 |
|||
EXIT /b |
|||
:start |
|||
SETLOCAL |
|||
CALL :find_dp0 |
|||
|
|||
IF EXIST "%dp0%\node.exe" ( |
|||
SET "_prog=%dp0%\node.exe" |
|||
) ELSE ( |
|||
SET "_prog=node" |
|||
SET PATHEXT=%PATHEXT:;.JS;=;% |
|||
) |
|||
|
|||
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\uuid\dist\bin\uuid" %* |
|||
@ -0,0 +1,28 @@ |
|||
#!/usr/bin/env pwsh |
|||
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
|||
|
|||
$exe="" |
|||
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { |
|||
# Fix case when both the Windows and Linux builds of Node |
|||
# are installed in the same directory |
|||
$exe=".exe" |
|||
} |
|||
$ret=0 |
|||
if (Test-Path "$basedir/node$exe") { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "$basedir/node$exe" "$basedir/../uuid/dist/bin/uuid" $args |
|||
} else { |
|||
& "$basedir/node$exe" "$basedir/../uuid/dist/bin/uuid" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} else { |
|||
# Support pipeline input |
|||
if ($MyInvocation.ExpectingInput) { |
|||
$input | & "node$exe" "$basedir/../uuid/dist/bin/uuid" $args |
|||
} else { |
|||
& "node$exe" "$basedir/../uuid/dist/bin/uuid" $args |
|||
} |
|||
$ret=$LASTEXITCODE |
|||
} |
|||
exit $ret |
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
@ -0,0 +1,22 @@ |
|||
MIT License |
|||
|
|||
Copyright (c) 2014-present Sebastian McKenzie and other contributors |
|||
|
|||
Permission is hereby granted, free of charge, to any person obtaining |
|||
a copy of this software and associated documentation files (the |
|||
"Software"), to deal in the Software without restriction, including |
|||
without limitation the rights to use, copy, modify, merge, publish, |
|||
distribute, sublicense, and/or sell copies of the Software, and to |
|||
permit persons to whom the Software is furnished to do so, subject to |
|||
the following conditions: |
|||
|
|||
The above copyright notice and this permission notice shall be |
|||
included in all copies or substantial portions of the Software. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
|||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
|||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
|||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|||
@ -0,0 +1,19 @@ |
|||
# @babel/code-frame |
|||
|
|||
> Generate errors that contain a code frame that point to source locations. |
|||
|
|||
See our website [@babel/code-frame](https://babeljs.io/docs/babel-code-frame) for more information. |
|||
|
|||
## Install |
|||
|
|||
Using npm: |
|||
|
|||
```sh |
|||
npm install --save-dev @babel/code-frame |
|||
``` |
|||
|
|||
or using yarn: |
|||
|
|||
```sh |
|||
yarn add @babel/code-frame --dev |
|||
``` |
|||
@ -0,0 +1,216 @@ |
|||
'use strict'; |
|||
|
|||
Object.defineProperty(exports, '__esModule', { value: true }); |
|||
|
|||
var picocolors = require('picocolors'); |
|||
var jsTokens = require('js-tokens'); |
|||
var helperValidatorIdentifier = require('@babel/helper-validator-identifier'); |
|||
|
|||
function isColorSupported() { |
|||
return (typeof process === "object" && (process.env.FORCE_COLOR === "0" || process.env.FORCE_COLOR === "false") ? false : picocolors.isColorSupported |
|||
); |
|||
} |
|||
const compose = (f, g) => v => f(g(v)); |
|||
function buildDefs(colors) { |
|||
return { |
|||
keyword: colors.cyan, |
|||
capitalized: colors.yellow, |
|||
jsxIdentifier: colors.yellow, |
|||
punctuator: colors.yellow, |
|||
number: colors.magenta, |
|||
string: colors.green, |
|||
regex: colors.magenta, |
|||
comment: colors.gray, |
|||
invalid: compose(compose(colors.white, colors.bgRed), colors.bold), |
|||
gutter: colors.gray, |
|||
marker: compose(colors.red, colors.bold), |
|||
message: compose(colors.red, colors.bold), |
|||
reset: colors.reset |
|||
}; |
|||
} |
|||
const defsOn = buildDefs(picocolors.createColors(true)); |
|||
const defsOff = buildDefs(picocolors.createColors(false)); |
|||
function getDefs(enabled) { |
|||
return enabled ? defsOn : defsOff; |
|||
} |
|||
|
|||
const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]); |
|||
const NEWLINE$1 = /\r\n|[\n\r\u2028\u2029]/; |
|||
const BRACKET = /^[()[\]{}]$/; |
|||
let tokenize; |
|||
{ |
|||
const JSX_TAG = /^[a-z][\w-]*$/i; |
|||
const getTokenType = function (token, offset, text) { |
|||
if (token.type === "name") { |
|||
if (helperValidatorIdentifier.isKeyword(token.value) || helperValidatorIdentifier.isStrictReservedWord(token.value, true) || sometimesKeywords.has(token.value)) { |
|||
return "keyword"; |
|||
} |
|||
if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) === "</")) { |
|||
return "jsxIdentifier"; |
|||
} |
|||
if (token.value[0] !== token.value[0].toLowerCase()) { |
|||
return "capitalized"; |
|||
} |
|||
} |
|||
if (token.type === "punctuator" && BRACKET.test(token.value)) { |
|||
return "bracket"; |
|||
} |
|||
if (token.type === "invalid" && (token.value === "@" || token.value === "#")) { |
|||
return "punctuator"; |
|||
} |
|||
return token.type; |
|||
}; |
|||
tokenize = function* (text) { |
|||
let match; |
|||
while (match = jsTokens.default.exec(text)) { |
|||
const token = jsTokens.matchToToken(match); |
|||
yield { |
|||
type: getTokenType(token, match.index, text), |
|||
value: token.value |
|||
}; |
|||
} |
|||
}; |
|||
} |
|||
function highlight(text) { |
|||
if (text === "") return ""; |
|||
const defs = getDefs(true); |
|||
let highlighted = ""; |
|||
for (const { |
|||
type, |
|||
value |
|||
} of tokenize(text)) { |
|||
if (type in defs) { |
|||
highlighted += value.split(NEWLINE$1).map(str => defs[type](str)).join("\n"); |
|||
} else { |
|||
highlighted += value; |
|||
} |
|||
} |
|||
return highlighted; |
|||
} |
|||
|
|||
let deprecationWarningShown = false; |
|||
const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; |
|||
function getMarkerLines(loc, source, opts) { |
|||
const startLoc = Object.assign({ |
|||
column: 0, |
|||
line: -1 |
|||
}, loc.start); |
|||
const endLoc = Object.assign({}, startLoc, loc.end); |
|||
const { |
|||
linesAbove = 2, |
|||
linesBelow = 3 |
|||
} = opts || {}; |
|||
const startLine = startLoc.line; |
|||
const startColumn = startLoc.column; |
|||
const endLine = endLoc.line; |
|||
const endColumn = endLoc.column; |
|||
let start = Math.max(startLine - (linesAbove + 1), 0); |
|||
let end = Math.min(source.length, endLine + linesBelow); |
|||
if (startLine === -1) { |
|||
start = 0; |
|||
} |
|||
if (endLine === -1) { |
|||
end = source.length; |
|||
} |
|||
const lineDiff = endLine - startLine; |
|||
const markerLines = {}; |
|||
if (lineDiff) { |
|||
for (let i = 0; i <= lineDiff; i++) { |
|||
const lineNumber = i + startLine; |
|||
if (!startColumn) { |
|||
markerLines[lineNumber] = true; |
|||
} else if (i === 0) { |
|||
const sourceLength = source[lineNumber - 1].length; |
|||
markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1]; |
|||
} else if (i === lineDiff) { |
|||
markerLines[lineNumber] = [0, endColumn]; |
|||
} else { |
|||
const sourceLength = source[lineNumber - i].length; |
|||
markerLines[lineNumber] = [0, sourceLength]; |
|||
} |
|||
} |
|||
} else { |
|||
if (startColumn === endColumn) { |
|||
if (startColumn) { |
|||
markerLines[startLine] = [startColumn, 0]; |
|||
} else { |
|||
markerLines[startLine] = true; |
|||
} |
|||
} else { |
|||
markerLines[startLine] = [startColumn, endColumn - startColumn]; |
|||
} |
|||
} |
|||
return { |
|||
start, |
|||
end, |
|||
markerLines |
|||
}; |
|||
} |
|||
function codeFrameColumns(rawLines, loc, opts = {}) { |
|||
const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode; |
|||
const defs = getDefs(shouldHighlight); |
|||
const lines = rawLines.split(NEWLINE); |
|||
const { |
|||
start, |
|||
end, |
|||
markerLines |
|||
} = getMarkerLines(loc, lines, opts); |
|||
const hasColumns = loc.start && typeof loc.start.column === "number"; |
|||
const numberMaxWidth = String(end).length; |
|||
const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines; |
|||
let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => { |
|||
const number = start + 1 + index; |
|||
const paddedNumber = ` ${number}`.slice(-numberMaxWidth); |
|||
const gutter = ` ${paddedNumber} |`; |
|||
const hasMarker = markerLines[number]; |
|||
const lastMarkerLine = !markerLines[number + 1]; |
|||
if (hasMarker) { |
|||
let markerLine = ""; |
|||
if (Array.isArray(hasMarker)) { |
|||
const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " "); |
|||
const numberOfMarkers = hasMarker[1] || 1; |
|||
markerLine = ["\n ", defs.gutter(gutter.replace(/\d/g, " ")), " ", markerSpacing, defs.marker("^").repeat(numberOfMarkers)].join(""); |
|||
if (lastMarkerLine && opts.message) { |
|||
markerLine += " " + defs.message(opts.message); |
|||
} |
|||
} |
|||
return [defs.marker(">"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : "", markerLine].join(""); |
|||
} else { |
|||
return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : ""}`; |
|||
} |
|||
}).join("\n"); |
|||
if (opts.message && !hasColumns) { |
|||
frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`; |
|||
} |
|||
if (shouldHighlight) { |
|||
return defs.reset(frame); |
|||
} else { |
|||
return frame; |
|||
} |
|||
} |
|||
function index (rawLines, lineNumber, colNumber, opts = {}) { |
|||
if (!deprecationWarningShown) { |
|||
deprecationWarningShown = true; |
|||
const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`."; |
|||
if (process.emitWarning) { |
|||
process.emitWarning(message, "DeprecationWarning"); |
|||
} else { |
|||
const deprecationError = new Error(message); |
|||
deprecationError.name = "DeprecationWarning"; |
|||
console.warn(new Error(message)); |
|||
} |
|||
} |
|||
colNumber = Math.max(colNumber, 0); |
|||
const location = { |
|||
start: { |
|||
column: colNumber, |
|||
line: lineNumber |
|||
} |
|||
}; |
|||
return codeFrameColumns(rawLines, location, opts); |
|||
} |
|||
|
|||
exports.codeFrameColumns = codeFrameColumns; |
|||
exports.default = index; |
|||
exports.highlight = highlight; |
|||
//# sourceMappingURL=index.js.map
|
|||
File diff suppressed because one or more lines are too long
@ -0,0 +1,31 @@ |
|||
{ |
|||
"name": "@babel/code-frame", |
|||
"version": "7.27.1", |
|||
"description": "Generate errors that contain a code frame that point to source locations.", |
|||
"author": "The Babel Team (https://babel.dev/team)", |
|||
"homepage": "https://babel.dev/docs/en/next/babel-code-frame", |
|||
"bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen", |
|||
"license": "MIT", |
|||
"publishConfig": { |
|||
"access": "public" |
|||
}, |
|||
"repository": { |
|||
"type": "git", |
|||
"url": "https://github.com/babel/babel.git", |
|||
"directory": "packages/babel-code-frame" |
|||
}, |
|||
"main": "./lib/index.js", |
|||
"dependencies": { |
|||
"@babel/helper-validator-identifier": "^7.27.1", |
|||
"js-tokens": "^4.0.0", |
|||
"picocolors": "^1.1.1" |
|||
}, |
|||
"devDependencies": { |
|||
"import-meta-resolve": "^4.1.0", |
|||
"strip-ansi": "^4.0.0" |
|||
}, |
|||
"engines": { |
|||
"node": ">=6.9.0" |
|||
}, |
|||
"type": "commonjs" |
|||
} |
|||
@ -0,0 +1,22 @@ |
|||
MIT License |
|||
|
|||
Copyright (c) 2014-present Sebastian McKenzie and other contributors |
|||
|
|||
Permission is hereby granted, free of charge, to any person obtaining |
|||
a copy of this software and associated documentation files (the |
|||
"Software"), to deal in the Software without restriction, including |
|||
without limitation the rights to use, copy, modify, merge, publish, |
|||
distribute, sublicense, and/or sell copies of the Software, and to |
|||
permit persons to whom the Software is furnished to do so, subject to |
|||
the following conditions: |
|||
|
|||
The above copyright notice and this permission notice shall be |
|||
included in all copies or substantial portions of the Software. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
|||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
|||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
|||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|||
@ -0,0 +1,19 @@ |
|||
# @babel/compat-data |
|||
|
|||
> The compat-data to determine required Babel plugins |
|||
|
|||
See our website [@babel/compat-data](https://babeljs.io/docs/babel-compat-data) for more information. |
|||
|
|||
## Install |
|||
|
|||
Using npm: |
|||
|
|||
```sh |
|||
npm install --save @babel/compat-data |
|||
``` |
|||
|
|||
or using yarn: |
|||
|
|||
```sh |
|||
yarn add @babel/compat-data |
|||
``` |
|||
@ -0,0 +1,2 @@ |
|||
// Todo (Babel 8): remove this file as Babel 8 drop support of core-js 2
|
|||
module.exports = require("./data/corejs2-built-ins.json"); |
|||
@ -0,0 +1,2 @@ |
|||
// Todo (Babel 8): remove this file now that it is included in babel-plugin-polyfill-corejs3
|
|||
module.exports = require("./data/corejs3-shipped-proposals.json"); |
|||
File diff suppressed because it is too large
@ -0,0 +1,5 @@ |
|||
[ |
|||
"esnext.promise.all-settled", |
|||
"esnext.string.match-all", |
|||
"esnext.global-this" |
|||
] |
|||
@ -0,0 +1,18 @@ |
|||
{ |
|||
"es6.module": { |
|||
"chrome": "61", |
|||
"and_chr": "61", |
|||
"edge": "16", |
|||
"firefox": "60", |
|||
"and_ff": "60", |
|||
"node": "13.2.0", |
|||
"opera": "48", |
|||
"op_mob": "45", |
|||
"safari": "10.1", |
|||
"ios": "10.3", |
|||
"samsung": "8.2", |
|||
"android": "61", |
|||
"electron": "2.0", |
|||
"ios_saf": "10.3" |
|||
} |
|||
} |
|||
@ -0,0 +1,35 @@ |
|||
{ |
|||
"transform-async-to-generator": [ |
|||
"bugfix/transform-async-arrows-in-class" |
|||
], |
|||
"transform-parameters": [ |
|||
"bugfix/transform-edge-default-parameters", |
|||
"bugfix/transform-safari-id-destructuring-collision-in-function-expression" |
|||
], |
|||
"transform-function-name": [ |
|||
"bugfix/transform-edge-function-name" |
|||
], |
|||
"transform-block-scoping": [ |
|||
"bugfix/transform-safari-block-shadowing", |
|||
"bugfix/transform-safari-for-shadowing" |
|||
], |
|||
"transform-template-literals": [ |
|||
"bugfix/transform-tagged-template-caching" |
|||
], |
|||
"transform-optional-chaining": [ |
|||
"bugfix/transform-v8-spread-parameters-in-optional-chaining" |
|||
], |
|||
"proposal-optional-chaining": [ |
|||
"bugfix/transform-v8-spread-parameters-in-optional-chaining" |
|||
], |
|||
"transform-class-properties": [ |
|||
"bugfix/transform-v8-static-class-fields-redefine-readonly", |
|||
"bugfix/transform-firefox-class-in-computed-class-key", |
|||
"bugfix/transform-safari-class-field-initializer-scope" |
|||
], |
|||
"proposal-class-properties": [ |
|||
"bugfix/transform-v8-static-class-fields-redefine-readonly", |
|||
"bugfix/transform-firefox-class-in-computed-class-key", |
|||
"bugfix/transform-safari-class-field-initializer-scope" |
|||
] |
|||
} |
|||
@ -0,0 +1,203 @@ |
|||
{ |
|||
"bugfix/transform-async-arrows-in-class": { |
|||
"chrome": "55", |
|||
"opera": "42", |
|||
"edge": "15", |
|||
"firefox": "52", |
|||
"safari": "11", |
|||
"node": "7.6", |
|||
"deno": "1", |
|||
"ios": "11", |
|||
"samsung": "6", |
|||
"opera_mobile": "42", |
|||
"electron": "1.6" |
|||
}, |
|||
"bugfix/transform-edge-default-parameters": { |
|||
"chrome": "49", |
|||
"opera": "36", |
|||
"edge": "18", |
|||
"firefox": "52", |
|||
"safari": "10", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "36", |
|||
"electron": "0.37" |
|||
}, |
|||
"bugfix/transform-edge-function-name": { |
|||
"chrome": "51", |
|||
"opera": "38", |
|||
"edge": "79", |
|||
"firefox": "53", |
|||
"safari": "10", |
|||
"node": "6.5", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "41", |
|||
"electron": "1.2" |
|||
}, |
|||
"bugfix/transform-safari-block-shadowing": { |
|||
"chrome": "49", |
|||
"opera": "36", |
|||
"edge": "12", |
|||
"firefox": "44", |
|||
"safari": "11", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ie": "11", |
|||
"ios": "11", |
|||
"samsung": "5", |
|||
"opera_mobile": "36", |
|||
"electron": "0.37" |
|||
}, |
|||
"bugfix/transform-safari-for-shadowing": { |
|||
"chrome": "49", |
|||
"opera": "36", |
|||
"edge": "12", |
|||
"firefox": "4", |
|||
"safari": "11", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ie": "11", |
|||
"ios": "11", |
|||
"samsung": "5", |
|||
"rhino": "1.7.13", |
|||
"opera_mobile": "36", |
|||
"electron": "0.37" |
|||
}, |
|||
"bugfix/transform-safari-id-destructuring-collision-in-function-expression": { |
|||
"chrome": "49", |
|||
"opera": "36", |
|||
"edge": "14", |
|||
"firefox": "2", |
|||
"safari": "16.3", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ios": "16.3", |
|||
"samsung": "5", |
|||
"opera_mobile": "36", |
|||
"electron": "0.37" |
|||
}, |
|||
"bugfix/transform-tagged-template-caching": { |
|||
"chrome": "41", |
|||
"opera": "28", |
|||
"edge": "12", |
|||
"firefox": "34", |
|||
"safari": "13", |
|||
"node": "4", |
|||
"deno": "1", |
|||
"ios": "13", |
|||
"samsung": "3.4", |
|||
"rhino": "1.7.14", |
|||
"opera_mobile": "28", |
|||
"electron": "0.21" |
|||
}, |
|||
"bugfix/transform-v8-spread-parameters-in-optional-chaining": { |
|||
"chrome": "91", |
|||
"opera": "77", |
|||
"edge": "91", |
|||
"firefox": "74", |
|||
"safari": "13.1", |
|||
"node": "16.9", |
|||
"deno": "1.9", |
|||
"ios": "13.4", |
|||
"samsung": "16", |
|||
"opera_mobile": "64", |
|||
"electron": "13.0" |
|||
}, |
|||
"transform-optional-chaining": { |
|||
"chrome": "80", |
|||
"opera": "67", |
|||
"edge": "80", |
|||
"firefox": "74", |
|||
"safari": "13.1", |
|||
"node": "14", |
|||
"deno": "1", |
|||
"ios": "13.4", |
|||
"samsung": "13", |
|||
"rhino": "1.8", |
|||
"opera_mobile": "57", |
|||
"electron": "8.0" |
|||
}, |
|||
"proposal-optional-chaining": { |
|||
"chrome": "80", |
|||
"opera": "67", |
|||
"edge": "80", |
|||
"firefox": "74", |
|||
"safari": "13.1", |
|||
"node": "14", |
|||
"deno": "1", |
|||
"ios": "13.4", |
|||
"samsung": "13", |
|||
"rhino": "1.8", |
|||
"opera_mobile": "57", |
|||
"electron": "8.0" |
|||
}, |
|||
"transform-parameters": { |
|||
"chrome": "49", |
|||
"opera": "36", |
|||
"edge": "15", |
|||
"firefox": "52", |
|||
"safari": "10", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "36", |
|||
"electron": "0.37" |
|||
}, |
|||
"transform-async-to-generator": { |
|||
"chrome": "55", |
|||
"opera": "42", |
|||
"edge": "15", |
|||
"firefox": "52", |
|||
"safari": "10.1", |
|||
"node": "7.6", |
|||
"deno": "1", |
|||
"ios": "10.3", |
|||
"samsung": "6", |
|||
"opera_mobile": "42", |
|||
"electron": "1.6" |
|||
}, |
|||
"transform-template-literals": { |
|||
"chrome": "41", |
|||
"opera": "28", |
|||
"edge": "13", |
|||
"firefox": "34", |
|||
"safari": "9", |
|||
"node": "4", |
|||
"deno": "1", |
|||
"ios": "9", |
|||
"samsung": "3.4", |
|||
"opera_mobile": "28", |
|||
"electron": "0.21" |
|||
}, |
|||
"transform-function-name": { |
|||
"chrome": "51", |
|||
"opera": "38", |
|||
"edge": "14", |
|||
"firefox": "53", |
|||
"safari": "10", |
|||
"node": "6.5", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "41", |
|||
"electron": "1.2" |
|||
}, |
|||
"transform-block-scoping": { |
|||
"chrome": "50", |
|||
"opera": "37", |
|||
"edge": "14", |
|||
"firefox": "53", |
|||
"safari": "10", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "37", |
|||
"electron": "1.1" |
|||
} |
|||
} |
|||
@ -0,0 +1,838 @@ |
|||
{ |
|||
"transform-explicit-resource-management": { |
|||
"chrome": "134", |
|||
"edge": "134", |
|||
"firefox": "141", |
|||
"node": "24", |
|||
"electron": "35.0" |
|||
}, |
|||
"transform-duplicate-named-capturing-groups-regex": { |
|||
"chrome": "126", |
|||
"opera": "112", |
|||
"edge": "126", |
|||
"firefox": "129", |
|||
"safari": "17.4", |
|||
"node": "23", |
|||
"ios": "17.4", |
|||
"electron": "31.0" |
|||
}, |
|||
"transform-regexp-modifiers": { |
|||
"chrome": "125", |
|||
"opera": "111", |
|||
"edge": "125", |
|||
"firefox": "132", |
|||
"node": "23", |
|||
"samsung": "27", |
|||
"electron": "31.0" |
|||
}, |
|||
"transform-unicode-sets-regex": { |
|||
"chrome": "112", |
|||
"opera": "98", |
|||
"edge": "112", |
|||
"firefox": "116", |
|||
"safari": "17", |
|||
"node": "20", |
|||
"deno": "1.32", |
|||
"ios": "17", |
|||
"samsung": "23", |
|||
"opera_mobile": "75", |
|||
"electron": "24.0" |
|||
}, |
|||
"bugfix/transform-v8-static-class-fields-redefine-readonly": { |
|||
"chrome": "98", |
|||
"opera": "84", |
|||
"edge": "98", |
|||
"firefox": "75", |
|||
"safari": "15", |
|||
"node": "12", |
|||
"deno": "1.18", |
|||
"ios": "15", |
|||
"samsung": "11", |
|||
"opera_mobile": "52", |
|||
"electron": "17.0" |
|||
}, |
|||
"bugfix/transform-firefox-class-in-computed-class-key": { |
|||
"chrome": "74", |
|||
"opera": "62", |
|||
"edge": "79", |
|||
"firefox": "126", |
|||
"safari": "16", |
|||
"node": "12", |
|||
"deno": "1", |
|||
"ios": "16", |
|||
"samsung": "11", |
|||
"opera_mobile": "53", |
|||
"electron": "6.0" |
|||
}, |
|||
"bugfix/transform-safari-class-field-initializer-scope": { |
|||
"chrome": "74", |
|||
"opera": "62", |
|||
"edge": "79", |
|||
"firefox": "69", |
|||
"safari": "16", |
|||
"node": "12", |
|||
"deno": "1", |
|||
"ios": "16", |
|||
"samsung": "11", |
|||
"opera_mobile": "53", |
|||
"electron": "6.0" |
|||
}, |
|||
"transform-class-static-block": { |
|||
"chrome": "94", |
|||
"opera": "80", |
|||
"edge": "94", |
|||
"firefox": "93", |
|||
"safari": "16.4", |
|||
"node": "16.11", |
|||
"deno": "1.14", |
|||
"ios": "16.4", |
|||
"samsung": "17", |
|||
"opera_mobile": "66", |
|||
"electron": "15.0" |
|||
}, |
|||
"proposal-class-static-block": { |
|||
"chrome": "94", |
|||
"opera": "80", |
|||
"edge": "94", |
|||
"firefox": "93", |
|||
"safari": "16.4", |
|||
"node": "16.11", |
|||
"deno": "1.14", |
|||
"ios": "16.4", |
|||
"samsung": "17", |
|||
"opera_mobile": "66", |
|||
"electron": "15.0" |
|||
}, |
|||
"transform-private-property-in-object": { |
|||
"chrome": "91", |
|||
"opera": "77", |
|||
"edge": "91", |
|||
"firefox": "90", |
|||
"safari": "15", |
|||
"node": "16.9", |
|||
"deno": "1.9", |
|||
"ios": "15", |
|||
"samsung": "16", |
|||
"opera_mobile": "64", |
|||
"electron": "13.0" |
|||
}, |
|||
"proposal-private-property-in-object": { |
|||
"chrome": "91", |
|||
"opera": "77", |
|||
"edge": "91", |
|||
"firefox": "90", |
|||
"safari": "15", |
|||
"node": "16.9", |
|||
"deno": "1.9", |
|||
"ios": "15", |
|||
"samsung": "16", |
|||
"opera_mobile": "64", |
|||
"electron": "13.0" |
|||
}, |
|||
"transform-class-properties": { |
|||
"chrome": "74", |
|||
"opera": "62", |
|||
"edge": "79", |
|||
"firefox": "90", |
|||
"safari": "14.1", |
|||
"node": "12", |
|||
"deno": "1", |
|||
"ios": "14.5", |
|||
"samsung": "11", |
|||
"opera_mobile": "53", |
|||
"electron": "6.0" |
|||
}, |
|||
"proposal-class-properties": { |
|||
"chrome": "74", |
|||
"opera": "62", |
|||
"edge": "79", |
|||
"firefox": "90", |
|||
"safari": "14.1", |
|||
"node": "12", |
|||
"deno": "1", |
|||
"ios": "14.5", |
|||
"samsung": "11", |
|||
"opera_mobile": "53", |
|||
"electron": "6.0" |
|||
}, |
|||
"transform-private-methods": { |
|||
"chrome": "84", |
|||
"opera": "70", |
|||
"edge": "84", |
|||
"firefox": "90", |
|||
"safari": "15", |
|||
"node": "14.6", |
|||
"deno": "1", |
|||
"ios": "15", |
|||
"samsung": "14", |
|||
"opera_mobile": "60", |
|||
"electron": "10.0" |
|||
}, |
|||
"proposal-private-methods": { |
|||
"chrome": "84", |
|||
"opera": "70", |
|||
"edge": "84", |
|||
"firefox": "90", |
|||
"safari": "15", |
|||
"node": "14.6", |
|||
"deno": "1", |
|||
"ios": "15", |
|||
"samsung": "14", |
|||
"opera_mobile": "60", |
|||
"electron": "10.0" |
|||
}, |
|||
"transform-numeric-separator": { |
|||
"chrome": "75", |
|||
"opera": "62", |
|||
"edge": "79", |
|||
"firefox": "70", |
|||
"safari": "13", |
|||
"node": "12.5", |
|||
"deno": "1", |
|||
"ios": "13", |
|||
"samsung": "11", |
|||
"rhino": "1.7.14", |
|||
"opera_mobile": "54", |
|||
"electron": "6.0" |
|||
}, |
|||
"proposal-numeric-separator": { |
|||
"chrome": "75", |
|||
"opera": "62", |
|||
"edge": "79", |
|||
"firefox": "70", |
|||
"safari": "13", |
|||
"node": "12.5", |
|||
"deno": "1", |
|||
"ios": "13", |
|||
"samsung": "11", |
|||
"rhino": "1.7.14", |
|||
"opera_mobile": "54", |
|||
"electron": "6.0" |
|||
}, |
|||
"transform-logical-assignment-operators": { |
|||
"chrome": "85", |
|||
"opera": "71", |
|||
"edge": "85", |
|||
"firefox": "79", |
|||
"safari": "14", |
|||
"node": "15", |
|||
"deno": "1.2", |
|||
"ios": "14", |
|||
"samsung": "14", |
|||
"opera_mobile": "60", |
|||
"electron": "10.0" |
|||
}, |
|||
"proposal-logical-assignment-operators": { |
|||
"chrome": "85", |
|||
"opera": "71", |
|||
"edge": "85", |
|||
"firefox": "79", |
|||
"safari": "14", |
|||
"node": "15", |
|||
"deno": "1.2", |
|||
"ios": "14", |
|||
"samsung": "14", |
|||
"opera_mobile": "60", |
|||
"electron": "10.0" |
|||
}, |
|||
"transform-nullish-coalescing-operator": { |
|||
"chrome": "80", |
|||
"opera": "67", |
|||
"edge": "80", |
|||
"firefox": "72", |
|||
"safari": "13.1", |
|||
"node": "14", |
|||
"deno": "1", |
|||
"ios": "13.4", |
|||
"samsung": "13", |
|||
"rhino": "1.8", |
|||
"opera_mobile": "57", |
|||
"electron": "8.0" |
|||
}, |
|||
"proposal-nullish-coalescing-operator": { |
|||
"chrome": "80", |
|||
"opera": "67", |
|||
"edge": "80", |
|||
"firefox": "72", |
|||
"safari": "13.1", |
|||
"node": "14", |
|||
"deno": "1", |
|||
"ios": "13.4", |
|||
"samsung": "13", |
|||
"rhino": "1.8", |
|||
"opera_mobile": "57", |
|||
"electron": "8.0" |
|||
}, |
|||
"transform-optional-chaining": { |
|||
"chrome": "91", |
|||
"opera": "77", |
|||
"edge": "91", |
|||
"firefox": "74", |
|||
"safari": "13.1", |
|||
"node": "16.9", |
|||
"deno": "1.9", |
|||
"ios": "13.4", |
|||
"samsung": "16", |
|||
"opera_mobile": "64", |
|||
"electron": "13.0" |
|||
}, |
|||
"proposal-optional-chaining": { |
|||
"chrome": "91", |
|||
"opera": "77", |
|||
"edge": "91", |
|||
"firefox": "74", |
|||
"safari": "13.1", |
|||
"node": "16.9", |
|||
"deno": "1.9", |
|||
"ios": "13.4", |
|||
"samsung": "16", |
|||
"opera_mobile": "64", |
|||
"electron": "13.0" |
|||
}, |
|||
"transform-json-strings": { |
|||
"chrome": "66", |
|||
"opera": "53", |
|||
"edge": "79", |
|||
"firefox": "62", |
|||
"safari": "12", |
|||
"node": "10", |
|||
"deno": "1", |
|||
"ios": "12", |
|||
"samsung": "9", |
|||
"rhino": "1.7.14", |
|||
"opera_mobile": "47", |
|||
"electron": "3.0" |
|||
}, |
|||
"proposal-json-strings": { |
|||
"chrome": "66", |
|||
"opera": "53", |
|||
"edge": "79", |
|||
"firefox": "62", |
|||
"safari": "12", |
|||
"node": "10", |
|||
"deno": "1", |
|||
"ios": "12", |
|||
"samsung": "9", |
|||
"rhino": "1.7.14", |
|||
"opera_mobile": "47", |
|||
"electron": "3.0" |
|||
}, |
|||
"transform-optional-catch-binding": { |
|||
"chrome": "66", |
|||
"opera": "53", |
|||
"edge": "79", |
|||
"firefox": "58", |
|||
"safari": "11.1", |
|||
"node": "10", |
|||
"deno": "1", |
|||
"ios": "11.3", |
|||
"samsung": "9", |
|||
"opera_mobile": "47", |
|||
"electron": "3.0" |
|||
}, |
|||
"proposal-optional-catch-binding": { |
|||
"chrome": "66", |
|||
"opera": "53", |
|||
"edge": "79", |
|||
"firefox": "58", |
|||
"safari": "11.1", |
|||
"node": "10", |
|||
"deno": "1", |
|||
"ios": "11.3", |
|||
"samsung": "9", |
|||
"opera_mobile": "47", |
|||
"electron": "3.0" |
|||
}, |
|||
"transform-parameters": { |
|||
"chrome": "49", |
|||
"opera": "36", |
|||
"edge": "18", |
|||
"firefox": "52", |
|||
"safari": "16.3", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ios": "16.3", |
|||
"samsung": "5", |
|||
"opera_mobile": "36", |
|||
"electron": "0.37" |
|||
}, |
|||
"transform-async-generator-functions": { |
|||
"chrome": "63", |
|||
"opera": "50", |
|||
"edge": "79", |
|||
"firefox": "57", |
|||
"safari": "12", |
|||
"node": "10", |
|||
"deno": "1", |
|||
"ios": "12", |
|||
"samsung": "8", |
|||
"opera_mobile": "46", |
|||
"electron": "3.0" |
|||
}, |
|||
"proposal-async-generator-functions": { |
|||
"chrome": "63", |
|||
"opera": "50", |
|||
"edge": "79", |
|||
"firefox": "57", |
|||
"safari": "12", |
|||
"node": "10", |
|||
"deno": "1", |
|||
"ios": "12", |
|||
"samsung": "8", |
|||
"opera_mobile": "46", |
|||
"electron": "3.0" |
|||
}, |
|||
"transform-object-rest-spread": { |
|||
"chrome": "60", |
|||
"opera": "47", |
|||
"edge": "79", |
|||
"firefox": "55", |
|||
"safari": "11.1", |
|||
"node": "8.3", |
|||
"deno": "1", |
|||
"ios": "11.3", |
|||
"samsung": "8", |
|||
"opera_mobile": "44", |
|||
"electron": "2.0" |
|||
}, |
|||
"proposal-object-rest-spread": { |
|||
"chrome": "60", |
|||
"opera": "47", |
|||
"edge": "79", |
|||
"firefox": "55", |
|||
"safari": "11.1", |
|||
"node": "8.3", |
|||
"deno": "1", |
|||
"ios": "11.3", |
|||
"samsung": "8", |
|||
"opera_mobile": "44", |
|||
"electron": "2.0" |
|||
}, |
|||
"transform-dotall-regex": { |
|||
"chrome": "62", |
|||
"opera": "49", |
|||
"edge": "79", |
|||
"firefox": "78", |
|||
"safari": "11.1", |
|||
"node": "8.10", |
|||
"deno": "1", |
|||
"ios": "11.3", |
|||
"samsung": "8", |
|||
"rhino": "1.7.15", |
|||
"opera_mobile": "46", |
|||
"electron": "3.0" |
|||
}, |
|||
"transform-unicode-property-regex": { |
|||
"chrome": "64", |
|||
"opera": "51", |
|||
"edge": "79", |
|||
"firefox": "78", |
|||
"safari": "11.1", |
|||
"node": "10", |
|||
"deno": "1", |
|||
"ios": "11.3", |
|||
"samsung": "9", |
|||
"opera_mobile": "47", |
|||
"electron": "3.0" |
|||
}, |
|||
"proposal-unicode-property-regex": { |
|||
"chrome": "64", |
|||
"opera": "51", |
|||
"edge": "79", |
|||
"firefox": "78", |
|||
"safari": "11.1", |
|||
"node": "10", |
|||
"deno": "1", |
|||
"ios": "11.3", |
|||
"samsung": "9", |
|||
"opera_mobile": "47", |
|||
"electron": "3.0" |
|||
}, |
|||
"transform-named-capturing-groups-regex": { |
|||
"chrome": "64", |
|||
"opera": "51", |
|||
"edge": "79", |
|||
"firefox": "78", |
|||
"safari": "11.1", |
|||
"node": "10", |
|||
"deno": "1", |
|||
"ios": "11.3", |
|||
"samsung": "9", |
|||
"opera_mobile": "47", |
|||
"electron": "3.0" |
|||
}, |
|||
"transform-async-to-generator": { |
|||
"chrome": "55", |
|||
"opera": "42", |
|||
"edge": "15", |
|||
"firefox": "52", |
|||
"safari": "11", |
|||
"node": "7.6", |
|||
"deno": "1", |
|||
"ios": "11", |
|||
"samsung": "6", |
|||
"opera_mobile": "42", |
|||
"electron": "1.6" |
|||
}, |
|||
"transform-exponentiation-operator": { |
|||
"chrome": "52", |
|||
"opera": "39", |
|||
"edge": "14", |
|||
"firefox": "52", |
|||
"safari": "10.1", |
|||
"node": "7", |
|||
"deno": "1", |
|||
"ios": "10.3", |
|||
"samsung": "6", |
|||
"rhino": "1.7.14", |
|||
"opera_mobile": "41", |
|||
"electron": "1.3" |
|||
}, |
|||
"transform-template-literals": { |
|||
"chrome": "41", |
|||
"opera": "28", |
|||
"edge": "13", |
|||
"firefox": "34", |
|||
"safari": "13", |
|||
"node": "4", |
|||
"deno": "1", |
|||
"ios": "13", |
|||
"samsung": "3.4", |
|||
"opera_mobile": "28", |
|||
"electron": "0.21" |
|||
}, |
|||
"transform-literals": { |
|||
"chrome": "44", |
|||
"opera": "31", |
|||
"edge": "12", |
|||
"firefox": "53", |
|||
"safari": "9", |
|||
"node": "4", |
|||
"deno": "1", |
|||
"ios": "9", |
|||
"samsung": "4", |
|||
"rhino": "1.7.15", |
|||
"opera_mobile": "32", |
|||
"electron": "0.30" |
|||
}, |
|||
"transform-function-name": { |
|||
"chrome": "51", |
|||
"opera": "38", |
|||
"edge": "79", |
|||
"firefox": "53", |
|||
"safari": "10", |
|||
"node": "6.5", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "41", |
|||
"electron": "1.2" |
|||
}, |
|||
"transform-arrow-functions": { |
|||
"chrome": "47", |
|||
"opera": "34", |
|||
"edge": "13", |
|||
"firefox": "43", |
|||
"safari": "10", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"rhino": "1.7.13", |
|||
"opera_mobile": "34", |
|||
"electron": "0.36" |
|||
}, |
|||
"transform-block-scoped-functions": { |
|||
"chrome": "41", |
|||
"opera": "28", |
|||
"edge": "12", |
|||
"firefox": "46", |
|||
"safari": "10", |
|||
"node": "4", |
|||
"deno": "1", |
|||
"ie": "11", |
|||
"ios": "10", |
|||
"samsung": "3.4", |
|||
"opera_mobile": "28", |
|||
"electron": "0.21" |
|||
}, |
|||
"transform-classes": { |
|||
"chrome": "46", |
|||
"opera": "33", |
|||
"edge": "13", |
|||
"firefox": "45", |
|||
"safari": "10", |
|||
"node": "5", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "33", |
|||
"electron": "0.36" |
|||
}, |
|||
"transform-object-super": { |
|||
"chrome": "46", |
|||
"opera": "33", |
|||
"edge": "13", |
|||
"firefox": "45", |
|||
"safari": "10", |
|||
"node": "5", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "33", |
|||
"electron": "0.36" |
|||
}, |
|||
"transform-shorthand-properties": { |
|||
"chrome": "43", |
|||
"opera": "30", |
|||
"edge": "12", |
|||
"firefox": "33", |
|||
"safari": "9", |
|||
"node": "4", |
|||
"deno": "1", |
|||
"ios": "9", |
|||
"samsung": "4", |
|||
"rhino": "1.7.14", |
|||
"opera_mobile": "30", |
|||
"electron": "0.27" |
|||
}, |
|||
"transform-duplicate-keys": { |
|||
"chrome": "42", |
|||
"opera": "29", |
|||
"edge": "12", |
|||
"firefox": "34", |
|||
"safari": "9", |
|||
"node": "4", |
|||
"deno": "1", |
|||
"ios": "9", |
|||
"samsung": "3.4", |
|||
"opera_mobile": "29", |
|||
"electron": "0.25" |
|||
}, |
|||
"transform-computed-properties": { |
|||
"chrome": "44", |
|||
"opera": "31", |
|||
"edge": "12", |
|||
"firefox": "34", |
|||
"safari": "7.1", |
|||
"node": "4", |
|||
"deno": "1", |
|||
"ios": "8", |
|||
"samsung": "4", |
|||
"rhino": "1.8", |
|||
"opera_mobile": "32", |
|||
"electron": "0.30" |
|||
}, |
|||
"transform-for-of": { |
|||
"chrome": "51", |
|||
"opera": "38", |
|||
"edge": "15", |
|||
"firefox": "53", |
|||
"safari": "10", |
|||
"node": "6.5", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "41", |
|||
"electron": "1.2" |
|||
}, |
|||
"transform-sticky-regex": { |
|||
"chrome": "49", |
|||
"opera": "36", |
|||
"edge": "13", |
|||
"firefox": "3", |
|||
"safari": "10", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"rhino": "1.7.15", |
|||
"opera_mobile": "36", |
|||
"electron": "0.37" |
|||
}, |
|||
"transform-unicode-escapes": { |
|||
"chrome": "44", |
|||
"opera": "31", |
|||
"edge": "12", |
|||
"firefox": "53", |
|||
"safari": "9", |
|||
"node": "4", |
|||
"deno": "1", |
|||
"ios": "9", |
|||
"samsung": "4", |
|||
"rhino": "1.7.15", |
|||
"opera_mobile": "32", |
|||
"electron": "0.30" |
|||
}, |
|||
"transform-unicode-regex": { |
|||
"chrome": "50", |
|||
"opera": "37", |
|||
"edge": "13", |
|||
"firefox": "46", |
|||
"safari": "12", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ios": "12", |
|||
"samsung": "5", |
|||
"opera_mobile": "37", |
|||
"electron": "1.1" |
|||
}, |
|||
"transform-spread": { |
|||
"chrome": "46", |
|||
"opera": "33", |
|||
"edge": "13", |
|||
"firefox": "45", |
|||
"safari": "10", |
|||
"node": "5", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "33", |
|||
"electron": "0.36" |
|||
}, |
|||
"transform-destructuring": { |
|||
"chrome": "51", |
|||
"opera": "38", |
|||
"edge": "15", |
|||
"firefox": "53", |
|||
"safari": "10", |
|||
"node": "6.5", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "41", |
|||
"electron": "1.2" |
|||
}, |
|||
"transform-block-scoping": { |
|||
"chrome": "50", |
|||
"opera": "37", |
|||
"edge": "14", |
|||
"firefox": "53", |
|||
"safari": "11", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ios": "11", |
|||
"samsung": "5", |
|||
"opera_mobile": "37", |
|||
"electron": "1.1" |
|||
}, |
|||
"transform-typeof-symbol": { |
|||
"chrome": "48", |
|||
"opera": "35", |
|||
"edge": "12", |
|||
"firefox": "36", |
|||
"safari": "9", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ios": "9", |
|||
"samsung": "5", |
|||
"rhino": "1.8", |
|||
"opera_mobile": "35", |
|||
"electron": "0.37" |
|||
}, |
|||
"transform-new-target": { |
|||
"chrome": "46", |
|||
"opera": "33", |
|||
"edge": "14", |
|||
"firefox": "41", |
|||
"safari": "10", |
|||
"node": "5", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "33", |
|||
"electron": "0.36" |
|||
}, |
|||
"transform-regenerator": { |
|||
"chrome": "50", |
|||
"opera": "37", |
|||
"edge": "13", |
|||
"firefox": "53", |
|||
"safari": "10", |
|||
"node": "6", |
|||
"deno": "1", |
|||
"ios": "10", |
|||
"samsung": "5", |
|||
"opera_mobile": "37", |
|||
"electron": "1.1" |
|||
}, |
|||
"transform-member-expression-literals": { |
|||
"chrome": "7", |
|||
"opera": "12", |
|||
"edge": "12", |
|||
"firefox": "2", |
|||
"safari": "5.1", |
|||
"node": "0.4", |
|||
"deno": "1", |
|||
"ie": "9", |
|||
"android": "4", |
|||
"ios": "6", |
|||
"phantom": "1.9", |
|||
"samsung": "1", |
|||
"rhino": "1.7.13", |
|||
"opera_mobile": "12", |
|||
"electron": "0.20" |
|||
}, |
|||
"transform-property-literals": { |
|||
"chrome": "7", |
|||
"opera": "12", |
|||
"edge": "12", |
|||
"firefox": "2", |
|||
"safari": "5.1", |
|||
"node": "0.4", |
|||
"deno": "1", |
|||
"ie": "9", |
|||
"android": "4", |
|||
"ios": "6", |
|||
"phantom": "1.9", |
|||
"samsung": "1", |
|||
"rhino": "1.7.13", |
|||
"opera_mobile": "12", |
|||
"electron": "0.20" |
|||
}, |
|||
"transform-reserved-words": { |
|||
"chrome": "13", |
|||
"opera": "10.50", |
|||
"edge": "12", |
|||
"firefox": "2", |
|||
"safari": "3.1", |
|||
"node": "0.6", |
|||
"deno": "1", |
|||
"ie": "9", |
|||
"android": "4.4", |
|||
"ios": "6", |
|||
"phantom": "1.9", |
|||
"samsung": "1", |
|||
"rhino": "1.7.13", |
|||
"opera_mobile": "10.1", |
|||
"electron": "0.20" |
|||
}, |
|||
"transform-export-namespace-from": { |
|||
"chrome": "72", |
|||
"deno": "1.0", |
|||
"edge": "79", |
|||
"firefox": "80", |
|||
"node": "13.2.0", |
|||
"opera": "60", |
|||
"opera_mobile": "51", |
|||
"safari": "14.1", |
|||
"ios": "14.5", |
|||
"samsung": "11.0", |
|||
"android": "72", |
|||
"electron": "5.0" |
|||
}, |
|||
"proposal-export-namespace-from": { |
|||
"chrome": "72", |
|||
"deno": "1.0", |
|||
"edge": "79", |
|||
"firefox": "80", |
|||
"node": "13.2.0", |
|||
"opera": "60", |
|||
"opera_mobile": "51", |
|||
"safari": "14.1", |
|||
"ios": "14.5", |
|||
"samsung": "11.0", |
|||
"android": "72", |
|||
"electron": "5.0" |
|||
} |
|||
} |
|||
@ -0,0 +1,2 @@ |
|||
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
|||
module.exports = require("./data/native-modules.json"); |
|||
@ -0,0 +1,2 @@ |
|||
// Todo (Babel 8): remove this file, in Babel 8 users import the .json directly
|
|||
module.exports = require("./data/overlapping-plugins.json"); |
|||
@ -0,0 +1,40 @@ |
|||
{ |
|||
"name": "@babel/compat-data", |
|||
"version": "7.28.5", |
|||
"author": "The Babel Team (https://babel.dev/team)", |
|||
"license": "MIT", |
|||
"description": "The compat-data to determine required Babel plugins", |
|||
"repository": { |
|||
"type": "git", |
|||
"url": "https://github.com/babel/babel.git", |
|||
"directory": "packages/babel-compat-data" |
|||
}, |
|||
"publishConfig": { |
|||
"access": "public" |
|||
}, |
|||
"exports": { |
|||
"./plugins": "./plugins.js", |
|||
"./native-modules": "./native-modules.js", |
|||
"./corejs2-built-ins": "./corejs2-built-ins.js", |
|||
"./corejs3-shipped-proposals": "./corejs3-shipped-proposals.js", |
|||
"./overlapping-plugins": "./overlapping-plugins.js", |
|||
"./plugin-bugfixes": "./plugin-bugfixes.js" |
|||
}, |
|||
"scripts": { |
|||
"build-data": "./scripts/download-compat-table.sh && node ./scripts/build-data.mjs && node ./scripts/build-modules-support.mjs && node ./scripts/build-bugfixes-targets.mjs" |
|||
}, |
|||
"keywords": [ |
|||
"babel", |
|||
"compat-table", |
|||
"compat-data" |
|||
], |
|||
"devDependencies": { |
|||
"@mdn/browser-compat-data": "^6.0.8", |
|||
"core-js-compat": "^3.43.0", |
|||
"electron-to-chromium": "^1.5.140" |
|||
}, |
|||
"engines": { |
|||
"node": ">=6.9.0" |
|||
}, |
|||
"type": "commonjs" |
|||
} |
|||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue