rclnodejs 0.32.3 → 0.32.5
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/README.md +1 -1
- package/binding.gyp +31 -4
- package/lib/action/uuid.js +2 -2
- package/package.json +7 -8
- package/rosidl_gen/idl_generator.js +26 -33
- package/scripts/npmjs-readme.md +1 -1
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@ npm i rclnodejs@x.y.z
|
|
|
45
45
|
|
|
46
46
|
| RCLNODEJS Version | Compatible ROS 2 LTS |
|
|
47
47
|
| :------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
48
|
-
| latest version (currently [v0.32.
|
|
48
|
+
| latest version (currently [v0.32.5](https://github.com/RobotWebTools/rclnodejs/tree/0.32.5)) | [Humble](https://github.com/RobotWebTools/rclnodejs/tree/humble-hawksbill)<br>[Jazzy](https://github.com/RobotWebTools/rclnodejs/tree/jazzy) |
|
|
49
49
|
|
|
50
50
|
## Documentation
|
|
51
51
|
|
package/binding.gyp
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
'runtime%': 'node',
|
|
13
13
|
'ros_lib_dir': "<!(node -p \"require('./scripts/config.js').getROSLibPath()\")",
|
|
14
14
|
'ros_include_root': "<!(node -p \"require('./scripts/config.js').getROSIncludeRootPath()\")",
|
|
15
|
+
'node_major_version': '<!(node -p \"process.versions.node.split(\'.\')[0]\")',
|
|
15
16
|
},
|
|
16
17
|
'targets': [
|
|
17
18
|
{
|
|
@@ -62,8 +63,21 @@
|
|
|
62
63
|
'defines': [
|
|
63
64
|
'OS_LINUX'
|
|
64
65
|
],
|
|
65
|
-
'
|
|
66
|
-
|
|
66
|
+
'conditions': [
|
|
67
|
+
[
|
|
68
|
+
'node_major_version >= 23', {
|
|
69
|
+
'cflags_cc': [
|
|
70
|
+
'-std=c++20'
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
[
|
|
75
|
+
'node_major_version < 23', {
|
|
76
|
+
'cflags_cc': [
|
|
77
|
+
'-std=c++17'
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
]
|
|
67
81
|
]
|
|
68
82
|
}
|
|
69
83
|
],
|
|
@@ -72,8 +86,21 @@
|
|
|
72
86
|
'defines': [
|
|
73
87
|
'OS_WINDOWS'
|
|
74
88
|
],
|
|
75
|
-
'
|
|
76
|
-
|
|
89
|
+
'conditions': [
|
|
90
|
+
[
|
|
91
|
+
'node_major_version >= 23', {
|
|
92
|
+
'cflags_cc': [
|
|
93
|
+
'-std=c++20'
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
[
|
|
98
|
+
'node_major_version < 23', {
|
|
99
|
+
'cflags_cc': [
|
|
100
|
+
'-std=c++17'
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
]
|
|
77
104
|
],
|
|
78
105
|
'include_dirs': [
|
|
79
106
|
'./src/third_party/dlfcn-win32/',
|
package/lib/action/uuid.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
'use strict';
|
|
16
16
|
|
|
17
17
|
const ActionInterfaces = require('./interfaces.js');
|
|
18
|
-
const {
|
|
18
|
+
const { randomUUID } = require('crypto');
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* @class - Represents a unique identifier used by actions.
|
|
@@ -37,7 +37,7 @@ class ActionUuid {
|
|
|
37
37
|
this._bytes = bytes;
|
|
38
38
|
} else {
|
|
39
39
|
// Generate random UUID.
|
|
40
|
-
let uuid =
|
|
40
|
+
let uuid = randomUUID().replace(/-/g, '');
|
|
41
41
|
this._bytes = Uint8Array.from(Buffer.from(uuid, 'hex'));
|
|
42
42
|
}
|
|
43
43
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rclnodejs",
|
|
3
|
-
"version": "0.32.
|
|
3
|
+
"version": "0.32.5",
|
|
4
4
|
"description": "ROS2.0 JavaScript client with Node.js",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "types/index.d.ts",
|
|
@@ -18,15 +18,15 @@
|
|
|
18
18
|
"rebuild": "npm run clean && node-gyp -j 16 rebuild",
|
|
19
19
|
"rebuild:dev": "npm run clean && node-gyp -j 16 rebuild --debug",
|
|
20
20
|
"generate-messages": "node scripts/generate_messages.js",
|
|
21
|
-
"generate-messages:dev": "node scripts/generate_messages.js --debug",
|
|
21
|
+
"generate-messages:dev": "node scripts/generate_messages.js --debug && npx --yes prettier --ignore-path --write generated/**/*.js",
|
|
22
22
|
"generate-tsd-messages": "node scripts/generate_tsd.js",
|
|
23
|
-
"clean": "node-gyp clean && rimraf ./generated",
|
|
23
|
+
"clean": "node-gyp clean && npx rimraf ./generated",
|
|
24
24
|
"install": "npm run rebuild",
|
|
25
25
|
"postinstall": "npm run generate-messages",
|
|
26
26
|
"docs": "cd docs && make",
|
|
27
|
-
"test": "nyc node --expose-gc ./scripts/run_test.js &&
|
|
27
|
+
"test": "nyc node --expose-gc ./scripts/run_test.js && tsd",
|
|
28
28
|
"lint": "eslint && node ./scripts/cpplint.js",
|
|
29
|
-
"format": "clang-format -i -style=file ./src/*.cpp ./src/*.hpp && prettier --write \"{lib,rosidl_gen,rostsd_gen,rosidl_parser,types,example,test,scripts,benchmark,rostsd_gen}/**/*.{js,md,ts}\" ./*.{js,md,ts}",
|
|
29
|
+
"format": "clang-format -i -style=file ./src/*.cpp ./src/*.hpp && npx --yes prettier --write \"{lib,rosidl_gen,rostsd_gen,rosidl_parser,types,example,test,scripts,benchmark,rostsd_gen}/**/*.{js,md,ts}\" ./*.{js,md,ts}",
|
|
30
30
|
"prepare": "husky",
|
|
31
31
|
"coverage": "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js"
|
|
32
32
|
},
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
"lint-staged": "^15.2.10",
|
|
63
63
|
"mocha": "^11.0.2",
|
|
64
64
|
"nyc": "^17.1.0",
|
|
65
|
+
"rimraf": "^6.0.1",
|
|
65
66
|
"sinon": "^19.0.2",
|
|
66
67
|
"tree-kill": "^1.2.2",
|
|
67
68
|
"tsd": "^0.31.2",
|
|
@@ -79,9 +80,7 @@
|
|
|
79
80
|
"is-close": "^1.3.3",
|
|
80
81
|
"json-bigint": "^1.0.0",
|
|
81
82
|
"nan": "^2.22.0",
|
|
82
|
-
"
|
|
83
|
-
"rimraf": "^6.0.1",
|
|
84
|
-
"uuid": "^11.0.3",
|
|
83
|
+
"terser": "^5.39.0",
|
|
85
84
|
"walk": "^2.3.15"
|
|
86
85
|
},
|
|
87
86
|
"husky": {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
'use strict';
|
|
16
16
|
|
|
17
17
|
const dot = require('dot');
|
|
18
|
-
const
|
|
18
|
+
const { minify } = require('terser');
|
|
19
19
|
const fse = require('fs-extra');
|
|
20
20
|
const path = require('path');
|
|
21
21
|
const parser = require('../rosidl_parser/rosidl_parser.js');
|
|
@@ -29,10 +29,6 @@ const dots = dot.process({
|
|
|
29
29
|
path: path.join(__dirname, '../rosidl_gen/templates'),
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
function removeEmptyLines(str) {
|
|
33
|
-
return str.replace(/^\s*\n/gm, '');
|
|
34
|
-
}
|
|
35
|
-
|
|
36
32
|
/**
|
|
37
33
|
* Output generated code to disk. Do not overwrite
|
|
38
34
|
* an existing file. If file already exists do nothing.
|
|
@@ -41,11 +37,18 @@ function removeEmptyLines(str) {
|
|
|
41
37
|
* @param {string} code
|
|
42
38
|
*/
|
|
43
39
|
async function writeGeneratedCode(dir, fileName, code) {
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
let result = null;
|
|
41
|
+
if (!isDebug && fileName.endsWith('.js')) {
|
|
42
|
+
try {
|
|
43
|
+
result = await minify(code);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
console.error(`Error minifying ${fileName}:`, error);
|
|
46
|
+
result = null;
|
|
47
|
+
}
|
|
46
48
|
}
|
|
49
|
+
|
|
47
50
|
await fse.mkdirs(dir);
|
|
48
|
-
await fse.writeFile(path.join(dir, fileName), code);
|
|
51
|
+
await fse.writeFile(path.join(dir, fileName), result ? result.code : code);
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
async function generateServiceJSStruct(
|
|
@@ -61,9 +64,7 @@ async function generateServiceJSStruct(
|
|
|
61
64
|
'__' +
|
|
62
65
|
serviceInfo.interfaceName +
|
|
63
66
|
'.js';
|
|
64
|
-
const generatedSrvCode =
|
|
65
|
-
dots.service({ serviceInfo: serviceInfo })
|
|
66
|
-
);
|
|
67
|
+
const generatedSrvCode = dots.service({ serviceInfo: serviceInfo });
|
|
67
68
|
|
|
68
69
|
// We are going to only generate the service JavaScript file if it meets one
|
|
69
70
|
// of the followings:
|
|
@@ -84,9 +85,7 @@ async function generateServiceJSStruct(
|
|
|
84
85
|
|
|
85
86
|
async function generateServiceEventMsg(serviceInfo, dir) {
|
|
86
87
|
const fileName = serviceInfo.interfaceName + '.msg';
|
|
87
|
-
const generatedEvent =
|
|
88
|
-
dots.service_event({ serviceInfo: serviceInfo })
|
|
89
|
-
);
|
|
88
|
+
const generatedEvent = dots.service_event({ serviceInfo: serviceInfo });
|
|
90
89
|
|
|
91
90
|
return writeGeneratedCode(dir, fileName, generatedEvent).then(() => {
|
|
92
91
|
serviceInfo.interfaceName += '_Event';
|
|
@@ -119,14 +118,12 @@ async function generateServiceEventJSStruct(msgInfo, dir) {
|
|
|
119
118
|
// const AddTwoInts_RequestWrapper = require('../../generated/example_interfaces/example_interfaces__srv__AddTwoInts_Request.js');
|
|
120
119
|
// const AddTwoInts_ResponseWrapper = require('../../generated/example_interfaces/example_interfaces__srv__AddTwoInts_Response.js');
|
|
121
120
|
msgInfo.isServiceEvent = true;
|
|
122
|
-
const generatedCode =
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
})
|
|
129
|
-
);
|
|
121
|
+
const generatedCode = dots.message({
|
|
122
|
+
messageInfo: msgInfo,
|
|
123
|
+
spec: spec,
|
|
124
|
+
json: JSON.stringify(spec, null, ' '),
|
|
125
|
+
isDebug: isDebug,
|
|
126
|
+
});
|
|
130
127
|
|
|
131
128
|
return writeGeneratedCode(dir, eventFileName, generatedCode);
|
|
132
129
|
}
|
|
@@ -149,14 +146,12 @@ function generateMessageJSStructFromSpec(messageInfo, dir, spec) {
|
|
|
149
146
|
spec.msgName +
|
|
150
147
|
'.js';
|
|
151
148
|
|
|
152
|
-
const generatedCode =
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
})
|
|
159
|
-
);
|
|
149
|
+
const generatedCode = dots.message({
|
|
150
|
+
messageInfo: messageInfo,
|
|
151
|
+
spec: spec,
|
|
152
|
+
json: JSON.stringify(spec, null, ' '),
|
|
153
|
+
isDebug: isDebug,
|
|
154
|
+
});
|
|
160
155
|
return writeGeneratedCode(dir, fileName, generatedCode);
|
|
161
156
|
}
|
|
162
157
|
|
|
@@ -291,9 +286,7 @@ async function generateActionJSStruct(actionInfo, dir) {
|
|
|
291
286
|
'__' +
|
|
292
287
|
actionInfo.interfaceName +
|
|
293
288
|
'.js';
|
|
294
|
-
const generatedCode =
|
|
295
|
-
dots.action({ actionInfo: actionInfo })
|
|
296
|
-
);
|
|
289
|
+
const generatedCode = dots.action({ actionInfo: actionInfo });
|
|
297
290
|
dir = path.join(dir, actionInfo.pkgName);
|
|
298
291
|
const action = writeGeneratedCode(dir, fileName, generatedCode);
|
|
299
292
|
|
package/scripts/npmjs-readme.md
CHANGED
|
@@ -45,7 +45,7 @@ npm i rclnodejs@x.y.z
|
|
|
45
45
|
|
|
46
46
|
| RCLNODEJS Version | Compatible ROS 2 LTS |
|
|
47
47
|
| :------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
48
|
-
| latest version (currently [v0.32.
|
|
48
|
+
| latest version (currently [v0.32.5](https://github.com/RobotWebTools/rclnodejs/tree/0.32.5)) | [Humble](https://github.com/RobotWebTools/rclnodejs/tree/humble-hawksbill)<br>[Jazzy](https://github.com/RobotWebTools/rclnodejs/tree/jazzy) |
|
|
49
49
|
|
|
50
50
|
## Documentation
|
|
51
51
|
|