@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 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
- constructor(size: number);
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
- constructor(size) {
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
- // Implementação do auto-cleanup com 'using' declaration
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,4 +1,7 @@
1
1
  "use strict";
2
+ /*
3
+ * @description Enum com os códigos de resultado da ACBrLib
4
+ */
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.ACBrLibResultCodes = void 0;
4
7
  var ACBrLibResultCodes;
@@ -1,43 +1,81 @@
1
+ /***
2
+ * Exceções da ACBrLib
3
+ */
1
4
  /**
2
- * ACBrLibError é uma classe de Exception para lançar Exceçoes da ACBr
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 é uma classe de Exception para lançar Exceçoes da ACBr
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);
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projetoacbr/acbrlib-base-node",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",