@brewer/dj-common 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,39 @@
1
+ # dj-common 测试示例
2
+
3
+ 这是一个简单的测试项目,用于验证 dj-common 包是否正常工作。
4
+
5
+ ## 运行测试
6
+
7
+ 在项目根目录(dj-common)执行:
8
+
9
+ ```bash
10
+ # 1. 构建项目
11
+ npm run build
12
+
13
+ # 2. 运行测试
14
+ node examples/basic-test/index.js
15
+ ```
16
+
17
+ ## 测试内容
18
+
19
+ - ✅ 创建 WebSocketClient 实例
20
+ - ✅ 注册消息回调
21
+ - ✅ 检查模块导出
22
+
23
+ ## 使用 npm link 测试
24
+
25
+ 如果想在其他项目中测试:
26
+
27
+ ```bash
28
+ # 在 dj-common 根目录
29
+ npm link
30
+
31
+ # 在其他项目中
32
+ npm link @brewer/dj-common
33
+ ```
34
+
35
+ 然后就可以像正常安装的包一样使用了:
36
+
37
+ ```javascript
38
+ import { WebSocketClient } from '@brewer/dj-common'
39
+ ```
@@ -0,0 +1,56 @@
1
+ // 基础测试示例
2
+ import { WebSocketClient } from '../../dist/index.esm.js'
3
+
4
+ console.log('🧪 开始测试 dj-common...\n')
5
+
6
+ // 测试 1: 创建实例
7
+ console.log('✓ 测试 1: 创建 WebSocketClient 实例')
8
+ try {
9
+ const client = new WebSocketClient({
10
+ heartbeatInterval: 30000,
11
+ maxReconnectAttempts: 5,
12
+ autoReconnect: true,
13
+ })
14
+ console.log(' ✅ 实例创建成功')
15
+ console.log(' 配置:', {
16
+ heartbeatInterval: 30000,
17
+ maxReconnectAttempts: 5,
18
+ autoReconnect: true,
19
+ })
20
+ } catch (error) {
21
+ console.error(' ❌ 实例创建失败:', error.message)
22
+ process.exit(1)
23
+ }
24
+
25
+ // 测试 2: 注册消息回调
26
+ console.log('\n✓ 测试 2: 注册消息回调')
27
+ try {
28
+ const client = new WebSocketClient()
29
+ client.on('test-message', (data) => {
30
+ console.log('收到消息:', data)
31
+ })
32
+ console.log(' ✅ 消息回调注册成功')
33
+ } catch (error) {
34
+ console.error(' ❌ 消息回调注册失败:', error.message)
35
+ process.exit(1)
36
+ }
37
+
38
+ // 测试 3: 检查类型导出
39
+ console.log('\n✓ 测试 3: 检查导出')
40
+ try {
41
+ console.log(' ✅ WebSocketClient 已导出')
42
+ console.log(' 类型:', typeof WebSocketClient)
43
+ } catch (error) {
44
+ console.error(' ❌ 导出检查失败:', error.message)
45
+ process.exit(1)
46
+ }
47
+
48
+ console.log('\n🎉 所有测试通过!\n')
49
+ console.log('💡 提示:')
50
+ console.log(' - 要测试 WebSocket 连接,需要启动一个 WebSocket 服务器')
51
+ console.log(' - 然后取消注释下面的连接代码\n')
52
+
53
+ // 实际连接测试(需要 WebSocket 服务器)
54
+ // console.log('✓ 测试 4: 连接 WebSocket 服务器')
55
+ // const client = new WebSocketClient()
56
+ // client.connect('ws://localhost:8080')
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "@brewer/dj-common-test",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "description": "Test example for @brewer/dj-common",
6
+ "type": "module",
7
+ "scripts": {
8
+ "test": "node index.js"
9
+ }
10
+ }
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "@brewer/dj-common",
3
+ "version": "1.0.0-beta.0",
4
+ "description": "多端通用的公共方法库,支持 PC、H5、APP 等平台",
5
+ "type": "module",
6
+ "main": "dist/index.cjs.js",
7
+ "module": "dist/index.esm.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.esm.js",
12
+ "require": "./dist/index.cjs.js",
13
+ "types": "./dist/index.d.ts"
14
+ },
15
+ "./MessageSocket": {
16
+ "import": "./dist/MessageSocket.esm.js",
17
+ "require": "./dist/MessageSocket.cjs.js"
18
+ }
19
+ },
20
+ "scripts": {
21
+ "build": "rollup -c",
22
+ "dev": "rollup -c -w",
23
+ "lint": "eslint src/",
24
+ "lint:fix": "eslint src/ --fix",
25
+ "format": "prettier --write \"src/**/*.{ts,js}\"",
26
+ "prepublishOnly": "npm run build",
27
+ "prepare": "husky",
28
+ "release": "standard-version",
29
+ "release:minor": "standard-version --release-as minor",
30
+ "release:major": "standard-version --release-as major",
31
+ "release:patch": "standard-version --release-as patch",
32
+ "release:dry-run": "standard-version --dry-run",
33
+ "release:publish": "git push --follow-tags origin main && npm publish",
34
+ "release:all": "npm run build && npm run release && npm run release:publish"
35
+ },
36
+ "keywords": [
37
+ "common",
38
+ "utils",
39
+ "websocket"
40
+ ],
41
+ "author": "BeerUi",
42
+ "license": "MIT",
43
+ "devDependencies": {
44
+ "@babel/core": "^7.23.9",
45
+ "@babel/preset-env": "^7.23.9",
46
+ "@commitlint/cli": "^20.3.1",
47
+ "@commitlint/config-conventional": "^20.3.1",
48
+ "@eslint/js": "^9.39.2",
49
+ "@rollup/plugin-babel": "^6.0.4",
50
+ "@rollup/plugin-commonjs": "^25.0.7",
51
+ "@rollup/plugin-node-resolve": "^15.2.3",
52
+ "@rollup/plugin-terser": "^0.4.4",
53
+ "@rollup/plugin-typescript": "^12.3.0",
54
+ "@typescript-eslint/eslint-plugin": "^8.52.0",
55
+ "@typescript-eslint/parser": "^8.52.0",
56
+ "eslint": "^9.39.2",
57
+ "eslint-config-prettier": "^10.1.8",
58
+ "eslint-plugin-prettier": "^5.5.4",
59
+ "husky": "^9.1.7",
60
+ "lint-staged": "^16.2.7",
61
+ "prettier": "^3.7.4",
62
+ "rollup": "^4.9.6",
63
+ "standard-version": "^9.5.0",
64
+ "tslib": "^2.8.1",
65
+ "typescript": "^5.9.3"
66
+ },
67
+ "repository": {
68
+ "type": "git",
69
+ "url": ""
70
+ },
71
+ "publishConfig": {
72
+ "access": "public"
73
+ },
74
+ "optionalDependencies": {
75
+ "@rollup/rollup-linux-x64-gnu": "^4.55.1"
76
+ }
77
+ }
@@ -0,0 +1,98 @@
1
+ #!/bin/bash
2
+
3
+ # 发布脚本 - 自动化 npm 包发布流程
4
+
5
+ set -e
6
+
7
+ echo "🚀 开始发布流程..."
8
+ echo ""
9
+
10
+ # 1. 检查是否在 git 仓库中
11
+ if [ ! -d ".git" ]; then
12
+ echo "❌ 错误: 当前目录不是 git 仓库"
13
+ exit 1
14
+ fi
15
+
16
+ # 2. 检查是否有未提交的更改
17
+ if [[ -n $(git status -s) ]]; then
18
+ echo "❌ 错误: 有未提交的更改,请先提交或暂存"
19
+ git status -s
20
+ exit 1
21
+ fi
22
+
23
+ # 3. 确保在主分支
24
+ CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
25
+ if [ "$CURRENT_BRANCH" != "main" ] && [ "$CURRENT_BRANCH" != "master" ]; then
26
+ echo "⚠️ 警告: 当前不在 main/master 分支"
27
+ read -p "是否继续? (y/N) " -n 1 -r
28
+ echo
29
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
30
+ exit 1
31
+ fi
32
+ fi
33
+
34
+ # 4. 拉取最新代码
35
+ echo "📥 拉取最新代码..."
36
+ git pull origin $CURRENT_BRANCH || true
37
+ echo ""
38
+
39
+ # 5. 运行代码检查
40
+ echo "🔍 运行代码检查..."
41
+ npm run lint
42
+ echo ""
43
+
44
+ # 6. 运行构建
45
+ echo "📦 构建项目..."
46
+ npm run build
47
+ echo ""
48
+
49
+ # 7. 选择版本类型
50
+ echo "请选择版本更新类型:"
51
+ echo " 1) patch (bug 修复) - 1.0.0 -> 1.0.1"
52
+ echo " 2) minor (新功能) - 1.0.0 -> 1.1.0"
53
+ echo " 3) major (破坏性更新) - 1.0.0 -> 2.0.0"
54
+ echo " 4) custom (自定义)"
55
+ echo ""
56
+ read -p "请输入选项 (1-4): " version_type
57
+
58
+ case $version_type in
59
+ 1)
60
+ npm run release:patch
61
+ ;;
62
+ 2)
63
+ npm run release:minor
64
+ ;;
65
+ 3)
66
+ npm run release:major
67
+ ;;
68
+ 4)
69
+ read -p "请输入版本号 (如 1.2.3): " custom_version
70
+ npm run release -- --release-as $custom_version
71
+ ;;
72
+ *)
73
+ echo "❌ 无效的选项"
74
+ exit 1
75
+ ;;
76
+ esac
77
+
78
+ echo ""
79
+
80
+ # 8. 推送到远程仓库
81
+ echo "📤 推送到远程仓库..."
82
+ git push --follow-tags origin $CURRENT_BRANCH
83
+ echo ""
84
+
85
+ # 9. 发布到 npm
86
+ read -p "是否发布到 npm? (y/N) " -n 1 -r
87
+ echo
88
+ if [[ $REPLY =~ ^[Yy]$ ]]; then
89
+ echo "📦 发布到 npm..."
90
+ npm publish
91
+ echo ""
92
+ echo "✅ 发布成功!"
93
+ else
94
+ echo "⏭️ 跳过 npm 发布"
95
+ fi
96
+
97
+ echo ""
98
+ echo "🎉 发布流程完成!"
package/tsconfig.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "ESNext",
5
+ "lib": ["ES2020", "DOM"],
6
+ "declaration": true,
7
+ "declarationMap": true,
8
+ "outDir": "./dist",
9
+ "rootDir": "./src",
10
+ "removeComments": false,
11
+ "strict": true,
12
+ "esModuleInterop": true,
13
+ "skipLibCheck": true,
14
+ "forceConsistentCasingInFileNames": true,
15
+ "moduleResolution": "node",
16
+ "resolveJsonModule": true,
17
+ "isolatedModules": true,
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "noImplicitReturns": true,
21
+ "noFallthroughCasesInSwitch": true
22
+ },
23
+ "include": ["src/**/*"],
24
+ "exclude": ["node_modules", "dist", "**/*.spec.ts"]
25
+ }