evatr-api 0.1.1

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.
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ /* eslint-disable no-console */
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.EvatrApiUpdater = void 0;
8
+ /**
9
+ * Utilities for checking and updating API documentation and status messages
10
+ */
11
+ const axios_1 = __importDefault(require("axios"));
12
+ const fs_1 = require("fs");
13
+ const constants_1 = require("./constants");
14
+ const path_1 = require("path");
15
+ /**
16
+ * API Update utilities for eVatR API
17
+ */
18
+ class EvatrApiUpdater {
19
+ /**
20
+ * Check for new API documentation version
21
+ */
22
+ static async checkApiDocsUpdate() {
23
+ try {
24
+ console.log('Checking for API documentation updates...');
25
+ // Fetch current API docs
26
+ const response = await axios_1.default.get(this.API_DOCS_URL);
27
+ const apiDocs = response.data;
28
+ const latestVersion = apiDocs.info?.version;
29
+ if (!latestVersion) {
30
+ throw new Error('Could not extract version from API docs');
31
+ }
32
+ // Check if we have a local version
33
+ const localApiDocsPath = (0, path_1.join)(this.DOCS_DIR, 'api-docs.json');
34
+ let currentVersion;
35
+ if ((0, fs_1.existsSync)(localApiDocsPath)) {
36
+ try {
37
+ const localDocs = JSON.parse((0, fs_1.readFileSync)(localApiDocsPath, 'utf8'));
38
+ currentVersion = localDocs.info?.version;
39
+ }
40
+ catch (error) {
41
+ console.warn('Could not read local API docs version:', error);
42
+ }
43
+ }
44
+ const hasUpdate = !currentVersion || currentVersion !== latestVersion;
45
+ return {
46
+ hasUpdate,
47
+ currentVersion,
48
+ latestVersion,
49
+ downloadUrl: this.API_DOCS_URL
50
+ };
51
+ }
52
+ catch (error) {
53
+ console.error('Error checking API docs update:', error);
54
+ throw error;
55
+ }
56
+ }
57
+ /**
58
+ * Download and save new API documentation
59
+ */
60
+ static async downloadApiDocs() {
61
+ try {
62
+ console.log('Downloading latest API documentation...');
63
+ const response = await axios_1.default.get(this.API_DOCS_URL);
64
+ const apiDocs = response.data;
65
+ const version = apiDocs.info?.version || 'unknown';
66
+ const timestamp = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
67
+ // Save with version and date
68
+ const filename = `api-docs-${version}-${timestamp}.json`;
69
+ const filepath = (0, path_1.join)(this.DOCS_DIR, filename);
70
+ (0, fs_1.writeFileSync)(filepath, JSON.stringify(apiDocs, null, 2));
71
+ // Also update the main api-docs.json file
72
+ const mainFilepath = (0, path_1.join)(this.DOCS_DIR, 'api-docs.json');
73
+ (0, fs_1.writeFileSync)(mainFilepath, JSON.stringify(apiDocs, null, 2));
74
+ console.log(`✅ API documentation saved to: ${filename}`);
75
+ return filepath;
76
+ }
77
+ catch (error) {
78
+ console.error('Error downloading API docs:', error);
79
+ throw error;
80
+ }
81
+ }
82
+ /**
83
+ * Check for new status messages
84
+ */
85
+ static async checkStatusMessagesUpdate() {
86
+ try {
87
+ console.log('Checking for status messages updates...');
88
+ // Fetch current status messages from API
89
+ const response = await axios_1.default.get(constants_1.ENDPOINTS.STATUS_MESSAGES);
90
+ const latestMessages = response.data;
91
+ // Load local status messages
92
+ const localStatusPath = (0, path_1.join)(this.DOCS_DIR, 'statusmeldungen.json');
93
+ let currentMessages = [];
94
+ if ((0, fs_1.existsSync)(localStatusPath)) {
95
+ try {
96
+ currentMessages = JSON.parse((0, fs_1.readFileSync)(localStatusPath, 'utf8'));
97
+ }
98
+ catch (error) {
99
+ console.warn('Could not read local status messages:', error);
100
+ }
101
+ }
102
+ // Compare messages
103
+ const diff = this.compareStatusMessages(currentMessages, latestMessages);
104
+ const hasUpdate = diff.added.length > 0 || diff.removed.length > 0 || diff.modified.length > 0;
105
+ return {
106
+ hasUpdate,
107
+ currentVersion: `${currentMessages.length} messages`,
108
+ latestVersion: `${latestMessages.length} messages`,
109
+ downloadUrl: constants_1.ENDPOINTS.STATUS_MESSAGES,
110
+ diff
111
+ };
112
+ }
113
+ catch (error) {
114
+ console.error('Error checking status messages update:', error);
115
+ throw error;
116
+ }
117
+ }
118
+ /**
119
+ * Download and save new status messages
120
+ */
121
+ static async downloadStatusMessages() {
122
+ try {
123
+ console.log('Downloading latest status messages...');
124
+ const response = await axios_1.default.get(constants_1.ENDPOINTS.STATUS_MESSAGES);
125
+ const statusMessages = response.data;
126
+ const timestamp = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
127
+ // Save with date
128
+ const filename = `statusmeldungen-${timestamp}.json`;
129
+ const filepath = (0, path_1.join)(this.DOCS_DIR, filename);
130
+ (0, fs_1.writeFileSync)(filepath, JSON.stringify(statusMessages, null, 2));
131
+ // Also update the main statusmeldungen.json file
132
+ const mainFilepath = (0, path_1.join)(this.DOCS_DIR, 'statusmeldungen.json');
133
+ (0, fs_1.writeFileSync)(mainFilepath, JSON.stringify(statusMessages, null, 2));
134
+ console.log(`✅ Status messages saved to: ${filename}`);
135
+ return filepath;
136
+ }
137
+ catch (error) {
138
+ console.error('Error downloading status messages:', error);
139
+ throw error;
140
+ }
141
+ }
142
+ /**
143
+ * Compare two sets of status messages and return differences
144
+ */
145
+ static compareStatusMessages(current, latest) {
146
+ const currentMap = new Map(current.map(msg => [msg.status, msg]));
147
+ const latestMap = new Map(latest.map(msg => [msg.status, msg]));
148
+ const added = [];
149
+ const removed = [];
150
+ const modified = [];
151
+ // Find added and modified messages
152
+ for (const [status, latestMsg] of latestMap) {
153
+ const currentMsg = currentMap.get(status);
154
+ if (!currentMsg) {
155
+ added.push(latestMsg);
156
+ }
157
+ else if (JSON.stringify(currentMsg) !== JSON.stringify(latestMsg)) {
158
+ modified.push({ status, old: currentMsg, new: latestMsg });
159
+ }
160
+ }
161
+ // Find removed messages
162
+ for (const [status, currentMsg] of currentMap) {
163
+ if (!latestMap.has(status)) {
164
+ removed.push(currentMsg);
165
+ }
166
+ }
167
+ return { added, removed, modified };
168
+ }
169
+ /**
170
+ * Print status message differences in a readable format
171
+ */
172
+ static printStatusMessageDiff(diff) {
173
+ console.log('\n=== Status Messages Differences ===');
174
+ if (diff.added.length > 0) {
175
+ console.log(`\n➕ Added (${diff.added.length}):`);
176
+ diff.added.forEach(msg => {
177
+ console.log(` ${msg.status}: ${msg.meldung}`);
178
+ });
179
+ }
180
+ if (diff.removed.length > 0) {
181
+ console.log(`\n➖ Removed (${diff.removed.length}):`);
182
+ diff.removed.forEach(msg => {
183
+ console.log(` ${msg.status}: ${msg.meldung}`);
184
+ });
185
+ }
186
+ if (diff.modified.length > 0) {
187
+ console.log(`\n🔄 Modified (${diff.modified.length}):`);
188
+ diff.modified.forEach(({ status, old, new: newMsg }) => {
189
+ console.log(` ${status}:`);
190
+ console.log(` Old: ${old.meldung}`);
191
+ console.log(` New: ${newMsg.meldung}`);
192
+ });
193
+ }
194
+ if (diff.added.length === 0 && diff.removed.length === 0 && diff.modified.length === 0) {
195
+ console.log('✅ No differences found');
196
+ }
197
+ }
198
+ /**
199
+ * Update constants.ts file with new status messages
200
+ */
201
+ static async updateConstantsFile(statusMessages) {
202
+ try {
203
+ console.log('Updating constants.ts with new status messages...');
204
+ // Create the status messages object
205
+ const statusMessagesObj = statusMessages.reduce((acc, msg) => {
206
+ acc[msg.status] = msg;
207
+ return acc;
208
+ }, {});
209
+ // Read current constants file
210
+ const constantsPath = './src/constants.ts';
211
+ const constantsContent = (0, fs_1.readFileSync)(constantsPath, 'utf8');
212
+ // Replace the STATUS_MESSAGES object
213
+ const statusMessagesStr = JSON.stringify(statusMessagesObj, null, 2)
214
+ .replace(/"/g, "'")
215
+ .replace(/'/g, "'");
216
+ const newConstantsContent = constantsContent.replace(/export const STATUS_MESSAGES: Record<string, ApiStatusMessage> = \{[\s\S]*?\};/, `export const STATUS_MESSAGES: Record<string, StatusMessage> = ${statusMessagesStr};`);
217
+ (0, fs_1.writeFileSync)(constantsPath, newConstantsContent);
218
+ console.log('✅ Constants file updated');
219
+ }
220
+ catch (error) {
221
+ console.error('Error updating constants file:', error);
222
+ throw error;
223
+ }
224
+ }
225
+ /**
226
+ * Run complete update check and download if needed
227
+ */
228
+ static async checkAndUpdateAll() {
229
+ console.log('🔍 Checking for eVatR API updates...\n');
230
+ try {
231
+ // Check API docs
232
+ const apiDocsResult = await this.checkApiDocsUpdate();
233
+ if (apiDocsResult.hasUpdate) {
234
+ console.log(`📄 API Docs update available: ${apiDocsResult.currentVersion} → ${apiDocsResult.latestVersion}`);
235
+ await this.downloadApiDocs();
236
+ }
237
+ else {
238
+ console.log('📄 API Docs are up to date');
239
+ }
240
+ // Check status messages
241
+ const statusResult = await this.checkStatusMessagesUpdate();
242
+ if (statusResult.hasUpdate && statusResult.diff) {
243
+ console.log(`📋 Status Messages update available: ${statusResult.currentVersion} → ${statusResult.latestVersion}`);
244
+ this.printStatusMessageDiff(statusResult.diff);
245
+ const filepath = await this.downloadStatusMessages();
246
+ // Ask if user wants to update constants.ts
247
+ console.log('\n❓ Would you like to update the constants.ts file with the new status messages?');
248
+ console.log(' You can run: EvatrApiUpdater.updateConstantsFromFile("' + filepath + '")');
249
+ }
250
+ else {
251
+ console.log('📋 Status Messages are up to date');
252
+ }
253
+ console.log('\n✅ Update check completed');
254
+ }
255
+ catch (error) {
256
+ console.error('❌ Error during update check:', error);
257
+ throw error;
258
+ }
259
+ }
260
+ /**
261
+ * Update constants from a downloaded status messages file
262
+ */
263
+ static async updateConstantsFromFile(filepath) {
264
+ try {
265
+ const apiStatusMessages = JSON.parse((0, fs_1.readFileSync)(filepath, 'utf8'));
266
+ const statusMessages = apiStatusMessages.map(msg => ({
267
+ status: msg.status,
268
+ message: msg.meldung,
269
+ category: msg.kategorie === 'Ergebnis' ? 'Result' : msg.kategorie === 'Fehler' ? 'Error' : 'Hint',
270
+ http: msg.httpcode,
271
+ }), {});
272
+ await this.updateConstantsFile(statusMessages);
273
+ }
274
+ catch (error) {
275
+ console.error('Error updating constants from file:', error);
276
+ throw error;
277
+ }
278
+ }
279
+ }
280
+ exports.EvatrApiUpdater = EvatrApiUpdater;
281
+ EvatrApiUpdater.API_DOCS_URL = constants_1.DEFAULT_HOST + '/api-docs';
282
+ EvatrApiUpdater.DOCS_DIR = './docs';
283
+ //# sourceMappingURL=api-updater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-updater.js","sourceRoot":"","sources":["../src/api-updater.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Main client class for the eVatR API
3
+ */
4
+ import { EUMemberState, EvatrClientConfig, ExtendedResponse, QualifiedRequest, Request, Response, SimpleRequest, StatusMessage } from './types';
5
+ /**
6
+ * EvatrClient - Main client for interacting with the eVatR API
7
+ */
8
+ export declare class EvatrClient {
9
+ private readonly httpClient;
10
+ constructor(config?: EvatrClientConfig);
11
+ /**
12
+ * Perform a simple VAT-ID validation (only checks validity)
13
+ * @param request Simple validation request with VAT-IDs only
14
+ * @param extended If true, returns ExtendedResponse with mapped dates and additional info
15
+ * @returns Promise<Response | ExtendedResponse>
16
+ */
17
+ validateSimple(request: SimpleRequest): Promise<Response>;
18
+ validateSimple(request: SimpleRequest, extended: true): Promise<ExtendedResponse>;
19
+ validateSimple(request: SimpleRequest, extended: false): Promise<Response>;
20
+ /**
21
+ * Perform a qualified VAT-ID validation (checks validity and company data)
22
+ * @param request Qualified validation request with company data
23
+ * @param extended If true, returns ExtendedResponse with mapped dates and additional info
24
+ * @returns Promise<Response | ExtendedResponse>
25
+ */
26
+ validateQualified(request: QualifiedRequest): Promise<Response>;
27
+ validateQualified(request: QualifiedRequest, extended: true): Promise<ExtendedResponse>;
28
+ validateQualified(request: QualifiedRequest, extended: false): Promise<Response>;
29
+ /**
30
+ * Perform VAT-ID validation with full request object
31
+ * @param request Full validation request
32
+ * @param extended If true, returns ExtendedResponse with mapped dates and additional info
33
+ * @returns Promise<Response | ExtendedResponse>
34
+ */
35
+ validate(request: Request): Promise<Response>;
36
+ validate(request: Request, extended: true): Promise<ExtendedResponse>;
37
+ validate(request: Request, extended: false): Promise<Response>;
38
+ /**
39
+ * Get status messages from the API
40
+ * @returns Promise<StatusMessage[]>
41
+ */
42
+ getStatusMessages(): Promise<StatusMessage[]>;
43
+ /**
44
+ * Get EU member states and their availability
45
+ * @returns Promise<ApiEUMemberState[]>
46
+ */
47
+ getEUMemberStates(): Promise<EUMemberState[]>;
48
+ /**
49
+ * Get status message by status code
50
+ * @param statusCode Status code (e.g., "evatr-0000")
51
+ * @returns StatusMessage or undefined if not found
52
+ */
53
+ getStatusMessage(statusCode: string): StatusMessage | undefined;
54
+ /**
55
+ * Check if a status code indicates success
56
+ * @param statusCode Status code to check
57
+ * @returns boolean
58
+ */
59
+ isSuccessStatus(statusCode: string): boolean;
60
+ /**
61
+ * Check if a status code indicates an error
62
+ * @param statusCode Status code to check
63
+ * @returns boolean
64
+ */
65
+ isErrorStatus(statusCode: string): boolean;
66
+ /**
67
+ * Check if a status code indicates a warning/hint
68
+ * @param statusCode Status code to check
69
+ * @returns boolean
70
+ */
71
+ isWarningStatus(statusCode: string): boolean;
72
+ /**
73
+ * Validate VAT-ID format (basic syntax check)
74
+ * @param vatId VAT-ID to validate
75
+ * @returns boolean
76
+ */
77
+ static checkVatIdSyntax(vatId: string): boolean;
78
+ /**
79
+ * Extract country code from VAT-ID
80
+ * @param vatId VAT-ID
81
+ * @returns string Country code
82
+ */
83
+ static getCountryCode(vatId: string): string;
84
+ /**
85
+ * Format VAT-ID by removing spaces and converting to uppercase
86
+ * @param vatId VAT-ID to format
87
+ * @returns string Formatted VAT-ID
88
+ */
89
+ static normalizeVatId(vatId: string): string;
90
+ /**
91
+ * Maps parameters to API property names
92
+ */
93
+ private mapToApiParams;
94
+ /**
95
+ * Maps API response to parameters
96
+ */
97
+ private mapFromApiResponse;
98
+ /**
99
+ * Maps basic Response to ExtendedResponse with date objects and additional info
100
+ */
101
+ private mapToExtendedResponse;
102
+ /**
103
+ * Internal method to perform the actual validation request
104
+ */
105
+ private performValidation;
106
+ /**
107
+ * Handle and transform errors
108
+ */
109
+ private handleError;
110
+ }
111
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAKL,aAAa,EAEb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,aAAa,EACb,aAAa,EACd,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;gBAE/B,MAAM,GAAE,iBAAsB;IA+B1C;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;IACzD,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACjF,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC;IAWhF;;;;;OAKG;IACG,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC/D,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACvF,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC;IAetF;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACrE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKpE;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAiBnD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAenD;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI/D;;;;OAIG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI5C;;;;OAIG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI1C;;;;OAIG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI5C;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAsB/C;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI5C;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI5C;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;YACW,iBAAiB;IAqD/B;;OAEG;IAEH,OAAO,CAAC,WAAW;CAkBpB"}