@fin.cx/opendata 1.2.0 → 1.4.4

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.
@@ -1,7 +1,42 @@
1
- import type { OpenData } from './classes.main.opendata.js';
2
- export declare class JsonlDataProcessor {
3
- openDataRef: OpenData;
4
- constructor(openDataRefArg: OpenData);
1
+ export type SeedEntryType = {
2
+ all_attributes: {
3
+ _registerArt: string;
4
+ _registerNummer: string;
5
+ additional_data: {
6
+ AD: boolean;
7
+ CD: boolean;
8
+ DK: boolean;
9
+ HD: boolean;
10
+ SI: boolean;
11
+ UT: boolean;
12
+ VÖ: boolean;
13
+ };
14
+ federal_state: string;
15
+ native_company_number: string;
16
+ registered_office: string;
17
+ registrar: string;
18
+ };
19
+ company_number: string;
20
+ current_status: string;
21
+ jurisdiction_code: string;
22
+ name: string;
23
+ officers: {
24
+ name: string;
25
+ other_attributes: {
26
+ city: string;
27
+ firstname: string;
28
+ flag: string;
29
+ lastname: string;
30
+ };
31
+ position: string;
32
+ start_date: string;
33
+ type: string;
34
+ }[];
35
+ registered_address: string;
36
+ retrieved_at: string;
37
+ };
38
+ export declare class JsonlDataProcessor<T> {
39
+ forEachFunction: (entryArg: T) => Promise<void>;
40
+ constructor(forEachFunctionArg: typeof this.forEachFunction);
5
41
  processDataFromUrl(dataUrlArg?: string): Promise<void>;
6
- getBusinessRecordByName(nameArg: string): Promise<import("./classes.businessrecord.js").BusinessRecord>;
7
42
  }
@@ -1,13 +1,12 @@
1
1
  import * as plugins from './plugins.js';
2
2
  import * as paths from './paths.js';
3
3
  export class JsonlDataProcessor {
4
- constructor(openDataRefArg) {
5
- this.openDataRef = openDataRefArg;
4
+ constructor(forEachFunctionArg) {
5
+ this.forEachFunction = forEachFunctionArg;
6
6
  }
7
7
  // TODO: define a mapper as argument instead of hard-coding it
8
8
  async processDataFromUrl(dataUrlArg = 'https://daten.offeneregister.de/de_companies_ocdata.jsonl.bz2') {
9
9
  const done = plugins.smartpromise.defer();
10
- const promiseArray = [];
11
10
  const dataExists = await plugins.smartfile.fs.isDirectory(paths.germanBusinessDataDir);
12
11
  if (!dataExists) {
13
12
  await plugins.smartfile.fs.ensureDir(paths.germanBusinessDataDir);
@@ -15,8 +14,6 @@ export class JsonlDataProcessor {
15
14
  else {
16
15
  }
17
16
  const smartarchive = await plugins.smartarchive.SmartArchive.fromArchiveUrl(dataUrlArg);
18
- promiseArray
19
- .push();
20
17
  const jsonlDataStream = await smartarchive.exportToStreamOfStreamFiles();
21
18
  let totalRecordsCounter = 0;
22
19
  let nextRest = '';
@@ -31,10 +28,10 @@ export class JsonlDataProcessor {
31
28
  const lines = currentString.split('\n');
32
29
  nextRest = lines.pop();
33
30
  console.log(`Got another ${lines.length} records.`);
34
- for (const line of lines) {
31
+ const concurrentProcessor = new plugins.smartarray.ConcurrentProcessor(async (line) => {
35
32
  let entry;
36
33
  if (!line)
37
- continue;
34
+ return;
38
35
  try {
39
36
  entry = JSON.parse(line);
40
37
  }
@@ -43,33 +40,25 @@ export class JsonlDataProcessor {
43
40
  await plugins.smartdelay.delayFor(10000);
44
41
  }
45
42
  if (!entry)
46
- continue;
43
+ return;
47
44
  totalRecordsCounter++;
48
45
  if (totalRecordsCounter % 10000 === 0)
49
46
  console.log(`${totalRecordsCounter} total records.`);
50
- const businessRecord = new this.openDataRef.CBusinessRecord();
51
- businessRecord.id = await this.openDataRef.CBusinessRecord.getNewId();
52
- businessRecord.data.name = entry.name;
53
- await businessRecord.save();
54
- }
47
+ await this.forEachFunction(entry);
48
+ }, 1000);
49
+ await concurrentProcessor.process(lines);
55
50
  },
56
51
  finalFunction: async (streamToolsArg) => {
57
52
  console.log(`finished processing ${totalRecordsCounter} records.`);
58
53
  if (!nextRest)
59
54
  return;
60
55
  JSON.parse(nextRest);
61
- }
56
+ done.resolve();
57
+ },
62
58
  }));
63
59
  },
64
60
  }));
65
- }
66
- async getBusinessRecordByName(nameArg) {
67
- const businessRecord = await this.openDataRef.CBusinessRecord.getInstance({
68
- data: {
69
- name: { $regex: `${nameArg}`, $options: "i" },
70
- }
71
- });
72
- return businessRecord;
61
+ await done.promise;
73
62
  }
74
63
  }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5qc29ubGRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLmpzb25sZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQztBQUdwQyxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCLFlBQVksY0FBd0I7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUM7SUFDcEMsQ0FBQztJQUVELDhEQUE4RDtJQUN2RCxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxHQUFHLCtEQUErRDtRQUMxRyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFDLE1BQU0sWUFBWSxHQUFtQixFQUFFLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7YUFBTSxDQUFDO1FBQ1IsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hGLFlBQVk7YUFDVCxJQUFJLEVBRUgsQ0FBQztRQUNMLE1BQU0sZUFBZSxHQUFHLE1BQU0sWUFBWSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDekUsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxRQUFRLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGVBQWUsQ0FB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
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5qc29ubGRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLmpzb25sZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQztBQXlDcEMsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixZQUFZLGtCQUErQztRQUN6RCxJQUFJLENBQUMsZUFBZSxHQUFHLGtCQUFrQixDQUFDO0lBQzVDLENBQUM7SUFFRCw4REFBOEQ7SUFDdkQsS0FBSyxDQUFDLGtCQUFrQixDQUM3QixVQUFVLEdBQUcsK0RBQStEO1FBRTVFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7YUFBTSxDQUFDO1FBQ1IsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sZUFBZSxHQUFHLE1BQU0sWUFBWSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDekUsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxRQUFRLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGVBQWUsQ0FBQyxJQUFJLENBQ2xCLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7WUFDbEMsVUFBVSxFQUFFLElBQUk7WUFDaEIsYUFBYSxFQUFFLEtBQUssRUFBRSxRQUFzQyxFQUFFLGNBQWMsRUFBRSxFQUFFO2dCQUM5RSxNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNyRCxVQUFVLENBQUMsSUFBSSxDQUNiLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQWdCLEVBQUUsY0FBYyxFQUFFLEVBQUU7d0JBQ3hELE1BQU0sYUFBYSxHQUFHLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3JELE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3hDLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxLQUFLLENBQUMsTUFBTSxXQUFXLENBQUMsQ0FBQzt3QkFDcEQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQ3BFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTs0QkFDYixJQUFJLEtBQVEsQ0FBQzs0QkFDYixJQUFJLENBQUMsSUFBSTtnQ0FBRSxPQUFPOzRCQUNsQixJQUFJLENBQUM7Z0NBQ0gsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQzNCLENBQUM7NEJBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQ0FDYixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUNsQixNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUMzQyxDQUFDOzRCQUNELElBQUksQ0FBQyxLQUFLO2dDQUFFLE9BQU87NEJBQ25CLG1CQUFtQixFQUFFLENBQUM7NEJBQ3RCLElBQUksbUJBQW1CLEdBQUcsS0FBSyxLQUFLLENBQUM7Z0NBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxtQkFBbUIsaUJBQWlCLENBQUMsQ0FBQzs0QkFDdkQsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNwQyxDQUFDLEVBQ0QsSUFBSSxDQUNMLENBQUM7d0JBQ0YsTUFBTSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzNDLENBQUM7b0JBQ0QsYUFBYSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRTt3QkFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsbUJBQW1CLFdBQVcsQ0FBQyxDQUFDO3dCQUNuRSxJQUFJLENBQUMsUUFBUTs0QkFBRSxPQUFPO3dCQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUNyQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2pCLENBQUM7aUJBQ0YsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUM7UUFDRixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDckIsQ0FBQztDQUNGIn0=
@@ -1,13 +1,17 @@
1
1
  import { BusinessRecord } from './classes.businessrecord.js';
2
2
  import { HandelsRegister } from './classes.handelsregister.js';
3
- import { JsonlDataProcessor } from './classes.jsonldata.js';
3
+ import { JsonlDataProcessor, type SeedEntryType } from './classes.jsonldata.js';
4
4
  import * as plugins from './plugins.js';
5
5
  export declare class OpenData {
6
6
  db: plugins.smartdata.SmartdataDb;
7
7
  private serviceQenv;
8
- jsonLDataProcessor: JsonlDataProcessor;
8
+ jsonLDataProcessor: JsonlDataProcessor<SeedEntryType>;
9
9
  handelsregister: HandelsRegister;
10
10
  CBusinessRecord: typeof BusinessRecord;
11
11
  start(): Promise<void>;
12
+ buildInitialDb(): Promise<void>;
13
+ slowValidateDb(): Promise<void>;
14
+ validateSearchByName(): Promise<void>;
15
+ searchDbByBusinessNameAndPostalCode(businessNameArg: string, postalCodeArg: string): Promise<void>;
12
16
  stop(): Promise<void>;
13
17
  }
@@ -16,13 +16,32 @@ export class OpenData {
16
16
  mongoDbPass: await this.serviceQenv.getEnvVarOnDemand('MONGODB_PASS'),
17
17
  });
18
18
  await this.db.init();
19
- this.jsonLDataProcessor = new JsonlDataProcessor(this);
19
+ this.jsonLDataProcessor = new JsonlDataProcessor(async (entryArg) => {
20
+ const businessRecord = new this.CBusinessRecord();
21
+ businessRecord.id = await this.CBusinessRecord.getNewId();
22
+ businessRecord.data.name = entryArg.name;
23
+ businessRecord.data.germanParsedRegistration = {
24
+ court: entryArg.all_attributes.registered_office,
25
+ number: entryArg.all_attributes._registerNummer,
26
+ type: entryArg.all_attributes._registerArt,
27
+ };
28
+ await businessRecord.save();
29
+ });
20
30
  this.handelsregister = new HandelsRegister(this);
21
31
  await this.handelsregister.start();
22
32
  }
33
+ async buildInitialDb() {
34
+ await this.jsonLDataProcessor.processDataFromUrl();
35
+ }
36
+ async slowValidateDb() {
37
+ }
38
+ async validateSearchByName() {
39
+ }
40
+ async searchDbByBusinessNameAndPostalCode(businessNameArg, postalCodeArg) {
41
+ }
23
42
  async stop() {
24
43
  await this.db.close();
25
44
  await this.handelsregister.stop();
26
45
  }
27
46
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5tYWluLm9wZW5kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5tYWluLm9wZW5kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEtBQUssTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsTUFBTSxPQUFPLFFBQVE7SUFBckI7UUFFVSxnQkFBVyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFLdkUsb0JBQWUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztJQWtCM0YsQ0FBQztJQWhCUSxLQUFLLENBQUMsS0FBSztRQUNoQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7WUFDeEMsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7WUFDbkUsV0FBVyxFQUFFLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUM7WUFDckUsV0FBVyxFQUFFLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUM7WUFDckUsV0FBVyxFQUFFLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUM7U0FDeEUsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFDTSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztDQUNGIn0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5tYWluLm9wZW5kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5tYWluLm9wZW5kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE1BQU0sT0FBTyxRQUFRO0lBQXJCO1FBRVUsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBS3ZFLG9CQUFlLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUErQzNGLENBQUM7SUE3Q1EsS0FBSyxDQUFDLEtBQUs7UUFDaEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1lBQzFDLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO1lBQ25FLFdBQVcsRUFBRSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDO1lBQ3JFLFdBQVcsRUFBRSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDO1lBQ3JFLFdBQVcsRUFBRSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDO1NBQ3RFLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDbEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbEQsY0FBYyxDQUFDLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUQsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUN6QyxjQUFjLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHO2dCQUM3QyxLQUFLLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUI7Z0JBQ2hELE1BQU0sRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLGVBQWU7Z0JBQy9DLElBQUksRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQTZCO2FBQzVELENBQUM7WUFDRixNQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxLQUFLLENBQUMsY0FBYztRQUN6QixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFTSxLQUFLLENBQUMsY0FBYztJQUUzQixDQUFDO0lBRU0sS0FBSyxDQUFDLG9CQUFvQjtJQUVqQyxDQUFDO0lBRU0sS0FBSyxDQUFDLG1DQUFtQyxDQUFDLGVBQXVCLEVBQUUsYUFBcUI7SUFFL0YsQ0FBQztJQUlNLEtBQUssQ0FBQyxJQUFJO1FBQ2YsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0NBQ0YifQ==
@@ -1,3 +1,4 @@
1
1
  export declare const packageDir: string;
2
2
  export declare const nogitDir: string;
3
+ export declare const downloadDir: string;
3
4
  export declare const germanBusinessDataDir: string;
package/dist_ts/paths.js CHANGED
@@ -2,5 +2,7 @@ import * as plugins from './plugins.js';
2
2
  export const packageDir = plugins.path.join(plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url), '../');
3
3
  export const nogitDir = plugins.path.join(packageDir, './.nogit/');
4
4
  plugins.smartfile.fs.ensureDirSync(nogitDir);
5
+ export const downloadDir = plugins.path.join(nogitDir, 'downloads');
6
+ plugins.smartfile.fs.ensureDirSync(downloadDir);
5
7
  export const germanBusinessDataDir = plugins.path.join(nogitDir, 'germanbusinessdata');
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ3pDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQy9ELEtBQUssQ0FDTixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNuRSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFN0MsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUMifQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ3pDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQy9ELEtBQUssQ0FDTixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNuRSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFN0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNwRSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7QUFHaEQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUMifQ==
@@ -1,7 +1,9 @@
1
1
  import * as path from 'path';
2
2
  export { path, };
3
+ import * as lik from '@push.rocks/lik';
3
4
  import * as qenv from '@push.rocks/qenv';
4
5
  import * as smartarchive from '@push.rocks/smartarchive';
6
+ import * as smartarray from '@push.rocks/smartarray';
5
7
  import * as smartbrowser from '@push.rocks/smartbrowser';
6
8
  import * as smartdata from '@push.rocks/smartdata';
7
9
  import * as smartdelay from '@push.rocks/smartdelay';
@@ -10,4 +12,8 @@ import * as smartpath from '@push.rocks/smartpath';
10
12
  import * as smartpromise from '@push.rocks/smartpromise';
11
13
  import * as smartrequest from '@push.rocks/smartrequest';
12
14
  import * as smartstream from '@push.rocks/smartstream';
13
- export { qenv, smartarchive, smartbrowser, smartdata, smartdelay, smartfile, smartpath, smartpromise, smartrequest, smartstream, };
15
+ import * as smartunique from '@push.rocks/smartunique';
16
+ import * as smartxml from '@push.rocks/smartxml';
17
+ export { lik, qenv, smartarchive, smartarray, smartbrowser, smartdata, smartdelay, smartfile, smartpath, smartpromise, smartrequest, smartstream, smartunique, smartxml, };
18
+ import * as tsclass from '@tsclass/tsclass';
19
+ export { tsclass, };
@@ -2,8 +2,10 @@
2
2
  import * as path from 'path';
3
3
  export { path, };
4
4
  // @push.rocks scope
5
+ import * as lik from '@push.rocks/lik';
5
6
  import * as qenv from '@push.rocks/qenv';
6
7
  import * as smartarchive from '@push.rocks/smartarchive';
8
+ import * as smartarray from '@push.rocks/smartarray';
7
9
  import * as smartbrowser from '@push.rocks/smartbrowser';
8
10
  import * as smartdata from '@push.rocks/smartdata';
9
11
  import * as smartdelay from '@push.rocks/smartdelay';
@@ -12,5 +14,10 @@ import * as smartpath from '@push.rocks/smartpath';
12
14
  import * as smartpromise from '@push.rocks/smartpromise';
13
15
  import * as smartrequest from '@push.rocks/smartrequest';
14
16
  import * as smartstream from '@push.rocks/smartstream';
15
- export { qenv, smartarchive, smartbrowser, smartdata, smartdelay, smartfile, smartpath, smartpromise, smartrequest, smartstream, };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFDTCxJQUFJLEdBQ0wsQ0FBQTtBQUVELG9CQUFvQjtBQUNwQixPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFDTCxJQUFJLEVBQ0osWUFBWSxFQUNaLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixXQUFXLEdBQ1osQ0FBQSJ9
17
+ import * as smartunique from '@push.rocks/smartunique';
18
+ import * as smartxml from '@push.rocks/smartxml';
19
+ export { lik, qenv, smartarchive, smartarray, smartbrowser, smartdata, smartdelay, smartfile, smartpath, smartpromise, smartrequest, smartstream, smartunique, smartxml, };
20
+ // @tsclass scope
21
+ import * as tsclass from '@tsclass/tsclass';
22
+ export { tsclass, };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFDTCxJQUFJLEdBQ0wsQ0FBQTtBQUVELG9CQUFvQjtBQUNwQixPQUFPLEtBQUssR0FBRyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxJQUFJLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsT0FBTyxFQUNMLEdBQUcsRUFDSCxJQUFJLEVBQ0osWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osV0FBVyxFQUNYLFdBQVcsRUFDWCxRQUFRLEdBQ1QsQ0FBQTtBQUVELGlCQUFpQjtBQUNqQixPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLE9BQU8sRUFDTCxPQUFPLEdBQ1IsQ0FBQSJ9
package/npmextra.json CHANGED
@@ -30,5 +30,8 @@
30
30
  "npmci": {
31
31
  "npmGlobalTools": [],
32
32
  "npmAccessLevel": "public"
33
+ },
34
+ "tsdoc": {
35
+ "legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
33
36
  }
34
37
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fin.cx/opendata",
3
- "version": "1.2.0",
3
+ "version": "1.4.4",
4
4
  "private": false,
5
5
  "description": "A TypeScript library for accessing, managing, and updating open business data, focused on German companies and integrating with MongoDB.",
6
6
  "main": "dist_ts/index.js",
@@ -9,24 +9,29 @@
9
9
  "author": "Task Venture Capital GmbH",
10
10
  "license": "MIT",
11
11
  "devDependencies": {
12
- "@git.zone/tsbuild": "^2.2.0",
13
- "@git.zone/tsbundle": "^2.1.0",
12
+ "@git.zone/tsbuild": "^2.3.2",
13
+ "@git.zone/tsbundle": "^2.2.5",
14
14
  "@git.zone/tsrun": "^1.3.3",
15
- "@git.zone/tstest": "^1.0.90",
16
- "@push.rocks/tapbundle": "^5.5.4",
17
- "@types/node": "^22.10.2"
15
+ "@git.zone/tstest": "^1.0.96",
16
+ "@push.rocks/tapbundle": "^5.6.2",
17
+ "@types/node": "^22.14.0"
18
18
  },
19
19
  "dependencies": {
20
+ "@push.rocks/lik": "^6.1.0",
20
21
  "@push.rocks/qenv": "^6.1.0",
21
22
  "@push.rocks/smartarchive": "^4.0.39",
22
- "@push.rocks/smartbrowser": "^2.0.6",
23
- "@push.rocks/smartdata": "^5.2.10",
23
+ "@push.rocks/smartarray": "^1.1.0",
24
+ "@push.rocks/smartbrowser": "^2.0.8",
25
+ "@push.rocks/smartdata": "^5.2.12",
24
26
  "@push.rocks/smartdelay": "^3.0.5",
25
- "@push.rocks/smartfile": "^11.0.23",
27
+ "@push.rocks/smartfile": "^11.2.0",
26
28
  "@push.rocks/smartpath": "^5.0.18",
27
- "@push.rocks/smartpromise": "^4.0.4",
28
- "@push.rocks/smartrequest": "^2.0.23",
29
- "@push.rocks/smartstream": "^3.2.5"
29
+ "@push.rocks/smartpromise": "^4.2.3",
30
+ "@push.rocks/smartrequest": "^2.1.0",
31
+ "@push.rocks/smartstream": "^3.2.5",
32
+ "@push.rocks/smartunique": "^3.0.9",
33
+ "@push.rocks/smartxml": "^1.1.1",
34
+ "@tsclass/tsclass": "^8.2.0"
30
35
  },
31
36
  "repository": {
32
37
  "type": "git",
package/readme.md CHANGED
@@ -215,4 +215,22 @@ When working with business data, ensuring integrity and accuracy is crucial. Eac
215
215
  The `@fin.cx/opendata` module provides an extensive toolset for accessing and managing business data, particularly for companies based in Germany. Its functionalities include creating, updating, retrieving, and deleting business records, as well as keeping them current with the latest open data releases. This makes it an invaluable asset for developers aiming to integrate open data seamlessly into their systems, ensuring robust data management capabilities within their applications.
216
216
 
217
217
  Happy exploring and integrating open data into your projects!
218
- undefined
218
+
219
+ ## License and Legal Information
220
+
221
+ This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository.
222
+
223
+ **Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
224
+
225
+ ### Trademarks
226
+
227
+ This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.
228
+
229
+ ### Company Information
230
+
231
+ Task Venture Capital GmbH
232
+ Registered at District court Bremen HRB 35230 HB, Germany
233
+
234
+ For any legal inquiries or if you require further information, please contact us via email at hello@task.vc.
235
+
236
+ By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@fin.cx/opendata',
6
- version: '1.2.0',
6
+ version: '1.4.4',
7
7
  description: 'A TypeScript library for accessing, managing, and updating open business data, focused on German companies and integrating with MongoDB.'
8
8
  }
@@ -1,32 +1,67 @@
1
1
  import * as plugins from './plugins.js';
2
2
 
3
3
  @plugins.smartdata.Manager()
4
- export class BusinessRecord extends plugins.smartdata.SmartDataDbDoc<BusinessRecord, BusinessRecord> {
5
-
4
+ export class BusinessRecord extends plugins.smartdata.SmartDataDbDoc<
5
+ BusinessRecord,
6
+ BusinessRecord
7
+ > {
8
+ // STATIC
9
+ public static getByGermanParsedRegistration = async (parsedGermanRegistrationArg: BusinessRecord['data']['germanParsedRegistration']) => {
10
+ const businessRecords = await BusinessRecord.getInstance({
11
+ data: {
12
+ germanParsedRegistration: parsedGermanRegistrationArg,
13
+ }
14
+ });
15
+ return businessRecords;
16
+ };
17
+
18
+
19
+ // INSTANCE
6
20
  @plugins.smartdata.unI()
7
21
  id: string;
8
-
22
+
9
23
  @plugins.smartdata.svDb()
10
24
  data: {
11
- name?: string,
12
- address?: string,
13
- postalCode?: string,
14
- city?: string,
15
- country?: string,
16
- phone?: string,
17
- fax?: string,
18
- email?: string,
19
- website?: string,
20
- businessType?: string,
21
- registrationNumber?: string,
22
- registrationCourt?: string,
23
- legalForm?: string,
24
- managingDirectors?: string[],
25
- boardOfDirectors?: string[],
26
- supervisoryBoard?: string[],
27
- foundingDate?: string,
28
- capital?: string,
29
- purpose?: string,
30
- lastUpdate?: string
25
+ name?: string;
26
+ startDate?: string;
27
+ endDate?: string;
28
+ status?: 'active' | 'liquidating' | 'closed';
29
+ address?: string;
30
+ postalCode?: string;
31
+ city?: string;
32
+ country?: string;
33
+ phone?: string;
34
+ fax?: string;
35
+ email?: string;
36
+ website?: string;
37
+ businessType?: string;
38
+ registrationId?: string;
39
+ germanParsedRegistration?: {
40
+ court?: string;
41
+ type?: 'HRA' | 'HRB' | 'GnR' | 'PR' | 'VR' | 'GsR';
42
+ number?: string;
43
+ };
44
+ legalForm?:
45
+ | 'GmbH'
46
+ | 'GmbH & Co. KG'
47
+ | 'AG'
48
+ | 'LLC'
49
+ | 'LLP'
50
+ | 'GmbH & Co. KGaA'
51
+ | 'GmbH & Co. KGaA, LLC';
52
+ managingDirectors?: string[];
53
+ boardOfDirectors?: string[];
54
+ supervisoryBoard?: string[];
55
+ foundingDate?: string;
56
+ capital?: string;
57
+ purpose?: string;
58
+ lastUpdate?: string;
31
59
  } = {};
32
- }
60
+
61
+ /**
62
+ * validates the record against the Handelregister.
63
+ */
64
+ public async validate() {
65
+ if (!this.data.name) throw new Error('Name is required.');
66
+ }
67
+ }