es-regional-holidays 0.1.0 → 0.1.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 ADDED
@@ -0,0 +1,676 @@
1
+ // src/data/boe_holidays_2026_national_regional.json
2
+ var boe_holidays_2026_national_regional_default = {
3
+ source: "BOE-A-2025-21667",
4
+ year: 2026,
5
+ generated_at: "2026-01-02T21:40:46Z",
6
+ national: [
7
+ {
8
+ date: "2026-01-01",
9
+ name: "A\xF1o Nuevo",
10
+ scope: "national"
11
+ },
12
+ {
13
+ date: "2026-04-03",
14
+ name: "Viernes Santo",
15
+ scope: "national"
16
+ },
17
+ {
18
+ date: "2026-05-01",
19
+ name: "Fiesta del Trabajo",
20
+ scope: "national"
21
+ },
22
+ {
23
+ date: "2026-08-15",
24
+ name: "Asunci\xF3n de la Virgen",
25
+ scope: "national"
26
+ },
27
+ {
28
+ date: "2026-10-12",
29
+ name: "Fiesta Nacional de Espa\xF1a",
30
+ scope: "national"
31
+ },
32
+ {
33
+ date: "2026-12-08",
34
+ name: "Inmaculada Concepci\xF3n",
35
+ scope: "national"
36
+ },
37
+ {
38
+ date: "2026-12-25",
39
+ name: "Natividad del Se\xF1or",
40
+ scope: "national"
41
+ }
42
+ ],
43
+ regions: {
44
+ AN: {
45
+ regionName: "Andaluc\xEDa",
46
+ regional: [
47
+ {
48
+ date: "2026-01-06",
49
+ name: "Epifan\xEDa del Se\xF1or",
50
+ scope: "regional"
51
+ },
52
+ {
53
+ date: "2026-02-28",
54
+ name: "D\xEDa de Andaluc\xEDa",
55
+ scope: "regional"
56
+ },
57
+ {
58
+ date: "2026-04-02",
59
+ name: "Jueves Santo",
60
+ scope: "regional"
61
+ },
62
+ {
63
+ date: "2026-11-02",
64
+ name: "D\xEDa siguiente a Todos los Santos",
65
+ scope: "regional"
66
+ },
67
+ {
68
+ date: "2026-12-07",
69
+ name: "Lunes siguiente al D\xEDa de la Constituci\xF3n Espa\xF1ola",
70
+ scope: "regional"
71
+ }
72
+ ]
73
+ },
74
+ AR: {
75
+ regionName: "Arag\xF3n",
76
+ regional: [
77
+ {
78
+ date: "2026-01-06",
79
+ name: "Epifan\xEDa del Se\xF1or",
80
+ scope: "regional"
81
+ },
82
+ {
83
+ date: "2026-04-02",
84
+ name: "Jueves Santo",
85
+ scope: "regional"
86
+ },
87
+ {
88
+ date: "2026-04-23",
89
+ name: "San Jorge/D\xEDa de Arag\xF3n",
90
+ scope: "regional"
91
+ },
92
+ {
93
+ date: "2026-11-02",
94
+ name: "D\xEDa siguiente a Todos los Santos",
95
+ scope: "regional"
96
+ },
97
+ {
98
+ date: "2026-12-07",
99
+ name: "Lunes siguiente al D\xEDa de la Constituci\xF3n Espa\xF1ola",
100
+ scope: "regional"
101
+ }
102
+ ]
103
+ },
104
+ AS: {
105
+ regionName: "Asturias",
106
+ regional: [
107
+ {
108
+ date: "2026-01-06",
109
+ name: "Epifan\xEDa del Se\xF1or",
110
+ scope: "regional"
111
+ },
112
+ {
113
+ date: "2026-04-02",
114
+ name: "Jueves Santo",
115
+ scope: "regional"
116
+ },
117
+ {
118
+ date: "2026-09-08",
119
+ name: "D\xEDa de Asturias",
120
+ scope: "regional"
121
+ },
122
+ {
123
+ date: "2026-11-02",
124
+ name: "D\xEDa siguiente a Todos los Santos",
125
+ scope: "regional"
126
+ },
127
+ {
128
+ date: "2026-12-07",
129
+ name: "Lunes siguiente al D\xEDa de la Constituci\xF3n Espa\xF1ola",
130
+ scope: "regional"
131
+ }
132
+ ]
133
+ },
134
+ CB: {
135
+ regionName: "Cantabria",
136
+ regional: [
137
+ {
138
+ date: "2026-01-06",
139
+ name: "Epifan\xEDa del Se\xF1or",
140
+ scope: "regional"
141
+ },
142
+ {
143
+ date: "2026-04-02",
144
+ name: "Jueves Santo",
145
+ scope: "regional"
146
+ },
147
+ {
148
+ date: "2026-07-28",
149
+ name: "D\xEDa de las Instituciones de Cantabria",
150
+ scope: "regional"
151
+ },
152
+ {
153
+ date: "2026-09-15",
154
+ name: "La Bien Aparecida",
155
+ scope: "regional"
156
+ },
157
+ {
158
+ date: "2026-12-07",
159
+ name: "Lunes siguiente al D\xEDa de la Constituci\xF3n Espa\xF1ola",
160
+ scope: "regional"
161
+ }
162
+ ]
163
+ },
164
+ CE: {
165
+ regionName: "Ciudad de Ceuta",
166
+ regional: [
167
+ {
168
+ date: "2026-01-06",
169
+ name: "Epifan\xEDa del Se\xF1or",
170
+ scope: "regional"
171
+ },
172
+ {
173
+ date: "2026-04-02",
174
+ name: "Jueves Santo",
175
+ scope: "regional"
176
+ },
177
+ {
178
+ date: "2026-05-27",
179
+ name: "Fiesta Sacrificio-Eidul Adha",
180
+ scope: "regional"
181
+ },
182
+ {
183
+ date: "2026-08-05",
184
+ name: "Nuestra Se\xF1ora de \xC1frica",
185
+ scope: "regional"
186
+ },
187
+ {
188
+ date: "2026-09-02",
189
+ name: "D\xEDa de Ceuta",
190
+ scope: "regional"
191
+ }
192
+ ]
193
+ },
194
+ CL: {
195
+ regionName: "Castilla y Le\xF3n",
196
+ regional: [
197
+ {
198
+ date: "2026-01-06",
199
+ name: "Epifan\xEDa del Se\xF1or",
200
+ scope: "regional"
201
+ },
202
+ {
203
+ date: "2026-04-02",
204
+ name: "Jueves Santo",
205
+ scope: "regional"
206
+ },
207
+ {
208
+ date: "2026-04-23",
209
+ name: "Fiesta de Castilla y Le\xF3n",
210
+ scope: "regional"
211
+ },
212
+ {
213
+ date: "2026-11-02",
214
+ name: "D\xEDa siguiente a Todos los Santos",
215
+ scope: "regional"
216
+ },
217
+ {
218
+ date: "2026-12-07",
219
+ name: "Lunes siguiente al D\xEDa de la Constituci\xF3n Espa\xF1ola",
220
+ scope: "regional"
221
+ }
222
+ ]
223
+ },
224
+ CM: {
225
+ regionName: "Castilla-La Mancha",
226
+ regional: [
227
+ {
228
+ date: "2026-01-06",
229
+ name: "Epifan\xEDa del Se\xF1or",
230
+ scope: "regional"
231
+ },
232
+ {
233
+ date: "2026-04-02",
234
+ name: "Jueves Santo",
235
+ scope: "regional"
236
+ },
237
+ {
238
+ date: "2026-04-06",
239
+ name: "Lunes de Pascua",
240
+ scope: "regional"
241
+ },
242
+ {
243
+ date: "2026-06-04",
244
+ name: "Corpus Christi",
245
+ scope: "regional"
246
+ },
247
+ {
248
+ date: "2026-11-02",
249
+ name: "D\xEDa siguiente a Todos los Santos",
250
+ scope: "regional"
251
+ }
252
+ ]
253
+ },
254
+ CN: {
255
+ regionName: "Canarias",
256
+ regional: [
257
+ {
258
+ date: "2026-01-06",
259
+ name: "Epifan\xEDa del Se\xF1or",
260
+ scope: "regional"
261
+ },
262
+ {
263
+ date: "2026-04-02",
264
+ name: "Jueves Santo",
265
+ scope: "regional"
266
+ },
267
+ {
268
+ date: "2026-05-30",
269
+ name: "D\xEDa de Canarias",
270
+ scope: "regional"
271
+ },
272
+ {
273
+ date: "2026-11-02",
274
+ name: "D\xEDa siguiente a Todos los Santos",
275
+ scope: "regional"
276
+ }
277
+ ]
278
+ },
279
+ CT: {
280
+ regionName: "Catalu\xF1a",
281
+ regional: [
282
+ {
283
+ date: "2026-01-06",
284
+ name: "Epifan\xEDa del Se\xF1or",
285
+ scope: "regional"
286
+ },
287
+ {
288
+ date: "2026-04-06",
289
+ name: "Lunes de Pascua",
290
+ scope: "regional"
291
+ },
292
+ {
293
+ date: "2026-09-11",
294
+ name: "Fiesta Nacional de Catalu\xF1a",
295
+ scope: "regional"
296
+ },
297
+ {
298
+ date: "2026-12-26",
299
+ name: "San Esteban",
300
+ scope: "regional"
301
+ }
302
+ ]
303
+ },
304
+ EX: {
305
+ regionName: "Extremadura",
306
+ regional: [
307
+ {
308
+ date: "2026-01-06",
309
+ name: "Epifan\xEDa del Se\xF1or",
310
+ scope: "regional"
311
+ },
312
+ {
313
+ date: "2026-04-02",
314
+ name: "Jueves Santo",
315
+ scope: "regional"
316
+ },
317
+ {
318
+ date: "2026-09-08",
319
+ name: "D\xEDa de Extremadura",
320
+ scope: "regional"
321
+ },
322
+ {
323
+ date: "2026-11-02",
324
+ name: "D\xEDa siguiente a Todos los Santos",
325
+ scope: "regional"
326
+ },
327
+ {
328
+ date: "2026-12-07",
329
+ name: "Lunes siguiente al D\xEDa de la Constituci\xF3n Espa\xF1ola",
330
+ scope: "regional"
331
+ }
332
+ ]
333
+ },
334
+ GA: {
335
+ regionName: "Galicia",
336
+ regional: [
337
+ {
338
+ date: "2026-01-06",
339
+ name: "Epifan\xEDa del Se\xF1or",
340
+ scope: "regional"
341
+ },
342
+ {
343
+ date: "2026-03-19",
344
+ name: "San Jos\xE9",
345
+ scope: "regional"
346
+ },
347
+ {
348
+ date: "2026-04-02",
349
+ name: "Jueves Santo",
350
+ scope: "regional"
351
+ },
352
+ {
353
+ date: "2026-07-25",
354
+ name: "Santiago Ap\xF3stol/D\xEDa Nacional de Galicia",
355
+ scope: "regional"
356
+ }
357
+ ]
358
+ },
359
+ IB: {
360
+ regionName: "Illes Balears",
361
+ regional: [
362
+ {
363
+ date: "2026-01-06",
364
+ name: "Epifan\xEDa del Se\xF1or",
365
+ scope: "regional"
366
+ },
367
+ {
368
+ date: "2026-03-02",
369
+ name: "Lunes siguiente al D\xEDa de les Illes Balears",
370
+ scope: "regional"
371
+ },
372
+ {
373
+ date: "2026-04-02",
374
+ name: "Jueves Santo",
375
+ scope: "regional"
376
+ },
377
+ {
378
+ date: "2026-04-06",
379
+ name: "Lunes de Pascua",
380
+ scope: "regional"
381
+ },
382
+ {
383
+ date: "2026-12-26",
384
+ name: "San Esteban",
385
+ scope: "regional"
386
+ }
387
+ ]
388
+ },
389
+ MC: {
390
+ regionName: "Regi\xF3n Murcia",
391
+ regional: [
392
+ {
393
+ date: "2026-01-06",
394
+ name: "Epifan\xEDa del Se\xF1or",
395
+ scope: "regional"
396
+ },
397
+ {
398
+ date: "2026-03-19",
399
+ name: "San Jos\xE9",
400
+ scope: "regional"
401
+ },
402
+ {
403
+ date: "2026-04-02",
404
+ name: "Jueves Santo",
405
+ scope: "regional"
406
+ },
407
+ {
408
+ date: "2026-12-07",
409
+ name: "Lunes siguiente al D\xEDa de la Constituci\xF3n Espa\xF1ola",
410
+ scope: "regional"
411
+ }
412
+ ]
413
+ },
414
+ MD: {
415
+ regionName: "Com. Madrid",
416
+ regional: [
417
+ {
418
+ date: "2026-01-06",
419
+ name: "Epifan\xEDa del Se\xF1or",
420
+ scope: "regional"
421
+ },
422
+ {
423
+ date: "2026-04-02",
424
+ name: "Jueves Santo",
425
+ scope: "regional"
426
+ },
427
+ {
428
+ date: "2026-05-02",
429
+ name: "Fiesta de la Comunidad de Madrid",
430
+ scope: "regional"
431
+ },
432
+ {
433
+ date: "2026-11-02",
434
+ name: "D\xEDa siguiente a Todos los Santos",
435
+ scope: "regional"
436
+ },
437
+ {
438
+ date: "2026-12-07",
439
+ name: "Lunes siguiente al D\xEDa de la Constituci\xF3n Espa\xF1ola",
440
+ scope: "regional"
441
+ }
442
+ ]
443
+ },
444
+ ML: {
445
+ regionName: "Ciudad de Melilla",
446
+ regional: [
447
+ {
448
+ date: "2026-01-06",
449
+ name: "Epifan\xEDa del Se\xF1or",
450
+ scope: "regional"
451
+ },
452
+ {
453
+ date: "2026-03-20",
454
+ name: "Fiesta del Eid Fitr",
455
+ scope: "regional"
456
+ },
457
+ {
458
+ date: "2026-04-02",
459
+ name: "Jueves Santo",
460
+ scope: "regional"
461
+ },
462
+ {
463
+ date: "2026-05-27",
464
+ name: "Fiesta Sacrificio-Aid al Adha",
465
+ scope: "regional"
466
+ },
467
+ {
468
+ date: "2026-12-07",
469
+ name: "Lunes siguiente al D\xEDa de la Constituci\xF3n Espa\xF1ola",
470
+ scope: "regional"
471
+ }
472
+ ]
473
+ },
474
+ NC: {
475
+ regionName: "C. Foral Navarra",
476
+ regional: [
477
+ {
478
+ date: "2026-01-06",
479
+ name: "Epifan\xEDa del Se\xF1or",
480
+ scope: "regional"
481
+ },
482
+ {
483
+ date: "2026-03-19",
484
+ name: "San Jos\xE9",
485
+ scope: "regional"
486
+ },
487
+ {
488
+ date: "2026-04-02",
489
+ name: "Jueves Santo",
490
+ scope: "regional"
491
+ },
492
+ {
493
+ date: "2026-04-06",
494
+ name: "Lunes de Pascua",
495
+ scope: "regional"
496
+ },
497
+ {
498
+ date: "2026-11-02",
499
+ name: "D\xEDa siguiente a Todos los Santos",
500
+ scope: "regional"
501
+ }
502
+ ]
503
+ },
504
+ PV: {
505
+ regionName: "Pa\xEDs Vasco",
506
+ regional: [
507
+ {
508
+ date: "2026-01-06",
509
+ name: "Epifan\xEDa del Se\xF1or",
510
+ scope: "regional"
511
+ },
512
+ {
513
+ date: "2026-03-19",
514
+ name: "San Jos\xE9",
515
+ scope: "regional"
516
+ },
517
+ {
518
+ date: "2026-04-02",
519
+ name: "Jueves Santo",
520
+ scope: "regional"
521
+ },
522
+ {
523
+ date: "2026-04-06",
524
+ name: "Lunes de Pascua",
525
+ scope: "regional"
526
+ },
527
+ {
528
+ date: "2026-07-25",
529
+ name: "Santiago Ap\xF3stol/D\xEDa Nacional de Galicia",
530
+ scope: "regional"
531
+ }
532
+ ]
533
+ },
534
+ RI: {
535
+ regionName: "La Rioja",
536
+ regional: [
537
+ {
538
+ date: "2026-01-06",
539
+ name: "Epifan\xEDa del Se\xF1or",
540
+ scope: "regional"
541
+ },
542
+ {
543
+ date: "2026-04-02",
544
+ name: "Jueves Santo",
545
+ scope: "regional"
546
+ },
547
+ {
548
+ date: "2026-04-06",
549
+ name: "Lunes de Pascua",
550
+ scope: "regional"
551
+ },
552
+ {
553
+ date: "2026-12-07",
554
+ name: "Lunes siguiente al D\xEDa de la Constituci\xF3n Espa\xF1ola",
555
+ scope: "regional"
556
+ }
557
+ ]
558
+ },
559
+ VC: {
560
+ regionName: "Comunitat Valenciana",
561
+ regional: [
562
+ {
563
+ date: "2026-01-06",
564
+ name: "Epifan\xEDa del Se\xF1or",
565
+ scope: "regional"
566
+ },
567
+ {
568
+ date: "2026-03-19",
569
+ name: "San Jos\xE9",
570
+ scope: "regional"
571
+ },
572
+ {
573
+ date: "2026-04-06",
574
+ name: "Lunes de Pascua",
575
+ scope: "regional"
576
+ },
577
+ {
578
+ date: "2026-10-09",
579
+ name: "D\xEDa de la Comunitat Valenciana",
580
+ scope: "regional"
581
+ }
582
+ ]
583
+ }
584
+ }
585
+ };
586
+
587
+ // src/index.ts
588
+ var DATASETS = {
589
+ 2026: boe_holidays_2026_national_regional_default
590
+ };
591
+ function getDataset(year) {
592
+ const y = year ?? 2026;
593
+ return DATASETS[y];
594
+ }
595
+ function sortHolidaysByDate(a, b) {
596
+ const byDate = a.date.localeCompare(b.date);
597
+ if (byDate !== 0) return byDate;
598
+ const byName = a.name.localeCompare(b.name);
599
+ if (byName !== 0) return byName;
600
+ return (a.region ?? "").localeCompare(b.region ?? "");
601
+ }
602
+ function getAllHolidays(year) {
603
+ const dataset = getDataset(year);
604
+ if (!dataset) return [];
605
+ const result = [];
606
+ for (const nationalHoliday of dataset.national) {
607
+ result.push({
608
+ date: nationalHoliday.date,
609
+ name: nationalHoliday.name,
610
+ scope: "national",
611
+ source: dataset.source
612
+ });
613
+ }
614
+ for (const [code, regionData] of Object.entries(dataset.regions)) {
615
+ for (const regionalHoliday of regionData.regional) {
616
+ result.push({
617
+ date: regionalHoliday.date,
618
+ name: regionalHoliday.name,
619
+ scope: "regional",
620
+ region: code,
621
+ regionName: regionData.regionName,
622
+ source: dataset.source
623
+ });
624
+ }
625
+ }
626
+ return result.sort(sortHolidaysByDate);
627
+ }
628
+ function getNationalHolidays(year) {
629
+ const dataset = getDataset(year);
630
+ if (!dataset) return [];
631
+ return dataset.national.map((nationalHoliday) => ({
632
+ date: nationalHoliday.date,
633
+ name: nationalHoliday.name,
634
+ scope: "national",
635
+ source: dataset.source
636
+ }));
637
+ }
638
+ function getRegionalHolidaysByRegionCode(region, year) {
639
+ const dataset = getDataset(year);
640
+ if (!dataset) return [];
641
+ const regionData = dataset.regions[region];
642
+ if (!regionData) return [];
643
+ return regionData.regional.map((regionalHoliday) => ({
644
+ date: regionalHoliday.date,
645
+ name: regionalHoliday.name,
646
+ scope: "regional",
647
+ region,
648
+ regionName: regionData.regionName,
649
+ source: dataset.source
650
+ }));
651
+ }
652
+ function getAllHolidaysByRegionCode(region, year) {
653
+ const holidays = [
654
+ ...getNationalHolidays(year),
655
+ ...getRegionalHolidaysByRegionCode(region, year)
656
+ ];
657
+ return holidays.sort(sortHolidaysByDate);
658
+ }
659
+ function isHoliday(date, region, year) {
660
+ const iso = date instanceof Date ? `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}` : date;
661
+ if (region) return getAllHolidaysByRegionCode(region, year).some((h) => h.date === iso);
662
+ return getNationalHolidays(year).some((h) => h.date === iso);
663
+ }
664
+ function getAllRegions(year) {
665
+ const dataset = getDataset(year);
666
+ if (!dataset) return [];
667
+ return Object.keys(dataset.regions).sort();
668
+ }
669
+ export {
670
+ getAllHolidays,
671
+ getAllHolidaysByRegionCode,
672
+ getAllRegions,
673
+ getNationalHolidays,
674
+ getRegionalHolidaysByRegionCode,
675
+ isHoliday
676
+ };