@seidor-cloud-produtos/tax-core 0.0.9-beta1 → 0.0.9-beta11
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/dist/{Decorators-Cw1LZ0D0.d.mts → Decorators-DhoiAspk.d.mts} +4 -4
- package/dist/{Decorators-Cw1LZ0D0.d.ts → Decorators-DhoiAspk.d.ts} +4 -4
- package/dist/{Register-B1gRC0_O.d.ts → Register-DYZa-bHZ.d.mts} +14 -6
- package/dist/{Register-B1gRC0_O.d.mts → Register-DYZa-bHZ.d.ts} +14 -6
- package/dist/ReportGenerator-DvTuQ4Xj.d.ts +59 -0
- package/dist/ReportGenerator-vfu8wCSF.d.mts +59 -0
- package/dist/index.d.mts +12 -12
- package/dist/index.d.ts +12 -12
- package/dist/index.js +37 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +34 -8
- package/dist/index.mjs.map +1 -1
- package/dist/{Block.d.mts → taxReport/Block.d.mts} +4 -4
- package/dist/{Block.d.ts → taxReport/Block.d.ts} +4 -4
- package/dist/{Block.js → taxReport/Block.js} +1 -0
- package/dist/taxReport/Block.js.map +1 -0
- package/dist/{Block.mjs → taxReport/Block.mjs} +1 -1
- package/dist/taxReport/Block.mjs.map +1 -0
- package/dist/{CounterBlock.d.mts → taxReport/CounterBlock.d.mts} +1 -1
- package/dist/{CounterBlock.d.ts → taxReport/CounterBlock.d.ts} +1 -1
- package/dist/{CounterBlock.js → taxReport/CounterBlock.js} +1 -0
- package/dist/taxReport/CounterBlock.js.map +1 -0
- package/dist/{CounterBlock.mjs → taxReport/CounterBlock.mjs} +1 -1
- package/dist/taxReport/CounterBlock.mjs.map +1 -0
- package/dist/taxReport/CounterRegister.d.mts +13 -0
- package/dist/taxReport/CounterRegister.d.ts +13 -0
- package/dist/{CounterRegister.js → taxReport/CounterRegister.js} +14 -47
- package/dist/taxReport/CounterRegister.js.map +1 -0
- package/dist/{CounterRegister.mjs → taxReport/CounterRegister.mjs} +13 -47
- package/dist/taxReport/CounterRegister.mjs.map +1 -0
- package/dist/{Decorators.d.mts → taxReport/Decorators.d.mts} +1 -1
- package/dist/{Decorators.d.ts → taxReport/Decorators.d.ts} +1 -1
- package/dist/{Decorators.js → taxReport/Decorators.js} +2 -1
- package/dist/taxReport/Decorators.js.map +1 -0
- package/dist/{Decorators.mjs → taxReport/Decorators.mjs} +1 -1
- package/dist/taxReport/Decorators.mjs.map +1 -0
- package/dist/taxReport/Register.d.mts +1 -0
- package/dist/taxReport/Register.d.ts +1 -0
- package/dist/{Register.js → taxReport/Register.js} +4 -0
- package/dist/taxReport/Register.js.map +1 -0
- package/dist/{Register.mjs → taxReport/Register.mjs} +3 -0
- package/dist/taxReport/Register.mjs.map +1 -0
- package/dist/taxReport/ReportGenerator.d.mts +7 -0
- package/dist/taxReport/ReportGenerator.d.ts +7 -0
- package/dist/{ReportGenerator.js → taxReport/ReportGenerator.js} +24 -8
- package/dist/taxReport/ReportGenerator.js.map +1 -0
- package/dist/{ReportGenerator.mjs → taxReport/ReportGenerator.mjs} +22 -8
- package/dist/taxReport/ReportGenerator.mjs.map +1 -0
- package/dist/{TagCounter.d.mts → taxReport/TagCounter.d.mts} +2 -2
- package/dist/{TagCounter.d.ts → taxReport/TagCounter.d.ts} +2 -2
- package/dist/{TagCounter.js → taxReport/TagCounter.js} +1 -0
- package/dist/taxReport/TagCounter.js.map +1 -0
- package/dist/taxReport/TagCounter.mjs.map +1 -0
- package/dist/{TaxReport.d.mts → taxReport/TaxReport.d.mts} +1 -1
- package/dist/{TaxReport.d.ts → taxReport/TaxReport.d.ts} +1 -1
- package/dist/{TaxReport.js → taxReport/TaxReport.js} +1 -0
- package/dist/taxReport/TaxReport.js.map +1 -0
- package/dist/taxReport/TaxReport.mjs.map +1 -0
- package/dist/{implementations → taxReport/implementations}/ConsoleOutput.js +1 -0
- package/dist/taxReport/implementations/ConsoleOutput.js.map +1 -0
- package/dist/taxReport/implementations/ConsoleOutput.mjs.map +1 -0
- package/dist/{implementations → taxReport/implementations}/MemoryPersist.d.mts +3 -3
- package/dist/{implementations → taxReport/implementations}/MemoryPersist.d.ts +3 -3
- package/dist/{implementations → taxReport/implementations}/MemoryPersist.js +1 -0
- package/dist/taxReport/implementations/MemoryPersist.js.map +1 -0
- package/dist/taxReport/implementations/MemoryPersist.mjs.map +1 -0
- package/dist/{implementations → taxReport/implementations}/TaxRegisterGenerator.d.mts +1 -1
- package/dist/{implementations → taxReport/implementations}/TaxRegisterGenerator.d.ts +1 -1
- package/dist/{implementations → taxReport/implementations}/TaxRegisterGenerator.js +1 -0
- package/dist/taxReport/implementations/TaxRegisterGenerator.js.map +1 -0
- package/dist/taxReport/implementations/TaxRegisterGenerator.mjs.map +1 -0
- package/dist/taxReport/interfaces/BlocksIterator.js +2 -0
- package/dist/{interfaces → taxReport/interfaces}/OutputWriter.js +1 -0
- package/dist/taxReport/interfaces/OutputWriter.js.map +1 -0
- package/dist/{interfaces → taxReport/interfaces}/RegisterEventNotifier.d.mts +1 -1
- package/dist/{interfaces → taxReport/interfaces}/RegisterEventNotifier.d.ts +1 -1
- package/dist/{interfaces → taxReport/interfaces}/RegisterEventNotifier.js +1 -0
- package/dist/taxReport/interfaces/RegisterEventNotifier.js.map +1 -0
- package/dist/taxReport/interfaces/RegisterEventNotifier.mjs.map +1 -0
- package/dist/taxReport/interfaces/RegisterGenerator.d.mts +8 -0
- package/dist/taxReport/interfaces/RegisterGenerator.d.ts +8 -0
- package/dist/{interfaces → taxReport/interfaces}/RegisterGenerator.js +1 -0
- package/dist/taxReport/interfaces/RegisterGenerator.js.map +1 -0
- package/dist/taxReport/interfaces/RegisterPersist.d.mts +13 -0
- package/dist/taxReport/interfaces/RegisterPersist.d.ts +13 -0
- package/dist/{interfaces → taxReport/interfaces}/RegisterPersist.js +1 -0
- package/dist/taxReport/interfaces/RegisterPersist.js.map +1 -0
- package/dist/taxReport/interfaces/RegisterSubscriber.d.mts +1 -0
- package/dist/taxReport/interfaces/RegisterSubscriber.d.ts +1 -0
- package/dist/{interfaces → taxReport/interfaces}/RegisterSubscriber.js +1 -0
- package/dist/taxReport/interfaces/RegisterSubscriber.js.map +1 -0
- package/package.json +9 -15
- package/dist/Block.js.map +0 -1
- package/dist/Block.mjs.map +0 -1
- package/dist/CounterBlock.js.map +0 -1
- package/dist/CounterBlock.mjs.map +0 -1
- package/dist/CounterRegister.d.mts +0 -9
- package/dist/CounterRegister.d.ts +0 -9
- package/dist/CounterRegister.js.map +0 -1
- package/dist/CounterRegister.mjs.map +0 -1
- package/dist/Decorators.js.map +0 -1
- package/dist/Decorators.mjs.map +0 -1
- package/dist/Register.d.mts +0 -1
- package/dist/Register.d.ts +0 -1
- package/dist/Register.js.map +0 -1
- package/dist/Register.mjs.map +0 -1
- package/dist/ReportGenerator.d.mts +0 -47
- package/dist/ReportGenerator.d.ts +0 -47
- package/dist/ReportGenerator.js.map +0 -1
- package/dist/ReportGenerator.mjs.map +0 -1
- package/dist/TagCounter.js.map +0 -1
- package/dist/TagCounter.mjs.map +0 -1
- package/dist/TaxReport.js.map +0 -1
- package/dist/TaxReport.mjs.map +0 -1
- package/dist/implementations/ConsoleOutput.js.map +0 -1
- package/dist/implementations/ConsoleOutput.mjs.map +0 -1
- package/dist/implementations/MemoryPersist.js.map +0 -1
- package/dist/implementations/MemoryPersist.mjs.map +0 -1
- package/dist/implementations/TaxRegisterGenerator.js.map +0 -1
- package/dist/implementations/TaxRegisterGenerator.mjs.map +0 -1
- package/dist/interfaces/BlocksIterator.js +0 -1
- package/dist/interfaces/OutputWriter.js.map +0 -1
- package/dist/interfaces/RegisterEventNotifier.js.map +0 -1
- package/dist/interfaces/RegisterEventNotifier.mjs.map +0 -1
- package/dist/interfaces/RegisterGenerator.d.mts +0 -8
- package/dist/interfaces/RegisterGenerator.d.ts +0 -8
- package/dist/interfaces/RegisterGenerator.js.map +0 -1
- package/dist/interfaces/RegisterPersist.d.mts +0 -13
- package/dist/interfaces/RegisterPersist.d.ts +0 -13
- package/dist/interfaces/RegisterPersist.js.map +0 -1
- package/dist/interfaces/RegisterSubscriber.d.mts +0 -1
- package/dist/interfaces/RegisterSubscriber.d.ts +0 -1
- package/dist/interfaces/RegisterSubscriber.js.map +0 -1
- /package/dist/{TagCounter.mjs → taxReport/TagCounter.mjs} +0 -0
- /package/dist/{TaxReport.mjs → taxReport/TaxReport.mjs} +0 -0
- /package/dist/{implementations → taxReport/implementations}/ConsoleOutput.d.mts +0 -0
- /package/dist/{implementations → taxReport/implementations}/ConsoleOutput.d.ts +0 -0
- /package/dist/{implementations → taxReport/implementations}/ConsoleOutput.mjs +0 -0
- /package/dist/{implementations → taxReport/implementations}/MemoryPersist.mjs +0 -0
- /package/dist/{implementations → taxReport/implementations}/TaxRegisterGenerator.mjs +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/BlocksIterator.d.mts +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/BlocksIterator.d.ts +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/BlocksIterator.js.map +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/BlocksIterator.mjs +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/BlocksIterator.mjs.map +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/OutputWriter.d.mts +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/OutputWriter.d.ts +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/OutputWriter.mjs +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/OutputWriter.mjs.map +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/RegisterEventNotifier.mjs +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/RegisterGenerator.mjs +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/RegisterGenerator.mjs.map +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/RegisterPersist.mjs +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/RegisterPersist.mjs.map +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/RegisterSubscriber.mjs +0 -0
- /package/dist/{interfaces → taxReport/interfaces}/RegisterSubscriber.mjs.map +0 -0
|
@@ -17,9 +17,9 @@ interface FieldFormat {
|
|
|
17
17
|
fillEntireLength: boolean;
|
|
18
18
|
valueProvider: valueProviderType;
|
|
19
19
|
}
|
|
20
|
-
declare function Numeric(required?: boolean, fillEntireLength?: boolean, maximumLength?: number): (target: any, propertyKey:
|
|
21
|
-
declare function Decimal(required?: boolean, fillEntireLength?: boolean, maximumLength?: number, maximumDecimalsLength?: number): (target: any, propertyKey:
|
|
22
|
-
declare function Alphanumeric(required?: boolean, fillEntireLength?: boolean, maximumLength?: number): (target: any, propertyKey:
|
|
20
|
+
declare function Numeric(required?: boolean, fillEntireLength?: boolean, maximumLength?: number): (target: any, propertyKey: any, other?: any) => void;
|
|
21
|
+
declare function Decimal(required?: boolean, fillEntireLength?: boolean, maximumLength?: number, maximumDecimalsLength?: number): (target: any, propertyKey: any, other?: any) => void;
|
|
22
|
+
declare function Alphanumeric(required?: boolean, fillEntireLength?: boolean, maximumLength?: number): (target: any, propertyKey: any, other?: any) => void;
|
|
23
23
|
interface KeyComposition {
|
|
24
24
|
fields: KeyFieldDefinition[];
|
|
25
25
|
}
|
|
@@ -27,7 +27,7 @@ interface KeyFieldDefinition {
|
|
|
27
27
|
fieldName: string;
|
|
28
28
|
valueProvider: valueProviderType;
|
|
29
29
|
}
|
|
30
|
-
declare function Key(): (target: any, propertyKey:
|
|
30
|
+
declare function Key(): (target: any, propertyKey: any, other?: any) => void;
|
|
31
31
|
|
|
32
32
|
declare const Decorators_Alphanumeric: typeof Alphanumeric;
|
|
33
33
|
declare const Decorators_Decimal: typeof Decimal;
|
|
@@ -17,9 +17,9 @@ interface FieldFormat {
|
|
|
17
17
|
fillEntireLength: boolean;
|
|
18
18
|
valueProvider: valueProviderType;
|
|
19
19
|
}
|
|
20
|
-
declare function Numeric(required?: boolean, fillEntireLength?: boolean, maximumLength?: number): (target: any, propertyKey:
|
|
21
|
-
declare function Decimal(required?: boolean, fillEntireLength?: boolean, maximumLength?: number, maximumDecimalsLength?: number): (target: any, propertyKey:
|
|
22
|
-
declare function Alphanumeric(required?: boolean, fillEntireLength?: boolean, maximumLength?: number): (target: any, propertyKey:
|
|
20
|
+
declare function Numeric(required?: boolean, fillEntireLength?: boolean, maximumLength?: number): (target: any, propertyKey: any, other?: any) => void;
|
|
21
|
+
declare function Decimal(required?: boolean, fillEntireLength?: boolean, maximumLength?: number, maximumDecimalsLength?: number): (target: any, propertyKey: any, other?: any) => void;
|
|
22
|
+
declare function Alphanumeric(required?: boolean, fillEntireLength?: boolean, maximumLength?: number): (target: any, propertyKey: any, other?: any) => void;
|
|
23
23
|
interface KeyComposition {
|
|
24
24
|
fields: KeyFieldDefinition[];
|
|
25
25
|
}
|
|
@@ -27,7 +27,7 @@ interface KeyFieldDefinition {
|
|
|
27
27
|
fieldName: string;
|
|
28
28
|
valueProvider: valueProviderType;
|
|
29
29
|
}
|
|
30
|
-
declare function Key(): (target: any, propertyKey:
|
|
30
|
+
declare function Key(): (target: any, propertyKey: any, other?: any) => void;
|
|
31
31
|
|
|
32
32
|
declare const Decorators_Alphanumeric: typeof Alphanumeric;
|
|
33
33
|
declare const Decorators_Decimal: typeof Decimal;
|
|
@@ -8,22 +8,30 @@ declare enum Event {
|
|
|
8
8
|
interface RegisterEventData {
|
|
9
9
|
event: Event;
|
|
10
10
|
dataTypeName: string;
|
|
11
|
-
data:
|
|
11
|
+
data: RegisterDefinition;
|
|
12
12
|
}
|
|
13
|
-
declare function newRegisterEventData(register:
|
|
13
|
+
declare function newRegisterEventData(register: RegisterDefinition): RegisterEventData;
|
|
14
14
|
interface RegisterEventNotifier {
|
|
15
15
|
addSubscriber(subscriber: RegisterSubscriber): void;
|
|
16
16
|
notifyEvent(eventData: RegisterEventData): void;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
interface RegisterDefinition {
|
|
20
|
+
[reg: string]: any;
|
|
21
|
+
tagName(): string;
|
|
22
|
+
getChildren(): RegisterDefinition[];
|
|
23
|
+
getKeyValue(): string;
|
|
24
|
+
}
|
|
25
|
+
declare abstract class Register implements RegisterDefinition {
|
|
26
|
+
[key: string]: any;
|
|
20
27
|
private _registerNotifier;
|
|
21
28
|
private readonly _children;
|
|
22
29
|
reg: string;
|
|
23
|
-
constructor(registerTag: string, notifier: RegisterEventNotifier);
|
|
30
|
+
constructor(registerTag: string, notifier: RegisterEventNotifier | null);
|
|
31
|
+
tagName(): string;
|
|
24
32
|
protected addChild(child: Register): void;
|
|
25
|
-
getChildren():
|
|
33
|
+
getChildren(): RegisterDefinition[];
|
|
26
34
|
getKeyValue(): string;
|
|
27
35
|
}
|
|
28
36
|
|
|
29
|
-
export { Event as E, Register as R, type RegisterEventNotifier as a, type RegisterSubscriber as b, type RegisterEventData as c, newRegisterEventData as n };
|
|
37
|
+
export { Event as E, Register as R, type RegisterEventNotifier as a, type RegisterSubscriber as b, type RegisterEventData as c, type RegisterDefinition as d, newRegisterEventData as n };
|
|
@@ -8,22 +8,30 @@ declare enum Event {
|
|
|
8
8
|
interface RegisterEventData {
|
|
9
9
|
event: Event;
|
|
10
10
|
dataTypeName: string;
|
|
11
|
-
data:
|
|
11
|
+
data: RegisterDefinition;
|
|
12
12
|
}
|
|
13
|
-
declare function newRegisterEventData(register:
|
|
13
|
+
declare function newRegisterEventData(register: RegisterDefinition): RegisterEventData;
|
|
14
14
|
interface RegisterEventNotifier {
|
|
15
15
|
addSubscriber(subscriber: RegisterSubscriber): void;
|
|
16
16
|
notifyEvent(eventData: RegisterEventData): void;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
interface RegisterDefinition {
|
|
20
|
+
[reg: string]: any;
|
|
21
|
+
tagName(): string;
|
|
22
|
+
getChildren(): RegisterDefinition[];
|
|
23
|
+
getKeyValue(): string;
|
|
24
|
+
}
|
|
25
|
+
declare abstract class Register implements RegisterDefinition {
|
|
26
|
+
[key: string]: any;
|
|
20
27
|
private _registerNotifier;
|
|
21
28
|
private readonly _children;
|
|
22
29
|
reg: string;
|
|
23
|
-
constructor(registerTag: string, notifier: RegisterEventNotifier);
|
|
30
|
+
constructor(registerTag: string, notifier: RegisterEventNotifier | null);
|
|
31
|
+
tagName(): string;
|
|
24
32
|
protected addChild(child: Register): void;
|
|
25
|
-
getChildren():
|
|
33
|
+
getChildren(): RegisterDefinition[];
|
|
26
34
|
getKeyValue(): string;
|
|
27
35
|
}
|
|
28
36
|
|
|
29
|
-
export { Event as E, Register as R, type RegisterEventNotifier as a, type RegisterSubscriber as b, type RegisterEventData as c, newRegisterEventData as n };
|
|
37
|
+
export { Event as E, Register as R, type RegisterEventNotifier as a, type RegisterSubscriber as b, type RegisterEventData as c, type RegisterDefinition as d, newRegisterEventData as n };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import TaxReport from './taxReport/TaxReport.js';
|
|
2
|
+
import Block from './taxReport/Block.js';
|
|
3
|
+
import { R as Register, d as RegisterDefinition } from './Register-DYZa-bHZ.js';
|
|
4
|
+
import TagCounter from './taxReport/TagCounter.js';
|
|
5
|
+
import RegisterGenerator from './taxReport/interfaces/RegisterGenerator.js';
|
|
6
|
+
|
|
7
|
+
interface ReportGenerationOptions {
|
|
8
|
+
openSuffix: string;
|
|
9
|
+
closeSuffix: string;
|
|
10
|
+
openFileRegister: Register;
|
|
11
|
+
registerGenerator: RegisterGenerator;
|
|
12
|
+
}
|
|
13
|
+
declare class CloseFile extends Register {
|
|
14
|
+
qtd_lin: number;
|
|
15
|
+
constructor();
|
|
16
|
+
}
|
|
17
|
+
declare class OpenBlock extends Register {
|
|
18
|
+
constructor(tag: string);
|
|
19
|
+
ind_mov: number;
|
|
20
|
+
}
|
|
21
|
+
declare class CloseBlock extends Register {
|
|
22
|
+
constructor(tag: string);
|
|
23
|
+
qtd_lin: number;
|
|
24
|
+
}
|
|
25
|
+
declare class ReportGenerator {
|
|
26
|
+
protected _options: ReportGenerationOptions;
|
|
27
|
+
protected _counters: TagCounter;
|
|
28
|
+
private constructor();
|
|
29
|
+
static defaultOptions(openFileRegister: Register, registerGenerator: RegisterGenerator): ReportGenerationOptions;
|
|
30
|
+
static newWithDefaultOptions(openFileRegister: Register): ReportGenerator;
|
|
31
|
+
static newWithOptions(options: ReportGenerationOptions): ReportGenerator;
|
|
32
|
+
private beforeGeneration;
|
|
33
|
+
private generation;
|
|
34
|
+
private afterGeneration;
|
|
35
|
+
protected beforeBlockGeneration(block: Block): void;
|
|
36
|
+
protected blockGeneration(block: Block): void;
|
|
37
|
+
protected beforeRegisterGeneration(register: RegisterDefinition): void;
|
|
38
|
+
protected registerGeneration(register: RegisterDefinition): void;
|
|
39
|
+
protected afterRegisterGeneration(register: RegisterDefinition): void;
|
|
40
|
+
protected afterBlockGeneration(block: Block): void;
|
|
41
|
+
private addBlock;
|
|
42
|
+
private addRegister;
|
|
43
|
+
generateFile(taxReport: TaxReport): void;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
type ReportGenerator$1_CloseBlock = CloseBlock;
|
|
47
|
+
declare const ReportGenerator$1_CloseBlock: typeof CloseBlock;
|
|
48
|
+
type ReportGenerator$1_CloseFile = CloseFile;
|
|
49
|
+
declare const ReportGenerator$1_CloseFile: typeof CloseFile;
|
|
50
|
+
type ReportGenerator$1_OpenBlock = OpenBlock;
|
|
51
|
+
declare const ReportGenerator$1_OpenBlock: typeof OpenBlock;
|
|
52
|
+
type ReportGenerator$1_ReportGenerationOptions = ReportGenerationOptions;
|
|
53
|
+
type ReportGenerator$1_ReportGenerator = ReportGenerator;
|
|
54
|
+
declare const ReportGenerator$1_ReportGenerator: typeof ReportGenerator;
|
|
55
|
+
declare namespace ReportGenerator$1 {
|
|
56
|
+
export { ReportGenerator$1_CloseBlock as CloseBlock, ReportGenerator$1_CloseFile as CloseFile, ReportGenerator$1_OpenBlock as OpenBlock, type ReportGenerator$1_ReportGenerationOptions as ReportGenerationOptions, ReportGenerator$1_ReportGenerator as ReportGenerator };
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { CloseFile as C, OpenBlock as O, ReportGenerator$1 as R, type ReportGenerationOptions as a, CloseBlock as b, ReportGenerator as c };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import TaxReport from './taxReport/TaxReport.mjs';
|
|
2
|
+
import Block from './taxReport/Block.mjs';
|
|
3
|
+
import { R as Register, d as RegisterDefinition } from './Register-DYZa-bHZ.mjs';
|
|
4
|
+
import TagCounter from './taxReport/TagCounter.mjs';
|
|
5
|
+
import RegisterGenerator from './taxReport/interfaces/RegisterGenerator.mjs';
|
|
6
|
+
|
|
7
|
+
interface ReportGenerationOptions {
|
|
8
|
+
openSuffix: string;
|
|
9
|
+
closeSuffix: string;
|
|
10
|
+
openFileRegister: Register;
|
|
11
|
+
registerGenerator: RegisterGenerator;
|
|
12
|
+
}
|
|
13
|
+
declare class CloseFile extends Register {
|
|
14
|
+
qtd_lin: number;
|
|
15
|
+
constructor();
|
|
16
|
+
}
|
|
17
|
+
declare class OpenBlock extends Register {
|
|
18
|
+
constructor(tag: string);
|
|
19
|
+
ind_mov: number;
|
|
20
|
+
}
|
|
21
|
+
declare class CloseBlock extends Register {
|
|
22
|
+
constructor(tag: string);
|
|
23
|
+
qtd_lin: number;
|
|
24
|
+
}
|
|
25
|
+
declare class ReportGenerator {
|
|
26
|
+
protected _options: ReportGenerationOptions;
|
|
27
|
+
protected _counters: TagCounter;
|
|
28
|
+
private constructor();
|
|
29
|
+
static defaultOptions(openFileRegister: Register, registerGenerator: RegisterGenerator): ReportGenerationOptions;
|
|
30
|
+
static newWithDefaultOptions(openFileRegister: Register): ReportGenerator;
|
|
31
|
+
static newWithOptions(options: ReportGenerationOptions): ReportGenerator;
|
|
32
|
+
private beforeGeneration;
|
|
33
|
+
private generation;
|
|
34
|
+
private afterGeneration;
|
|
35
|
+
protected beforeBlockGeneration(block: Block): void;
|
|
36
|
+
protected blockGeneration(block: Block): void;
|
|
37
|
+
protected beforeRegisterGeneration(register: RegisterDefinition): void;
|
|
38
|
+
protected registerGeneration(register: RegisterDefinition): void;
|
|
39
|
+
protected afterRegisterGeneration(register: RegisterDefinition): void;
|
|
40
|
+
protected afterBlockGeneration(block: Block): void;
|
|
41
|
+
private addBlock;
|
|
42
|
+
private addRegister;
|
|
43
|
+
generateFile(taxReport: TaxReport): void;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
type ReportGenerator$1_CloseBlock = CloseBlock;
|
|
47
|
+
declare const ReportGenerator$1_CloseBlock: typeof CloseBlock;
|
|
48
|
+
type ReportGenerator$1_CloseFile = CloseFile;
|
|
49
|
+
declare const ReportGenerator$1_CloseFile: typeof CloseFile;
|
|
50
|
+
type ReportGenerator$1_OpenBlock = OpenBlock;
|
|
51
|
+
declare const ReportGenerator$1_OpenBlock: typeof OpenBlock;
|
|
52
|
+
type ReportGenerator$1_ReportGenerationOptions = ReportGenerationOptions;
|
|
53
|
+
type ReportGenerator$1_ReportGenerator = ReportGenerator;
|
|
54
|
+
declare const ReportGenerator$1_ReportGenerator: typeof ReportGenerator;
|
|
55
|
+
declare namespace ReportGenerator$1 {
|
|
56
|
+
export { ReportGenerator$1_CloseBlock as CloseBlock, ReportGenerator$1_CloseFile as CloseFile, ReportGenerator$1_OpenBlock as OpenBlock, type ReportGenerator$1_ReportGenerationOptions as ReportGenerationOptions, ReportGenerator$1_ReportGenerator as ReportGenerator };
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { CloseFile as C, OpenBlock as O, ReportGenerator$1 as R, type ReportGenerationOptions as a, CloseBlock as b, ReportGenerator as c };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { default as Block } from './Block.mjs';
|
|
2
|
-
export { D as Decorators } from './Decorators-
|
|
3
|
-
export { R as Register, a as RegisterEventNotifier, b as RegisterSubscriber } from './Register-
|
|
4
|
-
export {
|
|
5
|
-
export { default as TaxReport } from './TaxReport.mjs';
|
|
6
|
-
export { default as ConsoleOutput } from './implementations/ConsoleOutput.mjs';
|
|
7
|
-
export { default as MemoryPersist } from './implementations/MemoryPersist.mjs';
|
|
8
|
-
export { default as TaxRegisterGenerator } from './implementations/TaxRegisterGenerator.mjs';
|
|
9
|
-
export { OutputWriter } from './interfaces/OutputWriter.mjs';
|
|
10
|
-
export { default as RegisterGenerator } from './interfaces/RegisterGenerator.mjs';
|
|
11
|
-
export { default as RegisterPersist } from './interfaces/RegisterPersist.mjs';
|
|
12
|
-
import './TagCounter.mjs';
|
|
1
|
+
export { default as Block } from './taxReport/Block.mjs';
|
|
2
|
+
export { D as Decorators } from './Decorators-DhoiAspk.mjs';
|
|
3
|
+
export { R as Register, a as RegisterEventNotifier, b as RegisterSubscriber } from './Register-DYZa-bHZ.mjs';
|
|
4
|
+
export { R as Generation } from './ReportGenerator-vfu8wCSF.mjs';
|
|
5
|
+
export { default as TaxReport } from './taxReport/TaxReport.mjs';
|
|
6
|
+
export { default as ConsoleOutput } from './taxReport/implementations/ConsoleOutput.mjs';
|
|
7
|
+
export { default as MemoryPersist } from './taxReport/implementations/MemoryPersist.mjs';
|
|
8
|
+
export { default as TaxRegisterGenerator } from './taxReport/implementations/TaxRegisterGenerator.mjs';
|
|
9
|
+
export { OutputWriter } from './taxReport/interfaces/OutputWriter.mjs';
|
|
10
|
+
export { default as RegisterGenerator } from './taxReport/interfaces/RegisterGenerator.mjs';
|
|
11
|
+
export { default as RegisterPersist } from './taxReport/interfaces/RegisterPersist.mjs';
|
|
12
|
+
import './taxReport/TagCounter.mjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { default as Block } from './Block.js';
|
|
2
|
-
export { D as Decorators } from './Decorators-
|
|
3
|
-
export { R as Register, a as RegisterEventNotifier, b as RegisterSubscriber } from './Register-
|
|
4
|
-
export {
|
|
5
|
-
export { default as TaxReport } from './TaxReport.js';
|
|
6
|
-
export { default as ConsoleOutput } from './implementations/ConsoleOutput.js';
|
|
7
|
-
export { default as MemoryPersist } from './implementations/MemoryPersist.js';
|
|
8
|
-
export { default as TaxRegisterGenerator } from './implementations/TaxRegisterGenerator.js';
|
|
9
|
-
export { OutputWriter } from './interfaces/OutputWriter.js';
|
|
10
|
-
export { default as RegisterGenerator } from './interfaces/RegisterGenerator.js';
|
|
11
|
-
export { default as RegisterPersist } from './interfaces/RegisterPersist.js';
|
|
12
|
-
import './TagCounter.js';
|
|
1
|
+
export { default as Block } from './taxReport/Block.js';
|
|
2
|
+
export { D as Decorators } from './Decorators-DhoiAspk.js';
|
|
3
|
+
export { R as Register, a as RegisterEventNotifier, b as RegisterSubscriber } from './Register-DYZa-bHZ.js';
|
|
4
|
+
export { R as Generation } from './ReportGenerator-DvTuQ4Xj.js';
|
|
5
|
+
export { default as TaxReport } from './taxReport/TaxReport.js';
|
|
6
|
+
export { default as ConsoleOutput } from './taxReport/implementations/ConsoleOutput.js';
|
|
7
|
+
export { default as MemoryPersist } from './taxReport/implementations/MemoryPersist.js';
|
|
8
|
+
export { default as TaxRegisterGenerator } from './taxReport/implementations/TaxRegisterGenerator.js';
|
|
9
|
+
export { OutputWriter } from './taxReport/interfaces/OutputWriter.js';
|
|
10
|
+
export { default as RegisterGenerator } from './taxReport/interfaces/RegisterGenerator.js';
|
|
11
|
+
export { default as RegisterPersist } from './taxReport/interfaces/RegisterPersist.js';
|
|
12
|
+
import './taxReport/TagCounter.js';
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
2
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
@@ -26,19 +27,20 @@ var __decorateClass = (decorators, target, key2, kind) => {
|
|
|
26
27
|
};
|
|
27
28
|
var __publicField = (obj, key2, value) => __defNormalProp(obj, typeof key2 !== "symbol" ? key2 + "" : key2, value);
|
|
28
29
|
|
|
29
|
-
// lib/
|
|
30
|
-
var
|
|
31
|
-
__export(
|
|
30
|
+
// lib/index.ts
|
|
31
|
+
var lib_exports = {};
|
|
32
|
+
__export(lib_exports, {
|
|
32
33
|
Block: () => Block,
|
|
33
34
|
ConsoleOutput: () => ConsoleOutput,
|
|
34
35
|
Decorators: () => Decorators_exports,
|
|
36
|
+
Generation: () => ReportGenerator_exports,
|
|
35
37
|
MemoryPersist: () => MemoryPersist,
|
|
36
38
|
Register: () => Register,
|
|
37
|
-
ReportGenerator: () => ReportGenerator,
|
|
38
39
|
TaxRegisterGenerator: () => TaxRegisterGenerator,
|
|
39
40
|
TaxReport: () => TaxReport
|
|
40
41
|
});
|
|
41
|
-
module.exports = __toCommonJS(
|
|
42
|
+
module.exports = __toCommonJS(lib_exports);
|
|
43
|
+
var import_reflect_metadata2 = require("reflect-metadata");
|
|
42
44
|
|
|
43
45
|
// lib/taxReport/Block.ts
|
|
44
46
|
var import_node_events = require("events");
|
|
@@ -142,7 +144,7 @@ function alphanumericField(required, maximumLength, valueProvider, fillEntireLen
|
|
|
142
144
|
function Numeric(required = false, fillEntireLength = false, maximumLength = maximumNumericLength) {
|
|
143
145
|
return function(target, propertyKey, other) {
|
|
144
146
|
Reflect.defineMetadata(
|
|
145
|
-
propertyKey,
|
|
147
|
+
propertyKey.toString(),
|
|
146
148
|
numericField(
|
|
147
149
|
required,
|
|
148
150
|
maximumLength,
|
|
@@ -220,6 +222,9 @@ var Register = class {
|
|
|
220
222
|
this.reg = registerTag;
|
|
221
223
|
this._registerNotifier = notifier;
|
|
222
224
|
}
|
|
225
|
+
tagName() {
|
|
226
|
+
return this.reg;
|
|
227
|
+
}
|
|
223
228
|
addChild(child) {
|
|
224
229
|
this._children.push(child);
|
|
225
230
|
this._registerNotifier.notifyEvent(newRegisterEventData(child));
|
|
@@ -243,6 +248,15 @@ __decorateClass([
|
|
|
243
248
|
Key()
|
|
244
249
|
], Register.prototype, "reg", 2);
|
|
245
250
|
|
|
251
|
+
// lib/taxReport/ReportGenerator.ts
|
|
252
|
+
var ReportGenerator_exports = {};
|
|
253
|
+
__export(ReportGenerator_exports, {
|
|
254
|
+
CloseBlock: () => CloseBlock,
|
|
255
|
+
CloseFile: () => CloseFile,
|
|
256
|
+
OpenBlock: () => OpenBlock,
|
|
257
|
+
ReportGenerator: () => ReportGenerator
|
|
258
|
+
});
|
|
259
|
+
|
|
246
260
|
// lib/taxReport/TagCounter.ts
|
|
247
261
|
var TagCounter = class {
|
|
248
262
|
constructor() {
|
|
@@ -342,11 +356,22 @@ var MemoryPersist = class _MemoryPersist {
|
|
|
342
356
|
};
|
|
343
357
|
|
|
344
358
|
// lib/taxReport/CounterRegister.ts
|
|
345
|
-
var CounterRegister = class
|
|
359
|
+
var CounterRegister = class {
|
|
346
360
|
constructor(qtd_reg_blc = 0, register = "9900") {
|
|
347
|
-
|
|
361
|
+
__publicField(this, "reg");
|
|
348
362
|
__publicField(this, "reg_blc", "");
|
|
349
363
|
__publicField(this, "qtd_reg_blc", 0);
|
|
364
|
+
this.reg = register;
|
|
365
|
+
this.qtd_reg_blc = qtd_reg_blc;
|
|
366
|
+
}
|
|
367
|
+
tagName() {
|
|
368
|
+
return this.reg;
|
|
369
|
+
}
|
|
370
|
+
getChildren() {
|
|
371
|
+
throw new Error("Method not implemented.");
|
|
372
|
+
}
|
|
373
|
+
getKeyValue() {
|
|
374
|
+
throw new Error("Method not implemented.");
|
|
350
375
|
}
|
|
351
376
|
};
|
|
352
377
|
__decorateClass([
|
|
@@ -455,7 +480,7 @@ var openSuffix = "001";
|
|
|
455
480
|
var closeSuffix = "990";
|
|
456
481
|
var CloseFile = class extends Register {
|
|
457
482
|
constructor() {
|
|
458
|
-
super(tagCloseFileRegister,
|
|
483
|
+
super(tagCloseFileRegister, {});
|
|
459
484
|
__publicField(this, "qtd_lin", 0);
|
|
460
485
|
}
|
|
461
486
|
};
|
|
@@ -464,7 +489,7 @@ __decorateClass([
|
|
|
464
489
|
], CloseFile.prototype, "qtd_lin", 2);
|
|
465
490
|
var OpenBlock = class extends Register {
|
|
466
491
|
constructor(tag) {
|
|
467
|
-
super(tag,
|
|
492
|
+
super(tag, {});
|
|
468
493
|
__publicField(this, "ind_mov", 1 /* hasNoContent */);
|
|
469
494
|
}
|
|
470
495
|
};
|
|
@@ -473,7 +498,7 @@ __decorateClass([
|
|
|
473
498
|
], OpenBlock.prototype, "ind_mov", 2);
|
|
474
499
|
var CloseBlock = class extends Register {
|
|
475
500
|
constructor(tag) {
|
|
476
|
-
super(tag,
|
|
501
|
+
super(tag, {});
|
|
477
502
|
__publicField(this, "qtd_lin", 0);
|
|
478
503
|
}
|
|
479
504
|
};
|
|
@@ -597,9 +622,9 @@ var TaxReport = class {
|
|
|
597
622
|
Block,
|
|
598
623
|
ConsoleOutput,
|
|
599
624
|
Decorators,
|
|
625
|
+
Generation,
|
|
600
626
|
MemoryPersist,
|
|
601
627
|
Register,
|
|
602
|
-
ReportGenerator,
|
|
603
628
|
TaxRegisterGenerator,
|
|
604
629
|
TaxReport
|
|
605
630
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/taxReport/index.ts","../lib/taxReport/Block.ts","../lib/taxReport/interfaces/RegisterEventNotifier.ts","../lib/taxReport/Decorators.ts","../lib/taxReport/Register.ts","../lib/taxReport/TagCounter.ts","../lib/taxReport/CounterBlock.ts","../lib/taxReport/implementations/MemoryPersist.ts","../lib/taxReport/CounterRegister.ts","../lib/taxReport/implementations/ConsoleOutput.ts","../lib/taxReport/implementations/TaxRegisterGenerator.ts","../lib/taxReport/ReportGenerator.ts","../lib/taxReport/TaxReport.ts"],"sourcesContent":["import Block from \"./Block\";\nimport * as Decorators from \"./Decorators\";\nimport { Register } from \"./Register\";\nimport ReportGenerator from \"./ReportGenerator\";\nimport TaxReport from \"./TaxReport\";\nimport ConsoleOutput from \"./implementations/ConsoleOutput\";\nimport MemoryPersist from \"./implementations/MemoryPersist\";\nimport TaxRegisterGenerator from \"./implementations/TaxRegisterGenerator\";\nimport { OutputWriter } from \"./interfaces/OutputWriter\";\nimport RegisterEventNotifier from \"./interfaces/RegisterEventNotifier\";\nimport RegisterGenerator from \"./interfaces/RegisterGenerator\";\nimport RegisterPersist from \"./interfaces/RegisterPersist\";\nimport RegisterSubscriber from \"./interfaces/RegisterSubscriber\";\n\nexport {\n Block,\n Decorators,\n Register,\n ReportGenerator,\n TaxReport,\n ConsoleOutput,\n MemoryPersist,\n TaxRegisterGenerator,\n OutputWriter,\n RegisterEventNotifier,\n RegisterGenerator,\n RegisterPersist,\n RegisterSubscriber,\n};\n","import { EventEmitter } from \"node:events\";\nimport RegisterPersist from \"./interfaces/RegisterPersist\";\nimport { Register } from \"./Register\";\nimport RegisterSubscriber from \"./interfaces/RegisterSubscriber\";\nimport RegisterEventNotifier, {\n Event,\n newRegisterEventData,\n RegisterEventData,\n} from \"./interfaces/RegisterEventNotifier\";\n\nexport default abstract class Block\n implements RegisterEventNotifier, RegisterSubscriber\n{\n private readonly _name: string;\n private eventEmitter: EventEmitter;\n protected registersPersist: RegisterPersist;\n\n protected constructor(name: string, regPersist: RegisterPersist) {\n this._name = name;\n this.eventEmitter = new EventEmitter();\n this.registersPersist = regPersist;\n }\n\n abstract eventHandler(eventData: RegisterEventData): void;\n\n public notifyEvent(eventData: RegisterEventData): void {\n this.eventEmitter.emit(eventData.event, eventData);\n }\n\n get name() {\n return this._name;\n }\n\n get registers() {\n const sortApproach = (a: Register, b: Register) =>\n a.reg.localeCompare(b.reg);\n return this.registersPersist.all().sort(sortApproach);\n }\n\n public addSubscriber(subscriber: RegisterSubscriber) {\n this.eventEmitter.on(Event.REGISTER_CREATED, function (data) {\n return subscriber.eventHandler.call(subscriber, data);\n });\n }\n\n public addRegister<T extends Register>(register: T) {\n this.registersPersist.add(register);\n this.notifyEvent(newRegisterEventData(register));\n }\n\n public hasContent(): boolean {\n return this.registersPersist.hasRegisters();\n }\n\n public getRegisterByKey(registerKey: string): Register {\n return this.registersPersist.getByKey(registerKey);\n }\n}\n","import {Register} from \"../Register\";\r\nimport RegisterSubscriber from \"./RegisterSubscriber\";\r\n\r\nexport enum Event {\r\n REGISTER_CREATED = \"register_created\",\r\n}\r\n\r\nexport interface RegisterEventData {\r\n event: Event\r\n dataTypeName: string\r\n data: Register\r\n}\r\n\r\nfunction newRegisterEvent(event: Event, register: Register): RegisterEventData {\r\n return {\r\n event: event,\r\n dataTypeName: register.constructor.name,\r\n data: register\r\n }\r\n}\r\n\r\nexport function newRegisterEventData(register: Register): RegisterEventData {\r\n return newRegisterEvent(Event.REGISTER_CREATED, register)\r\n}\r\n\r\n\r\nexport default interface RegisterEventNotifier {\r\n addSubscriber(subscriber: RegisterSubscriber):void\r\n notifyEvent(eventData: RegisterEventData): void\r\n}\r\n","import \"reflect-metadata\";\n\nexport const keyCompositionMetadata = Symbol(\"key\");\n\nexport const maximumNumericLength = 19;\nexport const defaultAlphanumericLength = 255;\n\nexport enum FieldDataType {\n alphanumeric,\n numeric,\n}\n\nexport enum valueProviderType {\n property,\n method,\n}\n\nexport interface FieldFormat {\n required: boolean;\n dataType: FieldDataType;\n maximumLength: number;\n maximumDecimalsLength: number;\n fillEntireLength: boolean;\n valueProvider: valueProviderType;\n}\n\nfunction numericField(\n required: boolean,\n maximumLength: number,\n valueProvider: valueProviderType,\n fillEntireLength: boolean = false,\n maximumDecimalsLength: number = 0,\n): FieldFormat {\n return {\n required: required,\n dataType: FieldDataType.numeric,\n maximumLength: maximumLength,\n maximumDecimalsLength: maximumDecimalsLength,\n fillEntireLength: fillEntireLength,\n valueProvider: valueProvider,\n } as FieldFormat;\n}\n\nfunction alphanumericField(\n required: boolean,\n maximumLength: number,\n valueProvider: valueProviderType,\n fillEntireLength: boolean = false,\n maximumDecimalsLength: number = 0,\n): FieldFormat {\n return {\n required: required,\n dataType: FieldDataType.alphanumeric,\n maximumLength: maximumLength,\n maximumDecimalsLength: maximumDecimalsLength,\n fillEntireLength: fillEntireLength,\n valueProvider: valueProvider,\n } as FieldFormat;\n}\n\nexport function Numeric(\n required: boolean = false,\n fillEntireLength: boolean = false,\n maximumLength: number = maximumNumericLength,\n) {\n return function (target: any, propertyKey: string, other?: any) {\n Reflect.defineMetadata(\n propertyKey,\n numericField(\n required,\n maximumLength,\n other ? valueProviderType.method : valueProviderType.property,\n fillEntireLength,\n ),\n target,\n );\n };\n}\n\n//export function Numeric(\n// required: boolean = false,\n// fillEntireLength: boolean = false,\n// maximumLength: number = maximumNumericLength,\n//): PropertyDecorator | MethodDecorator {\n// return function (target: any, propertyKey: string, other: any) {\n// Reflect.defineMetadata(\n// propertyKey,\n// numericField(\n// required,\n// maximumLength,\n// other ? valueProviderType.method : valueProviderType.property,\n// fillEntireLength,\n// ),\n// target,\n// );\n// };\n//}\n\nexport function Decimal(\n required: boolean = false,\n fillEntireLength: boolean = false,\n maximumLength: number = maximumNumericLength,\n maximumDecimalsLength: number = 2,\n) {\n return function (target: any, propertyKey: string, other?: any) {\n Reflect.defineMetadata(\n propertyKey,\n numericField(\n required,\n maximumLength,\n other ? valueProviderType.method : valueProviderType.property,\n fillEntireLength,\n maximumDecimalsLength,\n ),\n target,\n );\n };\n}\n\n//export function Decimal(\n// required: boolean = false,\n// fillEntireLength: boolean = false,\n// maximumLength: number = maximumNumericLength,\n// maximumDecimalsLength: number = 2,\n//): PropertyDecorator | MethodDecorator {\n// return function (target: any, propertyKey: string, other: any) {\n// Reflect.defineMetadata(\n// propertyKey,\n// numericField(\n// required,\n// maximumLength,\n// other ? valueProviderType.method : valueProviderType.property,\n// fillEntireLength,\n// maximumDecimalsLength,\n// ),\n// target,\n// );\n// };\n//}\n\nexport function Alphanumeric(\n required: boolean = false,\n fillEntireLength: boolean = false,\n maximumLength: number = defaultAlphanumericLength\n ) {\n return function (target: any, propertyKey: string, other?: any) {\n Reflect.defineMetadata(\n propertyKey,\n alphanumericField(\n required,\n maximumLength,\n other ? valueProviderType.method : valueProviderType.property,\n fillEntireLength,\n ),\n target,\n );\n };\n}\n\n//export function Alphanumeric(\n// required: boolean = false,\n// fillEntireLength: boolean = false,\n// maximumLength: number = defaultAlphanumericLength,\n//): PropertyDecorator | MethodDecorator {\n// return function (target: any, propertyKey: string, other: any) {\n// Reflect.defineMetadata(\n// propertyKey,\n// alphanumericField(\n// required,\n// maximumLength,\n// other ? valueProviderType.method : valueProviderType.property,\n// fillEntireLength,\n// ),\n// target,\n// );\n// };\n//}\n\nexport interface KeyComposition {\n fields: KeyFieldDefinition[];\n}\n\nexport interface KeyFieldDefinition {\n fieldName: string;\n valueProvider: valueProviderType;\n}\n\nfunction key() {\n return {\n fields: [],\n } as KeyComposition;\n}\n\nfunction keyFieldDefinition(\n fieldName: string,\n valueProvider: valueProviderType,\n) {\n return {\n fieldName: fieldName,\n valueProvider: valueProvider,\n } as KeyFieldDefinition;\n}\n\nexport function Key() {\n return function (target: any, propertyKey: string, other?: any): void {\n let keyComposition: KeyComposition;\n keyComposition = Reflect.getMetadata(keyCompositionMetadata, target);\n if (!keyComposition) {\n keyComposition = key();\n }\n keyComposition.fields.push(\n keyFieldDefinition(\n propertyKey,\n other ? valueProviderType.method : valueProviderType.property,\n ),\n );\n Reflect.defineMetadata(keyCompositionMetadata, keyComposition, target);\n };\n}\n\n//export function Key(): PropertyDecorator | MethodDecorator {\n// return function (target: any, propertyKey: string, other?: any): void {\n// let keyComposition: KeyComposition;\n// keyComposition = Reflect.getMetadata(keyCompositionMetadata, target);\n// if (!keyComposition) {\n// keyComposition = key();\n// }\n// keyComposition.fields.push(\n// keyFieldDefinition(\n// propertyKey,\n// other ? valueProviderType.method : valueProviderType.property,\n// ),\n// );\n// Reflect.defineMetadata(keyCompositionMetadata, keyComposition, target);\n// };\n//}\n\n//export {Numeric, Decimal, Alphanumeric, Key}","import { Key, KeyComposition, keyCompositionMetadata } from \"./Decorators\";\nimport RegisterEventNotifier, {\n newRegisterEventData,\n} from \"./interfaces/RegisterEventNotifier\";\n\nexport abstract class Register {\n private _registerNotifier: RegisterEventNotifier;\n private readonly _children: Register[];\n\n // @ts-ignore\n @Key()\n reg: string = \"\";\n constructor(registerTag: string, notifier: RegisterEventNotifier) {\n this._children = [];\n this.reg = registerTag;\n this._registerNotifier = notifier;\n }\n\n protected addChild(child: Register) {\n this._children.push(child);\n this._registerNotifier!!.notifyEvent(newRegisterEventData(child));\n }\n\n public getChildren(): Register[] {\n return this._children;\n }\n\n public getKeyValue(): string {\n const keyComposition: KeyComposition = Reflect.getMetadata(\n keyCompositionMetadata,\n this,\n );\n let result = \"\";\n for (const keyFieldData of keyComposition.fields) {\n result = result.concat(this[keyFieldData.fieldName]);\n }\n return result;\n }\n}\n","import {Register} from \"./Register\";\n\nexport default class TagCounter {\n private _blocksCounters: Map<string, Map<string, number>>;\n\n public constructor() {\n this._blocksCounters = new Map<string, Map<string, number>>();\n }\n\n public countRegister(register: Register) {\n const blockLetter = register.reg[0];\n\n let counters: Map<string, number>;\n counters = !this._blocksCounters.has(blockLetter) ? new Map<string, number>() : this._blocksCounters.get(blockLetter)!\n !counters.has(register.reg) ? counters.set(register.reg, 1) : counters.set(register.reg, (counters.get(register.reg)! + 1))\n this._blocksCounters.set(blockLetter, counters);\n }\n\n public getBlockRegistersTotal(blockLetter: string): number {\n let blockRegistersTotal = 0;\n const blocksCounter = this._blocksCounters.get(blockLetter);\n if (!blocksCounter) {\n return blockRegistersTotal;\n }\n for (const value of blocksCounter.values()) {\n blockRegistersTotal += value\n }\n return blockRegistersTotal\n }\n\n public getAllTagsCounters(): Map<string, number> {\n const all = new Map<string, number>();\n\n const blocksKeys = Array.from(this._blocksCounters.keys()).sort((a, b) => a.localeCompare(b));\n blocksKeys.forEach((blockKey) => {\n const block = this._blocksCounters.get(blockKey)!\n const registerKeys = Array.from(block.keys()).sort((a, b) => a.localeCompare(b));\n registerKeys.forEach((tag) => {\n all.set(tag, block.get(tag)!)\n })\n })\n\n return all;\n }\n}\n","import Block from \"./Block\";\nimport RegisterPersist from \"./interfaces/RegisterPersist\";\nimport {RegisterEventData} from \"./interfaces/RegisterEventNotifier\";\n\nexport default class CounterBlock extends Block {\n\n constructor(regPersist: RegisterPersist, name: string = \"9\") {\n super(name, regPersist);\n }\n\n eventHandler(eventData: RegisterEventData) {\n // throw new Error(\"Method not implemented.\");\n }\n}\n","import { Register } from \"../Register\";\nimport RegisterPersist from \"../interfaces/RegisterPersist\";\n\nexport default class MemoryPersist implements RegisterPersist {\n private registers: Map<string, Array<Register>>;\n private registersByKey: Map<string, Register>;\n\n public static createInstance(): MemoryPersist {\n return new MemoryPersist();\n }\n\n private constructor() {\n this.registers = new Map<string, Array<Register>>();\n this.registersByKey = new Map<string, Register>();\n }\n\n getByKey(registerKey: string): Register {\n return this.registersByKey.get(registerKey);\n }\n\n set(regTag: string, registers: Register[]): void {\n this.registers.set(regTag, registers);\n for (const reg of registers) {\n this.addRegisterKey(reg);\n }\n }\n private addRegisterKey(reg: Register) {\n if (this.registersByKey.has(reg.getKeyValue())) {\n throw new Error(`duplicate register key: ${reg.getKeyValue()}`);\n }\n this.registersByKey.set(reg.getKeyValue(), reg);\n }\n\n hasRegisters(): boolean {\n return this.registers.size !== 0;\n }\n\n all(): Register[] {\n //TODO: Check the expected order of registers\n //TODO: Check the performance + memory use of this implementation\n let localRegisters: Register[] = new Array<Register>();\n for (const [_regTag, values] of this.registers) {\n localRegisters = [...localRegisters, ...values];\n }\n return localRegisters;\n }\n\n get(regTag: string) {\n return this.registers.get(regTag);\n }\n\n has(regTag: string): boolean {\n return this.registers.has(regTag);\n }\n\n add(register: Register): void {\n if (!this.registers.has(register.reg)) {\n this.registers.set(register.reg, []);\n }\n this.registers.get(register.reg)?.push(register);\n this.addRegisterKey(register);\n }\n}\n","import { Register } from \"./Register\";\nimport { Alphanumeric, Key, Numeric } from \"./Decorators\";\n\nexport default class CounterRegister extends Register {\n\n // @ts-ignore\n @Key()\n // @ts-ignore\n @Alphanumeric()\n reg_blc: string = \"\";\n\n // @ts-ignore\n @Numeric()\n qtd_reg_blc: number = 0;\n\n constructor(qtd_reg_blc: number = 0, register: string = \"9900\") {\n super(register, null);\n }\n}\n","import { OutputWriter } from \"../interfaces/OutputWriter\";\n\nexport default class ConsoleOutput implements OutputWriter {\n private constructor() {}\n\n static createInstance(): ConsoleOutput {\n return new ConsoleOutput();\n }\n\n write(content: string): void {\n console.log(content);\n }\n save(): void {\n console.log(\"Saving content\");\n }\n}\n","import { Register } from \"../Register\";\nimport RegisterGenerator from \"../interfaces/RegisterGenerator\";\nimport ConsoleOutput from \"./ConsoleOutput\";\nimport { OutputWriter } from \"../interfaces/OutputWriter\";\nimport { FieldDataType, FieldFormat } from \"../Decorators\";\n\nexport interface ReportGenerationOptions {\n writer: OutputWriter;\n fieldSeparator: string;\n separatorAtTheRegisterStart: boolean;\n separatorAtTheRegisterEnd: boolean;\n}\n\nexport default class TaxRegisterGenerator implements RegisterGenerator {\n protected _options: ReportGenerationOptions;\n\n private constructor(options: ReportGenerationOptions) {\n this._options = options;\n }\n save(): void {\n this._options.writer.save();\n }\n\n static defaultOptions(\n writer: OutputWriter = ConsoleOutput.createInstance(),\n ): ReportGenerationOptions {\n return {\n writer: writer,\n fieldSeparator: \"|\",\n separatorAtTheRegisterStart: false,\n separatorAtTheRegisterEnd: false,\n } as ReportGenerationOptions;\n }\n\n static newWithDefaultOptions(): TaxRegisterGenerator {\n return this.newWithOptions(this.defaultOptions());\n }\n\n static newWithOptions(\n options: ReportGenerationOptions,\n ): TaxRegisterGenerator {\n return new TaxRegisterGenerator(options);\n }\n\n get writer(): OutputWriter {\n return this._options.writer;\n }\n\n generate(register: Register): void {\n let registerStr = `${this._options.separatorAtTheRegisterStart ? this._options.fieldSeparator : \"\"}${register.reg}${this._options.fieldSeparator}`;\n const metadataKeys = Reflect.getMetadataKeys(register);\n for(let i = 0; i < metadataKeys.length; i++) {\n const metadataKey = metadataKeys[i]\n const metadata: FieldFormat = Reflect.getMetadata(metadataKey, register);\n\n switch (metadata.dataType) {\n case FieldDataType.alphanumeric:\n // @ts-ignore\n registerStr = registerStr.concat(\n this.alphanumericValue(metadata, register[metadataKey]),\n i != metadataKeys.length - 1 ?\n this._options.fieldSeparator :\n \"\",\n );\n break;\n case FieldDataType.numeric:\n // @ts-ignore\n registerStr = registerStr.concat(\n this.numericValue(metadata, register[metadataKey]),\n i != metadataKeys.length - 1 ?\n this._options.fieldSeparator :\n \"\",\n );\n break;\n }\n }\n if (this._options.separatorAtTheRegisterEnd) {\n registerStr = registerStr.concat(this._options.fieldSeparator);\n }\n\n this.writer.write(registerStr);\n }\n\n private alphanumericValue(metadata: FieldFormat, value: any): string {\n if (!value && typeof value != \"number\") {\n return \"\";\n }\n let result: string = String(value);\n if (metadata.fillEntireLength) {\n result = result\n .padEnd(metadata.maximumLength, \" \")\n .slice(0, metadata.maximumLength);\n }\n return result;\n }\n\n private numericValue(metadata: FieldFormat, value: any): string {\n let result: string = \"\",\n decimalPart: string;\n\n [result, decimalPart] = value ? String(value).split(\".\") : \"0\";\n\n if (metadata.maximumDecimalsLength > 0) {\n if (decimalPart) {\n decimalPart = decimalPart\n .slice(0, metadata.maximumDecimalsLength)\n .padEnd(metadata.maximumDecimalsLength, \"0\");\n } else {\n decimalPart = \"\".padEnd(metadata.maximumDecimalsLength, \"0\");\n }\n result = result.concat(\",\", decimalPart);\n }\n\n return result;\n }\n}\n","import TaxReport from \"./TaxReport\";\nimport Block from \"./Block\";\nimport { Register } from \"./Register\";\nimport { Alphanumeric, Numeric } from \"./Decorators\";\nimport TagCounter from \"./TagCounter\";\nimport CounterBlock from \"./CounterBlock\";\nimport MemoryPersist from \"./implementations/MemoryPersist\";\nimport CounterRegister from \"./CounterRegister\";\nimport RegisterGenerator from \"./interfaces/RegisterGenerator\";\nimport TaxRegisterGenerator from \"./implementations/TaxRegisterGenerator\";\n\nconst tagCloseFileRegister = \"9999\";\nconst openSuffix = \"001\";\nconst closeSuffix = \"990\";\n\nexport interface ReportGenerationOptions {\n openSuffix: string;\n closeSuffix: string;\n openFileRegister: Register;\n registerGenerator: RegisterGenerator;\n}\n\nenum IndicatorBlockContent {\n hasContent = 0,\n hasNoContent = 1,\n}\n\nexport class CloseFile extends Register {\n // @ts-ignore\n @Numeric()\n qtd_lin: number = 0;\n\n constructor() {\n super(tagCloseFileRegister, null);\n }\n}\n\nexport class OpenBlock extends Register {\n constructor(tag: string) {\n super(tag, null);\n }\n // @ts-ignore\n @Alphanumeric(1)\n ind_mov: number = IndicatorBlockContent.hasNoContent;\n}\n\nexport class CloseBlock extends Register {\n constructor(tag: string) {\n super(tag, null);\n }\n\n qtd_lin: number = 0;\n}\n\nexport default class ReportGenerator {\n protected _options: ReportGenerationOptions;\n protected _counters: TagCounter;\n\n private constructor(options: ReportGenerationOptions) {\n this._options = options;\n this._counters = new TagCounter();\n }\n\n static defaultOptions(\n openFileRegister: Register,\n registerGenerator: RegisterGenerator,\n ): ReportGenerationOptions {\n return {\n openSuffix: openSuffix,\n closeSuffix: closeSuffix,\n openFileRegister: openFileRegister,\n registerGenerator: registerGenerator,\n } as ReportGenerationOptions;\n }\n\n static newWithDefaultOptions(openFileRegister: Register): ReportGenerator {\n return this.newWithOptions(\n this.defaultOptions(\n openFileRegister,\n TaxRegisterGenerator.newWithDefaultOptions(),\n ),\n );\n }\n\n static newWithOptions(options: ReportGenerationOptions): ReportGenerator {\n return new ReportGenerator(options);\n }\n\n private beforeGeneration(taxReport: TaxReport) {\n this.addRegister(this._options.openFileRegister);\n }\n\n private generation(taxReport: TaxReport) {\n const blocks = taxReport.Blocks;\n for (const block of blocks) {\n this.addBlock(block);\n }\n }\n\n private afterGeneration(taxReport: TaxReport) {\n const tagCounters = this._counters.getAllTagsCounters();\n const counterBlock = new CounterBlock(MemoryPersist.createInstance());\n const closeFileRegister = new CloseFile();\n tagCounters.forEach((amount, tag) => {\n const counterRegister = new CounterRegister();\n counterRegister.reg_blc = tag;\n counterRegister.qtd_reg_blc = amount;\n closeFileRegister.qtd_lin += amount;\n counterBlock.addRegister(counterRegister);\n });\n this.addBlock(counterBlock);\n //This should register all lines of the taxReport\n // To calculate this, we need to sum:\n // total lines = registers lines (qtd_reg_blc) +\n // lines of counters (tagCounters.size) +\n // counters open and close line (2) +\n // close file line (1)\n closeFileRegister.qtd_lin += tagCounters.size + 3;\n this._options.registerGenerator.generate(closeFileRegister);\n }\n\n protected beforeBlockGeneration(block: Block): void {\n const openBlock: OpenBlock = new OpenBlock(\n `${block.name}${this._options.openSuffix}`,\n );\n openBlock.ind_mov = block.hasContent()\n ? IndicatorBlockContent.hasContent\n : IndicatorBlockContent.hasNoContent;\n this.addRegister(openBlock);\n }\n\n protected blockGeneration(block: Block): void {\n for (const register of block.registers) {\n this.addRegister(register);\n }\n }\n\n protected beforeRegisterGeneration(register: Register) {}\n\n protected registerGeneration(register: Register) {\n this._options.registerGenerator.generate(register);\n for (const child of register.getChildren()) {\n this.addRegister(child);\n }\n }\n\n protected afterRegisterGeneration(register: Register) {\n this._counters.countRegister(register);\n }\n\n protected afterBlockGeneration(block: Block) {\n const closeBlock: CloseBlock = new CloseBlock(\n `${block.name}${this._options.closeSuffix}`,\n );\n closeBlock.qtd_lin = this._counters.getBlockRegistersTotal(block.name) + 1;\n this.addRegister(closeBlock);\n }\n\n private addBlock(block: Block) {\n this.beforeBlockGeneration(block);\n this.blockGeneration(block);\n this.afterBlockGeneration(block);\n }\n\n private addRegister(register: Register) {\n this.beforeRegisterGeneration(register);\n this.registerGeneration(register);\n this.afterRegisterGeneration(register);\n }\n\n public generateFile(taxReport: TaxReport): void {\n this.beforeGeneration(taxReport);\n this.generation(taxReport);\n this.afterGeneration(taxReport);\n this._options.registerGenerator.save();\n }\n}\n","import Block from \"./Block\";\n\nexport default abstract class TaxReport {\n private readonly _blocks: Map<string, Block>;\n protected constructor() {\n this._blocks = new Map<string, Block>();\n }\n\n protected registerBlock(block: Block): TaxReport {\n this._blocks.set(block.name, block);\n return this\n }\n\n protected getBlock(name: string): Block | undefined {\n return this._blocks.get(name)\n }\n\n get Blocks() {\n return Array.from(this._blocks.values())\n }\n}\n"],"mappings":"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","names":["FieldDataType","valueProviderType"]}
|
|
1
|
+
{"version":3,"sources":["../lib/index.ts","../lib/taxReport/Block.ts","../lib/taxReport/interfaces/RegisterEventNotifier.ts","../lib/taxReport/Decorators.ts","../lib/taxReport/Register.ts","../lib/taxReport/ReportGenerator.ts","../lib/taxReport/TagCounter.ts","../lib/taxReport/CounterBlock.ts","../lib/taxReport/implementations/MemoryPersist.ts","../lib/taxReport/CounterRegister.ts","../lib/taxReport/implementations/ConsoleOutput.ts","../lib/taxReport/implementations/TaxRegisterGenerator.ts","../lib/taxReport/TaxReport.ts"],"sourcesContent":["import \"reflect-metadata\"\nimport Block from \"./taxReport/Block\";\nimport * as Decorators from \"./taxReport/Decorators\";\nimport { Register } from \"./taxReport/Register\";\nimport * as Generation from \"./taxReport/ReportGenerator\";\nimport TaxReport from \"./taxReport/TaxReport\";\nimport ConsoleOutput from \"./taxReport/implementations/ConsoleOutput\";\nimport MemoryPersist from \"./taxReport/implementations/MemoryPersist\";\nimport TaxRegisterGenerator from \"./taxReport/implementations/TaxRegisterGenerator\";\nimport { OutputWriter } from \"./taxReport/interfaces/OutputWriter\";\nimport RegisterEventNotifier from \"./taxReport/interfaces/RegisterEventNotifier\";\nimport RegisterGenerator from \"./taxReport/interfaces/RegisterGenerator\";\nimport RegisterPersist from \"./taxReport/interfaces/RegisterPersist\";\nimport RegisterSubscriber from \"./taxReport/interfaces/RegisterSubscriber\";\n\nexport {\n Block,\n Decorators,\n Register,\n Generation,\n TaxReport,\n ConsoleOutput,\n MemoryPersist,\n TaxRegisterGenerator,\n OutputWriter,\n RegisterEventNotifier,\n RegisterGenerator,\n RegisterPersist,\n RegisterSubscriber,\n};\n","import { EventEmitter } from \"node:events\";\nimport RegisterPersist from \"./interfaces/RegisterPersist\";\nimport { Register, RegisterDefinition } from \"./Register\";\nimport RegisterSubscriber from \"./interfaces/RegisterSubscriber\";\nimport RegisterEventNotifier, {\n Event,\n newRegisterEventData,\n RegisterEventData,\n} from \"./interfaces/RegisterEventNotifier\";\n\nexport default abstract class Block\n implements RegisterEventNotifier, RegisterSubscriber {\n private readonly _name: string;\n private eventEmitter: EventEmitter;\n protected registersPersist: RegisterPersist;\n\n protected constructor(name: string, regPersist: RegisterPersist) {\n this._name = name;\n this.eventEmitter = new EventEmitter();\n this.registersPersist = regPersist;\n }\n\n abstract eventHandler(eventData: RegisterEventData): void;\n\n public notifyEvent(eventData: RegisterEventData): void {\n this.eventEmitter.emit(eventData.event, eventData);\n }\n\n get name() {\n return this._name;\n }\n\n get registers() {\n const sortApproach = (a: RegisterDefinition, b: RegisterDefinition) =>\n a.reg.localeCompare(b.reg);\n return this.registersPersist.all().sort(sortApproach);\n }\n\n public addSubscriber(subscriber: RegisterSubscriber) {\n this.eventEmitter.on(Event.REGISTER_CREATED, function (data) {\n return subscriber.eventHandler.call(subscriber, data);\n });\n }\n\n public addRegister<T extends RegisterDefinition>(register: T) {\n this.registersPersist.add(register);\n this.notifyEvent(newRegisterEventData(register));\n }\n\n public hasContent(): boolean {\n return this.registersPersist.hasRegisters();\n }\n\n public getRegisterByKey(registerKey: string): RegisterDefinition {\n return this.registersPersist.getByKey(registerKey)!;\n }\n}\n","import { Register, RegisterDefinition } from \"../Register\";\r\nimport RegisterSubscriber from \"./RegisterSubscriber\";\r\n\r\nexport enum Event {\r\n REGISTER_CREATED = \"register_created\",\r\n}\r\n\r\nexport interface RegisterEventData {\r\n event: Event\r\n dataTypeName: string\r\n data: RegisterDefinition\r\n}\r\n\r\nfunction newRegisterEvent(event: Event, register: RegisterDefinition): RegisterEventData {\r\n return {\r\n event: event,\r\n dataTypeName: register.constructor.name,\r\n data: register\r\n }\r\n}\r\n\r\nexport function newRegisterEventData(register: RegisterDefinition): RegisterEventData {\r\n return newRegisterEvent(Event.REGISTER_CREATED, register)\r\n}\r\n\r\n\r\nexport default interface RegisterEventNotifier {\r\n addSubscriber(subscriber: RegisterSubscriber): void\r\n notifyEvent(eventData: RegisterEventData): void\r\n}\r\n","import \"reflect-metadata\"\nexport const keyCompositionMetadata = Symbol(\"key\");\n\nexport const maximumNumericLength = 19;\nexport const defaultAlphanumericLength = 255;\n\nexport enum FieldDataType {\n alphanumeric,\n numeric,\n}\n\nexport enum valueProviderType {\n property,\n method,\n}\n\nexport interface FieldFormat {\n required: boolean;\n dataType: FieldDataType;\n maximumLength: number;\n maximumDecimalsLength: number;\n fillEntireLength: boolean;\n valueProvider: valueProviderType;\n}\n\nfunction numericField(\n required: boolean,\n maximumLength: number,\n valueProvider: valueProviderType,\n fillEntireLength: boolean = false,\n maximumDecimalsLength: number = 0,\n): FieldFormat {\n return {\n required: required,\n dataType: FieldDataType.numeric,\n maximumLength: maximumLength,\n maximumDecimalsLength: maximumDecimalsLength,\n fillEntireLength: fillEntireLength,\n valueProvider: valueProvider,\n } as FieldFormat;\n}\n\nfunction alphanumericField(\n required: boolean,\n maximumLength: number,\n valueProvider: valueProviderType,\n fillEntireLength: boolean = false,\n maximumDecimalsLength: number = 0,\n): FieldFormat {\n return {\n required: required,\n dataType: FieldDataType.alphanumeric,\n maximumLength: maximumLength,\n maximumDecimalsLength: maximumDecimalsLength,\n fillEntireLength: fillEntireLength,\n valueProvider: valueProvider,\n } as FieldFormat;\n}\n\n// const Numeric = (\n// required: boolean = false,\n// fillEntireLength: boolean = false,\n// maximumLength: number = maximumNumericLength,\n// ) => {\n// return function (target: any, propertyKey: string, other?: any) {\n// Reflect.defineMetadata(\n// propertyKey,\n// numericField(\n// required,\n// maximumLength,\n// other ? valueProviderType.method : valueProviderType.property,\n// fillEntireLength,\n// ),\n// target,\n// );\n// };\n// }\n\nexport function Numeric(\n required: boolean = false,\n fillEntireLength: boolean = false,\n maximumLength: number = maximumNumericLength,\n) {\n return function (target: any, propertyKey: any, other?: any) {\n Reflect.defineMetadata(\n propertyKey.toString(),\n numericField(\n required,\n maximumLength,\n other ? valueProviderType.method : valueProviderType.property,\n fillEntireLength,\n ),\n target,\n );\n };\n}\n\n// const Decimal = (\n// required: boolean = false,\n// fillEntireLength: boolean = false,\n// maximumLength: number = maximumNumericLength,\n// maximumDecimalsLength: number = 2,\n// ) => {\n// return function (target: any, propertyKey: string, other?: any) {\n// Reflect.defineMetadata(\n// propertyKey,\n// numericField(\n// required,\n// maximumLength,\n// other ? valueProviderType.method : valueProviderType.property,\n// fillEntireLength,\n// maximumDecimalsLength,\n// ),\n// target,\n// );\n// };\n// }\n\nexport function Decimal(\n required: boolean = false,\n fillEntireLength: boolean = false,\n maximumLength: number = maximumNumericLength,\n maximumDecimalsLength: number = 2,\n) {\n return function (target: any, propertyKey: any, other?: any) {\n Reflect.defineMetadata(\n propertyKey,\n numericField(\n required,\n maximumLength,\n other ? valueProviderType.method : valueProviderType.property,\n fillEntireLength,\n maximumDecimalsLength,\n ),\n target,\n );\n };\n}\n\n// const Alphanumeric = (\n// required: boolean = false,\n// fillEntireLength: boolean = false,\n// maximumLength: number = defaultAlphanumericLength\n// ) => {\n// return function (target: any, propertyKey: string, other?: any) {\n// Reflect.defineMetadata(\n// propertyKey,\n// alphanumericField(\n// required,\n// maximumLength,\n// other ? valueProviderType.method : valueProviderType.property,\n// fillEntireLength,\n// ),\n// target,\n// );\n// };\n// }\n\nexport function Alphanumeric(\n required: boolean = false,\n fillEntireLength: boolean = false,\n maximumLength: number = defaultAlphanumericLength,\n) {\n return function (target: any, propertyKey: any, other?: any) {\n Reflect.defineMetadata(\n propertyKey,\n alphanumericField(\n required,\n maximumLength,\n other ? valueProviderType.method : valueProviderType.property,\n fillEntireLength,\n ),\n target,\n );\n };\n}\n\nexport interface KeyComposition {\n fields: KeyFieldDefinition[];\n}\n\nexport interface KeyFieldDefinition {\n fieldName: string;\n valueProvider: valueProviderType;\n}\n\nfunction key() {\n return {\n fields: [],\n } as KeyComposition;\n}\n\nfunction keyFieldDefinition(\n fieldName: string,\n valueProvider: valueProviderType,\n) {\n return {\n fieldName: fieldName,\n valueProvider: valueProvider,\n } as KeyFieldDefinition;\n}\n\n// const Key = () => {\n// return function (target: any, propertyKey: string, other?: any): void {\n// let keyComposition: KeyComposition;\n// keyComposition = Reflect.getMetadata(keyCompositionMetadata, target);\n// if (!keyComposition) {\n// keyComposition = key();\n// }\n// keyComposition.fields.push(\n// keyFieldDefinition(\n// propertyKey,\n// other ? valueProviderType.method : valueProviderType.property,\n// ),\n// );\n// Reflect.defineMetadata(keyCompositionMetadata, keyComposition, target);\n// };\n// }\n\nexport function Key() {\n return function (target: any, propertyKey: any, other?: any): void {\n let keyComposition: KeyComposition;\n keyComposition = Reflect.getMetadata(keyCompositionMetadata, target);\n if (!keyComposition) {\n keyComposition = key();\n }\n keyComposition.fields.push(\n keyFieldDefinition(\n propertyKey,\n other ? valueProviderType.method : valueProviderType.property,\n ),\n );\n Reflect.defineMetadata(keyCompositionMetadata, keyComposition, target);\n };\n}\n\n// export {Numeric, Decimal, Alphanumeric, Key}","import { Key, KeyComposition, keyCompositionMetadata } from \"./Decorators\";\nimport RegisterEventNotifier, {\n newRegisterEventData,\n} from \"./interfaces/RegisterEventNotifier\";\n\nexport interface RegisterDefinition {\n [reg: string]: any;\n tagName(): string\n getChildren(): RegisterDefinition[]\n getKeyValue(): string\n}\n\nexport abstract class Register implements RegisterDefinition {\n [key: string]: any;\n\n private _registerNotifier: RegisterEventNotifier | null;\n private readonly _children: RegisterDefinition[];\n\n @Key()\n reg: string = \"\";\n constructor(registerTag: string, notifier: RegisterEventNotifier | null) {\n this._children = [];\n this.reg = registerTag;\n this._registerNotifier = notifier;\n }\n tagName(): string {\n return this.reg;\n }\n\n protected addChild(child: Register) {\n this._children.push(child);\n this._registerNotifier!!.notifyEvent(newRegisterEventData(child));\n }\n\n public getChildren(): RegisterDefinition[] {\n return this._children;\n }\n\n public getKeyValue(): string {\n const keyComposition: KeyComposition = Reflect.getMetadata(\n keyCompositionMetadata,\n this,\n );\n let result = \"\";\n for (const keyFieldData of keyComposition.fields) {\n result = result.concat(this[keyFieldData.fieldName]);\n }\n return result;\n }\n}\n","import TaxReport from \"./TaxReport\";\nimport Block from \"./Block\";\nimport { Register, RegisterDefinition } from \"./Register\";\nimport { Alphanumeric, Numeric } from \"./Decorators\";\nimport TagCounter from \"./TagCounter\";\nimport CounterBlock from \"./CounterBlock\";\nimport MemoryPersist from \"./implementations/MemoryPersist\";\nimport CounterRegister from \"./CounterRegister\";\nimport RegisterGenerator from \"./interfaces/RegisterGenerator\";\nimport TaxRegisterGenerator from \"./implementations/TaxRegisterGenerator\";\nimport RegisterEventNotifier from \"./interfaces/RegisterEventNotifier\";\n\nconst tagCloseFileRegister = \"9999\";\nconst openSuffix = \"001\";\nconst closeSuffix = \"990\";\n\nexport interface ReportGenerationOptions {\n openSuffix: string;\n closeSuffix: string;\n openFileRegister: Register;\n registerGenerator: RegisterGenerator;\n}\n\nenum IndicatorBlockContent {\n hasContent = 0,\n hasNoContent = 1,\n}\n\nexport class CloseFile extends Register {\n // @ts-ignore\n @Numeric()\n qtd_lin: number = 0;\n\n constructor() {\n super(tagCloseFileRegister, {} as RegisterEventNotifier);\n }\n}\n\nexport class OpenBlock extends Register {\n constructor(tag: string) {\n super(tag, {} as RegisterEventNotifier);\n }\n // @ts-ignore\n @Alphanumeric(1)\n ind_mov: number = IndicatorBlockContent.hasNoContent;\n}\n\nexport class CloseBlock extends Register {\n constructor(tag: string) {\n super(tag, {} as RegisterEventNotifier);\n }\n\n qtd_lin: number = 0;\n}\n\nexport class ReportGenerator {\n protected _options: ReportGenerationOptions;\n protected _counters: TagCounter;\n\n private constructor(options: ReportGenerationOptions) {\n this._options = options;\n this._counters = new TagCounter();\n }\n\n static defaultOptions(\n openFileRegister: Register,\n registerGenerator: RegisterGenerator,\n ): ReportGenerationOptions {\n return {\n openSuffix: openSuffix,\n closeSuffix: closeSuffix,\n openFileRegister: openFileRegister,\n registerGenerator: registerGenerator,\n } as ReportGenerationOptions;\n }\n\n static newWithDefaultOptions(openFileRegister: Register): ReportGenerator {\n return this.newWithOptions(\n this.defaultOptions(\n openFileRegister,\n TaxRegisterGenerator.newWithDefaultOptions(),\n ),\n );\n }\n\n static newWithOptions(options: ReportGenerationOptions): ReportGenerator {\n return new ReportGenerator(options);\n }\n\n private beforeGeneration(taxReport: TaxReport) {\n this.addRegister(this._options.openFileRegister);\n }\n\n private generation(taxReport: TaxReport) {\n const blocks = taxReport.Blocks;\n for (const block of blocks) {\n this.addBlock(block);\n }\n }\n\n private afterGeneration(taxReport: TaxReport) {\n const tagCounters = this._counters.getAllTagsCounters();\n const counterBlock = new CounterBlock(MemoryPersist.createInstance());\n const closeFileRegister = new CloseFile();\n tagCounters.forEach((amount, tag) => {\n const counterRegister = new CounterRegister();\n counterRegister.reg_blc = tag;\n counterRegister.qtd_reg_blc = amount;\n closeFileRegister.qtd_lin += amount;\n counterBlock.addRegister(counterRegister as RegisterDefinition);\n });\n this.addBlock(counterBlock);\n //This should register all lines of the taxReport\n // To calculate this, we need to sum:\n // total lines = registers lines (qtd_reg_blc) +\n // lines of counters (tagCounters.size) +\n // counters open and close line (2) +\n // close file line (1)\n closeFileRegister.qtd_lin += tagCounters.size + 3;\n this._options.registerGenerator.generate(closeFileRegister);\n }\n\n protected beforeBlockGeneration(block: Block): void {\n const openBlock: OpenBlock = new OpenBlock(\n `${block.name}${this._options.openSuffix}`,\n );\n openBlock.ind_mov = block.hasContent()\n ? IndicatorBlockContent.hasContent\n : IndicatorBlockContent.hasNoContent;\n this.addRegister(openBlock);\n }\n\n protected blockGeneration(block: Block): void {\n for (const register of block.registers) {\n this.addRegister(register);\n }\n }\n\n protected beforeRegisterGeneration(register: RegisterDefinition) { }\n\n protected registerGeneration(register: RegisterDefinition) {\n this._options.registerGenerator.generate(register);\n for (const child of register.getChildren()) {\n this.addRegister(child);\n }\n }\n\n protected afterRegisterGeneration(register: RegisterDefinition) {\n this._counters.countRegister(register);\n }\n\n protected afterBlockGeneration(block: Block) {\n const closeBlock: CloseBlock = new CloseBlock(\n `${block.name}${this._options.closeSuffix}`,\n );\n closeBlock.qtd_lin = this._counters.getBlockRegistersTotal(block.name) + 1;\n this.addRegister(closeBlock);\n }\n\n private addBlock(block: Block) {\n this.beforeBlockGeneration(block);\n this.blockGeneration(block);\n this.afterBlockGeneration(block);\n }\n\n private addRegister(register: RegisterDefinition) {\n this.beforeRegisterGeneration(register);\n this.registerGeneration(register);\n this.afterRegisterGeneration(register);\n }\n\n public generateFile(taxReport: TaxReport): void {\n this.beforeGeneration(taxReport);\n this.generation(taxReport);\n this.afterGeneration(taxReport);\n this._options.registerGenerator.save();\n }\n}\n","import { RegisterDefinition } from \"./Register\";\n\nexport default class TagCounter {\n private _blocksCounters: Map<string, Map<string, number>>;\n\n public constructor() {\n this._blocksCounters = new Map<string, Map<string, number>>();\n }\n\n public countRegister(register: RegisterDefinition) {\n const blockLetter = register.reg[0];\n\n let counters: Map<string, number>;\n counters = !this._blocksCounters.has(blockLetter) ? new Map<string, number>() : this._blocksCounters.get(blockLetter)!\n !counters.has(register.reg) ? counters.set(register.reg, 1) : counters.set(register.reg, (counters.get(register.reg)! + 1))\n this._blocksCounters.set(blockLetter, counters);\n }\n\n public getBlockRegistersTotal(blockLetter: string): number {\n let blockRegistersTotal = 0;\n const blocksCounter = this._blocksCounters.get(blockLetter);\n if (!blocksCounter) {\n return blockRegistersTotal;\n }\n for (const value of blocksCounter.values()) {\n blockRegistersTotal += value\n }\n return blockRegistersTotal\n }\n\n public getAllTagsCounters(): Map<string, number> {\n const all = new Map<string, number>();\n\n const blocksKeys = Array.from(this._blocksCounters.keys()).sort((a, b) => a.localeCompare(b));\n blocksKeys.forEach((blockKey) => {\n const block = this._blocksCounters.get(blockKey)!\n const registerKeys = Array.from(block.keys()).sort((a, b) => a.localeCompare(b));\n registerKeys.forEach((tag) => {\n all.set(tag, block.get(tag)!)\n })\n })\n\n return all;\n }\n}\n","import Block from \"./Block\";\nimport RegisterPersist from \"./interfaces/RegisterPersist\";\nimport {RegisterEventData} from \"./interfaces/RegisterEventNotifier\";\n\nexport default class CounterBlock extends Block {\n\n constructor(regPersist: RegisterPersist, name: string = \"9\") {\n super(name, regPersist);\n }\n\n eventHandler(eventData: RegisterEventData) {\n // throw new Error(\"Method not implemented.\");\n }\n}\n","import { Register } from \"../Register\";\nimport RegisterPersist from \"../interfaces/RegisterPersist\";\n\nexport default class MemoryPersist implements RegisterPersist {\n private registers: Map<string, Array<Register>>;\n private registersByKey: Map<string, Register>;\n\n public static createInstance(): MemoryPersist {\n return new MemoryPersist();\n }\n\n private constructor() {\n this.registers = new Map<string, Array<Register>>();\n this.registersByKey = new Map<string, Register>();\n }\n\n getByKey(registerKey: string): Register | undefined {\n return this.registersByKey.get(registerKey);\n }\n\n set(regTag: string, registers: Register[]): void {\n this.registers.set(regTag, registers);\n for (const reg of registers) {\n this.addRegisterKey(reg);\n }\n }\n private addRegisterKey(reg: Register) {\n if (this.registersByKey.has(reg.getKeyValue())) {\n throw new Error(`duplicate register key: ${reg.getKeyValue()}`);\n }\n this.registersByKey.set(reg.getKeyValue(), reg);\n }\n\n hasRegisters(): boolean {\n return this.registers.size !== 0;\n }\n\n all(): Register[] {\n //TODO: Check the expected order of registers\n //TODO: Check the performance + memory use of this implementation\n let localRegisters: Register[] = new Array<Register>();\n for (const [_regTag, values] of this.registers) {\n localRegisters = [...localRegisters, ...values];\n }\n return localRegisters;\n }\n\n get(regTag: string) {\n return this.registers.get(regTag);\n }\n\n has(regTag: string): boolean {\n return this.registers.has(regTag);\n }\n\n add(register: Register): void {\n if (!this.registers.has(register.reg)) {\n this.registers.set(register.reg, []);\n }\n this.registers.get(register.reg)?.push(register);\n this.addRegisterKey(register);\n }\n}\n","import { Register, RegisterDefinition } from \"./Register\";\nimport { Alphanumeric, Key, Numeric } from \"./Decorators\";\nimport RegisterEventNotifier from \"./interfaces/RegisterEventNotifier\";\n\nexport default class CounterRegister implements RegisterDefinition {\n\n reg: string;\n\n @Key()\n @Alphanumeric()\n reg_blc: string = \"\";\n\n @Numeric()\n qtd_reg_blc: number = 0;\n\n constructor(qtd_reg_blc: number = 0, register: string = \"9900\") {\n this.reg = register;\n this.qtd_reg_blc = qtd_reg_blc;\n }\n tagName(): string {\n return this.reg;\n }\n getChildren(): RegisterDefinition[] {\n throw new Error(\"Method not implemented.\");\n }\n getKeyValue(): string {\n throw new Error(\"Method not implemented.\");\n }\n}\n","import { OutputWriter } from \"../interfaces/OutputWriter\";\n\nexport default class ConsoleOutput implements OutputWriter {\n private constructor() {}\n\n static createInstance(): ConsoleOutput {\n return new ConsoleOutput();\n }\n\n write(content: string): void {\n console.log(content);\n }\n save(): void {\n console.log(\"Saving content\");\n }\n}\n","import { Register } from \"../Register\";\nimport RegisterGenerator from \"../interfaces/RegisterGenerator\";\nimport ConsoleOutput from \"./ConsoleOutput\";\nimport { OutputWriter } from \"../interfaces/OutputWriter\";\nimport { FieldDataType, FieldFormat } from \"../Decorators\";\n\nexport interface ReportGenerationOptions {\n writer: OutputWriter;\n fieldSeparator: string;\n separatorAtTheRegisterStart: boolean;\n separatorAtTheRegisterEnd: boolean;\n}\n\nexport default class TaxRegisterGenerator implements RegisterGenerator {\n protected _options: ReportGenerationOptions;\n\n private constructor(options: ReportGenerationOptions) {\n this._options = options;\n }\n save(): void {\n this._options.writer.save();\n }\n\n static defaultOptions(\n writer: OutputWriter = ConsoleOutput.createInstance(),\n ): ReportGenerationOptions {\n return {\n writer: writer,\n fieldSeparator: \"|\",\n separatorAtTheRegisterStart: false,\n separatorAtTheRegisterEnd: false,\n } as ReportGenerationOptions;\n }\n\n static newWithDefaultOptions(): TaxRegisterGenerator {\n return this.newWithOptions(this.defaultOptions());\n }\n\n static newWithOptions(\n options: ReportGenerationOptions,\n ): TaxRegisterGenerator {\n return new TaxRegisterGenerator(options);\n }\n\n get writer(): OutputWriter {\n return this._options.writer;\n }\n\n generate(register: Register): void {\n let registerStr = `${this._options.separatorAtTheRegisterStart ? this._options.fieldSeparator : \"\"}${register.reg}${this._options.fieldSeparator}`;\n const metadataKeys = Reflect.getMetadataKeys(register);\n for(let i = 0; i < metadataKeys.length; i++) {\n const metadataKey = metadataKeys[i]\n const metadata: FieldFormat = Reflect.getMetadata(metadataKey, register);\n\n switch (metadata.dataType) {\n case FieldDataType.alphanumeric:\n // @ts-ignore\n registerStr = registerStr.concat(\n this.alphanumericValue(metadata, register[metadataKey]),\n i != metadataKeys.length - 1 ?\n this._options.fieldSeparator :\n \"\",\n );\n break;\n case FieldDataType.numeric:\n // @ts-ignore\n registerStr = registerStr.concat(\n this.numericValue(metadata, register[metadataKey]),\n i != metadataKeys.length - 1 ?\n this._options.fieldSeparator :\n \"\",\n );\n break;\n }\n }\n if (this._options.separatorAtTheRegisterEnd) {\n registerStr = registerStr.concat(this._options.fieldSeparator);\n }\n\n this.writer.write(registerStr);\n }\n\n private alphanumericValue(metadata: FieldFormat, value: any): string {\n if (!value && typeof value != \"number\") {\n return \"\";\n }\n let result: string = String(value);\n if (metadata.fillEntireLength) {\n result = result\n .padEnd(metadata.maximumLength, \" \")\n .slice(0, metadata.maximumLength);\n }\n return result;\n }\n\n private numericValue(metadata: FieldFormat, value: any): string {\n let result: string = \"\",\n decimalPart: string;\n\n [result, decimalPart] = value ? String(value).split(\".\") : \"0\";\n\n if (metadata.maximumDecimalsLength > 0) {\n if (decimalPart) {\n decimalPart = decimalPart\n .slice(0, metadata.maximumDecimalsLength)\n .padEnd(metadata.maximumDecimalsLength, \"0\");\n } else {\n decimalPart = \"\".padEnd(metadata.maximumDecimalsLength, \"0\");\n }\n result = result.concat(\",\", decimalPart);\n }\n\n return result;\n }\n}\n","import Block from \"./Block\";\n\nexport default abstract class TaxReport {\n private readonly _blocks: Map<string, Block>;\n protected constructor() {\n this._blocks = new Map<string, Block>();\n }\n\n protected registerBlock(block: Block): TaxReport {\n this._blocks.set(block.name, block);\n return this\n }\n\n protected getBlock(name: string): Block | undefined {\n return this._blocks.get(name)\n }\n\n get Blocks() {\n return Array.from(this._blocks.values())\n }\n}\n"],"mappings":"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","names":["import_reflect_metadata","FieldDataType","valueProviderType"]}
|