@catlabtech/mycal-mcp-server 0.1.1 → 0.1.3
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/LICENSE +21 -0
- package/README.md +3 -0
- package/dist/index.js +2970 -54
- package/package.json +9 -4
package/dist/index.js
CHANGED
|
@@ -4,9 +4,2912 @@
|
|
|
4
4
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
5
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
6
6
|
import { z } from "zod";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
|
|
8
|
+
// ../../data/states.json
|
|
9
|
+
var states_default = [
|
|
10
|
+
{
|
|
11
|
+
code: "johor",
|
|
12
|
+
aliases: ["jhr", "JHR", "jb", "JB", "johor-bahru"],
|
|
13
|
+
name: { ms: "Johor", en: "Johor" },
|
|
14
|
+
type: "state",
|
|
15
|
+
weekendHistory: [
|
|
16
|
+
{ from: "2025-01-01", to: null, weekendDays: [0, 6], group: "B" },
|
|
17
|
+
{ from: "2014-01-01", to: "2024-12-31", weekendDays: [5, 6], group: "A" },
|
|
18
|
+
{ from: "1900-01-01", to: "2013-12-31", weekendDays: [0, 6], group: "B" }
|
|
19
|
+
],
|
|
20
|
+
group: "B"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
code: "kedah",
|
|
24
|
+
aliases: ["kd", "KDH", "kdh", "alor-setar"],
|
|
25
|
+
name: { ms: "Kedah", en: "Kedah" },
|
|
26
|
+
type: "state",
|
|
27
|
+
weekendHistory: [
|
|
28
|
+
{ from: "1900-01-01", to: null, weekendDays: [5, 6], group: "A" }
|
|
29
|
+
],
|
|
30
|
+
group: "A"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
code: "kelantan",
|
|
34
|
+
aliases: ["kel", "KEL", "kb", "KB", "kota-bharu"],
|
|
35
|
+
name: { ms: "Kelantan", en: "Kelantan" },
|
|
36
|
+
type: "state",
|
|
37
|
+
weekendHistory: [
|
|
38
|
+
{ from: "1900-01-01", to: null, weekendDays: [5, 6], group: "A" }
|
|
39
|
+
],
|
|
40
|
+
group: "A"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
code: "terengganu",
|
|
44
|
+
aliases: ["trg", "TRG", "kt", "KT", "kuala-terengganu"],
|
|
45
|
+
name: { ms: "Terengganu", en: "Terengganu" },
|
|
46
|
+
type: "state",
|
|
47
|
+
weekendHistory: [
|
|
48
|
+
{ from: "1900-01-01", to: null, weekendDays: [5, 6], group: "A" }
|
|
49
|
+
],
|
|
50
|
+
group: "A"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
code: "perak",
|
|
54
|
+
aliases: ["prk", "PRK", "ipoh"],
|
|
55
|
+
name: { ms: "Perak", en: "Perak" },
|
|
56
|
+
type: "state",
|
|
57
|
+
weekendHistory: [
|
|
58
|
+
{ from: "1900-01-01", to: null, weekendDays: [0, 6], group: "B" }
|
|
59
|
+
],
|
|
60
|
+
group: "B"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
code: "pulau-pinang",
|
|
64
|
+
aliases: ["penang", "pg", "PG", "png", "pinang", "georgetown"],
|
|
65
|
+
name: { ms: "Pulau Pinang", en: "Penang" },
|
|
66
|
+
type: "state",
|
|
67
|
+
weekendHistory: [
|
|
68
|
+
{ from: "1900-01-01", to: null, weekendDays: [0, 6], group: "B" }
|
|
69
|
+
],
|
|
70
|
+
group: "B"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
code: "selangor",
|
|
74
|
+
aliases: ["sel", "SEL", "sgr", "SGR"],
|
|
75
|
+
name: { ms: "Selangor", en: "Selangor" },
|
|
76
|
+
type: "state",
|
|
77
|
+
weekendHistory: [
|
|
78
|
+
{ from: "1900-01-01", to: null, weekendDays: [0, 6], group: "B" }
|
|
79
|
+
],
|
|
80
|
+
group: "B"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
code: "negeri-sembilan",
|
|
84
|
+
aliases: ["ns", "NS", "n9", "N9", "n.sembilan", "seremban"],
|
|
85
|
+
name: { ms: "Negeri Sembilan", en: "Negeri Sembilan" },
|
|
86
|
+
type: "state",
|
|
87
|
+
weekendHistory: [
|
|
88
|
+
{ from: "1900-01-01", to: null, weekendDays: [0, 6], group: "B" }
|
|
89
|
+
],
|
|
90
|
+
group: "B"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
code: "melaka",
|
|
94
|
+
aliases: ["mlk", "MLK", "malacca", "melacca"],
|
|
95
|
+
name: { ms: "Melaka", en: "Malacca" },
|
|
96
|
+
type: "state",
|
|
97
|
+
weekendHistory: [
|
|
98
|
+
{ from: "1900-01-01", to: null, weekendDays: [0, 6], group: "B" }
|
|
99
|
+
],
|
|
100
|
+
group: "B"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
code: "pahang",
|
|
104
|
+
aliases: ["phg", "PHG", "kuantan"],
|
|
105
|
+
name: { ms: "Pahang", en: "Pahang" },
|
|
106
|
+
type: "state",
|
|
107
|
+
weekendHistory: [
|
|
108
|
+
{ from: "1900-01-01", to: null, weekendDays: [0, 6], group: "B" }
|
|
109
|
+
],
|
|
110
|
+
group: "B"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
code: "perlis",
|
|
114
|
+
aliases: ["pls", "PLS", "kangar"],
|
|
115
|
+
name: { ms: "Perlis", en: "Perlis" },
|
|
116
|
+
type: "state",
|
|
117
|
+
weekendHistory: [
|
|
118
|
+
{ from: "1900-01-01", to: null, weekendDays: [0, 6], group: "B" }
|
|
119
|
+
],
|
|
120
|
+
group: "B"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
code: "sabah",
|
|
124
|
+
aliases: ["sbh", "SBH", "kk", "KK", "kota-kinabalu"],
|
|
125
|
+
name: { ms: "Sabah", en: "Sabah" },
|
|
126
|
+
type: "state",
|
|
127
|
+
weekendHistory: [
|
|
128
|
+
{ from: "1900-01-01", to: null, weekendDays: [0, 6], group: "B" }
|
|
129
|
+
],
|
|
130
|
+
group: "B"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
code: "sarawak",
|
|
134
|
+
aliases: ["swk", "SWK", "kuching"],
|
|
135
|
+
name: { ms: "Sarawak", en: "Sarawak" },
|
|
136
|
+
type: "state",
|
|
137
|
+
weekendHistory: [
|
|
138
|
+
{ from: "1900-01-01", to: null, weekendDays: [0, 6], group: "B" }
|
|
139
|
+
],
|
|
140
|
+
group: "B"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
code: "kuala-lumpur",
|
|
144
|
+
aliases: ["kl", "KL", "kualalumpur", "wp-kl", "wpkl"],
|
|
145
|
+
name: { ms: "Wilayah Persekutuan Kuala Lumpur", en: "Federal Territory of Kuala Lumpur" },
|
|
146
|
+
type: "federal_territory",
|
|
147
|
+
weekendHistory: [
|
|
148
|
+
{ from: "1900-01-01", to: null, weekendDays: [0, 6], group: "B" }
|
|
149
|
+
],
|
|
150
|
+
group: "B"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
code: "wp-putrajaya",
|
|
154
|
+
aliases: ["putrajaya", "pjy", "PJY"],
|
|
155
|
+
name: { ms: "Wilayah Persekutuan Putrajaya", en: "Federal Territory of Putrajaya" },
|
|
156
|
+
type: "federal_territory",
|
|
157
|
+
weekendHistory: [
|
|
158
|
+
{ from: "1900-01-01", to: null, weekendDays: [0, 6], group: "B" }
|
|
159
|
+
],
|
|
160
|
+
group: "B"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
code: "wp-labuan",
|
|
164
|
+
aliases: ["labuan", "lbn", "LBN"],
|
|
165
|
+
name: { ms: "Wilayah Persekutuan Labuan", en: "Federal Territory of Labuan" },
|
|
166
|
+
type: "federal_territory",
|
|
167
|
+
weekendHistory: [
|
|
168
|
+
{ from: "1900-01-01", to: null, weekendDays: [0, 6], group: "B" }
|
|
169
|
+
],
|
|
170
|
+
group: "B"
|
|
171
|
+
}
|
|
172
|
+
];
|
|
173
|
+
|
|
174
|
+
// ../../data/holidays/2024.json
|
|
175
|
+
var __default = [
|
|
176
|
+
{
|
|
177
|
+
id: "2024-tahun-baharu",
|
|
178
|
+
date: "2024-01-01",
|
|
179
|
+
name: { ms: "Tahun Baharu", en: "New Year's Day", zh: "\u5143\u65E6" },
|
|
180
|
+
type: "state",
|
|
181
|
+
status: "confirmed",
|
|
182
|
+
states: ["perak", "pulau-pinang", "selangor", "negeri-sembilan", "melaka", "pahang", "sabah", "sarawak", "kuala-lumpur", "wp-putrajaya", "wp-labuan", "perlis"],
|
|
183
|
+
isPublicHoliday: true,
|
|
184
|
+
gazetteLevel: "N",
|
|
185
|
+
source: "jpm",
|
|
186
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
187
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
id: "2024-keputeraan-ydb-ns",
|
|
191
|
+
date: "2024-01-14",
|
|
192
|
+
name: { ms: "Hari Keputeraan Yang di-Pertuan Besar Negeri Sembilan", en: "Birthday of Yang di-Pertuan Besar of Negeri Sembilan" },
|
|
193
|
+
type: "state",
|
|
194
|
+
status: "confirmed",
|
|
195
|
+
states: ["negeri-sembilan"],
|
|
196
|
+
isPublicHoliday: true,
|
|
197
|
+
gazetteLevel: "N",
|
|
198
|
+
source: "jpm",
|
|
199
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
200
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
id: "2024-thaipusam",
|
|
204
|
+
date: "2024-01-25",
|
|
205
|
+
name: { ms: "Hari Thaipusam", en: "Thaipusam", zh: "\u5927\u5B9D\u68EE\u8282" },
|
|
206
|
+
type: "federal",
|
|
207
|
+
status: "confirmed",
|
|
208
|
+
states: ["*"],
|
|
209
|
+
isPublicHoliday: true,
|
|
210
|
+
gazetteLevel: "P",
|
|
211
|
+
source: "jpm",
|
|
212
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
213
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
id: "2024-hari-wilayah",
|
|
217
|
+
date: "2024-02-01",
|
|
218
|
+
name: { ms: "Hari Wilayah Persekutuan", en: "Federal Territory Day", zh: "\u8054\u90A6\u76F4\u8F96\u533A\u65E5" },
|
|
219
|
+
type: "state",
|
|
220
|
+
status: "confirmed",
|
|
221
|
+
states: ["kuala-lumpur", "wp-putrajaya", "wp-labuan"],
|
|
222
|
+
isPublicHoliday: true,
|
|
223
|
+
gazetteLevel: "N",
|
|
224
|
+
source: "jpm",
|
|
225
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
226
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
id: "2024-israk-mikraj",
|
|
230
|
+
date: "2024-02-08",
|
|
231
|
+
name: { ms: "Israk dan Mikraj", en: "Isra' Mi'raj", zh: "\u591C\u884C\u767B\u9704" },
|
|
232
|
+
type: "islamic",
|
|
233
|
+
status: "confirmed",
|
|
234
|
+
states: ["*"],
|
|
235
|
+
isPublicHoliday: true,
|
|
236
|
+
gazetteLevel: "P",
|
|
237
|
+
hijriDate: "27 Rejab 1445",
|
|
238
|
+
source: "jpm",
|
|
239
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
240
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
id: "2024-tahun-baharu-cina-1",
|
|
244
|
+
date: "2024-02-10",
|
|
245
|
+
name: { ms: "Tahun Baharu Cina", en: "Chinese New Year", zh: "\u519C\u5386\u65B0\u5E74" },
|
|
246
|
+
type: "federal",
|
|
247
|
+
status: "confirmed",
|
|
248
|
+
states: ["*"],
|
|
249
|
+
isPublicHoliday: true,
|
|
250
|
+
gazetteLevel: "P",
|
|
251
|
+
source: "jpm",
|
|
252
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
253
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
id: "2024-tahun-baharu-cina-2",
|
|
257
|
+
date: "2024-02-11",
|
|
258
|
+
name: { ms: "Tahun Baharu Cina (Hari Kedua)", en: "Chinese New Year (2nd Day)", zh: "\u519C\u5386\u65B0\u5E74\uFF08\u7B2C\u4E8C\u5929\uFF09" },
|
|
259
|
+
type: "federal",
|
|
260
|
+
status: "confirmed",
|
|
261
|
+
states: ["*"],
|
|
262
|
+
isPublicHoliday: true,
|
|
263
|
+
gazetteLevel: "P",
|
|
264
|
+
source: "jpm",
|
|
265
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
266
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
id: "2024-pertabalan-sultan-terengganu",
|
|
270
|
+
date: "2024-03-04",
|
|
271
|
+
name: { ms: "Hari Ulang Tahun Pertabalan Sultan Terengganu", en: "Anniversary of Sultan of Terengganu's Installation" },
|
|
272
|
+
type: "state",
|
|
273
|
+
status: "confirmed",
|
|
274
|
+
states: ["terengganu"],
|
|
275
|
+
isPublicHoliday: true,
|
|
276
|
+
gazetteLevel: "N",
|
|
277
|
+
source: "jpm",
|
|
278
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
279
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
id: "2024-awal-ramadan",
|
|
283
|
+
date: "2024-03-12",
|
|
284
|
+
name: { ms: "Awal Ramadan", en: "Beginning of Ramadan", zh: "\u658B\u6212\u6708\u9996\u65E5" },
|
|
285
|
+
type: "islamic_state",
|
|
286
|
+
status: "confirmed",
|
|
287
|
+
states: ["johor", "kedah", "kelantan", "terengganu", "melaka", "perlis"],
|
|
288
|
+
isPublicHoliday: true,
|
|
289
|
+
gazetteLevel: "N",
|
|
290
|
+
hijriDate: "1 Ramadan 1445",
|
|
291
|
+
source: "jpm",
|
|
292
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
293
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
id: "2024-keputeraan-sultan-johor",
|
|
297
|
+
date: "2024-03-23",
|
|
298
|
+
name: { ms: "Hari Keputeraan Sultan Johor", en: "Birthday of Sultan of Johor" },
|
|
299
|
+
type: "state",
|
|
300
|
+
status: "confirmed",
|
|
301
|
+
states: ["johor"],
|
|
302
|
+
isPublicHoliday: true,
|
|
303
|
+
gazetteLevel: "N",
|
|
304
|
+
source: "jpm",
|
|
305
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
306
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
id: "2024-nuzul-quran",
|
|
310
|
+
date: "2024-03-28",
|
|
311
|
+
name: { ms: "Hari Nuzul Al-Quran", en: "Revelation of the Quran", zh: "\u53EF\u5170\u7ECF\u964D\u4E16" },
|
|
312
|
+
type: "islamic",
|
|
313
|
+
status: "confirmed",
|
|
314
|
+
states: ["*"],
|
|
315
|
+
isPublicHoliday: true,
|
|
316
|
+
gazetteLevel: "P",
|
|
317
|
+
hijriDate: "17 Ramadan 1445",
|
|
318
|
+
source: "jpm",
|
|
319
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
320
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
id: "2024-good-friday",
|
|
324
|
+
date: "2024-03-29",
|
|
325
|
+
name: { ms: "Good Friday", en: "Good Friday", zh: "\u8036\u7A23\u53D7\u96BE\u65E5" },
|
|
326
|
+
type: "state",
|
|
327
|
+
status: "confirmed",
|
|
328
|
+
states: ["sabah", "sarawak"],
|
|
329
|
+
isPublicHoliday: true,
|
|
330
|
+
gazetteLevel: "N",
|
|
331
|
+
source: "jpm",
|
|
332
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
333
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
id: "2024-hari-raya-aidilfitri-1",
|
|
337
|
+
date: "2024-04-10",
|
|
338
|
+
name: { ms: "Hari Raya Aidilfitri", en: "Eid al-Fitr", zh: "\u5F00\u658B\u8282" },
|
|
339
|
+
type: "islamic",
|
|
340
|
+
status: "confirmed",
|
|
341
|
+
states: ["*"],
|
|
342
|
+
isPublicHoliday: true,
|
|
343
|
+
gazetteLevel: "P",
|
|
344
|
+
hijriDate: "1 Syawal 1445",
|
|
345
|
+
source: "jpm",
|
|
346
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
347
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
id: "2024-hari-raya-aidilfitri-2",
|
|
351
|
+
date: "2024-04-11",
|
|
352
|
+
name: { ms: "Hari Raya Aidilfitri (Hari Kedua)", en: "Eid al-Fitr (2nd Day)", zh: "\u5F00\u658B\u8282\uFF08\u7B2C\u4E8C\u5929\uFF09" },
|
|
353
|
+
type: "islamic",
|
|
354
|
+
status: "confirmed",
|
|
355
|
+
states: ["*"],
|
|
356
|
+
isPublicHoliday: true,
|
|
357
|
+
gazetteLevel: "P",
|
|
358
|
+
hijriDate: "2 Syawal 1445",
|
|
359
|
+
source: "jpm",
|
|
360
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
361
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
id: "2024-keputeraan-sultan-terengganu",
|
|
365
|
+
date: "2024-04-26",
|
|
366
|
+
name: { ms: "Hari Keputeraan Sultan Terengganu", en: "Birthday of Sultan of Terengganu" },
|
|
367
|
+
type: "state",
|
|
368
|
+
status: "confirmed",
|
|
369
|
+
states: ["terengganu"],
|
|
370
|
+
isPublicHoliday: true,
|
|
371
|
+
gazetteLevel: "N",
|
|
372
|
+
source: "jpm",
|
|
373
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
374
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
id: "2024-hari-pekerja",
|
|
378
|
+
date: "2024-05-01",
|
|
379
|
+
name: { ms: "Hari Pekerja", en: "Labour Day", zh: "\u52B3\u52A8\u8282" },
|
|
380
|
+
type: "federal",
|
|
381
|
+
status: "confirmed",
|
|
382
|
+
states: ["*"],
|
|
383
|
+
isPublicHoliday: true,
|
|
384
|
+
gazetteLevel: "P",
|
|
385
|
+
source: "jpm",
|
|
386
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
387
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
id: "2024-keputeraan-raja-perlis",
|
|
391
|
+
date: "2024-05-17",
|
|
392
|
+
name: { ms: "Hari Ulang Tahun Keputeraan Raja Perlis", en: "Birthday of Raja of Perlis" },
|
|
393
|
+
type: "state",
|
|
394
|
+
status: "confirmed",
|
|
395
|
+
states: ["perlis"],
|
|
396
|
+
isPublicHoliday: true,
|
|
397
|
+
gazetteLevel: "N",
|
|
398
|
+
source: "jpm",
|
|
399
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
400
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
id: "2024-hari-hol-pahang",
|
|
404
|
+
date: "2024-05-22",
|
|
405
|
+
name: { ms: "Hari Hol Pahang", en: "Pahang Hol Day" },
|
|
406
|
+
type: "state",
|
|
407
|
+
status: "confirmed",
|
|
408
|
+
states: ["pahang"],
|
|
409
|
+
isPublicHoliday: true,
|
|
410
|
+
gazetteLevel: "N",
|
|
411
|
+
source: "jpm",
|
|
412
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
413
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
id: "2024-hari-wesak",
|
|
417
|
+
date: "2024-05-22",
|
|
418
|
+
name: { ms: "Hari Wesak", en: "Vesak Day", zh: "\u536B\u585E\u8282" },
|
|
419
|
+
type: "federal",
|
|
420
|
+
status: "confirmed",
|
|
421
|
+
states: ["*"],
|
|
422
|
+
isPublicHoliday: true,
|
|
423
|
+
gazetteLevel: "P",
|
|
424
|
+
source: "jpm",
|
|
425
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
426
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
id: "2024-pesta-kaamatan-1",
|
|
430
|
+
date: "2024-05-30",
|
|
431
|
+
name: { ms: "Pesta Kaamatan (Pesta Menuai)", en: "Harvest Festival (Kaamatan)" },
|
|
432
|
+
type: "state",
|
|
433
|
+
status: "confirmed",
|
|
434
|
+
states: ["sabah", "wp-labuan"],
|
|
435
|
+
isPublicHoliday: true,
|
|
436
|
+
gazetteLevel: "N",
|
|
437
|
+
source: "jpm",
|
|
438
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
439
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
id: "2024-pesta-kaamatan-2",
|
|
443
|
+
date: "2024-05-31",
|
|
444
|
+
name: { ms: "Pesta Kaamatan (Pesta Menuai) Hari Kedua", en: "Harvest Festival (Kaamatan) 2nd Day" },
|
|
445
|
+
type: "state",
|
|
446
|
+
status: "confirmed",
|
|
447
|
+
states: ["sabah", "wp-labuan"],
|
|
448
|
+
isPublicHoliday: true,
|
|
449
|
+
gazetteLevel: "N",
|
|
450
|
+
source: "jpm",
|
|
451
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
452
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
id: "2024-gawai-dayak-1",
|
|
456
|
+
date: "2024-06-01",
|
|
457
|
+
name: { ms: "Perayaan Hari Gawai Dayak", en: "Gawai Dayak Festival" },
|
|
458
|
+
type: "state",
|
|
459
|
+
status: "confirmed",
|
|
460
|
+
states: ["sarawak"],
|
|
461
|
+
isPublicHoliday: true,
|
|
462
|
+
gazetteLevel: "N",
|
|
463
|
+
source: "jpm",
|
|
464
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
465
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
id: "2024-gawai-dayak-2",
|
|
469
|
+
date: "2024-06-02",
|
|
470
|
+
name: { ms: "Perayaan Hari Gawai Dayak (Hari Kedua)", en: "Gawai Dayak Festival (2nd Day)" },
|
|
471
|
+
type: "state",
|
|
472
|
+
status: "confirmed",
|
|
473
|
+
states: ["sarawak"],
|
|
474
|
+
isPublicHoliday: true,
|
|
475
|
+
gazetteLevel: "N",
|
|
476
|
+
source: "jpm",
|
|
477
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
478
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
id: "2024-keputeraan-agong",
|
|
482
|
+
date: "2024-06-03",
|
|
483
|
+
name: { ms: "Hari Keputeraan Rasmi Seri Paduka Baginda Yang di-Pertuan Agong", en: "Official Birthday of the Yang di-Pertuan Agong", zh: "\u6700\u9AD8\u5143\u9996\u8BDE\u8FB0" },
|
|
484
|
+
type: "federal",
|
|
485
|
+
status: "confirmed",
|
|
486
|
+
states: ["*"],
|
|
487
|
+
isPublicHoliday: true,
|
|
488
|
+
gazetteLevel: "P",
|
|
489
|
+
source: "jpm",
|
|
490
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
491
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
id: "2024-hari-raya-haji-1",
|
|
495
|
+
date: "2024-06-17",
|
|
496
|
+
name: { ms: "Hari Raya Qurban", en: "Eid al-Adha", zh: "\u54C8\u829D\u8282" },
|
|
497
|
+
type: "islamic",
|
|
498
|
+
status: "confirmed",
|
|
499
|
+
states: ["*"],
|
|
500
|
+
isPublicHoliday: true,
|
|
501
|
+
gazetteLevel: "P",
|
|
502
|
+
hijriDate: "10 Zulhijjah 1445",
|
|
503
|
+
source: "jpm",
|
|
504
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
505
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
id: "2024-hari-raya-haji-2",
|
|
509
|
+
date: "2024-06-18",
|
|
510
|
+
name: { ms: "Hari Raya Qurban (Hari Kedua)", en: "Eid al-Adha (2nd Day)", zh: "\u54C8\u829D\u8282\uFF08\u7B2C\u4E8C\u5929\uFF09" },
|
|
511
|
+
type: "islamic",
|
|
512
|
+
status: "confirmed",
|
|
513
|
+
states: ["*"],
|
|
514
|
+
isPublicHoliday: true,
|
|
515
|
+
gazetteLevel: "P",
|
|
516
|
+
hijriDate: "11 Zulhijjah 1445",
|
|
517
|
+
source: "jpm",
|
|
518
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
519
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
id: "2024-awal-muharam",
|
|
523
|
+
date: "2024-07-08",
|
|
524
|
+
name: { ms: "Awal Muharam (Maal Hijrah)", en: "Islamic New Year", zh: "\u56DE\u5386\u65B0\u5E74" },
|
|
525
|
+
type: "islamic",
|
|
526
|
+
status: "confirmed",
|
|
527
|
+
states: ["*"],
|
|
528
|
+
isPublicHoliday: true,
|
|
529
|
+
gazetteLevel: "P",
|
|
530
|
+
hijriDate: "1 Muharam 1446",
|
|
531
|
+
source: "jpm",
|
|
532
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
533
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
id: "2024-tapak-warisan-dunia",
|
|
537
|
+
date: "2024-07-07",
|
|
538
|
+
name: { ms: "Hari Ulang Tahun Perisytiharan Tapak Warisan Dunia", en: "World Heritage Site Declaration Anniversary" },
|
|
539
|
+
type: "state",
|
|
540
|
+
status: "confirmed",
|
|
541
|
+
states: ["melaka"],
|
|
542
|
+
isPublicHoliday: true,
|
|
543
|
+
gazetteLevel: "N",
|
|
544
|
+
source: "jpm",
|
|
545
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
546
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
547
|
+
},
|
|
548
|
+
{
|
|
549
|
+
id: "2024-hari-hol-johor",
|
|
550
|
+
date: "2024-07-21",
|
|
551
|
+
name: { ms: "Hari Hol Almarhum Sultan Iskandar", en: "Johor Hol Day" },
|
|
552
|
+
type: "state",
|
|
553
|
+
status: "confirmed",
|
|
554
|
+
states: ["johor"],
|
|
555
|
+
isPublicHoliday: true,
|
|
556
|
+
gazetteLevel: "N",
|
|
557
|
+
source: "jpm",
|
|
558
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
559
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
id: "2024-hari-kemerdekaan-sarawak",
|
|
563
|
+
date: "2024-07-22",
|
|
564
|
+
name: { ms: "Hari Kemerdekaan Sarawak", en: "Sarawak Independence Day" },
|
|
565
|
+
type: "state",
|
|
566
|
+
status: "confirmed",
|
|
567
|
+
states: ["sarawak"],
|
|
568
|
+
isPublicHoliday: true,
|
|
569
|
+
gazetteLevel: "N",
|
|
570
|
+
source: "jpm",
|
|
571
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
572
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
id: "2024-keputeraan-sultan-pahang",
|
|
576
|
+
date: "2024-07-30",
|
|
577
|
+
name: { ms: "Hari Keputeraan Sultan Pahang", en: "Birthday of Sultan of Pahang" },
|
|
578
|
+
type: "state",
|
|
579
|
+
status: "confirmed",
|
|
580
|
+
states: ["pahang"],
|
|
581
|
+
isPublicHoliday: true,
|
|
582
|
+
gazetteLevel: "N",
|
|
583
|
+
source: "jpm",
|
|
584
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
585
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
id: "2024-hari-kebangsaan",
|
|
589
|
+
date: "2024-08-31",
|
|
590
|
+
name: { ms: "Hari Kebangsaan", en: "National Day", zh: "\u56FD\u5E86\u65E5" },
|
|
591
|
+
type: "federal",
|
|
592
|
+
status: "confirmed",
|
|
593
|
+
states: ["*"],
|
|
594
|
+
isPublicHoliday: true,
|
|
595
|
+
gazetteLevel: "P",
|
|
596
|
+
source: "jpm",
|
|
597
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
598
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
id: "2024-hari-malaysia",
|
|
602
|
+
date: "2024-09-16",
|
|
603
|
+
name: { ms: "Hari Malaysia", en: "Malaysia Day", zh: "\u9A6C\u6765\u897F\u4E9A\u65E5" },
|
|
604
|
+
type: "federal",
|
|
605
|
+
status: "confirmed",
|
|
606
|
+
states: ["*"],
|
|
607
|
+
isPublicHoliday: true,
|
|
608
|
+
gazetteLevel: "P",
|
|
609
|
+
source: "jpm",
|
|
610
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
611
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
id: "2024-maulidur-rasul",
|
|
615
|
+
date: "2024-09-27",
|
|
616
|
+
name: { ms: "Hari Keputeraan Nabi Muhammad S.A.W. (Maulidur Rasul)", en: "Prophet Muhammad's Birthday", zh: "\u5148\u77E5\u7A46\u7F55\u9ED8\u5FB7\u8BDE\u8FB0" },
|
|
617
|
+
type: "islamic",
|
|
618
|
+
status: "confirmed",
|
|
619
|
+
states: ["*"],
|
|
620
|
+
isPublicHoliday: true,
|
|
621
|
+
gazetteLevel: "P",
|
|
622
|
+
hijriDate: "12 Rabiulawal 1446",
|
|
623
|
+
source: "jpm",
|
|
624
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
625
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
id: "2024-keputeraan-sultan-kelantan-1",
|
|
629
|
+
date: "2024-09-29",
|
|
630
|
+
name: { ms: "Hari Keputeraan Sultan Kelantan", en: "Birthday of Sultan of Kelantan (Day 1)" },
|
|
631
|
+
type: "state",
|
|
632
|
+
status: "confirmed",
|
|
633
|
+
states: ["kelantan"],
|
|
634
|
+
isPublicHoliday: true,
|
|
635
|
+
gazetteLevel: "N",
|
|
636
|
+
source: "jpm",
|
|
637
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
638
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
639
|
+
},
|
|
640
|
+
{
|
|
641
|
+
id: "2024-keputeraan-sultan-kelantan-2",
|
|
642
|
+
date: "2024-09-30",
|
|
643
|
+
name: { ms: "Hari Keputeraan Sultan Kelantan (Hari Kedua)", en: "Birthday of Sultan of Kelantan (Day 2)" },
|
|
644
|
+
type: "state",
|
|
645
|
+
status: "confirmed",
|
|
646
|
+
states: ["kelantan"],
|
|
647
|
+
isPublicHoliday: true,
|
|
648
|
+
gazetteLevel: "N",
|
|
649
|
+
source: "jpm",
|
|
650
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
651
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
id: "2024-deepavali",
|
|
655
|
+
date: "2024-11-01",
|
|
656
|
+
name: { ms: "Hari Deepavali", en: "Deepavali", zh: "\u5C60\u5996\u8282" },
|
|
657
|
+
type: "federal",
|
|
658
|
+
status: "confirmed",
|
|
659
|
+
states: ["*"],
|
|
660
|
+
isPublicHoliday: true,
|
|
661
|
+
gazetteLevel: "P",
|
|
662
|
+
source: "jpm",
|
|
663
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
664
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
665
|
+
},
|
|
666
|
+
{
|
|
667
|
+
id: "2024-keputeraan-sultan-perak",
|
|
668
|
+
date: "2024-11-01",
|
|
669
|
+
name: { ms: "Hari Keputeraan Sultan Perak", en: "Birthday of Sultan of Perak" },
|
|
670
|
+
type: "state",
|
|
671
|
+
status: "confirmed",
|
|
672
|
+
states: ["perak"],
|
|
673
|
+
isPublicHoliday: true,
|
|
674
|
+
gazetteLevel: "N",
|
|
675
|
+
source: "jpm",
|
|
676
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
677
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
678
|
+
},
|
|
679
|
+
{
|
|
680
|
+
id: "2024-keputeraan-sultan-selangor",
|
|
681
|
+
date: "2024-12-11",
|
|
682
|
+
name: { ms: "Hari Keputeraan Sultan Selangor", en: "Birthday of Sultan of Selangor" },
|
|
683
|
+
type: "state",
|
|
684
|
+
status: "confirmed",
|
|
685
|
+
states: ["selangor"],
|
|
686
|
+
isPublicHoliday: true,
|
|
687
|
+
gazetteLevel: "N",
|
|
688
|
+
source: "jpm",
|
|
689
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
690
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
691
|
+
},
|
|
692
|
+
{
|
|
693
|
+
id: "2024-christmas-eve",
|
|
694
|
+
date: "2024-12-24",
|
|
695
|
+
name: { ms: "Christmas Eve", en: "Christmas Eve", zh: "\u5723\u8BDE\u591C" },
|
|
696
|
+
type: "state",
|
|
697
|
+
status: "confirmed",
|
|
698
|
+
states: ["sabah"],
|
|
699
|
+
isPublicHoliday: true,
|
|
700
|
+
gazetteLevel: "N",
|
|
701
|
+
source: "jpm",
|
|
702
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
703
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
id: "2024-hari-krismas",
|
|
707
|
+
date: "2024-12-25",
|
|
708
|
+
name: { ms: "Hari Krismas", en: "Christmas Day", zh: "\u5723\u8BDE\u8282" },
|
|
709
|
+
type: "federal",
|
|
710
|
+
status: "confirmed",
|
|
711
|
+
states: ["*"],
|
|
712
|
+
isPublicHoliday: true,
|
|
713
|
+
gazetteLevel: "P",
|
|
714
|
+
source: "jpm",
|
|
715
|
+
createdAt: "2023-08-01T00:00:00+08:00",
|
|
716
|
+
updatedAt: "2023-08-01T00:00:00+08:00"
|
|
717
|
+
}
|
|
718
|
+
];
|
|
719
|
+
|
|
720
|
+
// ../../data/holidays/2025.json
|
|
721
|
+
var __default2 = [
|
|
722
|
+
{
|
|
723
|
+
id: "2025-tahun-baharu",
|
|
724
|
+
date: "2025-01-01",
|
|
725
|
+
name: { ms: "Tahun Baharu", en: "New Year's Day", zh: "\u5143\u65E6" },
|
|
726
|
+
type: "state",
|
|
727
|
+
status: "confirmed",
|
|
728
|
+
states: ["perak", "pulau-pinang", "selangor", "negeri-sembilan", "melaka", "pahang", "sabah", "sarawak", "kuala-lumpur", "wp-putrajaya", "wp-labuan", "perlis"],
|
|
729
|
+
isPublicHoliday: true,
|
|
730
|
+
gazetteLevel: "N",
|
|
731
|
+
source: "jpm",
|
|
732
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
733
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
734
|
+
},
|
|
735
|
+
{
|
|
736
|
+
id: "2025-keputeraan-ydb-ns",
|
|
737
|
+
date: "2025-01-14",
|
|
738
|
+
name: { ms: "Hari Keputeraan Yang di-Pertuan Besar Negeri Sembilan", en: "Birthday of Yang di-Pertuan Besar of Negeri Sembilan" },
|
|
739
|
+
type: "state",
|
|
740
|
+
status: "confirmed",
|
|
741
|
+
states: ["negeri-sembilan"],
|
|
742
|
+
isPublicHoliday: true,
|
|
743
|
+
gazetteLevel: "N",
|
|
744
|
+
source: "jpm",
|
|
745
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
746
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
id: "2025-israk-mikraj",
|
|
750
|
+
date: "2025-01-27",
|
|
751
|
+
name: { ms: "Israk dan Mikraj", en: "Isra' Mi'raj", zh: "\u591C\u884C\u767B\u9704" },
|
|
752
|
+
type: "islamic",
|
|
753
|
+
status: "confirmed",
|
|
754
|
+
states: ["*"],
|
|
755
|
+
isPublicHoliday: true,
|
|
756
|
+
gazetteLevel: "P",
|
|
757
|
+
hijriDate: "27 Rejab 1446",
|
|
758
|
+
source: "jpm",
|
|
759
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
760
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
id: "2025-tahun-baharu-cina-1",
|
|
764
|
+
date: "2025-01-29",
|
|
765
|
+
name: { ms: "Tahun Baharu Cina", en: "Chinese New Year", zh: "\u519C\u5386\u65B0\u5E74" },
|
|
766
|
+
type: "federal",
|
|
767
|
+
status: "confirmed",
|
|
768
|
+
states: ["*"],
|
|
769
|
+
isPublicHoliday: true,
|
|
770
|
+
gazetteLevel: "P",
|
|
771
|
+
source: "jpm",
|
|
772
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
773
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
774
|
+
},
|
|
775
|
+
{
|
|
776
|
+
id: "2025-tahun-baharu-cina-2",
|
|
777
|
+
date: "2025-01-30",
|
|
778
|
+
name: { ms: "Tahun Baharu Cina (Hari Kedua)", en: "Chinese New Year (2nd Day)", zh: "\u519C\u5386\u65B0\u5E74\uFF08\u7B2C\u4E8C\u5929\uFF09" },
|
|
779
|
+
type: "federal",
|
|
780
|
+
status: "confirmed",
|
|
781
|
+
states: ["*"],
|
|
782
|
+
isPublicHoliday: true,
|
|
783
|
+
gazetteLevel: "P",
|
|
784
|
+
source: "jpm",
|
|
785
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
786
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
787
|
+
},
|
|
788
|
+
{
|
|
789
|
+
id: "2025-hari-wilayah",
|
|
790
|
+
date: "2025-02-01",
|
|
791
|
+
name: { ms: "Hari Wilayah Persekutuan", en: "Federal Territory Day", zh: "\u8054\u90A6\u76F4\u8F96\u533A\u65E5" },
|
|
792
|
+
type: "state",
|
|
793
|
+
status: "confirmed",
|
|
794
|
+
states: ["kuala-lumpur", "wp-putrajaya", "wp-labuan"],
|
|
795
|
+
isPublicHoliday: true,
|
|
796
|
+
gazetteLevel: "N",
|
|
797
|
+
source: "jpm",
|
|
798
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
799
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
800
|
+
},
|
|
801
|
+
{
|
|
802
|
+
id: "2025-thaipusam",
|
|
803
|
+
date: "2025-02-11",
|
|
804
|
+
name: { ms: "Hari Thaipusam", en: "Thaipusam", zh: "\u5927\u5B9D\u68EE\u8282" },
|
|
805
|
+
type: "federal",
|
|
806
|
+
status: "confirmed",
|
|
807
|
+
states: ["*"],
|
|
808
|
+
isPublicHoliday: true,
|
|
809
|
+
gazetteLevel: "P",
|
|
810
|
+
source: "jpm",
|
|
811
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
812
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
813
|
+
},
|
|
814
|
+
{
|
|
815
|
+
id: "2025-awal-ramadan",
|
|
816
|
+
date: "2025-03-01",
|
|
817
|
+
name: { ms: "Awal Ramadan", en: "Beginning of Ramadan", zh: "\u658B\u6212\u6708\u9996\u65E5" },
|
|
818
|
+
type: "islamic_state",
|
|
819
|
+
status: "confirmed",
|
|
820
|
+
states: ["johor", "kedah", "kelantan", "terengganu", "melaka", "perlis"],
|
|
821
|
+
isPublicHoliday: true,
|
|
822
|
+
gazetteLevel: "N",
|
|
823
|
+
hijriDate: "1 Ramadan 1446",
|
|
824
|
+
source: "jpm",
|
|
825
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
826
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
827
|
+
},
|
|
828
|
+
{
|
|
829
|
+
id: "2025-nuzul-quran",
|
|
830
|
+
date: "2025-03-17",
|
|
831
|
+
name: { ms: "Hari Nuzul Al-Quran", en: "Revelation of the Quran", zh: "\u53EF\u5170\u7ECF\u964D\u4E16" },
|
|
832
|
+
type: "islamic",
|
|
833
|
+
status: "confirmed",
|
|
834
|
+
states: ["*"],
|
|
835
|
+
isPublicHoliday: true,
|
|
836
|
+
gazetteLevel: "P",
|
|
837
|
+
hijriDate: "17 Ramadan 1446",
|
|
838
|
+
source: "jpm",
|
|
839
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
840
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
841
|
+
},
|
|
842
|
+
{
|
|
843
|
+
id: "2025-hari-raya-aidilfitri-1",
|
|
844
|
+
date: "2025-03-31",
|
|
845
|
+
name: { ms: "Hari Raya Aidilfitri", en: "Eid al-Fitr", zh: "\u5F00\u658B\u8282" },
|
|
846
|
+
type: "islamic",
|
|
847
|
+
status: "confirmed",
|
|
848
|
+
states: ["*"],
|
|
849
|
+
isPublicHoliday: true,
|
|
850
|
+
gazetteLevel: "P",
|
|
851
|
+
hijriDate: "1 Syawal 1446",
|
|
852
|
+
source: "jpm",
|
|
853
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
854
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
855
|
+
},
|
|
856
|
+
{
|
|
857
|
+
id: "2025-hari-raya-aidilfitri-2",
|
|
858
|
+
date: "2025-04-01",
|
|
859
|
+
name: { ms: "Hari Raya Aidilfitri (Hari Kedua)", en: "Eid al-Fitr (2nd Day)", zh: "\u5F00\u658B\u8282\uFF08\u7B2C\u4E8C\u5929\uFF09" },
|
|
860
|
+
type: "islamic",
|
|
861
|
+
status: "confirmed",
|
|
862
|
+
states: ["*"],
|
|
863
|
+
isPublicHoliday: true,
|
|
864
|
+
gazetteLevel: "P",
|
|
865
|
+
hijriDate: "2 Syawal 1446",
|
|
866
|
+
source: "jpm",
|
|
867
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
868
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
869
|
+
},
|
|
870
|
+
{
|
|
871
|
+
id: "2025-hari-pekerja",
|
|
872
|
+
date: "2025-05-01",
|
|
873
|
+
name: { ms: "Hari Pekerja", en: "Labour Day", zh: "\u52B3\u52A8\u8282" },
|
|
874
|
+
type: "federal",
|
|
875
|
+
status: "confirmed",
|
|
876
|
+
states: ["*"],
|
|
877
|
+
isPublicHoliday: true,
|
|
878
|
+
gazetteLevel: "P",
|
|
879
|
+
source: "jpm",
|
|
880
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
881
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
882
|
+
},
|
|
883
|
+
{
|
|
884
|
+
id: "2025-hari-wesak",
|
|
885
|
+
date: "2025-05-12",
|
|
886
|
+
name: { ms: "Hari Wesak", en: "Vesak Day", zh: "\u536B\u585E\u8282" },
|
|
887
|
+
type: "federal",
|
|
888
|
+
status: "confirmed",
|
|
889
|
+
states: ["*"],
|
|
890
|
+
isPublicHoliday: true,
|
|
891
|
+
gazetteLevel: "P",
|
|
892
|
+
source: "jpm",
|
|
893
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
894
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
895
|
+
},
|
|
896
|
+
{
|
|
897
|
+
id: "2025-pesta-kaamatan-1",
|
|
898
|
+
date: "2025-05-30",
|
|
899
|
+
name: { ms: "Pesta Kaamatan (Pesta Menuai)", en: "Harvest Festival (Kaamatan)" },
|
|
900
|
+
type: "state",
|
|
901
|
+
status: "confirmed",
|
|
902
|
+
states: ["sabah", "wp-labuan"],
|
|
903
|
+
isPublicHoliday: true,
|
|
904
|
+
gazetteLevel: "N",
|
|
905
|
+
source: "jpm",
|
|
906
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
907
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
908
|
+
},
|
|
909
|
+
{
|
|
910
|
+
id: "2025-pesta-kaamatan-2",
|
|
911
|
+
date: "2025-05-31",
|
|
912
|
+
name: { ms: "Pesta Kaamatan (Pesta Menuai) Hari Kedua", en: "Harvest Festival (Kaamatan) 2nd Day" },
|
|
913
|
+
type: "state",
|
|
914
|
+
status: "confirmed",
|
|
915
|
+
states: ["sabah", "wp-labuan"],
|
|
916
|
+
isPublicHoliday: true,
|
|
917
|
+
gazetteLevel: "N",
|
|
918
|
+
source: "jpm",
|
|
919
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
920
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
921
|
+
},
|
|
922
|
+
{
|
|
923
|
+
id: "2025-gawai-dayak-1",
|
|
924
|
+
date: "2025-06-01",
|
|
925
|
+
name: { ms: "Perayaan Hari Gawai Dayak", en: "Gawai Dayak Festival" },
|
|
926
|
+
type: "state",
|
|
927
|
+
status: "confirmed",
|
|
928
|
+
states: ["sarawak"],
|
|
929
|
+
isPublicHoliday: true,
|
|
930
|
+
gazetteLevel: "N",
|
|
931
|
+
source: "jpm",
|
|
932
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
933
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
934
|
+
},
|
|
935
|
+
{
|
|
936
|
+
id: "2025-gawai-dayak-2",
|
|
937
|
+
date: "2025-06-02",
|
|
938
|
+
name: { ms: "Perayaan Hari Gawai Dayak (Hari Kedua)", en: "Gawai Dayak Festival (2nd Day)" },
|
|
939
|
+
type: "state",
|
|
940
|
+
status: "confirmed",
|
|
941
|
+
states: ["sarawak"],
|
|
942
|
+
isPublicHoliday: true,
|
|
943
|
+
gazetteLevel: "N",
|
|
944
|
+
source: "jpm",
|
|
945
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
946
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
id: "2025-keputeraan-agong",
|
|
950
|
+
date: "2025-06-02",
|
|
951
|
+
name: { ms: "Hari Keputeraan Rasmi Seri Paduka Baginda Yang di-Pertuan Agong", en: "Official Birthday of the Yang di-Pertuan Agong", zh: "\u6700\u9AD8\u5143\u9996\u8BDE\u8FB0" },
|
|
952
|
+
type: "federal",
|
|
953
|
+
status: "confirmed",
|
|
954
|
+
states: ["*"],
|
|
955
|
+
isPublicHoliday: true,
|
|
956
|
+
gazetteLevel: "P",
|
|
957
|
+
source: "jpm",
|
|
958
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
959
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
960
|
+
},
|
|
961
|
+
{
|
|
962
|
+
id: "2025-hari-raya-haji-1",
|
|
963
|
+
date: "2025-06-07",
|
|
964
|
+
name: { ms: "Hari Raya Qurban", en: "Eid al-Adha", zh: "\u54C8\u829D\u8282" },
|
|
965
|
+
type: "islamic",
|
|
966
|
+
status: "confirmed",
|
|
967
|
+
states: ["*"],
|
|
968
|
+
isPublicHoliday: true,
|
|
969
|
+
gazetteLevel: "P",
|
|
970
|
+
hijriDate: "10 Zulhijjah 1446",
|
|
971
|
+
source: "jpm",
|
|
972
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
973
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
id: "2025-hari-raya-haji-2",
|
|
977
|
+
date: "2025-06-08",
|
|
978
|
+
name: { ms: "Hari Raya Qurban (Hari Kedua)", en: "Eid al-Adha (2nd Day)", zh: "\u54C8\u829D\u8282\uFF08\u7B2C\u4E8C\u5929\uFF09" },
|
|
979
|
+
type: "islamic",
|
|
980
|
+
status: "confirmed",
|
|
981
|
+
states: ["*"],
|
|
982
|
+
isPublicHoliday: true,
|
|
983
|
+
gazetteLevel: "P",
|
|
984
|
+
hijriDate: "11 Zulhijjah 1446",
|
|
985
|
+
source: "jpm",
|
|
986
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
987
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
988
|
+
},
|
|
989
|
+
{
|
|
990
|
+
id: "2025-awal-muharam",
|
|
991
|
+
date: "2025-06-27",
|
|
992
|
+
name: { ms: "Awal Muharam (Maal Hijrah)", en: "Islamic New Year", zh: "\u56DE\u5386\u65B0\u5E74" },
|
|
993
|
+
type: "islamic",
|
|
994
|
+
status: "confirmed",
|
|
995
|
+
states: ["*"],
|
|
996
|
+
isPublicHoliday: true,
|
|
997
|
+
gazetteLevel: "P",
|
|
998
|
+
hijriDate: "1 Muharam 1447",
|
|
999
|
+
source: "jpm",
|
|
1000
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1001
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1002
|
+
},
|
|
1003
|
+
{
|
|
1004
|
+
id: "2025-hari-kebangsaan",
|
|
1005
|
+
date: "2025-08-31",
|
|
1006
|
+
name: { ms: "Hari Kebangsaan", en: "National Day", zh: "\u56FD\u5E86\u65E5" },
|
|
1007
|
+
type: "federal",
|
|
1008
|
+
status: "confirmed",
|
|
1009
|
+
states: ["*"],
|
|
1010
|
+
isPublicHoliday: true,
|
|
1011
|
+
gazetteLevel: "P",
|
|
1012
|
+
source: "jpm",
|
|
1013
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1014
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1015
|
+
},
|
|
1016
|
+
{
|
|
1017
|
+
id: "2025-maulidur-rasul",
|
|
1018
|
+
date: "2025-09-05",
|
|
1019
|
+
name: { ms: "Hari Keputeraan Nabi Muhammad S.A.W. (Maulidur Rasul)", en: "Prophet Muhammad's Birthday", zh: "\u5148\u77E5\u7A46\u7F55\u9ED8\u5FB7\u8BDE\u8FB0" },
|
|
1020
|
+
type: "islamic",
|
|
1021
|
+
status: "confirmed",
|
|
1022
|
+
states: ["*"],
|
|
1023
|
+
isPublicHoliday: true,
|
|
1024
|
+
gazetteLevel: "P",
|
|
1025
|
+
hijriDate: "12 Rabiulawal 1447",
|
|
1026
|
+
source: "jpm",
|
|
1027
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1028
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
id: "2025-hari-malaysia",
|
|
1032
|
+
date: "2025-09-16",
|
|
1033
|
+
name: { ms: "Hari Malaysia", en: "Malaysia Day", zh: "\u9A6C\u6765\u897F\u4E9A\u65E5" },
|
|
1034
|
+
type: "federal",
|
|
1035
|
+
status: "confirmed",
|
|
1036
|
+
states: ["*"],
|
|
1037
|
+
isPublicHoliday: true,
|
|
1038
|
+
gazetteLevel: "P",
|
|
1039
|
+
source: "jpm",
|
|
1040
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1041
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1042
|
+
},
|
|
1043
|
+
{
|
|
1044
|
+
id: "2025-deepavali",
|
|
1045
|
+
date: "2025-10-20",
|
|
1046
|
+
name: { ms: "Hari Deepavali", en: "Deepavali", zh: "\u5C60\u5996\u8282" },
|
|
1047
|
+
type: "federal",
|
|
1048
|
+
status: "confirmed",
|
|
1049
|
+
states: ["*"],
|
|
1050
|
+
isPublicHoliday: true,
|
|
1051
|
+
gazetteLevel: "P",
|
|
1052
|
+
source: "jpm",
|
|
1053
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1054
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1055
|
+
},
|
|
1056
|
+
{
|
|
1057
|
+
id: "2025-pertabalan-sultan-terengganu",
|
|
1058
|
+
date: "2025-03-04",
|
|
1059
|
+
name: { ms: "Hari Ulang Tahun Pertabalan Sultan Terengganu", en: "Anniversary of Sultan of Terengganu's Installation" },
|
|
1060
|
+
type: "state",
|
|
1061
|
+
status: "confirmed",
|
|
1062
|
+
states: ["terengganu"],
|
|
1063
|
+
isPublicHoliday: true,
|
|
1064
|
+
gazetteLevel: "N",
|
|
1065
|
+
source: "jpm",
|
|
1066
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1067
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1068
|
+
},
|
|
1069
|
+
{
|
|
1070
|
+
id: "2025-keputeraan-sultan-johor",
|
|
1071
|
+
date: "2025-03-23",
|
|
1072
|
+
name: { ms: "Hari Keputeraan Sultan Johor", en: "Birthday of Sultan of Johor" },
|
|
1073
|
+
type: "state",
|
|
1074
|
+
status: "confirmed",
|
|
1075
|
+
states: ["johor"],
|
|
1076
|
+
isPublicHoliday: true,
|
|
1077
|
+
gazetteLevel: "N",
|
|
1078
|
+
source: "jpm",
|
|
1079
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1080
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1081
|
+
},
|
|
1082
|
+
{
|
|
1083
|
+
id: "2025-good-friday",
|
|
1084
|
+
date: "2025-04-18",
|
|
1085
|
+
name: { ms: "Good Friday", en: "Good Friday", zh: "\u8036\u7A23\u53D7\u96BE\u65E5" },
|
|
1086
|
+
type: "state",
|
|
1087
|
+
status: "confirmed",
|
|
1088
|
+
states: ["sabah", "sarawak"],
|
|
1089
|
+
isPublicHoliday: true,
|
|
1090
|
+
gazetteLevel: "N",
|
|
1091
|
+
source: "jpm",
|
|
1092
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1093
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1094
|
+
},
|
|
1095
|
+
{
|
|
1096
|
+
id: "2025-keputeraan-sultan-terengganu",
|
|
1097
|
+
date: "2025-04-26",
|
|
1098
|
+
name: { ms: "Hari Keputeraan Sultan Terengganu", en: "Birthday of Sultan of Terengganu" },
|
|
1099
|
+
type: "state",
|
|
1100
|
+
status: "confirmed",
|
|
1101
|
+
states: ["terengganu"],
|
|
1102
|
+
isPublicHoliday: true,
|
|
1103
|
+
gazetteLevel: "N",
|
|
1104
|
+
source: "jpm",
|
|
1105
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1106
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1107
|
+
},
|
|
1108
|
+
{
|
|
1109
|
+
id: "2025-keputeraan-raja-perlis",
|
|
1110
|
+
date: "2025-05-17",
|
|
1111
|
+
name: { ms: "Hari Ulang Tahun Keputeraan Raja Perlis", en: "Birthday of Raja of Perlis" },
|
|
1112
|
+
type: "state",
|
|
1113
|
+
status: "confirmed",
|
|
1114
|
+
states: ["perlis"],
|
|
1115
|
+
isPublicHoliday: true,
|
|
1116
|
+
gazetteLevel: "N",
|
|
1117
|
+
source: "jpm",
|
|
1118
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1119
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1120
|
+
},
|
|
1121
|
+
{
|
|
1122
|
+
id: "2025-hari-hol-pahang",
|
|
1123
|
+
date: "2025-05-22",
|
|
1124
|
+
name: { ms: "Hari Hol Pahang", en: "Pahang Hol Day" },
|
|
1125
|
+
type: "state",
|
|
1126
|
+
status: "confirmed",
|
|
1127
|
+
states: ["pahang"],
|
|
1128
|
+
isPublicHoliday: true,
|
|
1129
|
+
gazetteLevel: "N",
|
|
1130
|
+
source: "jpm",
|
|
1131
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1132
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1133
|
+
},
|
|
1134
|
+
{
|
|
1135
|
+
id: "2025-hari-arafah",
|
|
1136
|
+
date: "2025-06-06",
|
|
1137
|
+
name: { ms: "Hari Arafah", en: "Day of Arafah" },
|
|
1138
|
+
type: "islamic_state",
|
|
1139
|
+
status: "confirmed",
|
|
1140
|
+
states: ["kelantan", "terengganu", "kedah", "perlis"],
|
|
1141
|
+
isPublicHoliday: true,
|
|
1142
|
+
gazetteLevel: "N",
|
|
1143
|
+
hijriDate: "9 Zulhijjah 1446",
|
|
1144
|
+
source: "jpm",
|
|
1145
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1146
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1147
|
+
},
|
|
1148
|
+
{
|
|
1149
|
+
id: "2025-tapak-warisan-dunia",
|
|
1150
|
+
date: "2025-07-07",
|
|
1151
|
+
name: { ms: "Hari Ulang Tahun Perisytiharan Tapak Warisan Dunia", en: "World Heritage Site Declaration Anniversary" },
|
|
1152
|
+
type: "state",
|
|
1153
|
+
status: "confirmed",
|
|
1154
|
+
states: ["melaka"],
|
|
1155
|
+
isPublicHoliday: true,
|
|
1156
|
+
gazetteLevel: "N",
|
|
1157
|
+
source: "jpm",
|
|
1158
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1159
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1160
|
+
},
|
|
1161
|
+
{
|
|
1162
|
+
id: "2025-hari-hol-johor",
|
|
1163
|
+
date: "2025-07-21",
|
|
1164
|
+
name: { ms: "Hari Hol Almarhum Sultan Iskandar", en: "Johor Hol Day" },
|
|
1165
|
+
type: "state",
|
|
1166
|
+
status: "confirmed",
|
|
1167
|
+
states: ["johor"],
|
|
1168
|
+
isPublicHoliday: true,
|
|
1169
|
+
gazetteLevel: "N",
|
|
1170
|
+
source: "jpm",
|
|
1171
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1172
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1173
|
+
},
|
|
1174
|
+
{
|
|
1175
|
+
id: "2025-hari-kemerdekaan-sarawak",
|
|
1176
|
+
date: "2025-07-22",
|
|
1177
|
+
name: { ms: "Hari Kemerdekaan Sarawak", en: "Sarawak Independence Day" },
|
|
1178
|
+
type: "state",
|
|
1179
|
+
status: "confirmed",
|
|
1180
|
+
states: ["sarawak"],
|
|
1181
|
+
isPublicHoliday: true,
|
|
1182
|
+
gazetteLevel: "N",
|
|
1183
|
+
source: "jpm",
|
|
1184
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1185
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1186
|
+
},
|
|
1187
|
+
{
|
|
1188
|
+
id: "2025-keputeraan-sultan-pahang",
|
|
1189
|
+
date: "2025-07-30",
|
|
1190
|
+
name: { ms: "Hari Keputeraan Sultan Pahang", en: "Birthday of Sultan of Pahang" },
|
|
1191
|
+
type: "state",
|
|
1192
|
+
status: "confirmed",
|
|
1193
|
+
states: ["pahang"],
|
|
1194
|
+
isPublicHoliday: true,
|
|
1195
|
+
gazetteLevel: "N",
|
|
1196
|
+
source: "jpm",
|
|
1197
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1198
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1199
|
+
},
|
|
1200
|
+
{
|
|
1201
|
+
id: "2025-keputeraan-sultan-kelantan-1",
|
|
1202
|
+
date: "2025-09-29",
|
|
1203
|
+
name: { ms: "Hari Keputeraan Sultan Kelantan", en: "Birthday of Sultan of Kelantan (Day 1)" },
|
|
1204
|
+
type: "state",
|
|
1205
|
+
status: "confirmed",
|
|
1206
|
+
states: ["kelantan"],
|
|
1207
|
+
isPublicHoliday: true,
|
|
1208
|
+
gazetteLevel: "N",
|
|
1209
|
+
source: "jpm",
|
|
1210
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1211
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1212
|
+
},
|
|
1213
|
+
{
|
|
1214
|
+
id: "2025-keputeraan-sultan-kelantan-2",
|
|
1215
|
+
date: "2025-09-30",
|
|
1216
|
+
name: { ms: "Hari Keputeraan Sultan Kelantan (Hari Kedua)", en: "Birthday of Sultan of Kelantan (Day 2)" },
|
|
1217
|
+
type: "state",
|
|
1218
|
+
status: "confirmed",
|
|
1219
|
+
states: ["kelantan"],
|
|
1220
|
+
isPublicHoliday: true,
|
|
1221
|
+
gazetteLevel: "N",
|
|
1222
|
+
source: "jpm",
|
|
1223
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1224
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1225
|
+
},
|
|
1226
|
+
{
|
|
1227
|
+
id: "2025-keputeraan-sultan-selangor",
|
|
1228
|
+
date: "2025-12-11",
|
|
1229
|
+
name: { ms: "Hari Keputeraan Sultan Selangor", en: "Birthday of Sultan of Selangor" },
|
|
1230
|
+
type: "state",
|
|
1231
|
+
status: "confirmed",
|
|
1232
|
+
states: ["selangor"],
|
|
1233
|
+
isPublicHoliday: true,
|
|
1234
|
+
gazetteLevel: "N",
|
|
1235
|
+
source: "jpm",
|
|
1236
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1237
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1238
|
+
},
|
|
1239
|
+
{
|
|
1240
|
+
id: "2025-christmas-eve",
|
|
1241
|
+
date: "2025-12-24",
|
|
1242
|
+
name: { ms: "Christmas Eve", en: "Christmas Eve", zh: "\u5723\u8BDE\u591C" },
|
|
1243
|
+
type: "state",
|
|
1244
|
+
status: "confirmed",
|
|
1245
|
+
states: ["sabah"],
|
|
1246
|
+
isPublicHoliday: true,
|
|
1247
|
+
gazetteLevel: "N",
|
|
1248
|
+
source: "jpm",
|
|
1249
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1250
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1251
|
+
},
|
|
1252
|
+
{
|
|
1253
|
+
id: "2025-hari-krismas",
|
|
1254
|
+
date: "2025-12-25",
|
|
1255
|
+
name: { ms: "Hari Krismas", en: "Christmas Day", zh: "\u5723\u8BDE\u8282" },
|
|
1256
|
+
type: "federal",
|
|
1257
|
+
status: "confirmed",
|
|
1258
|
+
states: ["*"],
|
|
1259
|
+
isPublicHoliday: true,
|
|
1260
|
+
gazetteLevel: "P",
|
|
1261
|
+
source: "jpm",
|
|
1262
|
+
createdAt: "2024-08-01T00:00:00+08:00",
|
|
1263
|
+
updatedAt: "2024-08-01T00:00:00+08:00"
|
|
1264
|
+
}
|
|
1265
|
+
];
|
|
1266
|
+
|
|
1267
|
+
// ../../data/holidays/2026.json
|
|
1268
|
+
var __default3 = [
|
|
1269
|
+
{
|
|
1270
|
+
id: "2026-tahun-baharu",
|
|
1271
|
+
date: "2026-01-01",
|
|
1272
|
+
name: { ms: "Tahun Baharu", en: "New Year's Day", zh: "\u5143\u65E6" },
|
|
1273
|
+
type: "state",
|
|
1274
|
+
status: "confirmed",
|
|
1275
|
+
states: ["perak", "pulau-pinang", "selangor", "negeri-sembilan", "melaka", "pahang", "sabah", "sarawak", "kuala-lumpur", "wp-putrajaya", "wp-labuan", "perlis"],
|
|
1276
|
+
isPublicHoliday: true,
|
|
1277
|
+
gazetteLevel: "N",
|
|
1278
|
+
source: "jpm",
|
|
1279
|
+
gazetteRef: "GN-33500",
|
|
1280
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1281
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1282
|
+
},
|
|
1283
|
+
{
|
|
1284
|
+
id: "2026-keputeraan-ydb-ns",
|
|
1285
|
+
date: "2026-01-14",
|
|
1286
|
+
name: { ms: "Hari Keputeraan Yang di-Pertuan Besar Negeri Sembilan", en: "Birthday of Yang di-Pertuan Besar of Negeri Sembilan" },
|
|
1287
|
+
type: "state",
|
|
1288
|
+
status: "confirmed",
|
|
1289
|
+
states: ["negeri-sembilan"],
|
|
1290
|
+
isPublicHoliday: true,
|
|
1291
|
+
gazetteLevel: "N",
|
|
1292
|
+
source: "jpm",
|
|
1293
|
+
gazetteRef: "GN-33500",
|
|
1294
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1295
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1296
|
+
},
|
|
1297
|
+
{
|
|
1298
|
+
id: "2026-israk-mikraj",
|
|
1299
|
+
date: "2026-01-17",
|
|
1300
|
+
name: { ms: "Israk dan Mikraj", en: "Isra' Mi'raj", zh: "\u591C\u884C\u767B\u9704" },
|
|
1301
|
+
type: "islamic_state",
|
|
1302
|
+
status: "confirmed",
|
|
1303
|
+
states: ["kedah", "kelantan", "terengganu", "perlis", "negeri-sembilan", "pahang"],
|
|
1304
|
+
isPublicHoliday: true,
|
|
1305
|
+
gazetteLevel: "N",
|
|
1306
|
+
hijriDate: "27 Rejab 1447",
|
|
1307
|
+
source: "jpm",
|
|
1308
|
+
gazetteRef: "GN-33500",
|
|
1309
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1310
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1311
|
+
},
|
|
1312
|
+
{
|
|
1313
|
+
id: "2026-hari-wilayah",
|
|
1314
|
+
date: "2026-02-01",
|
|
1315
|
+
name: { ms: "Hari Wilayah Persekutuan", en: "Federal Territory Day", zh: "\u8054\u90A6\u76F4\u8F96\u533A\u65E5" },
|
|
1316
|
+
type: "state",
|
|
1317
|
+
status: "confirmed",
|
|
1318
|
+
states: ["kuala-lumpur", "wp-putrajaya", "wp-labuan"],
|
|
1319
|
+
isPublicHoliday: true,
|
|
1320
|
+
gazetteLevel: "N",
|
|
1321
|
+
source: "jpm",
|
|
1322
|
+
gazetteRef: "GN-33501",
|
|
1323
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1324
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1325
|
+
},
|
|
1326
|
+
{
|
|
1327
|
+
id: "2026-thaipusam",
|
|
1328
|
+
date: "2026-02-01",
|
|
1329
|
+
name: { ms: "Hari Thaipusam", en: "Thaipusam", zh: "\u5927\u5B9D\u68EE\u8282" },
|
|
1330
|
+
type: "state",
|
|
1331
|
+
status: "confirmed",
|
|
1332
|
+
states: ["perak", "pulau-pinang", "selangor", "negeri-sembilan", "kuala-lumpur", "wp-putrajaya", "wp-labuan", "johor", "melaka", "pahang", "perlis"],
|
|
1333
|
+
isPublicHoliday: true,
|
|
1334
|
+
gazetteLevel: "N",
|
|
1335
|
+
source: "jpm",
|
|
1336
|
+
gazetteRef: "GN-33501",
|
|
1337
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1338
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1339
|
+
},
|
|
1340
|
+
{
|
|
1341
|
+
id: "2026-tahun-baharu-cina-1",
|
|
1342
|
+
date: "2026-02-17",
|
|
1343
|
+
name: { ms: "Tahun Baharu Cina", en: "Chinese New Year", zh: "\u519C\u5386\u65B0\u5E74" },
|
|
1344
|
+
type: "federal",
|
|
1345
|
+
status: "confirmed",
|
|
1346
|
+
states: ["*"],
|
|
1347
|
+
isPublicHoliday: true,
|
|
1348
|
+
gazetteLevel: "P",
|
|
1349
|
+
source: "jpm",
|
|
1350
|
+
gazetteRef: "GN-33499",
|
|
1351
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1352
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
id: "2026-tahun-baharu-cina-2",
|
|
1356
|
+
date: "2026-02-18",
|
|
1357
|
+
name: { ms: "Tahun Baharu Cina (Hari Kedua)", en: "Chinese New Year (2nd Day)", zh: "\u519C\u5386\u65B0\u5E74\uFF08\u7B2C\u4E8C\u5929\uFF09" },
|
|
1358
|
+
type: "federal",
|
|
1359
|
+
status: "confirmed",
|
|
1360
|
+
states: ["*"],
|
|
1361
|
+
isPublicHoliday: true,
|
|
1362
|
+
gazetteLevel: "P",
|
|
1363
|
+
source: "jpm",
|
|
1364
|
+
gazetteRef: "GN-33499",
|
|
1365
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1366
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1367
|
+
},
|
|
1368
|
+
{
|
|
1369
|
+
id: "2026-awal-ramadan",
|
|
1370
|
+
date: "2026-02-19",
|
|
1371
|
+
name: { ms: "Awal Ramadan", en: "Beginning of Ramadan", zh: "\u658B\u6212\u6708\u9996\u65E5" },
|
|
1372
|
+
type: "islamic_state",
|
|
1373
|
+
status: "tentative",
|
|
1374
|
+
states: ["johor", "kedah", "kelantan", "terengganu", "melaka", "perlis"],
|
|
1375
|
+
isPublicHoliday: true,
|
|
1376
|
+
gazetteLevel: "N",
|
|
1377
|
+
hijriDate: "1 Ramadan 1447",
|
|
1378
|
+
source: "jpm",
|
|
1379
|
+
gazetteRef: "GN-33500",
|
|
1380
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1381
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1382
|
+
},
|
|
1383
|
+
{
|
|
1384
|
+
id: "2026-pengisytiharan-kemerdekaan",
|
|
1385
|
+
date: "2026-02-20",
|
|
1386
|
+
name: { ms: "Hari Pengisytiharan Tarikh Kemerdekaan", en: "Declaration of Independence Day" },
|
|
1387
|
+
type: "state",
|
|
1388
|
+
status: "confirmed",
|
|
1389
|
+
states: ["melaka"],
|
|
1390
|
+
isPublicHoliday: true,
|
|
1391
|
+
gazetteLevel: "N",
|
|
1392
|
+
source: "jpm",
|
|
1393
|
+
gazetteRef: "GN-33500",
|
|
1394
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1395
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1396
|
+
},
|
|
1397
|
+
{
|
|
1398
|
+
id: "2026-pertabalan-sultan-terengganu",
|
|
1399
|
+
date: "2026-03-04",
|
|
1400
|
+
name: { ms: "Hari Ulang Tahun Pertabalan Sultan Terengganu", en: "Anniversary of Sultan of Terengganu's Installation" },
|
|
1401
|
+
type: "state",
|
|
1402
|
+
status: "confirmed",
|
|
1403
|
+
states: ["terengganu"],
|
|
1404
|
+
isPublicHoliday: true,
|
|
1405
|
+
gazetteLevel: "N",
|
|
1406
|
+
source: "jpm",
|
|
1407
|
+
gazetteRef: "GN-33500",
|
|
1408
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1409
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1410
|
+
},
|
|
1411
|
+
{
|
|
1412
|
+
id: "2026-nuzul-quran",
|
|
1413
|
+
date: "2026-03-07",
|
|
1414
|
+
name: { ms: "Hari Nuzul Al-Quran", en: "Revelation of the Quran", zh: "\u53EF\u5170\u7ECF\u964D\u4E16" },
|
|
1415
|
+
type: "islamic",
|
|
1416
|
+
status: "tentative",
|
|
1417
|
+
states: ["*"],
|
|
1418
|
+
isPublicHoliday: true,
|
|
1419
|
+
gazetteLevel: "P",
|
|
1420
|
+
hijriDate: "17 Ramadan 1447",
|
|
1421
|
+
source: "jpm",
|
|
1422
|
+
gazetteRef: "GN-33499",
|
|
1423
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1424
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1425
|
+
},
|
|
1426
|
+
{
|
|
1427
|
+
id: "2026-hari-raya-aidilfitri-1",
|
|
1428
|
+
date: "2026-03-21",
|
|
1429
|
+
name: { ms: "Hari Raya Aidilfitri", en: "Eid al-Fitr", zh: "\u5F00\u658B\u8282" },
|
|
1430
|
+
type: "islamic",
|
|
1431
|
+
status: "tentative",
|
|
1432
|
+
states: ["*"],
|
|
1433
|
+
isPublicHoliday: true,
|
|
1434
|
+
gazetteLevel: "P",
|
|
1435
|
+
hijriDate: "1 Syawal 1447",
|
|
1436
|
+
source: "jpm",
|
|
1437
|
+
gazetteRef: "GN-33499",
|
|
1438
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1439
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1440
|
+
},
|
|
1441
|
+
{
|
|
1442
|
+
id: "2026-hari-raya-aidilfitri-2",
|
|
1443
|
+
date: "2026-03-22",
|
|
1444
|
+
name: { ms: "Hari Raya Aidilfitri (Hari Kedua)", en: "Eid al-Fitr (2nd Day)", zh: "\u5F00\u658B\u8282\uFF08\u7B2C\u4E8C\u5929\uFF09" },
|
|
1445
|
+
type: "islamic",
|
|
1446
|
+
status: "tentative",
|
|
1447
|
+
states: ["*"],
|
|
1448
|
+
isPublicHoliday: true,
|
|
1449
|
+
gazetteLevel: "P",
|
|
1450
|
+
hijriDate: "2 Syawal 1447",
|
|
1451
|
+
source: "jpm",
|
|
1452
|
+
gazetteRef: "GN-33499",
|
|
1453
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1454
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1455
|
+
},
|
|
1456
|
+
{
|
|
1457
|
+
id: "2026-keputeraan-sultan-johor",
|
|
1458
|
+
date: "2026-03-23",
|
|
1459
|
+
name: { ms: "Hari Keputeraan Sultan Johor", en: "Birthday of Sultan of Johor" },
|
|
1460
|
+
type: "state",
|
|
1461
|
+
status: "confirmed",
|
|
1462
|
+
states: ["johor"],
|
|
1463
|
+
isPublicHoliday: true,
|
|
1464
|
+
gazetteLevel: "N",
|
|
1465
|
+
source: "jpm",
|
|
1466
|
+
gazetteRef: "GN-33500",
|
|
1467
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1468
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1469
|
+
},
|
|
1470
|
+
{
|
|
1471
|
+
id: "2026-hari-raya-aidilfitri-3",
|
|
1472
|
+
date: "2026-03-23",
|
|
1473
|
+
name: { ms: "Hari Raya Puasa (Hari Ketiga)", en: "Eid al-Fitr (3rd Day)" },
|
|
1474
|
+
type: "islamic_state",
|
|
1475
|
+
status: "tentative",
|
|
1476
|
+
states: ["kelantan", "terengganu", "kedah", "johor", "perlis"],
|
|
1477
|
+
isPublicHoliday: true,
|
|
1478
|
+
gazetteLevel: "N",
|
|
1479
|
+
hijriDate: "3 Syawal 1447",
|
|
1480
|
+
source: "jpm",
|
|
1481
|
+
gazetteRef: "GN-33500",
|
|
1482
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1483
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1484
|
+
},
|
|
1485
|
+
{
|
|
1486
|
+
id: "2026-hari-jadi-tyt-sabah",
|
|
1487
|
+
date: "2026-03-30",
|
|
1488
|
+
name: { ms: "Hari Jadi Yang di-Pertua Negeri Sabah", en: "Birthday of Governor of Sabah" },
|
|
1489
|
+
type: "state",
|
|
1490
|
+
status: "confirmed",
|
|
1491
|
+
states: ["sabah"],
|
|
1492
|
+
isPublicHoliday: true,
|
|
1493
|
+
gazetteLevel: "N",
|
|
1494
|
+
source: "jpm",
|
|
1495
|
+
gazetteRef: "GN-33500",
|
|
1496
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1497
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1498
|
+
},
|
|
1499
|
+
{
|
|
1500
|
+
id: "2026-good-friday",
|
|
1501
|
+
date: "2026-04-03",
|
|
1502
|
+
name: { ms: "Good Friday", en: "Good Friday", zh: "\u8036\u7A23\u53D7\u96BE\u65E5" },
|
|
1503
|
+
type: "state",
|
|
1504
|
+
status: "confirmed",
|
|
1505
|
+
states: ["sabah", "sarawak"],
|
|
1506
|
+
isPublicHoliday: true,
|
|
1507
|
+
gazetteLevel: "N",
|
|
1508
|
+
source: "jpm",
|
|
1509
|
+
gazetteRef: "GN-33500",
|
|
1510
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1511
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1512
|
+
},
|
|
1513
|
+
{
|
|
1514
|
+
id: "2026-keputeraan-sultan-terengganu",
|
|
1515
|
+
date: "2026-04-26",
|
|
1516
|
+
name: { ms: "Hari Keputeraan Sultan Terengganu", en: "Birthday of Sultan of Terengganu" },
|
|
1517
|
+
type: "state",
|
|
1518
|
+
status: "confirmed",
|
|
1519
|
+
states: ["terengganu"],
|
|
1520
|
+
isPublicHoliday: true,
|
|
1521
|
+
gazetteLevel: "N",
|
|
1522
|
+
source: "jpm",
|
|
1523
|
+
gazetteRef: "GN-33500",
|
|
1524
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1525
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1526
|
+
},
|
|
1527
|
+
{
|
|
1528
|
+
id: "2026-hari-pekerja",
|
|
1529
|
+
date: "2026-05-01",
|
|
1530
|
+
name: { ms: "Hari Pekerja", en: "Labour Day", zh: "\u52B3\u52A8\u8282" },
|
|
1531
|
+
type: "federal",
|
|
1532
|
+
status: "confirmed",
|
|
1533
|
+
states: ["*"],
|
|
1534
|
+
isPublicHoliday: true,
|
|
1535
|
+
gazetteLevel: "P",
|
|
1536
|
+
source: "jpm",
|
|
1537
|
+
gazetteRef: "GN-33499",
|
|
1538
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1539
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1540
|
+
},
|
|
1541
|
+
{
|
|
1542
|
+
id: "2026-keputeraan-raja-perlis",
|
|
1543
|
+
date: "2026-05-17",
|
|
1544
|
+
name: { ms: "Hari Ulang Tahun Keputeraan Raja Perlis", en: "Birthday of Raja of Perlis" },
|
|
1545
|
+
type: "state",
|
|
1546
|
+
status: "confirmed",
|
|
1547
|
+
states: ["perlis"],
|
|
1548
|
+
isPublicHoliday: true,
|
|
1549
|
+
gazetteLevel: "N",
|
|
1550
|
+
source: "jpm",
|
|
1551
|
+
gazetteRef: "GN-33500",
|
|
1552
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1553
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1554
|
+
},
|
|
1555
|
+
{
|
|
1556
|
+
id: "2026-hari-hol-pahang",
|
|
1557
|
+
date: "2026-05-22",
|
|
1558
|
+
name: { ms: "Hari Hol Almarhum Sultan Ahmad Shah Al-Musta'in Billah ibni Almarhum Sultan Abu Bakar", en: "Pahang Hol Day" },
|
|
1559
|
+
type: "state",
|
|
1560
|
+
status: "confirmed",
|
|
1561
|
+
states: ["pahang"],
|
|
1562
|
+
isPublicHoliday: true,
|
|
1563
|
+
gazetteLevel: "N",
|
|
1564
|
+
source: "jpm",
|
|
1565
|
+
gazetteRef: "GN-33500",
|
|
1566
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1567
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1568
|
+
},
|
|
1569
|
+
{
|
|
1570
|
+
id: "2026-hari-arafah",
|
|
1571
|
+
date: "2026-05-26",
|
|
1572
|
+
name: { ms: "Hari Arafah", en: "Day of Arafah" },
|
|
1573
|
+
type: "islamic_state",
|
|
1574
|
+
status: "tentative",
|
|
1575
|
+
states: ["kelantan", "terengganu", "kedah", "perlis"],
|
|
1576
|
+
isPublicHoliday: true,
|
|
1577
|
+
gazetteLevel: "N",
|
|
1578
|
+
hijriDate: "9 Zulhijjah 1447",
|
|
1579
|
+
source: "jpm",
|
|
1580
|
+
gazetteRef: "GN-33500",
|
|
1581
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1582
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1583
|
+
},
|
|
1584
|
+
{
|
|
1585
|
+
id: "2026-hari-raya-haji-1",
|
|
1586
|
+
date: "2026-05-27",
|
|
1587
|
+
name: { ms: "Hari Raya Qurban", en: "Eid al-Adha", zh: "\u54C8\u829D\u8282" },
|
|
1588
|
+
type: "islamic",
|
|
1589
|
+
status: "tentative",
|
|
1590
|
+
states: ["*"],
|
|
1591
|
+
isPublicHoliday: true,
|
|
1592
|
+
gazetteLevel: "P",
|
|
1593
|
+
hijriDate: "10 Zulhijjah 1447",
|
|
1594
|
+
source: "jpm",
|
|
1595
|
+
gazetteRef: "GN-33499",
|
|
1596
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1597
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1598
|
+
},
|
|
1599
|
+
{
|
|
1600
|
+
id: "2026-hari-raya-haji-2",
|
|
1601
|
+
date: "2026-05-28",
|
|
1602
|
+
name: { ms: "Hari Raya Qurban (Hari Kedua)", en: "Eid al-Adha (2nd Day)", zh: "\u54C8\u829D\u8282\uFF08\u7B2C\u4E8C\u5929\uFF09" },
|
|
1603
|
+
type: "islamic",
|
|
1604
|
+
status: "tentative",
|
|
1605
|
+
states: ["*"],
|
|
1606
|
+
isPublicHoliday: true,
|
|
1607
|
+
gazetteLevel: "P",
|
|
1608
|
+
hijriDate: "11 Zulhijjah 1447",
|
|
1609
|
+
source: "jpm",
|
|
1610
|
+
gazetteRef: "GN-33499",
|
|
1611
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1612
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1613
|
+
},
|
|
1614
|
+
{
|
|
1615
|
+
id: "2026-pesta-kaamatan-1",
|
|
1616
|
+
date: "2026-05-30",
|
|
1617
|
+
name: { ms: "Pesta Kaamatan (Pesta Menuai)", en: "Harvest Festival (Kaamatan)" },
|
|
1618
|
+
type: "state",
|
|
1619
|
+
status: "confirmed",
|
|
1620
|
+
states: ["sabah", "wp-labuan"],
|
|
1621
|
+
isPublicHoliday: true,
|
|
1622
|
+
gazetteLevel: "N",
|
|
1623
|
+
source: "jpm",
|
|
1624
|
+
gazetteRef: "GN-33500",
|
|
1625
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1626
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1627
|
+
},
|
|
1628
|
+
{
|
|
1629
|
+
id: "2026-pesta-kaamatan-2",
|
|
1630
|
+
date: "2026-05-31",
|
|
1631
|
+
name: { ms: "Pesta Kaamatan (Pesta Menuai) Hari Kedua", en: "Harvest Festival (Kaamatan) 2nd Day" },
|
|
1632
|
+
type: "state",
|
|
1633
|
+
status: "confirmed",
|
|
1634
|
+
states: ["sabah", "wp-labuan"],
|
|
1635
|
+
isPublicHoliday: true,
|
|
1636
|
+
gazetteLevel: "N",
|
|
1637
|
+
source: "jpm",
|
|
1638
|
+
gazetteRef: "GN-33500",
|
|
1639
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1640
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1641
|
+
},
|
|
1642
|
+
{
|
|
1643
|
+
id: "2026-hari-wesak",
|
|
1644
|
+
date: "2026-05-31",
|
|
1645
|
+
name: { ms: "Hari Wesak", en: "Vesak Day", zh: "\u536B\u585E\u8282" },
|
|
1646
|
+
type: "federal",
|
|
1647
|
+
status: "confirmed",
|
|
1648
|
+
states: ["*"],
|
|
1649
|
+
isPublicHoliday: true,
|
|
1650
|
+
gazetteLevel: "P",
|
|
1651
|
+
source: "jpm",
|
|
1652
|
+
gazetteRef: "GN-33499",
|
|
1653
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1654
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1655
|
+
},
|
|
1656
|
+
{
|
|
1657
|
+
id: "2026-keputeraan-agong",
|
|
1658
|
+
date: "2026-06-01",
|
|
1659
|
+
name: { ms: "Hari Keputeraan Rasmi Seri Paduka Baginda Yang di-Pertuan Agong", en: "Official Birthday of the Yang di-Pertuan Agong", zh: "\u6700\u9AD8\u5143\u9996\u8BDE\u8FB0" },
|
|
1660
|
+
type: "federal",
|
|
1661
|
+
status: "confirmed",
|
|
1662
|
+
states: ["*"],
|
|
1663
|
+
isPublicHoliday: true,
|
|
1664
|
+
gazetteLevel: "P",
|
|
1665
|
+
source: "jpm",
|
|
1666
|
+
gazetteRef: "GN-33499",
|
|
1667
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1668
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1669
|
+
},
|
|
1670
|
+
{
|
|
1671
|
+
id: "2026-gawai-dayak-1",
|
|
1672
|
+
date: "2026-06-01",
|
|
1673
|
+
name: { ms: "Perayaan Hari Gawai Dayak", en: "Gawai Dayak Festival" },
|
|
1674
|
+
type: "state",
|
|
1675
|
+
status: "confirmed",
|
|
1676
|
+
states: ["sarawak"],
|
|
1677
|
+
isPublicHoliday: true,
|
|
1678
|
+
gazetteLevel: "N",
|
|
1679
|
+
source: "jpm",
|
|
1680
|
+
gazetteRef: "GN-33500",
|
|
1681
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1682
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1683
|
+
},
|
|
1684
|
+
{
|
|
1685
|
+
id: "2026-gawai-dayak-2",
|
|
1686
|
+
date: "2026-06-02",
|
|
1687
|
+
name: { ms: "Perayaan Hari Gawai Dayak (Hari Kedua)", en: "Gawai Dayak Festival (2nd Day)" },
|
|
1688
|
+
type: "state",
|
|
1689
|
+
status: "confirmed",
|
|
1690
|
+
states: ["sarawak"],
|
|
1691
|
+
isPublicHoliday: true,
|
|
1692
|
+
gazetteLevel: "N",
|
|
1693
|
+
source: "jpm",
|
|
1694
|
+
gazetteRef: "GN-33500",
|
|
1695
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1696
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1697
|
+
},
|
|
1698
|
+
{
|
|
1699
|
+
id: "2026-awal-muharam",
|
|
1700
|
+
date: "2026-06-17",
|
|
1701
|
+
name: { ms: "Awal Muharam (Maal Hijrah)", en: "Islamic New Year", zh: "\u56DE\u5386\u65B0\u5E74" },
|
|
1702
|
+
type: "islamic",
|
|
1703
|
+
status: "tentative",
|
|
1704
|
+
states: ["*"],
|
|
1705
|
+
isPublicHoliday: true,
|
|
1706
|
+
gazetteLevel: "P",
|
|
1707
|
+
hijriDate: "1 Muharam 1448",
|
|
1708
|
+
source: "jpm",
|
|
1709
|
+
gazetteRef: "GN-33499",
|
|
1710
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1711
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1712
|
+
},
|
|
1713
|
+
{
|
|
1714
|
+
id: "2026-keputeraan-sultan-kedah",
|
|
1715
|
+
date: "2026-06-21",
|
|
1716
|
+
name: { ms: "Hari Keputeraan Sultan Kedah", en: "Birthday of Sultan of Kedah" },
|
|
1717
|
+
type: "state",
|
|
1718
|
+
status: "confirmed",
|
|
1719
|
+
states: ["kedah"],
|
|
1720
|
+
isPublicHoliday: true,
|
|
1721
|
+
gazetteLevel: "N",
|
|
1722
|
+
source: "jpm",
|
|
1723
|
+
gazetteRef: "GN-33500",
|
|
1724
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1725
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1726
|
+
},
|
|
1727
|
+
{
|
|
1728
|
+
id: "2026-tapak-warisan-dunia",
|
|
1729
|
+
date: "2026-07-07",
|
|
1730
|
+
name: { ms: "Hari Ulang Tahun Perisytiharan Tapak Warisan Dunia", en: "World Heritage Site Declaration Anniversary" },
|
|
1731
|
+
type: "state",
|
|
1732
|
+
status: "confirmed",
|
|
1733
|
+
states: ["melaka"],
|
|
1734
|
+
isPublicHoliday: true,
|
|
1735
|
+
gazetteLevel: "N",
|
|
1736
|
+
source: "jpm",
|
|
1737
|
+
gazetteRef: "GN-33500",
|
|
1738
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1739
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1740
|
+
},
|
|
1741
|
+
{
|
|
1742
|
+
id: "2026-hari-jadi-tyt-penang",
|
|
1743
|
+
date: "2026-07-11",
|
|
1744
|
+
name: { ms: "Hari Jadi Yang di-Pertua Negeri Pulau Pinang", en: "Birthday of Governor of Penang" },
|
|
1745
|
+
type: "state",
|
|
1746
|
+
status: "confirmed",
|
|
1747
|
+
states: ["pulau-pinang"],
|
|
1748
|
+
isPublicHoliday: true,
|
|
1749
|
+
gazetteLevel: "N",
|
|
1750
|
+
source: "jpm",
|
|
1751
|
+
gazetteRef: "GN-33500",
|
|
1752
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1753
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1754
|
+
},
|
|
1755
|
+
{
|
|
1756
|
+
id: "2026-hari-hol-johor",
|
|
1757
|
+
date: "2026-07-21",
|
|
1758
|
+
name: { ms: "Hari Hol Almarhum Sultan Iskandar", en: "Johor Hol Day" },
|
|
1759
|
+
type: "state",
|
|
1760
|
+
status: "confirmed",
|
|
1761
|
+
states: ["johor"],
|
|
1762
|
+
isPublicHoliday: true,
|
|
1763
|
+
gazetteLevel: "N",
|
|
1764
|
+
source: "jpm",
|
|
1765
|
+
gazetteRef: "GN-33500",
|
|
1766
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1767
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1768
|
+
},
|
|
1769
|
+
{
|
|
1770
|
+
id: "2026-hari-kemerdekaan-sarawak",
|
|
1771
|
+
date: "2026-07-22",
|
|
1772
|
+
name: { ms: "Hari Kemerdekaan Sarawak", en: "Sarawak Independence Day" },
|
|
1773
|
+
type: "state",
|
|
1774
|
+
status: "confirmed",
|
|
1775
|
+
states: ["sarawak"],
|
|
1776
|
+
isPublicHoliday: true,
|
|
1777
|
+
gazetteLevel: "N",
|
|
1778
|
+
source: "jpm",
|
|
1779
|
+
gazetteRef: "GN-33500",
|
|
1780
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1781
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1782
|
+
},
|
|
1783
|
+
{
|
|
1784
|
+
id: "2026-keputeraan-sultan-pahang",
|
|
1785
|
+
date: "2026-07-31",
|
|
1786
|
+
name: { ms: "Hari Keputeraan Sultan Pahang", en: "Birthday of Sultan of Pahang" },
|
|
1787
|
+
type: "state",
|
|
1788
|
+
status: "confirmed",
|
|
1789
|
+
states: ["pahang"],
|
|
1790
|
+
isPublicHoliday: true,
|
|
1791
|
+
gazetteLevel: "N",
|
|
1792
|
+
source: "jpm",
|
|
1793
|
+
gazetteRef: "GN-33500",
|
|
1794
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1795
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1796
|
+
},
|
|
1797
|
+
{
|
|
1798
|
+
id: "2026-hari-jadi-tyt-melaka",
|
|
1799
|
+
date: "2026-08-24",
|
|
1800
|
+
name: { ms: "Hari Jadi Yang di-Pertua Negeri Melaka", en: "Birthday of Governor of Malacca" },
|
|
1801
|
+
type: "state",
|
|
1802
|
+
status: "confirmed",
|
|
1803
|
+
states: ["melaka"],
|
|
1804
|
+
isPublicHoliday: true,
|
|
1805
|
+
gazetteLevel: "N",
|
|
1806
|
+
source: "jpm",
|
|
1807
|
+
gazetteRef: "GN-33500",
|
|
1808
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1809
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1810
|
+
},
|
|
1811
|
+
{
|
|
1812
|
+
id: "2026-maulidur-rasul",
|
|
1813
|
+
date: "2026-08-25",
|
|
1814
|
+
name: { ms: "Hari Keputeraan Nabi Muhammad S.A.W. (Maulidur Rasul)", en: "Prophet Muhammad's Birthday", zh: "\u5148\u77E5\u7A46\u7F55\u9ED8\u5FB7\u8BDE\u8FB0" },
|
|
1815
|
+
type: "islamic",
|
|
1816
|
+
status: "tentative",
|
|
1817
|
+
states: ["*"],
|
|
1818
|
+
isPublicHoliday: true,
|
|
1819
|
+
gazetteLevel: "P",
|
|
1820
|
+
hijriDate: "12 Rabiulawal 1448",
|
|
1821
|
+
source: "jpm",
|
|
1822
|
+
gazetteRef: "GN-33499",
|
|
1823
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1824
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1825
|
+
},
|
|
1826
|
+
{
|
|
1827
|
+
id: "2026-hari-kebangsaan",
|
|
1828
|
+
date: "2026-08-31",
|
|
1829
|
+
name: { ms: "Hari Kebangsaan", en: "National Day", zh: "\u56FD\u5E86\u65E5" },
|
|
1830
|
+
type: "federal",
|
|
1831
|
+
status: "confirmed",
|
|
1832
|
+
states: ["*"],
|
|
1833
|
+
isPublicHoliday: true,
|
|
1834
|
+
gazetteLevel: "P",
|
|
1835
|
+
source: "jpm",
|
|
1836
|
+
gazetteRef: "GN-33499",
|
|
1837
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1838
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1839
|
+
},
|
|
1840
|
+
{
|
|
1841
|
+
id: "2026-hari-malaysia",
|
|
1842
|
+
date: "2026-09-16",
|
|
1843
|
+
name: { ms: "Hari Malaysia", en: "Malaysia Day", zh: "\u9A6C\u6765\u897F\u4E9A\u65E5" },
|
|
1844
|
+
type: "federal",
|
|
1845
|
+
status: "confirmed",
|
|
1846
|
+
states: ["*"],
|
|
1847
|
+
isPublicHoliday: true,
|
|
1848
|
+
gazetteLevel: "P",
|
|
1849
|
+
source: "jpm",
|
|
1850
|
+
gazetteRef: "GN-33499",
|
|
1851
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1852
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1853
|
+
},
|
|
1854
|
+
{
|
|
1855
|
+
id: "2026-keputeraan-sultan-kelantan-1",
|
|
1856
|
+
date: "2026-09-29",
|
|
1857
|
+
name: { ms: "Hari Keputeraan Sultan Kelantan", en: "Birthday of Sultan of Kelantan (Day 1)" },
|
|
1858
|
+
type: "state",
|
|
1859
|
+
status: "confirmed",
|
|
1860
|
+
states: ["kelantan"],
|
|
1861
|
+
isPublicHoliday: true,
|
|
1862
|
+
gazetteLevel: "N",
|
|
1863
|
+
source: "jpm",
|
|
1864
|
+
gazetteRef: "GN-33500",
|
|
1865
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1866
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1867
|
+
},
|
|
1868
|
+
{
|
|
1869
|
+
id: "2026-keputeraan-sultan-kelantan-2",
|
|
1870
|
+
date: "2026-09-30",
|
|
1871
|
+
name: { ms: "Hari Keputeraan Sultan Kelantan (Hari Kedua)", en: "Birthday of Sultan of Kelantan (Day 2)" },
|
|
1872
|
+
type: "state",
|
|
1873
|
+
status: "confirmed",
|
|
1874
|
+
states: ["kelantan"],
|
|
1875
|
+
isPublicHoliday: true,
|
|
1876
|
+
gazetteLevel: "N",
|
|
1877
|
+
source: "jpm",
|
|
1878
|
+
gazetteRef: "GN-33500",
|
|
1879
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1880
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1881
|
+
},
|
|
1882
|
+
{
|
|
1883
|
+
id: "2026-hari-jadi-tyt-sarawak",
|
|
1884
|
+
date: "2026-10-10",
|
|
1885
|
+
name: { ms: "Hari Jadi Yang di-Pertua Negeri Sarawak", en: "Birthday of Governor of Sarawak" },
|
|
1886
|
+
type: "state",
|
|
1887
|
+
status: "confirmed",
|
|
1888
|
+
states: ["sarawak"],
|
|
1889
|
+
isPublicHoliday: true,
|
|
1890
|
+
gazetteLevel: "N",
|
|
1891
|
+
source: "jpm",
|
|
1892
|
+
gazetteRef: "GN-33500",
|
|
1893
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1894
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1895
|
+
},
|
|
1896
|
+
{
|
|
1897
|
+
id: "2026-keputeraan-sultan-perak",
|
|
1898
|
+
date: "2026-11-06",
|
|
1899
|
+
name: { ms: "Hari Keputeraan Sultan Perak", en: "Birthday of Sultan of Perak" },
|
|
1900
|
+
type: "state",
|
|
1901
|
+
status: "confirmed",
|
|
1902
|
+
states: ["perak"],
|
|
1903
|
+
isPublicHoliday: true,
|
|
1904
|
+
gazetteLevel: "N",
|
|
1905
|
+
source: "jpm",
|
|
1906
|
+
gazetteRef: "GN-33500",
|
|
1907
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1908
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1909
|
+
},
|
|
1910
|
+
{
|
|
1911
|
+
id: "2026-deepavali",
|
|
1912
|
+
date: "2026-11-08",
|
|
1913
|
+
name: { ms: "Hari Deepavali", en: "Deepavali", zh: "\u5C60\u5996\u8282" },
|
|
1914
|
+
type: "federal",
|
|
1915
|
+
status: "confirmed",
|
|
1916
|
+
states: ["*"],
|
|
1917
|
+
isPublicHoliday: true,
|
|
1918
|
+
gazetteLevel: "P",
|
|
1919
|
+
source: "jpm",
|
|
1920
|
+
gazetteRef: "GN-33499",
|
|
1921
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1922
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1923
|
+
},
|
|
1924
|
+
{
|
|
1925
|
+
id: "2026-keputeraan-sultan-selangor",
|
|
1926
|
+
date: "2026-12-11",
|
|
1927
|
+
name: { ms: "Hari Keputeraan Sultan Selangor", en: "Birthday of Sultan of Selangor" },
|
|
1928
|
+
type: "state",
|
|
1929
|
+
status: "confirmed",
|
|
1930
|
+
states: ["selangor"],
|
|
1931
|
+
isPublicHoliday: true,
|
|
1932
|
+
gazetteLevel: "N",
|
|
1933
|
+
source: "jpm",
|
|
1934
|
+
gazetteRef: "GN-33500",
|
|
1935
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1936
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1937
|
+
},
|
|
1938
|
+
{
|
|
1939
|
+
id: "2026-christmas-eve",
|
|
1940
|
+
date: "2026-12-24",
|
|
1941
|
+
name: { ms: "Christmas Eve", en: "Christmas Eve", zh: "\u5723\u8BDE\u591C" },
|
|
1942
|
+
type: "state",
|
|
1943
|
+
status: "confirmed",
|
|
1944
|
+
states: ["sabah"],
|
|
1945
|
+
isPublicHoliday: true,
|
|
1946
|
+
gazetteLevel: "N",
|
|
1947
|
+
source: "jpm",
|
|
1948
|
+
gazetteRef: "GN-33500",
|
|
1949
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1950
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1951
|
+
},
|
|
1952
|
+
{
|
|
1953
|
+
id: "2026-hari-krismas",
|
|
1954
|
+
date: "2026-12-25",
|
|
1955
|
+
name: { ms: "Hari Krismas", en: "Christmas Day", zh: "\u5723\u8BDE\u8282" },
|
|
1956
|
+
type: "federal",
|
|
1957
|
+
status: "confirmed",
|
|
1958
|
+
states: ["*"],
|
|
1959
|
+
isPublicHoliday: true,
|
|
1960
|
+
gazetteLevel: "P",
|
|
1961
|
+
source: "jpm",
|
|
1962
|
+
gazetteRef: "GN-33499",
|
|
1963
|
+
createdAt: "2025-08-28T00:00:00+08:00",
|
|
1964
|
+
updatedAt: "2025-08-28T00:00:00+08:00"
|
|
1965
|
+
}
|
|
1966
|
+
];
|
|
1967
|
+
|
|
1968
|
+
// ../../data/holidays/2027.json
|
|
1969
|
+
var __default4 = [
|
|
1970
|
+
{
|
|
1971
|
+
id: "2027-tahun-baharu",
|
|
1972
|
+
date: "2027-01-01",
|
|
1973
|
+
name: { ms: "Tahun Baharu", en: "New Year's Day", zh: "\u5143\u65E6" },
|
|
1974
|
+
type: "state",
|
|
1975
|
+
status: "confirmed",
|
|
1976
|
+
states: ["perak", "pulau-pinang", "selangor", "negeri-sembilan", "melaka", "pahang", "sabah", "sarawak", "kuala-lumpur", "wp-putrajaya", "wp-labuan"],
|
|
1977
|
+
isPublicHoliday: true,
|
|
1978
|
+
gazetteLevel: "N",
|
|
1979
|
+
source: "community",
|
|
1980
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
1981
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
1982
|
+
},
|
|
1983
|
+
{
|
|
1984
|
+
id: "2027-israk-mikraj",
|
|
1985
|
+
date: "2027-01-06",
|
|
1986
|
+
name: { ms: "Israk dan Mikraj", en: "Isra' Mi'raj", zh: "\u591C\u884C\u767B\u9704" },
|
|
1987
|
+
type: "islamic_state",
|
|
1988
|
+
status: "tentative",
|
|
1989
|
+
states: ["kedah", "kelantan", "terengganu", "perlis", "negeri-sembilan", "pahang"],
|
|
1990
|
+
isPublicHoliday: true,
|
|
1991
|
+
gazetteLevel: "N",
|
|
1992
|
+
hijriDate: "27 Rejab 1448",
|
|
1993
|
+
isEstimated: true,
|
|
1994
|
+
source: "jakim",
|
|
1995
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
1996
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
1997
|
+
},
|
|
1998
|
+
{
|
|
1999
|
+
id: "2027-keputeraan-ydb-ns",
|
|
2000
|
+
date: "2027-01-14",
|
|
2001
|
+
name: { ms: "Hari Keputeraan Yang di-Pertuan Besar Negeri Sembilan", en: "Birthday of Yang di-Pertuan Besar of Negeri Sembilan" },
|
|
2002
|
+
type: "state",
|
|
2003
|
+
status: "confirmed",
|
|
2004
|
+
states: ["negeri-sembilan"],
|
|
2005
|
+
isPublicHoliday: true,
|
|
2006
|
+
gazetteLevel: "N",
|
|
2007
|
+
source: "community",
|
|
2008
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2009
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2010
|
+
},
|
|
2011
|
+
{
|
|
2012
|
+
id: "2027-thaipusam",
|
|
2013
|
+
date: "2027-01-22",
|
|
2014
|
+
name: { ms: "Hari Thaipusam", en: "Thaipusam", zh: "\u5927\u5B9D\u68EE\u8282" },
|
|
2015
|
+
type: "state",
|
|
2016
|
+
status: "confirmed",
|
|
2017
|
+
states: ["johor", "kedah", "selangor", "perak", "pulau-pinang", "negeri-sembilan", "kuala-lumpur", "wp-putrajaya"],
|
|
2018
|
+
isPublicHoliday: true,
|
|
2019
|
+
gazetteLevel: "N",
|
|
2020
|
+
source: "community",
|
|
2021
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2022
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2023
|
+
},
|
|
2024
|
+
{
|
|
2025
|
+
id: "2027-hari-wilayah",
|
|
2026
|
+
date: "2027-02-01",
|
|
2027
|
+
name: { ms: "Hari Wilayah Persekutuan", en: "Federal Territory Day", zh: "\u8054\u90A6\u76F4\u8F96\u533A\u65E5" },
|
|
2028
|
+
type: "state",
|
|
2029
|
+
status: "confirmed",
|
|
2030
|
+
states: ["kuala-lumpur", "wp-putrajaya", "wp-labuan"],
|
|
2031
|
+
isPublicHoliday: true,
|
|
2032
|
+
gazetteLevel: "N",
|
|
2033
|
+
source: "community",
|
|
2034
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2035
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2036
|
+
},
|
|
2037
|
+
{
|
|
2038
|
+
id: "2027-tahun-baharu-cina-1",
|
|
2039
|
+
date: "2027-02-06",
|
|
2040
|
+
name: { ms: "Tahun Baharu Cina", en: "Chinese New Year", zh: "\u519C\u5386\u65B0\u5E74" },
|
|
2041
|
+
type: "federal",
|
|
2042
|
+
status: "confirmed",
|
|
2043
|
+
states: ["*"],
|
|
2044
|
+
isPublicHoliday: true,
|
|
2045
|
+
gazetteLevel: "P",
|
|
2046
|
+
source: "community",
|
|
2047
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2048
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2049
|
+
},
|
|
2050
|
+
{
|
|
2051
|
+
id: "2027-tahun-baharu-cina-2",
|
|
2052
|
+
date: "2027-02-07",
|
|
2053
|
+
name: { ms: "Tahun Baharu Cina (Hari Kedua)", en: "Chinese New Year (2nd Day)", zh: "\u519C\u5386\u65B0\u5E74\uFF08\u7B2C\u4E8C\u5929\uFF09" },
|
|
2054
|
+
type: "federal",
|
|
2055
|
+
status: "confirmed",
|
|
2056
|
+
states: ["*"],
|
|
2057
|
+
isPublicHoliday: true,
|
|
2058
|
+
gazetteLevel: "P",
|
|
2059
|
+
source: "community",
|
|
2060
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2061
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2062
|
+
},
|
|
2063
|
+
{
|
|
2064
|
+
id: "2027-awal-ramadan",
|
|
2065
|
+
date: "2027-02-08",
|
|
2066
|
+
name: { ms: "Awal Ramadan", en: "Beginning of Ramadan" },
|
|
2067
|
+
type: "islamic_state",
|
|
2068
|
+
status: "tentative",
|
|
2069
|
+
states: ["johor", "kedah"],
|
|
2070
|
+
isPublicHoliday: true,
|
|
2071
|
+
gazetteLevel: "N",
|
|
2072
|
+
hijriDate: "1 Ramadan 1448",
|
|
2073
|
+
isEstimated: true,
|
|
2074
|
+
source: "jakim",
|
|
2075
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2076
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2077
|
+
},
|
|
2078
|
+
{
|
|
2079
|
+
id: "2027-pengisytiharan-melaka",
|
|
2080
|
+
date: "2027-02-20",
|
|
2081
|
+
name: { ms: "Hari Pengisytiharan Melaka Bandaraya Bersejarah", en: "Declaration of Melaka as Historical City" },
|
|
2082
|
+
type: "state",
|
|
2083
|
+
status: "confirmed",
|
|
2084
|
+
states: ["melaka"],
|
|
2085
|
+
isPublicHoliday: true,
|
|
2086
|
+
gazetteLevel: "N",
|
|
2087
|
+
source: "community",
|
|
2088
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2089
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2090
|
+
},
|
|
2091
|
+
{
|
|
2092
|
+
id: "2027-nuzul-al-quran",
|
|
2093
|
+
date: "2027-02-24",
|
|
2094
|
+
name: { ms: "Hari Nuzul Al-Quran", en: "Nuzul Al-Quran", zh: "\u53EF\u5170\u7ECF\u964D\u4E16\u65E5" },
|
|
2095
|
+
type: "islamic",
|
|
2096
|
+
status: "tentative",
|
|
2097
|
+
states: ["kelantan", "terengganu", "perak", "pulau-pinang", "selangor", "pahang", "perlis", "kuala-lumpur", "wp-putrajaya", "wp-labuan"],
|
|
2098
|
+
isPublicHoliday: true,
|
|
2099
|
+
gazetteLevel: "N",
|
|
2100
|
+
hijriDate: "17 Ramadan 1448",
|
|
2101
|
+
isEstimated: true,
|
|
2102
|
+
source: "jakim",
|
|
2103
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2104
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2105
|
+
},
|
|
2106
|
+
{
|
|
2107
|
+
id: "2027-installation-sultan-terengganu",
|
|
2108
|
+
date: "2027-03-04",
|
|
2109
|
+
name: { ms: "Hari Ulang Tahun Pertabalan Sultan Terengganu", en: "Anniversary of the Installation of the Sultan of Terengganu" },
|
|
2110
|
+
type: "state",
|
|
2111
|
+
status: "confirmed",
|
|
2112
|
+
states: ["terengganu"],
|
|
2113
|
+
isPublicHoliday: true,
|
|
2114
|
+
gazetteLevel: "N",
|
|
2115
|
+
source: "community",
|
|
2116
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2117
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2118
|
+
},
|
|
2119
|
+
{
|
|
2120
|
+
id: "2027-hari-raya-aidilfitri-1",
|
|
2121
|
+
date: "2027-03-10",
|
|
2122
|
+
name: { ms: "Hari Raya Aidilfitri", en: "Eid al-Fitr", zh: "\u5F00\u658B\u8282" },
|
|
2123
|
+
type: "islamic",
|
|
2124
|
+
status: "tentative",
|
|
2125
|
+
states: ["*"],
|
|
2126
|
+
isPublicHoliday: true,
|
|
2127
|
+
gazetteLevel: "P",
|
|
2128
|
+
hijriDate: "1 Syawal 1448",
|
|
2129
|
+
isEstimated: true,
|
|
2130
|
+
source: "jakim",
|
|
2131
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2132
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2133
|
+
},
|
|
2134
|
+
{
|
|
2135
|
+
id: "2027-hari-raya-aidilfitri-2",
|
|
2136
|
+
date: "2027-03-11",
|
|
2137
|
+
name: { ms: "Hari Raya Aidilfitri (Hari Kedua)", en: "Eid al-Fitr (2nd Day)", zh: "\u5F00\u658B\u8282\uFF08\u7B2C\u4E8C\u5929\uFF09" },
|
|
2138
|
+
type: "islamic",
|
|
2139
|
+
status: "tentative",
|
|
2140
|
+
states: ["*"],
|
|
2141
|
+
isPublicHoliday: true,
|
|
2142
|
+
gazetteLevel: "P",
|
|
2143
|
+
hijriDate: "2 Syawal 1448",
|
|
2144
|
+
isEstimated: true,
|
|
2145
|
+
source: "jakim",
|
|
2146
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2147
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2148
|
+
},
|
|
2149
|
+
{
|
|
2150
|
+
id: "2027-keputeraan-sultan-johor",
|
|
2151
|
+
date: "2027-03-23",
|
|
2152
|
+
name: { ms: "Hari Keputeraan Sultan Johor", en: "Birthday of the Sultan of Johor" },
|
|
2153
|
+
type: "state",
|
|
2154
|
+
status: "confirmed",
|
|
2155
|
+
states: ["johor"],
|
|
2156
|
+
isPublicHoliday: true,
|
|
2157
|
+
gazetteLevel: "N",
|
|
2158
|
+
source: "community",
|
|
2159
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2160
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2161
|
+
},
|
|
2162
|
+
{
|
|
2163
|
+
id: "2027-good-friday",
|
|
2164
|
+
date: "2027-03-26",
|
|
2165
|
+
name: { ms: "Good Friday", en: "Good Friday", zh: "\u8036\u7A23\u53D7\u96BE\u65E5" },
|
|
2166
|
+
type: "state",
|
|
2167
|
+
status: "confirmed",
|
|
2168
|
+
states: ["sabah", "sarawak"],
|
|
2169
|
+
isPublicHoliday: true,
|
|
2170
|
+
gazetteLevel: "N",
|
|
2171
|
+
source: "community",
|
|
2172
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2173
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2174
|
+
},
|
|
2175
|
+
{
|
|
2176
|
+
id: "2027-keputeraan-tyt-sabah",
|
|
2177
|
+
date: "2027-03-30",
|
|
2178
|
+
name: { ms: "Hari Keputeraan TYT Yang di-Pertua Negeri Sabah", en: "Birthday of the Governor of Sabah" },
|
|
2179
|
+
type: "state",
|
|
2180
|
+
status: "confirmed",
|
|
2181
|
+
states: ["sabah"],
|
|
2182
|
+
isPublicHoliday: true,
|
|
2183
|
+
gazetteLevel: "N",
|
|
2184
|
+
source: "community",
|
|
2185
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2186
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2187
|
+
},
|
|
2188
|
+
{
|
|
2189
|
+
id: "2027-keputeraan-sultan-terengganu",
|
|
2190
|
+
date: "2027-04-26",
|
|
2191
|
+
name: { ms: "Hari Keputeraan Sultan Terengganu", en: "Birthday of the Sultan of Terengganu" },
|
|
2192
|
+
type: "state",
|
|
2193
|
+
status: "confirmed",
|
|
2194
|
+
states: ["terengganu"],
|
|
2195
|
+
isPublicHoliday: true,
|
|
2196
|
+
gazetteLevel: "N",
|
|
2197
|
+
source: "community",
|
|
2198
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2199
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2200
|
+
},
|
|
2201
|
+
{
|
|
2202
|
+
id: "2027-hari-pekerja",
|
|
2203
|
+
date: "2027-05-01",
|
|
2204
|
+
name: { ms: "Hari Pekerja", en: "Labour Day", zh: "\u52B3\u52A8\u8282" },
|
|
2205
|
+
type: "federal",
|
|
2206
|
+
status: "confirmed",
|
|
2207
|
+
states: ["*"],
|
|
2208
|
+
isPublicHoliday: true,
|
|
2209
|
+
gazetteLevel: "P",
|
|
2210
|
+
source: "jpm",
|
|
2211
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2212
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2213
|
+
},
|
|
2214
|
+
{
|
|
2215
|
+
id: "2027-hari-arafah",
|
|
2216
|
+
date: "2027-05-16",
|
|
2217
|
+
name: { ms: "Hari Arafah", en: "Day of Arafah" },
|
|
2218
|
+
type: "islamic_state",
|
|
2219
|
+
status: "tentative",
|
|
2220
|
+
states: ["kelantan", "terengganu"],
|
|
2221
|
+
isPublicHoliday: true,
|
|
2222
|
+
gazetteLevel: "N",
|
|
2223
|
+
hijriDate: "9 Zulhijjah 1448",
|
|
2224
|
+
isEstimated: true,
|
|
2225
|
+
source: "jakim",
|
|
2226
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2227
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2228
|
+
},
|
|
2229
|
+
{
|
|
2230
|
+
id: "2027-hari-raya-haji-1",
|
|
2231
|
+
date: "2027-05-17",
|
|
2232
|
+
name: { ms: "Hari Raya Qurban", en: "Eid al-Adha", zh: "\u54C8\u829D\u8282" },
|
|
2233
|
+
type: "islamic",
|
|
2234
|
+
status: "tentative",
|
|
2235
|
+
states: ["*"],
|
|
2236
|
+
isPublicHoliday: true,
|
|
2237
|
+
gazetteLevel: "P",
|
|
2238
|
+
hijriDate: "10 Zulhijjah 1448",
|
|
2239
|
+
isEstimated: true,
|
|
2240
|
+
source: "jakim",
|
|
2241
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2242
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2243
|
+
},
|
|
2244
|
+
{
|
|
2245
|
+
id: "2027-keputeraan-raja-perlis",
|
|
2246
|
+
date: "2027-05-17",
|
|
2247
|
+
name: { ms: "Hari Keputeraan Raja Perlis", en: "Birthday of the Raja of Perlis" },
|
|
2248
|
+
type: "state",
|
|
2249
|
+
status: "confirmed",
|
|
2250
|
+
states: ["perlis"],
|
|
2251
|
+
isPublicHoliday: true,
|
|
2252
|
+
gazetteLevel: "N",
|
|
2253
|
+
source: "community",
|
|
2254
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2255
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2256
|
+
},
|
|
2257
|
+
{
|
|
2258
|
+
id: "2027-hari-raya-haji-2",
|
|
2259
|
+
date: "2027-05-18",
|
|
2260
|
+
name: { ms: "Hari Raya Qurban (Hari Kedua)", en: "Eid al-Adha (2nd Day)" },
|
|
2261
|
+
type: "islamic_state",
|
|
2262
|
+
status: "tentative",
|
|
2263
|
+
states: ["kedah", "kelantan", "perlis", "terengganu"],
|
|
2264
|
+
isPublicHoliday: true,
|
|
2265
|
+
gazetteLevel: "N",
|
|
2266
|
+
hijriDate: "11 Zulhijjah 1448",
|
|
2267
|
+
isEstimated: true,
|
|
2268
|
+
source: "jakim",
|
|
2269
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2270
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2271
|
+
},
|
|
2272
|
+
{
|
|
2273
|
+
id: "2027-wesak",
|
|
2274
|
+
date: "2027-05-20",
|
|
2275
|
+
name: { ms: "Hari Wesak", en: "Vesak Day", zh: "\u536B\u585E\u8282" },
|
|
2276
|
+
type: "federal",
|
|
2277
|
+
status: "confirmed",
|
|
2278
|
+
states: ["*"],
|
|
2279
|
+
isPublicHoliday: true,
|
|
2280
|
+
gazetteLevel: "P",
|
|
2281
|
+
source: "community",
|
|
2282
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2283
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2284
|
+
},
|
|
2285
|
+
{
|
|
2286
|
+
id: "2027-hari-hol-pahang",
|
|
2287
|
+
date: "2027-05-22",
|
|
2288
|
+
name: { ms: "Hari Hol Pahang", en: "Hari Hol of Pahang" },
|
|
2289
|
+
type: "state",
|
|
2290
|
+
status: "confirmed",
|
|
2291
|
+
states: ["pahang"],
|
|
2292
|
+
isPublicHoliday: true,
|
|
2293
|
+
gazetteLevel: "N",
|
|
2294
|
+
source: "community",
|
|
2295
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2296
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2297
|
+
},
|
|
2298
|
+
{
|
|
2299
|
+
id: "2027-pesta-kaamatan-1",
|
|
2300
|
+
date: "2027-05-30",
|
|
2301
|
+
name: { ms: "Pesta Kaamatan", en: "Harvest Festival" },
|
|
2302
|
+
type: "state",
|
|
2303
|
+
status: "confirmed",
|
|
2304
|
+
states: ["sabah", "wp-labuan"],
|
|
2305
|
+
isPublicHoliday: true,
|
|
2306
|
+
gazetteLevel: "N",
|
|
2307
|
+
source: "community",
|
|
2308
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2309
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2310
|
+
},
|
|
2311
|
+
{
|
|
2312
|
+
id: "2027-pesta-kaamatan-2",
|
|
2313
|
+
date: "2027-05-31",
|
|
2314
|
+
name: { ms: "Pesta Kaamatan (Hari Kedua)", en: "Harvest Festival (2nd Day)" },
|
|
2315
|
+
type: "state",
|
|
2316
|
+
status: "confirmed",
|
|
2317
|
+
states: ["sabah", "wp-labuan"],
|
|
2318
|
+
isPublicHoliday: true,
|
|
2319
|
+
gazetteLevel: "N",
|
|
2320
|
+
source: "community",
|
|
2321
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2322
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2323
|
+
},
|
|
2324
|
+
{
|
|
2325
|
+
id: "2027-hari-gawai-1",
|
|
2326
|
+
date: "2027-06-01",
|
|
2327
|
+
name: { ms: "Hari Gawai Dayak", en: "Gawai Dayak" },
|
|
2328
|
+
type: "state",
|
|
2329
|
+
status: "confirmed",
|
|
2330
|
+
states: ["sarawak"],
|
|
2331
|
+
isPublicHoliday: true,
|
|
2332
|
+
gazetteLevel: "N",
|
|
2333
|
+
source: "community",
|
|
2334
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2335
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2336
|
+
},
|
|
2337
|
+
{
|
|
2338
|
+
id: "2027-hari-gawai-2",
|
|
2339
|
+
date: "2027-06-02",
|
|
2340
|
+
name: { ms: "Hari Gawai Dayak (Hari Kedua)", en: "Gawai Dayak (2nd Day)" },
|
|
2341
|
+
type: "state",
|
|
2342
|
+
status: "confirmed",
|
|
2343
|
+
states: ["sarawak"],
|
|
2344
|
+
isPublicHoliday: true,
|
|
2345
|
+
gazetteLevel: "N",
|
|
2346
|
+
source: "community",
|
|
2347
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2348
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2349
|
+
},
|
|
2350
|
+
{
|
|
2351
|
+
id: "2027-awal-muharram",
|
|
2352
|
+
date: "2027-06-06",
|
|
2353
|
+
name: { ms: "Awal Muharram (Maal Hijrah)", en: "Islamic New Year", zh: "\u56DE\u5386\u65B0\u5E74" },
|
|
2354
|
+
type: "islamic",
|
|
2355
|
+
status: "tentative",
|
|
2356
|
+
states: ["*"],
|
|
2357
|
+
isPublicHoliday: true,
|
|
2358
|
+
gazetteLevel: "P",
|
|
2359
|
+
hijriDate: "1 Muharram 1449",
|
|
2360
|
+
isEstimated: true,
|
|
2361
|
+
source: "jakim",
|
|
2362
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2363
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2364
|
+
},
|
|
2365
|
+
{
|
|
2366
|
+
id: "2027-keputeraan-agong",
|
|
2367
|
+
date: "2027-06-07",
|
|
2368
|
+
name: { ms: "Hari Keputeraan Rasmi Seri Paduka Baginda Yang di-Pertuan Agong", en: "Birthday of the Yang di-Pertuan Agong" },
|
|
2369
|
+
type: "federal",
|
|
2370
|
+
status: "confirmed",
|
|
2371
|
+
states: ["*"],
|
|
2372
|
+
isPublicHoliday: true,
|
|
2373
|
+
gazetteLevel: "P",
|
|
2374
|
+
source: "jpm",
|
|
2375
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2376
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2377
|
+
},
|
|
2378
|
+
{
|
|
2379
|
+
id: "2027-keputeraan-sultan-kedah",
|
|
2380
|
+
date: "2027-06-20",
|
|
2381
|
+
name: { ms: "Hari Keputeraan Sultan Kedah", en: "Birthday of the Sultan of Kedah" },
|
|
2382
|
+
type: "state",
|
|
2383
|
+
status: "confirmed",
|
|
2384
|
+
states: ["kedah"],
|
|
2385
|
+
isPublicHoliday: true,
|
|
2386
|
+
gazetteLevel: "N",
|
|
2387
|
+
source: "community",
|
|
2388
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2389
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2390
|
+
},
|
|
2391
|
+
{
|
|
2392
|
+
id: "2027-georgetown-heritage-day",
|
|
2393
|
+
date: "2027-07-07",
|
|
2394
|
+
name: { ms: "Hari George Town Tapak Warisan Dunia", en: "George Town World Heritage City Day" },
|
|
2395
|
+
type: "state",
|
|
2396
|
+
status: "confirmed",
|
|
2397
|
+
states: ["pulau-pinang"],
|
|
2398
|
+
isPublicHoliday: true,
|
|
2399
|
+
gazetteLevel: "N",
|
|
2400
|
+
source: "community",
|
|
2401
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2402
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2403
|
+
},
|
|
2404
|
+
{
|
|
2405
|
+
id: "2027-keputeraan-tyt-pulau-pinang",
|
|
2406
|
+
date: "2027-07-10",
|
|
2407
|
+
name: { ms: "Hari Keputeraan TYT Yang di-Pertua Negeri Pulau Pinang", en: "Birthday of the Governor of Penang" },
|
|
2408
|
+
type: "state",
|
|
2409
|
+
status: "confirmed",
|
|
2410
|
+
states: ["pulau-pinang"],
|
|
2411
|
+
isPublicHoliday: true,
|
|
2412
|
+
gazetteLevel: "N",
|
|
2413
|
+
source: "community",
|
|
2414
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2415
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2416
|
+
},
|
|
2417
|
+
{
|
|
2418
|
+
id: "2027-hari-hol-johor",
|
|
2419
|
+
date: "2027-07-10",
|
|
2420
|
+
name: { ms: "Hari Hol Almarhum Sultan Iskandar", en: "Hari Hol of Almarhum Sultan Iskandar of Johor" },
|
|
2421
|
+
type: "state",
|
|
2422
|
+
status: "confirmed",
|
|
2423
|
+
states: ["johor"],
|
|
2424
|
+
isPublicHoliday: true,
|
|
2425
|
+
gazetteLevel: "N",
|
|
2426
|
+
source: "community",
|
|
2427
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2428
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2429
|
+
},
|
|
2430
|
+
{
|
|
2431
|
+
id: "2027-hari-sarawak",
|
|
2432
|
+
date: "2027-07-22",
|
|
2433
|
+
name: { ms: "Hari Kemerdekaan Sarawak", en: "Sarawak Day" },
|
|
2434
|
+
type: "state",
|
|
2435
|
+
status: "confirmed",
|
|
2436
|
+
states: ["sarawak"],
|
|
2437
|
+
isPublicHoliday: true,
|
|
2438
|
+
gazetteLevel: "N",
|
|
2439
|
+
source: "community",
|
|
2440
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2441
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2442
|
+
},
|
|
2443
|
+
{
|
|
2444
|
+
id: "2027-keputeraan-sultan-pahang",
|
|
2445
|
+
date: "2027-07-30",
|
|
2446
|
+
name: { ms: "Hari Keputeraan Sultan Pahang", en: "Birthday of the Sultan of Pahang" },
|
|
2447
|
+
type: "state",
|
|
2448
|
+
status: "confirmed",
|
|
2449
|
+
states: ["pahang"],
|
|
2450
|
+
isPublicHoliday: true,
|
|
2451
|
+
gazetteLevel: "N",
|
|
2452
|
+
source: "community",
|
|
2453
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2454
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2455
|
+
},
|
|
2456
|
+
{
|
|
2457
|
+
id: "2027-maulidur-rasul",
|
|
2458
|
+
date: "2027-08-15",
|
|
2459
|
+
name: { ms: "Hari Keputeraan Nabi Muhammad S.A.W. (Maulidur Rasul)", en: "Prophet Muhammad's Birthday", zh: "\u5148\u77E5\u7A46\u7F55\u9ED8\u5FB7\u8BDE\u8FB0" },
|
|
2460
|
+
type: "islamic",
|
|
2461
|
+
status: "tentative",
|
|
2462
|
+
states: ["*"],
|
|
2463
|
+
isPublicHoliday: true,
|
|
2464
|
+
gazetteLevel: "P",
|
|
2465
|
+
hijriDate: "12 Rabiulawal 1449",
|
|
2466
|
+
isEstimated: true,
|
|
2467
|
+
source: "jakim",
|
|
2468
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2469
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2470
|
+
},
|
|
2471
|
+
{
|
|
2472
|
+
id: "2027-keputeraan-tyt-melaka",
|
|
2473
|
+
date: "2027-08-24",
|
|
2474
|
+
name: { ms: "Hari Keputeraan TYT Yang di-Pertua Negeri Melaka", en: "Birthday of the Governor of Melaka" },
|
|
2475
|
+
type: "state",
|
|
2476
|
+
status: "confirmed",
|
|
2477
|
+
states: ["melaka"],
|
|
2478
|
+
isPublicHoliday: true,
|
|
2479
|
+
gazetteLevel: "N",
|
|
2480
|
+
source: "community",
|
|
2481
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2482
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2483
|
+
},
|
|
2484
|
+
{
|
|
2485
|
+
id: "2027-hari-kebangsaan",
|
|
2486
|
+
date: "2027-08-31",
|
|
2487
|
+
name: { ms: "Hari Kebangsaan", en: "National Day", zh: "\u56FD\u5E86\u65E5" },
|
|
2488
|
+
type: "federal",
|
|
2489
|
+
status: "confirmed",
|
|
2490
|
+
states: ["*"],
|
|
2491
|
+
isPublicHoliday: true,
|
|
2492
|
+
gazetteLevel: "P",
|
|
2493
|
+
source: "jpm",
|
|
2494
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2495
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2496
|
+
},
|
|
2497
|
+
{
|
|
2498
|
+
id: "2027-keputeraan-sultan-kelantan-1",
|
|
2499
|
+
date: "2027-09-29",
|
|
2500
|
+
name: { ms: "Hari Keputeraan Sultan Kelantan", en: "Birthday of the Sultan of Kelantan" },
|
|
2501
|
+
type: "state",
|
|
2502
|
+
status: "confirmed",
|
|
2503
|
+
states: ["kelantan"],
|
|
2504
|
+
isPublicHoliday: true,
|
|
2505
|
+
gazetteLevel: "N",
|
|
2506
|
+
source: "community",
|
|
2507
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2508
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2509
|
+
},
|
|
2510
|
+
{
|
|
2511
|
+
id: "2027-keputeraan-sultan-kelantan-2",
|
|
2512
|
+
date: "2027-09-30",
|
|
2513
|
+
name: { ms: "Hari Keputeraan Sultan Kelantan (Hari Kedua)", en: "Birthday of the Sultan of Kelantan (2nd Day)" },
|
|
2514
|
+
type: "state",
|
|
2515
|
+
status: "confirmed",
|
|
2516
|
+
states: ["kelantan"],
|
|
2517
|
+
isPublicHoliday: true,
|
|
2518
|
+
gazetteLevel: "N",
|
|
2519
|
+
source: "community",
|
|
2520
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2521
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2522
|
+
},
|
|
2523
|
+
{
|
|
2524
|
+
id: "2027-hari-malaysia",
|
|
2525
|
+
date: "2027-09-16",
|
|
2526
|
+
name: { ms: "Hari Malaysia", en: "Malaysia Day", zh: "\u9A6C\u6765\u897F\u4E9A\u65E5" },
|
|
2527
|
+
type: "federal",
|
|
2528
|
+
status: "confirmed",
|
|
2529
|
+
states: ["*"],
|
|
2530
|
+
isPublicHoliday: true,
|
|
2531
|
+
gazetteLevel: "P",
|
|
2532
|
+
source: "jpm",
|
|
2533
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2534
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2535
|
+
},
|
|
2536
|
+
{
|
|
2537
|
+
id: "2027-keputeraan-tyt-sarawak",
|
|
2538
|
+
date: "2027-10-09",
|
|
2539
|
+
name: { ms: "Hari Keputeraan TYT Yang di-Pertua Negeri Sarawak", en: "Birthday of the Governor of Sarawak" },
|
|
2540
|
+
type: "state",
|
|
2541
|
+
status: "confirmed",
|
|
2542
|
+
states: ["sarawak"],
|
|
2543
|
+
isPublicHoliday: true,
|
|
2544
|
+
gazetteLevel: "N",
|
|
2545
|
+
source: "community",
|
|
2546
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2547
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2548
|
+
},
|
|
2549
|
+
{
|
|
2550
|
+
id: "2027-deepavali",
|
|
2551
|
+
date: "2027-10-28",
|
|
2552
|
+
name: { ms: "Hari Deepavali", en: "Deepavali", zh: "\u5C60\u5996\u8282" },
|
|
2553
|
+
type: "federal",
|
|
2554
|
+
status: "confirmed",
|
|
2555
|
+
states: ["johor", "kedah", "kelantan", "terengganu", "perak", "pulau-pinang", "selangor", "negeri-sembilan", "melaka", "pahang", "perlis", "sabah", "kuala-lumpur", "wp-putrajaya", "wp-labuan"],
|
|
2556
|
+
isPublicHoliday: true,
|
|
2557
|
+
gazetteLevel: "P",
|
|
2558
|
+
source: "community",
|
|
2559
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2560
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2561
|
+
},
|
|
2562
|
+
{
|
|
2563
|
+
id: "2027-keputeraan-sultan-perak",
|
|
2564
|
+
date: "2027-11-05",
|
|
2565
|
+
name: { ms: "Hari Keputeraan Sultan Perak", en: "Birthday of the Sultan of Perak" },
|
|
2566
|
+
type: "state",
|
|
2567
|
+
status: "confirmed",
|
|
2568
|
+
states: ["perak"],
|
|
2569
|
+
isPublicHoliday: true,
|
|
2570
|
+
gazetteLevel: "N",
|
|
2571
|
+
source: "community",
|
|
2572
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2573
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2574
|
+
},
|
|
2575
|
+
{
|
|
2576
|
+
id: "2027-keputeraan-sultan-selangor",
|
|
2577
|
+
date: "2027-12-11",
|
|
2578
|
+
name: { ms: "Hari Keputeraan Sultan Selangor", en: "Birthday of the Sultan of Selangor" },
|
|
2579
|
+
type: "state",
|
|
2580
|
+
status: "confirmed",
|
|
2581
|
+
states: ["selangor"],
|
|
2582
|
+
isPublicHoliday: true,
|
|
2583
|
+
gazetteLevel: "N",
|
|
2584
|
+
source: "community",
|
|
2585
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2586
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2587
|
+
},
|
|
2588
|
+
{
|
|
2589
|
+
id: "2027-christmas-eve",
|
|
2590
|
+
date: "2027-12-24",
|
|
2591
|
+
name: { ms: "Malam Krismas", en: "Christmas Eve" },
|
|
2592
|
+
type: "state",
|
|
2593
|
+
status: "confirmed",
|
|
2594
|
+
states: ["sabah"],
|
|
2595
|
+
isPublicHoliday: true,
|
|
2596
|
+
gazetteLevel: "N",
|
|
2597
|
+
source: "community",
|
|
2598
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2599
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2600
|
+
},
|
|
2601
|
+
{
|
|
2602
|
+
id: "2027-hari-krismas",
|
|
2603
|
+
date: "2027-12-25",
|
|
2604
|
+
name: { ms: "Hari Krismas", en: "Christmas Day", zh: "\u5723\u8BDE\u8282" },
|
|
2605
|
+
type: "federal",
|
|
2606
|
+
status: "confirmed",
|
|
2607
|
+
states: ["*"],
|
|
2608
|
+
isPublicHoliday: true,
|
|
2609
|
+
gazetteLevel: "P",
|
|
2610
|
+
source: "jpm",
|
|
2611
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2612
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2613
|
+
},
|
|
2614
|
+
{
|
|
2615
|
+
id: "2027-israk-mikraj-2",
|
|
2616
|
+
date: "2027-12-26",
|
|
2617
|
+
name: { ms: "Israk dan Mikraj", en: "Isra' Mi'raj", zh: "\u591C\u884C\u767B\u9704" },
|
|
2618
|
+
type: "islamic_state",
|
|
2619
|
+
status: "tentative",
|
|
2620
|
+
states: ["kedah", "negeri-sembilan", "perlis", "terengganu"],
|
|
2621
|
+
isPublicHoliday: true,
|
|
2622
|
+
gazetteLevel: "N",
|
|
2623
|
+
hijriDate: "27 Rejab 1449",
|
|
2624
|
+
isEstimated: true,
|
|
2625
|
+
source: "jakim",
|
|
2626
|
+
createdAt: "2026-06-28T00:00:00+08:00",
|
|
2627
|
+
updatedAt: "2026-06-28T00:00:00+08:00"
|
|
2628
|
+
}
|
|
2629
|
+
];
|
|
2630
|
+
|
|
2631
|
+
// ../../data/school/terms-2026.json
|
|
2632
|
+
var terms_2026_default = [
|
|
2633
|
+
{
|
|
2634
|
+
id: "2026-penggal-1-kumpulan-a",
|
|
2635
|
+
year: 2026,
|
|
2636
|
+
term: 1,
|
|
2637
|
+
group: "A",
|
|
2638
|
+
segments: [
|
|
2639
|
+
{ startDate: "2026-01-11", endDate: "2026-01-31", schoolDays: 15 },
|
|
2640
|
+
{ startDate: "2026-02-01", endDate: "2026-02-28", schoolDays: 15 },
|
|
2641
|
+
{ startDate: "2026-03-01", endDate: "2026-03-19", schoolDays: 14 }
|
|
2642
|
+
],
|
|
2643
|
+
totalSchoolDays: 44,
|
|
2644
|
+
startDate: "2026-01-11",
|
|
2645
|
+
endDate: "2026-03-19"
|
|
2646
|
+
},
|
|
2647
|
+
{
|
|
2648
|
+
id: "2026-penggal-1-kumpulan-b",
|
|
2649
|
+
year: 2026,
|
|
2650
|
+
term: 1,
|
|
2651
|
+
group: "B",
|
|
2652
|
+
segments: [
|
|
2653
|
+
{ startDate: "2026-01-12", endDate: "2026-01-31", schoolDays: 15 },
|
|
2654
|
+
{ startDate: "2026-02-01", endDate: "2026-02-28", schoolDays: 15 },
|
|
2655
|
+
{ startDate: "2026-03-01", endDate: "2026-03-20", schoolDays: 13 }
|
|
2656
|
+
],
|
|
2657
|
+
totalSchoolDays: 43,
|
|
2658
|
+
startDate: "2026-01-12",
|
|
2659
|
+
endDate: "2026-03-20"
|
|
2660
|
+
},
|
|
2661
|
+
{
|
|
2662
|
+
id: "2026-penggal-2-kumpulan-a",
|
|
2663
|
+
year: 2026,
|
|
2664
|
+
term: 2,
|
|
2665
|
+
group: "A",
|
|
2666
|
+
segments: [
|
|
2667
|
+
{ startDate: "2026-03-29", endDate: "2026-03-31", schoolDays: 3 },
|
|
2668
|
+
{ startDate: "2026-04-01", endDate: "2026-04-30", schoolDays: 22 },
|
|
2669
|
+
{ startDate: "2026-05-01", endDate: "2026-05-21", schoolDays: 15 }
|
|
2670
|
+
],
|
|
2671
|
+
totalSchoolDays: 40,
|
|
2672
|
+
startDate: "2026-03-29",
|
|
2673
|
+
endDate: "2026-05-21"
|
|
2674
|
+
},
|
|
2675
|
+
{
|
|
2676
|
+
id: "2026-penggal-2-kumpulan-b",
|
|
2677
|
+
year: 2026,
|
|
2678
|
+
term: 2,
|
|
2679
|
+
group: "B",
|
|
2680
|
+
segments: [
|
|
2681
|
+
{ startDate: "2026-03-30", endDate: "2026-03-31", schoolDays: 2 },
|
|
2682
|
+
{ startDate: "2026-04-01", endDate: "2026-04-30", schoolDays: 22 },
|
|
2683
|
+
{ startDate: "2026-05-01", endDate: "2026-05-22", schoolDays: 15 }
|
|
2684
|
+
],
|
|
2685
|
+
totalSchoolDays: 39,
|
|
2686
|
+
startDate: "2026-03-30",
|
|
2687
|
+
endDate: "2026-05-22"
|
|
2688
|
+
}
|
|
2689
|
+
];
|
|
2690
|
+
|
|
2691
|
+
// ../../data/school/holidays-2026.json
|
|
2692
|
+
var holidays_2026_default = [
|
|
2693
|
+
{
|
|
2694
|
+
id: "2026-cuti-penggal-1-kumpulan-a",
|
|
2695
|
+
year: 2026,
|
|
2696
|
+
group: "A",
|
|
2697
|
+
type: "cuti_penggal_1",
|
|
2698
|
+
name: { ms: "Cuti Penggal 1", en: "Term 1 Break" },
|
|
2699
|
+
startDate: "2026-03-20",
|
|
2700
|
+
endDate: "2026-03-28",
|
|
2701
|
+
days: 9
|
|
2702
|
+
},
|
|
2703
|
+
{
|
|
2704
|
+
id: "2026-cuti-penggal-1-kumpulan-b",
|
|
2705
|
+
year: 2026,
|
|
2706
|
+
group: "B",
|
|
2707
|
+
type: "cuti_penggal_1",
|
|
2708
|
+
name: { ms: "Cuti Penggal 1", en: "Term 1 Break" },
|
|
2709
|
+
startDate: "2026-03-21",
|
|
2710
|
+
endDate: "2026-03-29",
|
|
2711
|
+
days: 9
|
|
2712
|
+
},
|
|
2713
|
+
{
|
|
2714
|
+
id: "2026-cuti-pertengahan-kumpulan-a",
|
|
2715
|
+
year: 2026,
|
|
2716
|
+
group: "A",
|
|
2717
|
+
type: "cuti_pertengahan",
|
|
2718
|
+
name: { ms: "Cuti Pertengahan Tahun", en: "Mid-Year Holiday" },
|
|
2719
|
+
startDate: "2026-05-22",
|
|
2720
|
+
endDate: "2026-06-06",
|
|
2721
|
+
days: 16
|
|
2722
|
+
},
|
|
2723
|
+
{
|
|
2724
|
+
id: "2026-cuti-pertengahan-kumpulan-b",
|
|
2725
|
+
year: 2026,
|
|
2726
|
+
group: "B",
|
|
2727
|
+
type: "cuti_pertengahan",
|
|
2728
|
+
name: { ms: "Cuti Pertengahan Tahun", en: "Mid-Year Holiday" },
|
|
2729
|
+
startDate: "2026-05-23",
|
|
2730
|
+
endDate: "2026-06-07",
|
|
2731
|
+
days: 16
|
|
2732
|
+
},
|
|
2733
|
+
{
|
|
2734
|
+
id: "2026-cuti-penggal-2-kumpulan-a",
|
|
2735
|
+
year: 2026,
|
|
2736
|
+
group: "A",
|
|
2737
|
+
type: "cuti_penggal_2",
|
|
2738
|
+
name: { ms: "Cuti Penggal 2", en: "Term 2 Break" },
|
|
2739
|
+
startDate: "2026-08-28",
|
|
2740
|
+
endDate: "2026-09-05",
|
|
2741
|
+
days: 9
|
|
2742
|
+
},
|
|
2743
|
+
{
|
|
2744
|
+
id: "2026-cuti-penggal-2-kumpulan-b",
|
|
2745
|
+
year: 2026,
|
|
2746
|
+
group: "B",
|
|
2747
|
+
type: "cuti_penggal_2",
|
|
2748
|
+
name: { ms: "Cuti Penggal 2", en: "Term 2 Break" },
|
|
2749
|
+
startDate: "2026-08-29",
|
|
2750
|
+
endDate: "2026-09-06",
|
|
2751
|
+
days: 9
|
|
2752
|
+
},
|
|
2753
|
+
{
|
|
2754
|
+
id: "2026-cuti-akhir-kumpulan-a",
|
|
2755
|
+
year: 2026,
|
|
2756
|
+
group: "A",
|
|
2757
|
+
type: "cuti_akhir",
|
|
2758
|
+
name: { ms: "Cuti Akhir Persekolahan", en: "Year-End Holiday" },
|
|
2759
|
+
startDate: "2026-12-04",
|
|
2760
|
+
endDate: "2026-12-31",
|
|
2761
|
+
days: 28
|
|
2762
|
+
},
|
|
2763
|
+
{
|
|
2764
|
+
id: "2026-cuti-akhir-kumpulan-b",
|
|
2765
|
+
year: 2026,
|
|
2766
|
+
group: "B",
|
|
2767
|
+
type: "cuti_akhir",
|
|
2768
|
+
name: { ms: "Cuti Akhir Persekolahan", en: "Year-End Holiday" },
|
|
2769
|
+
startDate: "2026-12-05",
|
|
2770
|
+
endDate: "2026-12-31",
|
|
2771
|
+
days: 27
|
|
2772
|
+
},
|
|
2773
|
+
{
|
|
2774
|
+
id: "2026-cuti-cny-kumpulan-a",
|
|
2775
|
+
year: 2026,
|
|
2776
|
+
group: "A",
|
|
2777
|
+
type: "cuti_perayaan_kpm",
|
|
2778
|
+
name: { ms: "Cuti Perayaan Tahun Baharu Cina (KPM)", en: "Chinese New Year KPM Bonus Holiday" },
|
|
2779
|
+
startDate: "2026-02-15",
|
|
2780
|
+
endDate: "2026-02-19",
|
|
2781
|
+
days: 3,
|
|
2782
|
+
remarks: "Tambahan KPM: 15, 16, 19 Feb"
|
|
2783
|
+
},
|
|
2784
|
+
{
|
|
2785
|
+
id: "2026-cuti-cny-kumpulan-b",
|
|
2786
|
+
year: 2026,
|
|
2787
|
+
group: "B",
|
|
2788
|
+
type: "cuti_perayaan_kpm",
|
|
2789
|
+
name: { ms: "Cuti Perayaan Tahun Baharu Cina (KPM)", en: "Chinese New Year KPM Bonus Holiday" },
|
|
2790
|
+
startDate: "2026-02-16",
|
|
2791
|
+
endDate: "2026-02-20",
|
|
2792
|
+
days: 3,
|
|
2793
|
+
remarks: "Tambahan KPM: 16, 19, 20 Feb"
|
|
2794
|
+
},
|
|
2795
|
+
{
|
|
2796
|
+
id: "2026-cuti-raya-kumpulan-a",
|
|
2797
|
+
year: 2026,
|
|
2798
|
+
group: "A",
|
|
2799
|
+
type: "cuti_perayaan_kpm",
|
|
2800
|
+
name: { ms: "Cuti Perayaan Hari Raya Aidilfitri (KPM)", en: "Hari Raya KPM Bonus Holiday" },
|
|
2801
|
+
startDate: "2026-03-19",
|
|
2802
|
+
endDate: "2026-03-19",
|
|
2803
|
+
days: 1,
|
|
2804
|
+
remarks: "Tambahan KPM: 19 Mac"
|
|
2805
|
+
},
|
|
2806
|
+
{
|
|
2807
|
+
id: "2026-cuti-raya-kumpulan-b",
|
|
2808
|
+
year: 2026,
|
|
2809
|
+
group: "B",
|
|
2810
|
+
type: "cuti_perayaan_kpm",
|
|
2811
|
+
name: { ms: "Cuti Perayaan Hari Raya Aidilfitri (KPM)", en: "Hari Raya KPM Bonus Holiday" },
|
|
2812
|
+
startDate: "2026-03-19",
|
|
2813
|
+
endDate: "2026-03-20",
|
|
2814
|
+
days: 2,
|
|
2815
|
+
remarks: "Tambahan KPM: 19, 20 Mac"
|
|
2816
|
+
},
|
|
2817
|
+
{
|
|
2818
|
+
id: "2026-cuti-deepavali-kumpulan-a",
|
|
2819
|
+
year: 2026,
|
|
2820
|
+
group: "A",
|
|
2821
|
+
type: "cuti_perayaan_kpm",
|
|
2822
|
+
name: { ms: "Cuti Perayaan Deepavali (KPM)", en: "Deepavali KPM Bonus Holiday" },
|
|
2823
|
+
startDate: "2026-11-09",
|
|
2824
|
+
endDate: "2026-11-09",
|
|
2825
|
+
days: 1,
|
|
2826
|
+
remarks: "Tambahan KPM: 9 Nov"
|
|
2827
|
+
},
|
|
2828
|
+
{
|
|
2829
|
+
id: "2026-cuti-deepavali-kumpulan-b",
|
|
2830
|
+
year: 2026,
|
|
2831
|
+
group: "B",
|
|
2832
|
+
type: "cuti_perayaan_kpm",
|
|
2833
|
+
name: { ms: "Cuti Perayaan Deepavali (KPM)", en: "Deepavali KPM Bonus Holiday" },
|
|
2834
|
+
startDate: "2026-11-10",
|
|
2835
|
+
endDate: "2026-11-10",
|
|
2836
|
+
days: 1,
|
|
2837
|
+
excludeStates: ["sarawak"],
|
|
2838
|
+
remarks: "Tambahan KPM: 10 Nov (semua negeri Kumpulan B kecuali Sarawak)"
|
|
2839
|
+
},
|
|
2840
|
+
{
|
|
2841
|
+
id: "2026-cuti-deepavali-sarawak",
|
|
2842
|
+
year: 2026,
|
|
2843
|
+
group: "B",
|
|
2844
|
+
type: "cuti_perayaan_kpm",
|
|
2845
|
+
name: { ms: "Cuti Perayaan Deepavali (KPM) - Sarawak", en: "Deepavali KPM Bonus Holiday - Sarawak" },
|
|
2846
|
+
startDate: "2026-11-09",
|
|
2847
|
+
endDate: "2026-11-09",
|
|
2848
|
+
days: 1,
|
|
2849
|
+
states: ["sarawak"],
|
|
2850
|
+
remarks: "Sarawak sahaja: 9 Nov"
|
|
2851
|
+
}
|
|
2852
|
+
];
|
|
2853
|
+
|
|
2854
|
+
// ../../data/school/exams-2026.json
|
|
2855
|
+
var exams_2026_default = [
|
|
2856
|
+
{
|
|
2857
|
+
id: "2026-stpm-sem1",
|
|
2858
|
+
year: 2026,
|
|
2859
|
+
name: "STPM Semester 1",
|
|
2860
|
+
fullName: { ms: "Sijil Tinggi Persekolahan Malaysia (Semester 1)", en: "Malaysian Higher School Certificate (Semester 1)" },
|
|
2861
|
+
type: "stpm",
|
|
2862
|
+
startDate: "2026-01-21",
|
|
2863
|
+
endDate: "2026-01-28",
|
|
2864
|
+
status: "confirmed",
|
|
2865
|
+
source: "mpm"
|
|
2866
|
+
},
|
|
2867
|
+
{
|
|
2868
|
+
id: "2026-spm-2025-results",
|
|
2869
|
+
year: 2026,
|
|
2870
|
+
name: "Keputusan SPM 2025",
|
|
2871
|
+
fullName: { ms: "Pengumuman Keputusan SPM 2025", en: "SPM 2025 Results Announcement" },
|
|
2872
|
+
type: "spm",
|
|
2873
|
+
startDate: "2026-03-31",
|
|
2874
|
+
status: "tentative",
|
|
2875
|
+
source: "kpm"
|
|
2876
|
+
},
|
|
2877
|
+
{
|
|
2878
|
+
id: "2026-stpm-sem2",
|
|
2879
|
+
year: 2026,
|
|
2880
|
+
name: "STPM Semester 2",
|
|
2881
|
+
fullName: { ms: "Sijil Tinggi Persekolahan Malaysia (Semester 2)", en: "Malaysian Higher School Certificate (Semester 2)" },
|
|
2882
|
+
type: "stpm",
|
|
2883
|
+
startDate: "2026-06-29",
|
|
2884
|
+
endDate: "2026-07-05",
|
|
2885
|
+
status: "confirmed",
|
|
2886
|
+
source: "mpm"
|
|
2887
|
+
},
|
|
2888
|
+
{
|
|
2889
|
+
id: "2026-spm",
|
|
2890
|
+
year: 2026,
|
|
2891
|
+
name: "SPM 2026",
|
|
2892
|
+
fullName: { ms: "Sijil Pelajaran Malaysia", en: "Malaysian Certificate of Education" },
|
|
2893
|
+
type: "spm",
|
|
2894
|
+
startDate: "2026-11-01",
|
|
2895
|
+
endDate: "2026-12-15",
|
|
2896
|
+
status: "tentative",
|
|
2897
|
+
source: "kpm"
|
|
2898
|
+
},
|
|
2899
|
+
{
|
|
2900
|
+
id: "2026-stpm-sem3",
|
|
2901
|
+
year: 2026,
|
|
2902
|
+
name: "STPM Semester 3",
|
|
2903
|
+
fullName: { ms: "Sijil Tinggi Persekolahan Malaysia (Semester 3)", en: "Malaysian Higher School Certificate (Semester 3)" },
|
|
2904
|
+
type: "stpm",
|
|
2905
|
+
startDate: "2026-11-01",
|
|
2906
|
+
endDate: "2026-11-30",
|
|
2907
|
+
status: "tentative",
|
|
2908
|
+
source: "mpm"
|
|
2909
|
+
}
|
|
2910
|
+
];
|
|
2911
|
+
|
|
2912
|
+
// src/index.ts
|
|
10
2913
|
import {
|
|
11
2914
|
filterHolidays,
|
|
12
2915
|
findHolidaysByDate,
|
|
@@ -16,34 +2919,48 @@ import {
|
|
|
16
2919
|
getDayOfWeekName,
|
|
17
2920
|
getWeekendDayNames,
|
|
18
2921
|
countBusinessDays,
|
|
2922
|
+
findLongWeekends,
|
|
2923
|
+
optimizeLeave,
|
|
19
2924
|
findSchoolTermByDate,
|
|
20
2925
|
findSchoolHolidayByDate,
|
|
21
2926
|
isSchoolDay as checkSchoolDay
|
|
22
2927
|
} from "@catlabtech/mycal-core";
|
|
23
|
-
var
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
2928
|
+
var states = states_default;
|
|
2929
|
+
var holidaysByYear = {
|
|
2930
|
+
2024: __default,
|
|
2931
|
+
2025: __default2,
|
|
2932
|
+
2026: __default3,
|
|
2933
|
+
2027: __default4
|
|
2934
|
+
};
|
|
2935
|
+
var schoolTermsByYear = {
|
|
2936
|
+
2026: terms_2026_default
|
|
2937
|
+
};
|
|
2938
|
+
var schoolHolidaysByYear = {
|
|
2939
|
+
2026: holidays_2026_default
|
|
2940
|
+
};
|
|
2941
|
+
var examsByYear = {
|
|
2942
|
+
2026: exams_2026_default
|
|
2943
|
+
};
|
|
2944
|
+
var DEFAULT_STATE_CODE = "kuala-lumpur";
|
|
2945
|
+
function defaultState() {
|
|
2946
|
+
const s = states.find((x) => x.code === DEFAULT_STATE_CODE);
|
|
2947
|
+
if (!s) throw new Error(`Default state "${DEFAULT_STATE_CODE}" missing from states.json`);
|
|
2948
|
+
return s;
|
|
2949
|
+
}
|
|
2950
|
+
function loadYear(_dir, year) {
|
|
2951
|
+
return holidaysByYear[year] ?? [];
|
|
32
2952
|
}
|
|
33
2953
|
function loadSchool(file, year) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
} catch {
|
|
37
|
-
return [];
|
|
38
|
-
}
|
|
2954
|
+
const map = file === "terms" ? schoolTermsByYear : file === "holidays" ? schoolHolidaysByYear : examsByYear;
|
|
2955
|
+
return map[year] ?? [];
|
|
39
2956
|
}
|
|
40
2957
|
var server = new McpServer({
|
|
41
2958
|
name: "Malaysia Calendar API",
|
|
42
|
-
version: "0.1.
|
|
2959
|
+
version: "0.1.1"
|
|
43
2960
|
});
|
|
44
2961
|
server.tool(
|
|
45
2962
|
"get_malaysia_holidays",
|
|
46
|
-
"Get Malaysia public holidays. Covers all 16 states + 3
|
|
2963
|
+
"Get Malaysia public holidays. Covers all 16 regions (13 states + 3 federal territories) including Islamic holidays with tentative/confirmed status.",
|
|
47
2964
|
{
|
|
48
2965
|
year: z.number().int().describe("Year (e.g. 2026)"),
|
|
49
2966
|
state: z.string().optional().describe("State code or alias (e.g. 'selangor', 'KL', 'penang')"),
|
|
@@ -70,7 +2987,7 @@ server.tool(
|
|
|
70
2987
|
state: z.string().optional().describe("State code or alias")
|
|
71
2988
|
},
|
|
72
2989
|
async ({ date, state: stateQuery }) => {
|
|
73
|
-
const stateObj = stateQuery ? resolveStateCode(stateQuery, states) :
|
|
2990
|
+
const stateObj = stateQuery ? resolveStateCode(stateQuery, states) : defaultState();
|
|
74
2991
|
if (!stateObj) return { content: [{ type: "text", text: `Unknown state: ${stateQuery}` }] };
|
|
75
2992
|
const year = parseInt(date.slice(0, 4));
|
|
76
2993
|
const holidays = loadYear("holidays", year);
|
|
@@ -136,46 +3053,45 @@ server.tool(
|
|
|
136
3053
|
state: z.string().optional().describe("State code or alias (default: kuala-lumpur)")
|
|
137
3054
|
},
|
|
138
3055
|
async ({ year, state }) => {
|
|
139
|
-
const stateObj = state ? resolveStateCode(state, states) :
|
|
140
|
-
if (!stateObj) return { content: [{ type: "text", text: `Unknown state` }] };
|
|
3056
|
+
const stateObj = state ? resolveStateCode(state, states) : defaultState();
|
|
3057
|
+
if (!stateObj) return { content: [{ type: "text", text: `Unknown state: ${state}` }] };
|
|
141
3058
|
const holidays = loadYear("holidays", year);
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if (!isWeekend(current, stateObj) && !holidayDates.has(current)) {
|
|
149
|
-
const d = /* @__PURE__ */ new Date(current + "T12:00:00Z");
|
|
150
|
-
d.setUTCDate(d.getUTCDate() + 1);
|
|
151
|
-
current = d.toISOString().slice(0, 10);
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
const start = current;
|
|
155
|
-
const hols = [];
|
|
156
|
-
let count = 0;
|
|
157
|
-
while (current <= yearEnd && (isWeekend(current, stateObj) || holidayDates.has(current))) {
|
|
158
|
-
if (holidayDates.has(current)) {
|
|
159
|
-
const h = stateHolidays.find((h2) => h2.date === current);
|
|
160
|
-
if (h) hols.push(h.name.en);
|
|
161
|
-
}
|
|
162
|
-
count++;
|
|
163
|
-
const d = /* @__PURE__ */ new Date(current + "T12:00:00Z");
|
|
164
|
-
d.setUTCDate(d.getUTCDate() + 1);
|
|
165
|
-
current = d.toISOString().slice(0, 10);
|
|
166
|
-
}
|
|
167
|
-
if (count >= 3) {
|
|
168
|
-
const d = /* @__PURE__ */ new Date(current + "T12:00:00Z");
|
|
169
|
-
d.setUTCDate(d.getUTCDate() - 1);
|
|
170
|
-
longWeekends.push({ start, end: d.toISOString().slice(0, 10), days: count, holidays: hols });
|
|
171
|
-
}
|
|
172
|
-
}
|
|
3059
|
+
const longWeekends = findLongWeekends(year, stateObj, holidays).map((w) => ({
|
|
3060
|
+
start: w.startDate,
|
|
3061
|
+
end: w.endDate,
|
|
3062
|
+
days: w.totalDays,
|
|
3063
|
+
holidays: w.holidays.map((h) => h.name.en)
|
|
3064
|
+
}));
|
|
173
3065
|
return { content: [{ type: "text", text: JSON.stringify({ total: longWeekends.length, longWeekends }, null, 2) }] };
|
|
174
3066
|
}
|
|
175
3067
|
);
|
|
3068
|
+
server.tool(
|
|
3069
|
+
"malaysia_leave_optimizer",
|
|
3070
|
+
"Find the most efficient annual-leave days to take to maximise consecutive days off in Malaysia (e.g. 'take 2 days \u2192 get 5 off'). Ideal for planning trips around public holidays and weekends, per state.",
|
|
3071
|
+
{
|
|
3072
|
+
year: z.number().int().describe("Year"),
|
|
3073
|
+
state: z.string().optional().describe("State code or alias (default: kuala-lumpur)"),
|
|
3074
|
+
maxLeave: z.number().int().min(1).max(10).optional().describe("Max annual-leave days to spend per break (default 3)")
|
|
3075
|
+
},
|
|
3076
|
+
async ({ year, state, maxLeave }) => {
|
|
3077
|
+
const stateObj = state ? resolveStateCode(state, states) : defaultState();
|
|
3078
|
+
if (!stateObj) return { content: [{ type: "text", text: `Unknown state: ${state}` }] };
|
|
3079
|
+
const holidays = loadYear("holidays", year);
|
|
3080
|
+
const suggestions = optimizeLeave(year, stateObj, holidays, maxLeave ?? 3).slice(0, 10).map((s) => ({
|
|
3081
|
+
takeLeaveOn: s.leaveDates,
|
|
3082
|
+
leaveDays: s.leaveCost,
|
|
3083
|
+
from: s.startDate,
|
|
3084
|
+
to: s.endDate,
|
|
3085
|
+
totalDaysOff: s.totalDays,
|
|
3086
|
+
efficiency: s.efficiency,
|
|
3087
|
+
holidays: s.holidays.map((h) => h.name.en)
|
|
3088
|
+
}));
|
|
3089
|
+
return { content: [{ type: "text", text: JSON.stringify({ total: suggestions.length, suggestions }, null, 2) }] };
|
|
3090
|
+
}
|
|
3091
|
+
);
|
|
176
3092
|
server.tool(
|
|
177
3093
|
"list_malaysia_states",
|
|
178
|
-
"List all 16 Malaysian states + 3
|
|
3094
|
+
"List all 16 Malaysian regions (13 states + 3 federal territories) with weekend configurations and group assignments.",
|
|
179
3095
|
{},
|
|
180
3096
|
async () => {
|
|
181
3097
|
const summary = states.map((s) => ({
|