@hahnpro/flow-sdk 9.6.4 → 2025.2.0-beta.1

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 (81) hide show
  1. package/CHANGELOG.md +904 -0
  2. package/jest.config.ts +10 -0
  3. package/package.json +7 -20
  4. package/project.json +41 -0
  5. package/src/index.ts +15 -0
  6. package/src/lib/ContextManager.ts +111 -0
  7. package/src/lib/FlowApplication.ts +659 -0
  8. package/src/lib/FlowElement.ts +220 -0
  9. package/src/lib/FlowEvent.ts +73 -0
  10. package/src/lib/FlowLogger.ts +131 -0
  11. package/src/lib/FlowModule.ts +18 -0
  12. package/src/lib/RpcClient.ts +99 -0
  13. package/src/lib/TestModule.ts +14 -0
  14. package/src/lib/__pycache__/rpc_server.cpython-310.pyc +0 -0
  15. package/src/lib/amqp.ts +32 -0
  16. package/src/lib/extra-validators.ts +62 -0
  17. package/src/lib/flow.interface.ts +56 -0
  18. package/{dist/index.d.ts → src/lib/index.ts} +3 -0
  19. package/src/lib/nats.ts +140 -0
  20. package/src/lib/unit-decorators.ts +156 -0
  21. package/src/lib/unit-utils.ts +163 -0
  22. package/src/lib/units.ts +587 -0
  23. package/src/lib/utils.ts +176 -0
  24. package/test/context-manager-purpose.spec.ts +248 -0
  25. package/test/context-manager.spec.ts +55 -0
  26. package/test/context.spec.ts +180 -0
  27. package/test/event.spec.ts +155 -0
  28. package/test/extra-validators.spec.ts +84 -0
  29. package/test/flow-logger.spec.ts +104 -0
  30. package/test/flow.spec.ts +508 -0
  31. package/test/input-stream.decorator.spec.ts +379 -0
  32. package/test/long-rpc.test.py +14 -0
  33. package/test/long-running-rpc.spec.ts +60 -0
  34. package/test/message.spec.ts +57 -0
  35. package/test/mocks/logger.mock.ts +7 -0
  36. package/test/mocks/nats-connection.mock.ts +135 -0
  37. package/test/mocks/nats-prepare.reals-nats.ts +15 -0
  38. package/test/rpc.spec.ts +198 -0
  39. package/test/rpc.test.py +45 -0
  40. package/test/rx.spec.ts +92 -0
  41. package/test/unit-decorator.spec.ts +57 -0
  42. package/test/utils.spec.ts +210 -0
  43. package/test/validation.spec.ts +174 -0
  44. package/tsconfig.json +13 -0
  45. package/tsconfig.lib.json +22 -0
  46. package/tsconfig.spec.json +8 -0
  47. package/LICENSE +0 -21
  48. package/dist/ContextManager.d.ts +0 -40
  49. package/dist/ContextManager.js +0 -77
  50. package/dist/FlowApplication.d.ts +0 -85
  51. package/dist/FlowApplication.js +0 -500
  52. package/dist/FlowElement.d.ts +0 -67
  53. package/dist/FlowElement.js +0 -163
  54. package/dist/FlowEvent.d.ts +0 -25
  55. package/dist/FlowEvent.js +0 -71
  56. package/dist/FlowLogger.d.ts +0 -44
  57. package/dist/FlowLogger.js +0 -94
  58. package/dist/FlowModule.d.ts +0 -7
  59. package/dist/FlowModule.js +0 -13
  60. package/dist/RpcClient.d.ts +0 -13
  61. package/dist/RpcClient.js +0 -84
  62. package/dist/TestModule.d.ts +0 -2
  63. package/dist/TestModule.js +0 -27
  64. package/dist/amqp.d.ts +0 -14
  65. package/dist/amqp.js +0 -12
  66. package/dist/extra-validators.d.ts +0 -1
  67. package/dist/extra-validators.js +0 -51
  68. package/dist/flow.interface.d.ts +0 -48
  69. package/dist/flow.interface.js +0 -9
  70. package/dist/index.js +0 -18
  71. package/dist/nats.d.ts +0 -12
  72. package/dist/nats.js +0 -109
  73. package/dist/unit-decorators.d.ts +0 -39
  74. package/dist/unit-decorators.js +0 -156
  75. package/dist/unit-utils.d.ts +0 -8
  76. package/dist/unit-utils.js +0 -143
  77. package/dist/units.d.ts +0 -31
  78. package/dist/units.js +0 -570
  79. package/dist/utils.d.ts +0 -51
  80. package/dist/utils.js +0 -137
  81. /package/{dist → src/lib}/rpc_server.py +0 -0
@@ -0,0 +1,587 @@
1
+ export const dimensionToUnitMap = {
2
+ // SI dimensions
3
+ T: 'time',
4
+ L: 'length',
5
+ M: 'mass',
6
+ I: 'electricCurrent',
7
+ Θ: 'thermodynamicTemperature',
8
+ N: 'amountOfSubstance',
9
+ J: 'luminousIntensity',
10
+
11
+ // pseudo dimensions
12
+ U: 'voltage',
13
+ F: 'force',
14
+ E: 'energy',
15
+ W: 'power',
16
+ P: 'pressure',
17
+ A: 'angle',
18
+ V: 'volume',
19
+ f: 'frequency',
20
+ };
21
+
22
+ export const units: UnitDefinitions = {
23
+ time: {
24
+ units: [
25
+ {
26
+ unit: 's',
27
+ conversionFactor: 1,
28
+ SIPrefixes: false,
29
+ },
30
+ {
31
+ unit: 'min',
32
+ conversionFactor: 60,
33
+ SIPrefixes: false,
34
+ },
35
+ {
36
+ unit: 'h',
37
+ conversionFactor: 60 * 60,
38
+ SIPrefixes: false,
39
+ },
40
+ {
41
+ unit: 'd',
42
+ conversionFactor: 60 * 60 * 24,
43
+ SIPrefixes: false,
44
+ },
45
+ {
46
+ unit: 'w',
47
+ conversionFactor: 60 * 60 * 24 * 7,
48
+ SIPrefixes: false,
49
+ },
50
+ {
51
+ unit: 'j',
52
+ conversionFactor: 60 * 60 * 24 * 365,
53
+ SIPrefixes: false,
54
+ },
55
+ ],
56
+ baseUnit: 's',
57
+ dimensions: ['T'],
58
+ },
59
+ length: {
60
+ units: [
61
+ {
62
+ unit: 'm',
63
+ conversionFactor: 1,
64
+ SIPrefixes: true,
65
+ },
66
+ {
67
+ unit: 'in',
68
+ conversionFactor: 1 / 39.3701,
69
+ SIPrefixes: false,
70
+ },
71
+ {
72
+ unit: 'ft',
73
+ conversionFactor: 1 / 3.28084,
74
+ SIPrefixes: false,
75
+ },
76
+ {
77
+ unit: 'yd',
78
+ conversionFactor: 1 / 0.9144,
79
+ SIPrefixes: false,
80
+ },
81
+ {
82
+ unit: 'mi',
83
+ conversionFactor: 1 / 1609.34,
84
+ SIPrefixes: false,
85
+ },
86
+ ],
87
+ baseUnit: 'm',
88
+ dimensions: ['L'],
89
+ },
90
+ mass: {
91
+ units: [
92
+ {
93
+ unit: 'g',
94
+ conversionFactor: 0.001,
95
+ SIPrefixes: true,
96
+ },
97
+ {
98
+ unit: 'lbs',
99
+ conversionFactor: 0.45359237,
100
+ SIPrefixes: false,
101
+ },
102
+ ],
103
+ baseUnit: 'kg',
104
+ dimensions: ['M'],
105
+ },
106
+ electricCurrent: {
107
+ units: [
108
+ {
109
+ unit: 'A',
110
+ conversionFactor: 1,
111
+ SIPrefixes: true,
112
+ },
113
+ ],
114
+ baseUnit: 'A',
115
+ dimensions: ['I'],
116
+ },
117
+ thermodynamicTemperature: {
118
+ units: [
119
+ {
120
+ unit: 'K',
121
+ conversionFactor: 1,
122
+ SIPrefixes: true,
123
+ offset: 0,
124
+ },
125
+ {
126
+ unit: 'C',
127
+ conversionFactor: 1,
128
+ SIPrefixes: false,
129
+ offset: 273.15,
130
+ },
131
+ {
132
+ unit: 'F',
133
+ conversionFactor: 5 / 9,
134
+ SIPrefixes: false,
135
+ offset: 255.372,
136
+ },
137
+ ],
138
+ baseUnit: 'K',
139
+ dimensions: ['Θ'],
140
+ },
141
+ amountOfSubstance: {
142
+ units: [
143
+ {
144
+ unit: 'mol',
145
+ conversionFactor: 1,
146
+ SIPrefixes: false,
147
+ },
148
+ ],
149
+ baseUnit: 'mol',
150
+ dimensions: ['N'],
151
+ },
152
+ luminousIntensity: {
153
+ units: [
154
+ {
155
+ unit: 'cd',
156
+ conversionFactor: 1,
157
+ SIPrefixes: true,
158
+ },
159
+ ],
160
+ baseUnit: 'cd',
161
+ dimensions: ['J'],
162
+ },
163
+ voltage: {
164
+ units: [
165
+ {
166
+ unit: 'V',
167
+ conversionFactor: 1,
168
+ SIPrefixes: true,
169
+ },
170
+ ],
171
+ baseUnit: 'V',
172
+ dimensions: ['U', 'M*L2*I−1*T−3'],
173
+ },
174
+ force: {
175
+ units: [
176
+ {
177
+ unit: 'N',
178
+ conversionFactor: 1,
179
+ SIPrefixes: true,
180
+ },
181
+ {
182
+ unit: 'lbf',
183
+ conversionFactor: 4.4482,
184
+ SIPrefixes: false,
185
+ },
186
+ {
187
+ unit: 'gf',
188
+ conversionFactor: 0.00980665,
189
+ SIPrefixes: false,
190
+ },
191
+ {
192
+ unit: 'kgf',
193
+ conversionFactor: 9.80665,
194
+ SIPrefixes: false,
195
+ },
196
+ ],
197
+ baseUnit: 'N',
198
+ dimensions: ['F', 'L*M*T-2'],
199
+ },
200
+ energy: {
201
+ units: [
202
+ {
203
+ unit: 'J',
204
+ conversionFactor: 1,
205
+ SIPrefixes: true,
206
+ },
207
+ {
208
+ unit: 'Btu',
209
+ conversionFactor: 1055,
210
+ SIPrefixes: true,
211
+ },
212
+ ],
213
+ baseUnit: 'J',
214
+ dimensions: ['E', 'M*L2*T-2'],
215
+ },
216
+ power: {
217
+ units: [
218
+ {
219
+ unit: 'W',
220
+ conversionFactor: 1,
221
+ SIPrefixes: true,
222
+ },
223
+ {
224
+ unit: 'PS',
225
+ conversionFactor: 735.49875,
226
+ SIPrefixes: false,
227
+ },
228
+ {
229
+ unit: 'hp',
230
+ conversionFactor: 745.7,
231
+ SIPrefixes: false,
232
+ },
233
+ ],
234
+ baseUnit: 'W',
235
+ dimensions: ['W', 'E*T-1', 'M*L2*T-3'],
236
+ },
237
+ pressure: {
238
+ units: [
239
+ {
240
+ unit: 'Pa',
241
+ conversionFactor: 1,
242
+ SIPrefixes: true,
243
+ },
244
+ {
245
+ unit: 'bar',
246
+ conversionFactor: 100000,
247
+ SIPrefixes: true,
248
+ },
249
+ {
250
+ unit: 'at',
251
+ conversionFactor: 98066.5,
252
+ SIPrefixes: false,
253
+ },
254
+ {
255
+ unit: 'atm',
256
+ conversionFactor: 101325,
257
+ SIPrefixes: false,
258
+ },
259
+ {
260
+ unit: 'Torr',
261
+ conversionFactor: 133.322368421,
262
+ SIPrefixes: true,
263
+ },
264
+ ],
265
+ baseUnit: 'Pa',
266
+ dimensions: ['P', 'F*L-2', 'E*L-3', 'M*L-1*T-2'],
267
+ },
268
+ frequency: {
269
+ units: [
270
+ {
271
+ unit: 'Hz',
272
+ conversionFactor: 1,
273
+ SIPrefixes: true,
274
+ },
275
+ ],
276
+ baseUnit: 'Hz',
277
+ dimensions: ['f', 'T-1'],
278
+ },
279
+
280
+ area: {
281
+ units: [
282
+ {
283
+ unit: 'm^2',
284
+ conversionFactor: 1,
285
+ SIPrefixes: false,
286
+ },
287
+ {
288
+ unit: 'are',
289
+ conversionFactor: 100,
290
+ SIPrefixes: false,
291
+ },
292
+ {
293
+ unit: 'hectare',
294
+ conversionFactor: 10000,
295
+ SIPrefixes: false,
296
+ },
297
+ {
298
+ unit: 'acre',
299
+ conversionFactor: 4046.86,
300
+ SIPrefixes: false,
301
+ },
302
+ ],
303
+ baseUnit: 'm^2',
304
+ dimensions: ['L2'],
305
+ },
306
+ volume: {
307
+ units: [
308
+ {
309
+ unit: 'm^3',
310
+ conversionFactor: 1,
311
+ SIPrefixes: false,
312
+ },
313
+ {
314
+ unit: 'barrel',
315
+ conversionFactor: 0.158987294928,
316
+ SIPrefixes: false,
317
+ },
318
+ {
319
+ unit: 'litre',
320
+ conversionFactor: 0.001,
321
+ SIPrefixes: false,
322
+ },
323
+ {
324
+ unit: 'gallon',
325
+ conversionFactor: 0.003785411784,
326
+ SIPrefixes: false,
327
+ },
328
+ {
329
+ unit: 'pint',
330
+ conversionFactor: 0.000473176473,
331
+ SIPrefixes: false,
332
+ },
333
+ ],
334
+ baseUnit: 'm^3',
335
+ dimensions: ['L3', 'V'],
336
+ },
337
+ angle: {
338
+ units: [
339
+ {
340
+ unit: 'rad',
341
+ conversionFactor: 1,
342
+ SIPrefixes: true,
343
+ },
344
+ {
345
+ unit: 'deg',
346
+ conversionFactor: 57.2958,
347
+ SIPrefixes: true,
348
+ },
349
+ {
350
+ unit: 'turn',
351
+ conversionFactor: 1 / (2 * Math.PI),
352
+ SIPrefixes: true,
353
+ },
354
+ {
355
+ unit: 'gon',
356
+ conversionFactor: 63.662,
357
+ SIPrefixes: true,
358
+ },
359
+ ],
360
+ baseUnit: 'rad',
361
+ dimensions: ['A', 'L*L-1'],
362
+ },
363
+ translationalAcceleration: {
364
+ units: [
365
+ {
366
+ unit: 'm/s^2',
367
+ conversionFactor: 1,
368
+ SIPrefixes: false,
369
+ },
370
+ {
371
+ unit: 'Gal',
372
+ conversionFactor: 0.01,
373
+ SIPrefixes: false,
374
+ },
375
+ {
376
+ unit: 'g0',
377
+ conversionFactor: 9.80665,
378
+ SIPrefixes: false,
379
+ },
380
+ ],
381
+ baseUnit: 'm/s^2',
382
+ dimensions: ['L*T-2'],
383
+ },
384
+ translationalVelocity: {
385
+ units: [
386
+ {
387
+ unit: 'm/s',
388
+ conversionFactor: 1,
389
+ SIPrefixes: false,
390
+ },
391
+ ],
392
+ baseUnit: 'm/s',
393
+ dimensions: ['L*T-1'],
394
+ },
395
+ get translationalDisplacement() {
396
+ return this.length;
397
+ },
398
+ springConstant: {
399
+ units: [
400
+ {
401
+ unit: 'N/m',
402
+ conversionFactor: 1,
403
+ SIPrefixes: false,
404
+ },
405
+ ],
406
+ baseUnit: 'N/m',
407
+ dimensions: ['F*L-1', 'M*T-2'],
408
+ },
409
+ rotationalAcceleration: {
410
+ units: [
411
+ {
412
+ unit: 'rad/s^2',
413
+ conversionFactor: 1,
414
+ SIPrefixes: false,
415
+ },
416
+ ],
417
+ baseUnit: 'rad/s^2',
418
+ dimensions: ['A*T-2', 'L*L-1*T-2', 'T-2'],
419
+ },
420
+ rotationalVelocity: {
421
+ units: [
422
+ {
423
+ unit: 'rad/s',
424
+ conversionFactor: 1,
425
+ SIPrefixes: true,
426
+ },
427
+ ],
428
+ baseUnit: 'rad/s',
429
+ dimensions: ['A*T-1', 'L*L-1*T-1', 'T-1'],
430
+ },
431
+ get rotationalDisplacement() {
432
+ return this.angle;
433
+ },
434
+ torque: {
435
+ units: [
436
+ {
437
+ unit: 'Nm',
438
+ conversionFactor: 1,
439
+ SIPrefixes: false,
440
+ },
441
+ ],
442
+ baseUnit: 'Nm',
443
+ dimensions: ['F*L', 'M*L2*T−2'],
444
+ },
445
+ momentOfInertia: {
446
+ units: [
447
+ {
448
+ unit: 'kgm^2',
449
+ conversionFactor: 1,
450
+ SIPrefixes: false,
451
+ },
452
+ ],
453
+ baseUnit: 'kgm^2',
454
+ dimensions: ['M*L2', 'F*L*T2'],
455
+ },
456
+ rotatingUnbalance: {
457
+ units: [
458
+ {
459
+ unit: 'kgm',
460
+ conversionFactor: 1,
461
+ SIPrefixes: false,
462
+ },
463
+ ],
464
+ baseUnit: 'kgm',
465
+ dimensions: ['L*M'],
466
+ },
467
+ get mechanicalPower() {
468
+ return this.power;
469
+ },
470
+ get mechanicalEnergy() {
471
+ return this.energy;
472
+ },
473
+ dynamicViscosity: {
474
+ units: [
475
+ {
476
+ unit: 'Pas',
477
+ conversionFactor: 1,
478
+ SIPrefixes: false,
479
+ },
480
+ {
481
+ unit: 'poise',
482
+ conversionFactor: 0.1,
483
+ SIPrefixes: true,
484
+ },
485
+ ],
486
+ baseUnit: 'Pas',
487
+ dimensions: ['P*T', 'F*T*L-2', 'M*L-1*T-1'],
488
+ },
489
+ kinematicViscosity: {
490
+ units: [
491
+ {
492
+ unit: 'm^2/s',
493
+ conversionFactor: 1,
494
+ SIPrefixes: false,
495
+ },
496
+ {
497
+ unit: 'St',
498
+ conversionFactor: 0.0001,
499
+ SIPrefixes: true,
500
+ },
501
+ ],
502
+ baseUnit: 'm^2/s',
503
+ dimensions: ['L2*T-1'],
504
+ },
505
+ volumeFlow: {
506
+ units: [
507
+ {
508
+ unit: 'm^3/s',
509
+ conversionFactor: 1,
510
+ SIPrefixes: false,
511
+ },
512
+ ],
513
+ baseUnit: 'm^3/s',
514
+ dimensions: ['V*T-1', 'L3*T-1'],
515
+ },
516
+ massFlow: {
517
+ units: [
518
+ {
519
+ unit: 'kg/s',
520
+ conversionFactor: 1,
521
+ SIPrefixes: false,
522
+ },
523
+ ],
524
+ baseUnit: 'kg/s',
525
+ dimensions: ['M*L-1'],
526
+ },
527
+ heatFlux: {
528
+ units: [
529
+ {
530
+ unit: 'W/m^2',
531
+ conversionFactor: 1,
532
+ SIPrefixes: false,
533
+ },
534
+ ],
535
+ baseUnit: 'W/m^2',
536
+ dimensions: ['W*L-2', 'E*T-1*L-2', 'M*T-3'],
537
+ },
538
+ get thermalEnergy() {
539
+ return this.energy;
540
+ },
541
+ specificHeatCapacity: {
542
+ units: [
543
+ {
544
+ unit: 'J/kgK',
545
+ conversionFactor: 1,
546
+ SIPrefixes: false,
547
+ },
548
+ ],
549
+ baseUnit: 'J/kgK',
550
+ dimensions: ['E*M-1*Θ−1', 'L2*Θ−1*T−2'],
551
+ },
552
+ thermalTransmittance: {
553
+ units: [
554
+ {
555
+ unit: 'W/m^2K',
556
+ conversionFactor: 1,
557
+ SIPrefixes: false,
558
+ },
559
+ ],
560
+ baseUnit: 'W/m^2K',
561
+ dimensions: ['W*L-2*Θ-1', 'E*T-1*L-2*Θ-1'],
562
+ },
563
+ get electricalPower() {
564
+ return this.power;
565
+ },
566
+ get electricalEnergy() {
567
+ return this.energy;
568
+ },
569
+ get electricalFrequency() {
570
+ return this.frequency;
571
+ },
572
+ };
573
+
574
+ export type UnitDefinitions = {
575
+ [key: string]: UnitDefinition;
576
+ };
577
+
578
+ export type UnitDefinition = {
579
+ units: {
580
+ unit: string;
581
+ conversionFactor: number;
582
+ SIPrefixes: boolean;
583
+ offset?: number;
584
+ }[];
585
+ baseUnit: string;
586
+ dimensions: string[];
587
+ };