@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 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
@@ -169,7 +169,6 @@ class ACBrLibBaseMT {
169
169
  if (!this.handle) {
170
170
  return;
171
171
  }
172
- koffi.encode(this.getHandle(), 'void *', null);
173
172
  koffi.free(this.handle);
174
173
  this.handle = null;
175
174
  }
@@ -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.3",
3
+ "version": "1.0.5",
4
4
  "description": "",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",