@projetoacbr/acbrlib-base-node 1.0.4 → 1.0.6
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/ACBrBuffer/index.d.ts +25 -1
- package/dist/src/ACBrBuffer/index.js +29 -2
- package/dist/src/exception/ACBrLibResultCodes.d.ts +0 -0
- package/dist/src/exception/ACBrLibResultCodes.js +3 -0
- package/dist/src/exception/index.d.ts +40 -2
- package/dist/src/exception/index.js +40 -2
- package/dist/src/index.d.ts +0 -0
- package/dist/src/index.js +0 -5
- 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
|
|
@@ -7,10 +7,34 @@ export default class ACBrBuffer {
|
|
|
7
7
|
private bufferSize;
|
|
8
8
|
private bufferData;
|
|
9
9
|
private disposed;
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param size Tamanho do buffer (usa valor padrão se inválido)
|
|
13
|
+
*/
|
|
14
|
+
constructor(size?: number);
|
|
15
|
+
/**
|
|
16
|
+
* @description Retorna a referencia do tamanho do buffer
|
|
17
|
+
* @returns Referencia do tamanho do buffer
|
|
18
|
+
*/
|
|
11
19
|
getRefTamanhoBuffer(): any;
|
|
20
|
+
/**
|
|
21
|
+
* @description Retorna o buffer
|
|
22
|
+
* @returns Buffer
|
|
23
|
+
*/
|
|
12
24
|
getBuffer(): Buffer<ArrayBufferLike>;
|
|
25
|
+
/**
|
|
26
|
+
* @description Retorna a string do conteudo do buffer
|
|
27
|
+
* @returns String do conteudo do buffer
|
|
28
|
+
*/
|
|
13
29
|
toString(): string;
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
* @description Destroi o buffer e liberando memoria dos recursos alocados
|
|
33
|
+
*/
|
|
14
34
|
destroy(): void;
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @description Implementação do auto-cleanup com 'using' declaration
|
|
38
|
+
*/
|
|
15
39
|
[Symbol.dispose](): void;
|
|
16
40
|
}
|
|
@@ -47,22 +47,46 @@ class ACBrBuffer {
|
|
|
47
47
|
bufferSize;
|
|
48
48
|
bufferData;
|
|
49
49
|
disposed = false;
|
|
50
|
-
|
|
50
|
+
/**
|
|
51
|
+
*
|
|
52
|
+
* @param size Tamanho do buffer (usa valor padrão se inválido)
|
|
53
|
+
*/
|
|
54
|
+
constructor(size = exports.TAMANHO_PADRAO) {
|
|
55
|
+
// Se o valor for inválido, usa o padrão
|
|
56
|
+
if (!Number.isFinite(size) || size <= 0) {
|
|
57
|
+
size = exports.TAMANHO_PADRAO;
|
|
58
|
+
}
|
|
51
59
|
this.bufferSize = koffi.alloc("int", 1);
|
|
52
60
|
this.bufferData = Buffer.alloc(size);
|
|
53
61
|
koffi.encode(this.bufferSize, 'int', size);
|
|
54
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* @description Retorna a referencia do tamanho do buffer
|
|
65
|
+
* @returns Referencia do tamanho do buffer
|
|
66
|
+
*/
|
|
55
67
|
getRefTamanhoBuffer() {
|
|
56
68
|
return this.bufferSize;
|
|
57
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* @description Retorna o buffer
|
|
72
|
+
* @returns Buffer
|
|
73
|
+
*/
|
|
58
74
|
getBuffer() {
|
|
59
75
|
return this.bufferData;
|
|
60
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* @description Retorna a string do conteudo do buffer
|
|
79
|
+
* @returns String do conteudo do buffer
|
|
80
|
+
*/
|
|
61
81
|
toString() {
|
|
62
82
|
let size = deref(this.bufferSize, 'int');
|
|
63
83
|
let strBuffer = this.bufferData.toString('utf8', 0, (Math.min(size, this.bufferData.length)));
|
|
64
84
|
return strBuffer;
|
|
65
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
*
|
|
88
|
+
* @description Destroi o buffer e liberando memoria dos recursos alocados
|
|
89
|
+
*/
|
|
66
90
|
destroy() {
|
|
67
91
|
if (!this.disposed) {
|
|
68
92
|
koffi.free(this.bufferSize);
|
|
@@ -70,7 +94,10 @@ class ACBrBuffer {
|
|
|
70
94
|
this.disposed = true;
|
|
71
95
|
}
|
|
72
96
|
}
|
|
73
|
-
|
|
97
|
+
/**
|
|
98
|
+
*
|
|
99
|
+
* @description Implementação do auto-cleanup com 'using' declaration
|
|
100
|
+
*/
|
|
74
101
|
[Symbol.dispose]() {
|
|
75
102
|
this.destroy();
|
|
76
103
|
}
|
|
File without changes
|
|
@@ -1,43 +1,81 @@
|
|
|
1
|
+
/***
|
|
2
|
+
* Exceções da ACBrLib
|
|
3
|
+
*/
|
|
1
4
|
/**
|
|
2
|
-
* ACBrLibError
|
|
3
|
-
*
|
|
5
|
+
* ACBrLibError é uma classe de Exception para lançar Exceçoes da ACBr
|
|
4
6
|
*/
|
|
5
7
|
export default class ACBrLibError extends Error {
|
|
6
8
|
constructor(msg: string);
|
|
7
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* ACBrLibLibNaoInicializadaError é uma classe que lança uma exceção quando a biblioteca não está inicializada
|
|
12
|
+
*/
|
|
8
13
|
export declare class ACBrLibLibNaoInicializadaError extends ACBrLibError {
|
|
9
14
|
constructor(msg: string);
|
|
10
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* ACBrLibLibNaoFinalizadaError é uma classe que lança uma exceção quando a biblioteca não está finalizada
|
|
18
|
+
*/
|
|
11
19
|
export declare class ACBrLibLibNaoFinalizadaError extends ACBrLibError {
|
|
12
20
|
constructor(msg: string);
|
|
13
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* ACBrLibConfigLerError é uma classe que lança uma exceção quando ocorre um erro ao ler a configuração
|
|
24
|
+
*/
|
|
14
25
|
export declare class ACBrLibConfigLerError extends ACBrLibError {
|
|
15
26
|
constructor(msg: string);
|
|
16
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* ACBrLibConfigGravarError é uma classe que lança uma exceção quando ocorre um erro ao gravar a configuração
|
|
30
|
+
*/
|
|
17
31
|
export declare class ACBrLibConfigGravarError extends ACBrLibError {
|
|
18
32
|
constructor(msg: string);
|
|
19
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* ACBrLibArquivoNaoExisteError é uma classe que lança uma exceção quando o arquivo não existe
|
|
36
|
+
*/
|
|
20
37
|
export declare class ACBrLibArquivoNaoExisteError extends ACBrLibError {
|
|
21
38
|
constructor(msg: string);
|
|
22
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* ACBrLibDiretorioNaoExisteError é uma classe que lança uma exceção quando o diretório não existe
|
|
42
|
+
*/
|
|
23
43
|
export declare class ACBrLibDiretorioNaoExisteError extends ACBrLibError {
|
|
24
44
|
constructor(msg: string);
|
|
25
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* ACBrLibHttpError é uma classe que lança uma exceção quando ocorre um erro ao fazer uma requisição HTTP
|
|
48
|
+
*/
|
|
26
49
|
export declare class ACBrLibHttpError extends ACBrLibError {
|
|
27
50
|
constructor(msg: string);
|
|
28
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* ACBrLibParametroInvalidoError é uma classe que lança uma exceção quando o parâmetro é inválido
|
|
54
|
+
*/
|
|
29
55
|
export declare class ACBrLibParametroInvalidoError extends ACBrLibError {
|
|
30
56
|
constructor(msg: string);
|
|
31
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* ACBrLibExecutandoMetodoError é uma classe que lança uma exceção quando o método está sendo executado
|
|
60
|
+
*/
|
|
32
61
|
export declare class ACBrLibExecutandoMetodoError extends ACBrLibError {
|
|
33
62
|
constructor(msg: string);
|
|
34
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* ACBrLibNaoDisponivelEmModoConsoleError é uma classe que lança uma exceção quando a biblioteca não está disponível em modo console
|
|
66
|
+
*/
|
|
35
67
|
export declare class ACBrLibNaoDisponivelEmModoConsoleError extends ACBrLibError {
|
|
36
68
|
constructor(msg: string);
|
|
37
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* ACBrLibTimeOutError é uma classe que lança uma exceção quando o tempo de espera expira
|
|
72
|
+
*/
|
|
38
73
|
export declare class ACBrLibTimeOutError extends ACBrLibError {
|
|
39
74
|
constructor(msg: string);
|
|
40
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* ACBrLibDemoExpiradoError é uma classe que lança uma exceção quando o demo expira
|
|
78
|
+
*/
|
|
41
79
|
export declare class ACBrLibDemoExpiradoError extends ACBrLibError {
|
|
42
80
|
constructor(msg: string);
|
|
43
81
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/***
|
|
3
|
+
* Exceções da ACBrLib
|
|
4
|
+
*/
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.ACBrLibDemoExpiradoError = exports.ACBrLibTimeOutError = exports.ACBrLibNaoDisponivelEmModoConsoleError = exports.ACBrLibExecutandoMetodoError = exports.ACBrLibParametroInvalidoError = exports.ACBrLibHttpError = exports.ACBrLibDiretorioNaoExisteError = exports.ACBrLibArquivoNaoExisteError = exports.ACBrLibConfigGravarError = exports.ACBrLibConfigLerError = exports.ACBrLibLibNaoFinalizadaError = exports.ACBrLibLibNaoInicializadaError = void 0;
|
|
4
7
|
/**
|
|
5
|
-
* ACBrLibError
|
|
6
|
-
*
|
|
8
|
+
* ACBrLibError é uma classe de Exception para lançar Exceçoes da ACBr
|
|
7
9
|
*/
|
|
8
10
|
class ACBrLibError extends Error {
|
|
9
11
|
constructor(msg) {
|
|
@@ -11,72 +13,108 @@ class ACBrLibError extends Error {
|
|
|
11
13
|
}
|
|
12
14
|
}
|
|
13
15
|
exports.default = ACBrLibError;
|
|
16
|
+
/**
|
|
17
|
+
* ACBrLibLibNaoInicializadaError é uma classe que lança uma exceção quando a biblioteca não está inicializada
|
|
18
|
+
*/
|
|
14
19
|
class ACBrLibLibNaoInicializadaError extends ACBrLibError {
|
|
15
20
|
constructor(msg) {
|
|
16
21
|
super(msg);
|
|
17
22
|
}
|
|
18
23
|
}
|
|
19
24
|
exports.ACBrLibLibNaoInicializadaError = ACBrLibLibNaoInicializadaError;
|
|
25
|
+
/**
|
|
26
|
+
* ACBrLibLibNaoFinalizadaError é uma classe que lança uma exceção quando a biblioteca não está finalizada
|
|
27
|
+
*/
|
|
20
28
|
class ACBrLibLibNaoFinalizadaError extends ACBrLibError {
|
|
21
29
|
constructor(msg) {
|
|
22
30
|
super(msg);
|
|
23
31
|
}
|
|
24
32
|
}
|
|
25
33
|
exports.ACBrLibLibNaoFinalizadaError = ACBrLibLibNaoFinalizadaError;
|
|
34
|
+
/**
|
|
35
|
+
* ACBrLibConfigLerError é uma classe que lança uma exceção quando ocorre um erro ao ler a configuração
|
|
36
|
+
*/
|
|
26
37
|
class ACBrLibConfigLerError extends ACBrLibError {
|
|
27
38
|
constructor(msg) {
|
|
28
39
|
super(msg);
|
|
29
40
|
}
|
|
30
41
|
}
|
|
31
42
|
exports.ACBrLibConfigLerError = ACBrLibConfigLerError;
|
|
43
|
+
/**
|
|
44
|
+
* ACBrLibConfigGravarError é uma classe que lança uma exceção quando ocorre um erro ao gravar a configuração
|
|
45
|
+
*/
|
|
32
46
|
class ACBrLibConfigGravarError extends ACBrLibError {
|
|
33
47
|
constructor(msg) {
|
|
34
48
|
super(msg);
|
|
35
49
|
}
|
|
36
50
|
}
|
|
37
51
|
exports.ACBrLibConfigGravarError = ACBrLibConfigGravarError;
|
|
52
|
+
/**
|
|
53
|
+
* ACBrLibArquivoNaoExisteError é uma classe que lança uma exceção quando o arquivo não existe
|
|
54
|
+
*/
|
|
38
55
|
class ACBrLibArquivoNaoExisteError extends ACBrLibError {
|
|
39
56
|
constructor(msg) {
|
|
40
57
|
super(msg);
|
|
41
58
|
}
|
|
42
59
|
}
|
|
43
60
|
exports.ACBrLibArquivoNaoExisteError = ACBrLibArquivoNaoExisteError;
|
|
61
|
+
/**
|
|
62
|
+
* ACBrLibDiretorioNaoExisteError é uma classe que lança uma exceção quando o diretório não existe
|
|
63
|
+
*/
|
|
44
64
|
class ACBrLibDiretorioNaoExisteError extends ACBrLibError {
|
|
45
65
|
constructor(msg) {
|
|
46
66
|
super(msg);
|
|
47
67
|
}
|
|
48
68
|
}
|
|
49
69
|
exports.ACBrLibDiretorioNaoExisteError = ACBrLibDiretorioNaoExisteError;
|
|
70
|
+
/**
|
|
71
|
+
* ACBrLibHttpError é uma classe que lança uma exceção quando ocorre um erro ao fazer uma requisição HTTP
|
|
72
|
+
*/
|
|
50
73
|
class ACBrLibHttpError extends ACBrLibError {
|
|
51
74
|
constructor(msg) {
|
|
52
75
|
super(msg);
|
|
53
76
|
}
|
|
54
77
|
}
|
|
55
78
|
exports.ACBrLibHttpError = ACBrLibHttpError;
|
|
79
|
+
/**
|
|
80
|
+
* ACBrLibParametroInvalidoError é uma classe que lança uma exceção quando o parâmetro é inválido
|
|
81
|
+
*/
|
|
56
82
|
class ACBrLibParametroInvalidoError extends ACBrLibError {
|
|
57
83
|
constructor(msg) {
|
|
58
84
|
super(msg);
|
|
59
85
|
}
|
|
60
86
|
}
|
|
61
87
|
exports.ACBrLibParametroInvalidoError = ACBrLibParametroInvalidoError;
|
|
88
|
+
/**
|
|
89
|
+
* ACBrLibExecutandoMetodoError é uma classe que lança uma exceção quando o método está sendo executado
|
|
90
|
+
*/
|
|
62
91
|
class ACBrLibExecutandoMetodoError extends ACBrLibError {
|
|
63
92
|
constructor(msg) {
|
|
64
93
|
super(msg);
|
|
65
94
|
}
|
|
66
95
|
}
|
|
67
96
|
exports.ACBrLibExecutandoMetodoError = ACBrLibExecutandoMetodoError;
|
|
97
|
+
/**
|
|
98
|
+
* ACBrLibNaoDisponivelEmModoConsoleError é uma classe que lança uma exceção quando a biblioteca não está disponível em modo console
|
|
99
|
+
*/
|
|
68
100
|
class ACBrLibNaoDisponivelEmModoConsoleError extends ACBrLibError {
|
|
69
101
|
constructor(msg) {
|
|
70
102
|
super(msg);
|
|
71
103
|
}
|
|
72
104
|
}
|
|
73
105
|
exports.ACBrLibNaoDisponivelEmModoConsoleError = ACBrLibNaoDisponivelEmModoConsoleError;
|
|
106
|
+
/**
|
|
107
|
+
* ACBrLibTimeOutError é uma classe que lança uma exceção quando o tempo de espera expira
|
|
108
|
+
*/
|
|
74
109
|
class ACBrLibTimeOutError extends ACBrLibError {
|
|
75
110
|
constructor(msg) {
|
|
76
111
|
super(msg);
|
|
77
112
|
}
|
|
78
113
|
}
|
|
79
114
|
exports.ACBrLibTimeOutError = ACBrLibTimeOutError;
|
|
115
|
+
/**
|
|
116
|
+
* ACBrLibDemoExpiradoError é uma classe que lança uma exceção quando o demo expira
|
|
117
|
+
*/
|
|
80
118
|
class ACBrLibDemoExpiradoError extends ACBrLibError {
|
|
81
119
|
constructor(msg) {
|
|
82
120
|
super(msg);
|
package/dist/src/index.d.ts
CHANGED
|
File without changes
|
package/dist/src/index.js
CHANGED
|
@@ -457,11 +457,6 @@ class ACBrLibBaseMT {
|
|
|
457
457
|
if (status === ACBrLibResultCodes_1.ACBrLibResultCodes.OK) {
|
|
458
458
|
this.isHandleInitialized = true;
|
|
459
459
|
}
|
|
460
|
-
else {
|
|
461
|
-
// por segurança, se a inicialização falhar, libera o handle
|
|
462
|
-
this.#releaseHandle();
|
|
463
|
-
this.isHandleInitialized = false;
|
|
464
|
-
}
|
|
465
460
|
this._checkResult(status);
|
|
466
461
|
return status;
|
|
467
462
|
}
|
|
@@ -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;
|