@fin.cx/opendata 3.5.0 → 3.6.0

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.
Files changed (54) hide show
  1. package/{npmextra.json → .smartconfig.json} +12 -6
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts/classes.businessrecord.js +86 -43
  4. package/dist_ts/classes.handelsregister.d.ts +2 -0
  5. package/dist_ts/classes.handelsregister.js +126 -107
  6. package/dist_ts/classes.jsonldata.js +9 -6
  7. package/dist_ts/classes.main.opendata.d.ts +2 -1
  8. package/dist_ts/classes.main.opendata.js +59 -26
  9. package/dist_ts/index.d.ts +1 -0
  10. package/dist_ts/index.js +2 -1
  11. package/dist_ts/laws/classes.lawrecord.d.ts +24 -0
  12. package/dist_ts/laws/classes.lawrecord.js +181 -0
  13. package/dist_ts/laws/classes.lawservice.d.ts +52 -0
  14. package/dist_ts/laws/classes.lawservice.js +740 -0
  15. package/dist_ts/laws/index.d.ts +3 -0
  16. package/dist_ts/laws/index.js +4 -0
  17. package/dist_ts/laws/interfaces.law.d.ts +35 -0
  18. package/dist_ts/laws/interfaces.law.js +2 -0
  19. package/dist_ts/plugins.d.ts +8 -2
  20. package/dist_ts/plugins.js +14 -3
  21. package/dist_ts/stocks/classes.baseproviderservice.js +8 -8
  22. package/dist_ts/stocks/classes.fundamentalsservice.js +9 -9
  23. package/dist_ts/stocks/classes.stockdataservice.js +23 -23
  24. package/dist_ts/stocks/classes.stockservice.js +9 -9
  25. package/dist_ts/stocks/providers/provider.coingecko.d.ts +1 -1
  26. package/dist_ts/stocks/providers/provider.coingecko.js +45 -39
  27. package/dist_ts/stocks/providers/provider.marketstack.d.ts +3 -3
  28. package/dist_ts/stocks/providers/provider.marketstack.js +20 -16
  29. package/dist_ts/stocks/providers/provider.secedgar.d.ts +1 -1
  30. package/dist_ts/stocks/providers/provider.secedgar.js +22 -22
  31. package/dist_ts/stocks/providers/provider.yahoo.d.ts +2 -2
  32. package/dist_ts/stocks/providers/provider.yahoo.js +14 -13
  33. package/package.json +22 -19
  34. package/readme.md +280 -676
  35. package/ts/00_commitinfo_data.ts +1 -1
  36. package/ts/classes.businessrecord.ts +1 -1
  37. package/ts/classes.handelsregister.ts +45 -20
  38. package/ts/classes.jsonldata.ts +7 -6
  39. package/ts/classes.main.opendata.ts +63 -30
  40. package/ts/index.ts +1 -0
  41. package/ts/laws/classes.lawrecord.ts +81 -0
  42. package/ts/laws/classes.lawservice.ts +1010 -0
  43. package/ts/laws/index.ts +3 -0
  44. package/ts/laws/interfaces.law.ts +48 -0
  45. package/ts/plugins.ts +19 -0
  46. package/ts/stocks/classes.fundamentalsservice.ts +1 -1
  47. package/ts/stocks/classes.stockdataservice.ts +17 -7
  48. package/ts/stocks/classes.stockservice.ts +2 -2
  49. package/ts/stocks/providers/provider.marketstack.ts +9 -7
  50. package/ts/stocks/providers/provider.secedgar.ts +2 -2
  51. package/ts/stocks/providers/provider.yahoo.ts +3 -3
  52. package/dist_ts/classes.germanbusinessdata.d.ts +0 -9
  53. package/dist_ts/classes.germanbusinessdata.js +0 -78
  54. package/readme.plan.md +0 -193
@@ -1,11 +1,16 @@
1
1
  import { BusinessRecord } from './classes.businessrecord.js';
2
2
  import { HandelsRegister } from './classes.handelsregister.js';
3
3
  import { JsonlDataProcessor } from './classes.jsonldata.js';
4
- import * as paths from './paths.js';
5
4
  import * as plugins from './plugins.js';
6
5
  export class OpenData {
6
+ db;
7
+ localSmartDb;
8
+ config;
9
+ started = false;
10
+ jsonLDataProcessor;
11
+ handelsregister;
12
+ CBusinessRecord = plugins.smartdata.setDefaultManagerForDoc(this, BusinessRecord);
7
13
  constructor(configArg) {
8
- this.CBusinessRecord = plugins.smartdata.setDefaultManagerForDoc(this, BusinessRecord);
9
14
  if (!configArg) {
10
15
  throw new Error('@fin.cx/opendata: Configuration is required. You must provide downloadDir, germanBusinessDataDir, and nogitDir paths.');
11
16
  }
@@ -13,33 +18,53 @@ export class OpenData {
13
18
  throw new Error('@fin.cx/opendata: All directory paths are required (downloadDir, germanBusinessDataDir, nogitDir).');
14
19
  }
15
20
  this.config = configArg;
16
- this.serviceQenv = new plugins.qenv.Qenv(paths.packageDir, this.config.nogitDir);
17
21
  }
18
22
  async start() {
23
+ if (this.started) {
24
+ return;
25
+ }
19
26
  // Ensure configured directories exist
20
- await plugins.smartfile.fs.ensureDir(this.config.nogitDir);
21
- await plugins.smartfile.fs.ensureDir(this.config.downloadDir);
22
- await plugins.smartfile.fs.ensureDir(this.config.germanBusinessDataDir);
23
- this.db = new plugins.smartdata.SmartdataDb({
24
- mongoDbUrl: await this.serviceQenv.getEnvVarOnDemand('MONGODB_URL'),
25
- mongoDbName: await this.serviceQenv.getEnvVarOnDemand('MONGODB_NAME'),
26
- mongoDbUser: await this.serviceQenv.getEnvVarOnDemand('MONGODB_USER'),
27
- mongoDbPass: await this.serviceQenv.getEnvVarOnDemand('MONGODB_PASS'),
27
+ await plugins.smartfs.directory(this.config.nogitDir).create();
28
+ await plugins.smartfs.directory(this.config.downloadDir).create();
29
+ await plugins.smartfs.directory(this.config.germanBusinessDataDir).create();
30
+ this.localSmartDb = new plugins.smartdb.LocalSmartDb({
31
+ folderPath: plugins.path.join(this.config.nogitDir, 'opendata-smartdb'),
28
32
  });
29
- await this.db.init();
30
- this.jsonLDataProcessor = new JsonlDataProcessor(this.config.germanBusinessDataDir, async (entryArg) => {
31
- const businessRecord = new this.CBusinessRecord();
32
- businessRecord.id = await this.CBusinessRecord.getNewId();
33
- businessRecord.data.name = entryArg.name;
34
- businessRecord.data.germanParsedRegistration = {
35
- court: entryArg.all_attributes.registered_office,
36
- number: entryArg.all_attributes._registerNummer,
37
- type: entryArg.all_attributes._registerArt,
38
- };
39
- await businessRecord.save();
33
+ const connectionInfo = await this.localSmartDb.start();
34
+ this.db = new plugins.smartdata.SmartdataDb({
35
+ mongoDbUrl: connectionInfo.connectionUri,
36
+ mongoDbName: 'opendata',
40
37
  });
41
- this.handelsregister = new HandelsRegister(this, this.config.downloadDir);
42
- await this.handelsregister.start();
38
+ try {
39
+ await this.db.init();
40
+ await this.db.mongoDb.collection('_opendata_bootstrap').insertOne({
41
+ createdAt: new Date(),
42
+ });
43
+ await this.db.mongoDb.collection('_opendata_bootstrap').deleteMany({});
44
+ this.jsonLDataProcessor = new JsonlDataProcessor(this.config.germanBusinessDataDir, async (entryArg) => {
45
+ const businessRecord = new this.CBusinessRecord();
46
+ businessRecord.id = await this.CBusinessRecord.getNewId();
47
+ businessRecord.data.name = entryArg.name;
48
+ businessRecord.data.germanParsedRegistration = {
49
+ court: entryArg.all_attributes.registered_office,
50
+ number: entryArg.all_attributes._registerNummer,
51
+ type: entryArg.all_attributes._registerArt,
52
+ };
53
+ await businessRecord.save();
54
+ });
55
+ this.handelsregister = new HandelsRegister(this, this.config.downloadDir);
56
+ await this.handelsregister.start();
57
+ this.started = true;
58
+ }
59
+ catch (error) {
60
+ if (this.handelsregister) {
61
+ await this.handelsregister.stop().catch(() => { });
62
+ }
63
+ await this.db.close().catch(() => { });
64
+ await this.localSmartDb.stop().catch(() => { });
65
+ this.localSmartDb = undefined;
66
+ throw error;
67
+ }
43
68
  }
44
69
  async buildInitialDb() {
45
70
  await this.jsonLDataProcessor.processDataFromUrl();
@@ -51,8 +76,16 @@ export class OpenData {
51
76
  async searchDbByBusinessNameAndPostalCode(businessNameArg, postalCodeArg) {
52
77
  }
53
78
  async stop() {
79
+ if (!this.started) {
80
+ return;
81
+ }
82
+ if (this.handelsregister) {
83
+ await this.handelsregister.stop();
84
+ }
54
85
  await this.db.close();
55
- await this.handelsregister.stop();
86
+ await this.localSmartDb?.stop();
87
+ this.localSmartDb = undefined;
88
+ this.started = false;
56
89
  }
57
90
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5tYWluLm9wZW5kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5tYWluLm9wZW5kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBUXhDLE1BQU0sT0FBTyxRQUFRO0lBVW5CLFlBQVksU0FBMEI7UUFGL0Isb0JBQWUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUd2RixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHVIQUF1SCxDQUFDLENBQUM7UUFDM0ksQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RGLE1BQU0sSUFBSSxLQUFLLENBQUMsb0dBQW9HLENBQUMsQ0FBQztRQUN4SCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUs7UUFDaEIsc0NBQXNDO1FBQ3RDLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FB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
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5tYWluLm9wZW5kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5tYWluLm9wZW5kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBUXhDLE1BQU0sT0FBTyxRQUFRO0lBQ1osRUFBRSxDQUFpQztJQUNsQyxZQUFZLENBQWdDO0lBQzVDLE1BQU0sQ0FBa0I7SUFDeEIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUVqQixrQkFBa0IsQ0FBcUM7SUFDdkQsZUFBZSxDQUFtQjtJQUVsQyxlQUFlLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFekYsWUFBWSxTQUEwQjtRQUNwQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHVIQUF1SCxDQUFDLENBQUM7UUFDM0ksQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RGLE1BQU0sSUFBSSxLQUFLLENBQUMsb0dBQW9HLENBQUMsQ0FBQztRQUN4SCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBRUQsc0NBQXNDO1FBQ3RDLE1BQU0sT0FB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
@@ -1,2 +1,3 @@
1
1
  export * from './classes.main.opendata.js';
2
+ export * from './laws/index.js';
2
3
  export * from './stocks/index.js';
package/dist_ts/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './classes.main.opendata.js';
2
+ export * from './laws/index.js';
2
3
  export * from './stocks/index.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsbUJBQW1CLENBQUMifQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxtQkFBbUIsQ0FBQyJ9
@@ -0,0 +1,24 @@
1
+ import * as plugins from '../plugins.js';
2
+ import type { TJurisdiction, TLawSource, TRawLawFormat } from './interfaces.law.js';
3
+ export declare class LawRecord extends plugins.smartdata.SmartDataDbDoc<LawRecord, LawRecord> {
4
+ static getByLookupKey: (lookupKeyArg: string) => Promise<LawRecord>;
5
+ id: string;
6
+ lookupKey: string;
7
+ jurisdiction: TJurisdiction;
8
+ source: TLawSource;
9
+ identifier: string;
10
+ title: string;
11
+ shortTitle: string;
12
+ citation: string;
13
+ type: string;
14
+ language: string;
15
+ sourceUrl: string;
16
+ rawFormat: TRawLawFormat;
17
+ rawBody: string;
18
+ text: string;
19
+ dateIssued: string;
20
+ lastModified: string;
21
+ sourceMeta: Record<string, string>;
22
+ fetchedAt: Date;
23
+ syncedAt: Date;
24
+ }
@@ -0,0 +1,181 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import * as plugins from '../plugins.js';
36
+ let LawRecord = (() => {
37
+ let _classDecorators = [plugins.smartdata.Manager()];
38
+ let _classDescriptor;
39
+ let _classExtraInitializers = [];
40
+ let _classThis;
41
+ let _classSuper = plugins.smartdata.SmartDataDbDoc;
42
+ let _id_decorators;
43
+ let _id_initializers = [];
44
+ let _id_extraInitializers = [];
45
+ let _lookupKey_decorators;
46
+ let _lookupKey_initializers = [];
47
+ let _lookupKey_extraInitializers = [];
48
+ let _jurisdiction_decorators;
49
+ let _jurisdiction_initializers = [];
50
+ let _jurisdiction_extraInitializers = [];
51
+ let _source_decorators;
52
+ let _source_initializers = [];
53
+ let _source_extraInitializers = [];
54
+ let _identifier_decorators;
55
+ let _identifier_initializers = [];
56
+ let _identifier_extraInitializers = [];
57
+ let _title_decorators;
58
+ let _title_initializers = [];
59
+ let _title_extraInitializers = [];
60
+ let _shortTitle_decorators;
61
+ let _shortTitle_initializers = [];
62
+ let _shortTitle_extraInitializers = [];
63
+ let _citation_decorators;
64
+ let _citation_initializers = [];
65
+ let _citation_extraInitializers = [];
66
+ let _type_decorators;
67
+ let _type_initializers = [];
68
+ let _type_extraInitializers = [];
69
+ let _language_decorators;
70
+ let _language_initializers = [];
71
+ let _language_extraInitializers = [];
72
+ let _sourceUrl_decorators;
73
+ let _sourceUrl_initializers = [];
74
+ let _sourceUrl_extraInitializers = [];
75
+ let _rawFormat_decorators;
76
+ let _rawFormat_initializers = [];
77
+ let _rawFormat_extraInitializers = [];
78
+ let _rawBody_decorators;
79
+ let _rawBody_initializers = [];
80
+ let _rawBody_extraInitializers = [];
81
+ let _text_decorators;
82
+ let _text_initializers = [];
83
+ let _text_extraInitializers = [];
84
+ let _dateIssued_decorators;
85
+ let _dateIssued_initializers = [];
86
+ let _dateIssued_extraInitializers = [];
87
+ let _lastModified_decorators;
88
+ let _lastModified_initializers = [];
89
+ let _lastModified_extraInitializers = [];
90
+ let _sourceMeta_decorators;
91
+ let _sourceMeta_initializers = [];
92
+ let _sourceMeta_extraInitializers = [];
93
+ let _fetchedAt_decorators;
94
+ let _fetchedAt_initializers = [];
95
+ let _fetchedAt_extraInitializers = [];
96
+ let _syncedAt_decorators;
97
+ let _syncedAt_initializers = [];
98
+ let _syncedAt_extraInitializers = [];
99
+ var LawRecord = class extends _classSuper {
100
+ static { _classThis = this; }
101
+ static {
102
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
103
+ _id_decorators = [plugins.smartdata.unI()];
104
+ _lookupKey_decorators = [plugins.smartdata.unI(), plugins.smartdata.svDb()];
105
+ _jurisdiction_decorators = [plugins.smartdata.index(), plugins.smartdata.svDb()];
106
+ _source_decorators = [plugins.smartdata.index(), plugins.smartdata.svDb()];
107
+ _identifier_decorators = [plugins.smartdata.searchable(), plugins.smartdata.svDb()];
108
+ _title_decorators = [plugins.smartdata.searchable(), plugins.smartdata.svDb()];
109
+ _shortTitle_decorators = [plugins.smartdata.searchable(), plugins.smartdata.svDb()];
110
+ _citation_decorators = [plugins.smartdata.searchable(), plugins.smartdata.svDb()];
111
+ _type_decorators = [plugins.smartdata.index(), plugins.smartdata.svDb()];
112
+ _language_decorators = [plugins.smartdata.index(), plugins.smartdata.svDb()];
113
+ _sourceUrl_decorators = [plugins.smartdata.svDb()];
114
+ _rawFormat_decorators = [plugins.smartdata.svDb()];
115
+ _rawBody_decorators = [plugins.smartdata.svDb()];
116
+ _text_decorators = [plugins.smartdata.searchable(), plugins.smartdata.svDb()];
117
+ _dateIssued_decorators = [plugins.smartdata.index(), plugins.smartdata.svDb()];
118
+ _lastModified_decorators = [plugins.smartdata.index(), plugins.smartdata.svDb()];
119
+ _sourceMeta_decorators = [plugins.smartdata.svDb()];
120
+ _fetchedAt_decorators = [plugins.smartdata.svDb()];
121
+ _syncedAt_decorators = [plugins.smartdata.svDb()];
122
+ __esDecorate(null, null, _id_decorators, { kind: "field", name: "id", static: false, private: false, access: { has: obj => "id" in obj, get: obj => obj.id, set: (obj, value) => { obj.id = value; } }, metadata: _metadata }, _id_initializers, _id_extraInitializers);
123
+ __esDecorate(null, null, _lookupKey_decorators, { kind: "field", name: "lookupKey", static: false, private: false, access: { has: obj => "lookupKey" in obj, get: obj => obj.lookupKey, set: (obj, value) => { obj.lookupKey = value; } }, metadata: _metadata }, _lookupKey_initializers, _lookupKey_extraInitializers);
124
+ __esDecorate(null, null, _jurisdiction_decorators, { kind: "field", name: "jurisdiction", static: false, private: false, access: { has: obj => "jurisdiction" in obj, get: obj => obj.jurisdiction, set: (obj, value) => { obj.jurisdiction = value; } }, metadata: _metadata }, _jurisdiction_initializers, _jurisdiction_extraInitializers);
125
+ __esDecorate(null, null, _source_decorators, { kind: "field", name: "source", static: false, private: false, access: { has: obj => "source" in obj, get: obj => obj.source, set: (obj, value) => { obj.source = value; } }, metadata: _metadata }, _source_initializers, _source_extraInitializers);
126
+ __esDecorate(null, null, _identifier_decorators, { kind: "field", name: "identifier", static: false, private: false, access: { has: obj => "identifier" in obj, get: obj => obj.identifier, set: (obj, value) => { obj.identifier = value; } }, metadata: _metadata }, _identifier_initializers, _identifier_extraInitializers);
127
+ __esDecorate(null, null, _title_decorators, { kind: "field", name: "title", static: false, private: false, access: { has: obj => "title" in obj, get: obj => obj.title, set: (obj, value) => { obj.title = value; } }, metadata: _metadata }, _title_initializers, _title_extraInitializers);
128
+ __esDecorate(null, null, _shortTitle_decorators, { kind: "field", name: "shortTitle", static: false, private: false, access: { has: obj => "shortTitle" in obj, get: obj => obj.shortTitle, set: (obj, value) => { obj.shortTitle = value; } }, metadata: _metadata }, _shortTitle_initializers, _shortTitle_extraInitializers);
129
+ __esDecorate(null, null, _citation_decorators, { kind: "field", name: "citation", static: false, private: false, access: { has: obj => "citation" in obj, get: obj => obj.citation, set: (obj, value) => { obj.citation = value; } }, metadata: _metadata }, _citation_initializers, _citation_extraInitializers);
130
+ __esDecorate(null, null, _type_decorators, { kind: "field", name: "type", static: false, private: false, access: { has: obj => "type" in obj, get: obj => obj.type, set: (obj, value) => { obj.type = value; } }, metadata: _metadata }, _type_initializers, _type_extraInitializers);
131
+ __esDecorate(null, null, _language_decorators, { kind: "field", name: "language", static: false, private: false, access: { has: obj => "language" in obj, get: obj => obj.language, set: (obj, value) => { obj.language = value; } }, metadata: _metadata }, _language_initializers, _language_extraInitializers);
132
+ __esDecorate(null, null, _sourceUrl_decorators, { kind: "field", name: "sourceUrl", static: false, private: false, access: { has: obj => "sourceUrl" in obj, get: obj => obj.sourceUrl, set: (obj, value) => { obj.sourceUrl = value; } }, metadata: _metadata }, _sourceUrl_initializers, _sourceUrl_extraInitializers);
133
+ __esDecorate(null, null, _rawFormat_decorators, { kind: "field", name: "rawFormat", static: false, private: false, access: { has: obj => "rawFormat" in obj, get: obj => obj.rawFormat, set: (obj, value) => { obj.rawFormat = value; } }, metadata: _metadata }, _rawFormat_initializers, _rawFormat_extraInitializers);
134
+ __esDecorate(null, null, _rawBody_decorators, { kind: "field", name: "rawBody", static: false, private: false, access: { has: obj => "rawBody" in obj, get: obj => obj.rawBody, set: (obj, value) => { obj.rawBody = value; } }, metadata: _metadata }, _rawBody_initializers, _rawBody_extraInitializers);
135
+ __esDecorate(null, null, _text_decorators, { kind: "field", name: "text", static: false, private: false, access: { has: obj => "text" in obj, get: obj => obj.text, set: (obj, value) => { obj.text = value; } }, metadata: _metadata }, _text_initializers, _text_extraInitializers);
136
+ __esDecorate(null, null, _dateIssued_decorators, { kind: "field", name: "dateIssued", static: false, private: false, access: { has: obj => "dateIssued" in obj, get: obj => obj.dateIssued, set: (obj, value) => { obj.dateIssued = value; } }, metadata: _metadata }, _dateIssued_initializers, _dateIssued_extraInitializers);
137
+ __esDecorate(null, null, _lastModified_decorators, { kind: "field", name: "lastModified", static: false, private: false, access: { has: obj => "lastModified" in obj, get: obj => obj.lastModified, set: (obj, value) => { obj.lastModified = value; } }, metadata: _metadata }, _lastModified_initializers, _lastModified_extraInitializers);
138
+ __esDecorate(null, null, _sourceMeta_decorators, { kind: "field", name: "sourceMeta", static: false, private: false, access: { has: obj => "sourceMeta" in obj, get: obj => obj.sourceMeta, set: (obj, value) => { obj.sourceMeta = value; } }, metadata: _metadata }, _sourceMeta_initializers, _sourceMeta_extraInitializers);
139
+ __esDecorate(null, null, _fetchedAt_decorators, { kind: "field", name: "fetchedAt", static: false, private: false, access: { has: obj => "fetchedAt" in obj, get: obj => obj.fetchedAt, set: (obj, value) => { obj.fetchedAt = value; } }, metadata: _metadata }, _fetchedAt_initializers, _fetchedAt_extraInitializers);
140
+ __esDecorate(null, null, _syncedAt_decorators, { kind: "field", name: "syncedAt", static: false, private: false, access: { has: obj => "syncedAt" in obj, get: obj => obj.syncedAt, set: (obj, value) => { obj.syncedAt = value; } }, metadata: _metadata }, _syncedAt_initializers, _syncedAt_extraInitializers);
141
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
142
+ LawRecord = _classThis = _classDescriptor.value;
143
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
144
+ }
145
+ static getByLookupKey = async (lookupKeyArg) => {
146
+ const lawRecords = await LawRecord.getInstances({
147
+ lookupKey: lookupKeyArg,
148
+ });
149
+ return lawRecords[0];
150
+ };
151
+ id = __runInitializers(this, _id_initializers, void 0);
152
+ lookupKey = (__runInitializers(this, _id_extraInitializers), __runInitializers(this, _lookupKey_initializers, void 0));
153
+ jurisdiction = (__runInitializers(this, _lookupKey_extraInitializers), __runInitializers(this, _jurisdiction_initializers, void 0));
154
+ source = (__runInitializers(this, _jurisdiction_extraInitializers), __runInitializers(this, _source_initializers, void 0));
155
+ identifier = (__runInitializers(this, _source_extraInitializers), __runInitializers(this, _identifier_initializers, void 0));
156
+ title = (__runInitializers(this, _identifier_extraInitializers), __runInitializers(this, _title_initializers, void 0));
157
+ shortTitle = (__runInitializers(this, _title_extraInitializers), __runInitializers(this, _shortTitle_initializers, ''));
158
+ citation = (__runInitializers(this, _shortTitle_extraInitializers), __runInitializers(this, _citation_initializers, ''));
159
+ type = (__runInitializers(this, _citation_extraInitializers), __runInitializers(this, _type_initializers, ''));
160
+ language = (__runInitializers(this, _type_extraInitializers), __runInitializers(this, _language_initializers, ''));
161
+ sourceUrl = (__runInitializers(this, _language_extraInitializers), __runInitializers(this, _sourceUrl_initializers, void 0));
162
+ rawFormat = (__runInitializers(this, _sourceUrl_extraInitializers), __runInitializers(this, _rawFormat_initializers, void 0));
163
+ rawBody = (__runInitializers(this, _rawFormat_extraInitializers), __runInitializers(this, _rawBody_initializers, void 0));
164
+ text = (__runInitializers(this, _rawBody_extraInitializers), __runInitializers(this, _text_initializers, void 0));
165
+ dateIssued = (__runInitializers(this, _text_extraInitializers), __runInitializers(this, _dateIssued_initializers, ''));
166
+ lastModified = (__runInitializers(this, _dateIssued_extraInitializers), __runInitializers(this, _lastModified_initializers, ''));
167
+ sourceMeta = (__runInitializers(this, _lastModified_extraInitializers), __runInitializers(this, _sourceMeta_initializers, {}));
168
+ fetchedAt = (__runInitializers(this, _sourceMeta_extraInitializers), __runInitializers(this, _fetchedAt_initializers, new Date()));
169
+ syncedAt = (__runInitializers(this, _fetchedAt_extraInitializers), __runInitializers(this, _syncedAt_initializers, new Date()));
170
+ constructor() {
171
+ super(...arguments);
172
+ __runInitializers(this, _syncedAt_extraInitializers);
173
+ }
174
+ static {
175
+ __runInitializers(_classThis, _classExtraInitializers);
176
+ }
177
+ };
178
+ return LawRecord = _classThis;
179
+ })();
180
+ export { LawRecord };
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5sYXdyZWNvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9sYXdzL2NsYXNzZXMubGF3cmVjb3JkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztJQUk1QixTQUFTOzRCQURyQixPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTs7OztzQkFDRyxPQUFPLENBQUMsU0FBUyxDQUFDLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUJBQXhDLFNBQVEsV0FBc0Q7Ozs7OEJBUWxGLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO3FDQUd2QixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUN2QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTt3Q0FHeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFDekIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7a0NBR3hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQ3pCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO3NDQUd4QixPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUM5QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTtpQ0FHeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFDOUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7c0NBR3hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQzlCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO29DQUd4QixPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUM5QixPQUFPLENBQUMsU0FBUyxDQUFDLElB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
@@ -0,0 +1,52 @@
1
+ import * as plugins from '../plugins.js';
2
+ import { LawRecord } from './classes.lawrecord.js';
3
+ import type { ILawLookupRequest, ILawSearchRequest, ILawServiceConfig, ILawSyncRequest, ILawSyncResult } from './interfaces.law.js';
4
+ export declare class LawService {
5
+ db: plugins.smartdata.SmartdataDb;
6
+ CLawRecord: typeof LawRecord;
7
+ private localSmartDb?;
8
+ private smartBrowser?;
9
+ private browserStarted;
10
+ private started;
11
+ private config;
12
+ constructor(configArg?: ILawServiceConfig);
13
+ start(): Promise<void>;
14
+ stop(): Promise<void>;
15
+ syncLaw(requestArg: ILawLookupRequest): Promise<LawRecord>;
16
+ getLaw(requestArg: ILawLookupRequest): Promise<LawRecord | null>;
17
+ searchLaws(requestArg: ILawSearchRequest): Promise<LawRecord[]>;
18
+ syncLaws(requestArg: ILawSyncRequest): Promise<ILawSyncResult>;
19
+ private ensureStarted;
20
+ private ensureBrowser;
21
+ private createLookupKey;
22
+ private normalizeIdentifierForLookup;
23
+ private getLawByLookupKey;
24
+ private upsertLaw;
25
+ private syncGermanyLaws;
26
+ private syncGermanyLaw;
27
+ private parseGermanyToc;
28
+ private normalizeGermanySlug;
29
+ private syncEuLaws;
30
+ private syncEuLaw;
31
+ private fetchEuLawPageContent;
32
+ private fetchEuMetadataPage;
33
+ private fetchEuMetadataByCelex;
34
+ private fetchEuMetadataFromQuery;
35
+ private syncUsLaws;
36
+ private syncUsLaw;
37
+ private syncUsCodeCitation;
38
+ private trySyncUsLawFromPublicContent;
39
+ private parseUsCodeCitation;
40
+ private buildGovInfoCollectionUrl;
41
+ private withGovInfoApiKey;
42
+ private fetchText;
43
+ private fetchJson;
44
+ private extractTagValue;
45
+ private extractTagValues;
46
+ private extractFirstMatch;
47
+ private extractUsLiiHeading;
48
+ private markupToText;
49
+ private decodeHtmlEntities;
50
+ private escapeRegex;
51
+ private firstMeaningfulLine;
52
+ }