@ejfdelgado/ejflab-common 1.0.0

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 (88) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +2 -0
  3. package/package.json +29 -0
  4. package/src/CollisionsEngine.js +252 -0
  5. package/src/CsvFormatter.js +54 -0
  6. package/src/CsvFormatter.test.js +119 -0
  7. package/src/CsvFormatterFilters.js +79 -0
  8. package/src/CsvParser.js +51 -0
  9. package/src/CsvParser.test.js +41 -0
  10. package/src/CsvWithFilters.js +114 -0
  11. package/src/FaceEncoder.js +64 -0
  12. package/src/FlowChartDiagram.js +503 -0
  13. package/src/IdGen.js +211 -0
  14. package/src/ModuloDatoSeguro.js +142 -0
  15. package/src/ModuloDatoSeguro.test.js +29 -0
  16. package/src/ModuloDatoSeguro.test.mjs +45 -0
  17. package/src/ModuloDatoSeguroBack.mjs +55 -0
  18. package/src/ModuloDatoSeguroFront.js +73 -0
  19. package/src/ModuloSonido.js +83 -0
  20. package/src/ModuloVideos.js +51 -0
  21. package/src/MyColor.js +136 -0
  22. package/src/MyColor.test.js +37 -0
  23. package/src/MyConstants.js +147 -0
  24. package/src/MyCookies.js +34 -0
  25. package/src/MyDates.js +412 -0
  26. package/src/MyDates.test.js +26 -0
  27. package/src/MyDatesBack.mjs +21 -0
  28. package/src/MyDatesFront.js +41 -0
  29. package/src/MyJsPdf.js +52 -0
  30. package/src/MyRoutes.js +29 -0
  31. package/src/MyTemplate.js +272 -0
  32. package/src/MyTemplate.test.js +90 -0
  33. package/src/MyTensorflow.js +248 -0
  34. package/src/MyTensorflow.test.js +19 -0
  35. package/src/MyTensorflowBack.mjs +33 -0
  36. package/src/MyThrottle.js +80 -0
  37. package/src/MyTuples.js +445 -0
  38. package/src/MyTuples.test.js +330 -0
  39. package/src/MyUtilities.js +137 -0
  40. package/src/SimpleObj.js +153 -0
  41. package/src/SimpleObj.test.js +58 -0
  42. package/src/TriangulacionGeometric.js +335 -0
  43. package/src/changePath.js +38 -0
  44. package/src/data/case0.csv +3 -0
  45. package/src/data/case0.json +24 -0
  46. package/src/data/case1.csv +2 -0
  47. package/src/data/case1.json +24 -0
  48. package/src/data/case2.csv +3 -0
  49. package/src/data/case2.json +24 -0
  50. package/src/data/case3.csv +3 -0
  51. package/src/data/case3.json +24 -0
  52. package/src/data/format0.json +0 -0
  53. package/src/data/format0.txt +1 -0
  54. package/src/data/tensordata.csv +10 -0
  55. package/src/data/tensordata.json +37 -0
  56. package/src/data/tensordata.test.csv +10 -0
  57. package/src/data/tensormodel.json +113 -0
  58. package/src/fft.js +224 -0
  59. package/src/flowchart/FlowChartExec.js +763 -0
  60. package/src/flowchart/steps/CommandBasic.js +32 -0
  61. package/src/flowchart/steps/CommandInc.js +19 -0
  62. package/src/flowchart/steps/CommandMilvus.js +47 -0
  63. package/src/flowchart/steps/CommandMinio.js +28 -0
  64. package/src/flowchart/steps/CommandMongo.js +59 -0
  65. package/src/flowchart/steps/CommandPrint.js +12 -0
  66. package/src/flowchart/steps/CommandSet.js +14 -0
  67. package/src/flowchart/steps/CommandTimeline.js +21 -0
  68. package/src/flowchart/steps/CommandTimelineNext.js +28 -0
  69. package/src/flowchart/steps/StepBasic.js +184 -0
  70. package/src/flowchart/steps/StepCheckProcessor.js +26 -0
  71. package/src/flowchart/steps/StepCheckSrc.js +42 -0
  72. package/src/flowchart/steps/StepIsTrue.js +12 -0
  73. package/src/flowchart/steps/StepOneTime.js +21 -0
  74. package/src/flowchart/steps/StepProcess.js +163 -0
  75. package/src/flowchart/steps/StepReadSrc.js +66 -0
  76. package/src/flowchart/steps/StepSleep.js +22 -0
  77. package/src/flowchart/steps/StepTimeLineEnds.js +21 -0
  78. package/src/flowchart/steps/StepTimeLineHasMore.js +16 -0
  79. package/src/gif/index.d.ts +20 -0
  80. package/src/gif/index.mjs +85 -0
  81. package/src/gif/utils/checkTypes.d.ts +2 -0
  82. package/src/gif/utils/checkTypes.mjs +11 -0
  83. package/src/js-colormaps.js +19484 -0
  84. package/src/sortify.js +75 -0
  85. package/src/sqlmodelparser/SqlModelParser.js +22 -0
  86. package/src/test/csv/test_1000_20230429204538700.csv +1001 -0
  87. package/src/test/csv/test_5_20230429204525930.csv +6 -0
  88. package/src/test/svg/test.html +5 -0
package/src/fft.js ADDED
@@ -0,0 +1,224 @@
1
+ /* eslint-disable complexity, no-redeclare, no-var, one-var */
2
+
3
+ /**
4
+ * Calculate FFT - Based on https://github.com/corbanbrook/dsp.js
5
+ *
6
+ * @param {Number} bufferSize Buffer size
7
+ * @param {Number} sampleRate Sample rate
8
+ * @param {String} windowFunc Window function
9
+ * @param {Number} alpha Alpha channel
10
+ */
11
+ export default class FFT {
12
+ constructor(bufferSize, sampleRate, windowFunc, alpha) {
13
+ this.bufferSize = bufferSize;
14
+ this.sampleRate = sampleRate;
15
+ this.bandwidth = (2 / bufferSize) * (sampleRate / 2);
16
+
17
+ this.sinTable = new Float32Array(bufferSize);
18
+ this.cosTable = new Float32Array(bufferSize);
19
+ this.windowValues = new Float32Array(bufferSize);
20
+ this.reverseTable = new Uint32Array(bufferSize);
21
+
22
+ this.peakBand = 0;
23
+ this.peak = 0;
24
+
25
+ var i;
26
+ switch (windowFunc) {
27
+ case 'bartlett':
28
+ for (i = 0; i < bufferSize; i++) {
29
+ this.windowValues[i] =
30
+ (2 / (bufferSize - 1)) *
31
+ ((bufferSize - 1) / 2 - Math.abs(i - (bufferSize - 1) / 2));
32
+ }
33
+ break;
34
+ case 'bartlettHann':
35
+ for (i = 0; i < bufferSize; i++) {
36
+ this.windowValues[i] =
37
+ 0.62 -
38
+ 0.48 * Math.abs(i / (bufferSize - 1) - 0.5) -
39
+ 0.38 * Math.cos((Math.PI * 2 * i) / (bufferSize - 1));
40
+ }
41
+ break;
42
+ case 'blackman':
43
+ alpha = alpha || 0.16;
44
+ for (i = 0; i < bufferSize; i++) {
45
+ this.windowValues[i] =
46
+ (1 - alpha) / 2 -
47
+ 0.5 * Math.cos((Math.PI * 2 * i) / (bufferSize - 1)) +
48
+ (alpha / 2) *
49
+ Math.cos((4 * Math.PI * i) / (bufferSize - 1));
50
+ }
51
+ break;
52
+ case 'cosine':
53
+ for (i = 0; i < bufferSize; i++) {
54
+ this.windowValues[i] = Math.cos(
55
+ (Math.PI * i) / (bufferSize - 1) - Math.PI / 2
56
+ );
57
+ }
58
+ break;
59
+ case 'gauss':
60
+ alpha = alpha || 0.25;
61
+ for (i = 0; i < bufferSize; i++) {
62
+ this.windowValues[i] = Math.pow(
63
+ Math.E,
64
+ -0.5 *
65
+ Math.pow(
66
+ (i - (bufferSize - 1) / 2) /
67
+ ((alpha * (bufferSize - 1)) / 2),
68
+ 2
69
+ )
70
+ );
71
+ }
72
+ break;
73
+ case 'hamming':
74
+ for (i = 0; i < bufferSize; i++) {
75
+ this.windowValues[i] =
76
+ 0.54 -
77
+ 0.46 * Math.cos((Math.PI * 2 * i) / (bufferSize - 1));
78
+ }
79
+ break;
80
+ case 'hann':
81
+ case undefined:
82
+ for (i = 0; i < bufferSize; i++) {
83
+ this.windowValues[i] =
84
+ 0.5 * (1 - Math.cos((Math.PI * 2 * i) / (bufferSize - 1)));
85
+ }
86
+ break;
87
+ case 'lanczoz':
88
+ for (i = 0; i < bufferSize; i++) {
89
+ this.windowValues[i] =
90
+ Math.sin(Math.PI * ((2 * i) / (bufferSize - 1) - 1)) /
91
+ (Math.PI * ((2 * i) / (bufferSize - 1) - 1));
92
+ }
93
+ break;
94
+ case 'rectangular':
95
+ for (i = 0; i < bufferSize; i++) {
96
+ this.windowValues[i] = 1;
97
+ }
98
+ break;
99
+ case 'triangular':
100
+ for (i = 0; i < bufferSize; i++) {
101
+ this.windowValues[i] =
102
+ (2 / bufferSize) *
103
+ (bufferSize / 2 - Math.abs(i - (bufferSize - 1) / 2));
104
+ }
105
+ break;
106
+ default:
107
+ throw Error("No such window function '" + windowFunc + "'");
108
+ }
109
+
110
+ var limit = 1;
111
+ var bit = bufferSize >> 1;
112
+ var i;
113
+
114
+ while (limit < bufferSize) {
115
+ for (i = 0; i < limit; i++) {
116
+ this.reverseTable[i + limit] = this.reverseTable[i] + bit;
117
+ }
118
+
119
+ limit = limit << 1;
120
+ bit = bit >> 1;
121
+ }
122
+
123
+ for (i = 0; i < bufferSize; i++) {
124
+ this.sinTable[i] = Math.sin(-Math.PI / i);
125
+ this.cosTable[i] = Math.cos(-Math.PI / i);
126
+ }
127
+ }
128
+
129
+ calculateSpectrum(buffer) {
130
+ // Locally scope variables for speed up
131
+ var bufferSize = this.bufferSize,
132
+ cosTable = this.cosTable,
133
+ sinTable = this.sinTable,
134
+ reverseTable = this.reverseTable,
135
+ real = new Float32Array(bufferSize),
136
+ imag = new Float32Array(bufferSize),
137
+ bSi = 2 / this.bufferSize,
138
+ sqrt = Math.sqrt,
139
+ rval,
140
+ ival,
141
+ mag,
142
+ spectrum = new Float32Array(bufferSize / 2);
143
+
144
+ var k = Math.floor(Math.log(bufferSize) / Math.LN2);
145
+
146
+ if (Math.pow(2, k) !== bufferSize) {
147
+ throw 'Invalid buffer size, must be a power of 2.';
148
+ }
149
+ if (bufferSize !== buffer.length) {
150
+ throw 'Supplied buffer is not the same size as defined FFT. FFT Size: ' +
151
+ bufferSize +
152
+ ' Buffer Size: ' +
153
+ buffer.length;
154
+ }
155
+
156
+ var halfSize = 1,
157
+ phaseShiftStepReal,
158
+ phaseShiftStepImag,
159
+ currentPhaseShiftReal,
160
+ currentPhaseShiftImag,
161
+ off,
162
+ tr,
163
+ ti,
164
+ tmpReal;
165
+
166
+ for (var i = 0; i < bufferSize; i++) {
167
+ real[i] =
168
+ buffer[reverseTable[i]] * this.windowValues[reverseTable[i]];
169
+ imag[i] = 0;
170
+ }
171
+
172
+ while (halfSize < bufferSize) {
173
+ phaseShiftStepReal = cosTable[halfSize];
174
+ phaseShiftStepImag = sinTable[halfSize];
175
+
176
+ currentPhaseShiftReal = 1;
177
+ currentPhaseShiftImag = 0;
178
+
179
+ for (var fftStep = 0; fftStep < halfSize; fftStep++) {
180
+ var i = fftStep;
181
+
182
+ while (i < bufferSize) {
183
+ off = i + halfSize;
184
+ tr =
185
+ currentPhaseShiftReal * real[off] -
186
+ currentPhaseShiftImag * imag[off];
187
+ ti =
188
+ currentPhaseShiftReal * imag[off] +
189
+ currentPhaseShiftImag * real[off];
190
+
191
+ real[off] = real[i] - tr;
192
+ imag[off] = imag[i] - ti;
193
+ real[i] += tr;
194
+ imag[i] += ti;
195
+
196
+ i += halfSize << 1;
197
+ }
198
+
199
+ tmpReal = currentPhaseShiftReal;
200
+ currentPhaseShiftReal =
201
+ tmpReal * phaseShiftStepReal -
202
+ currentPhaseShiftImag * phaseShiftStepImag;
203
+ currentPhaseShiftImag =
204
+ tmpReal * phaseShiftStepImag +
205
+ currentPhaseShiftImag * phaseShiftStepReal;
206
+ }
207
+
208
+ halfSize = halfSize << 1;
209
+ }
210
+
211
+ for (var i = 0, N = bufferSize / 2; i < N; i++) {
212
+ rval = real[i];
213
+ ival = imag[i];
214
+ mag = bSi * sqrt(rval * rval + ival * ival);
215
+
216
+ if (mag > this.peak) {
217
+ this.peakBand = i;
218
+ this.peak = mag;
219
+ }
220
+ spectrum[i] = mag;
221
+ }
222
+ return spectrum;
223
+ }
224
+ }