text-to-map 1.1.45 → 1.1.47

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 (97) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +69 -69
  3. package/dist/bin/address-points.d.ts +1 -1
  4. package/dist/bin/address-points.js +16 -16
  5. package/dist/bin/cities.d.ts +1 -1
  6. package/dist/bin/cities.js +10 -10
  7. package/dist/bin/clear-all.d.ts +1 -1
  8. package/dist/bin/clear-all.js +13 -13
  9. package/dist/bin/constants.d.ts +2 -2
  10. package/dist/bin/constants.js +4 -4
  11. package/dist/bin/generate-syntax-diagrams.d.ts +1 -1
  12. package/dist/bin/generate-syntax-diagrams.js +20 -20
  13. package/dist/bin/init-db.d.ts +1 -1
  14. package/dist/bin/init-db.js +8 -8
  15. package/dist/bin/knex.d.ts +1 -1
  16. package/dist/bin/knex.js +10 -10
  17. package/dist/bin/parse-ordinance.d.ts +1 -1
  18. package/dist/bin/parse-ordinance.js +74 -74
  19. package/dist/bin/polygons.d.ts +1 -1
  20. package/dist/bin/polygons.js +27 -27
  21. package/dist/bin/regions.d.ts +1 -1
  22. package/dist/bin/regions.js +10 -10
  23. package/dist/bin/schools.d.ts +1 -1
  24. package/dist/bin/schools.js +10 -10
  25. package/dist/bin/streets.d.ts +1 -1
  26. package/dist/bin/streets.js +19 -19
  27. package/dist/bin/sync-all.d.ts +1 -1
  28. package/dist/bin/sync-all.js +4 -4
  29. package/dist/db/address-points.d.ts +59 -59
  30. package/dist/db/address-points.js +401 -399
  31. package/dist/db/cities.d.ts +7 -7
  32. package/dist/db/cities.js +95 -95
  33. package/dist/db/db.d.ts +37 -37
  34. package/dist/db/db.js +191 -191
  35. package/dist/db/founders.d.ts +14 -14
  36. package/dist/db/founders.js +461 -461
  37. package/dist/db/meta.d.ts +4 -4
  38. package/dist/db/meta.js +26 -26
  39. package/dist/db/migrations/20230704125715_initial.js +304 -304
  40. package/dist/db/migrations/20230731232915_city_positions.js +13 -13
  41. package/dist/db/migrations/20240106224603_city_polygon.js +11 -11
  42. package/dist/db/migrations/20240320200534_district_polygon.js +11 -11
  43. package/dist/db/migrations/20250316162700_kindergartens.js +12 -12
  44. package/dist/db/regions.d.ts +31 -31
  45. package/dist/db/regions.js +81 -81
  46. package/dist/db/schools.d.ts +7 -7
  47. package/dist/db/schools.js +95 -95
  48. package/dist/db/street-sync.d.ts +6 -6
  49. package/dist/db/street-sync.js +22 -22
  50. package/dist/db/sync-log.d.ts +9 -9
  51. package/dist/db/sync-log.js +66 -66
  52. package/dist/db/types.d.ts +59 -59
  53. package/dist/db/types.js +26 -26
  54. package/dist/index.d.ts +23 -23
  55. package/dist/index.js +32 -32
  56. package/dist/open-data-sync/address-points.d.ts +2 -2
  57. package/dist/open-data-sync/address-points.js +68 -68
  58. package/dist/open-data-sync/cities.d.ts +2 -2
  59. package/dist/open-data-sync/cities.js +32 -32
  60. package/dist/open-data-sync/common.d.ts +2 -2
  61. package/dist/open-data-sync/common.js +22 -22
  62. package/dist/open-data-sync/regions.d.ts +2 -2
  63. package/dist/open-data-sync/regions.js +37 -37
  64. package/dist/open-data-sync/schools.d.ts +3 -3
  65. package/dist/open-data-sync/schools.js +207 -207
  66. package/dist/open-data-sync/streets.d.ts +2 -2
  67. package/dist/open-data-sync/streets.js +132 -132
  68. package/dist/smd-to-csv/json-to-csv.d.ts +1 -1
  69. package/dist/smd-to-csv/json-to-csv.js +154 -154
  70. package/dist/smd-to-csv/ordinance-to-csv-rules.d.ts +1 -1
  71. package/dist/smd-to-csv/ordinance-to-csv-rules.js +23 -23
  72. package/dist/smd-to-csv/txt-to-json.d.ts +1 -1
  73. package/dist/smd-to-csv/txt-to-json.js +92 -92
  74. package/dist/souradnice.csv +6260 -6260
  75. package/dist/street-markdown/municipality.d.ts +11 -11
  76. package/dist/street-markdown/municipality.js +116 -116
  77. package/dist/street-markdown/polygons.d.ts +7 -7
  78. package/dist/street-markdown/polygons.js +261 -261
  79. package/dist/street-markdown/roman-numerals.d.ts +1 -1
  80. package/dist/street-markdown/roman-numerals.js +68 -68
  81. package/dist/street-markdown/smd-line-parser.d.ts +4 -4
  82. package/dist/street-markdown/smd-line-parser.js +40 -40
  83. package/dist/street-markdown/smd-parser.d.ts +23 -23
  84. package/dist/street-markdown/smd-parser.js +393 -393
  85. package/dist/street-markdown/smd.d.ts +24 -24
  86. package/dist/street-markdown/smd.js +440 -440
  87. package/dist/street-markdown/token-definition.d.ts +25 -25
  88. package/dist/street-markdown/token-definition.js +168 -168
  89. package/dist/street-markdown/types.d.ts +148 -148
  90. package/dist/street-markdown/types.js +13 -13
  91. package/dist/utils/atom.d.ts +2 -2
  92. package/dist/utils/atom.js +57 -57
  93. package/dist/utils/helpers.d.ts +28 -28
  94. package/dist/utils/helpers.js +176 -176
  95. package/dist/utils/jtsk2wgs84.d.ts +17 -17
  96. package/dist/utils/jtsk2wgs84.js +82 -82
  97. package/package.json +109 -109
package/dist/db/types.js CHANGED
@@ -1,26 +1,26 @@
1
- export var SchoolType;
2
- (function (SchoolType) {
3
- SchoolType[SchoolType["Kindergarten"] = 0] = "Kindergarten";
4
- SchoolType[SchoolType["Elementary"] = 1] = "Elementary";
5
- })(SchoolType || (SchoolType = {}));
6
- export var MunicipalityType;
7
- (function (MunicipalityType) {
8
- MunicipalityType[MunicipalityType["City"] = 0] = "City";
9
- MunicipalityType[MunicipalityType["District"] = 1] = "District";
10
- MunicipalityType[MunicipalityType["Other"] = 2] = "Other";
11
- })(MunicipalityType || (MunicipalityType = {}));
12
- export const founderToMunicipality = (founder) => {
13
- return {
14
- type: founder.municipalityType,
15
- code: founder.municipalityCode,
16
- };
17
- };
18
- export var SyncPart;
19
- (function (SyncPart) {
20
- SyncPart["AddressPoints"] = "address-points";
21
- SyncPart["Schools"] = "schools";
22
- SyncPart["Regions"] = "regions";
23
- SyncPart["Streets"] = "streets";
24
- SyncPart["Cities"] = "cities";
25
- })(SyncPart || (SyncPart = {}));
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksVUFHWDtBQUhELFdBQVksVUFBVTtJQUNwQiwyREFBZ0IsQ0FBQTtJQUNoQix1REFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxVQUFVLEtBQVYsVUFBVSxRQUdyQjtBQTBCRCxNQUFNLENBQU4sSUFBWSxnQkFJWDtBQUpELFdBQVksZ0JBQWdCO0lBQzFCLHVEQUFJLENBQUE7SUFDSiwrREFBUSxDQUFBO0lBQ1IseURBQUssQ0FBQTtBQUNQLENBQUMsRUFKVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSTNCO0FBb0JELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBZ0IsRUFBZ0IsRUFBRTtJQUN0RSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7UUFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7S0FDL0IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQVFGLE1BQU0sQ0FBTixJQUFZLFFBTVg7QUFORCxXQUFZLFFBQVE7SUFDbEIsNENBQWdDLENBQUE7SUFDaEMsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsNkJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQU5XLFFBQVEsS0FBUixRQUFRLFFBTW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24sIE11bHRpUG9seWdvbiwgUG9seWdvbiB9IGZyb20gXCJAdHVyZi9oZWxwZXJzXCI7XHJcblxyXG5leHBvcnQgZW51bSBTY2hvb2xUeXBlIHtcclxuICBLaW5kZXJnYXJ0ZW4gPSAwLFxyXG4gIEVsZW1lbnRhcnkgPSAxLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNjaG9vbExvY2F0aW9uIHtcclxuICBpZD86IG51bWJlcjtcclxuICBzY2hvb2xJem8/OiBudW1iZXI7XHJcbiAgYWRkcmVzc1BvaW50SWQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTY2hvb2wge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpem86IHN0cmluZztcclxuICByZWRpem86IHN0cmluZztcclxuICBjYXBhY2l0eTogbnVtYmVyO1xyXG4gIHR5cGU6IFNjaG9vbFR5cGU7XHJcbiAgbG9jYXRpb25zOiBTY2hvb2xMb2NhdGlvbltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvdW5kZXIge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpY286IHN0cmluZztcclxuICBvcmlnaW5hbFR5cGU/OiBudW1iZXI7XHJcbiAgbXVuaWNpcGFsaXR5VHlwZTogTXVuaWNpcGFsaXR5VHlwZTtcclxuICBtdW5pY2lwYWxpdHlDb2RlPzogbnVtYmVyO1xyXG4gIHNjaG9vbHM6IFNjaG9vbFtdO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBNdW5pY2lwYWxpdHlUeXBlIHtcclxuICBDaXR5LFxyXG4gIERpc3RyaWN0LFxyXG4gIE90aGVyLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uIHtcclxuICBsYXQ6IG51bWJlcjtcclxuICBsbmc6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNdW5pY2lwYWxpdHkge1xyXG4gIHR5cGU6IE11bmljaXBhbGl0eVR5cGU7XHJcbiAgY29kZTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBNdW5pY2lwYWxpdHlXaXRoUG9zaXRpb24gPSBNdW5pY2lwYWxpdHkgJiBQb3NpdGlvbjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2VXaXRoUG9zaXRpb24ge1xyXG4gIGNvZGU6IG51bWJlcjtcclxuICBsYXQ6IG51bWJlcjtcclxuICBsbmc6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGZvdW5kZXJUb011bmljaXBhbGl0eSA9IChmb3VuZGVyOiBGb3VuZGVyKTogTXVuaWNpcGFsaXR5ID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgdHlwZTogZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlLFxyXG4gICAgY29kZTogZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gIH07XHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERiZlN0cmVldCB7XHJcbiAgS09EOiBzdHJpbmc7XHJcbiAgTkFaRVY6IHN0cmluZztcclxuICBPQkVDX0tPRDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBTeW5jUGFydCB7XHJcbiAgQWRkcmVzc1BvaW50cyA9IFwiYWRkcmVzcy1wb2ludHNcIixcclxuICBTY2hvb2xzID0gXCJzY2hvb2xzXCIsXHJcbiAgUmVnaW9ucyA9IFwicmVnaW9uc1wiLFxyXG4gIFN0cmVldHMgPSBcInN0cmVldHNcIixcclxuICBDaXRpZXMgPSBcImNpdGllc1wiLFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQb2x5Z29uc0J5Q29kZXMgPSBSZWNvcmQ8XHJcbiAgbnVtYmVyLFxyXG4gIEZlYXR1cmVDb2xsZWN0aW9uPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+XHJcbj47XHJcbiJdfQ==
1
+ export var SchoolType;
2
+ (function (SchoolType) {
3
+ SchoolType[SchoolType["Kindergarten"] = 0] = "Kindergarten";
4
+ SchoolType[SchoolType["Elementary"] = 1] = "Elementary";
5
+ })(SchoolType || (SchoolType = {}));
6
+ export var MunicipalityType;
7
+ (function (MunicipalityType) {
8
+ MunicipalityType[MunicipalityType["City"] = 0] = "City";
9
+ MunicipalityType[MunicipalityType["District"] = 1] = "District";
10
+ MunicipalityType[MunicipalityType["Other"] = 2] = "Other";
11
+ })(MunicipalityType || (MunicipalityType = {}));
12
+ export const founderToMunicipality = (founder) => {
13
+ return {
14
+ type: founder.municipalityType,
15
+ code: founder.municipalityCode,
16
+ };
17
+ };
18
+ export var SyncPart;
19
+ (function (SyncPart) {
20
+ SyncPart["AddressPoints"] = "address-points";
21
+ SyncPart["Schools"] = "schools";
22
+ SyncPart["Regions"] = "regions";
23
+ SyncPart["Streets"] = "streets";
24
+ SyncPart["Cities"] = "cities";
25
+ })(SyncPart || (SyncPart = {}));
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksVUFHWDtBQUhELFdBQVksVUFBVTtJQUNwQiwyREFBZ0IsQ0FBQTtJQUNoQix1REFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxVQUFVLEtBQVYsVUFBVSxRQUdyQjtBQTBCRCxNQUFNLENBQU4sSUFBWSxnQkFJWDtBQUpELFdBQVksZ0JBQWdCO0lBQzFCLHVEQUFJLENBQUE7SUFDSiwrREFBUSxDQUFBO0lBQ1IseURBQUssQ0FBQTtBQUNQLENBQUMsRUFKVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSTNCO0FBb0JELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBZ0IsRUFBZ0IsRUFBRTtJQUN0RSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7UUFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7S0FDL0IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQVFGLE1BQU0sQ0FBTixJQUFZLFFBTVg7QUFORCxXQUFZLFFBQVE7SUFDbEIsNENBQWdDLENBQUE7SUFDaEMsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsNkJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQU5XLFFBQVEsS0FBUixRQUFRLFFBTW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24sIE11bHRpUG9seWdvbiwgUG9seWdvbiB9IGZyb20gXCJAdHVyZi9oZWxwZXJzXCI7XG5cbmV4cG9ydCBlbnVtIFNjaG9vbFR5cGUge1xuICBLaW5kZXJnYXJ0ZW4gPSAwLFxuICBFbGVtZW50YXJ5ID0gMSxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2hvb2xMb2NhdGlvbiB7XG4gIGlkPzogbnVtYmVyO1xuICBzY2hvb2xJem8/OiBudW1iZXI7XG4gIGFkZHJlc3NQb2ludElkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Nob29sIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpem86IHN0cmluZztcbiAgcmVkaXpvOiBzdHJpbmc7XG4gIGNhcGFjaXR5OiBudW1iZXI7XG4gIHR5cGU6IFNjaG9vbFR5cGU7XG4gIGxvY2F0aW9uczogU2Nob29sTG9jYXRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3VuZGVyIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpY286IHN0cmluZztcbiAgb3JpZ2luYWxUeXBlPzogbnVtYmVyO1xuICBtdW5pY2lwYWxpdHlUeXBlOiBNdW5pY2lwYWxpdHlUeXBlO1xuICBtdW5pY2lwYWxpdHlDb2RlPzogbnVtYmVyO1xuICBzY2hvb2xzOiBTY2hvb2xbXTtcbn1cblxuZXhwb3J0IGVudW0gTXVuaWNpcGFsaXR5VHlwZSB7XG4gIENpdHksXG4gIERpc3RyaWN0LFxuICBPdGhlcixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbiB7XG4gIGxhdDogbnVtYmVyO1xuICBsbmc6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdW5pY2lwYWxpdHkge1xuICB0eXBlOiBNdW5pY2lwYWxpdHlUeXBlO1xuICBjb2RlOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIE11bmljaXBhbGl0eVdpdGhQb3NpdGlvbiA9IE11bmljaXBhbGl0eSAmIFBvc2l0aW9uO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWNlV2l0aFBvc2l0aW9uIHtcbiAgY29kZTogbnVtYmVyO1xuICBsYXQ6IG51bWJlcjtcbiAgbG5nOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBmb3VuZGVyVG9NdW5pY2lwYWxpdHkgPSAoZm91bmRlcjogRm91bmRlcik6IE11bmljaXBhbGl0eSA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlLFxuICAgIGNvZGU6IGZvdW5kZXIubXVuaWNpcGFsaXR5Q29kZSxcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJmU3RyZWV0IHtcbiAgS09EOiBzdHJpbmc7XG4gIE5BWkVWOiBzdHJpbmc7XG4gIE9CRUNfS09EOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFN5bmNQYXJ0IHtcbiAgQWRkcmVzc1BvaW50cyA9IFwiYWRkcmVzcy1wb2ludHNcIixcbiAgU2Nob29scyA9IFwic2Nob29sc1wiLFxuICBSZWdpb25zID0gXCJyZWdpb25zXCIsXG4gIFN0cmVldHMgPSBcInN0cmVldHNcIixcbiAgQ2l0aWVzID0gXCJjaXRpZXNcIixcbn1cblxuZXhwb3J0IHR5cGUgUG9seWdvbnNCeUNvZGVzID0gUmVjb3JkPFxuICBudW1iZXIsXG4gIEZlYXR1cmVDb2xsZWN0aW9uPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+XG4+O1xuIl19
package/dist/index.d.ts CHANGED
@@ -1,23 +1,23 @@
1
- import { clearDb, initDb } from "./db/db";
2
- import { downloadAndImportAddressPoints } from "./open-data-sync/address-points";
3
- import { importCities } from "./open-data-sync/cities";
4
- import { downloadAndImportRegions } from "./open-data-sync/regions";
5
- import { downloadAndImportSchools } from "./open-data-sync/schools";
6
- import { downloadAndImportStreets } from "./open-data-sync/streets";
7
- import { municipalitiesToPolygons } from "./street-markdown/polygons";
8
- import { OpenDataSyncOptionsPartial } from "./utils/helpers";
9
- export * from "./street-markdown/smd";
10
- export * from "./street-markdown/types";
11
- /**
12
- * Download and import all open data to SQLite DB. The DB file will be located
13
- * in the `dataDir` folder.
14
- * @param options Options for the sync
15
- * @param syncStreets Streets sync takes around 1 hour, so it might be skipped.
16
- * ```typescript
17
- * import { downloadAndImportEverything } from "text-to-map";
18
- *
19
- * await downloadAndImportEverything({ tmpDir: "./tmp", dataDir: "./data" });
20
- * ```
21
- */
22
- export declare function downloadAndImportEverything(options?: OpenDataSyncOptionsPartial, syncStreets?: boolean): Promise<void>;
23
- export { clearDb, downloadAndImportAddressPoints, downloadAndImportRegions, downloadAndImportSchools, downloadAndImportStreets, importCities, municipalitiesToPolygons, initDb, };
1
+ import { clearDb, initDb } from "./db/db";
2
+ import { downloadAndImportAddressPoints } from "./open-data-sync/address-points";
3
+ import { importCities } from "./open-data-sync/cities";
4
+ import { downloadAndImportRegions } from "./open-data-sync/regions";
5
+ import { downloadAndImportSchools } from "./open-data-sync/schools";
6
+ import { downloadAndImportStreets } from "./open-data-sync/streets";
7
+ import { municipalitiesToPolygons } from "./street-markdown/polygons";
8
+ import { OpenDataSyncOptionsPartial } from "./utils/helpers";
9
+ export * from "./street-markdown/smd";
10
+ export * from "./street-markdown/types";
11
+ /**
12
+ * Download and import all open data to SQLite DB. The DB file will be located
13
+ * in the `dataDir` folder.
14
+ * @param options Options for the sync
15
+ * @param syncStreets Streets sync takes around 1 hour, so it might be skipped.
16
+ * ```typescript
17
+ * import { downloadAndImportEverything } from "text-to-map";
18
+ *
19
+ * await downloadAndImportEverything({ tmpDir: "./tmp", dataDir: "./data" });
20
+ * ```
21
+ */
22
+ export declare function downloadAndImportEverything(options?: OpenDataSyncOptionsPartial, syncStreets?: boolean): Promise<void>;
23
+ export { clearDb, downloadAndImportAddressPoints, downloadAndImportRegions, downloadAndImportSchools, downloadAndImportStreets, importCities, municipalitiesToPolygons, initDb, };
package/dist/index.js CHANGED
@@ -1,32 +1,32 @@
1
- import { clearDb, initDb } from "./db/db";
2
- import { downloadAndImportAddressPoints } from "./open-data-sync/address-points";
3
- import { importCities } from "./open-data-sync/cities";
4
- import { downloadAndImportRegions } from "./open-data-sync/regions";
5
- import { downloadAndImportSchools } from "./open-data-sync/schools";
6
- import { downloadAndImportStreets } from "./open-data-sync/streets";
7
- import { municipalitiesToPolygons } from "./street-markdown/polygons";
8
- export * from "./street-markdown/smd";
9
- export * from "./street-markdown/types";
10
- /**
11
- * Download and import all open data to SQLite DB. The DB file will be located
12
- * in the `dataDir` folder.
13
- * @param options Options for the sync
14
- * @param syncStreets Streets sync takes around 1 hour, so it might be skipped.
15
- * ```typescript
16
- * import { downloadAndImportEverything } from "text-to-map";
17
- *
18
- * await downloadAndImportEverything({ tmpDir: "./tmp", dataDir: "./data" });
19
- * ```
20
- */
21
- export async function downloadAndImportEverything(options = {}, syncStreets = true) {
22
- await initDb();
23
- await downloadAndImportAddressPoints(options);
24
- await downloadAndImportSchools(options);
25
- await downloadAndImportRegions(options);
26
- await importCities(options);
27
- if (syncStreets) {
28
- await downloadAndImportStreets(options);
29
- }
30
- }
31
- export { clearDb, downloadAndImportAddressPoints, downloadAndImportRegions, downloadAndImportSchools, downloadAndImportStreets, importCities, municipalitiesToPolygons, initDb, };
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3RFLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSwyQkFBMkIsQ0FDL0MsVUFBc0MsRUFBRSxFQUN4QyxjQUF1QixJQUFJO0lBRTNCLE1BQU0sTUFBTSxFQUFFLENBQUM7SUFDZixNQUFNLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLE1BQU0sd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsTUFBTSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxNQUFNLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QixJQUFJLFdBQVcsRUFBRTtRQUNmLE1BQU0sd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDekM7QUFDSCxDQUFDO0FBRUQsT0FBTyxFQUNMLE9BQU8sRUFDUCw4QkFBOEIsRUFDOUIsd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixNQUFNLEdBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsZWFyRGIsIGluaXREYiB9IGZyb20gXCIuL2RiL2RiXCI7XHJcbmltcG9ydCB7IGRvd25sb2FkQW5kSW1wb3J0QWRkcmVzc1BvaW50cyB9IGZyb20gXCIuL29wZW4tZGF0YS1zeW5jL2FkZHJlc3MtcG9pbnRzXCI7XHJcbmltcG9ydCB7IGltcG9ydENpdGllcyB9IGZyb20gXCIuL29wZW4tZGF0YS1zeW5jL2NpdGllc1wiO1xyXG5pbXBvcnQgeyBkb3dubG9hZEFuZEltcG9ydFJlZ2lvbnMgfSBmcm9tIFwiLi9vcGVuLWRhdGEtc3luYy9yZWdpb25zXCI7XHJcbmltcG9ydCB7IGRvd25sb2FkQW5kSW1wb3J0U2Nob29scyB9IGZyb20gXCIuL29wZW4tZGF0YS1zeW5jL3NjaG9vbHNcIjtcclxuaW1wb3J0IHsgZG93bmxvYWRBbmRJbXBvcnRTdHJlZXRzIH0gZnJvbSBcIi4vb3Blbi1kYXRhLXN5bmMvc3RyZWV0c1wiO1xyXG5pbXBvcnQgeyBtdW5pY2lwYWxpdGllc1RvUG9seWdvbnMgfSBmcm9tIFwiLi9zdHJlZXQtbWFya2Rvd24vcG9seWdvbnNcIjtcclxuaW1wb3J0IHsgT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwgfSBmcm9tIFwiLi91dGlscy9oZWxwZXJzXCI7XHJcblxyXG5leHBvcnQgKiBmcm9tIFwiLi9zdHJlZXQtbWFya2Rvd24vc21kXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3N0cmVldC1tYXJrZG93bi90eXBlc1wiO1xyXG5cclxuLyoqXHJcbiAqIERvd25sb2FkIGFuZCBpbXBvcnQgYWxsIG9wZW4gZGF0YSB0byBTUUxpdGUgREIuIFRoZSBEQiBmaWxlIHdpbGwgYmUgbG9jYXRlZFxyXG4gKiBpbiB0aGUgYGRhdGFEaXJgIGZvbGRlci5cclxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHN5bmNcclxuICogQHBhcmFtIHN5bmNTdHJlZXRzIFN0cmVldHMgc3luYyB0YWtlcyBhcm91bmQgMSBob3VyLCBzbyBpdCBtaWdodCBiZSBza2lwcGVkLlxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7IGRvd25sb2FkQW5kSW1wb3J0RXZlcnl0aGluZyB9IGZyb20gXCJ0ZXh0LXRvLW1hcFwiO1xyXG4gKlxyXG4gKiBhd2FpdCBkb3dubG9hZEFuZEltcG9ydEV2ZXJ5dGhpbmcoeyB0bXBEaXI6IFwiLi90bXBcIiwgZGF0YURpcjogXCIuL2RhdGFcIiB9KTtcclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRBbmRJbXBvcnRFdmVyeXRoaW5nKFxyXG4gIG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnNQYXJ0aWFsID0ge30sXHJcbiAgc3luY1N0cmVldHM6IGJvb2xlYW4gPSB0cnVlXHJcbikge1xyXG4gIGF3YWl0IGluaXREYigpO1xyXG4gIGF3YWl0IGRvd25sb2FkQW5kSW1wb3J0QWRkcmVzc1BvaW50cyhvcHRpb25zKTtcclxuICBhd2FpdCBkb3dubG9hZEFuZEltcG9ydFNjaG9vbHMob3B0aW9ucyk7XHJcbiAgYXdhaXQgZG93bmxvYWRBbmRJbXBvcnRSZWdpb25zKG9wdGlvbnMpO1xyXG4gIGF3YWl0IGltcG9ydENpdGllcyhvcHRpb25zKTtcclxuICBpZiAoc3luY1N0cmVldHMpIHtcclxuICAgIGF3YWl0IGRvd25sb2FkQW5kSW1wb3J0U3RyZWV0cyhvcHRpb25zKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7XHJcbiAgY2xlYXJEYixcclxuICBkb3dubG9hZEFuZEltcG9ydEFkZHJlc3NQb2ludHMsXHJcbiAgZG93bmxvYWRBbmRJbXBvcnRSZWdpb25zLFxyXG4gIGRvd25sb2FkQW5kSW1wb3J0U2Nob29scyxcclxuICBkb3dubG9hZEFuZEltcG9ydFN0cmVldHMsXHJcbiAgaW1wb3J0Q2l0aWVzLFxyXG4gIG11bmljaXBhbGl0aWVzVG9Qb2x5Z29ucyxcclxuICBpbml0RGIsXHJcbn07XHJcbiJdfQ==
1
+ import { clearDb, initDb } from "./db/db";
2
+ import { downloadAndImportAddressPoints } from "./open-data-sync/address-points";
3
+ import { importCities } from "./open-data-sync/cities";
4
+ import { downloadAndImportRegions } from "./open-data-sync/regions";
5
+ import { downloadAndImportSchools } from "./open-data-sync/schools";
6
+ import { downloadAndImportStreets } from "./open-data-sync/streets";
7
+ import { municipalitiesToPolygons } from "./street-markdown/polygons";
8
+ export * from "./street-markdown/smd";
9
+ export * from "./street-markdown/types";
10
+ /**
11
+ * Download and import all open data to SQLite DB. The DB file will be located
12
+ * in the `dataDir` folder.
13
+ * @param options Options for the sync
14
+ * @param syncStreets Streets sync takes around 1 hour, so it might be skipped.
15
+ * ```typescript
16
+ * import { downloadAndImportEverything } from "text-to-map";
17
+ *
18
+ * await downloadAndImportEverything({ tmpDir: "./tmp", dataDir: "./data" });
19
+ * ```
20
+ */
21
+ export async function downloadAndImportEverything(options = {}, syncStreets = true) {
22
+ await initDb();
23
+ await downloadAndImportAddressPoints(options);
24
+ await downloadAndImportSchools(options);
25
+ await downloadAndImportRegions(options);
26
+ await importCities(options);
27
+ if (syncStreets) {
28
+ await downloadAndImportStreets(options);
29
+ }
30
+ }
31
+ export { clearDb, downloadAndImportAddressPoints, downloadAndImportRegions, downloadAndImportSchools, downloadAndImportStreets, importCities, municipalitiesToPolygons, initDb, };
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3RFLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSwyQkFBMkIsQ0FDL0MsVUFBc0MsRUFBRSxFQUN4QyxjQUF1QixJQUFJO0lBRTNCLE1BQU0sTUFBTSxFQUFFLENBQUM7SUFDZixNQUFNLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLE1BQU0sd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsTUFBTSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxNQUFNLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QixJQUFJLFdBQVcsRUFBRTtRQUNmLE1BQU0sd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDekM7QUFDSCxDQUFDO0FBRUQsT0FBTyxFQUNMLE9BQU8sRUFDUCw4QkFBOEIsRUFDOUIsd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixNQUFNLEdBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsZWFyRGIsIGluaXREYiB9IGZyb20gXCIuL2RiL2RiXCI7XG5pbXBvcnQgeyBkb3dubG9hZEFuZEltcG9ydEFkZHJlc3NQb2ludHMgfSBmcm9tIFwiLi9vcGVuLWRhdGEtc3luYy9hZGRyZXNzLXBvaW50c1wiO1xuaW1wb3J0IHsgaW1wb3J0Q2l0aWVzIH0gZnJvbSBcIi4vb3Blbi1kYXRhLXN5bmMvY2l0aWVzXCI7XG5pbXBvcnQgeyBkb3dubG9hZEFuZEltcG9ydFJlZ2lvbnMgfSBmcm9tIFwiLi9vcGVuLWRhdGEtc3luYy9yZWdpb25zXCI7XG5pbXBvcnQgeyBkb3dubG9hZEFuZEltcG9ydFNjaG9vbHMgfSBmcm9tIFwiLi9vcGVuLWRhdGEtc3luYy9zY2hvb2xzXCI7XG5pbXBvcnQgeyBkb3dubG9hZEFuZEltcG9ydFN0cmVldHMgfSBmcm9tIFwiLi9vcGVuLWRhdGEtc3luYy9zdHJlZXRzXCI7XG5pbXBvcnQgeyBtdW5pY2lwYWxpdGllc1RvUG9seWdvbnMgfSBmcm9tIFwiLi9zdHJlZXQtbWFya2Rvd24vcG9seWdvbnNcIjtcbmltcG9ydCB7IE9wZW5EYXRhU3luY09wdGlvbnNQYXJ0aWFsIH0gZnJvbSBcIi4vdXRpbHMvaGVscGVyc1wiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9zdHJlZXQtbWFya2Rvd24vc21kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdHJlZXQtbWFya2Rvd24vdHlwZXNcIjtcblxuLyoqXG4gKiBEb3dubG9hZCBhbmQgaW1wb3J0IGFsbCBvcGVuIGRhdGEgdG8gU1FMaXRlIERCLiBUaGUgREIgZmlsZSB3aWxsIGJlIGxvY2F0ZWRcbiAqIGluIHRoZSBgZGF0YURpcmAgZm9sZGVyLlxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHN5bmNcbiAqIEBwYXJhbSBzeW5jU3RyZWV0cyBTdHJlZXRzIHN5bmMgdGFrZXMgYXJvdW5kIDEgaG91ciwgc28gaXQgbWlnaHQgYmUgc2tpcHBlZC5cbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGRvd25sb2FkQW5kSW1wb3J0RXZlcnl0aGluZyB9IGZyb20gXCJ0ZXh0LXRvLW1hcFwiO1xuICpcbiAqIGF3YWl0IGRvd25sb2FkQW5kSW1wb3J0RXZlcnl0aGluZyh7IHRtcERpcjogXCIuL3RtcFwiLCBkYXRhRGlyOiBcIi4vZGF0YVwiIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb3dubG9hZEFuZEltcG9ydEV2ZXJ5dGhpbmcoXG4gIG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnNQYXJ0aWFsID0ge30sXG4gIHN5bmNTdHJlZXRzOiBib29sZWFuID0gdHJ1ZVxuKSB7XG4gIGF3YWl0IGluaXREYigpO1xuICBhd2FpdCBkb3dubG9hZEFuZEltcG9ydEFkZHJlc3NQb2ludHMob3B0aW9ucyk7XG4gIGF3YWl0IGRvd25sb2FkQW5kSW1wb3J0U2Nob29scyhvcHRpb25zKTtcbiAgYXdhaXQgZG93bmxvYWRBbmRJbXBvcnRSZWdpb25zKG9wdGlvbnMpO1xuICBhd2FpdCBpbXBvcnRDaXRpZXMob3B0aW9ucyk7XG4gIGlmIChzeW5jU3RyZWV0cykge1xuICAgIGF3YWl0IGRvd25sb2FkQW5kSW1wb3J0U3RyZWV0cyhvcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBjbGVhckRiLFxuICBkb3dubG9hZEFuZEltcG9ydEFkZHJlc3NQb2ludHMsXG4gIGRvd25sb2FkQW5kSW1wb3J0UmVnaW9ucyxcbiAgZG93bmxvYWRBbmRJbXBvcnRTY2hvb2xzLFxuICBkb3dubG9hZEFuZEltcG9ydFN0cmVldHMsXG4gIGltcG9ydENpdGllcyxcbiAgbXVuaWNpcGFsaXRpZXNUb1BvbHlnb25zLFxuICBpbml0RGIsXG59O1xuIl19
@@ -1,2 +1,2 @@
1
- import { OpenDataSyncOptionsPartial } from "../utils/helpers";
2
- export declare const downloadAndImportAddressPoints: (options?: OpenDataSyncOptionsPartial) => Promise<void>;
1
+ import { OpenDataSyncOptionsPartial } from "../utils/helpers";
2
+ export declare const downloadAndImportAddressPoints: (options?: OpenDataSyncOptionsPartial) => Promise<void>;
@@ -1,68 +1,68 @@
1
- import AdmZip from "adm-zip";
2
- import { parse } from "csv-parse";
3
- import { createReadStream, createWriteStream, readdirSync, rmSync } from "fs";
4
- import iconv from "iconv-lite";
5
- import fetch from "node-fetch";
6
- import { join } from "path";
7
- import { pipeline } from "stream/promises";
8
- import chunk from "lodash/chunk";
9
- import { commitAddressPoints, removeDeprecatedAddressPoints, } from "../db/address-points";
10
- import { SyncPart } from "../db/types";
11
- import { getLatestUrlFromAtomFeed } from "../utils/atom";
12
- import { prepareOptions, } from "../utils/helpers";
13
- import { runSyncPart } from "./common";
14
- const maxBufferSize = 1000;
15
- const downloadAndUnzip = async (url, options) => {
16
- const zipFilePath = join(options.tmpDir, options.addressPointsZipFileName);
17
- console.log("Downloading a large ZIP file with RUIAN data (~65 MB)...");
18
- const response = await fetch(url);
19
- if (response.status !== 200) {
20
- throw new Error(`The ZIP file could not be downloaded. HTTP Code: ${response.status}`);
21
- }
22
- await pipeline(response.body, createWriteStream(zipFilePath));
23
- console.log("Finished downloading.");
24
- const zip = new AdmZip(zipFilePath);
25
- console.log(`Starting to unzip CSV files to '${options.tmpDir}'`);
26
- zip.extractAllTo(options.tmpDir, true);
27
- console.log("Unzip completed.");
28
- rmSync(zipFilePath);
29
- console.log("Removed the ZIP file.");
30
- };
31
- const importDataToDb = async (options) => {
32
- const extractionFolder = getExtractionFolder(options);
33
- const files = readdirSync(extractionFolder);
34
- let total = 0;
35
- let next = 0;
36
- console.log("Initiating import of RUIAN data to search DB (~3 million rows to be imported).");
37
- const allIds = new Set();
38
- for (const [i, file] of files.entries()) {
39
- const rows = [];
40
- const parseStream = parse({ delimiter: ";", fromLine: 2 }).on("data", async (data) => {
41
- rows.push(data);
42
- allIds.add(parseInt(data[0]));
43
- });
44
- await pipeline(createReadStream(join(extractionFolder, file)), iconv.decodeStream("win1250"), parseStream);
45
- const chunks = chunk(rows, maxBufferSize);
46
- await Promise.all(chunks.map(async (chunk) => {
47
- total += await commitAddressPoints(chunk);
48
- if (total - next >= 100000) {
49
- next += 100000;
50
- console.log(`Total imported rows: ${next}`);
51
- }
52
- }));
53
- console.log(`${i + 1}/${files.length} files imported.`);
54
- }
55
- await removeDeprecatedAddressPoints(allIds);
56
- console.log(`Import completed. Total imported rows: ${total}`);
57
- };
58
- const getExtractionFolder = (options) => join(options.tmpDir, options.addressPointsCsvFolderName);
59
- export const downloadAndImportAddressPoints = async (options = {}) => {
60
- await runSyncPart(SyncPart.AddressPoints, [], async () => {
61
- const completeOptions = prepareOptions(options);
62
- const datasetFeedLink = await getLatestUrlFromAtomFeed(completeOptions.addressPointsAtomUrl);
63
- const zipUrl = await getLatestUrlFromAtomFeed(datasetFeedLink);
64
- await downloadAndUnzip(zipUrl, completeOptions);
65
- await importDataToDb(completeOptions);
66
- });
67
- };
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1wb2ludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3Blbi1kYXRhLXN5bmMvYWRkcmVzcy1wb2ludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDOUUsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFDakMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQiw2QkFBNkIsR0FDOUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBR0wsY0FBYyxHQUNmLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFFM0IsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQzVCLEdBQVcsRUFDWCxPQUE0QixFQUNiLEVBQUU7SUFDakIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFM0UsT0FBTyxDQUFDLEdBQUcsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO0lB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QUMsTUFBTSxDQUFDLENBQUM7SUFFNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNqRSxDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsT0FBNEIsRUFBRSxFQUFFLENBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLEtBQUssRUFDakQsVUFBc0MsRUFBRSxFQUN6QixFQUFFO0lBQ2pCLE1BQU0sV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3ZELE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLGVBQWUsR0FBRyxNQUFNLHdCQUF3QixDQUNwRCxlQUFlLENBQUMsb0JBQW9CLENBQ3JDLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFkbVppcCBmcm9tIFwiYWRtLXppcFwiO1xyXG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJjc3YtcGFyc2VcIjtcclxuaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSwgY3JlYXRlV3JpdGVTdHJlYW0sIHJlYWRkaXJTeW5jLCBybVN5bmMgfSBmcm9tIFwiZnNcIjtcclxuaW1wb3J0IGljb252IGZyb20gXCJpY29udi1saXRlXCI7XHJcbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiO1xyXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcclxuaW1wb3J0IHsgcGlwZWxpbmUgfSBmcm9tIFwic3RyZWFtL3Byb21pc2VzXCI7XHJcbmltcG9ydCBjaHVuayBmcm9tIFwibG9kYXNoL2NodW5rXCI7XHJcbmltcG9ydCB7XHJcbiAgY29tbWl0QWRkcmVzc1BvaW50cyxcclxuICByZW1vdmVEZXByZWNhdGVkQWRkcmVzc1BvaW50cyxcclxufSBmcm9tIFwiLi4vZGIvYWRkcmVzcy1wb2ludHNcIjtcclxuaW1wb3J0IHsgU3luY1BhcnQgfSBmcm9tIFwiLi4vZGIvdHlwZXNcIjtcclxuaW1wb3J0IHsgZ2V0TGF0ZXN0VXJsRnJvbUF0b21GZWVkIH0gZnJvbSBcIi4uL3V0aWxzL2F0b21cIjtcclxuaW1wb3J0IHtcclxuICBPcGVuRGF0YVN5bmNPcHRpb25zLFxyXG4gIE9wZW5EYXRhU3luY09wdGlvbnNQYXJ0aWFsLFxyXG4gIHByZXBhcmVPcHRpb25zLFxyXG59IGZyb20gXCIuLi91dGlscy9oZWxwZXJzXCI7XHJcbmltcG9ydCB7IHJ1blN5bmNQYXJ0IH0gZnJvbSBcIi4vY29tbW9uXCI7XHJcblxyXG5jb25zdCBtYXhCdWZmZXJTaXplID0gMTAwMDtcclxuXHJcbmNvbnN0IGRvd25sb2FkQW5kVW56aXAgPSBhc3luYyAoXHJcbiAgdXJsOiBzdHJpbmcsXHJcbiAgb3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9uc1xyXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcclxuICBjb25zdCB6aXBGaWxlUGF0aCA9IGpvaW4ob3B0aW9ucy50bXBEaXIsIG9wdGlvbnMuYWRkcmVzc1BvaW50c1ppcEZpbGVOYW1lKTtcclxuXHJcbiAgY29uc29sZS5sb2coXCJEb3dubG9hZGluZyBhIGxhcmdlIFpJUCBmaWxlIHdpdGggUlVJQU4gZGF0YSAofjY1IE1CKS4uLlwiKTtcclxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCk7XHJcbiAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gMjAwKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgIGBUaGUgWklQIGZpbGUgY291bGQgbm90IGJlIGRvd25sb2FkZWQuIEhUVFAgQ29kZTogJHtyZXNwb25zZS5zdGF0dXN9YFxyXG4gICAgKTtcclxuICB9XHJcbiAgYXdhaXQgcGlwZWxpbmUocmVzcG9uc2UuYm9keSwgY3JlYXRlV3JpdGVTdHJlYW0oemlwRmlsZVBhdGgpKTtcclxuXHJcbiAgY29uc29sZS5sb2coXCJGaW5pc2hlZCBkb3dubG9hZGluZy5cIik7XHJcbiAgY29uc3QgemlwID0gbmV3IEFkbVppcCh6aXBGaWxlUGF0aCk7XHJcblxyXG4gIGNvbnNvbGUubG9nKGBTdGFydGluZyB0byB1bnppcCBDU1YgZmlsZXMgdG8gJyR7b3B0aW9ucy50bXBEaXJ9J2ApO1xyXG4gIHppcC5leHRyYWN0QWxsVG8ob3B0aW9ucy50bXBEaXIsIHRydWUpO1xyXG4gIGNvbnNvbGUubG9nKFwiVW56aXAgY29tcGxldGVkLlwiKTtcclxuXHJcbiAgcm1TeW5jKHppcEZpbGVQYXRoKTtcclxuICBjb25zb2xlLmxvZyhcIlJlbW92ZWQgdGhlIFpJUCBmaWxlLlwiKTtcclxufTtcclxuXHJcbmNvbnN0IGltcG9ydERhdGFUb0RiID0gYXN5bmMgKG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnMpID0+IHtcclxuICBjb25zdCBleHRyYWN0aW9uRm9sZGVyID0gZ2V0RXh0cmFjdGlvbkZvbGRlcihvcHRpb25zKTtcclxuXHJcbiAgY29uc3QgZmlsZXMgPSByZWFkZGlyU3luYyhleHRyYWN0aW9uRm9sZGVyKTtcclxuXHJcbiAgbGV0IHRvdGFsID0gMDtcclxuICBsZXQgbmV4dCA9IDA7XHJcblxyXG4gIGNvbnNvbGUubG9nKFxyXG4gICAgXCJJbml0aWF0aW5nIGltcG9ydCBvZiBSVUlBTiBkYXRhIHRvIHNlYXJjaCBEQiAofjMgbWlsbGlvbiByb3dzIHRvIGJlIGltcG9ydGVkKS5cIlxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGFsbElkcyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xyXG5cclxuICBmb3IgKGNvbnN0IFtpLCBmaWxlXSBvZiBmaWxlcy5lbnRyaWVzKCkpIHtcclxuICAgIGNvbnN0IHJvd3M6IHN0cmluZ1tdW10gPSBbXTtcclxuICAgIGNvbnN0IHBhcnNlU3RyZWFtID0gcGFyc2UoeyBkZWxpbWl0ZXI6IFwiO1wiLCBmcm9tTGluZTogMiB9KS5vbihcclxuICAgICAgXCJkYXRhXCIsXHJcbiAgICAgIGFzeW5jIChkYXRhKSA9PiB7XHJcbiAgICAgICAgcm93cy5wdXNoKGRhdGEpO1xyXG4gICAgICAgIGFsbElkcy5hZGQocGFyc2VJbnQoZGF0YVswXSkpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIGF3YWl0IHBpcGVsaW5lKFxyXG4gICAgICBjcmVhdGVSZWFkU3RyZWFtKGpvaW4oZXh0cmFjdGlvbkZvbGRlciwgZmlsZSkpLFxyXG4gICAgICBpY29udi5kZWNvZGVTdHJlYW0oXCJ3aW4xMjUwXCIpLFxyXG4gICAgICBwYXJzZVN0cmVhbVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBjaHVua3MgPSBjaHVuayhyb3dzLCBtYXhCdWZmZXJTaXplKTtcclxuXHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgY2h1bmtzLm1hcChhc3luYyAoY2h1bmspID0+IHtcclxuICAgICAgICB0b3RhbCArPSBhd2FpdCBjb21taXRBZGRyZXNzUG9pbnRzKGNodW5rKTtcclxuXHJcbiAgICAgICAgaWYgKHRvdGFsIC0gbmV4dCA+PSAxMDAwMDApIHtcclxuICAgICAgICAgIG5leHQgKz0gMTAwMDAwO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coYFRvdGFsIGltcG9ydGVkIHJvd3M6ICR7bmV4dH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKGAke2kgKyAxfS8ke2ZpbGVzLmxlbmd0aH0gZmlsZXMgaW1wb3J0ZWQuYCk7XHJcbiAgfVxyXG5cclxuICBhd2FpdCByZW1vdmVEZXByZWNhdGVkQWRkcmVzc1BvaW50cyhhbGxJZHMpO1xyXG5cclxuICBjb25zb2xlLmxvZyhgSW1wb3J0IGNvbXBsZXRlZC4gVG90YWwgaW1wb3J0ZWQgcm93czogJHt0b3RhbH1gKTtcclxufTtcclxuXHJcbmNvbnN0IGdldEV4dHJhY3Rpb25Gb2xkZXIgPSAob3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9ucykgPT5cclxuICBqb2luKG9wdGlvbnMudG1wRGlyLCBvcHRpb25zLmFkZHJlc3NQb2ludHNDc3ZGb2xkZXJOYW1lKTtcclxuXHJcbmV4cG9ydCBjb25zdCBkb3dubG9hZEFuZEltcG9ydEFkZHJlc3NQb2ludHMgPSBhc3luYyAoXHJcbiAgb3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwgPSB7fVxyXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcclxuICBhd2FpdCBydW5TeW5jUGFydChTeW5jUGFydC5BZGRyZXNzUG9pbnRzLCBbXSwgYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgY29tcGxldGVPcHRpb25zID0gcHJlcGFyZU9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICBjb25zdCBkYXRhc2V0RmVlZExpbmsgPSBhd2FpdCBnZXRMYXRlc3RVcmxGcm9tQXRvbUZlZWQoXHJcbiAgICAgIGNvbXBsZXRlT3B0aW9ucy5hZGRyZXNzUG9pbnRzQXRvbVVybFxyXG4gICAgKTtcclxuICAgIGNvbnN0IHppcFVybCA9IGF3YWl0IGdldExhdGVzdFVybEZyb21BdG9tRmVlZChkYXRhc2V0RmVlZExpbmspO1xyXG4gICAgYXdhaXQgZG93bmxvYWRBbmRVbnppcCh6aXBVcmwsIGNvbXBsZXRlT3B0aW9ucyk7XHJcbiAgICBhd2FpdCBpbXBvcnREYXRhVG9EYihjb21wbGV0ZU9wdGlvbnMpO1xyXG4gIH0pO1xyXG59O1xyXG4iXX0=
1
+ import AdmZip from "adm-zip";
2
+ import { parse } from "csv-parse";
3
+ import { createReadStream, createWriteStream, readdirSync, rmSync } from "fs";
4
+ import iconv from "iconv-lite";
5
+ import fetch from "node-fetch";
6
+ import { join } from "path";
7
+ import { pipeline } from "stream/promises";
8
+ import chunk from "lodash/chunk";
9
+ import { commitAddressPoints, removeDeprecatedAddressPoints, } from "../db/address-points";
10
+ import { SyncPart } from "../db/types";
11
+ import { getLatestUrlFromAtomFeed } from "../utils/atom";
12
+ import { prepareOptions, } from "../utils/helpers";
13
+ import { runSyncPart } from "./common";
14
+ const maxBufferSize = 1000;
15
+ const downloadAndUnzip = async (url, options) => {
16
+ const zipFilePath = join(options.tmpDir, options.addressPointsZipFileName);
17
+ console.log("Downloading a large ZIP file with RUIAN data (~65 MB)...");
18
+ const response = await fetch(url);
19
+ if (response.status !== 200) {
20
+ throw new Error(`The ZIP file could not be downloaded. HTTP Code: ${response.status}`);
21
+ }
22
+ await pipeline(response.body, createWriteStream(zipFilePath));
23
+ console.log("Finished downloading.");
24
+ const zip = new AdmZip(zipFilePath);
25
+ console.log(`Starting to unzip CSV files to '${options.tmpDir}'`);
26
+ zip.extractAllTo(options.tmpDir, true);
27
+ console.log("Unzip completed.");
28
+ rmSync(zipFilePath);
29
+ console.log("Removed the ZIP file.");
30
+ };
31
+ const importDataToDb = async (options) => {
32
+ const extractionFolder = getExtractionFolder(options);
33
+ const files = readdirSync(extractionFolder);
34
+ let total = 0;
35
+ let next = 0;
36
+ console.log("Initiating import of RUIAN data to search DB (~3 million rows to be imported).");
37
+ const allIds = new Set();
38
+ for (const [i, file] of files.entries()) {
39
+ const rows = [];
40
+ const parseStream = parse({ delimiter: ";", fromLine: 2 }).on("data", async (data) => {
41
+ rows.push(data);
42
+ allIds.add(parseInt(data[0]));
43
+ });
44
+ await pipeline(createReadStream(join(extractionFolder, file)), iconv.decodeStream("win1250"), parseStream);
45
+ const chunks = chunk(rows, maxBufferSize);
46
+ await Promise.all(chunks.map(async (chunk) => {
47
+ total += await commitAddressPoints(chunk);
48
+ if (total - next >= 100000) {
49
+ next += 100000;
50
+ console.log(`Total imported rows: ${next}`);
51
+ }
52
+ }));
53
+ console.log(`${i + 1}/${files.length} files imported.`);
54
+ }
55
+ await removeDeprecatedAddressPoints(allIds);
56
+ console.log(`Import completed. Total imported rows: ${total}`);
57
+ };
58
+ const getExtractionFolder = (options) => join(options.tmpDir, options.addressPointsCsvFolderName);
59
+ export const downloadAndImportAddressPoints = async (options = {}) => {
60
+ await runSyncPart(SyncPart.AddressPoints, [], async () => {
61
+ const completeOptions = prepareOptions(options);
62
+ const datasetFeedLink = await getLatestUrlFromAtomFeed(completeOptions.addressPointsAtomUrl);
63
+ const zipUrl = await getLatestUrlFromAtomFeed(datasetFeedLink);
64
+ await downloadAndUnzip(zipUrl, completeOptions);
65
+ await importDataToDb(completeOptions);
66
+ });
67
+ };
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy1wb2ludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3Blbi1kYXRhLXN5bmMvYWRkcmVzcy1wb2ludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDOUUsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFDakMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQiw2QkFBNkIsR0FDOUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBR0wsY0FBYyxHQUNmLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFFM0IsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQzVCLEdBQVcsRUFDWCxPQUE0QixFQUNiLEVBQUU7SUFDakIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFM0UsT0FBTyxDQUFDLEdBQUcsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO0lB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QUMsTUFBTSxDQUFDLENBQUM7SUFFNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNqRSxDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsT0FBNEIsRUFBRSxFQUFFLENBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLEtBQUssRUFDakQsVUFBc0MsRUFBRSxFQUN6QixFQUFFO0lBQ2pCLE1BQU0sV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3ZELE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLGVBQWUsR0FBRyxNQUFNLHdCQUF3QixDQUNwRCxlQUFlLENBQUMsb0JBQW9CLENBQ3JDLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sZ0JBQWdCLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFkbVppcCBmcm9tIFwiYWRtLXppcFwiO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiY3N2LXBhcnNlXCI7XG5pbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtLCBjcmVhdGVXcml0ZVN0cmVhbSwgcmVhZGRpclN5bmMsIHJtU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IGljb252IGZyb20gXCJpY29udi1saXRlXCI7XG5pbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgcGlwZWxpbmUgfSBmcm9tIFwic3RyZWFtL3Byb21pc2VzXCI7XG5pbXBvcnQgY2h1bmsgZnJvbSBcImxvZGFzaC9jaHVua1wiO1xuaW1wb3J0IHtcbiAgY29tbWl0QWRkcmVzc1BvaW50cyxcbiAgcmVtb3ZlRGVwcmVjYXRlZEFkZHJlc3NQb2ludHMsXG59IGZyb20gXCIuLi9kYi9hZGRyZXNzLXBvaW50c1wiO1xuaW1wb3J0IHsgU3luY1BhcnQgfSBmcm9tIFwiLi4vZGIvdHlwZXNcIjtcbmltcG9ydCB7IGdldExhdGVzdFVybEZyb21BdG9tRmVlZCB9IGZyb20gXCIuLi91dGlscy9hdG9tXCI7XG5pbXBvcnQge1xuICBPcGVuRGF0YVN5bmNPcHRpb25zLFxuICBPcGVuRGF0YVN5bmNPcHRpb25zUGFydGlhbCxcbiAgcHJlcGFyZU9wdGlvbnMsXG59IGZyb20gXCIuLi91dGlscy9oZWxwZXJzXCI7XG5pbXBvcnQgeyBydW5TeW5jUGFydCB9IGZyb20gXCIuL2NvbW1vblwiO1xuXG5jb25zdCBtYXhCdWZmZXJTaXplID0gMTAwMDtcblxuY29uc3QgZG93bmxvYWRBbmRVbnppcCA9IGFzeW5jIChcbiAgdXJsOiBzdHJpbmcsXG4gIG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnNcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCB6aXBGaWxlUGF0aCA9IGpvaW4ob3B0aW9ucy50bXBEaXIsIG9wdGlvbnMuYWRkcmVzc1BvaW50c1ppcEZpbGVOYW1lKTtcblxuICBjb25zb2xlLmxvZyhcIkRvd25sb2FkaW5nIGEgbGFyZ2UgWklQIGZpbGUgd2l0aCBSVUlBTiBkYXRhICh+NjUgTUIpLi4uXCIpO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCk7XG4gIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDIwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBUaGUgWklQIGZpbGUgY291bGQgbm90IGJlIGRvd25sb2FkZWQuIEhUVFAgQ29kZTogJHtyZXNwb25zZS5zdGF0dXN9YFxuICAgICk7XG4gIH1cbiAgYXdhaXQgcGlwZWxpbmUocmVzcG9uc2UuYm9keSwgY3JlYXRlV3JpdGVTdHJlYW0oemlwRmlsZVBhdGgpKTtcblxuICBjb25zb2xlLmxvZyhcIkZpbmlzaGVkIGRvd25sb2FkaW5nLlwiKTtcbiAgY29uc3QgemlwID0gbmV3IEFkbVppcCh6aXBGaWxlUGF0aCk7XG5cbiAgY29uc29sZS5sb2coYFN0YXJ0aW5nIHRvIHVuemlwIENTViBmaWxlcyB0byAnJHtvcHRpb25zLnRtcERpcn0nYCk7XG4gIHppcC5leHRyYWN0QWxsVG8ob3B0aW9ucy50bXBEaXIsIHRydWUpO1xuICBjb25zb2xlLmxvZyhcIlVuemlwIGNvbXBsZXRlZC5cIik7XG5cbiAgcm1TeW5jKHppcEZpbGVQYXRoKTtcbiAgY29uc29sZS5sb2coXCJSZW1vdmVkIHRoZSBaSVAgZmlsZS5cIik7XG59O1xuXG5jb25zdCBpbXBvcnREYXRhVG9EYiA9IGFzeW5jIChvcHRpb25zOiBPcGVuRGF0YVN5bmNPcHRpb25zKSA9PiB7XG4gIGNvbnN0IGV4dHJhY3Rpb25Gb2xkZXIgPSBnZXRFeHRyYWN0aW9uRm9sZGVyKG9wdGlvbnMpO1xuXG4gIGNvbnN0IGZpbGVzID0gcmVhZGRpclN5bmMoZXh0cmFjdGlvbkZvbGRlcik7XG5cbiAgbGV0IHRvdGFsID0gMDtcbiAgbGV0IG5leHQgPSAwO1xuXG4gIGNvbnNvbGUubG9nKFxuICAgIFwiSW5pdGlhdGluZyBpbXBvcnQgb2YgUlVJQU4gZGF0YSB0byBzZWFyY2ggREIgKH4zIG1pbGxpb24gcm93cyB0byBiZSBpbXBvcnRlZCkuXCJcbiAgKTtcblxuICBjb25zdCBhbGxJZHMgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICBmb3IgKGNvbnN0IFtpLCBmaWxlXSBvZiBmaWxlcy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCByb3dzOiBzdHJpbmdbXVtdID0gW107XG4gICAgY29uc3QgcGFyc2VTdHJlYW0gPSBwYXJzZSh7IGRlbGltaXRlcjogXCI7XCIsIGZyb21MaW5lOiAyIH0pLm9uKFxuICAgICAgXCJkYXRhXCIsXG4gICAgICBhc3luYyAoZGF0YSkgPT4ge1xuICAgICAgICByb3dzLnB1c2goZGF0YSk7XG4gICAgICAgIGFsbElkcy5hZGQocGFyc2VJbnQoZGF0YVswXSkpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBhd2FpdCBwaXBlbGluZShcbiAgICAgIGNyZWF0ZVJlYWRTdHJlYW0oam9pbihleHRyYWN0aW9uRm9sZGVyLCBmaWxlKSksXG4gICAgICBpY29udi5kZWNvZGVTdHJlYW0oXCJ3aW4xMjUwXCIpLFxuICAgICAgcGFyc2VTdHJlYW1cbiAgICApO1xuXG4gICAgY29uc3QgY2h1bmtzID0gY2h1bmsocm93cywgbWF4QnVmZmVyU2l6ZSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNodW5rcy5tYXAoYXN5bmMgKGNodW5rKSA9PiB7XG4gICAgICAgIHRvdGFsICs9IGF3YWl0IGNvbW1pdEFkZHJlc3NQb2ludHMoY2h1bmspO1xuXG4gICAgICAgIGlmICh0b3RhbCAtIG5leHQgPj0gMTAwMDAwKSB7XG4gICAgICAgICAgbmV4dCArPSAxMDAwMDA7XG4gICAgICAgICAgY29uc29sZS5sb2coYFRvdGFsIGltcG9ydGVkIHJvd3M6ICR7bmV4dH1gKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc29sZS5sb2coYCR7aSArIDF9LyR7ZmlsZXMubGVuZ3RofSBmaWxlcyBpbXBvcnRlZC5gKTtcbiAgfVxuXG4gIGF3YWl0IHJlbW92ZURlcHJlY2F0ZWRBZGRyZXNzUG9pbnRzKGFsbElkcyk7XG5cbiAgY29uc29sZS5sb2coYEltcG9ydCBjb21wbGV0ZWQuIFRvdGFsIGltcG9ydGVkIHJvd3M6ICR7dG90YWx9YCk7XG59O1xuXG5jb25zdCBnZXRFeHRyYWN0aW9uRm9sZGVyID0gKG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnMpID0+XG4gIGpvaW4ob3B0aW9ucy50bXBEaXIsIG9wdGlvbnMuYWRkcmVzc1BvaW50c0NzdkZvbGRlck5hbWUpO1xuXG5leHBvcnQgY29uc3QgZG93bmxvYWRBbmRJbXBvcnRBZGRyZXNzUG9pbnRzID0gYXN5bmMgKFxuICBvcHRpb25zOiBPcGVuRGF0YVN5bmNPcHRpb25zUGFydGlhbCA9IHt9XG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgYXdhaXQgcnVuU3luY1BhcnQoU3luY1BhcnQuQWRkcmVzc1BvaW50cywgW10sIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjb21wbGV0ZU9wdGlvbnMgPSBwcmVwYXJlT3B0aW9ucyhvcHRpb25zKTtcbiAgICBjb25zdCBkYXRhc2V0RmVlZExpbmsgPSBhd2FpdCBnZXRMYXRlc3RVcmxGcm9tQXRvbUZlZWQoXG4gICAgICBjb21wbGV0ZU9wdGlvbnMuYWRkcmVzc1BvaW50c0F0b21VcmxcbiAgICApO1xuICAgIGNvbnN0IHppcFVybCA9IGF3YWl0IGdldExhdGVzdFVybEZyb21BdG9tRmVlZChkYXRhc2V0RmVlZExpbmspO1xuICAgIGF3YWl0IGRvd25sb2FkQW5kVW56aXAoemlwVXJsLCBjb21wbGV0ZU9wdGlvbnMpO1xuICAgIGF3YWl0IGltcG9ydERhdGFUb0RiKGNvbXBsZXRlT3B0aW9ucyk7XG4gIH0pO1xufTtcbiJdfQ==
@@ -1,2 +1,2 @@
1
- import { OpenDataSyncOptionsPartial } from "../utils/helpers";
2
- export declare const importCities: (options?: OpenDataSyncOptionsPartial) => Promise<void>;
1
+ import { OpenDataSyncOptionsPartial } from "../utils/helpers";
2
+ export declare const importCities: (options?: OpenDataSyncOptionsPartial) => Promise<void>;
@@ -1,32 +1,32 @@
1
- import { parse } from "csv-parse";
2
- import iconv from "iconv-lite";
3
- import { pipeline } from "stream/promises";
4
- import { createReadStream } from "fs";
5
- import { dirname, join } from "path";
6
- import { fileURLToPath } from "url";
7
- import { insertCityPositions } from "../db/cities";
8
- import { SyncPart } from "../db/types";
9
- import { prepareOptions, } from "../utils/helpers";
10
- import { runSyncPart } from "./common";
11
- const importDataToDb = async (options) => {
12
- console.log("Starting to parse CSV file...");
13
- const __filename = fileURLToPath(import.meta.url);
14
- const __dirname = dirname(__filename);
15
- // source: https://github.com/33bcdd/souradnice-mest/blob/master/souradnice.csv
16
- const csvStream = createReadStream(join(__dirname, "..", "souradnice.csv"));
17
- const rows = [];
18
- const parseStream = parse({ delimiter: ",", fromLine: 2 }).on("data", (data) => {
19
- rows.push(data);
20
- });
21
- await pipeline(csvStream, iconv.decodeStream("utf-8"), parseStream);
22
- console.log("Parsing completed. Starting to import data to DB...");
23
- await insertCityPositions(rows);
24
- console.log(`Import completed. Total imported rows: ${rows.length}`);
25
- };
26
- export const importCities = async (options = {}) => {
27
- await runSyncPart(SyncPart.Regions, [], async () => {
28
- const completeOptions = prepareOptions(options);
29
- await importDataToDb(completeOptions);
30
- });
31
- };
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2l0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW4tZGF0YS1zeW5jL2NpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDcEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUdMLGNBQWMsR0FDZixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkMsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLE9BQTRCLEVBQUUsRUFBRTtJQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFFN0MsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLCtFQUErRTtJQUMvRSxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFFNUUsTUFBTSxJQUFJLEdBQWUsRUFBRSxDQUFDO0lBQzVCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUMzRCxNQUFNLEVBQ04sQ0FBQyxJQUFjLEVBQUUsRUFBRTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FDRixDQUFDO0lBRUYsTUFBTSxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFcEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0lBRW5FLE1BQU0sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFDL0IsVUFBc0MsRUFBRSxFQUN6QixFQUFFO0lBQ2pCLE1BQU0sV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pELE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlIH0gZnJvbSBcImNzdi1wYXJzZVwiO1xyXG5pbXBvcnQgaWNvbnYgZnJvbSBcImljb252LWxpdGVcIjtcclxuaW1wb3J0IHsgcGlwZWxpbmUgfSBmcm9tIFwic3RyZWFtL3Byb21pc2VzXCI7XHJcblxyXG5pbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtIH0gZnJvbSBcImZzXCI7XHJcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwicGF0aFwiO1xyXG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcInVybFwiO1xyXG5pbXBvcnQgeyBpbnNlcnRDaXR5UG9zaXRpb25zIH0gZnJvbSBcIi4uL2RiL2NpdGllc1wiO1xyXG5pbXBvcnQgeyBTeW5jUGFydCB9IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5pbXBvcnQge1xyXG4gIE9wZW5EYXRhU3luY09wdGlvbnMsXHJcbiAgT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwsXHJcbiAgcHJlcGFyZU9wdGlvbnMsXHJcbn0gZnJvbSBcIi4uL3V0aWxzL2hlbHBlcnNcIjtcclxuaW1wb3J0IHsgcnVuU3luY1BhcnQgfSBmcm9tIFwiLi9jb21tb25cIjtcclxuXHJcbmNvbnN0IGltcG9ydERhdGFUb0RiID0gYXN5bmMgKG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnMpID0+IHtcclxuICBjb25zb2xlLmxvZyhcIlN0YXJ0aW5nIHRvIHBhcnNlIENTViBmaWxlLi4uXCIpO1xyXG5cclxuICBjb25zdCBfX2ZpbGVuYW1lID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpO1xyXG4gIGNvbnN0IF9fZGlybmFtZSA9IGRpcm5hbWUoX19maWxlbmFtZSk7XHJcblxyXG4gIC8vIHNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tLzMzYmNkZC9zb3VyYWRuaWNlLW1lc3QvYmxvYi9tYXN0ZXIvc291cmFkbmljZS5jc3ZcclxuICBjb25zdCBjc3ZTdHJlYW0gPSBjcmVhdGVSZWFkU3RyZWFtKGpvaW4oX19kaXJuYW1lLCBcIi4uXCIsIFwic291cmFkbmljZS5jc3ZcIikpO1xyXG5cclxuICBjb25zdCByb3dzOiBzdHJpbmdbXVtdID0gW107XHJcbiAgY29uc3QgcGFyc2VTdHJlYW0gPSBwYXJzZSh7IGRlbGltaXRlcjogXCIsXCIsIGZyb21MaW5lOiAyIH0pLm9uKFxyXG4gICAgXCJkYXRhXCIsXHJcbiAgICAoZGF0YTogc3RyaW5nW10pID0+IHtcclxuICAgICAgcm93cy5wdXNoKGRhdGEpO1xyXG4gICAgfVxyXG4gICk7XHJcblxyXG4gIGF3YWl0IHBpcGVsaW5lKGNzdlN0cmVhbSwgaWNvbnYuZGVjb2RlU3RyZWFtKFwidXRmLThcIiksIHBhcnNlU3RyZWFtKTtcclxuXHJcbiAgY29uc29sZS5sb2coXCJQYXJzaW5nIGNvbXBsZXRlZC4gU3RhcnRpbmcgdG8gaW1wb3J0IGRhdGEgdG8gREIuLi5cIik7XHJcblxyXG4gIGF3YWl0IGluc2VydENpdHlQb3NpdGlvbnMocm93cyk7XHJcblxyXG4gIGNvbnNvbGUubG9nKGBJbXBvcnQgY29tcGxldGVkLiBUb3RhbCBpbXBvcnRlZCByb3dzOiAke3Jvd3MubGVuZ3RofWApO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGltcG9ydENpdGllcyA9IGFzeW5jIChcclxuICBvcHRpb25zOiBPcGVuRGF0YVN5bmNPcHRpb25zUGFydGlhbCA9IHt9XHJcbik6IFByb21pc2U8dm9pZD4gPT4ge1xyXG4gIGF3YWl0IHJ1blN5bmNQYXJ0KFN5bmNQYXJ0LlJlZ2lvbnMsIFtdLCBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBjb21wbGV0ZU9wdGlvbnMgPSBwcmVwYXJlT3B0aW9ucyhvcHRpb25zKTtcclxuICAgIGF3YWl0IGltcG9ydERhdGFUb0RiKGNvbXBsZXRlT3B0aW9ucyk7XHJcbiAgfSk7XHJcbn07XHJcbiJdfQ==
1
+ import { parse } from "csv-parse";
2
+ import iconv from "iconv-lite";
3
+ import { pipeline } from "stream/promises";
4
+ import { createReadStream } from "fs";
5
+ import { dirname, join } from "path";
6
+ import { fileURLToPath } from "url";
7
+ import { insertCityPositions } from "../db/cities";
8
+ import { SyncPart } from "../db/types";
9
+ import { prepareOptions, } from "../utils/helpers";
10
+ import { runSyncPart } from "./common";
11
+ const importDataToDb = async (options) => {
12
+ console.log("Starting to parse CSV file...");
13
+ const __filename = fileURLToPath(import.meta.url);
14
+ const __dirname = dirname(__filename);
15
+ // source: https://github.com/33bcdd/souradnice-mest/blob/master/souradnice.csv
16
+ const csvStream = createReadStream(join(__dirname, "..", "souradnice.csv"));
17
+ const rows = [];
18
+ const parseStream = parse({ delimiter: ",", fromLine: 2 }).on("data", (data) => {
19
+ rows.push(data);
20
+ });
21
+ await pipeline(csvStream, iconv.decodeStream("utf-8"), parseStream);
22
+ console.log("Parsing completed. Starting to import data to DB...");
23
+ await insertCityPositions(rows);
24
+ console.log(`Import completed. Total imported rows: ${rows.length}`);
25
+ };
26
+ export const importCities = async (options = {}) => {
27
+ await runSyncPart(SyncPart.Regions, [], async () => {
28
+ const completeOptions = prepareOptions(options);
29
+ await importDataToDb(completeOptions);
30
+ });
31
+ };
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2l0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW4tZGF0YS1zeW5jL2NpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDcEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUdMLGNBQWMsR0FDZixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkMsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLE9BQTRCLEVBQUUsRUFBRTtJQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFFN0MsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLCtFQUErRTtJQUMvRSxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFFNUUsTUFBTSxJQUFJLEdBQWUsRUFBRSxDQUFDO0lBQzVCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUMzRCxNQUFNLEVBQ04sQ0FBQyxJQUFjLEVBQUUsRUFBRTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FDRixDQUFDO0lBRUYsTUFBTSxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFcEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0lBRW5FLE1BQU0sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFDL0IsVUFBc0MsRUFBRSxFQUN6QixFQUFFO0lBQ2pCLE1BQU0sV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pELE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlIH0gZnJvbSBcImNzdi1wYXJzZVwiO1xuaW1wb3J0IGljb252IGZyb20gXCJpY29udi1saXRlXCI7XG5pbXBvcnQgeyBwaXBlbGluZSB9IGZyb20gXCJzdHJlYW0vcHJvbWlzZXNcIjtcblxuaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcInVybFwiO1xuaW1wb3J0IHsgaW5zZXJ0Q2l0eVBvc2l0aW9ucyB9IGZyb20gXCIuLi9kYi9jaXRpZXNcIjtcbmltcG9ydCB7IFN5bmNQYXJ0IH0gZnJvbSBcIi4uL2RiL3R5cGVzXCI7XG5pbXBvcnQge1xuICBPcGVuRGF0YVN5bmNPcHRpb25zLFxuICBPcGVuRGF0YVN5bmNPcHRpb25zUGFydGlhbCxcbiAgcHJlcGFyZU9wdGlvbnMsXG59IGZyb20gXCIuLi91dGlscy9oZWxwZXJzXCI7XG5pbXBvcnQgeyBydW5TeW5jUGFydCB9IGZyb20gXCIuL2NvbW1vblwiO1xuXG5jb25zdCBpbXBvcnREYXRhVG9EYiA9IGFzeW5jIChvcHRpb25zOiBPcGVuRGF0YVN5bmNPcHRpb25zKSA9PiB7XG4gIGNvbnNvbGUubG9nKFwiU3RhcnRpbmcgdG8gcGFyc2UgQ1NWIGZpbGUuLi5cIik7XG5cbiAgY29uc3QgX19maWxlbmFtZSA9IGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKTtcbiAgY29uc3QgX19kaXJuYW1lID0gZGlybmFtZShfX2ZpbGVuYW1lKTtcblxuICAvLyBzb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS8zM2JjZGQvc291cmFkbmljZS1tZXN0L2Jsb2IvbWFzdGVyL3NvdXJhZG5pY2UuY3N2XG4gIGNvbnN0IGNzdlN0cmVhbSA9IGNyZWF0ZVJlYWRTdHJlYW0oam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCJzb3VyYWRuaWNlLmNzdlwiKSk7XG5cbiAgY29uc3Qgcm93czogc3RyaW5nW11bXSA9IFtdO1xuICBjb25zdCBwYXJzZVN0cmVhbSA9IHBhcnNlKHsgZGVsaW1pdGVyOiBcIixcIiwgZnJvbUxpbmU6IDIgfSkub24oXG4gICAgXCJkYXRhXCIsXG4gICAgKGRhdGE6IHN0cmluZ1tdKSA9PiB7XG4gICAgICByb3dzLnB1c2goZGF0YSk7XG4gICAgfVxuICApO1xuXG4gIGF3YWl0IHBpcGVsaW5lKGNzdlN0cmVhbSwgaWNvbnYuZGVjb2RlU3RyZWFtKFwidXRmLThcIiksIHBhcnNlU3RyZWFtKTtcblxuICBjb25zb2xlLmxvZyhcIlBhcnNpbmcgY29tcGxldGVkLiBTdGFydGluZyB0byBpbXBvcnQgZGF0YSB0byBEQi4uLlwiKTtcblxuICBhd2FpdCBpbnNlcnRDaXR5UG9zaXRpb25zKHJvd3MpO1xuXG4gIGNvbnNvbGUubG9nKGBJbXBvcnQgY29tcGxldGVkLiBUb3RhbCBpbXBvcnRlZCByb3dzOiAke3Jvd3MubGVuZ3RofWApO1xufTtcblxuZXhwb3J0IGNvbnN0IGltcG9ydENpdGllcyA9IGFzeW5jIChcbiAgb3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwgPSB7fVxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGF3YWl0IHJ1blN5bmNQYXJ0KFN5bmNQYXJ0LlJlZ2lvbnMsIFtdLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY29tcGxldGVPcHRpb25zID0gcHJlcGFyZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgYXdhaXQgaW1wb3J0RGF0YVRvRGIoY29tcGxldGVPcHRpb25zKTtcbiAgfSk7XG59O1xuIl19
@@ -1,2 +1,2 @@
1
- import { SyncPart } from "../db/types";
2
- export declare const runSyncPart: (part: SyncPart, dependencies: SyncPart[], partFunction: () => Promise<void>) => Promise<void>;
1
+ import { SyncPart } from "../db/types";
2
+ export declare const runSyncPart: (part: SyncPart, dependencies: SyncPart[], partFunction: () => Promise<void>) => Promise<void>;
@@ -1,22 +1,22 @@
1
- import { disconnectKnex } from "../db/db";
2
- import { isSyncPartCompleted, setSyncPartAsCompleted, startSyncPart } from "../db/sync-log";
3
- export const runSyncPart = async (part, dependencies, partFunction) => {
4
- try {
5
- const logId = await startSyncPart(part);
6
- for (const dependency of dependencies) {
7
- const isCompleted = await isSyncPartCompleted(dependency);
8
- if (!isCompleted) {
9
- throw new Error(`Sync part ${part} cannot be started because dependency ${dependency} is not completed. Run 'npm run ${dependency}' first.`);
10
- }
11
- }
12
- await partFunction();
13
- await setSyncPartAsCompleted(logId);
14
- }
15
- catch (error) {
16
- console.log(error);
17
- }
18
- finally {
19
- await disconnectKnex();
20
- }
21
- };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW4tZGF0YS1zeW5jL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1RixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUM5QixJQUFjLEVBQ2QsWUFBd0IsRUFDeEIsWUFBaUMsRUFDbEIsRUFBRTtJQUNqQixJQUFJO1FBQ0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxZQUFZLEVBQUU7WUFDckMsTUFBTSxXQUFXLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNoQixNQUFNLElBQUksS0FBSyxDQUNiLGFBQWEsSUFBSSx5Q0FBeUMsVUFBVSxtQ0FBbUMsVUFBVSxVQUFVLENBQzVILENBQUM7YUFDSDtTQUNGO1FBQ0QsTUFBTSxZQUFZLEVBQUUsQ0FBQztRQUVyQixNQUFNLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JDO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3BCO1lBQVM7UUFDUixNQUFNLGNBQWMsRUFBRSxDQUFDO0tBQ3hCO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzY29ubmVjdEtuZXggfSBmcm9tIFwiLi4vZGIvZGJcIjtcclxuaW1wb3J0IHsgaXNTeW5jUGFydENvbXBsZXRlZCwgc2V0U3luY1BhcnRBc0NvbXBsZXRlZCwgc3RhcnRTeW5jUGFydCB9IGZyb20gXCIuLi9kYi9zeW5jLWxvZ1wiO1xyXG5pbXBvcnQgeyBTeW5jUGFydCB9IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IHJ1blN5bmNQYXJ0ID0gYXN5bmMgKFxyXG4gIHBhcnQ6IFN5bmNQYXJ0LFxyXG4gIGRlcGVuZGVuY2llczogU3luY1BhcnRbXSxcclxuICBwYXJ0RnVuY3Rpb246ICgpID0+IFByb21pc2U8dm9pZD5cclxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IGxvZ0lkID0gYXdhaXQgc3RhcnRTeW5jUGFydChwYXJ0KTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgZGVwZW5kZW5jaWVzKSB7XHJcbiAgICAgIGNvbnN0IGlzQ29tcGxldGVkID0gYXdhaXQgaXNTeW5jUGFydENvbXBsZXRlZChkZXBlbmRlbmN5KTtcclxuICAgICAgaWYgKCFpc0NvbXBsZXRlZCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBTeW5jIHBhcnQgJHtwYXJ0fSBjYW5ub3QgYmUgc3RhcnRlZCBiZWNhdXNlIGRlcGVuZGVuY3kgJHtkZXBlbmRlbmN5fSBpcyBub3QgY29tcGxldGVkLiBSdW4gJ25wbSBydW4gJHtkZXBlbmRlbmN5fScgZmlyc3QuYFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF3YWl0IHBhcnRGdW5jdGlvbigpO1xyXG5cclxuICAgIGF3YWl0IHNldFN5bmNQYXJ0QXNDb21wbGV0ZWQobG9nSWQpO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIGF3YWl0IGRpc2Nvbm5lY3RLbmV4KCk7XHJcbiAgfVxyXG59O1xyXG4iXX0=
1
+ import { disconnectKnex } from "../db/db";
2
+ import { isSyncPartCompleted, setSyncPartAsCompleted, startSyncPart } from "../db/sync-log";
3
+ export const runSyncPart = async (part, dependencies, partFunction) => {
4
+ try {
5
+ const logId = await startSyncPart(part);
6
+ for (const dependency of dependencies) {
7
+ const isCompleted = await isSyncPartCompleted(dependency);
8
+ if (!isCompleted) {
9
+ throw new Error(`Sync part ${part} cannot be started because dependency ${dependency} is not completed. Run 'npm run ${dependency}' first.`);
10
+ }
11
+ }
12
+ await partFunction();
13
+ await setSyncPartAsCompleted(logId);
14
+ }
15
+ catch (error) {
16
+ console.log(error);
17
+ }
18
+ finally {
19
+ await disconnectKnex();
20
+ }
21
+ };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW4tZGF0YS1zeW5jL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1RixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUM5QixJQUFjLEVBQ2QsWUFBd0IsRUFDeEIsWUFBaUMsRUFDbEIsRUFBRTtJQUNqQixJQUFJO1FBQ0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxZQUFZLEVBQUU7WUFDckMsTUFBTSxXQUFXLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNoQixNQUFNLElBQUksS0FBSyxDQUNiLGFBQWEsSUFBSSx5Q0FBeUMsVUFBVSxtQ0FBbUMsVUFBVSxVQUFVLENBQzVILENBQUM7YUFDSDtTQUNGO1FBQ0QsTUFBTSxZQUFZLEVBQUUsQ0FBQztRQUVyQixNQUFNLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JDO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3BCO1lBQVM7UUFDUixNQUFNLGNBQWMsRUFBRSxDQUFDO0tBQ3hCO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzY29ubmVjdEtuZXggfSBmcm9tIFwiLi4vZGIvZGJcIjtcbmltcG9ydCB7IGlzU3luY1BhcnRDb21wbGV0ZWQsIHNldFN5bmNQYXJ0QXNDb21wbGV0ZWQsIHN0YXJ0U3luY1BhcnQgfSBmcm9tIFwiLi4vZGIvc3luYy1sb2dcIjtcbmltcG9ydCB7IFN5bmNQYXJ0IH0gZnJvbSBcIi4uL2RiL3R5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBydW5TeW5jUGFydCA9IGFzeW5jIChcbiAgcGFydDogU3luY1BhcnQsXG4gIGRlcGVuZGVuY2llczogU3luY1BhcnRbXSxcbiAgcGFydEZ1bmN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBsb2dJZCA9IGF3YWl0IHN0YXJ0U3luY1BhcnQocGFydCk7XG5cbiAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICBjb25zdCBpc0NvbXBsZXRlZCA9IGF3YWl0IGlzU3luY1BhcnRDb21wbGV0ZWQoZGVwZW5kZW5jeSk7XG4gICAgICBpZiAoIWlzQ29tcGxldGVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgU3luYyBwYXJ0ICR7cGFydH0gY2Fubm90IGJlIHN0YXJ0ZWQgYmVjYXVzZSBkZXBlbmRlbmN5ICR7ZGVwZW5kZW5jeX0gaXMgbm90IGNvbXBsZXRlZC4gUnVuICducG0gcnVuICR7ZGVwZW5kZW5jeX0nIGZpcnN0LmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXdhaXQgcGFydEZ1bmN0aW9uKCk7XG5cbiAgICBhd2FpdCBzZXRTeW5jUGFydEFzQ29tcGxldGVkKGxvZ0lkKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZGlzY29ubmVjdEtuZXgoKTtcbiAgfVxufTtcbiJdfQ==
@@ -1,2 +1,2 @@
1
- import { OpenDataSyncOptionsPartial } from "../utils/helpers";
2
- export declare const downloadAndImportRegions: (options?: OpenDataSyncOptionsPartial) => Promise<void>;
1
+ import { OpenDataSyncOptionsPartial } from "../utils/helpers";
2
+ export declare const downloadAndImportRegions: (options?: OpenDataSyncOptionsPartial) => Promise<void>;