node-nim 9.13.0 → 9.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/nim/talk.js CHANGED
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.NIMTalk = void 0;
7
7
  const loader_1 = __importDefault(require("../loader"));
8
8
  const eventemitter3_1 = require("eventemitter3");
9
+ const msglog_def_1 = require("../nim_def/msglog_def");
9
10
  class NIMTalk extends eventemitter3_1.EventEmitter {
10
11
  constructor() {
11
12
  super();
@@ -21,8 +22,8 @@ class NIMTalk extends eventemitter3_1.EventEmitter {
21
22
  * @param pcb 上传进度的回调函数, 如果发送的消息里包含了文件资源,则通过此回调函数通知上传进度
22
23
  * @return void 无返回值
23
24
  */
24
- sendMsg(msg, jsonExtension) {
25
- return this.talk.SendMsg(msg, jsonExtension);
25
+ sendMsg(msg, jsonExtension, progressCb) {
26
+ return this.talk.SendMsg(msg, jsonExtension, progressCb);
26
27
  }
27
28
  /** 停止正在发送中的消息(目前只支持发送文件消息时的终止)
28
29
  * @param client_msg_id 停止发送的消息客户端id
@@ -57,6 +58,121 @@ class NIMTalk extends eventemitter3_1.EventEmitter {
57
58
  }, apnstext, pushpayloadconst, jsonExtension);
58
59
  });
59
60
  }
61
+ /** 创建文本消息 */
62
+ createTextMessage(receiver_id, session_type, client_msg_id, content, msg_setting, timetag, sub_type) {
63
+ return {
64
+ receiver_accid_: receiver_id,
65
+ session_type_: session_type,
66
+ client_msg_id_: client_msg_id,
67
+ content_: content,
68
+ msg_setting_: msg_setting,
69
+ timetag_: timetag,
70
+ sub_type_: sub_type,
71
+ type_: msglog_def_1.NIMMessageType.kNIMMessageTypeText
72
+ };
73
+ }
74
+ /** 创建文件消息 */
75
+ createFileMessage(receiver_id, session_type, client_msg_id, file, file_path, msg_setting, timetag, sub_type) {
76
+ return {
77
+ receiver_accid_: receiver_id,
78
+ session_type_: session_type,
79
+ client_msg_id_: client_msg_id,
80
+ attach_: JSON.stringify(file),
81
+ local_res_path_: file_path,
82
+ msg_setting_: msg_setting,
83
+ timetag_: timetag,
84
+ sub_type_: sub_type,
85
+ type_: msglog_def_1.NIMMessageType.kNIMMessageTypeFile
86
+ };
87
+ }
88
+ /** 创建图片消息 */
89
+ createImageMessage(receiver_id, session_type, client_msg_id, image, file_path, msg_setting, timetag, sub_type) {
90
+ return {
91
+ receiver_accid_: receiver_id,
92
+ session_type_: session_type,
93
+ client_msg_id_: client_msg_id,
94
+ attach_: JSON.stringify(image),
95
+ local_res_path_: file_path,
96
+ msg_setting_: msg_setting,
97
+ timetag_: timetag,
98
+ sub_type_: sub_type,
99
+ type_: msglog_def_1.NIMMessageType.kNIMMessageTypeImage
100
+ };
101
+ }
102
+ /** 创建语音消息 */
103
+ createAudioMessage(receiver_id, session_type, client_msg_id, audio, file_path, msg_setting, timetag, sub_type) {
104
+ return {
105
+ receiver_accid_: receiver_id,
106
+ session_type_: session_type,
107
+ client_msg_id_: client_msg_id,
108
+ attach_: JSON.stringify(audio),
109
+ local_res_path_: file_path,
110
+ msg_setting_: msg_setting,
111
+ timetag_: timetag,
112
+ sub_type_: sub_type,
113
+ type_: msglog_def_1.NIMMessageType.kNIMMessageTypeAudio
114
+ };
115
+ }
116
+ /** 创建视频消息 */
117
+ createVideoMessage(receiver_id, session_type, client_msg_id, video, file_path, msg_setting, timetag, sub_type) {
118
+ return {
119
+ receiver_accid_: receiver_id,
120
+ session_type_: session_type,
121
+ client_msg_id_: client_msg_id,
122
+ attach_: JSON.stringify(video),
123
+ local_res_path_: file_path,
124
+ msg_setting_: msg_setting,
125
+ timetag_: timetag,
126
+ sub_type_: sub_type,
127
+ type_: msglog_def_1.NIMMessageType.kNIMMessageTypeVideo
128
+ };
129
+ }
130
+ /** 创建位置消息 */
131
+ createLocationMessage(receiver_id, session_type, client_msg_id, location, msg_setting, timetag, sub_type) {
132
+ return {
133
+ receiver_accid_: receiver_id,
134
+ session_type_: session_type,
135
+ client_msg_id_: client_msg_id,
136
+ attach_: JSON.stringify(location),
137
+ msg_setting_: msg_setting,
138
+ timetag_: timetag,
139
+ sub_type_: sub_type,
140
+ type_: msglog_def_1.NIMMessageType.kNIMMessageTypeLocation
141
+ };
142
+ }
143
+ /** 创建提醒消息 */
144
+ createTipMessage(receiver_id, session_type, client_msg_id, tip, msg_setting, timetag, sub_type) {
145
+ return {
146
+ receiver_accid_: receiver_id,
147
+ session_type_: session_type,
148
+ client_msg_id_: client_msg_id,
149
+ content_: tip,
150
+ msg_setting_: msg_setting,
151
+ timetag_: timetag,
152
+ sub_type_: sub_type,
153
+ type_: msglog_def_1.NIMMessageType.kNIMMessageTypeTips
154
+ };
155
+ }
156
+ /** 创建转发消息 */
157
+ createRetweetMessage(sourceMessage, client_msg_id, session_type, receiver_id, msg_setting, timetag) {
158
+ let attachStr = '';
159
+ if (sourceMessage.attach_) {
160
+ let attach = JSON.parse(sourceMessage.attach_);
161
+ attach['retweeted_msg_id'] = sourceMessage.client_msg_id_;
162
+ attachStr = JSON.stringify(attach);
163
+ }
164
+ return {
165
+ receiver_accid_: receiver_id,
166
+ session_type_: session_type,
167
+ client_msg_id_: client_msg_id,
168
+ content_: sourceMessage.content_,
169
+ msg_setting_: msg_setting,
170
+ timetag_: timetag,
171
+ sub_type_: sourceMessage.sub_type_,
172
+ type_: sourceMessage.type_,
173
+ attach_: attachStr
174
+ };
175
+ }
60
176
  /** 从消息体中获取附件(图片、语音、视频等)的本地路径
61
177
  * @param msg 消息
62
178
  * @return string 消息如果有附件,不管是否已下载,返回附件的本地路径;消息如果没有附件,返回空字符串。
@@ -1 +1 @@
1
- {"version":3,"file":"talk.js","sourceRoot":"","sources":["../../ts/nim/talk.ts"],"names":[],"mappings":";;;;;;AAAA,uDAA2B;AAC3B,iDAA4C;AA4B5C,MAAa,OAAQ,SAAQ,4BAA2B;IAEpD;QACI,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,IAAI,GAAG,IAAI,gBAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,aAAa;IACb,iBAAiB;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAA;IACxC,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,GAAc,EAAE,aAAqB;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IAChD,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,WAAmB,EAAE,IAAoB,EAAE,aAAqB;QACxE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IAClE,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,SAAS,CACL,GAAc,EACd,UAAkB,EAClB,EAA6B,EAC7B,QAAgB,EAChB,gBAAwB,EACxB,aAAqB;QAErB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CACf,GAAG,EACH,UAAU,EACV,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAChB,IAAI,EAAE,EAAE;oBACJ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;iBACtB;gBACD,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;YAC9B,CAAC,EACD,QAAQ,EACR,gBAAgB,EAChB,aAAa,CAChB,CAAA;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;;OAGG;IACH,wBAAwB,CAAC,GAAc;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAA;IAClD,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,GAAc,EAAE,cAAsB;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IACtD,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,EAAgC,EAAE,aAAqB;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;IACxD,CAAC;IAED;;;;OAIG;IACH,yBAAyB,CAAC,EAAyC,EAAE,aAAqB;QACtF,OAAO,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;IACjE,CAAC;CACJ;AA1GD,0BA0GC"}
1
+ {"version":3,"file":"talk.js","sourceRoot":"","sources":["../../ts/nim/talk.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,74 +1,74 @@
1
- {
2
- "name": "node-nim",
3
- "version": "9.13.0",
4
- "description": "NetEase IM nodejs wrapper based on NetEase IM C++ SDK",
5
- "main": "dist/node-nim.js",
6
- "bin": {
7
- "node-nim-tester": "node-nim-tester.js"
8
- },
9
- "types": "types/node-nim.d.ts",
10
- "author": "Netease",
11
- "license": "ISC",
12
- "homepage": "https://github.com/netease-im/node-nim",
13
- "repository": {
14
- "type": "git",
15
- "url": "git://github.com/netease-im/node-nim.git"
16
- },
17
- "scripts": {
18
- "coverage": "nyc mocha test/test_all.js -slow 200 -timeout 10000",
19
- "build_ts": "rimraf ./dist && rimraf ./types && tsc",
20
- "build_wiki_doc": "typedoc --plugin typedoc-plugin-markdown --plugin typedoc-github-wiki-theme --theme github-wiki --out wiki_doc",
21
- "build_markdown_doc": "typedoc --plugin typedoc-plugin-markdown --theme markdown --out markdown_doc",
22
- "prepublishOnly": "npm run build_ts",
23
- "install": "npm run download_sdk",
24
- "download_sdk": "node -e \"require('./script/download-sdk.js').downloadSDK()\"",
25
- "publish_to_netease_npm": "node script/publish-to-netease-npm.js"
26
- },
27
- "nyc": {
28
- "cache": false,
29
- "reporter": [
30
- "lcov"
31
- ]
32
- },
33
- "dependencies": {
34
- "compare-versions": "^4.1.4",
35
- "download": "^8.0.0",
36
- "eventemitter3": "^4.0.7",
37
- "node-fetch": "^2.6.9"
38
- },
39
- "optionalDependencies": {
40
- "commander": "^8.3.0",
41
- "hawk-web": "latest"
42
- },
43
- "devDependencies": {
44
- "@types/node": "^16.18.23",
45
- "@typescript-eslint/eslint-plugin": "^5.58.0",
46
- "@typescript-eslint/parser": "^5.58.0",
47
- "bluebird": "^3.7.2",
48
- "cmake-js": "^6.3.2",
49
- "eslint": "^7.32.0",
50
- "git-describe": "^4.1.1",
51
- "mocha": "^9.2.2",
52
- "node-addon-api": "^4.3.0",
53
- "nyc": "^15.1.0",
54
- "typedoc": "^0.24.1",
55
- "typedoc-github-wiki-theme": "^1.1.0",
56
- "typedoc-plugin-markdown": "^3.15.1",
57
- "typescript": "^4.9.5"
58
- },
59
- "keywords": [
60
- "netease",
61
- "nim",
62
- "im sdk",
63
- "nim sdk",
64
- "nim node",
65
- "nim electron"
66
- ],
67
- "files": [
68
- "dist/",
69
- "types/",
70
- "package.json",
71
- "script/",
72
- "node-nim-tester.js"
73
- ]
74
- }
1
+ {
2
+ "name": "node-nim",
3
+ "version": "9.14.2",
4
+ "description": "NetEase IM nodejs wrapper based on NetEase IM C++ SDK",
5
+ "main": "dist/node-nim.js",
6
+ "bin": {
7
+ "node-nim-tester": "node-nim-tester.js"
8
+ },
9
+ "types": "types/node-nim.d.ts",
10
+ "author": "Netease",
11
+ "license": "ISC",
12
+ "homepage": "https://github.com/netease-im/node-nim",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git://github.com/netease-im/node-nim.git"
16
+ },
17
+ "scripts": {
18
+ "coverage": "nyc mocha test/test_all.js -slow 200 -timeout 10000",
19
+ "build_ts": "rimraf ./dist && rimraf ./types && tsc",
20
+ "build_wiki_doc": "typedoc --plugin typedoc-plugin-markdown --plugin typedoc-github-wiki-theme --theme github-wiki --out wiki_doc",
21
+ "build_markdown_doc": "typedoc --plugin typedoc-plugin-markdown --theme markdown --out markdown_doc",
22
+ "prepublishOnly": "npm run build_ts",
23
+ "install": "npm run download_sdk",
24
+ "download_sdk": "node -e \"require('./script/download-sdk.js').downloadSDK()\"",
25
+ "publish_to_netease_npm": "node script/publish-to-netease-npm.js"
26
+ },
27
+ "nyc": {
28
+ "cache": false,
29
+ "reporter": [
30
+ "lcov"
31
+ ]
32
+ },
33
+ "dependencies": {
34
+ "compare-versions": "^4.1.4",
35
+ "download": "^8.0.0",
36
+ "eventemitter3": "^4.0.7",
37
+ "node-fetch": "^2.6.9"
38
+ },
39
+ "optionalDependencies": {
40
+ "commander": "^8.3.0",
41
+ "hawk-web": "latest"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^16.18.23",
45
+ "@typescript-eslint/eslint-plugin": "^5.58.0",
46
+ "@typescript-eslint/parser": "^5.58.0",
47
+ "bluebird": "^3.7.2",
48
+ "cmake-js": "^6.3.2",
49
+ "eslint": "^7.32.0",
50
+ "git-describe": "^4.1.1",
51
+ "mocha": "^9.2.2",
52
+ "node-addon-api": "^4.3.0",
53
+ "nyc": "^15.1.0",
54
+ "typedoc": "^0.24.1",
55
+ "typedoc-github-wiki-theme": "^1.1.0",
56
+ "typedoc-plugin-markdown": "^3.15.1",
57
+ "typescript": "^4.9.5"
58
+ },
59
+ "keywords": [
60
+ "netease",
61
+ "nim",
62
+ "im sdk",
63
+ "nim sdk",
64
+ "nim node",
65
+ "nim electron"
66
+ ],
67
+ "files": [
68
+ "dist/",
69
+ "types/",
70
+ "package.json",
71
+ "script/",
72
+ "node-nim-tester.js"
73
+ ]
74
+ }
@@ -1,78 +1,78 @@
1
- const fetch = require('node-fetch')
2
- const fs = require('fs')
3
- const compareVersions = require('compare-versions')
4
- const download = require('download')
5
- const arch = process.env.npm_config_arch || process.arch
6
- const platform = process.env.npm_config_platform || process.platform
7
- const sdk_group = 'message'
8
- const sdk_name = 'nim'
9
- const sdk_path = `${__dirname}/../sdk`
10
- if (process.env.npm_config_ignoredownloadsdk) {
11
- console.log('ignore download sdk')
12
- process.exit(0)
13
- }
14
- let sdk_version
15
- let sdk_url = process.env.npm_config_nimsdkurl
16
- if (process.env.npm_package_version) {
17
- sdk_version = process.env.npm_package_version.split('-')[0]
18
- }
19
- if (process.env.npm_config_nimsdkversion) {
20
- sdk_version = process.env.npm_config_nimsdkversion
21
- }
22
- async function downloadSDK(custom_sdk_url) {
23
- if (custom_sdk_url) {
24
- sdk_url = custom_sdk_url
25
- }
26
- // fetch publish list
27
- const res = await fetch('https://admin.netease.im/public-service/free/publish/list')
28
- const publish_json = await res.json()
29
- // get sdk list
30
- if (!sdk_url) {
31
- let latest_version = '0.0.0'
32
- let latest_sdk_url = ''
33
- Object.keys(publish_json.data[sdk_group]).forEach((temp) => {
34
- if (compareVersions.compare(latest_version, temp, '<')) {
35
- publish_json.data[sdk_group][temp].forEach((member) => {
36
- if (member.filename.includes(sdk_name) && member.filename.includes(platform) && member.filename.includes(arch)) {
37
- latest_version = temp
38
- latest_sdk_url = member.cdnlink
39
- }
40
- })
41
- }
42
- if (sdk_version === temp) {
43
- publish_json.data[sdk_group][temp].forEach((member) => {
44
- if (member.filename.includes(sdk_name) && member.filename.includes(platform) && member.filename.includes(arch)) {
45
- sdk_url = member.cdnlink
46
- }
47
- })
48
- }
49
- })
50
- if (!sdk_url || sdk_url.length === 0) {
51
- console.log(`${sdk_name} sdk version ${sdk_version} not found, use latest version ${latest_version}`)
52
- sdk_url = latest_sdk_url
53
- }
54
- console.log(`[node-nim] downloadSDK sdk_name:${sdk_name}, platform:${platform}, arch:${arch}`)
55
- }
56
- if (!sdk_url) {
57
- console.error(`[node-nim] downloadSDK sdk_name:${sdk_name}, platform:${platform}, arch:${arch} not found`)
58
- return
59
- }
60
- console.info(`[node-nim] Downloading prebuilt sdk from ${sdk_url} to ${sdk_path}`)
61
- // remove sdk_path
62
- if (fs.existsSync(sdk_path)) {
63
- fs.rmSync(sdk_path, { recursive: true, force: true })
64
- }
65
- // download sdk
66
- try {
67
- await download(sdk_url, sdk_path, {
68
- extract: true,
69
- filter: (file) => {
70
- return !file.path.includes('._')
71
- }
72
- })
73
- console.info(`[node-nim] Downloading prebuilt sdk complete`)
74
- } catch (err) {
75
- console.error(`[node-nim] downloadSDK error:${err}`)
76
- }
77
- }
78
- exports.downloadSDK = downloadSDK
1
+ const fetch = require('node-fetch')
2
+ const fs = require('fs')
3
+ const compareVersions = require('compare-versions')
4
+ const download = require('download')
5
+ const arch = process.env.npm_config_arch || process.arch
6
+ const platform = process.env.npm_config_platform || process.platform
7
+ const sdk_group = 'message'
8
+ const sdk_name = 'nim'
9
+ const sdk_path = `${__dirname}/../sdk`
10
+ if (process.env.npm_config_ignoredownloadsdk) {
11
+ console.log('ignore download sdk')
12
+ process.exit(0)
13
+ }
14
+ let sdk_version
15
+ let sdk_url = process.env.npm_config_nimsdkurl
16
+ if (process.env.npm_package_version) {
17
+ sdk_version = process.env.npm_package_version.split('-')[0]
18
+ }
19
+ if (process.env.npm_config_nimsdkversion) {
20
+ sdk_version = process.env.npm_config_nimsdkversion
21
+ }
22
+ async function downloadSDK(custom_sdk_url) {
23
+ if (custom_sdk_url) {
24
+ sdk_url = custom_sdk_url
25
+ }
26
+ // fetch publish list
27
+ const res = await fetch('https://admin.netease.im/public-service/free/publish/list')
28
+ const publish_json = await res.json()
29
+ // get sdk list
30
+ if (!sdk_url) {
31
+ let latest_version = '0.0.0'
32
+ let latest_sdk_url = ''
33
+ Object.keys(publish_json.data[sdk_group]).forEach((temp) => {
34
+ if (compareVersions.compare(latest_version, temp, '<')) {
35
+ publish_json.data[sdk_group][temp].forEach((member) => {
36
+ if (member.filename.includes(sdk_name) && member.filename.includes(platform) && member.filename.includes(arch)) {
37
+ latest_version = temp
38
+ latest_sdk_url = member.cdnlink
39
+ }
40
+ })
41
+ }
42
+ if (sdk_version === temp) {
43
+ publish_json.data[sdk_group][temp].forEach((member) => {
44
+ if (member.filename.includes(sdk_name) && member.filename.includes(platform) && member.filename.includes(arch)) {
45
+ sdk_url = member.cdnlink
46
+ }
47
+ })
48
+ }
49
+ })
50
+ if (!sdk_url || sdk_url.length === 0) {
51
+ console.log(`${sdk_name} sdk version ${sdk_version} not found, use latest version ${latest_version}`)
52
+ sdk_url = latest_sdk_url
53
+ }
54
+ console.log(`[node-nim] downloadSDK sdk_name:${sdk_name}, platform:${platform}, arch:${arch}`)
55
+ }
56
+ if (!sdk_url) {
57
+ console.error(`[node-nim] downloadSDK sdk_name:${sdk_name}, platform:${platform}, arch:${arch} not found`)
58
+ return
59
+ }
60
+ console.info(`[node-nim] Downloading prebuilt sdk from ${sdk_url} to ${sdk_path}`)
61
+ // remove sdk_path
62
+ if (fs.existsSync(sdk_path)) {
63
+ fs.rmSync(sdk_path, { recursive: true, force: true })
64
+ }
65
+ // download sdk
66
+ try {
67
+ await download(sdk_url, sdk_path, {
68
+ extract: true,
69
+ filter: (file) => {
70
+ return !file.path.includes('._')
71
+ }
72
+ })
73
+ console.info(`[node-nim] Downloading prebuilt sdk complete`)
74
+ } catch (err) {
75
+ console.error(`[node-nim] downloadSDK error:${err}`)
76
+ }
77
+ }
78
+ exports.downloadSDK = downloadSDK
@@ -1,17 +1,17 @@
1
- const child_process = require('child_process')
2
- const fs = require('fs')
3
- const testDir = 'node-nim-tester'
4
- if (!fs.existsSync(testDir)) {
5
- fs.mkdirSync(testDir)
6
- }
7
- process.chdir(testDir)
8
- child_process.execSync(`npm init --force`, { stdio: 'inherit' })
9
- child_process.execSync(`npm install node-nim@latest --registry=http://npm.netease.im/`, { stdio: 'inherit' })
10
- const args = process.argv.slice(2).join(' ')
11
- if (process.platform === 'win32') {
12
- child_process.execSync(`.\\node_modules\\.bin\\node-nim-tester.cmd run ${args}`, { stdio: 'inherit' })
13
- } else {
14
- child_process.execSync(`./node_modules/.bin/node-nim-tester run ${args}`, { stdio: 'inherit' })
15
- }
16
- process.chdir('..')
17
- fs.rmSync(testDir, { recursive: true, force: true })
1
+ const child_process = require('child_process')
2
+ const fs = require('fs')
3
+ const testDir = 'node-nim-tester'
4
+ if (!fs.existsSync(testDir)) {
5
+ fs.mkdirSync(testDir)
6
+ }
7
+ process.chdir(testDir)
8
+ child_process.execSync(`npm init --force`, { stdio: 'inherit' })
9
+ child_process.execSync(`npm install node-nim@latest --registry=http://npm.netease.im/`, { stdio: 'inherit' })
10
+ const args = process.argv.slice(2).join(' ')
11
+ if (process.platform === 'win32') {
12
+ child_process.execSync(`.\\node_modules\\.bin\\node-nim-tester.cmd run ${args}`, { stdio: 'inherit' })
13
+ } else {
14
+ child_process.execSync(`./node_modules/.bin/node-nim-tester run ${args}`, { stdio: 'inherit' })
15
+ }
16
+ process.chdir('..')
17
+ fs.rmSync(testDir, { recursive: true, force: true })
@@ -1,7 +1,8 @@
1
1
  import { EventEmitter } from 'eventemitter3';
2
- import { IMMessage, NIMMessageType } from '../nim_def/msglog_def';
3
- import { BroadcastMessage, MessageFilterCallback, NIMTalkAPI, RecallMsgNotify, RecallMsgsCallback, SendMessageArc, TeamNotificationFilterCallback } from '../nim_def/talk_def';
2
+ import { IMMessage, MessageSetting, NIMMessageType } from '../nim_def/msglog_def';
3
+ import { BroadcastMessage, FileUpPrgCallback, IMAudio, IMFile, IMImage, IMLocation, IMVideo, MessageFilterCallback, NIMTalkAPI, RecallMsgNotify, RecallMsgsCallback, SendMessageArc, TeamNotificationFilterCallback } from '../nim_def/talk_def';
4
4
  import { NIMResCode } from '../nim_def/client_def';
5
+ import { NIMSessionType } from 'ts/node-nim';
5
6
  export declare interface NIMTalkEvents {
6
7
  /** 发送消息回调 */
7
8
  sendMsg: [SendMessageArc];
@@ -27,7 +28,7 @@ export declare class NIMTalk extends EventEmitter<NIMTalkEvents> {
27
28
  * @param pcb 上传进度的回调函数, 如果发送的消息里包含了文件资源,则通过此回调函数通知上传进度
28
29
  * @return void 无返回值
29
30
  */
30
- sendMsg(msg: IMMessage, jsonExtension: string): void;
31
+ sendMsg(msg: IMMessage, jsonExtension: string, progressCb: FileUpPrgCallback): void;
31
32
  /** 停止正在发送中的消息(目前只支持发送文件消息时的终止)
32
33
  * @param client_msg_id 停止发送的消息客户端id
33
34
  * @param type 停止发送的消息类型
@@ -50,6 +51,22 @@ export declare class NIMTalk extends EventEmitter<NIMTalkEvents> {
50
51
  * </pre>
51
52
  */
52
53
  recallMsg(msg: IMMessage, notify_msg: string, cb: RecallMsgsCallback | null, apnstext: string, pushpayloadconst: string, jsonExtension: string): Promise<[NIMResCode, Array<RecallMsgNotify>]>;
54
+ /** 创建文本消息 */
55
+ createTextMessage(receiver_id: string, session_type: NIMSessionType, client_msg_id: string, content: string, msg_setting: MessageSetting, timetag: number, sub_type: number): IMMessage;
56
+ /** 创建文件消息 */
57
+ createFileMessage(receiver_id: string, session_type: NIMSessionType, client_msg_id: string, file: IMFile, file_path: string, msg_setting: MessageSetting, timetag: number, sub_type: number): IMMessage;
58
+ /** 创建图片消息 */
59
+ createImageMessage(receiver_id: string, session_type: NIMSessionType, client_msg_id: string, image: IMImage, file_path: string, msg_setting: MessageSetting, timetag: number, sub_type: number): IMMessage;
60
+ /** 创建语音消息 */
61
+ createAudioMessage(receiver_id: string, session_type: NIMSessionType, client_msg_id: string, audio: IMAudio, file_path: string, msg_setting: MessageSetting, timetag: number, sub_type: number): IMMessage;
62
+ /** 创建视频消息 */
63
+ createVideoMessage(receiver_id: string, session_type: NIMSessionType, client_msg_id: string, video: IMVideo, file_path: string, msg_setting: MessageSetting, timetag: number, sub_type: number): IMMessage;
64
+ /** 创建位置消息 */
65
+ createLocationMessage(receiver_id: string, session_type: NIMSessionType, client_msg_id: string, location: IMLocation, msg_setting: MessageSetting, timetag: number, sub_type: number): IMMessage;
66
+ /** 创建提醒消息 */
67
+ createTipMessage(receiver_id: string, session_type: NIMSessionType, client_msg_id: string, tip: string, msg_setting: MessageSetting, timetag: number, sub_type: number): IMMessage;
68
+ /** 创建转发消息 */
69
+ createRetweetMessage(sourceMessage: IMMessage, client_msg_id: string, session_type: NIMSessionType, receiver_id: string, msg_setting: MessageSetting, timetag: number): IMMessage;
53
70
  /** 从消息体中获取附件(图片、语音、视频等)的本地路径
54
71
  * @param msg 消息
55
72
  * @return string 消息如果有附件,不管是否已下载,返回附件的本地路径;消息如果没有附件,返回空字符串。
@@ -34,17 +34,16 @@ export interface DeleteFriendOption {
34
34
  }
35
35
  /** @brief 云信好友 */
36
36
  export interface FriendProfile {
37
- accid_?: string; /** < 用户账号 */
38
- relationship_?: NIMFriendFlag; /** < 主动的好友关系 */
39
- passive_relationship_?: NIMFriendFlag; /** < 被动的好友关系 */
40
- source_?: NIMFriendSource; /** < 好友来源 */
41
- alias_?: string; /** < 好友别名 */
42
- bits_?: number; /** < 扩展数据 */
43
- expand_?: string; /** < 扩展数据 */
44
- value_available_flag_?: number; /** < 好友数据有效性,结合好友Key使用 */
45
- server_expand_?: string; /** < 扩展数据 */
46
- create_timetag_?: number; /** < 好友创建时间戳(毫秒) */
47
- update_timetag_?: number; /** < 好友更新时间戳(毫秒) */
37
+ accid?: string; /** < 用户账号 */
38
+ flag?: NIMFriendFlag; /** < 主动的好友关系 */
39
+ beflag?: NIMFriendFlag; /** < 被动的好友关系 */
40
+ source?: NIMFriendSource; /** < 好友来源 */
41
+ alias?: string; /** < 好友别名 */
42
+ bits?: number; /** < 扩展数据 */
43
+ ex?: string; /** < 扩展数据 */
44
+ server_ex?: string; /** < 扩展数据 */
45
+ create_timetag?: number; /** < 好友创建时间戳(毫秒) */
46
+ update_timetag?: number; /** < 好友更新时间戳(毫秒) */
48
47
  }
49
48
  /** @brief 云信好友变更事件 */
50
49
  export interface FriendChangeEvent {
@@ -1,5 +1,5 @@
1
1
  import { NIMResCode } from './client_def';
2
- import { IMMessage, NIMMessageFeature, NIMMessageType } from './msglog_def';
2
+ import { IMMessage, NIMMessageFeature, NIMMessageType, MessageSetting } from './msglog_def';
3
3
  import { NIMSessionType } from './session_def';
4
4
  export interface SendMessageArc {
5
5
  talk_id_?: string; /**< 会话ID */
@@ -31,6 +31,50 @@ export interface RecallMsgNotify {
31
31
  attach_?: string; /**< v8.2.0 透传的附件信息 */
32
32
  callback_ext_?: string; /**< v8.2.0 第三方回调返回的字定义字段 */
33
33
  }
34
+ export interface IMFile {
35
+ md5_?: string;
36
+ size_?: number;
37
+ url_?: string;
38
+ display_name_?: string;
39
+ file_extension_?: string;
40
+ msg_attachment_tag_?: string;
41
+ }
42
+ export interface IMImage {
43
+ md5?: string;
44
+ size?: number;
45
+ url_?: string;
46
+ name?: string;
47
+ ext?: string;
48
+ upload_tag?: string;
49
+ w?: number;
50
+ h?: number;
51
+ }
52
+ export interface IMAudio {
53
+ md5?: string;
54
+ size?: number;
55
+ url_?: string;
56
+ name?: string;
57
+ ext?: string;
58
+ upload_tag?: string;
59
+ dur?: number;
60
+ }
61
+ export interface IMVideo {
62
+ md5?: string;
63
+ size?: number;
64
+ url_?: string;
65
+ name?: string;
66
+ ext?: string;
67
+ upload_tag?: string;
68
+ w?: number;
69
+ h?: number;
70
+ dur?: number;
71
+ }
72
+ export interface IMLocation {
73
+ title?: string;
74
+ lat?: number;
75
+ lng?: number;
76
+ }
77
+ export type FileUpPrgCallback = (uplaodedSize: number, totalSize: number) => void;
34
78
  export type SendMsgAckCallback = (result: SendMessageArc) => void;
35
79
  export type ReceiveMsgCallback = (result: IMMessage) => void;
36
80
  export type ReceiveMsgsCallback = (result: Array<IMMessage>) => void;
@@ -41,11 +85,12 @@ export type TeamNotificationFilterCallback = (result: IMMessage) => boolean;
41
85
  export type MessageFilterCallback = (result: IMMessage) => boolean;
42
86
  export interface NIMTalkAPI {
43
87
  InitEventHandlers(): void;
44
- SendMsg(msg: IMMessage, jsonExtension: string): void;
88
+ SendMsg(msg: IMMessage, jsonExtension: string, progressCb: FileUpPrgCallback): void;
45
89
  StopSendMsg(clientMsgId: string, type: NIMMessageType, jsonExtension: string): void;
46
90
  RecallMsg(msg: IMMessage, notify_msg: string, cb: RecallMsgsCallback | null, apnstext: string, pushpayloadconst: string, jsonExtension: string): void;
47
91
  GetAttachmentPathFromMsg(msg: IMMessage): string;
48
92
  ReplyMessage(msg: IMMessage, json_reply_msg: string): void;
49
93
  RegMessageFilter(cb: MessageFilterCallback | null, jsonExtension: string): void;
50
94
  RegTeamNotificationFilter(cb: TeamNotificationFilterCallback | null, jsonExtension: string): void;
95
+ CreateTextMessage(receiver_id: string, session_type: NIMSessionType, client_msg_id: string, content: string, msg_setting: MessageSetting, timetag: number, sub_type: number): string;
51
96
  }
@@ -23,17 +23,17 @@ export interface BlackMuteListInfo {
23
23
  update_timetag_?: number; /**< 档案更新时间(毫秒) */
24
24
  }
25
25
  export interface UserNameCard {
26
- accid_?: string; /**< 用户ID */
27
- nickname_?: string; /**< 用户昵称 */
28
- icon_url_?: string; /**< 用户头像下载地址 */
29
- signature_?: string; /**< 用户签名 */
30
- gender_?: number; /**< 用户性别 */
31
- email_?: string; /**< 用户邮箱 */
32
- birth_?: string; /**< 用户生日 */
33
- mobile_?: string; /**< 用户电话 */
34
- expand_?: string; /**< 用户扩展数据 */
35
- create_timetag_?: number; /**< 用户档案创建时间戳(毫秒) */
36
- update_timetag_?: number; /**< 用户档案更新时间戳(毫秒) */
26
+ accid?: string; /**< 用户ID */
27
+ name?: string; /**< 用户昵称 */
28
+ icon?: string; /**< 用户头像下载地址 */
29
+ sign?: string; /**< 用户签名 */
30
+ gender?: number; /**< 用户性别 */
31
+ email?: string; /**< 用户邮箱 */
32
+ birth?: string; /**< 用户生日 */
33
+ mobile?: string; /**< 用户电话 */
34
+ ex?: string; /**< 用户扩展数据 */
35
+ create_timetag?: number; /**< 用户档案创建时间戳(毫秒) */
36
+ update_timetag?: number; /**< 用户档案更新时间戳(毫秒) */
37
37
  }
38
38
  export interface SpecialRelationshipChangeEvent {
39
39
  type_?: NIMUserSpecialRelationshipChangeType; /**< 黑名单/静音名单更新事件类型 */