@br-validators/core 1.0.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -2
- package/dist/bancos.d.ts +41 -0
- package/dist/bancos.js +3328 -0
- package/dist/bancos.js.map +1 -0
- package/dist/batch.js +16 -14
- package/dist/brcode.js +5 -5
- package/dist/cbo.d.ts +41 -0
- package/dist/cbo.js +10832 -0
- package/dist/cbo.js.map +1 -0
- package/dist/cep.d.ts +38 -1
- package/dist/cep.js +4 -3
- package/dist/cfop.d.ts +41 -0
- package/dist/cfop.js +2812 -0
- package/dist/cfop.js.map +1 -0
- package/dist/chunk-5CBVZIQC.js +30 -0
- package/dist/chunk-5CBVZIQC.js.map +1 -0
- package/dist/{chunk-LAEUXOF6.js → chunk-5EJAENH5.js} +3 -3
- package/dist/{chunk-LAEUXOF6.js.map → chunk-5EJAENH5.js.map} +1 -1
- package/dist/chunk-DQUMIETC.js +30 -0
- package/dist/chunk-DQUMIETC.js.map +1 -0
- package/dist/{chunk-HUIMOB5E.js → chunk-DYX5XSJ6.js} +3 -3
- package/dist/{chunk-HUIMOB5E.js.map → chunk-DYX5XSJ6.js.map} +1 -1
- package/dist/{chunk-TJCE4TVX.js → chunk-EN7PVDYB.js} +4 -4
- package/dist/{chunk-TJCE4TVX.js.map → chunk-EN7PVDYB.js.map} +1 -1
- package/dist/{chunk-VWVQWN2G.js → chunk-EQV33L7H.js} +3 -3
- package/dist/{chunk-VWVQWN2G.js.map → chunk-EQV33L7H.js.map} +1 -1
- package/dist/{chunk-FKFRB3RJ.js → chunk-GWAYWBHN.js} +4 -4
- package/dist/{chunk-FKFRB3RJ.js.map → chunk-GWAYWBHN.js.map} +1 -1
- package/dist/{chunk-BFMRXXFE.js → chunk-ITHT54NC.js} +11 -11
- package/dist/{chunk-BFMRXXFE.js.map → chunk-ITHT54NC.js.map} +1 -1
- package/dist/{chunk-IYOPXJLY.js → chunk-JSNXKBZA.js} +3 -3
- package/dist/{chunk-IYOPXJLY.js.map → chunk-JSNXKBZA.js.map} +1 -1
- package/dist/{chunk-P2KNN6ZR.js → chunk-KGCLQ7QX.js} +3 -3
- package/dist/{chunk-P2KNN6ZR.js.map → chunk-KGCLQ7QX.js.map} +1 -1
- package/dist/{chunk-H3MLGGFI.js → chunk-KLONQL76.js} +5 -5
- package/dist/{chunk-H3MLGGFI.js.map → chunk-KLONQL76.js.map} +1 -1
- package/dist/{chunk-63G7QO73.js → chunk-L7PF4KD6.js} +3 -3
- package/dist/{chunk-63G7QO73.js.map → chunk-L7PF4KD6.js.map} +1 -1
- package/dist/{chunk-PD7ZTWMM.js → chunk-MAM4U3UR.js} +3 -3
- package/dist/{chunk-PD7ZTWMM.js.map → chunk-MAM4U3UR.js.map} +1 -1
- package/dist/{chunk-V7UJ55KW.js → chunk-MZDCVTN6.js} +3 -3
- package/dist/{chunk-V7UJ55KW.js.map → chunk-MZDCVTN6.js.map} +1 -1
- package/dist/{chunk-G6OBZRZM.js → chunk-NHFSEWO2.js} +12 -12
- package/dist/{chunk-G6OBZRZM.js.map → chunk-NHFSEWO2.js.map} +1 -1
- package/dist/{chunk-I66ZRSEN.js → chunk-NT3TNF3R.js} +3 -3
- package/dist/{chunk-I66ZRSEN.js.map → chunk-NT3TNF3R.js.map} +1 -1
- package/dist/{chunk-EVULAGR5.js → chunk-O3T7PUBI.js} +3 -3
- package/dist/{chunk-EVULAGR5.js.map → chunk-O3T7PUBI.js.map} +1 -1
- package/dist/chunk-OOUEURR7.js +24091 -0
- package/dist/chunk-OOUEURR7.js.map +1 -0
- package/dist/chunk-P6TOL5VY.js +147973 -0
- package/dist/chunk-P6TOL5VY.js.map +1 -0
- package/dist/{chunk-WC6YYFWP.js → chunk-QB7SZS2C.js} +10 -10
- package/dist/{chunk-WC6YYFWP.js.map → chunk-QB7SZS2C.js.map} +1 -1
- package/dist/{chunk-N2WVO3GF.js → chunk-QK27VDVB.js} +11 -11
- package/dist/{chunk-N2WVO3GF.js.map → chunk-QK27VDVB.js.map} +1 -1
- package/dist/chunk-RRVGW333.js +31 -0
- package/dist/chunk-RRVGW333.js.map +1 -0
- package/dist/{chunk-N6N5ATLY.js → chunk-S4WWYHQM.js} +3 -3
- package/dist/{chunk-N6N5ATLY.js.map → chunk-S4WWYHQM.js.map} +1 -1
- package/dist/chunk-SC6YCHT7.js +30 -0
- package/dist/chunk-SC6YCHT7.js.map +1 -0
- package/dist/{chunk-MESOO5GZ.js → chunk-SDEJD2J7.js} +3 -3
- package/dist/{chunk-MESOO5GZ.js.map → chunk-SDEJD2J7.js.map} +1 -1
- package/dist/{chunk-I7DM47IR.js → chunk-SKDMG3FK.js} +20 -20
- package/dist/{chunk-I7DM47IR.js.map → chunk-SKDMG3FK.js.map} +1 -1
- package/dist/chunk-UGW266DF.js +30 -0
- package/dist/chunk-UGW266DF.js.map +1 -0
- package/dist/{chunk-YNVMVDFN.js → chunk-VKG7UEN5.js} +3 -3
- package/dist/{chunk-YNVMVDFN.js.map → chunk-VKG7UEN5.js.map} +1 -1
- package/dist/chunk-WH6W3NUA.js +30 -0
- package/dist/chunk-WH6W3NUA.js.map +1 -0
- package/dist/chunk-WSUAPD5M.js +32 -0
- package/dist/chunk-WSUAPD5M.js.map +1 -0
- package/dist/{chunk-CSVGWTCG.js → chunk-XHDRWM46.js} +3 -3
- package/dist/{chunk-CSVGWTCG.js.map → chunk-XHDRWM46.js.map} +1 -1
- package/dist/chunk-XQ6MMGV2.js +30 -0
- package/dist/chunk-XQ6MMGV2.js.map +1 -0
- package/dist/chunk-YOL43ZNQ.js +35 -0
- package/dist/chunk-YOL43ZNQ.js.map +1 -0
- package/dist/{chunk-SAZA3V2U.js → chunk-ZTDLGGYE.js} +10 -10
- package/dist/{chunk-SAZA3V2U.js.map → chunk-ZTDLGGYE.js.map} +1 -1
- package/dist/cnaes.d.ts +41 -0
- package/dist/cnaes.js +5384 -0
- package/dist/cnaes.js.map +1 -0
- package/dist/cnh.js +4 -4
- package/dist/compare.js +18 -16
- package/dist/cpf.js +4 -4
- package/dist/data-catalog.d.ts +14 -0
- package/dist/data-catalog.js +37 -0
- package/dist/data-catalog.js.map +1 -0
- package/dist/detect.js +15 -13
- package/dist/diff.js +18 -16
- package/dist/feriados.d.ts +73 -0
- package/dist/feriados.js +243 -0
- package/dist/feriados.js.map +1 -0
- package/dist/generate.js +25 -23
- package/dist/ibge.d.ts +65 -0
- package/dist/ibge.js +28174 -0
- package/dist/ibge.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +43 -41
- package/dist/index.js.map +1 -1
- package/dist/mask.js +24 -22
- package/dist/ncm.d.ts +41 -0
- package/dist/ncm.js +42116 -0
- package/dist/ncm.js.map +1 -0
- package/dist/pix.js +5 -5
- package/dist/placa.js +1 -1
- package/dist/renavam.js +4 -4
- package/dist/sanitize.js +13 -11
- package/dist/telefone.d.ts +32 -1
- package/dist/telefone.js +3 -2
- package/dist/titulo-eleitor.js +4 -4
- package/dist/types-CBIZxgfG.d.ts +28 -0
- package/package.json +41 -1
- package/dist/chunk-DAR6VOMT.js +0 -192
- package/dist/chunk-DAR6VOMT.js.map +0 -1
- package/dist/chunk-TE6NSONR.js +0 -43
- package/dist/chunk-TE6NSONR.js.map +0 -1
package/dist/cnh.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import './chunk-Y2KUN2D3.js';
|
|
2
|
-
export { formatCnh } from './chunk-
|
|
3
|
-
export { CNH_BASE_LENGTH, CNH_DV1_WEIGHTS, CNH_DV2_WEIGHTS, CNH_GOLDEN_DISCOUNT_CASE, CNH_GOLDEN_PRIMARY, CNH_GOLDEN_PRIMARY_DECORATED_INPUT, CNH_GOLDEN_SECONDARY, CNH_LENGTH, CNH_OFFICIAL_SOURCE_URL, CNH_SENATRAN_VALIDAR_URL, isValidCnh, validateCnh } from './chunk-
|
|
2
|
+
export { formatCnh } from './chunk-EQV33L7H.js';
|
|
3
|
+
export { CNH_BASE_LENGTH, CNH_DV1_WEIGHTS, CNH_DV2_WEIGHTS, CNH_GOLDEN_DISCOUNT_CASE, CNH_GOLDEN_PRIMARY, CNH_GOLDEN_PRIMARY_DECORATED_INPUT, CNH_GOLDEN_SECONDARY, CNH_LENGTH, CNH_OFFICIAL_SOURCE_URL, CNH_SENATRAN_VALIDAR_URL, isValidCnh, validateCnh } from './chunk-VKG7UEN5.js';
|
|
4
|
+
import './chunk-OTZHMJYE.js';
|
|
4
5
|
export { stripCnh } from './chunk-YYHS5WQN.js';
|
|
5
6
|
import './chunk-4SNBZFS5.js';
|
|
6
|
-
import './chunk-UCJPSJN5.js';
|
|
7
|
-
import './chunk-OTZHMJYE.js';
|
|
8
7
|
import './chunk-EB3G4IG6.js';
|
|
8
|
+
import './chunk-UCJPSJN5.js';
|
|
9
9
|
import './chunk-NUQSMT4Y.js';
|
|
10
10
|
//# sourceMappingURL=cnh.js.map
|
|
11
11
|
//# sourceMappingURL=cnh.js.map
|
package/dist/compare.js
CHANGED
|
@@ -1,32 +1,34 @@
|
|
|
1
|
-
export { compare, compareRuntime } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { compare, compareRuntime } from './chunk-DYX5XSJ6.js';
|
|
2
|
+
import './chunk-NHFSEWO2.js';
|
|
3
|
+
import './chunk-GWAYWBHN.js';
|
|
4
4
|
import './chunk-GVK6IMBF.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-NT3TNF3R.js';
|
|
6
6
|
import './chunk-AO6UTQ4A.js';
|
|
7
7
|
import './chunk-JLCQ7MGC.js';
|
|
8
8
|
import './chunk-3LMDBXU6.js';
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
9
|
+
import './chunk-OOUEURR7.js';
|
|
10
|
+
import './chunk-XHDRWM46.js';
|
|
11
11
|
import './chunk-665E36SC.js';
|
|
12
12
|
import './chunk-CDNOUZEI.js';
|
|
13
|
+
import './chunk-VKG7UEN5.js';
|
|
14
|
+
import './chunk-RRVGW333.js';
|
|
13
15
|
import './chunk-AU6TW3GH.js';
|
|
14
16
|
import './chunk-N6RQICAP.js';
|
|
15
17
|
import './chunk-E2EFGMWA.js';
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
18
|
-
import './chunk-P2KNN6ZR.js';
|
|
19
|
-
import './chunk-63G7QO73.js';
|
|
20
|
-
import './chunk-ANWQBKGN.js';
|
|
21
|
-
import './chunk-TE6NSONR.js';
|
|
22
|
-
import './chunk-YNVMVDFN.js';
|
|
23
|
-
import './chunk-YYHS5WQN.js';
|
|
24
|
-
import './chunk-4SNBZFS5.js';
|
|
25
|
-
import './chunk-UCJPSJN5.js';
|
|
18
|
+
import './chunk-MZDCVTN6.js';
|
|
19
|
+
import './chunk-KLONQL76.js';
|
|
26
20
|
import './chunk-CSRBRKXY.js';
|
|
27
21
|
import './chunk-FBARVLLP.js';
|
|
22
|
+
import './chunk-KGCLQ7QX.js';
|
|
23
|
+
import './chunk-L7PF4KD6.js';
|
|
28
24
|
import './chunk-OTZHMJYE.js';
|
|
25
|
+
import './chunk-ANWQBKGN.js';
|
|
26
|
+
import './chunk-P6TOL5VY.js';
|
|
27
|
+
import './chunk-YYHS5WQN.js';
|
|
28
|
+
import './chunk-4SNBZFS5.js';
|
|
29
|
+
import './chunk-DQUMIETC.js';
|
|
29
30
|
import './chunk-EB3G4IG6.js';
|
|
31
|
+
import './chunk-UCJPSJN5.js';
|
|
30
32
|
import './chunk-NUQSMT4Y.js';
|
|
31
33
|
//# sourceMappingURL=compare.js.map
|
|
32
34
|
//# sourceMappingURL=compare.js.map
|
package/dist/cpf.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import './chunk-YGA5W54J.js';
|
|
2
|
-
export { formatCpf } from './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
export { CPF_GOLDEN_PRIMARY, CPF_GOLDEN_PRIMARY_MASKED, CPF_GOLDEN_SECONDARY, CPF_OFFICIAL_SOURCE_URL, isValidCpf, validateCpf } from './chunk-
|
|
5
|
-
export { stripCpf } from './chunk-UCJPSJN5.js';
|
|
2
|
+
export { formatCpf } from './chunk-EN7PVDYB.js';
|
|
3
|
+
import './chunk-KGCLQ7QX.js';
|
|
4
|
+
export { CPF_GOLDEN_PRIMARY, CPF_GOLDEN_PRIMARY_MASKED, CPF_GOLDEN_SECONDARY, CPF_OFFICIAL_SOURCE_URL, isValidCpf, validateCpf } from './chunk-L7PF4KD6.js';
|
|
6
5
|
import './chunk-OTZHMJYE.js';
|
|
6
|
+
export { stripCpf } from './chunk-UCJPSJN5.js';
|
|
7
7
|
import './chunk-NUQSMT4Y.js';
|
|
8
8
|
//# sourceMappingURL=cpf.js.map
|
|
9
9
|
//# sourceMappingURL=cpf.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { D as DataCatalogVersion, a as DatasetMetadata } from './types-CBIZxgfG.js';
|
|
2
|
+
export { b as DatasetChanges, c as DatasetVerification } from './types-CBIZxgfG.js';
|
|
3
|
+
|
|
4
|
+
declare function getDataCatalog(): readonly DatasetMetadata[];
|
|
5
|
+
declare function getDatasetMetadata(id: string): DatasetMetadata | undefined;
|
|
6
|
+
declare const DATA_CATALOG_VERSION: DataCatalogVersion;
|
|
7
|
+
|
|
8
|
+
interface DatasetRegistryEntry {
|
|
9
|
+
id: string;
|
|
10
|
+
metadata: DatasetMetadata;
|
|
11
|
+
}
|
|
12
|
+
declare const DATASET_REGISTRY: readonly DatasetRegistryEntry[];
|
|
13
|
+
|
|
14
|
+
export { DATASET_REGISTRY, DATA_CATALOG_VERSION, DataCatalogVersion, DatasetMetadata, getDataCatalog, getDatasetMetadata };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { metadata_default as metadata_default$2 } from './chunk-YOL43ZNQ.js';
|
|
2
|
+
import { metadata_default } from './chunk-WSUAPD5M.js';
|
|
3
|
+
import { metadata_default as metadata_default$5 } from './chunk-UGW266DF.js';
|
|
4
|
+
import { metadata_default as metadata_default$3 } from './chunk-5CBVZIQC.js';
|
|
5
|
+
import { metadata_default as metadata_default$1 } from './chunk-WH6W3NUA.js';
|
|
6
|
+
import { ddd_metadata_default } from './chunk-RRVGW333.js';
|
|
7
|
+
import { metadata_default as metadata_default$6 } from './chunk-XQ6MMGV2.js';
|
|
8
|
+
import { faixa_metadata_default } from './chunk-DQUMIETC.js';
|
|
9
|
+
import { metadata_default as metadata_default$4 } from './chunk-SC6YCHT7.js';
|
|
10
|
+
|
|
11
|
+
// src/data-catalog/registry.ts
|
|
12
|
+
var DATASET_REGISTRY = [
|
|
13
|
+
{ id: "ibge", metadata: metadata_default },
|
|
14
|
+
{ id: "bancos", metadata: metadata_default$1 },
|
|
15
|
+
{ id: "telefone-ddd", metadata: ddd_metadata_default },
|
|
16
|
+
{ id: "feriados", metadata: metadata_default$2 },
|
|
17
|
+
{ id: "cnaes", metadata: metadata_default$3 },
|
|
18
|
+
{ id: "cfop", metadata: metadata_default$4 },
|
|
19
|
+
{ id: "ncm", metadata: metadata_default$5 },
|
|
20
|
+
{ id: "cbo", metadata: metadata_default$6 },
|
|
21
|
+
{ id: "cep-faixas", metadata: faixa_metadata_default }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
// src/data-catalog/catalog.ts
|
|
25
|
+
function getDataCatalog() {
|
|
26
|
+
return DATASET_REGISTRY.map((entry) => entry.metadata);
|
|
27
|
+
}
|
|
28
|
+
function getDatasetMetadata(id) {
|
|
29
|
+
return DATASET_REGISTRY.find((entry) => entry.id === id)?.metadata;
|
|
30
|
+
}
|
|
31
|
+
var DATA_CATALOG_VERSION = {
|
|
32
|
+
totalDatasets: DATASET_REGISTRY.length
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export { DATASET_REGISTRY, DATA_CATALOG_VERSION, getDataCatalog, getDatasetMetadata };
|
|
36
|
+
//# sourceMappingURL=data-catalog.js.map
|
|
37
|
+
//# sourceMappingURL=data-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/data-catalog/registry.ts","../src/data-catalog/catalog.ts"],"names":["metadata_default"],"mappings":";;;;;;;;;;;AAgBO,IAAM,gBAAA,GAAoD;AAAA,EAC/D,EAAE,EAAA,EAAI,MAAA,EAAQ,QAAA,EAAUA,gBAAAA,EAAgC;AAAA,EACxD,EAAE,EAAA,EAAI,QAAA,EAAU,QAAA,EAAUA,kBAAA,EAAkC;AAAA,EAC5D,EAAE,EAAA,EAAI,cAAA,EAAgB,QAAA,EAAU,oBAAA,EAAuC;AAAA,EACvE,EAAE,EAAA,EAAI,UAAA,EAAY,QAAA,EAAUA,kBAAAA,EAAoC;AAAA,EAChE,EAAE,EAAA,EAAI,OAAA,EAAS,QAAA,EAAUA,kBAAAA,EAAiC;AAAA,EAC1D,EAAE,EAAA,EAAI,MAAA,EAAQ,QAAA,EAAUA,kBAAAA,EAAgC;AAAA,EACxD,EAAE,EAAA,EAAI,KAAA,EAAO,QAAA,EAAUA,kBAAAA,EAA+B;AAAA,EACtD,EAAE,EAAA,EAAI,KAAA,EAAO,QAAA,EAAUA,kBAAAA,EAA+B;AAAA,EACtD,EAAE,EAAA,EAAI,YAAA,EAAc,QAAA,EAAU,sBAAA;AAChC;;;ACvBO,SAAS,cAAA,GAA6C;AAC3D,EAAA,OAAO,gBAAA,CAAiB,GAAA,CAAI,CAAC,KAAA,KAAU,MAAM,QAAQ,CAAA;AACvD;AAEO,SAAS,mBAAmB,EAAA,EAAyC;AAC1E,EAAA,OAAO,iBAAiB,IAAA,CAAK,CAAC,UAAU,KAAA,CAAM,EAAA,KAAO,EAAE,CAAA,EAAG,QAAA;AAC5D;AAEO,IAAM,oBAAA,GAA2C;AAAA,EACtD,eAAe,gBAAA,CAAiB;AAClC","file":"data-catalog.js","sourcesContent":["import ibgeMetadata from '../ibge/data/metadata.json';\nimport bancosMetadata from '../bancos/data/metadata.json';\nimport telefoneDddMetadata from '../core/telefone/data/ddd-metadata.json';\nimport feriadosMetadata from '../feriados/data/metadata.json';\nimport cnaesMetadata from '../cnaes/data/metadata.json';\nimport cfopMetadata from '../cfop/data/metadata.json';\nimport ncmMetadata from '../ncm/data/metadata.json';\nimport cboMetadata from '../cbo/data/metadata.json';\nimport cepFaixaMetadata from '../core/cep/data/faixa-metadata.json';\nimport type { DatasetMetadata } from './types.js';\n\nexport interface DatasetRegistryEntry {\n id: string;\n metadata: DatasetMetadata;\n}\n\nexport const DATASET_REGISTRY: readonly DatasetRegistryEntry[] = [\n { id: 'ibge', metadata: ibgeMetadata as DatasetMetadata },\n { id: 'bancos', metadata: bancosMetadata as DatasetMetadata },\n { id: 'telefone-ddd', metadata: telefoneDddMetadata as DatasetMetadata },\n { id: 'feriados', metadata: feriadosMetadata as DatasetMetadata },\n { id: 'cnaes', metadata: cnaesMetadata as DatasetMetadata },\n { id: 'cfop', metadata: cfopMetadata as DatasetMetadata },\n { id: 'ncm', metadata: ncmMetadata as DatasetMetadata },\n { id: 'cbo', metadata: cboMetadata as DatasetMetadata },\n { id: 'cep-faixas', metadata: cepFaixaMetadata as DatasetMetadata },\n];\n","import { DATASET_REGISTRY } from './registry.js';\nimport type { DataCatalogVersion, DatasetMetadata } from './types.js';\n\nexport function getDataCatalog(): readonly DatasetMetadata[] {\n return DATASET_REGISTRY.map((entry) => entry.metadata);\n}\n\nexport function getDatasetMetadata(id: string): DatasetMetadata | undefined {\n return DATASET_REGISTRY.find((entry) => entry.id === id)?.metadata;\n}\n\nexport const DATA_CATALOG_VERSION: DataCatalogVersion = {\n totalDatasets: DATASET_REGISTRY.length,\n};\n"]}
|
package/dist/detect.js
CHANGED
|
@@ -1,28 +1,30 @@
|
|
|
1
|
-
export { detect } from './chunk-
|
|
1
|
+
export { detect } from './chunk-QB7SZS2C.js';
|
|
2
2
|
import './chunk-AO6UTQ4A.js';
|
|
3
3
|
import './chunk-JLCQ7MGC.js';
|
|
4
4
|
import './chunk-3LMDBXU6.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
5
|
+
import './chunk-OOUEURR7.js';
|
|
6
|
+
import './chunk-XHDRWM46.js';
|
|
7
7
|
import './chunk-665E36SC.js';
|
|
8
8
|
import './chunk-CDNOUZEI.js';
|
|
9
|
+
import './chunk-VKG7UEN5.js';
|
|
10
|
+
import './chunk-RRVGW333.js';
|
|
9
11
|
import './chunk-AU6TW3GH.js';
|
|
10
12
|
import './chunk-N6RQICAP.js';
|
|
11
13
|
import './chunk-E2EFGMWA.js';
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-P2KNN6ZR.js';
|
|
15
|
-
import './chunk-63G7QO73.js';
|
|
16
|
-
import './chunk-ANWQBKGN.js';
|
|
17
|
-
import './chunk-TE6NSONR.js';
|
|
18
|
-
import './chunk-YNVMVDFN.js';
|
|
19
|
-
import './chunk-YYHS5WQN.js';
|
|
20
|
-
import './chunk-4SNBZFS5.js';
|
|
21
|
-
import './chunk-UCJPSJN5.js';
|
|
14
|
+
import './chunk-MZDCVTN6.js';
|
|
15
|
+
import './chunk-KLONQL76.js';
|
|
22
16
|
import './chunk-CSRBRKXY.js';
|
|
23
17
|
import './chunk-FBARVLLP.js';
|
|
18
|
+
import './chunk-KGCLQ7QX.js';
|
|
19
|
+
import './chunk-L7PF4KD6.js';
|
|
24
20
|
import './chunk-OTZHMJYE.js';
|
|
21
|
+
import './chunk-ANWQBKGN.js';
|
|
22
|
+
import './chunk-P6TOL5VY.js';
|
|
23
|
+
import './chunk-YYHS5WQN.js';
|
|
24
|
+
import './chunk-4SNBZFS5.js';
|
|
25
|
+
import './chunk-DQUMIETC.js';
|
|
25
26
|
import './chunk-EB3G4IG6.js';
|
|
27
|
+
import './chunk-UCJPSJN5.js';
|
|
26
28
|
import './chunk-NUQSMT4Y.js';
|
|
27
29
|
//# sourceMappingURL=detect.js.map
|
|
28
30
|
//# sourceMappingURL=detect.js.map
|
package/dist/diff.js
CHANGED
|
@@ -1,32 +1,34 @@
|
|
|
1
|
-
export { diff } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { diff } from './chunk-S4WWYHQM.js';
|
|
2
|
+
import './chunk-NHFSEWO2.js';
|
|
3
|
+
import './chunk-GWAYWBHN.js';
|
|
4
4
|
import './chunk-GVK6IMBF.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-NT3TNF3R.js';
|
|
6
6
|
import './chunk-AO6UTQ4A.js';
|
|
7
7
|
import './chunk-JLCQ7MGC.js';
|
|
8
8
|
import './chunk-3LMDBXU6.js';
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
9
|
+
import './chunk-OOUEURR7.js';
|
|
10
|
+
import './chunk-XHDRWM46.js';
|
|
11
11
|
import './chunk-665E36SC.js';
|
|
12
12
|
import './chunk-CDNOUZEI.js';
|
|
13
|
+
import './chunk-VKG7UEN5.js';
|
|
14
|
+
import './chunk-RRVGW333.js';
|
|
13
15
|
import './chunk-AU6TW3GH.js';
|
|
14
16
|
import './chunk-N6RQICAP.js';
|
|
15
17
|
import './chunk-E2EFGMWA.js';
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
18
|
-
import './chunk-P2KNN6ZR.js';
|
|
19
|
-
import './chunk-63G7QO73.js';
|
|
20
|
-
import './chunk-ANWQBKGN.js';
|
|
21
|
-
import './chunk-TE6NSONR.js';
|
|
22
|
-
import './chunk-YNVMVDFN.js';
|
|
23
|
-
import './chunk-YYHS5WQN.js';
|
|
24
|
-
import './chunk-4SNBZFS5.js';
|
|
25
|
-
import './chunk-UCJPSJN5.js';
|
|
18
|
+
import './chunk-MZDCVTN6.js';
|
|
19
|
+
import './chunk-KLONQL76.js';
|
|
26
20
|
import './chunk-CSRBRKXY.js';
|
|
27
21
|
import './chunk-FBARVLLP.js';
|
|
22
|
+
import './chunk-KGCLQ7QX.js';
|
|
23
|
+
import './chunk-L7PF4KD6.js';
|
|
28
24
|
import './chunk-OTZHMJYE.js';
|
|
25
|
+
import './chunk-ANWQBKGN.js';
|
|
26
|
+
import './chunk-P6TOL5VY.js';
|
|
27
|
+
import './chunk-YYHS5WQN.js';
|
|
28
|
+
import './chunk-4SNBZFS5.js';
|
|
29
|
+
import './chunk-DQUMIETC.js';
|
|
29
30
|
import './chunk-EB3G4IG6.js';
|
|
31
|
+
import './chunk-UCJPSJN5.js';
|
|
30
32
|
import './chunk-NUQSMT4Y.js';
|
|
31
33
|
//# sourceMappingURL=diff.js.map
|
|
32
34
|
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { b as DatasetChanges, c as DatasetVerification } from './types-CBIZxgfG.js';
|
|
2
|
+
|
|
3
|
+
/** `fixo` — Lei 662/1949 + amendments; `movel` — Paixão de Cristo (MGI federal calendar). */
|
|
4
|
+
type FeriadoTipo = 'fixo' | 'movel';
|
|
5
|
+
interface FeriadoNacional {
|
|
6
|
+
data: string;
|
|
7
|
+
nome: string;
|
|
8
|
+
tipo: FeriadoTipo;
|
|
9
|
+
baseLegal?: string;
|
|
10
|
+
}
|
|
11
|
+
interface PontoFacultativoFederal {
|
|
12
|
+
data: string;
|
|
13
|
+
nome: string;
|
|
14
|
+
baseLegal: string;
|
|
15
|
+
/** Partial-day facultative window per Portaria MGI (e.g. Quarta de Cinzas until 14:00). */
|
|
16
|
+
horarioParcial?: 'until 14:00' | 'after 13:00';
|
|
17
|
+
}
|
|
18
|
+
interface FeriadosDataVersion {
|
|
19
|
+
id: 'feriados';
|
|
20
|
+
nome: string;
|
|
21
|
+
fonte: string;
|
|
22
|
+
endpoints: string[];
|
|
23
|
+
capturadoEm: string;
|
|
24
|
+
atualizadoEm: string;
|
|
25
|
+
contagens: {
|
|
26
|
+
feriadosNacionaisFixos: number;
|
|
27
|
+
feriadosNacionaisMoveis: number;
|
|
28
|
+
pontosFacultativosFederais: number;
|
|
29
|
+
};
|
|
30
|
+
alteracoes: DatasetChanges;
|
|
31
|
+
verificacao: DatasetVerification;
|
|
32
|
+
documentacao: string;
|
|
33
|
+
}
|
|
34
|
+
interface ParsedUtcDate {
|
|
35
|
+
year: number;
|
|
36
|
+
month: number;
|
|
37
|
+
day: number;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Brazilian national federal holidays — Lei 662/1949 (fixed) + Paixão de Cristo (movable, MGI calendar).
|
|
42
|
+
* Does NOT include pontos facultativos (Carnaval, Corpus Christi, etc.).
|
|
43
|
+
* @see https://www.planalto.gov.br/ccivil_03/leis/l0662.htm
|
|
44
|
+
* @see https://www.gov.br/gestao/pt-br/assuntos/noticias/2025/dezembro/confira-o-calendario-oficial-de-feriados-nacionais-e-pontos-facultativos-em-2026
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
declare function isFeriadoNacional(input: string | Date): boolean;
|
|
48
|
+
declare function getFeriadosNacionais(year: number): readonly FeriadoNacional[];
|
|
49
|
+
declare function getProximoDiaUtil(input: string | Date): string;
|
|
50
|
+
|
|
51
|
+
/** Easter Sunday — Meeus/Jones/Butcher Gregorian algorithm (Computus). */
|
|
52
|
+
declare function easterSunday(year: number): ParsedUtcDate;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Federal facultative days (pontos facultativos) per annual MGI portaria.
|
|
56
|
+
* NOT national holidays — Paixão de Cristo is excluded (see movable-national.ts).
|
|
57
|
+
* @see https://www.gov.br/gestao/pt-br/assuntos/noticias/2025/dezembro/confira-o-calendario-oficial-de-feriados-nacionais-e-pontos-facultativos-em-2026
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
declare const FERIADOS_GOV_CALENDARIO_URL = "https://www.gov.br/gestao/pt-br/assuntos/noticias/2025/dezembro/confira-o-calendario-oficial-de-feriados-nacionais-e-pontos-facultativos-em-2026";
|
|
61
|
+
declare function getPontosFacultativosFederais(year: number): readonly PontoFacultativoFederal[];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Fixed national federal holidays — Lei 662/1949 (consolidated by Lei 10.607/2002) and amendments.
|
|
65
|
+
* @see https://www.planalto.gov.br/ccivil_03/leis/l0662.htm
|
|
66
|
+
* @see https://www.planalto.gov.br/ccivil_03/leis/l10607.htm
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
declare const FERIADOS_LEI_662_URL = "https://www.planalto.gov.br/ccivil_03/leis/l0662.htm";
|
|
70
|
+
|
|
71
|
+
declare const FERIADOS_DATA_VERSION: FeriadosDataVersion;
|
|
72
|
+
|
|
73
|
+
export { FERIADOS_DATA_VERSION, FERIADOS_GOV_CALENDARIO_URL, FERIADOS_LEI_662_URL, type FeriadoNacional, type FeriadoTipo, type FeriadosDataVersion, type PontoFacultativoFederal, easterSunday, getFeriadosNacionais, getPontosFacultativosFederais, getProximoDiaUtil, isFeriadoNacional };
|
package/dist/feriados.js
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { metadata_default } from './chunk-YOL43ZNQ.js';
|
|
2
|
+
|
|
3
|
+
// src/feriados/date-utils.ts
|
|
4
|
+
var ISO_DATE_PATTERN = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
5
|
+
function parseIsoDateString(value) {
|
|
6
|
+
const match = ISO_DATE_PATTERN.exec(value);
|
|
7
|
+
if (match === null) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const year = Number(match[1]);
|
|
11
|
+
const month = Number(match[2]);
|
|
12
|
+
const day = Number(match[3]);
|
|
13
|
+
if (!isValidUtcDateParts(year, month, day)) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return { year, month, day };
|
|
17
|
+
}
|
|
18
|
+
function parseDateInput(input) {
|
|
19
|
+
if (input instanceof Date) {
|
|
20
|
+
if (Number.isNaN(input.getTime())) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
year: input.getUTCFullYear(),
|
|
25
|
+
month: input.getUTCMonth() + 1,
|
|
26
|
+
day: input.getUTCDate()
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return parseIsoDateString(input.trim());
|
|
30
|
+
}
|
|
31
|
+
function formatIsoDate(parts) {
|
|
32
|
+
const month = String(parts.month).padStart(2, "0");
|
|
33
|
+
const day = String(parts.day).padStart(2, "0");
|
|
34
|
+
return `${String(parts.year)}-${month}-${day}`;
|
|
35
|
+
}
|
|
36
|
+
function addUtcDays(parts, days) {
|
|
37
|
+
const date = new Date(Date.UTC(parts.year, parts.month - 1, parts.day + days));
|
|
38
|
+
return {
|
|
39
|
+
year: date.getUTCFullYear(),
|
|
40
|
+
month: date.getUTCMonth() + 1,
|
|
41
|
+
day: date.getUTCDate()
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function isWeekendUtc(parts) {
|
|
45
|
+
const dayOfWeek = new Date(Date.UTC(parts.year, parts.month - 1, parts.day)).getUTCDay();
|
|
46
|
+
return dayOfWeek === 0 || dayOfWeek === 6;
|
|
47
|
+
}
|
|
48
|
+
function easterSunday(year) {
|
|
49
|
+
const a = year % 19;
|
|
50
|
+
const b = Math.floor(year / 100);
|
|
51
|
+
const c = year % 100;
|
|
52
|
+
const d = Math.floor(b / 4);
|
|
53
|
+
const e = b % 4;
|
|
54
|
+
const f = Math.floor((b + 8) / 25);
|
|
55
|
+
const g = Math.floor((b - f + 1) / 3);
|
|
56
|
+
const h = (19 * a + b - d - g + 15) % 30;
|
|
57
|
+
const i = Math.floor(c / 4);
|
|
58
|
+
const k = c % 4;
|
|
59
|
+
const l = (32 + 2 * e + 2 * i - h - k) % 7;
|
|
60
|
+
const m = Math.floor((a + 11 * h + 22 * l) / 451);
|
|
61
|
+
const month = Math.floor((h + l - 7 * m + 114) / 31);
|
|
62
|
+
const day = (h + l - 7 * m + 114) % 31 + 1;
|
|
63
|
+
return { year, month, day };
|
|
64
|
+
}
|
|
65
|
+
function isValidUtcDateParts(year, month, day) {
|
|
66
|
+
if (month < 1 || month > 12 || day < 1) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
const date = new Date(Date.UTC(year, month - 1, day));
|
|
70
|
+
return date.getUTCFullYear() === year && date.getUTCMonth() === month - 1 && date.getUTCDate() === day;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// src/feriados/fixed.ts
|
|
74
|
+
var FERIADOS_LEI_662_URL = "https://www.planalto.gov.br/ccivil_03/leis/l0662.htm";
|
|
75
|
+
var CONSCIENCIA_NEGRA_MIN_YEAR = 2024;
|
|
76
|
+
var FIXED_HOLIDAY_TEMPLATES = [
|
|
77
|
+
{ month: 1, day: 1, nome: "Confraterniza\xE7\xE3o Universal", baseLegal: "Lei 662/1949" },
|
|
78
|
+
{ month: 4, day: 21, nome: "Tiradentes", baseLegal: "Lei 662/1949" },
|
|
79
|
+
{ month: 5, day: 1, nome: "Dia do Trabalho", baseLegal: "Lei 662/1949" },
|
|
80
|
+
{ month: 9, day: 7, nome: "Independ\xEAncia do Brasil", baseLegal: "Lei 662/1949" },
|
|
81
|
+
{ month: 10, day: 12, nome: "Nossa Senhora Aparecida", baseLegal: "Lei 6.802/1980" },
|
|
82
|
+
{ month: 11, day: 2, nome: "Finados", baseLegal: "Lei 662/1949" },
|
|
83
|
+
{ month: 11, day: 15, nome: "Proclama\xE7\xE3o da Rep\xFAblica", baseLegal: "Lei 662/1949" },
|
|
84
|
+
{
|
|
85
|
+
month: 11,
|
|
86
|
+
day: 20,
|
|
87
|
+
nome: "Dia Nacional de Zumbi e da Consci\xEAncia Negra",
|
|
88
|
+
baseLegal: "Lei 14.759/2023",
|
|
89
|
+
activeFromYear: CONSCIENCIA_NEGRA_MIN_YEAR
|
|
90
|
+
},
|
|
91
|
+
{ month: 12, day: 25, nome: "Natal", baseLegal: "Lei 662/1949" }
|
|
92
|
+
];
|
|
93
|
+
function getFixedHolidaysForYear(year) {
|
|
94
|
+
const holidays = [];
|
|
95
|
+
for (const template of FIXED_HOLIDAY_TEMPLATES) {
|
|
96
|
+
if (template.activeFromYear !== void 0 && year < template.activeFromYear) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const parts = { year, month: template.month, day: template.day };
|
|
100
|
+
holidays.push({
|
|
101
|
+
data: formatIsoDate(parts),
|
|
102
|
+
nome: template.nome,
|
|
103
|
+
tipo: "fixo",
|
|
104
|
+
baseLegal: template.baseLegal
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return holidays;
|
|
108
|
+
}
|
|
109
|
+
function isFixedHoliday(parts) {
|
|
110
|
+
return getFixedHolidaysForYear(parts.year).some((holiday) => holiday.data === formatIsoDate(parts));
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// src/feriados/movable-national.ts
|
|
114
|
+
var GOOD_FRIDAY_OFFSET_DAYS = -2;
|
|
115
|
+
function getPaixaoDeCristo(year) {
|
|
116
|
+
if (!Number.isInteger(year)) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
const easter = easterSunday(year);
|
|
120
|
+
const parts = addUtcDays(easter, GOOD_FRIDAY_OFFSET_DAYS);
|
|
121
|
+
return {
|
|
122
|
+
data: formatIsoDate(parts),
|
|
123
|
+
nome: "Paix\xE3o de Cristo",
|
|
124
|
+
tipo: "movel",
|
|
125
|
+
baseLegal: "Calend\xE1rio oficial \u2014 administra\xE7\xE3o p\xFAblica federal (Portaria MGI)"
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function isPaixaoDeCristo(parts) {
|
|
129
|
+
const holiday = getPaixaoDeCristo(parts.year);
|
|
130
|
+
return holiday?.data === formatIsoDate(parts);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// src/feriados/calendar.ts
|
|
134
|
+
function isFeriadoNacional(input) {
|
|
135
|
+
const parts = parseDateInput(input);
|
|
136
|
+
if (parts === null) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
return isFixedHoliday(parts) || isPaixaoDeCristo(parts);
|
|
140
|
+
}
|
|
141
|
+
function getFeriadosNacionais(year) {
|
|
142
|
+
if (!Number.isInteger(year)) {
|
|
143
|
+
return [];
|
|
144
|
+
}
|
|
145
|
+
const holidays = [...getFixedHolidaysForYear(year)];
|
|
146
|
+
const paixao = getPaixaoDeCristo(year);
|
|
147
|
+
if (paixao !== null) {
|
|
148
|
+
holidays.push(paixao);
|
|
149
|
+
}
|
|
150
|
+
return holidays.sort((left, right) => left.data.localeCompare(right.data));
|
|
151
|
+
}
|
|
152
|
+
function getProximoDiaUtil(input) {
|
|
153
|
+
const parts = parseDateInput(input);
|
|
154
|
+
if (parts === null) {
|
|
155
|
+
return "";
|
|
156
|
+
}
|
|
157
|
+
let cursor = addUtcDays(parts, 1);
|
|
158
|
+
while (isWeekendUtc(cursor) || isFeriadoNacional(formatIsoDate(cursor))) {
|
|
159
|
+
cursor = addUtcDays(cursor, 1);
|
|
160
|
+
}
|
|
161
|
+
return formatIsoDate(cursor);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// src/feriados/data/portaria-extras.json
|
|
165
|
+
var portaria_extras_default = {
|
|
166
|
+
"2026": [
|
|
167
|
+
{
|
|
168
|
+
data: "2026-04-20",
|
|
169
|
+
nome: "Ponto facultativo",
|
|
170
|
+
baseLegal: "Portaria MGI n\xBA 11.460/2025"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
data: "2026-06-05",
|
|
174
|
+
nome: "Ponto facultativo",
|
|
175
|
+
baseLegal: "Portaria MGI n\xBA 11.460/2025"
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
// src/feriados/facultativos.ts
|
|
181
|
+
var FERIADOS_GOV_CALENDARIO_URL = "https://www.gov.br/gestao/pt-br/assuntos/noticias/2025/dezembro/confira-o-calendario-oficial-de-feriados-nacionais-e-pontos-facultativos-em-2026";
|
|
182
|
+
var CARNIVAL_MONDAY_OFFSET_DAYS = -48;
|
|
183
|
+
var CARNIVAL_TUESDAY_OFFSET_DAYS = -47;
|
|
184
|
+
var ASH_WEDNESDAY_OFFSET_DAYS = -46;
|
|
185
|
+
var CORPUS_CHRISTI_OFFSET_DAYS = 60;
|
|
186
|
+
var PORTARIA_BASE_LEGAL = "Portaria MGI \u2014 calend\xE1rio oficial da administra\xE7\xE3o p\xFAblica federal";
|
|
187
|
+
var EASTER_FACULTATIVOS = [
|
|
188
|
+
{ offsetDays: CARNIVAL_MONDAY_OFFSET_DAYS, nome: "Carnaval" },
|
|
189
|
+
{ offsetDays: CARNIVAL_TUESDAY_OFFSET_DAYS, nome: "Carnaval" },
|
|
190
|
+
{
|
|
191
|
+
offsetDays: ASH_WEDNESDAY_OFFSET_DAYS,
|
|
192
|
+
nome: "Quarta-Feira de Cinzas",
|
|
193
|
+
horarioParcial: "until 14:00"
|
|
194
|
+
},
|
|
195
|
+
{ offsetDays: CORPUS_CHRISTI_OFFSET_DAYS, nome: "Corpus Christi" }
|
|
196
|
+
];
|
|
197
|
+
var FIXED_FACULTATIVOS = [
|
|
198
|
+
{ month: 10, day: 28, nome: "Dia do Servidor P\xFAblico federal" },
|
|
199
|
+
{ month: 12, day: 24, nome: "V\xE9spera do Natal", horarioParcial: "after 13:00" },
|
|
200
|
+
{ month: 12, day: 31, nome: "V\xE9spera do Ano Novo", horarioParcial: "after 13:00" }
|
|
201
|
+
];
|
|
202
|
+
var PORTARIA_EXTRAS_BY_YEAR = portaria_extras_default;
|
|
203
|
+
function getEasterFacultativos(year) {
|
|
204
|
+
const easter = easterSunday(year);
|
|
205
|
+
return EASTER_FACULTATIVOS.map((template) => {
|
|
206
|
+
const parts = addUtcDays(easter, template.offsetDays);
|
|
207
|
+
return {
|
|
208
|
+
data: formatIsoDate(parts),
|
|
209
|
+
nome: template.nome,
|
|
210
|
+
baseLegal: PORTARIA_BASE_LEGAL,
|
|
211
|
+
...template.horarioParcial === void 0 ? {} : { horarioParcial: template.horarioParcial }
|
|
212
|
+
};
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
function getFixedFacultativos(year) {
|
|
216
|
+
return FIXED_FACULTATIVOS.map((template) => ({
|
|
217
|
+
data: formatIsoDate({ year, month: template.month, day: template.day }),
|
|
218
|
+
nome: template.nome,
|
|
219
|
+
baseLegal: PORTARIA_BASE_LEGAL,
|
|
220
|
+
...template.horarioParcial === void 0 ? {} : { horarioParcial: template.horarioParcial }
|
|
221
|
+
}));
|
|
222
|
+
}
|
|
223
|
+
function getPortariaExtras(year) {
|
|
224
|
+
return PORTARIA_EXTRAS_BY_YEAR[String(year)] ?? [];
|
|
225
|
+
}
|
|
226
|
+
function getPontosFacultativosFederais(year) {
|
|
227
|
+
if (!Number.isInteger(year)) {
|
|
228
|
+
return [];
|
|
229
|
+
}
|
|
230
|
+
const pontos = [
|
|
231
|
+
...getEasterFacultativos(year),
|
|
232
|
+
...getFixedFacultativos(year),
|
|
233
|
+
...getPortariaExtras(year)
|
|
234
|
+
];
|
|
235
|
+
return pontos.sort((left, right) => left.data.localeCompare(right.data));
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// src/feriados/version.ts
|
|
239
|
+
var FERIADOS_DATA_VERSION = metadata_default;
|
|
240
|
+
|
|
241
|
+
export { FERIADOS_DATA_VERSION, FERIADOS_GOV_CALENDARIO_URL, FERIADOS_LEI_662_URL, easterSunday, getFeriadosNacionais, getPontosFacultativosFederais, getProximoDiaUtil, isFeriadoNacional };
|
|
242
|
+
//# sourceMappingURL=feriados.js.map
|
|
243
|
+
//# sourceMappingURL=feriados.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/feriados/date-utils.ts","../src/feriados/fixed.ts","../src/feriados/movable-national.ts","../src/feriados/calendar.ts","../src/feriados/data/portaria-extras.json","../src/feriados/facultativos.ts","../src/feriados/version.ts"],"names":[],"mappings":"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","file":"feriados.js","sourcesContent":["import type { ParsedUtcDate } from './types.js';\n\nconst ISO_DATE_PATTERN = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n\nexport function parseIsoDateString(value: string): ParsedUtcDate | null {\n const match = ISO_DATE_PATTERN.exec(value);\n if (match === null) {\n return null;\n }\n const year = Number(match[1]);\n const month = Number(match[2]);\n const day = Number(match[3]);\n if (!isValidUtcDateParts(year, month, day)) {\n return null;\n }\n return { year, month, day };\n}\n\nexport function parseDateInput(input: string | Date): ParsedUtcDate | null {\n if (input instanceof Date) {\n if (Number.isNaN(input.getTime())) {\n return null;\n }\n return {\n year: input.getUTCFullYear(),\n month: input.getUTCMonth() + 1,\n day: input.getUTCDate(),\n };\n }\n return parseIsoDateString(input.trim());\n}\n\nexport function formatIsoDate(parts: ParsedUtcDate): string {\n const month = String(parts.month).padStart(2, '0');\n const day = String(parts.day).padStart(2, '0');\n return `${String(parts.year)}-${month}-${day}`;\n}\n\nexport function addUtcDays(parts: ParsedUtcDate, days: number): ParsedUtcDate {\n const date = new Date(Date.UTC(parts.year, parts.month - 1, parts.day + days));\n return {\n year: date.getUTCFullYear(),\n month: date.getUTCMonth() + 1,\n day: date.getUTCDate(),\n };\n}\n\nexport function isWeekendUtc(parts: ParsedUtcDate): boolean {\n const dayOfWeek = new Date(Date.UTC(parts.year, parts.month - 1, parts.day)).getUTCDay();\n return dayOfWeek === 0 || dayOfWeek === 6;\n}\n\n/** Easter Sunday — Meeus/Jones/Butcher Gregorian algorithm (Computus). */\nexport function easterSunday(year: number): ParsedUtcDate {\n const a = year % 19;\n const b = Math.floor(year / 100);\n const c = year % 100;\n const d = Math.floor(b / 4);\n const e = b % 4;\n const f = Math.floor((b + 8) / 25);\n const g = Math.floor((b - f + 1) / 3);\n const h = (19 * a + b - d - g + 15) % 30;\n const i = Math.floor(c / 4);\n const k = c % 4;\n const l = (32 + 2 * e + 2 * i - h - k) % 7;\n const m = Math.floor((a + 11 * h + 22 * l) / 451);\n const month = Math.floor((h + l - 7 * m + 114) / 31);\n const day = ((h + l - 7 * m + 114) % 31) + 1;\n return { year, month, day };\n}\n\nfunction isValidUtcDateParts(year: number, month: number, day: number): boolean {\n if (month < 1 || month > 12 || day < 1) {\n return false;\n }\n const date = new Date(Date.UTC(year, month - 1, day));\n return (\n date.getUTCFullYear() === year &&\n date.getUTCMonth() === month - 1 &&\n date.getUTCDate() === day\n );\n}\n","/**\n * Fixed national federal holidays — Lei 662/1949 (consolidated by Lei 10.607/2002) and amendments.\n * @see https://www.planalto.gov.br/ccivil_03/leis/l0662.htm\n * @see https://www.planalto.gov.br/ccivil_03/leis/l10607.htm\n */\n\nimport { formatIsoDate } from './date-utils.js';\nimport type { FeriadoNacional, ParsedUtcDate } from './types.js';\n\nexport const FERIADOS_LEI_662_URL = 'https://www.planalto.gov.br/ccivil_03/leis/l0662.htm';\nexport const FERIADOS_LEI_10007_URL = 'https://www.planalto.gov.br/ccivil_03/leis/l10607.htm';\nexport const FERIADOS_LEI_6802_URL = 'https://www.planalto.gov.br/ccivil_03/leis/l6802.htm';\nexport const FERIADOS_LEI_14759_URL =\n 'https://www.planalto.gov.br/ccivil_03/_ato2023-2026/2023/lei/L14759.htm';\n\nexport const CONSCIENCIA_NEGRA_MIN_YEAR = 2024;\n\ninterface FixedHolidayTemplate {\n month: number;\n day: number;\n nome: string;\n baseLegal: string;\n activeFromYear?: number;\n}\n\nconst FIXED_HOLIDAY_TEMPLATES: readonly FixedHolidayTemplate[] = [\n { month: 1, day: 1, nome: 'Confraternização Universal', baseLegal: 'Lei 662/1949' },\n { month: 4, day: 21, nome: 'Tiradentes', baseLegal: 'Lei 662/1949' },\n { month: 5, day: 1, nome: 'Dia do Trabalho', baseLegal: 'Lei 662/1949' },\n { month: 9, day: 7, nome: 'Independência do Brasil', baseLegal: 'Lei 662/1949' },\n { month: 10, day: 12, nome: 'Nossa Senhora Aparecida', baseLegal: 'Lei 6.802/1980' },\n { month: 11, day: 2, nome: 'Finados', baseLegal: 'Lei 662/1949' },\n { month: 11, day: 15, nome: 'Proclamação da República', baseLegal: 'Lei 662/1949' },\n {\n month: 11,\n day: 20,\n nome: 'Dia Nacional de Zumbi e da Consciência Negra',\n baseLegal: 'Lei 14.759/2023',\n activeFromYear: CONSCIENCIA_NEGRA_MIN_YEAR,\n },\n { month: 12, day: 25, nome: 'Natal', baseLegal: 'Lei 662/1949' },\n];\n\nexport function getFixedHolidaysForYear(year: number): FeriadoNacional[] {\n const holidays: FeriadoNacional[] = [];\n for (const template of FIXED_HOLIDAY_TEMPLATES) {\n if (template.activeFromYear !== undefined && year < template.activeFromYear) {\n continue;\n }\n const parts: ParsedUtcDate = { year, month: template.month, day: template.day };\n holidays.push({\n data: formatIsoDate(parts),\n nome: template.nome,\n tipo: 'fixo',\n baseLegal: template.baseLegal,\n });\n }\n return holidays;\n}\n\nexport function isFixedHoliday(parts: ParsedUtcDate): boolean {\n return getFixedHolidaysForYear(parts.year).some((holiday) => holiday.data === formatIsoDate(parts));\n}\n","/**\n * Movable national federal holiday — Paixão de Cristo (Sexta-feira Santa).\n * Listed as feriado nacional in the annual MGI federal calendar (e.g. Portaria 11.460/2025).\n * @see https://www.gov.br/gestao/pt-br/assuntos/noticias/2025/dezembro/confira-o-calendario-oficial-de-feriados-nacionais-e-pontos-facultativos-em-2026\n */\n\nimport { addUtcDays, easterSunday, formatIsoDate } from './date-utils.js';\nimport type { FeriadoNacional, ParsedUtcDate } from './types.js';\n\nexport const GOOD_FRIDAY_OFFSET_DAYS = -2;\nexport const FERIADOS_PORTARIA_MGI_11460_2025_URL =\n 'https://www.gov.br/gestao/pt-br/assuntos/noticias/2025/dezembro/confira-o-calendario-oficial-de-feriados-nacionais-e-pontos-facultativos-em-2026';\n\nexport function getPaixaoDeCristo(year: number): FeriadoNacional | null {\n if (!Number.isInteger(year)) {\n return null;\n }\n const easter = easterSunday(year);\n const parts = addUtcDays(easter, GOOD_FRIDAY_OFFSET_DAYS);\n return {\n data: formatIsoDate(parts),\n nome: 'Paixão de Cristo',\n tipo: 'movel',\n baseLegal: 'Calendário oficial — administração pública federal (Portaria MGI)',\n };\n}\n\nexport function isPaixaoDeCristo(parts: ParsedUtcDate): boolean {\n const holiday = getPaixaoDeCristo(parts.year);\n return holiday?.data === formatIsoDate(parts);\n}\n","/**\n * Brazilian national federal holidays — Lei 662/1949 (fixed) + Paixão de Cristo (movable, MGI calendar).\n * Does NOT include pontos facultativos (Carnaval, Corpus Christi, etc.).\n * @see https://www.planalto.gov.br/ccivil_03/leis/l0662.htm\n * @see https://www.gov.br/gestao/pt-br/assuntos/noticias/2025/dezembro/confira-o-calendario-oficial-de-feriados-nacionais-e-pontos-facultativos-em-2026\n */\n\nimport {\n addUtcDays,\n formatIsoDate,\n isWeekendUtc,\n parseDateInput,\n} from './date-utils.js';\nimport { getFixedHolidaysForYear, isFixedHoliday } from './fixed.js';\nimport { getPaixaoDeCristo, isPaixaoDeCristo } from './movable-national.js';\nimport type { FeriadoNacional } from './types.js';\n\nexport function isFeriadoNacional(input: string | Date): boolean {\n const parts = parseDateInput(input);\n if (parts === null) {\n return false;\n }\n return isFixedHoliday(parts) || isPaixaoDeCristo(parts);\n}\n\nexport function getFeriadosNacionais(year: number): readonly FeriadoNacional[] {\n if (!Number.isInteger(year)) {\n return [];\n }\n const holidays: FeriadoNacional[] = [...getFixedHolidaysForYear(year)];\n const paixao = getPaixaoDeCristo(year);\n if (paixao !== null) {\n holidays.push(paixao);\n }\n return holidays.sort((left, right) => left.data.localeCompare(right.data));\n}\n\nexport function getProximoDiaUtil(input: string | Date): string {\n const parts = parseDateInput(input);\n if (parts === null) {\n return '';\n }\n\n let cursor = addUtcDays(parts, 1);\n while (isWeekendUtc(cursor) || isFeriadoNacional(formatIsoDate(cursor))) {\n cursor = addUtcDays(cursor, 1);\n }\n return formatIsoDate(cursor);\n}\n","{\n \"2026\": [\n {\n \"data\": \"2026-04-20\",\n \"nome\": \"Ponto facultativo\",\n \"baseLegal\": \"Portaria MGI nº 11.460/2025\"\n },\n {\n \"data\": \"2026-06-05\",\n \"nome\": \"Ponto facultativo\",\n \"baseLegal\": \"Portaria MGI nº 11.460/2025\"\n }\n ]\n}\n","/**\n * Federal facultative days (pontos facultativos) per annual MGI portaria.\n * NOT national holidays — Paixão de Cristo is excluded (see movable-national.ts).\n * @see https://www.gov.br/gestao/pt-br/assuntos/noticias/2025/dezembro/confira-o-calendario-oficial-de-feriados-nacionais-e-pontos-facultativos-em-2026\n */\n\nimport portariaExtras from './data/portaria-extras.json';\nimport { addUtcDays, easterSunday, formatIsoDate } from './date-utils.js';\nimport type { ParsedUtcDate, PontoFacultativoFederal } from './types.js';\n\nexport const FERIADOS_LEI_9093_URL = 'https://www.planalto.gov.br/ccivil_03/leis/l9093.htm';\nexport const FERIADOS_GOV_CALENDARIO_URL =\n 'https://www.gov.br/gestao/pt-br/assuntos/noticias/2025/dezembro/confira-o-calendario-oficial-de-feriados-nacionais-e-pontos-facultativos-em-2026';\n\nexport const CARNIVAL_MONDAY_OFFSET_DAYS = -48;\nexport const CARNIVAL_TUESDAY_OFFSET_DAYS = -47;\nexport const ASH_WEDNESDAY_OFFSET_DAYS = -46;\nexport const CORPUS_CHRISTI_OFFSET_DAYS = 60;\n\nconst PORTARIA_BASE_LEGAL = 'Portaria MGI — calendário oficial da administração pública federal';\n\ninterface EasterFacultativoTemplate {\n offsetDays: number;\n nome: string;\n horarioParcial?: PontoFacultativoFederal['horarioParcial'];\n}\n\ninterface FixedFacultativoTemplate {\n month: number;\n day: number;\n nome: string;\n horarioParcial?: PontoFacultativoFederal['horarioParcial'];\n}\n\nconst EASTER_FACULTATIVOS: readonly EasterFacultativoTemplate[] = [\n { offsetDays: CARNIVAL_MONDAY_OFFSET_DAYS, nome: 'Carnaval' },\n { offsetDays: CARNIVAL_TUESDAY_OFFSET_DAYS, nome: 'Carnaval' },\n {\n offsetDays: ASH_WEDNESDAY_OFFSET_DAYS,\n nome: 'Quarta-Feira de Cinzas',\n horarioParcial: 'until 14:00',\n },\n { offsetDays: CORPUS_CHRISTI_OFFSET_DAYS, nome: 'Corpus Christi' },\n];\n\nconst FIXED_FACULTATIVOS: readonly FixedFacultativoTemplate[] = [\n { month: 10, day: 28, nome: 'Dia do Servidor Público federal' },\n { month: 12, day: 24, nome: 'Véspera do Natal', horarioParcial: 'after 13:00' },\n { month: 12, day: 31, nome: 'Véspera do Ano Novo', horarioParcial: 'after 13:00' },\n];\n\nconst PORTARIA_EXTRAS_BY_YEAR = portariaExtras as Record<\n string,\n readonly Omit<PontoFacultativoFederal, 'horarioParcial'>[]\n>;\n\nfunction getEasterFacultativos(year: number): PontoFacultativoFederal[] {\n const easter = easterSunday(year);\n return EASTER_FACULTATIVOS.map((template) => {\n const parts = addUtcDays(easter, template.offsetDays);\n return {\n data: formatIsoDate(parts),\n nome: template.nome,\n baseLegal: PORTARIA_BASE_LEGAL,\n ...(template.horarioParcial === undefined ? {} : { horarioParcial: template.horarioParcial }),\n };\n });\n}\n\nfunction getFixedFacultativos(year: number): PontoFacultativoFederal[] {\n return FIXED_FACULTATIVOS.map((template) => ({\n data: formatIsoDate({ year, month: template.month, day: template.day }),\n nome: template.nome,\n baseLegal: PORTARIA_BASE_LEGAL,\n ...(template.horarioParcial === undefined ? {} : { horarioParcial: template.horarioParcial }),\n }));\n}\n\nfunction getPortariaExtras(year: number): readonly PontoFacultativoFederal[] {\n return PORTARIA_EXTRAS_BY_YEAR[String(year)] ?? [];\n}\n\nexport function getPontosFacultativosFederais(year: number): readonly PontoFacultativoFederal[] {\n if (!Number.isInteger(year)) {\n return [];\n }\n const pontos = [\n ...getEasterFacultativos(year),\n ...getFixedFacultativos(year),\n ...getPortariaExtras(year),\n ];\n return pontos.sort((left, right) => left.data.localeCompare(right.data));\n}\n\nexport function isPontoFacultativoFederal(parts: ParsedUtcDate): boolean {\n return getPontosFacultativosFederais(parts.year).some(\n (ponto) => ponto.data === formatIsoDate(parts),\n );\n}\n","import feriadosMetadata from './data/metadata.json';\nimport type { FeriadosDataVersion } from './types.js';\n\nexport const FERIADOS_DATA_VERSION: FeriadosDataVersion = feriadosMetadata as FeriadosDataVersion;\n"]}
|