black-diamond-shared 1.0.0 → 1.0.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.
package/dist/index.mjs CHANGED
@@ -117,6 +117,431 @@ var LEAGUE_ID_LIST = [
117
117
  // Ireland Premier division
118
118
  ];
119
119
 
120
+ // src/data/team/schema/index.ts
121
+ import { Schema as Schema2 } from "mongoose";
122
+ var teamSchema = new Schema2(
123
+ {
124
+ id: {
125
+ type: Number,
126
+ required: true
127
+ },
128
+ name: {
129
+ type: String,
130
+ required: true
131
+ },
132
+ logo: {
133
+ type: String,
134
+ required: true
135
+ },
136
+ league: {
137
+ type: Schema2.Types.ObjectId,
138
+ ref: "League"
139
+ },
140
+ stats: {
141
+ type: Schema2.Types.ObjectId,
142
+ ref: "TeamStat"
143
+ },
144
+ currentSeason: {
145
+ type: Number
146
+ },
147
+ fixtures: [
148
+ {
149
+ type: Schema2.Types.ObjectId,
150
+ ref: "Fixture"
151
+ }
152
+ ]
153
+ },
154
+ { timestamps: true }
155
+ );
156
+
157
+ // src/data/fixture/schema/index.ts
158
+ import { Schema as Schema3 } from "mongoose";
159
+ var fixtureSchema = new Schema3(
160
+ {
161
+ fixture: {
162
+ type: Schema3.Types.Mixed
163
+ },
164
+ league: {
165
+ type: Schema3.Types.Mixed
166
+ },
167
+ teams: {
168
+ type: Schema3.Types.Mixed
169
+ },
170
+ goals: {
171
+ type: Schema3.Types.Mixed
172
+ },
173
+ score: {
174
+ type: Schema3.Types.Mixed
175
+ },
176
+ odds: {
177
+ type: Schema3.Types.Mixed
178
+ },
179
+ apiPredictions: {
180
+ type: Schema3.Types.Mixed
181
+ },
182
+ teamStats: {
183
+ type: Schema3.Types.Mixed
184
+ }
185
+ // refs: {
186
+ // refHomeTeamStat: {
187
+ // type: Schema.Types.ObjectId,
188
+ // ref: "Stat",
189
+ // },
190
+ // refAwayTeamStat: {
191
+ // type: Schema.Types.ObjectId,
192
+ // ref: "Stat",
193
+ // },
194
+ // refHomeTeam: {
195
+ // type: Schema.Types.ObjectId,
196
+ // ref: "Team",
197
+ // },
198
+ // refAwayTeam: {
199
+ // type: Schema.Types.ObjectId,
200
+ // ref: "Team",
201
+ // },
202
+ // },
203
+ // odds: {
204
+ // type: Schema.Types.Mixed,
205
+ // },
206
+ // prevFixtures: {
207
+ // home: [
208
+ // {
209
+ // type: Schema.Types.ObjectId,
210
+ // ref: "Fixture",
211
+ // },
212
+ // ],
213
+ // away: [
214
+ // {
215
+ // type: Schema.Types.ObjectId,
216
+ // ref: "Fixture",
217
+ // },
218
+ // ],
219
+ // },
220
+ // apiPredictions: {
221
+ // type: Schema.Types.Mixed,
222
+ // },
223
+ // predictions: {
224
+ // type: Schema.Types.Mixed,
225
+ // },
226
+ // topBets: {
227
+ // type: Schema.Types.Mixed,
228
+ // },
229
+ // keyStats: {
230
+ // type: Schema.Types.Mixed,
231
+ // },
232
+ // info: {
233
+ // type: Schema.Types.Mixed,
234
+ // },
235
+ },
236
+ { timestamps: true }
237
+ );
238
+
239
+ // src/data/teamStat/schema/index.ts
240
+ import { Schema as Schema4 } from "mongoose";
241
+ var teamStatSchema = new Schema4(
242
+ {
243
+ leaguePosition: { type: Number },
244
+ team: {
245
+ id: { type: Number, required: true },
246
+ name: { type: String, required: true },
247
+ logo: { type: String, required: true }
248
+ },
249
+ biggest: {
250
+ streak: {
251
+ wins: { type: Number },
252
+ draws: { type: Number },
253
+ loses: { type: Number }
254
+ },
255
+ wins: {
256
+ home: { type: String },
257
+ away: { type: String }
258
+ },
259
+ loses: {
260
+ home: { type: String },
261
+ away: { type: String }
262
+ },
263
+ goals: {
264
+ for: {
265
+ home: { type: Number },
266
+ away: { type: Number }
267
+ },
268
+ against: {
269
+ home: { type: Number },
270
+ away: { type: Number }
271
+ }
272
+ }
273
+ },
274
+ cards: {
275
+ yellow: {
276
+ "0-15": {
277
+ total: { type: Number },
278
+ percentage: { type: String }
279
+ },
280
+ "16-30": {
281
+ total: { type: Number },
282
+ percentage: { type: String }
283
+ },
284
+ "31-45": {
285
+ total: { type: Number },
286
+ percentage: { type: String }
287
+ },
288
+ "46-60": {
289
+ total: { type: Number },
290
+ percentage: { type: String }
291
+ },
292
+ "61-75": {
293
+ total: { type: Number },
294
+ percentage: { type: String }
295
+ },
296
+ "76-90": {
297
+ total: { type: Number },
298
+ percentage: { type: String }
299
+ },
300
+ "91-105": {
301
+ total: { type: Number },
302
+ percentage: { type: String }
303
+ },
304
+ "106-120": {
305
+ total: { type: Number },
306
+ percentage: { type: String }
307
+ }
308
+ },
309
+ red: {
310
+ "0-15": {
311
+ total: { type: Number },
312
+ percentage: { type: String }
313
+ },
314
+ "16-30": {
315
+ total: { type: Number },
316
+ percentage: { type: String }
317
+ },
318
+ "31-45": {
319
+ total: { type: Number },
320
+ percentage: { type: String }
321
+ },
322
+ "46-60": {
323
+ total: { type: Number },
324
+ percentage: { type: String }
325
+ },
326
+ "61-75": {
327
+ total: { type: Number },
328
+ percentage: { type: String }
329
+ },
330
+ "76-90": {
331
+ total: { type: Number },
332
+ percentage: { type: String }
333
+ },
334
+ "91-105": {
335
+ total: { type: Number },
336
+ percentage: { type: String }
337
+ },
338
+ "106-120": {
339
+ total: { type: Number },
340
+ percentage: { type: String }
341
+ }
342
+ }
343
+ },
344
+ clean_sheet: {
345
+ home: { type: Number },
346
+ away: { type: Number },
347
+ total: { type: Number }
348
+ },
349
+ createdAt: { type: Date, default: Date.now },
350
+ failed_to_score: {
351
+ home: { type: Number },
352
+ away: { type: Number },
353
+ total: { type: Number }
354
+ },
355
+ fixtures: {
356
+ played: {
357
+ home: { type: Number },
358
+ away: { type: Number },
359
+ total: { type: Number }
360
+ },
361
+ wins: {
362
+ home: { type: Number },
363
+ away: { type: Number },
364
+ total: { type: Number }
365
+ },
366
+ draws: {
367
+ home: { type: Number },
368
+ away: { type: Number },
369
+ total: { type: Number }
370
+ },
371
+ loses: {
372
+ home: { type: Number },
373
+ away: { type: Number },
374
+ total: { type: Number }
375
+ }
376
+ },
377
+ form: { type: String },
378
+ goals: {
379
+ for: {
380
+ total: {
381
+ home: { type: Number },
382
+ away: { type: Number },
383
+ total: { type: Number }
384
+ },
385
+ average: {
386
+ home: { type: String },
387
+ away: { type: String },
388
+ total: { type: String }
389
+ },
390
+ minute: {
391
+ "0-15": {
392
+ total: { type: Number },
393
+ percentage: { type: String }
394
+ },
395
+ "16-30": {
396
+ total: { type: Number },
397
+ percentage: { type: String }
398
+ },
399
+ "31-45": {
400
+ total: { type: Number },
401
+ percentage: { type: String }
402
+ },
403
+ "46-60": {
404
+ total: { type: Number },
405
+ percentage: { type: String }
406
+ },
407
+ "61-75": {
408
+ total: { type: Number },
409
+ percentage: { type: String }
410
+ },
411
+ "76-90": {
412
+ total: { type: Number },
413
+ percentage: { type: String }
414
+ },
415
+ "91-105": {
416
+ total: { type: Number },
417
+ percentage: { type: String }
418
+ },
419
+ "106-120": {
420
+ total: { type: Number },
421
+ percentage: { type: String }
422
+ }
423
+ },
424
+ under_over: {
425
+ "0.5": {
426
+ over: { type: Number },
427
+ under: { type: Number }
428
+ },
429
+ "1.5": {
430
+ over: { type: Number },
431
+ under: { type: Number }
432
+ },
433
+ "2.5": {
434
+ over: { type: Number },
435
+ under: { type: Number }
436
+ },
437
+ "3.5": {
438
+ over: { type: Number },
439
+ under: { type: Number }
440
+ },
441
+ "4.5": {
442
+ over: { type: Number },
443
+ under: { type: Number }
444
+ }
445
+ }
446
+ },
447
+ against: {
448
+ total: {
449
+ home: { type: Number },
450
+ away: { type: Number },
451
+ total: { type: Number }
452
+ },
453
+ average: {
454
+ home: { type: String },
455
+ away: { type: String },
456
+ total: { type: String }
457
+ },
458
+ minute: {
459
+ "0-15": {
460
+ total: { type: Number },
461
+ percentage: { type: String }
462
+ },
463
+ "16-30": {
464
+ total: { type: Number },
465
+ percentage: { type: String }
466
+ },
467
+ "31-45": {
468
+ total: { type: Number },
469
+ percentage: { type: String }
470
+ },
471
+ "46-60": {
472
+ total: { type: Number },
473
+ percentage: { type: String }
474
+ },
475
+ "61-75": {
476
+ total: { type: Number },
477
+ percentage: { type: String }
478
+ },
479
+ "76-90": {
480
+ total: { type: Number },
481
+ percentage: { type: String }
482
+ },
483
+ "91-105": {
484
+ total: { type: Number },
485
+ percentage: { type: String }
486
+ },
487
+ "106-120": {
488
+ total: { type: Number },
489
+ percentage: { type: String }
490
+ }
491
+ },
492
+ under_over: {
493
+ "0.5": {
494
+ over: { type: Number },
495
+ under: { type: Number }
496
+ },
497
+ "1.5": {
498
+ over: { type: Number },
499
+ under: { type: Number }
500
+ },
501
+ "2.5": {
502
+ over: { type: Number },
503
+ under: { type: Number }
504
+ },
505
+ "3.5": {
506
+ over: { type: Number },
507
+ under: { type: Number }
508
+ },
509
+ "4.5": {
510
+ over: { type: Number },
511
+ under: { type: Number }
512
+ }
513
+ }
514
+ }
515
+ },
516
+ league: {
517
+ id: { type: Number, required: true },
518
+ name: { type: String, required: true },
519
+ country: { type: String, required: true },
520
+ logo: { type: String, required: true },
521
+ flag: { type: String, required: true },
522
+ season: { type: Number, required: true }
523
+ },
524
+ lineups: [
525
+ {
526
+ formation: { type: String },
527
+ played: { type: Number }
528
+ }
529
+ ],
530
+ penalty: {
531
+ scored: {
532
+ total: { type: Number },
533
+ percentage: { type: String }
534
+ },
535
+ missed: {
536
+ total: { type: Number },
537
+ percentage: { type: String }
538
+ },
539
+ total: { type: Number }
540
+ }
541
+ },
542
+ { timestamps: true }
543
+ );
544
+
120
545
  // src/utils/apiFootball/data/index.ts
121
546
  var API_FOOTBALL_URL = `https://v3.football.api-sports.io`;
122
547
  var API_FOOTBALL_URL_LEAGUES = `${API_FOOTBALL_URL}/leagues`;
@@ -126,6 +551,39 @@ var API_FOOTBALL_URL_TEAM_STATS = `${API_FOOTBALL_URL}/teams/statistics`;
126
551
  var API_FOOTBALL_URL_ODDS = `${API_FOOTBALL_URL}/odds`;
127
552
  var API_FOOTBALL_URL_STANDINGS = `${API_FOOTBALL_URL}/standings`;
128
553
  var API_FOOTBALL_URL_PREDICTIONS = `${API_FOOTBALL_URL}/predictions`;
554
+
555
+ // src/utils/numbers/toTwoDecimalPlaces.ts
556
+ function toTwoDecimalPlaces(num) {
557
+ return parseFloat(num.toFixed(2));
558
+ }
559
+
560
+ // src/utils/numbers/toPercent.ts
561
+ function toPercent(value, total) {
562
+ if (total === 0) {
563
+ return 0;
564
+ }
565
+ return value * 100 / total;
566
+ }
567
+
568
+ // src/utils/numbers/getMeanModeMedian.ts
569
+ var getMeanModeMedian = (numbers) => {
570
+ if (numbers.length === 0) return { mean: 0, median: 0, mode: 0 };
571
+ const mean = numbers.reduce((acc, val) => acc + val, 0) / numbers.length;
572
+ const sortedNumbers = [...numbers].sort((a, b) => a - b);
573
+ const mid = Math.floor(sortedNumbers.length / 2);
574
+ const median = sortedNumbers.length % 2 !== 0 ? sortedNumbers[mid] : (sortedNumbers[mid - 1] + sortedNumbers[mid]) / 2;
575
+ const frequency = {};
576
+ let maxFreq = 0;
577
+ let mode = numbers[0];
578
+ numbers.forEach((num) => {
579
+ frequency[num] = (frequency[num] || 0) + 1;
580
+ if (frequency[num] > maxFreq) {
581
+ maxFreq = frequency[num];
582
+ mode = num;
583
+ }
584
+ });
585
+ return { mean, median, mode };
586
+ };
129
587
  export {
130
588
  API_FOOTBALL_URL_FIXTURES,
131
589
  API_FOOTBALL_URL_LEAGUES,
@@ -135,6 +593,12 @@ export {
135
593
  API_FOOTBALL_URL_TEAMS,
136
594
  API_FOOTBALL_URL_TEAM_STATS,
137
595
  LEAGUE_ID_LIST,
138
- leagueSchema
596
+ fixtureSchema,
597
+ getMeanModeMedian,
598
+ leagueSchema,
599
+ teamSchema,
600
+ teamStatSchema,
601
+ toPercent,
602
+ toTwoDecimalPlaces
139
603
  };
140
604
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/league/schema/index.ts","../src/data/league/data/index.ts","../src/utils/apiFootball/data/index.ts"],"sourcesContent":["import { League } from \"../types\";\nimport { Schema } from \"mongoose\";\n\nexport const leagueSchema = new Schema<League>(\n {\n id: {\n type: Number,\n required: true,\n },\n name: {\n type: String,\n },\n logo: {\n type: String,\n },\n country: {\n name: {\n type: String,\n },\n code: {\n type: String,\n },\n flag: {\n type: String,\n },\n },\n stats: {\n type: Schema.Types.Mixed,\n },\n currentSeason: {\n type: Number,\n },\n },\n { timestamps: true }\n);\n","export const LEAGUE_ID_LIST = [\n 39, // premier league\n 78, //Bundesliga 1\n 140, // La Liga\n 135, // Serie A\n 61, // Ligue 1,\n 188, // A league australia\n 40, // Championship\n 41, // League One\n 42, // League Two\n 43, //National League\n 141, // Segunda Division\n 79, //Bundesliga 2\n 136, // Serie B\n 62, // Ligue 2\n 179, // Scotland Premiership\n 180, // Scotland Championship,\n 113, // Sweden Allsvenskan\n 103, // Norway Eliteserien\n 94, // Primeira Liga portugal\n 71, // Serie A Brazil\n 72, // Serie B Brazil\n 253, // Major League Soccer\n 197, // Greece Super League\n 88, // Eredivisie Holland\n 144, // Belgium 1st div A\n 345, // Czech Liga\n 207, // Switz super league\n 98, // J1 League Japan\n 292, // K League 1\n 333, // Ukraine premier league\n 128, // Argentine Primera División\n 169, // China super league\n 233, // Egypt premier leaguye\n 262, // Liga MX Mexico\n 244, // Veikkausliiga finland\n 164, // Iceland\n 281, // Peru Primera División\n 203, // Turkey Süper Lig\n 365, // Virsliga Latvia\n 357, // Ireland Premier division\n];\n","const API_FOOTBALL_URL = `https://v3.football.api-sports.io`;\nexport const API_FOOTBALL_URL_LEAGUES = `${API_FOOTBALL_URL}/leagues`;\nexport const API_FOOTBALL_URL_TEAMS = `${API_FOOTBALL_URL}/teams`;\nexport const API_FOOTBALL_URL_FIXTURES = `${API_FOOTBALL_URL}/fixtures`;\nexport const API_FOOTBALL_URL_TEAM_STATS = `${API_FOOTBALL_URL}/teams/statistics`;\nexport const API_FOOTBALL_URL_ODDS = `${API_FOOTBALL_URL}/odds`;\nexport const API_FOOTBALL_URL_STANDINGS = `${API_FOOTBALL_URL}/standings`;\nexport const API_FOOTBALL_URL_PREDICTIONS = `${API_FOOTBALL_URL}/predictions`;\n"],"mappings":";AACA,SAAS,cAAc;AAEhB,IAAM,eAAe,IAAI;AAAA,EAC9B;AAAA,IACE,IAAI;AAAA,MACF,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,IACR;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,IACR;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,MAAM,OAAO,MAAM;AAAA,IACrB;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,EAAE,YAAY,KAAK;AACrB;;;AClCO,IAAM,iBAAiB;AAAA,EAC5B;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF;;;ACzCA,IAAM,mBAAmB;AAClB,IAAM,2BAA2B,GAAG,gBAAgB;AACpD,IAAM,yBAAyB,GAAG,gBAAgB;AAClD,IAAM,4BAA4B,GAAG,gBAAgB;AACrD,IAAM,8BAA8B,GAAG,gBAAgB;AACvD,IAAM,wBAAwB,GAAG,gBAAgB;AACjD,IAAM,6BAA6B,GAAG,gBAAgB;AACtD,IAAM,+BAA+B,GAAG,gBAAgB;","names":[]}
1
+ {"version":3,"sources":["../src/data/league/schema/index.ts","../src/data/league/data/index.ts","../src/data/team/schema/index.ts","../src/data/fixture/schema/index.ts","../src/data/teamStat/schema/index.ts","../src/utils/apiFootball/data/index.ts","../src/utils/numbers/toTwoDecimalPlaces.ts","../src/utils/numbers/toPercent.ts","../src/utils/numbers/getMeanModeMedian.ts"],"sourcesContent":["import { League } from \"../types\";\nimport { Schema } from \"mongoose\";\n\nexport const leagueSchema = new Schema<League>(\n {\n id: {\n type: Number,\n required: true,\n },\n name: {\n type: String,\n },\n logo: {\n type: String,\n },\n country: {\n name: {\n type: String,\n },\n code: {\n type: String,\n },\n flag: {\n type: String,\n },\n },\n stats: {\n type: Schema.Types.Mixed,\n },\n currentSeason: {\n type: Number,\n },\n },\n { timestamps: true }\n);\n","export const LEAGUE_ID_LIST = [\n 39, // premier league\n 78, //Bundesliga 1\n 140, // La Liga\n 135, // Serie A\n 61, // Ligue 1,\n 188, // A league australia\n 40, // Championship\n 41, // League One\n 42, // League Two\n 43, //National League\n 141, // Segunda Division\n 79, //Bundesliga 2\n 136, // Serie B\n 62, // Ligue 2\n 179, // Scotland Premiership\n 180, // Scotland Championship,\n 113, // Sweden Allsvenskan\n 103, // Norway Eliteserien\n 94, // Primeira Liga portugal\n 71, // Serie A Brazil\n 72, // Serie B Brazil\n 253, // Major League Soccer\n 197, // Greece Super League\n 88, // Eredivisie Holland\n 144, // Belgium 1st div A\n 345, // Czech Liga\n 207, // Switz super league\n 98, // J1 League Japan\n 292, // K League 1\n 333, // Ukraine premier league\n 128, // Argentine Primera División\n 169, // China super league\n 233, // Egypt premier leaguye\n 262, // Liga MX Mexico\n 244, // Veikkausliiga finland\n 164, // Iceland\n 281, // Peru Primera División\n 203, // Turkey Süper Lig\n 365, // Virsliga Latvia\n 357, // Ireland Premier division\n];\n","import { Schema } from \"mongoose\";\n\nexport const teamSchema = new Schema(\n {\n id: {\n type: Number,\n required: true,\n },\n name: {\n type: String,\n required: true,\n },\n logo: {\n type: String,\n required: true,\n },\n league: {\n type: Schema.Types.ObjectId,\n ref: \"League\",\n },\n stats: {\n type: Schema.Types.ObjectId,\n ref: \"TeamStat\",\n },\n currentSeason: {\n type: Number,\n },\n fixtures: [\n {\n type: Schema.Types.ObjectId,\n ref: \"Fixture\",\n },\n ],\n },\n { timestamps: true }\n);\n","import { Schema } from \"mongoose\";\n\nexport const fixtureSchema = new Schema(\n {\n fixture: {\n type: Schema.Types.Mixed,\n },\n league: {\n type: Schema.Types.Mixed,\n },\n teams: {\n type: Schema.Types.Mixed,\n },\n goals: {\n type: Schema.Types.Mixed,\n },\n score: {\n type: Schema.Types.Mixed,\n },\n odds: {\n type: Schema.Types.Mixed,\n },\n apiPredictions: {\n type: Schema.Types.Mixed,\n },\n teamStats: {\n type: Schema.Types.Mixed,\n },\n // refs: {\n // refHomeTeamStat: {\n // type: Schema.Types.ObjectId,\n // ref: \"Stat\",\n // },\n // refAwayTeamStat: {\n // type: Schema.Types.ObjectId,\n // ref: \"Stat\",\n // },\n // refHomeTeam: {\n // type: Schema.Types.ObjectId,\n // ref: \"Team\",\n // },\n // refAwayTeam: {\n // type: Schema.Types.ObjectId,\n // ref: \"Team\",\n // },\n // },\n // odds: {\n // type: Schema.Types.Mixed,\n // },\n // prevFixtures: {\n // home: [\n // {\n // type: Schema.Types.ObjectId,\n // ref: \"Fixture\",\n // },\n // ],\n // away: [\n // {\n // type: Schema.Types.ObjectId,\n // ref: \"Fixture\",\n // },\n // ],\n // },\n // apiPredictions: {\n // type: Schema.Types.Mixed,\n // },\n // predictions: {\n // type: Schema.Types.Mixed,\n // },\n // topBets: {\n // type: Schema.Types.Mixed,\n // },\n // keyStats: {\n // type: Schema.Types.Mixed,\n // },\n // info: {\n // type: Schema.Types.Mixed,\n // },\n },\n { timestamps: true }\n);\n","import { Schema } from \"mongoose\";\n\nexport const teamStatSchema = new Schema(\n {\n leaguePosition: { type: Number },\n team: {\n id: { type: Number, required: true },\n name: { type: String, required: true },\n logo: { type: String, required: true },\n },\n biggest: {\n streak: {\n wins: { type: Number },\n draws: { type: Number },\n loses: { type: Number },\n },\n wins: {\n home: { type: String },\n away: { type: String },\n },\n loses: {\n home: { type: String },\n away: { type: String },\n },\n goals: {\n for: {\n home: { type: Number },\n away: { type: Number },\n },\n against: {\n home: { type: Number },\n away: { type: Number },\n },\n },\n },\n cards: {\n yellow: {\n \"0-15\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"16-30\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"31-45\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"46-60\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"61-75\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"76-90\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"91-105\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"106-120\": {\n total: { type: Number },\n percentage: { type: String },\n },\n },\n red: {\n \"0-15\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"16-30\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"31-45\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"46-60\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"61-75\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"76-90\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"91-105\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"106-120\": {\n total: { type: Number },\n percentage: { type: String },\n },\n },\n },\n clean_sheet: {\n home: { type: Number },\n away: { type: Number },\n total: { type: Number },\n },\n createdAt: { type: Date, default: Date.now },\n failed_to_score: {\n home: { type: Number },\n away: { type: Number },\n total: { type: Number },\n },\n fixtures: {\n played: {\n home: { type: Number },\n away: { type: Number },\n total: { type: Number },\n },\n wins: {\n home: { type: Number },\n away: { type: Number },\n total: { type: Number },\n },\n draws: {\n home: { type: Number },\n away: { type: Number },\n total: { type: Number },\n },\n loses: {\n home: { type: Number },\n away: { type: Number },\n total: { type: Number },\n },\n },\n form: { type: String },\n goals: {\n for: {\n total: {\n home: { type: Number },\n away: { type: Number },\n total: { type: Number },\n },\n average: {\n home: { type: String },\n away: { type: String },\n total: { type: String },\n },\n minute: {\n \"0-15\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"16-30\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"31-45\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"46-60\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"61-75\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"76-90\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"91-105\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"106-120\": {\n total: { type: Number },\n percentage: { type: String },\n },\n },\n under_over: {\n \"0.5\": {\n over: { type: Number },\n under: { type: Number },\n },\n \"1.5\": {\n over: { type: Number },\n under: { type: Number },\n },\n \"2.5\": {\n over: { type: Number },\n under: { type: Number },\n },\n \"3.5\": {\n over: { type: Number },\n under: { type: Number },\n },\n \"4.5\": {\n over: { type: Number },\n under: { type: Number },\n },\n },\n },\n against: {\n total: {\n home: { type: Number },\n away: { type: Number },\n total: { type: Number },\n },\n average: {\n home: { type: String },\n away: { type: String },\n total: { type: String },\n },\n minute: {\n \"0-15\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"16-30\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"31-45\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"46-60\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"61-75\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"76-90\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"91-105\": {\n total: { type: Number },\n percentage: { type: String },\n },\n \"106-120\": {\n total: { type: Number },\n percentage: { type: String },\n },\n },\n under_over: {\n \"0.5\": {\n over: { type: Number },\n under: { type: Number },\n },\n \"1.5\": {\n over: { type: Number },\n under: { type: Number },\n },\n \"2.5\": {\n over: { type: Number },\n under: { type: Number },\n },\n \"3.5\": {\n over: { type: Number },\n under: { type: Number },\n },\n \"4.5\": {\n over: { type: Number },\n under: { type: Number },\n },\n },\n },\n },\n league: {\n id: { type: Number, required: true },\n name: { type: String, required: true },\n country: { type: String, required: true },\n logo: { type: String, required: true },\n flag: { type: String, required: true },\n season: { type: Number, required: true },\n },\n lineups: [\n {\n formation: { type: String },\n played: { type: Number },\n },\n ],\n penalty: {\n scored: {\n total: { type: Number },\n percentage: { type: String },\n },\n missed: {\n total: { type: Number },\n percentage: { type: String },\n },\n total: { type: Number },\n },\n },\n { timestamps: true }\n);\n","const API_FOOTBALL_URL = `https://v3.football.api-sports.io`;\nexport const API_FOOTBALL_URL_LEAGUES = `${API_FOOTBALL_URL}/leagues`;\nexport const API_FOOTBALL_URL_TEAMS = `${API_FOOTBALL_URL}/teams`;\nexport const API_FOOTBALL_URL_FIXTURES = `${API_FOOTBALL_URL}/fixtures`;\nexport const API_FOOTBALL_URL_TEAM_STATS = `${API_FOOTBALL_URL}/teams/statistics`;\nexport const API_FOOTBALL_URL_ODDS = `${API_FOOTBALL_URL}/odds`;\nexport const API_FOOTBALL_URL_STANDINGS = `${API_FOOTBALL_URL}/standings`;\nexport const API_FOOTBALL_URL_PREDICTIONS = `${API_FOOTBALL_URL}/predictions`;\n","export function toTwoDecimalPlaces(num: number): number {\n return parseFloat(num.toFixed(2));\n}\n","export function toPercent(value: number, total: number): number {\n if (total === 0) {\n return 0;\n }\n return (value * 100) / total;\n}\n","// The four averages are the mean, median, mode, and range.\n// The mean is what you typically think as the average - found by summing all values and dividing the sum by the number of values.\n// The median is the middle value of the set (or the average of the two middle values if the set is even).\n// The mode is the piece of data that occurs the most\n// The range is the difference between the highest and lowest values.\n\nexport const getMeanModeMedian = (numbers: number[]) => {\n if (numbers.length === 0) return { mean: 0, median: 0, mode: 0 };\n\n // Mean\n const mean = numbers.reduce((acc, val) => acc + val, 0) / numbers.length;\n\n // Median\n const sortedNumbers = [...numbers].sort((a, b) => a - b);\n const mid = Math.floor(sortedNumbers.length / 2);\n const median =\n sortedNumbers.length % 2 !== 0\n ? sortedNumbers[mid]\n : (sortedNumbers[mid - 1] + sortedNumbers[mid]) / 2;\n\n // Mode\n const frequency: { [key: number]: number } = {};\n let maxFreq = 0;\n let mode = numbers[0];\n\n numbers.forEach((num) => {\n frequency[num] = (frequency[num] || 0) + 1;\n if (frequency[num] > maxFreq) {\n maxFreq = frequency[num];\n mode = num;\n }\n });\n\n return { mean, median, mode };\n};\n"],"mappings":"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","names":["Schema","Schema","Schema"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "black-diamond-shared",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Shared code between Black Diamond repositories",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -10,7 +10,7 @@
10
10
  ],
11
11
  "scripts": {
12
12
  "build": "tsup",
13
- "test": "echo \"Error: no test specified\" && exit 1"
13
+ "test": "vitest"
14
14
  },
15
15
  "repository": {
16
16
  "type": "git",
@@ -29,6 +29,7 @@
29
29
  "typescript": "^5.6.3"
30
30
  },
31
31
  "dependencies": {
32
- "mongoose": "^8.8.1"
32
+ "mongoose": "^8.8.1",
33
+ "vitest": "^2.1.5"
33
34
  }
34
35
  }