isy-nodejs 1.0.2-alpha.4 → 1.0.2-alpha.6

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.
Files changed (120) hide show
  1. package/dist/esm/CodeGeneration/CodeFactory.js +245 -0
  2. package/dist/esm/CodeGeneration/CodeFactory.js.map +1 -0
  3. package/dist/esm/CodeGeneration/NodeClassFactory.js +155 -145
  4. package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
  5. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js +1 -1
  6. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js.map +1 -1
  7. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js +1 -1
  8. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js.map +1 -1
  9. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js +2 -2
  10. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js.map +1 -1
  11. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js +1 -1
  12. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js.map +1 -1
  13. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js +1 -1
  14. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js.map +1 -1
  15. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js +4 -4
  16. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js.map +1 -1
  17. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js +5 -5
  18. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js.map +1 -1
  19. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js +6 -6
  20. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js.map +1 -1
  21. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js +5 -5
  22. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js.map +1 -1
  23. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js +1 -1
  24. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js.map +1 -1
  25. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js +1 -1
  26. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js.map +1 -1
  27. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js +2 -2
  28. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js.map +1 -1
  29. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js +2 -2
  30. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js.map +1 -1
  31. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js +9 -9
  32. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js.map +1 -1
  33. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js +7 -7
  34. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js.map +1 -1
  35. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js +1 -1
  36. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js.map +1 -1
  37. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js +1 -1
  38. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js.map +1 -1
  39. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js +5 -5
  40. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js.map +1 -1
  41. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js +3 -3
  42. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js.map +1 -1
  43. package/dist/esm/Devices/Insteon/Generated/Pir2844.js +2 -2
  44. package/dist/esm/Devices/Insteon/Generated/Pir2844.js.map +1 -1
  45. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js +2 -2
  46. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js.map +1 -1
  47. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js +2 -2
  48. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js.map +1 -1
  49. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js +2 -2
  50. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js.map +1 -1
  51. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +3 -3
  52. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +1 -1
  53. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js +4 -4
  54. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js.map +1 -1
  55. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js +2 -2
  56. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js.map +1 -1
  57. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js +2 -2
  58. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js.map +1 -1
  59. package/dist/esm/Devices/Insteon/Generated/Siren.js +2 -2
  60. package/dist/esm/Devices/Insteon/Generated/Siren.js.map +1 -1
  61. package/dist/esm/Devices/Insteon/Generated/TempLinc.js +5 -5
  62. package/dist/esm/Devices/Insteon/Generated/TempLinc.js.map +1 -1
  63. package/dist/esm/Devices/Insteon/Generated/Thermostat.js +5 -5
  64. package/dist/esm/Devices/Insteon/Generated/Thermostat.js.map +1 -1
  65. package/dist/esm/Devices/Lutron/Generated/LoadShed.js +1 -1
  66. package/dist/esm/Devices/Lutron/Generated/LoadShed.js.map +1 -1
  67. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js +1 -1
  68. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js.map +1 -1
  69. package/dist/esm/ISY.js +1 -1
  70. package/dist/esm/ISY.js.map +1 -1
  71. package/dist/esm/Matter/Mappings/Insteon.js +1 -0
  72. package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
  73. package/dist/esm/types/CodeGeneration/CodeFactory.d.ts +75 -0
  74. package/dist/esm/types/CodeGeneration/CodeFactory.d.ts.map +1 -0
  75. package/dist/esm/types/CodeGeneration/EnumFactory.d.ts +1 -1
  76. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +19 -3
  77. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
  78. package/dist/esm/types/Model/EnumDefinition.d.ts +1 -1
  79. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  80. package/package.json +2 -2
  81. package/src/CodeGeneration/NodeClassFactory.ts +264 -240
  82. package/src/Devices/Insteon/Generated/AlertModuleArmed.ts +1 -1
  83. package/src/Devices/Insteon/Generated/AlertModuleSiren.ts +1 -1
  84. package/src/Devices/Insteon/Generated/BallastRelayLampSwitch.ts +2 -2
  85. package/src/Devices/Insteon/Generated/BinaryAlarm.ts +1 -1
  86. package/src/Devices/Insteon/Generated/BinaryControl.ts +1 -1
  87. package/src/Devices/Insteon/Generated/DimmerLamp.ts +4 -4
  88. package/src/Devices/Insteon/Generated/DimmerLampSwitch.ts +5 -5
  89. package/src/Devices/Insteon/Generated/DimmerLampSwitchLed.ts +6 -6
  90. package/src/Devices/Insteon/Generated/DimmerMotorSwitch.ts +5 -5
  91. package/src/Devices/Insteon/Generated/DimmerSwitch.ts +1 -1
  92. package/src/Devices/Insteon/Generated/Ezio2x4Output.ts +1 -1
  93. package/src/Devices/Insteon/Generated/EzrainOutput.ts +9 -9
  94. package/src/Devices/Insteon/Generated/FanLincMotor.ts +2 -2
  95. package/src/Devices/Insteon/Generated/I3KeypadFlags.ts +9 -9
  96. package/src/Devices/Insteon/Generated/I3PaddleFlags.ts +7 -7
  97. package/src/Devices/Insteon/Generated/IrLincTx.ts +1 -1
  98. package/src/Devices/Insteon/Generated/KeypadButton.ts +1 -1
  99. package/src/Devices/Insteon/Generated/KeypadDimmer.ts +5 -5
  100. package/src/Devices/Insteon/Generated/KeypadRelay.ts +3 -3
  101. package/src/Devices/Insteon/Generated/Pir2844.ts +2 -2
  102. package/src/Devices/Insteon/Generated/Pir2844OnOff.ts +2 -2
  103. package/src/Devices/Insteon/Generated/Pir2844c.ts +2 -2
  104. package/src/Devices/Insteon/Generated/RelayLamp.ts +2 -2
  105. package/src/Devices/Insteon/Generated/RelayLampSwitch.ts +3 -3
  106. package/src/Devices/Insteon/Generated/RelayLampSwitchLed.ts +4 -4
  107. package/src/Devices/Insteon/Generated/RelaySwitch.ts +2 -2
  108. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.ts +2 -2
  109. package/src/Devices/Insteon/Generated/Siren.ts +2 -2
  110. package/src/Devices/Insteon/Generated/TempLinc.ts +5 -5
  111. package/src/Devices/Insteon/Generated/Thermostat.ts +5 -5
  112. package/src/Devices/Lutron/Generated/LoadShed.ts +1 -1
  113. package/src/Devices/NCD/Generated/Relay.ts +1 -1
  114. package/src/Devices/Scene/Generated/Scene.ts +7 -7
  115. package/src/Devices/ZWave/Generated/DimmerSwitch.ts +1 -1
  116. package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +1 -1
  117. package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +8 -8
  118. package/src/ISY.ts +1 -1
  119. package/src/Matter/Mappings/Insteon.ts +4 -12
  120. /package/src/CodeGeneration/{NodeFactory.ts → CodeFactory.ts} +0 -0
@@ -6,7 +6,7 @@ import { UnitOfMeasure } from '../Definitions/Global/UOM.js';
6
6
  import { Family } from '../Definitions/index.js';
7
7
  import { CommandDefinition, DataTypeDefinition, DriverDefinition, NodeClassDefinition, ParameterDefinition } from '../Model/ClassDefinition.js';
8
8
  import { EnumDefinitionMap } from '../Model/EnumDefinition.js';
9
- import { CodeFactory } from './NodeFactory.js';
9
+ import { CodeFactory } from './CodeFactory.js';
10
10
 
11
11
  // #region Type aliases (1)
12
12
 
@@ -69,7 +69,7 @@ export class NodeClassFactory extends CodeFactory {
69
69
  });
70
70
  }
71
71
 
72
- N;
72
+
73
73
 
74
74
  public createNodeClass<T extends Family>(nodeClassDef: NodeClassDefinition<T>) {
75
75
  let path = `${NodeClassFactory.basePath}/${Family[nodeClassDef.family]}/Generated/${nodeClassDef.name}.ts`;
@@ -95,7 +95,7 @@ export class NodeClassFactory extends CodeFactory {
95
95
  factory.createStringLiteral('../../../Model/NodeInfo.js'),
96
96
  undefined
97
97
  ),
98
- this.createImportDeclaration('../../../ISY.js', ['ISY']),
98
+ NodeClassFactory.instance.createImportDeclaration('../../../ISY.js', ['ISY']),
99
99
  factory.createImportDeclaration(
100
100
  undefined,
101
101
  factory.createImportClause(true, undefined, factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier('ISYNode'))])),
@@ -203,16 +203,16 @@ export class NodeClassFactory extends CodeFactory {
203
203
  undefined,
204
204
  factory.createStringLiteral(nodeClassDef.id)
205
205
  ),
206
- this.createPropertyDeclaration(
206
+ NodeClassFactory.instance.createPropertyDeclaration(
207
207
  'implements',
208
208
  factory.createArrayLiteralExpression(
209
209
  nodeClassDef.implementedBy ?
210
- [this.createStringLiteral(nodeClassDef.id)].concat(
210
+ [NodeClassFactory.instance.createStringLiteral(nodeClassDef.id)].concat(
211
211
  !nodeClassDef.implements || nodeClassDef.implements.length == 0 ? [] : nodeClassDef.implements?.map((p) => factory.createStringLiteral(p))
212
212
  )
213
- : [this.createStringLiteral(nodeClassDef.id)]
213
+ : [NodeClassFactory.instance.createStringLiteral(nodeClassDef.id)]
214
214
  ),
215
- this.createModifiers(ts.ModifierFlags.Static | ts.ModifierFlags.Override)
215
+ NodeClassFactory.instance.createModifiers(ts.ModifierFlags.Static | ts.ModifierFlags.Override)
216
216
  ),
217
217
  factory.createPropertyDeclaration(
218
218
  [factory.createToken(ts.SyntaxKind.DeclareKeyword), factory.createToken(ts.SyntaxKind.ReadonlyKeyword)],
@@ -220,11 +220,11 @@ export class NodeClassFactory extends CodeFactory {
220
220
  undefined,
221
221
  nodeClassDef.equivalents ?
222
222
  NodeClassFactory.instance.createUnionTypeNode(
223
- ...[this.createLiteralTypeNode(nodeClassDef.id)].concat(
223
+ ...[NodeClassFactory.instance.createLiteralTypeNode(nodeClassDef.id)].concat(
224
224
  !nodeClassDef.equivalents || nodeClassDef.equivalents.length == 0 ? [] : nodeClassDef.equivalents?.map((p) => factory.createLiteralTypeNode(factory.createStringLiteral(p)))
225
225
  )
226
226
  )
227
- : this.createLiteralTypeNode(nodeClassDef.id),
227
+ : NodeClassFactory.instance.createLiteralTypeNode(nodeClassDef.id),
228
228
  undefined
229
229
  ),
230
230
  factory.createConstructorDeclaration(
@@ -250,13 +250,13 @@ export class NodeClassFactory extends CodeFactory {
250
250
  factory.createBlock(
251
251
  [
252
252
  factory.createExpressionStatement(factory.createCallExpression(factory.createSuper(), undefined, [factory.createIdentifier('isy'), factory.createIdentifier('nodeInfo')])),
253
- ...Object.values(nodeClassDef.drivers).map(createDriverInitializationStatement)
253
+ ...Object.values(nodeClassDef.drivers).map(p => NodeClassFactory.instance.createDriverInitializationStatement(p))
254
254
  ],
255
255
  true
256
256
  )
257
257
  ),
258
- ...Object.values(nodeClassDef.commands).map(createCommandMethodDeclaration),
259
- ...Object.values(nodeClassDef.drivers).map(createDriverGetDeclaration)
258
+ ...Object.values(nodeClassDef.commands).map(p => NodeClassFactory.instance.createCommandMethodDeclaration(p)),
259
+ ...Object.values(nodeClassDef.drivers).map(p => NodeClassFactory.instance.createDriverGetDeclaration(p))
260
260
  ]
261
261
  ),
262
262
  factory.createExpressionStatement(
@@ -286,7 +286,7 @@ export class NodeClassFactory extends CodeFactory {
286
286
  [
287
287
  factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [
288
288
  factory.createExpressionWithTypeArguments(factory.createIdentifier('Omit'), [
289
- this.createTypeReferenceNode('InstanceType', this.factory.createTypeQueryNode(factory.createIdentifier(`${nodeClassDef.name}Node`))),
289
+ NodeClassFactory.instance.createTypeReferenceNode('InstanceType', NodeClassFactory.instance.factory.createTypeQueryNode(factory.createIdentifier(`${nodeClassDef.name}Node`))),
290
290
  factory.createTypeOperatorNode(
291
291
  ts.SyntaxKind.KeyOfKeyword,
292
292
  factory.createTypeReferenceNode(factory.createIdentifier('ISYDeviceNode'), [
@@ -305,12 +305,12 @@ export class NodeClassFactory extends CodeFactory {
305
305
  factory.createIdentifier('nodeDefId'),
306
306
  undefined,
307
307
  nodeClassDef.equivalents ?
308
- this.createUnionTypeNode(
309
- ...[this.createLiteralTypeNode(nodeClassDef.id)].concat(
308
+ NodeClassFactory.instance.createUnionTypeNode(
309
+ ...[NodeClassFactory.instance.createLiteralTypeNode(nodeClassDef.id)].concat(
310
310
  !nodeClassDef.equivalents || nodeClassDef.equivalents.length == 0 ? [] : nodeClassDef.equivalents?.map((p) => factory.createLiteralTypeNode(factory.createStringLiteral(p)))
311
311
  )
312
312
  )
313
- : this.createLiteralTypeNode(nodeClassDef.id)
313
+ : NodeClassFactory.instance.createLiteralTypeNode(nodeClassDef.id)
314
314
  )
315
315
  ]
316
316
  ),
@@ -336,16 +336,16 @@ export class NodeClassFactory extends CodeFactory {
336
336
  )
337
337
  ],
338
338
  factory.createTypePredicateNode(undefined, factory.createIdentifier('node'), factory.createTypeReferenceNode(factory.createIdentifier(`${nodeClassDef.name}Node`), undefined)),
339
- this.createBlock(
340
- this.createReturnStatement(
339
+ NodeClassFactory.instance.createBlock(
340
+ NodeClassFactory.instance.createReturnStatement(
341
341
  factory.createCallExpression(
342
342
  factory.createPropertyAccessExpression(
343
343
  factory.createArrayLiteralExpression(
344
344
  nodeClassDef.equivalents ?
345
- [this.createStringLiteral(nodeClassDef.id)].concat(
345
+ [NodeClassFactory.instance.createStringLiteral(nodeClassDef.id)].concat(
346
346
  !nodeClassDef.equivalents || nodeClassDef.equivalents.length == 0 ? [] : nodeClassDef.equivalents?.map((p) => factory.createStringLiteral(p))
347
347
  )
348
- : [this.createStringLiteral(nodeClassDef.id)]
348
+ : [NodeClassFactory.instance.createStringLiteral(nodeClassDef.id)]
349
349
  ),
350
350
  'includes'
351
351
  ),
@@ -366,17 +366,18 @@ export class NodeClassFactory extends CodeFactory {
366
366
  undefined,
367
367
  factory.createIdentifier('node'),
368
368
  undefined,
369
- factory.createTypeReferenceNode(factory.createIdentifier('ISYNode'), [
370
- factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),
371
- factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),
372
- factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),
373
- factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)
374
- ]),
369
+ NodeClassFactory.instance.createTypeReferenceNode(
370
+ 'ISYNode',
371
+ NodeClassFactory.instance.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),
372
+ NodeClassFactory.instance.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),
373
+ NodeClassFactory.instance.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),
374
+ NodeClassFactory.instance.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)
375
+ ),
375
376
  undefined
376
377
  )
377
378
  ],
378
379
  factory.createTypePredicateNode(undefined, factory.createIdentifier('node'), factory.createTypeReferenceNode(factory.createIdentifier(`${nodeClassDef.name}Node`), undefined)),
379
- this.createBlock(
380
+ NodeClassFactory.instance.createBlock(
380
381
  true,
381
382
 
382
383
  factory.createReturnStatement(
@@ -384,10 +385,10 @@ export class NodeClassFactory extends CodeFactory {
384
385
  factory.createPropertyAccessExpression(
385
386
  factory.createArrayLiteralExpression(
386
387
  nodeClassDef.implementedBy ?
387
- [this.createStringLiteral(nodeClassDef.id)].concat(
388
+ [NodeClassFactory.instance.createStringLiteral(nodeClassDef.id)].concat(
388
389
  !nodeClassDef.implementedBy || nodeClassDef.implementedBy.length == 0 ? [] : nodeClassDef.implementedBy?.map((p) => factory.createStringLiteral(p))
389
390
  )
390
- : [this.createStringLiteral(nodeClassDef.id)]
391
+ : [NodeClassFactory.instance.createStringLiteral(nodeClassDef.id)]
391
392
  ),
392
393
  'includes'
393
394
  ),
@@ -441,13 +442,13 @@ export class NodeClassFactory extends CodeFactory {
441
442
  [factory.createToken(ts.SyntaxKind.ExportKeyword)],
442
443
  factory.createIdentifier('Commands'),
443
444
  undefined,
444
- factory.createTypeLiteralNode([...Object.values(nodeClassDef.commands).map(createCommandSignature)])
445
+ factory.createTypeLiteralNode([...Object.values(nodeClassDef.commands).map(NodeClassFactory.instance.createCommandSignature)])
445
446
  ),
446
447
  factory.createTypeAliasDeclaration(
447
448
  [factory.createToken(ts.SyntaxKind.ExportKeyword)],
448
449
  factory.createIdentifier('Drivers'),
449
450
  undefined,
450
- factory.createTypeLiteralNode([...Object.values(nodeClassDef.drivers).map(createDriverSignature)])
451
+ factory.createTypeLiteralNode([...Object.values(nodeClassDef.drivers).map(NodeClassFactory.instance.createDriverSignature)])
451
452
  )
452
453
  ]),
453
454
  ts.NodeFlags.Namespace
@@ -494,163 +495,237 @@ export class NodeClassFactory extends CodeFactory {
494
495
  let modules = [];
495
496
  for (const family of NodeClassDefinition.Map.keys()) {
496
497
  var t = this.generateClassesForFamily(family);
497
- modules.push(buildClassIndex(family, t));
498
+ modules.push(NodeClassFactory.buildClassIndex(family, t));
498
499
  }
499
500
  return modules;
500
501
  }
501
502
 
502
503
  public static generateClassesForFamily<T extends Family>(family: T): GeneratedNodeClass<T>[] {
503
- return this.buildNodeClasses<T>(NodeClassDefinition.Map.get(family) as { [x: string]: NodeClassDefinition<T> });
504
+ return NodeClassFactory.buildNodeClasses<T>(NodeClassDefinition.Map.get(family) as { [x: string]: NodeClassDefinition<T> });
504
505
  }
505
506
 
506
- // #endregion Public Static Methods (4)
507
- }
507
+ // #region Functions (12)
508
508
 
509
- // #endregion Classes (1)
509
+ static buildClassIndex<T extends Family>(family: T, classes: GeneratedNodeClass<T>[]) {
510
+ return {
511
+ family,
512
+ path: `/${Family[family]}/Generated/index.ts`,
513
+ statements: [...classes.map((p) => factory.createExportDeclaration(undefined, false, undefined, factory.createStringLiteral(`./${p.name}.js`), undefined))]
514
+ };
515
+ }
510
516
 
511
- // #region Functions (12)
517
+ createCommandArguments(def: CommandDefinition)
518
+ {
519
+ let c = [
520
+ factory.createStringLiteral(def.id)];
521
+ let n = [];
522
+ let r = [];
512
523
 
513
- function buildClassIndex<T extends Family>(family: T, classes: GeneratedNodeClass<T>[]) {
514
- return {
515
- family,
516
- path: `/${Family[family]}/Generated/index.ts`,
517
- statements: [...classes.map((p) => factory.createExportDeclaration(undefined, false, undefined, factory.createStringLiteral(`./${p.name}.js`), undefined))]
518
- };
519
- }
524
+ if(def.parameters)
525
+ {
526
+ for(let p in def.parameters)
527
+ {
528
+ let p2 = def.parameters[p];
529
+ if(!p2?.id || p2.id == 'value')
530
+ {
531
+ n.push(factory.createIdentifier(p2.name ?? 'value'))
532
+ }
533
+ else
534
+ {
535
+ r.push(p2);
536
+ }
537
+ }
538
+ }
539
+ let fnl = [...c,...n,
520
540
 
521
- function createCommandMethodDeclaration(def: CommandDefinition) {
522
- return factory.createMethodDeclaration(
523
- [factory.createToken(ts.SyntaxKind.AsyncKeyword)],
524
- undefined,
525
- factory.createIdentifier(def.name),
526
- undefined,
527
- undefined,
528
-
529
- def.parameters ? Object.values(def.parameters).map(createParameterDeclarationSignature) : undefined,
530
- undefined,
531
- NodeClassFactory.instance.createBlock(
532
-
533
- factory.createReturnStatement(
534
- factory.createCallExpression(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier('sendCommand')), undefined, [
535
- factory.createStringLiteral(def.id),
536
- ...(def.parameters ?
537
- [
538
- factory.createObjectLiteralExpression(
539
- [...Object.values(def.parameters).map((p) => factory.createPropertyAssignment(factory.createIdentifier(p.id ?? 'value'), factory.createIdentifier(p.name ?? 'value')))],
540
- false
541
- )
542
- ]
543
- : [])
544
- ])
545
- )
546
541
 
547
- )
548
- );
549
- }
542
+ ...(r.length > 0 ? [factory.createObjectLiteralExpression(
543
+ r.map((q) => factory.createPropertyAssignment(factory.createIdentifier(q.id ?? 'value'), factory.createIdentifier(q.name ?? 'value'))),
544
+ false
545
+ )] : [])
550
546
 
551
- function createCommandParameterType(def: DataTypeDefinition, parent: ParameterDefinition): ts.TypeNode {
552
- if (def.enum) {
553
- {
554
- if (EnumDefinitionMap.has(parent.classDef.family)) {
555
- var enumDef = EnumDefinitionMap.get(parent.classDef.family)[def.indexId];
556
547
 
557
- // ?? EnumDefinitionMap[Family.Global]?[def.indexId]
558
- if (enumDef) {
559
- return factory.createTypeReferenceNode(factory.createQualifiedName(factory.createIdentifier(Family[parent.classDef.family]), factory.createIdentifier(enumDef.name)), undefined);
548
+ ];
549
+ return fnl.length > 0 ? fnl : undefined;
550
+ }
551
+
552
+ createCommandMethodDeclaration(def: CommandDefinition) {
553
+ return factory.createMethodDeclaration(
554
+ [factory.createToken(ts.SyntaxKind.AsyncKeyword)],
555
+ undefined,
556
+ factory.createIdentifier(def.name),
557
+ undefined,
558
+ undefined,
559
+
560
+ def.parameters ? Object.values(def.parameters).map(NodeClassFactory.instance.createParameterDeclarationSignature.bind(this)) : undefined,
561
+ undefined,
562
+ factory.createBlock(
563
+ [factory.createReturnStatement(
564
+ factory.createCallExpression(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier('sendCommand')), undefined,NodeClassFactory.instance.createCommandArguments(def))
565
+ )]
566
+ )
567
+ );
568
+ }
569
+
570
+ createCommandParameterType(def: DataTypeDefinition, parent: ParameterDefinition): ts.TypeNode {
571
+ if (def.enum) {
572
+ {
573
+ if (EnumDefinitionMap.has(parent.classDef.family)) {
574
+ var enumDef = EnumDefinitionMap.get(parent.classDef.family)[def.indexId];
575
+
576
+ // ?? EnumDefinitionMap[Family.Global]?[def.indexId]
577
+ if (enumDef) {
578
+ return factory.createTypeReferenceNode(factory.createQualifiedName(factory.createIdentifier(Family[parent.classDef.family]), factory.createIdentifier(enumDef.name)), undefined);
579
+ }
560
580
  }
561
- }
562
581
 
563
- if (def.values) {
564
- return NodeClassFactory.instance.createUnionTypeNode(...Object.keys(def.values).map((p) => factory.createLiteralTypeNode(factory.createNumericLiteral(p))));
565
- }
582
+ if (def.values) {
583
+ return NodeClassFactory.instance.createUnionTypeNode(...Object.keys(def.values).map((p) => factory.createLiteralTypeNode(factory.createNumericLiteral(p))));
584
+ }
566
585
 
567
- // return NodeClassFactory.instance.createUnionTypeNode(...
568
- // Object.values(def.values).map((p) => factory.createTypeReferenceNode(
569
- // factory.createQualifiedName(
570
- // factory.createIdentifier("UnitOfMeasure"),
571
- // factory.createIdentifier(UnitOfMeasure)
572
- // ),
573
- // undefined
574
- // )))
586
+ // return NodeClassFactory.instance.createUnionTypeNode(...
587
+ // Object.values(def.values).map((p) => factory.createTypeReferenceNode(
588
+ // factory.createQualifiedName(
589
+ // factory.createIdentifier("UnitOfMeasure"),
590
+ // factory.createIdentifier(UnitOfMeasure)
591
+ // ),
592
+ // undefined
593
+ // )))
594
+ }
575
595
  }
596
+ return factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
576
597
  }
577
- return factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
578
- }
579
598
 
580
- function createCommandSignature(def: CommandDefinition) {
581
- return factory.createPropertySignature(
582
- undefined,
583
- factory.createIdentifier(def.id),
584
- undefined,
585
- factory.createIntersectionTypeNode([
586
- factory.createParenthesizedType(
587
- factory.createFunctionTypeNode(
588
- undefined,
589
- def.parameters ? Object.values(def.parameters).map(createParameterSignature) : [],
599
+ createCommandSignature(def: CommandDefinition) {
600
+ const that = this;
601
+ return factory.createPropertySignature(
602
+ undefined,
603
+ factory.createIdentifier(def.id),
604
+ undefined,
605
+ factory.createIntersectionTypeNode([
606
+ factory.createParenthesizedType(
607
+ factory.createFunctionTypeNode(
608
+ undefined,
609
+ def.parameters ? Object.values(def.parameters).map(p => NodeClassFactory.instance.createParameterSignature(p)) : [],
590
610
 
591
- factory.createTypeReferenceNode(factory.createIdentifier('Promise'), [factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword)])
592
- )
593
- ),
594
- factory.createTypeLiteralNode([
595
- factory.createPropertySignature(undefined, factory.createIdentifier('label'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.label))),
596
- factory.createPropertySignature(undefined, factory.createIdentifier('name'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.name)))
611
+ factory.createTypeReferenceNode(factory.createIdentifier('Promise'), [factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword)])
612
+ )
613
+ ),
614
+ factory.createTypeLiteralNode([
615
+ factory.createPropertySignature(undefined, factory.createIdentifier('label'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.label))),
616
+ factory.createPropertySignature(undefined, factory.createIdentifier('name'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.name)))
617
+ ])
597
618
  ])
598
- ])
599
- );
600
- }
619
+ );
620
+ }
601
621
 
602
- function createDriverGetDeclaration(def: DriverDefinition) {
603
- return factory.createGetAccessorDeclaration(
604
- [factory.createToken(ts.SyntaxKind.PublicKeyword)],
605
- factory.createIdentifier(def.name),
606
- [],
607
- NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => createDriverPropertyReturnType(p, def))),
608
- factory.createBlock(
609
- [
610
- factory.createReturnStatement(
611
- factory.createPropertyAccessChain(
612
- factory.createPropertyAccessExpression(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier('drivers')), factory.createIdentifier(def.id)),
613
- factory.createToken(ts.SyntaxKind.QuestionDotToken),
614
- factory.createIdentifier('value')
622
+ createDriverGetDeclaration(def: DriverDefinition) {
623
+ return factory.createGetAccessorDeclaration(
624
+ [factory.createToken(ts.SyntaxKind.PublicKeyword)],
625
+ factory.createIdentifier(def.name),
626
+ [],
627
+ NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => NodeClassFactory.instance.createDriverPropertyReturnType(p, def))),
628
+ factory.createBlock(
629
+ [
630
+ factory.createReturnStatement(
631
+ factory.createPropertyAccessChain(
632
+ factory.createPropertyAccessExpression(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier('drivers')), factory.createIdentifier(def.id)),
633
+ factory.createToken(ts.SyntaxKind.QuestionDotToken),
634
+ factory.createIdentifier('value')
635
+ )
615
636
  )
616
- )
617
- ],
618
- true
619
- )
620
- );
621
- }
637
+ ],
638
+ true
639
+ )
640
+ );
641
+ }
642
+
643
+ createDriverInitializationStatement(def: DriverDefinition): ts.Statement {
644
+ return factory.createExpressionStatement(
645
+ factory.createBinaryExpression(
646
+ factory.createPropertyAccessExpression(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier('drivers')), factory.createIdentifier(def.id)),
647
+ factory.createToken(ts.SyntaxKind.EqualsToken),
648
+ factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Driver'), factory.createIdentifier('create')), undefined, [
649
+ factory.createStringLiteral(def.id),
650
+ factory.createThis(),
651
+ factory.createAsExpression(
652
+ factory.createPropertyAccessExpression(factory.createIdentifier('nodeInfo'), factory.createIdentifier('property')),
653
+ factory.createTypeReferenceNode(factory.createIdentifier('DriverState'), undefined)
654
+ ),
655
+ factory.createObjectLiteralExpression(
656
+ [
657
+ factory.createPropertyAssignment(
658
+ factory.createIdentifier('uom'),
659
+ factory.createPropertyAccessExpression(factory.createIdentifier('UnitOfMeasure'), factory.createIdentifier(UnitOfMeasure[parseInt(Object.keys(def.dataType)[0])] ?? 'Unknown'))
660
+ ),
661
+ factory.createPropertyAssignment(factory.createIdentifier('label'), factory.createStringLiteral(def.label)),
662
+ factory.createPropertyAssignment(factory.createIdentifier('name'), factory.createStringLiteral(def.name))
663
+ ],
664
+ false
665
+ )
666
+ ])
667
+ )
668
+ );
669
+ }
622
670
 
623
- function createDriverInitializationStatement(def: DriverDefinition): ts.Statement {
624
- return factory.createExpressionStatement(
625
- factory.createBinaryExpression(
626
- factory.createPropertyAccessExpression(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier('drivers')), factory.createIdentifier(def.id)),
627
- factory.createToken(ts.SyntaxKind.EqualsToken),
628
- factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Driver'), factory.createIdentifier('create')), undefined, [
629
- factory.createStringLiteral(def.id),
630
- factory.createThis(),
631
- factory.createAsExpression(
632
- factory.createPropertyAccessExpression(factory.createIdentifier('nodeInfo'), factory.createIdentifier('property')),
633
- factory.createTypeReferenceNode(factory.createIdentifier('DriverState'), undefined)
671
+ createDriverPropertyReturnType(def: DataTypeDefinition, parent: DriverDefinition): ts.TypeNode {
672
+ if (def.enum) {
673
+ {
674
+ if (EnumDefinitionMap.has(parent.classDef.family)) {
675
+ var enumDef = EnumDefinitionMap.get(parent.classDef.family)[def.indexId];
676
+
677
+ // ?? EnumDefinitionMap[Family.Global]?[def.indexId]
678
+ if (enumDef) {
679
+ return factory.createTypeReferenceNode(factory.createQualifiedName(factory.createIdentifier(Family[parent.classDef.family]), factory.createIdentifier(enumDef.name)), undefined);
680
+ }
681
+ }
682
+ if (def.values) {
683
+ return NodeClassFactory.instance.createUnionTypeNode(...Object.keys(def.values).map((p) => factory.createLiteralTypeNode(factory.createNumericLiteral(p))));
684
+ }
685
+
686
+ // return NodeClassFactory.instance.createUnionTypeNode(...
687
+ // Object.values(def.values).map((p) => factory.createTypeReferenceNode(
688
+ // factory.createQualifiedName(
689
+ // factory.createIdentifier("UnitOfMeasure"),
690
+ // factory.createIdentifier(UnitOfMeasure)
691
+ // ),
692
+ // undefined
693
+ // )))
694
+ }
695
+ }
696
+ return factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
697
+ }
698
+
699
+ createDriverSignature(def: DriverDefinition) {
700
+ return factory.createPropertySignature(
701
+ undefined,
702
+ factory.createIdentifier(def.id),
703
+ undefined,
704
+ factory.createTypeLiteralNode([
705
+ factory.createPropertySignature(
706
+ undefined,
707
+ factory.createIdentifier('uom'),
708
+ undefined,
709
+ def.dataType ?
710
+ NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => NodeClassFactory.instance.createTypeNodeForUOM(p.uom)))
711
+ : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword)
634
712
  ),
635
- factory.createObjectLiteralExpression(
636
- [
637
- factory.createPropertyAssignment(
638
- factory.createIdentifier('uom'),
639
- factory.createPropertyAccessExpression(factory.createIdentifier('UnitOfMeasure'), factory.createIdentifier(UnitOfMeasure[parseInt(Object.keys(def.dataType)[0])] ?? 'Unknown'))
640
- ),
641
- factory.createPropertyAssignment(factory.createIdentifier('label'), factory.createStringLiteral(def.label)),
642
- factory.createPropertyAssignment(factory.createIdentifier('name'), factory.createStringLiteral(def.name))
643
- ],
644
- false
645
- )
713
+ factory.createPropertySignature(
714
+ undefined,
715
+ factory.createIdentifier('value'),
716
+ undefined,
717
+ def.dataType ?
718
+ NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => NodeClassFactory.instance.createDriverSignatureReturnType(p, def)))
719
+ : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword)
720
+ ),
721
+ factory.createPropertySignature(undefined, factory.createIdentifier('label'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.label))),
722
+ factory.createPropertySignature(undefined, factory.createIdentifier('name'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.name)))
646
723
  ])
647
- )
648
- );
649
- }
724
+ );
725
+ }
650
726
 
651
- function createDriverPropertyReturnType(def: DataTypeDefinition, parent: DriverDefinition): ts.TypeNode {
652
- if (def.enum) {
653
- {
727
+ createDriverSignatureReturnType(def: DataTypeDefinition, parent: DriverDefinition): ts.TypeNode {
728
+ if (def.enum) {
654
729
  if (EnumDefinitionMap.has(parent.classDef.family)) {
655
730
  var enumDef = EnumDefinitionMap.get(parent.classDef.family)[def.indexId];
656
731
 
@@ -662,93 +737,42 @@ function createDriverPropertyReturnType(def: DataTypeDefinition, parent: DriverD
662
737
  if (def.values) {
663
738
  return NodeClassFactory.instance.createUnionTypeNode(...Object.keys(def.values).map((p) => factory.createLiteralTypeNode(factory.createNumericLiteral(p))));
664
739
  }
665
-
666
- // return NodeClassFactory.instance.createUnionTypeNode(...
667
- // Object.values(def.values).map((p) => factory.createTypeReferenceNode(
668
- // factory.createQualifiedName(
669
- // factory.createIdentifier("UnitOfMeasure"),
670
- // factory.createIdentifier(UnitOfMeasure)
671
- // ),
672
- // undefined
673
- // )))
674
740
  }
741
+ return factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
675
742
  }
676
- return factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
677
- }
678
-
679
- function createDriverSignature(def: DriverDefinition) {
680
- return factory.createPropertySignature(
681
- undefined,
682
- factory.createIdentifier(def.id),
683
- undefined,
684
- factory.createTypeLiteralNode([
685
- factory.createPropertySignature(
686
- undefined,
687
- factory.createIdentifier('uom'),
688
- undefined,
689
- def.dataType ?
690
- NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => createTypeNodeForUOM(p.uom)))
691
- : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword)
692
- ),
693
- factory.createPropertySignature(
694
- undefined,
695
- factory.createIdentifier('value'),
696
- undefined,
697
- def.dataType ?
698
- NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => createDriverSignatureReturnType(p, def)))
699
- : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword)
700
- ),
701
- factory.createPropertySignature(undefined, factory.createIdentifier('label'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.label))),
702
- factory.createPropertySignature(undefined, factory.createIdentifier('name'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.name)))
703
- ])
704
- );
705
- }
706
-
707
- function createDriverSignatureReturnType(def: DataTypeDefinition, parent: DriverDefinition): ts.TypeNode {
708
- if (def.enum) {
709
- if (EnumDefinitionMap.has(parent.classDef.family)) {
710
- var enumDef = EnumDefinitionMap.get(parent.classDef.family)[def.indexId];
711
743
 
712
- // ?? EnumDefinitionMap[Family.Global]?[def.indexId]
713
- if (enumDef) {
714
- return factory.createTypeReferenceNode(factory.createQualifiedName(factory.createIdentifier(Family[parent.classDef.family]), factory.createIdentifier(enumDef.name)), undefined);
715
- }
716
- }
717
- if (def.values) {
718
- return NodeClassFactory.instance.createUnionTypeNode(...Object.keys(def.values).map((p) => factory.createLiteralTypeNode(factory.createNumericLiteral(p))));
719
- }
744
+ createParameterDeclarationSignature(def: ParameterDefinition) {
745
+ return factory.createParameterDeclaration(
746
+ undefined,
747
+ undefined,
748
+ factory.createIdentifier(def.name ?? 'value'),
749
+ def.optional ? factory.createToken(ts.SyntaxKind.QuestionToken) : undefined,
750
+ def.dataType ?
751
+ NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => NodeClassFactory.instance.createCommandParameterType(p, def)))
752
+ : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),
753
+ undefined
754
+ );
720
755
  }
721
- return factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
722
- }
723
756
 
724
- function createParameterDeclarationSignature(def: ParameterDefinition) {
725
- return factory.createParameterDeclaration(
726
- undefined,
727
- undefined,
728
- factory.createIdentifier(def.name ?? 'value'),
729
- def.optional ? factory.createToken(ts.SyntaxKind.QuestionToken) : undefined,
730
- def.dataType ?
731
- NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => createCommandParameterType(p, def)))
732
- : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),
733
- undefined
734
- );
735
- }
757
+ createParameterSignature(def: ParameterDefinition) {
758
+ return factory.createParameterDeclaration(
759
+ undefined,
760
+ undefined,
761
+ factory.createIdentifier(def.id ?? 'value'),
762
+ def.optional ? factory.createToken(ts.SyntaxKind.QuestionToken) : undefined,
763
+ def.dataType ?
764
+ NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => NodeClassFactory.instance.createCommandParameterType(p, def)))
765
+ : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),
766
+ undefined
767
+ );
768
+ }
736
769
 
737
- function createParameterSignature(def: ParameterDefinition) {
738
- return factory.createParameterDeclaration(
739
- undefined,
740
- undefined,
741
- factory.createIdentifier(def.id ?? 'value'),
742
- def.optional ? factory.createToken(ts.SyntaxKind.QuestionToken) : undefined,
743
- def.dataType ?
744
- NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => createCommandParameterType(p, def)))
745
- : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),
746
- undefined
747
- );
748
- }
770
+ createTypeNodeForUOM(uom: number): ts.TypeNode {
771
+ return NodeClassFactory.instance.createTypeReferenceNode(UnitOfMeasure[uom] ?? 'Unknown', 'UnitOfMeasure');
772
+ }
749
773
 
750
- function createTypeNodeForUOM(uom: number): ts.TypeNode {
751
- return NodeClassFactory.instance.createTypeReferenceNode(UnitOfMeasure[uom] ?? 'Unknown', 'UnitOfMeasure');
774
+ // #endregion Public Static Methods (4)
752
775
  }
753
776
 
777
+ // #endregion Classes (1)
754
778
  // #endregion Functions (12)