Source: lib/node_options.js

  1. //
  2. // Licensed under the Apache License, Version 2.0 (the "License");
  3. // you may not use this file except in compliance with the License.
  4. // You may obtain a copy of the License at
  5. //
  6. // http://www.apache.org/licenses/LICENSE-2.0
  7. //
  8. // Unless required by applicable law or agreed to in writing, software
  9. // distributed under the License is distributed on an "AS IS" BASIS,
  10. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  11. // See the License for the specific language governing permissions and
  12. // limitations under the License.
  13. 'use strict';
  14. const { Parameter } = require('./parameter.js');
  15. /**
  16. * NodeOptions specify configuration choices during the
  17. * node instantiation process.
  18. * @class
  19. */
  20. class NodeOptions {
  21. /**
  22. * Create a new instance with default property values.
  23. * @constructor
  24. */
  25. constructor() {
  26. this._startParameterServices = true;
  27. this._parameterOverrides = [];
  28. this._automaticallyDeclareParametersFromOverrides = false;
  29. }
  30. /**
  31. * Get the startParameterServices option.
  32. * Default value = true;
  33. * @returns {boolean} -
  34. */
  35. get startParameterServices() {
  36. return this._startParameterServices;
  37. }
  38. /**
  39. * Set startParameterServices.
  40. * @param {boolean} startFlag - True indicates for a node to start it's parameter_service.
  41. */
  42. set startParameterServices(startFlag) {
  43. this._startParameterServices = startFlag;
  44. }
  45. /**
  46. * Get the parameterOverrides.
  47. * @return {Parameter[]} - An array of Parameters that serve as overrides for a node's default
  48. * parameters. Default = empty array [].
  49. */
  50. get parameterOverrides() {
  51. return this._parameterOverrides;
  52. }
  53. /**
  54. * Set the Parameters that will serve to override a node's default parameter settings.
  55. * Setting to null, reinitializes the parameterOverrides to an empty array.
  56. * @param {Parameter|Parameter[]} parameters - A single parameter or parameter[].
  57. * Default is an empty array.
  58. */
  59. set parameterOverrides(parameters = []) {
  60. let povalue = parameters;
  61. if (!povalue) {
  62. povalue = [];
  63. } else if (povalue instanceof Parameter) {
  64. // a single parameter
  65. povalue = [povalue];
  66. } else if (!Array.isArray(parameters)) {
  67. throw TypeError('Expected Parameter[]');
  68. }
  69. this._parameterOverrides = povalue;
  70. }
  71. /**
  72. * Get the automaticallyDeclareParametersFromOverrides.
  73. *
  74. * @returns {boolean} - True indicates that a node shold declare declare parameters from
  75. * it's parameter-overrides
  76. */
  77. get automaticallyDeclareParametersFromOverrides() {
  78. return this._automaticallyDeclareParametersFromOverrides;
  79. }
  80. /**
  81. * Set automaticallyDeclareParametersFromOverrides.
  82. *
  83. * @param {boolean} declareParamsFlag - When true, a node will declare parameters from all
  84. * parameter-overrides.
  85. */
  86. set automaticallyDeclareParametersFromOverrides(declareParamsFlag) {
  87. this._automaticallyDeclareParametersFromOverrides = declareParamsFlag;
  88. }
  89. /**
  90. * Return an instance configured with default options.
  91. * @returns {NodeOptions} - An instance with default values.
  92. */
  93. static get defaultOptions() {
  94. return new NodeOptions();
  95. }
  96. }
  97. module.exports = NodeOptions;