@@ -97,7 +97,30 @@ class Node extends rclnodejs.ShadowNode {
9797 ) ;
9898 }
9999
100+ static _normalizeOptions ( options ) {
101+ if ( options instanceof NodeOptions ) {
102+ return options ;
103+ }
104+ const defaults = NodeOptions . defaultOptions ;
105+ return {
106+ startParameterServices :
107+ options . startParameterServices ?? defaults . startParameterServices ,
108+ parameterOverrides :
109+ options . parameterOverrides ?? defaults . parameterOverrides ,
110+ automaticallyDeclareParametersFromOverrides :
111+ options . automaticallyDeclareParametersFromOverrides ??
112+ defaults . automaticallyDeclareParametersFromOverrides ,
113+ startTypeDescriptionService :
114+ options . startTypeDescriptionService ??
115+ defaults . startTypeDescriptionService ,
116+ enableRosout : options . enableRosout ?? defaults . enableRosout ,
117+ rosoutQos : options . rosoutQos ?? defaults . rosoutQos ,
118+ } ;
119+ }
120+
100121 _init ( name , namespace , options , context , args , useGlobalArguments ) {
122+ options = Node . _normalizeOptions ( options ) ;
123+
101124 this . handle = rclnodejs . createNode (
102125 name ,
103126 namespace ,
@@ -149,9 +172,8 @@ class Node extends rclnodejs.ShadowNode {
149172 this . _parameterOverrides = this . _getNativeParameterOverrides ( ) ;
150173
151174 // override cli parameterOverrides with those specified in options
152- const parameterOverrides = options . parameterOverrides || [ ] ;
153- if ( parameterOverrides . length > 0 ) {
154- for ( const parameter of parameterOverrides ) {
175+ if ( options . parameterOverrides . length > 0 ) {
176+ for ( const parameter of options . parameterOverrides ) {
155177 if ( ! ( parameter instanceof Parameter ) ) {
156178 throw new TypeValidationError (
157179 'parameterOverride' ,
0 commit comments