@projetoacbr/acbrlib-base-node 1.0.3 → 1.0.5
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 +24 -1
- package/dist/src/index.js +0 -1
- package/dist/src/utils/index.d.ts +35 -0
- package/dist/src/utils/index.js +57 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,7 +20,30 @@ npm install @projetoacbr/acbrlib-base-node
|
|
|
20
20
|
|
|
21
21
|
## 📖 Como Usar
|
|
22
22
|
|
|
23
|
-
### Importação
|
|
23
|
+
### 🎯 Importação
|
|
24
|
+
|
|
25
|
+
#### 📝 TypeScript (Recomendado)
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
// Importa a classe ACBrLibBaseMT oficial conforme documentação
|
|
29
|
+
import ACBrLibBaseMT from "@projetoacbr/acbrlib-base-node/dist/src";
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**⚙️ Configuração tsconfig.json recomendada:**
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"compilerOptions": {
|
|
36
|
+
"target": "es2022",
|
|
37
|
+
"module": "commonjs",
|
|
38
|
+
"strict": true,
|
|
39
|
+
"esModuleInterop": true,
|
|
40
|
+
"skipLibCheck": true,
|
|
41
|
+
"forceConsistentCasingInFileNames": true
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
#### 🔧 JavaScript/CommonJS
|
|
24
47
|
|
|
25
48
|
```javascript
|
|
26
49
|
const ACBrLibBaseMT = require('@projetoacbr/acbrlib-base-node/dist/src').default
|
package/dist/src/index.js
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classe utilitária para conversões de tipos de dados específicas da ACBrLib
|
|
3
|
+
*
|
|
4
|
+
* Esta classe fornece métodos estáticos para converter entre tipos de dados
|
|
5
|
+
* JavaScript/TypeScript e os formatos esperados pelas bibliotecas nativas ACBr.
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
export declare class ACBrDateConverter {
|
|
9
|
+
private static readonly MILLIS_PER_DAY;
|
|
10
|
+
private static readonly UNIX_EPOCH_START_PASCAL;
|
|
11
|
+
/**
|
|
12
|
+
* Converte uma data JavaScript para o formato Pascal TDateTime
|
|
13
|
+
*
|
|
14
|
+
* Pascal TDateTime representa datas como número de dias desde 30/12/1899
|
|
15
|
+
* com a parte fracionária representando a hora do dia.
|
|
16
|
+
*
|
|
17
|
+
* @param date - Data JavaScript a ser convertida
|
|
18
|
+
* @returns O valor em Pascal TDateTime
|
|
19
|
+
* @throws {TypeError} Quando o parâmetro não é uma instância de Date
|
|
20
|
+
* @throws {RangeError} Quando a data é inválida ou anterior ao epoch Unix
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const date = new Date('2023-01-01T12:00:00Z');
|
|
25
|
+
* const pascalDateTime = ACBrConverters.convertDateToPascalTDateTime(date);
|
|
26
|
+
* console.log(pascalDateTime); // 44927.5
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
static convertDateToPascalTDateTime(date: Date): number;
|
|
30
|
+
/**
|
|
31
|
+
* Construtor privado para prevenir instanciação
|
|
32
|
+
* Esta classe deve ser usada apenas através de seus métodos estáticos
|
|
33
|
+
*/
|
|
34
|
+
private constructor();
|
|
35
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ACBrDateConverter = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Classe utilitária para conversões de tipos de dados específicas da ACBrLib
|
|
6
|
+
*
|
|
7
|
+
* Esta classe fornece métodos estáticos para converter entre tipos de dados
|
|
8
|
+
* JavaScript/TypeScript e os formatos esperados pelas bibliotecas nativas ACBr.
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
class ACBrDateConverter {
|
|
12
|
+
// Constantes para conversão Pascal TDateTime - ES2022 compatible
|
|
13
|
+
static MILLIS_PER_DAY = 86_400_000.0;
|
|
14
|
+
static UNIX_EPOCH_START_PASCAL = 25_569.0;
|
|
15
|
+
/**
|
|
16
|
+
* Converte uma data JavaScript para o formato Pascal TDateTime
|
|
17
|
+
*
|
|
18
|
+
* Pascal TDateTime representa datas como número de dias desde 30/12/1899
|
|
19
|
+
* com a parte fracionária representando a hora do dia.
|
|
20
|
+
*
|
|
21
|
+
* @param date - Data JavaScript a ser convertida
|
|
22
|
+
* @returns O valor em Pascal TDateTime
|
|
23
|
+
* @throws {TypeError} Quando o parâmetro não é uma instância de Date
|
|
24
|
+
* @throws {RangeError} Quando a data é inválida ou anterior ao epoch Unix
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const date = new Date('2023-01-01T12:00:00Z');
|
|
29
|
+
* const pascalDateTime = ACBrConverters.convertDateToPascalTDateTime(date);
|
|
30
|
+
* console.log(pascalDateTime); // 44927.5
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
static convertDateToPascalTDateTime(date) {
|
|
34
|
+
// Validação de tipo usando ES2022 features
|
|
35
|
+
if (!(date instanceof Date)) {
|
|
36
|
+
throw new TypeError('Parâmetro deve ser uma instância de Date');
|
|
37
|
+
}
|
|
38
|
+
// Verificação de data inválida usando Number.isNaN (ES2015+, compatível com ES2022)
|
|
39
|
+
if (Number.isNaN(date.getTime())) {
|
|
40
|
+
throw new RangeError('Data inválida para conversão para Pascal TDateTime');
|
|
41
|
+
}
|
|
42
|
+
// Verificação de data anterior ao epoch Unix (1970-01-01)
|
|
43
|
+
if (date.getTime() < 0) {
|
|
44
|
+
throw new RangeError('Data anterior ao epoch Unix não é suportada');
|
|
45
|
+
}
|
|
46
|
+
// Conversão usando operadores matemáticos modernos
|
|
47
|
+
return (date.getTime() / this.MILLIS_PER_DAY) + this.UNIX_EPOCH_START_PASCAL;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Construtor privado para prevenir instanciação
|
|
51
|
+
* Esta classe deve ser usada apenas através de seus métodos estáticos
|
|
52
|
+
*/
|
|
53
|
+
constructor() {
|
|
54
|
+
throw new Error('ACBrDateConvert é uma classe utilitária e não deve ser instanciada');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.ACBrDateConverter = ACBrDateConverter;
|