{"_id":"@apiaju/calendar","_rev":"2-ad74627c65b9b2e20e68b90a6507b319","name":"@apiaju/calendar","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@apiaju/calendar","version":"1.0.0","keywords":["aracaju","sergipe","brasil","brazil","feriados","holidays","calendar","dias-uteis","business-days","apiaju"],"author":{"url":"https://www.wolney.dev","name":"Wolney Oliveira","email":"hi@wolney.dev"},"license":"MIT","_id":"@apiaju/calendar@1.0.0","maintainers":[{"name":"wolney-fo","email":"wolney.js@outlook.com"}],"homepage":"https://github.com/apiaju/calendar#readme","bugs":{"url":"https://github.com/apiaju/calendar/issues"},"dist":{"shasum":"14d2b9f8be43fb449d672f974d1ca5edb464c673","tarball":"https://registry.npmjs.org/@apiaju/calendar/-/calendar-1.0.0.tgz","fileCount":7,"integrity":"sha512-yV9HYKuCmWQ9HrYeG34ylIOD8Z/JAPZFA7Ap3XIKwtp9n42oBY0dy0ANijURF9z8VlXXXSBcWxuZcMJ56rtbCg==","signatures":[{"sig":"MEUCIQDr8d76xdFMtf786PCr0AnZhOjscHiAlS7z7qCD1b+qPAIgeehfHWAbqhI3IOSnBZ2eRlKXvBbPdWiowIONFHP5ZYI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29664},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"b79573f88c26bec11512a55f2226ac7126b350ad","private":false,"scripts":{"test":"vitest run","build":"tsup","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"wolney-fo","email":"wolney.js@outlook.com"},"repository":{"url":"git+https://github.com/apiaju/calendar.git","type":"git"},"_npmVersion":"11.9.0","description":"Calendário de feriados de Aracaju-SE. Feriados nacionais, estaduais e municipais com suporte a timezone e dias úteis.","directories":{},"sideEffects":false,"_nodeVersion":"25.6.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.18","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/calendar_1.0.0_1772469965901_0.2019543392275538","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@apiaju/calendar","version":"1.1.0","description":"Calendário de feriados de Aracaju-SE. Feriados nacionais, estaduais e municipais com suporte a timezone e dias úteis.","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"sideEffects":false,"scripts":{"build":"tsup","prepublishOnly":"npm run build","test":"vitest run","test:watch":"vitest"},"keywords":["aracaju","sergipe","brasil","brazil","feriados","holidays","calendar","dias-uteis","business-days","apiaju"],"author":{"name":"Wolney Oliveira","email":"hi@wolney.dev","url":"https://www.wolney.dev"},"license":"MIT","private":false,"repository":{"type":"git","url":"git+https://github.com/apiaju/calendar.git"},"bugs":{"url":"https://github.com/apiaju/calendar/issues"},"homepage":"https://github.com/apiaju/calendar#readme","engines":{"node":">=18"},"devDependencies":{"tsup":"^8.5.1","typescript":"^5.9.3","vitest":"^4.0.18"},"gitHead":"e9711637f634a66f0b7393a23f812f438ba88ffa","_id":"@apiaju/calendar@1.1.0","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-zEgblls6MOPsNArbekb6GRwHBi8aKpgzs+QWLiLZFMNUWPqB0DdxAfgmT7ODd+9Nl/rzY11sFTVvmq2qF3upkg==","shasum":"99ac2bae50c9d6d5dea6e3e4b4dd66cae3f06648","tarball":"https://registry.npmjs.org/@apiaju/calendar/-/calendar-1.1.0.tgz","fileCount":7,"unpackedSize":31178,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apiaju%2fcalendar@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCKKFyfxVJBNr3W1w/GKve23wP00jkeWzyoqiCX3MoplwIgYB2wpNBnjY9rwOS9BqGvDm0Ht2SbkWu8eyJ7aJB4vz4="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:67c9f8b2-bc86-48c4-90b9-89bd09eebc7a"}},"directories":{},"maintainers":[{"name":"wolney-fo","email":"wolney.js@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/calendar_1.1.0_1789414278560_0.044730532137336576"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-02T16:46:05.791Z","modified":"2026-09-14T19:31:19.081Z","1.0.0":"2026-03-02T16:46:06.053Z","1.1.0":"2026-09-14T19:31:18.703Z"},"bugs":{"url":"https://github.com/apiaju/calendar/issues"},"author":{"name":"Wolney Oliveira","email":"hi@wolney.dev","url":"https://www.wolney.dev"},"license":"MIT","homepage":"https://github.com/apiaju/calendar#readme","keywords":["aracaju","sergipe","brasil","brazil","feriados","holidays","calendar","dias-uteis","business-days","apiaju"],"repository":{"type":"git","url":"git+https://github.com/apiaju/calendar.git"},"description":"Calendário de feriados de Aracaju-SE. Feriados nacionais, estaduais e municipais com suporte a timezone e dias úteis.","maintainers":[{"name":"wolney-fo","email":"wolney.js@outlook.com"}],"readme":"# ApiAju Calendar\n\nCalendário de feriados de Aracaju-SE. Inclui feriados nacionais, estaduais (Sergipe) e municipais (Aracaju), com suporte a feriados móveis calculados a partir da Páscoa.\n\n- Zero dependências em runtime\n- TypeScript nativo com tipos exportados\n- Dual package: ESM + CJS\n- Timezone-safe: aceita `Date` e converte internamente para `America/Maceio` (UTC-3)\n- Respeita vigência histórica dos feriados\n\n> [!IMPORTANT]\n> Este pacote é fornecido apenas para fins informativos e de conveniência. Os dados de feriados podem estar desatualizados ou conter imprecisões decorrentes de alterações legislativas posteriores à última atualização do pacote. **É responsabilidade do usuário verificar se os feriados estão devidamente atualizados e corretos para o seu caso de uso.** Os mantenedores não se responsabilizam por quaisquer danos, perdas ou consequências legais decorrentes do uso das informações fornecidas por este pacote.\n\n## Table of Contents\n\n- [ApiAju Calendar](#apiaju-calendar)\n  - [Table of Contents](#table-of-contents)\n  - [Instalação](#instalação)\n  - [Uso rápido](#uso-rápido)\n  - [Timezone](#timezone)\n  - [API](#api)\n    - [`isHoliday(date?: Date): boolean`](#isholidaydate-date-boolean)\n    - [`isOptionalHoliday(date?: Date): boolean`](#isoptionalholidaydate-date-boolean)\n    - [`isHolidayOrOptional(date?: Date): boolean`](#isholidayoroptionaldate-date-boolean)\n    - [`getHoliday(date?: Date): Holiday | null`](#getholidaydate-date-holiday--null)\n    - [`getHolidays(year?: number): Holiday[]`](#getholidaysyear-number-holiday)\n    - [`isBusinessDay(date?, options?): boolean`](#isbusinessdaydate-options-boolean)\n    - [`countBusinessDays(start, end, options?): number`](#countbusinessdaysstart-end-options-number)\n    - [`addBusinessDays(date, days, options?): Date`](#addbusinessdaysdate-days-options-date)\n  - [Tipos](#tipos)\n  - [Feriados incluídos](#feriados-incluídos)\n    - [Fixos](#fixos)\n    - [Móveis (calculados a partir da Páscoa)](#móveis-calculados-a-partir-da-páscoa)\n  - [Limitações](#limitações)\n  - [Referências](#referências)\n  - [Licença](#licença)\n\n## Instalação\n\n```bash\nnpm install @apiaju/calendar\npnpm install @apiaju/calendar\nyarn add @apiaju/calendar\nbun add @apiaju/calendar\n```\n\n## Uso rápido\n\n```ts\nimport { isHoliday, getHoliday, isBusinessDay } from '@apiaju/calendar'\n\nisHoliday(new Date('2025-12-25T12:00:00Z'))\n// true\n\ngetHoliday(new Date('2025-12-25T12:00:00Z'))\n// { date: Date, name: 'Natal', type: 'holiday', level: 'national' }\n\nisBusinessDay() // verifica a data atual\n```\n\n## Timezone\n\nTodas as funções recebem um objeto `Date` nativo do JavaScript. Internamente, a data é convertida para o fuso horário `America/Maceio` (UTC-3) usando `Intl.DateTimeFormat`. Isso garante que o cálculo funciona corretamente independente do fuso do servidor ou do navegador.\n\n```ts\n// 2025-01-01 00:00 UTC = 2024-12-31 21:00 em Aracaju\nisHoliday(new Date('2025-01-01T00:00:00Z'))\n// false (ainda é 31/12 em Aracaju)\n\n// 2025-01-01 03:00 UTC = 2025-01-01 00:00 em Aracaju\nisHoliday(new Date('2025-01-01T03:00:00Z'))\n// true (Confraternização Universal)\n```\n\n## API\n\nTodas as funções que recebem `date` usam `new Date()` como valor padrão.\n\n### `isHoliday(date?: Date): boolean`\n\nRetorna `true` se a data é um feriado oficial (`type: 'holiday'`).\n\n```ts\nisHoliday(new Date('2025-04-21T12:00:00Z')) // true (Tiradentes)\nisHoliday(new Date('2025-03-04T12:00:00Z')) // false (Carnaval é ponto facultativo)\n```\n\n### `isOptionalHoliday(date?: Date): boolean`\n\nRetorna `true` se a data é um ponto facultativo (`type: 'optional'`).\n\n```ts\nisOptionalHoliday(new Date('2025-03-04T12:00:00Z')) // true (Terça de Carnaval)\nisOptionalHoliday(new Date('2025-12-25T12:00:00Z')) // false (Natal é feriado oficial)\n```\n\n### `isHolidayOrOptional(date?: Date): boolean`\n\nRetorna `true` se a data é um feriado oficial ou ponto facultativo.\n\n```ts\nisHolidayOrOptional(new Date('2025-03-04T12:00:00Z')) // true (Terça de Carnaval)\nisHolidayOrOptional(new Date('2025-12-25T12:00:00Z')) // true (Natal)\nisHolidayOrOptional(new Date('2025-03-10T12:00:00Z')) // false\n```\n\n### `getHoliday(date?: Date): Holiday | null`\n\nRetorna o objeto `Holiday` da data, ou `null` se não for feriado nem ponto facultativo.\n\n```ts\ngetHoliday(new Date('2025-09-07T12:00:00Z'))\n// {\n//   date: Date,\n//   name: 'Independência do Brasil',\n//   type: 'holiday',\n//   level: 'national'\n// }\n\ngetHoliday(new Date('2025-03-10T12:00:00Z'))\n// null\n```\n\n### `getHolidays(year?: number): Holiday[]`\n\nRetorna todos os feriados do ano, ordenados por data. Se o ano não for informado, usa o ano atual no fuso de Aracaju.\n\n```ts\nconst feriados2025 = getHolidays(2025)\n// [{ date, name: 'Confraternização Universal', ... }, ...]\n\ngetHolidays(2023).length // 16 (sem Consciência Negra)\ngetHolidays(2025).length // 17\n```\n\n### `isBusinessDay(date?, options?): boolean`\n\nRetorna `true` se a data é um dia útil (não é fim de semana, feriado, nem ponto facultativo).\n\n```ts\nisBusinessDay(new Date('2025-03-10T12:00:00Z')) // true (segunda-feira normal)\nisBusinessDay(new Date('2025-03-01T12:00:00Z')) // false (sábado)\nisBusinessDay(new Date('2025-04-21T12:00:00Z')) // false (Tiradentes)\nisBusinessDay(new Date('2025-03-04T12:00:00Z')) // false (Carnaval - ponto facultativo)\n\n// Considerando sábado como dia útil:\nisBusinessDay(new Date('2025-03-01T12:00:00Z'), { saturdayIsBusinessDay: true }) // true\n```\n\n### `countBusinessDays(start, end, options?): number`\n\nConta os dias úteis entre duas datas. Inclui a data inicial, exclui a data final. Retorna `0` se `end <= start`.\n\n```ts\n// Segunda 10/03 a Sexta 14/03 = 4 dias úteis (seg, ter, qua, qui)\ncountBusinessDays(\n  new Date('2025-03-10T12:00:00Z'),\n  new Date('2025-03-14T12:00:00Z'),\n) // 4\n\n// Com sábado como dia útil: Seg a Dom 16/03 = 6 dias úteis\ncountBusinessDays(\n  new Date('2025-03-10T12:00:00Z'),\n  new Date('2025-03-16T12:00:00Z'),\n  { saturdayIsBusinessDay: true },\n) // 6\n```\n\n### `addBusinessDays(date, days, options?): Date`\n\nAdiciona `days` dias úteis a uma data, pulando fins de semana, feriados e pontos facultativos. Retorna um `Date` correspondente ao dia final.\n\n```ts\n// 2025-03-10 (segunda) + 3 dias úteis = 2025-03-13 (quinta)\naddBusinessDays(new Date('2025-03-10T12:00:00Z'), 3)\n\n// Pula fins de semana e feriados:\n// 2025-04-17 (quinta) + 1 dia útil → pula Sexta-feira Santa (18) + fim de semana + Tiradentes (21) = 2025-04-22 (terça)\naddBusinessDays(new Date('2025-04-17T12:00:00Z'), 1)\n\n// Com sábado como dia útil:\n// 2025-03-14 (sexta) + 1 dia útil = 2025-03-15 (sábado)\naddBusinessDays(new Date('2025-03-14T12:00:00Z'), 1, { saturdayIsBusinessDay: true })\n```\n\n## Tipos\n\n```ts\ntype HolidayType = 'holiday' | 'optional'\n\ntype HolidayLevel = 'national' | 'state' | 'municipal'\n\ninterface Holiday {\n  date: Date\n  name: string\n  type: HolidayType\n  level: HolidayLevel\n}\n\ninterface BusinessDayOptions {\n  saturdayIsBusinessDay?: boolean // default: false\n}\n```\n\n- `holiday`: feriado oficial\n- `optional`: ponto facultativo\n- `BusinessDayOptions`: configuração opcional para `isBusinessDay`, `countBusinessDays` e `addBusinessDays`. Quando `saturdayIsBusinessDay` é `true`, apenas domingo é considerado fim de semana.\n\n## Feriados incluídos\n\n### Fixos\n\n| Data  | Nome                       | Tipo    | Nível     | Desde |\n| ----- | -------------------------- | ------- | --------- | ----- |\n| 01/01 | Confraternização Universal | holiday | national  |       |\n| 17/03 | Aniversário de Aracaju     | holiday | municipal | 1988  |\n| 21/04 | Tiradentes                 | holiday | national  |       |\n| 01/05 | Dia do Trabalho            | holiday | national  |       |\n| 24/06 | São João                   | holiday | municipal | 2010  |\n| 08/07 | Emancipação de Sergipe     | holiday | state     |       |\n| 07/09 | Independência do Brasil    | holiday | national  |       |\n| 12/10 | Nossa Sra. Aparecida       | holiday | national  |       |\n| 02/11 | Finados                    | holiday | national  |       |\n| 15/11 | Proclamação da República   | holiday | national  |       |\n| 20/11 | Consciência Negra          | holiday | national  | 2024  |\n| 08/12 | Nossa Sra. da Conceição    | holiday | municipal |       |\n| 25/12 | Natal                      | holiday | national  |       |\n\n### Móveis (calculados a partir da Páscoa)\n\n| Offset | Nome                | Tipo     | Nível    |\n| ------ | ------------------- | -------- | -------- |\n| -48    | Segunda de Carnaval | optional | national |\n| -47    | Terça de Carnaval   | optional | national |\n| -2     | Sexta-feira Santa   | holiday  | national |\n| +60    | Corpus Christi      | holiday  | municipal |\n\n## Limitações\n\n- **Algoritmo de Páscoa**: o algoritmo de Meeus/Jones/Butcher é válido apenas para o calendário Gregoriano (a partir de 1583). Anos anteriores retornarão resultados incorretos para feriados móveis.\n- **Precisão dos feriados**: o pacote reflete a legislação vigente. Alguns feriados possuem o campo `since` que indica o ano de início da vigência (ex: Consciência Negra a partir de 2024), mas feriados sem esse campo são tratados como existentes em qualquer ano. Para anos muito antigos, isso pode gerar imprecisões.\n- **Faixa recomendada**: o pacote é confiável a partir de **2024**, ano em que todos os feriados cadastrados estão em vigor. Para anos anteriores, os resultados são parcialmente corretos (feriados com `since` são filtrados, mas a lista pode não corresponder exatamente à legislação da época).\n- **Anos futuros**: funcionam tecnicamente, mas podem se tornar imprecisos caso a legislação seja alterada após a última atualização do pacote.\n\n## Referências\n\n- [Algoritmo de Meeus/Jones/Butcher](https://pt.wikipedia.org/wiki/C%C3%A1lculo_da_P%C3%A1scoa#Algoritmo_de_Meeus/Jones/Butcher) — cálculo da data da Páscoa\n- [IANA Time Zone Database](https://www.iana.org/time-zones) — fuso `America/Maceio` (UTC-3)\n- [Lei 662/1949](https://www.planalto.gov.br/ccivil_03/leis/l0662.htm) — Declara feriados nacionais os dias 1º de janeiro, 1º de maio, 7 de setembro, 15 de novembro e 25 de dezembro.\n- [Lei 14.759/2023](https://www.planalto.gov.br/ccivil_03/_ato2023-2026/2023/lei/L14759.htm) — Declara feriado nacional o Dia Nacional de Zumbi e da Consciência Negra\n- [Lei 3.805/2009 (Aracaju)](https://leismunicipais.com.br/a/se/a/aracaju/lei-ordinaria/2009/381/3805/lei-ordinaria-n-3805-2009-altera-a-redacao-do-artigo-1-da-lei-municipal-n-2899-de-06-de-marco-de-2001-instituindo-o-feriado-municipal-do-dia-24-de-junho-dia-de-sao-joao) — Feriados em Aracaju/SE\n\n## Licença\n\nThis project is licensed under the MIT license.  \nAuthor: [Wolney Oliveira](https://github.com/wolney-fo)\n","readmeFilename":"README.md"}