forked from MapComplete/MapComplete
		
	"working"
This commit is contained in:
		
							parent
							
								
									8fc56f7487
								
							
						
					
					
						commit
						cc0c925b81
					
				
					 27 changed files with 4743 additions and 17591 deletions
				
			
		|  | @ -147,7 +147,7 @@ export default class OsmFeatureSource { | ||||||
|                 this.rawDataHandlers.forEach((handler) => |                 this.rawDataHandlers.forEach((handler) => | ||||||
|                     handler(osmJson, Tiles.tile_index(z, x, y)) |                     handler(osmJson, Tiles.tile_index(z, x, y)) | ||||||
|                 ) |                 ) | ||||||
|                 const geojson = <FeatureCollection<any, { id: string }>>OsmToGeoJson.default( |                 const geojson = <FeatureCollection<any, { id: string }>>OsmToGeoJson( | ||||||
|                     osmJson, |                     osmJson, | ||||||
|                     // @ts-ignore
 |                     // @ts-ignore
 | ||||||
|                     { |                     { | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ import { RegexTag } from "./RegexTag" | ||||||
| import SubstitutingTag from "./SubstitutingTag" | import SubstitutingTag from "./SubstitutingTag" | ||||||
| import { Or } from "./Or" | import { Or } from "./Or" | ||||||
| import { TagConfigJson } from "../../Models/ThemeConfig/Json/TagConfigJson" | import { TagConfigJson } from "../../Models/ThemeConfig/Json/TagConfigJson" | ||||||
| import { isRegExp } from "util" | // import { isRegExp } from "util"
 | ||||||
| import * as key_counts from "../../assets/key_totals.json" | import * as key_counts from "../../assets/key_totals.json" | ||||||
| 
 | 
 | ||||||
| type Tags = Record<string, string> | type Tags = Record<string, string> | ||||||
|  | @ -94,13 +94,14 @@ export class TagUtils { | ||||||
| 
 | 
 | ||||||
|             if (allowRegex && tagsFilter instanceof RegexTag) { |             if (allowRegex && tagsFilter instanceof RegexTag) { | ||||||
|                 const key = tagsFilter.key |                 const key = tagsFilter.key | ||||||
|                 if (isRegExp(key)) { |                 // TODO: Fixme
 | ||||||
|                     console.error( |                 // if (isRegExp(key)) {
 | ||||||
|                         "Invalid type to flatten the multiAnswer: key is a regex too", |                 //     console.error(
 | ||||||
|                         tagsFilter |                 //         "Invalid type to flatten the multiAnswer: key is a regex too",
 | ||||||
|                     ) |                 //         tagsFilter
 | ||||||
|                     throw "Invalid type to FlattenMultiAnswer" |                 //     )
 | ||||||
|                 } |                 //     throw "Invalid type to FlattenMultiAnswer"
 | ||||||
|  |                 // }
 | ||||||
|                 const keystr = <string>key |                 const keystr = <string>key | ||||||
|                 if (keyValues[keystr] === undefined) { |                 if (keyValues[keystr] === undefined) { | ||||||
|                     keyValues[keystr] = [] |                     keyValues[keystr] = [] | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import * as mangrove from "mangrove-reviews" | // import * as mangrove from "mangrove-reviews"
 | ||||||
| import { UIEventSource } from "../UIEventSource" | import { UIEventSource } from "../UIEventSource" | ||||||
| import { Review } from "./Review" | import { Review } from "./Review" | ||||||
| import { Utils } from "../../Utils" | import { Utils } from "../../Utils" | ||||||
|  | @ -15,13 +15,13 @@ export class MangroveIdentity { | ||||||
|             if (str === "") { |             if (str === "") { | ||||||
|                 return |                 return | ||||||
|             } |             } | ||||||
|             mangrove.jwkToKeypair(JSON.parse(str)).then((keypair) => { |             // mangrove.jwkToKeypair(JSON.parse(str)).then((keypair) => {
 | ||||||
|                 self.keypair = keypair |             //     self.keypair = keypair
 | ||||||
|                 mangrove.publicToPem(keypair.publicKey).then((pem) => { |             //     mangrove.publicToPem(keypair.publicKey).then((pem) => {
 | ||||||
|                     console.log("Identity loaded") |             //         console.log("Identity loaded")
 | ||||||
|                     self.kid.setData(pem) |             //         self.kid.setData(pem)
 | ||||||
|                 }) |             //     })
 | ||||||
|             }) |             // })
 | ||||||
|         }) |         }) | ||||||
|         try { |         try { | ||||||
|             if (!Utils.runningFromConsole && (mangroveIdentity.data ?? "") === "") { |             if (!Utils.runningFromConsole && (mangroveIdentity.data ?? "") === "") { | ||||||
|  | @ -42,12 +42,12 @@ export class MangroveIdentity { | ||||||
|             throw "Identity already defined - not creating a new one" |             throw "Identity already defined - not creating a new one" | ||||||
|         } |         } | ||||||
|         const self = this |         const self = this | ||||||
|         mangrove.generateKeypair().then((keypair) => { |         // mangrove.generateKeypair().then((keypair) => {
 | ||||||
|             self.keypair = keypair |         //     self.keypair = keypair
 | ||||||
|             mangrove.keypairToJwk(keypair).then((jwk) => { |         //     mangrove.keypairToJwk(keypair).then((jwk) => {
 | ||||||
|                 self._mangroveIdentity.setData(JSON.stringify(jwk)) |         //         self._mangroveIdentity.setData(JSON.stringify(jwk))
 | ||||||
|             }) |         //     })
 | ||||||
|         }) |         // })
 | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -127,39 +127,39 @@ export default class MangroveReviews { | ||||||
|         this._lastUpdate = new Date() |         this._lastUpdate = new Date() | ||||||
| 
 | 
 | ||||||
|         const self = this |         const self = this | ||||||
|         mangrove |         // mangrove
 | ||||||
|             .getReviews({ sub: this.GetSubjectUri() }) |         //     .getReviews({ sub: this.GetSubjectUri() })
 | ||||||
|             .then((data) => { |         //     .then((data) => {
 | ||||||
|                 const reviews = [] |         //         const reviews = []
 | ||||||
|                 const reviewsByUser = [] |         //         const reviewsByUser = []
 | ||||||
|                 for (const review of data.reviews) { |         //         for (const review of data.reviews) {
 | ||||||
|                     const r = review.payload |         //             const r = review.payload
 | ||||||
| 
 | 
 | ||||||
|                     console.log( |         //             console.log(
 | ||||||
|                         "PublicKey is ", |         //                 "PublicKey is ",
 | ||||||
|                         self._mangroveIdentity.kid.data, |         //                 self._mangroveIdentity.kid.data,
 | ||||||
|                         "reviews.kid is", |         //                 "reviews.kid is",
 | ||||||
|                         review.kid |         //                 review.kid
 | ||||||
|                     ) |         //             )
 | ||||||
|                     const byUser = self._mangroveIdentity.kid.map( |         //             const byUser = self._mangroveIdentity.kid.map(
 | ||||||
|                         (data) => data === review.signature |         //                 (data) => data === review.signature
 | ||||||
|                     ) |         //             )
 | ||||||
|                     const rev: Review = { |         //             const rev: Review = {
 | ||||||
|                         made_by_user: byUser, |         //                 made_by_user: byUser,
 | ||||||
|                         date: new Date(r.iat * 1000), |         //                 date: new Date(r.iat * 1000),
 | ||||||
|                         comment: r.opinion, |         //                 comment: r.opinion,
 | ||||||
|                         author: r.metadata.nickname, |         //                 author: r.metadata.nickname,
 | ||||||
|                         affiliated: r.metadata.is_affiliated, |         //                 affiliated: r.metadata.is_affiliated,
 | ||||||
|                         rating: r.rating, // percentage points
 |         //                 rating: r.rating, // percentage points
 | ||||||
|                     } |         //             }
 | ||||||
| 
 | 
 | ||||||
|                     ;(rev.made_by_user ? reviewsByUser : reviews).push(rev) |         //             ;(rev.made_by_user ? reviewsByUser : reviews).push(rev)
 | ||||||
|                 } |         //         }
 | ||||||
|                 self._reviews.setData(reviewsByUser.concat(reviews)) |         //         self._reviews.setData(reviewsByUser.concat(reviews))
 | ||||||
|             }) |         //     })
 | ||||||
|             .catch((e) => { |         //     .catch((e) => {
 | ||||||
|                 console.error("Could not download review for ", e) |         //         console.error("Could not download review for ", e)
 | ||||||
|             }) |         //     })
 | ||||||
|         return this._reviews |         return this._reviews | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -192,13 +192,13 @@ export default class MangroveReviews { | ||||||
|                 this._reviews.ping() |                 this._reviews.ping() | ||||||
|             } |             } | ||||||
|         } else { |         } else { | ||||||
|             mangrove.signAndSubmitReview(this._mangroveIdentity.keypair, payload).then(() => { |             // mangrove.signAndSubmitReview(this._mangroveIdentity.keypair, payload).then(() => {
 | ||||||
|                 if (callback) { |             //     if (callback) {
 | ||||||
|                     callback() |             //         callback()
 | ||||||
|                 } |             //     }
 | ||||||
|                 this._reviews.data.push(r) |             //     this._reviews.data.push(r)
 | ||||||
|                 this._reviews.ping() |             //     this._reviews.ping()
 | ||||||
|             }) |             // })
 | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -72,7 +72,7 @@ | ||||||
| </div> | </div> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| <script src="./all_themes_index.ts"></script> | <script type="module" src="./all_themes_index.ts"></script> | ||||||
| <script async data-goatcounter="https://pietervdvn.goatcounter.com/count" src="//gc.zgo.at/count.js"></script> | <script async data-goatcounter="https://pietervdvn.goatcounter.com/count" src="//gc.zgo.at/count.js"></script> | ||||||
| 
 | 
 | ||||||
| <script> | <script> | ||||||
|  |  | ||||||
							
								
								
									
										22049
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										22049
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -6,7 +6,9 @@ | ||||||
|   "bugs": "https://github.com/pietervdvn/MapComplete/issues", |   "bugs": "https://github.com/pietervdvn/MapComplete/issues", | ||||||
|   "homepage": "https://mapcomplete.osm.be", |   "homepage": "https://mapcomplete.osm.be", | ||||||
|   "main": "index.js", |   "main": "index.js", | ||||||
|  |   "type": "module", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|  |     "vitedev": "vite", | ||||||
|     "start": "npm run generate:layeroverview && npm run strt", |     "start": "npm run generate:layeroverview && npm run strt", | ||||||
|     "strt": "export NODE_OPTIONS=--max_old_space_size=8364 && parcel serve *.html UI/** Logic/** assets/*.json assets/svg/* assets/templates/* assets/generated/* assets/layers/*/*.svg assets/layers/*/*/*/*.svg assets/layers/*/*.jpg assets/layers/*/*.png assets/layers/*/*.css assets/tagRenderings/*.json assets/themes/*/*.svg assets/themes/*/*.ttf assets/themes/*/*/*.ttf assets/themes/*/*.otf assets/themes/*/*/*.otf assets/themes/*/*.css assets/themes/*/*.jpg assets/themes/*/*.woff assets/themes/*/*.png vendor/* vendor/*/* assets/tagRenderings/*.svg", |     "strt": "export NODE_OPTIONS=--max_old_space_size=8364 && parcel serve *.html UI/** Logic/** assets/*.json assets/svg/* assets/templates/* assets/generated/* assets/layers/*/*.svg assets/layers/*/*/*/*.svg assets/layers/*/*.jpg assets/layers/*/*.png assets/layers/*/*.css assets/tagRenderings/*.json assets/themes/*/*.svg assets/themes/*/*.ttf assets/themes/*/*/*.ttf assets/themes/*/*.otf assets/themes/*/*/*.otf assets/themes/*/*.css assets/themes/*/*.jpg assets/themes/*/*.woff assets/themes/*/*.png vendor/* vendor/*/* assets/tagRenderings/*.svg", | ||||||
|     "strttest": "export NODE_OPTIONS=--max_old_space_size=8364 && parcel serve test.html assets/templates/*.svg assets/templates/fonts/*.ttf", |     "strttest": "export NODE_OPTIONS=--max_old_space_size=8364 && parcel serve test.html assets/templates/*.svg assets/templates/fonts/*.ttf", | ||||||
|  | @ -92,7 +94,6 @@ | ||||||
|     "leaflet-simple-map-screenshoter": "^0.4.5", |     "leaflet-simple-map-screenshoter": "^0.4.5", | ||||||
|     "libphonenumber-js": "^1.10.8", |     "libphonenumber-js": "^1.10.8", | ||||||
|     "lz-string": "^1.4.4", |     "lz-string": "^1.4.4", | ||||||
|     "mangrove-reviews": "^0.1.3", |  | ||||||
|     "opening_hours": "^3.6.0", |     "opening_hours": "^3.6.0", | ||||||
|     "osm-auth": "^1.0.2", |     "osm-auth": "^1.0.2", | ||||||
|     "osmtogeojson": "^3.0.0-beta.5", |     "osmtogeojson": "^3.0.0-beta.5", | ||||||
|  | @ -116,7 +117,7 @@ | ||||||
|     "@types/leaflet-providers": "^1.2.0", |     "@types/leaflet-providers": "^1.2.0", | ||||||
|     "@types/lz-string": "^1.3.34", |     "@types/lz-string": "^1.3.34", | ||||||
|     "@types/mocha": "^9.1.0", |     "@types/mocha": "^9.1.0", | ||||||
|     "@types/node": "^7.10.14", |     "@types/node": "^18.11.18", | ||||||
|     "@types/papaparse": "^5.3.1", |     "@types/papaparse": "^5.3.1", | ||||||
|     "@types/prompt-sync": "^4.1.0", |     "@types/prompt-sync": "^4.1.0", | ||||||
|     "@types/wikidata-sdk": "^6.1.0", |     "@types/wikidata-sdk": "^6.1.0", | ||||||
|  | @ -126,7 +127,6 @@ | ||||||
|     "dependency-cruiser": "^10.4.0", |     "dependency-cruiser": "^10.4.0", | ||||||
|     "fs": "0.0.1-security", |     "fs": "0.0.1-security", | ||||||
|     "mocha": "^9.2.2", |     "mocha": "^9.2.2", | ||||||
|     "parcel": "^1.2.4", |  | ||||||
|     "prettier": "2.7.1", |     "prettier": "2.7.1", | ||||||
|     "read-file": "^0.2.0", |     "read-file": "^0.2.0", | ||||||
|     "sharp": "^0.30.5", |     "sharp": "^0.30.5", | ||||||
|  | @ -134,6 +134,7 @@ | ||||||
|     "ts2json-schema": "^1.4.0", |     "ts2json-schema": "^1.4.0", | ||||||
|     "tslint": "^6.1.3", |     "tslint": "^6.1.3", | ||||||
|     "tslint-no-circular-imports": "^0.7.0", |     "tslint-no-circular-imports": "^0.7.0", | ||||||
|     "typescript": "^4.7.4" |     "typescript": "^4.7.4", | ||||||
|  |     "vite": "^4.0.4" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| import * as fs from "fs" | // import * as fs from "fs"
 | ||||||
| import { existsSync, lstatSync, readdirSync, readFileSync } from "fs" | // import { existsSync, lstatSync, readdirSync, readFileSync } from "fs"
 | ||||||
| import { Utils } from "../Utils" | import { Utils } from "../Utils" | ||||||
| import * as https from "https" | import * as https from "https" | ||||||
| import { LayoutConfigJson } from "../Models/ThemeConfig/Json/LayoutConfigJson" | import { LayoutConfigJson } from "../Models/ThemeConfig/Json/LayoutConfigJson" | ||||||
|  | @ -19,21 +19,21 @@ export default class ScriptUtils { | ||||||
|      * @param maxDepth |      * @param maxDepth | ||||||
|      */ |      */ | ||||||
|     public static readDirRecSync(path, maxDepth = 999): string[] { |     public static readDirRecSync(path, maxDepth = 999): string[] { | ||||||
|         const result = [] |         const result: string[] = [] | ||||||
|         if (maxDepth <= 0) { |         if (maxDepth <= 0) { | ||||||
|             return [] |             return [] | ||||||
|         } |         } | ||||||
|         for (const entry of readdirSync(path)) { |         // for (const entry of readdirSync(path)) {
 | ||||||
|             const fullEntry = path + "/" + entry |         //     const fullEntry = path + "/" + entry
 | ||||||
|             const stats = lstatSync(fullEntry) |         //     const stats = lstatSync(fullEntry)
 | ||||||
|             if (stats.isDirectory()) { |         //     if (stats.isDirectory()) {
 | ||||||
|                 // Subdirectory
 |         //         // Subdirectory
 | ||||||
|                 // @ts-ignore
 |         //         // @ts-ignore
 | ||||||
|                 result.push(...ScriptUtils.readDirRecSync(fullEntry, maxDepth - 1)) |         //         result.push(...ScriptUtils.readDirRecSync(fullEntry, maxDepth - 1))
 | ||||||
|             } else { |         //     } else {
 | ||||||
|                 result.push(fullEntry) |         //         result.push(fullEntry)
 | ||||||
|             } |         //     }
 | ||||||
|         } |         // }
 | ||||||
|         return result |         return result | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -78,7 +78,8 @@ export default class ScriptUtils { | ||||||
|             .filter((path) => path.indexOf("license_info.json") < 0) |             .filter((path) => path.indexOf("license_info.json") < 0) | ||||||
|             .map((path) => { |             .map((path) => { | ||||||
|                 try { |                 try { | ||||||
|                     const contents = readFileSync(path, "UTF8") |                     // const contents = readFileSync(path, { encoding: "utf8" })
 | ||||||
|  |                     const contents = "" | ||||||
|                     if (contents === "") { |                     if (contents === "") { | ||||||
|                         throw "The file " + path + " is empty, did you properly save?" |                         throw "The file " + path + " is empty, did you properly save?" | ||||||
|                     } |                     } | ||||||
|  | @ -101,7 +102,8 @@ export default class ScriptUtils { | ||||||
|     public static getThemeFiles(): { parsed: LayoutConfigJson; path: string }[] { |     public static getThemeFiles(): { parsed: LayoutConfigJson; path: string }[] { | ||||||
|         return this.getThemePaths().map((path) => { |         return this.getThemePaths().map((path) => { | ||||||
|             try { |             try { | ||||||
|                 const contents = readFileSync(path, "UTF8") |                 // const contents = readFileSync(path, { encoding: "utf8" })
 | ||||||
|  |                 const contents = "" | ||||||
|                 if (contents === "") { |                 if (contents === "") { | ||||||
|                     throw "The file " + path + " is empty, did you properly save?" |                     throw "The file " + path + " is empty, did you properly save?" | ||||||
|                 } |                 } | ||||||
|  | @ -122,20 +124,25 @@ export default class ScriptUtils { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public static async ReadSvg(path: string): Promise<any> { |     public static async ReadSvg(path: string): Promise<any> { | ||||||
|         if (!existsSync(path)) { |         // if (!existsSync(path)) {
 | ||||||
|             throw "File not found: " + path |         //     throw "File not found: " + path
 | ||||||
|         } |         // }
 | ||||||
|         const root = await xml2js.parseStringPromise(readFileSync(path, "UTF8")) |         // const root = await xml2js.parseStringPromise(readFileSync(path, { encoding: "utf8" }))
 | ||||||
|         return root.svg |         // return root.svg
 | ||||||
|  |         return "" | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public static ReadSvgSync(path: string, callback: (svg: any) => void): any { |     public static ReadSvgSync(path: string, callback: (svg: any) => void): any { | ||||||
|         xml2js.parseString(readFileSync(path, "UTF8"), { async: false }, (err, root) => { |         // xml2js.parseString(
 | ||||||
|             if (err) { |         //     readFileSync(path, { encoding: "utf8" }),
 | ||||||
|                 throw err |         //     { async: false },
 | ||||||
|             } |         //     (err, root) => {
 | ||||||
|             callback(root["svg"]) |         //         if (err) {
 | ||||||
|         }) |         //             throw err
 | ||||||
|  |         //         }
 | ||||||
|  |         //         callback(root["svg"])
 | ||||||
|  |         //     }
 | ||||||
|  |         // )
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private static async DownloadJSON(url: string, headers?: any): Promise<any> { |     private static async DownloadJSON(url: string, headers?: any): Promise<any> { | ||||||
|  |  | ||||||
|  | @ -54,9 +54,9 @@ function main(args: string[]): void { | ||||||
|         ) |         ) | ||||||
|         return |         return | ||||||
|     } |     } | ||||||
|     const reference = JSON.parse(readFileSync("./langs/en.json", "UTF8")) |     const reference = JSON.parse(readFileSync("./langs/en.json", { encoding: "utf8" })) | ||||||
|     const path = `./langs/${l}.json` |     const path = `./langs/${l}.json` | ||||||
|     const file = JSON.parse(readFileSync(path, "UTF8")) |     const file = JSON.parse(readFileSync(path, { encoding: "utf8" })) | ||||||
|     fixSection(file[sectionName], reference[sectionName], l) |     fixSection(file[sectionName], reference[sectionName], l) | ||||||
|     writeFileSync(path, JSON.stringify(file, null, "    ") + "\n") |     writeFileSync(path, JSON.stringify(file, null, "    ") + "\n") | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -51,7 +51,7 @@ function rewrite(obj, key) { | ||||||
| 
 | 
 | ||||||
| const stuff = fs.readFileSync( | const stuff = fs.readFileSync( | ||||||
|     "/home/pietervdvn/Documents/Freelance/ToerismeVlaanderen 2021-09/TeImporteren/allchannels-bike_rental.json", |     "/home/pietervdvn/Documents/Freelance/ToerismeVlaanderen 2021-09/TeImporteren/allchannels-bike_rental.json", | ||||||
|     "UTF8" |     { encoding: "utf8" } | ||||||
| ) | ) | ||||||
| const data: any[] = JSON.parse(stuff) | const data: any[] = JSON.parse(stuff) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -138,7 +138,7 @@ async function main(wipeCache = false) { | ||||||
|         console.log("Reusing the cached file") |         console.log("Reusing the cached file") | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     const data = JSON.parse(readFileSync(cacheFile, "UTF8")) |     const data = JSON.parse(readFileSync(cacheFile, { encoding: "utf8" })) | ||||||
|     const perId = WikidataUtils.extractLanguageData(data, WikidataUtils.languageRemapping) |     const perId = WikidataUtils.extractLanguageData(data, WikidataUtils.languageRemapping) | ||||||
|     const nativeList = getNativeList(perId) |     const nativeList = getNativeList(perId) | ||||||
|     writeFileSync("./assets/language_native.json", JSON.stringify(nativeList, null, "  ")) |     writeFileSync("./assets/language_native.json", JSON.stringify(nativeList, null, "  ")) | ||||||
|  |  | ||||||
|  | @ -15,7 +15,7 @@ function main(args) { | ||||||
|     const spec = args[1] |     const spec = args[1] | ||||||
|     const output = args[2] |     const output = args[2] | ||||||
| 
 | 
 | ||||||
|     const data = JSON.parse(fs.readFileSync(path, "UTF8")) |     const data = JSON.parse(fs.readFileSync(path, { encoding: "utf8" })) | ||||||
|     let filter: TagsFilter |     let filter: TagsFilter | ||||||
|     try { |     try { | ||||||
|         filter = TagUtils.Tag(JSON.parse(spec)) |         filter = TagUtils.Tag(JSON.parse(spec)) | ||||||
|  |  | ||||||
|  | @ -63,7 +63,7 @@ function main() { | ||||||
|     const path = args[0] |     const path = args[0] | ||||||
|     const iconClass = args[1] ?? "small" |     const iconClass = args[1] ?? "small" | ||||||
|     const targetFile = args[2] ?? path + ".autoconverted.json" |     const targetFile = args[2] ?? path + ".autoconverted.json" | ||||||
|     const parsed = JSON.parse(readFileSync(path, "UTF8")) |     const parsed = JSON.parse(readFileSync(path, { encoding: "utf8" })) | ||||||
|     const converted = new ConvertImagesToIcon(iconClass).convertStrict( |     const converted = new ConvertImagesToIcon(iconClass).convertStrict( | ||||||
|         parsed, |         parsed, | ||||||
|         "While running the fixImagesInTagRenderings-script" |         "While running the fixImagesInTagRenderings-script" | ||||||
|  |  | ||||||
|  | @ -99,7 +99,7 @@ function WalkScheme<T>( | ||||||
| 
 | 
 | ||||||
| function extractMeta(typename: string, path: string) { | function extractMeta(typename: string, path: string) { | ||||||
|     const themeSchema = JSON.parse( |     const themeSchema = JSON.parse( | ||||||
|         readFileSync("./Docs/Schemas/" + typename + ".schema.json", "UTF-8") |         readFileSync("./Docs/Schemas/" + typename + ".schema.json", { encoding: "utf8" }) | ||||||
|     ) |     ) | ||||||
|     const withTypes = WalkScheme((schemePart) => { |     const withTypes = WalkScheme((schemePart) => { | ||||||
|         if (schemePart.description === undefined) { |         if (schemePart.description === undefined) { | ||||||
|  | @ -126,7 +126,7 @@ function main() { | ||||||
|     for (const path of allSchemas) { |     for (const path of allSchemas) { | ||||||
|         const dir = path.substring(0, path.lastIndexOf("/")) |         const dir = path.substring(0, path.lastIndexOf("/")) | ||||||
|         const name = path.substring(path.lastIndexOf("/"), path.length - "JSC.ts".length) |         const name = path.substring(path.lastIndexOf("/"), path.length - "JSC.ts".length) | ||||||
|         let content = readFileSync(path, "UTF-8") |         let content = readFileSync(path, { encoding: "utf8" }) | ||||||
|         content = content.substring("export default ".length) |         content = content.substring("export default ".length) | ||||||
|         let parsed = JSON.parse(content) |         let parsed = JSON.parse(content) | ||||||
|         parsed["additionalProperties"] = false |         parsed["additionalProperties"] = false | ||||||
|  | @ -137,7 +137,7 @@ function main() { | ||||||
|                 def["additionalProperties"] = false |                 def["additionalProperties"] = false | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         writeFileSync(dir + "/" + name + ".schema.json", JSON.stringify(parsed, null, "  "), "UTF8") |         writeFileSync(dir + "/" + name + ".schema.json", JSON.stringify(parsed, null, "  "), { encoding: "utf8" }) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     extractMeta("LayoutConfigJson", "layoutconfigmeta") |     extractMeta("LayoutConfigJson", "layoutconfigmeta") | ||||||
|  |  | ||||||
|  | @ -212,7 +212,7 @@ function loadAllTiles( | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             // We read the raw OSM-file and convert it to a geojson
 |             // We read the raw OSM-file and convert it to a geojson
 | ||||||
|             const rawOsm = JSON.parse(readFileSync(filename, "UTF8")) |             const rawOsm = JSON.parse(readFileSync(filename, { encoding: "utf8" })) | ||||||
| 
 | 
 | ||||||
|             // Create and save the geojson file - which is the main chunk of the data
 |             // Create and save the geojson file - which is the main chunk of the data
 | ||||||
|             const geojson = OsmToGeoJson.default(rawOsm) |             const geojson = OsmToGeoJson.default(rawOsm) | ||||||
|  |  | ||||||
|  | @ -138,7 +138,7 @@ export default class GenerateImageAnalysis extends Script { | ||||||
|             if (!file.endsWith(".json")) { |             if (!file.endsWith(".json")) { | ||||||
|                 continue |                 continue | ||||||
|             } |             } | ||||||
|             const attr = <LicenseInfo>JSON.parse(fs.readFileSync(file, "UTF8")) |             const attr = <LicenseInfo>JSON.parse(fs.readFileSync(file, { encoding: "utf8" })) | ||||||
|             const license = attr.licenseShortName |             const license = attr.licenseShortName | ||||||
| 
 | 
 | ||||||
|             if (license === undefined || attr.artist === undefined) { |             if (license === undefined || attr.artist === undefined) { | ||||||
|  |  | ||||||
|  | @ -125,7 +125,7 @@ class LayerOverviewUtils { | ||||||
|         writeFileSync( |         writeFileSync( | ||||||
|             "./assets/generated/theme_overview.json", |             "./assets/generated/theme_overview.json", | ||||||
|             JSON.stringify(sorted, null, "  "), |             JSON.stringify(sorted, null, "  "), | ||||||
|             "UTF8" |             { encoding: "utf8" } | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -136,7 +136,7 @@ class LayerOverviewUtils { | ||||||
|         writeFileSync( |         writeFileSync( | ||||||
|             `${LayerOverviewUtils.themePath}${theme.id}.json`, |             `${LayerOverviewUtils.themePath}${theme.id}.json`, | ||||||
|             JSON.stringify(theme, null, "  "), |             JSON.stringify(theme, null, "  "), | ||||||
|             "UTF8" |             { encoding: "utf8" } | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -147,7 +147,7 @@ class LayerOverviewUtils { | ||||||
|         writeFileSync( |         writeFileSync( | ||||||
|             `${LayerOverviewUtils.layerPath}${layer.id}.json`, |             `${LayerOverviewUtils.layerPath}${layer.id}.json`, | ||||||
|             JSON.stringify(layer, null, "  "), |             JSON.stringify(layer, null, "  "), | ||||||
|             "UTF8" |             { encoding: "utf8" } | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -219,7 +219,7 @@ class LayerOverviewUtils { | ||||||
|                 continue |                 continue | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             const contents = readFileSync(path, "UTF8") |             const contents = readFileSync(path, { encoding: "utf8" }) | ||||||
|             if (contents.indexOf("data:image/png;") >= 0) { |             if (contents.indexOf("data:image/png;") >= 0) { | ||||||
|                 console.warn("The SVG at " + path + " is a fake SVG: it contains PNG data!") |                 console.warn("The SVG at " + path + " is a fake SVG: it contains PNG data!") | ||||||
|                 errCount++ |                 errCount++ | ||||||
|  | @ -283,7 +283,7 @@ class LayerOverviewUtils { | ||||||
|             const proto: LayoutConfigJson = JSON.parse( |             const proto: LayoutConfigJson = JSON.parse( | ||||||
|                 readFileSync( |                 readFileSync( | ||||||
|                     "./assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json", |                     "./assets/themes/mapcomplete-changes/mapcomplete-changes.proto.json", | ||||||
|                     "UTF8" |                     { encoding: "utf8" } | ||||||
|                 ) |                 ) | ||||||
|             ) |             ) | ||||||
|             const protolayer = <LayerConfigJson>( |             const protolayer = <LayerConfigJson>( | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ function generateLicenseInfos(paths: string[]): SmallLicense[] { | ||||||
|     const licenses = [] |     const licenses = [] | ||||||
|     for (const path of paths) { |     for (const path of paths) { | ||||||
|         try { |         try { | ||||||
|             const parsed = JSON.parse(readFileSync(path, "UTF-8")) |             const parsed = JSON.parse(readFileSync(path, { encoding: "utf8" })) | ||||||
|             if (Array.isArray(parsed)) { |             if (Array.isArray(parsed)) { | ||||||
|                 const l: SmallLicense[] = parsed |                 const l: SmallLicense[] = parsed | ||||||
|                 for (const smallLicens of l) { |                 for (const smallLicens of l) { | ||||||
|  | @ -242,7 +242,7 @@ function createFullLicenseOverview(licensePaths: string[]) { | ||||||
|         if (!existsSync(licensePath)) { |         if (!existsSync(licensePath)) { | ||||||
|             continue |             continue | ||||||
|         } |         } | ||||||
|         const licenses = <SmallLicense[]>JSON.parse(readFileSync(licensePath, "UTF-8")) |         const licenses = <SmallLicense[]>JSON.parse(readFileSync(licensePath, { encoding: "utf8" })) | ||||||
|         for (const license of licenses) { |         for (const license of licenses) { | ||||||
|             validateLicenseInfo(license) |             validateLicenseInfo(license) | ||||||
|             const dir = licensePath.substring(0, licensePath.length - "license_info.json".length) |             const dir = licensePath.substring(0, licensePath.length - "license_info.json".length) | ||||||
|  |  | ||||||
|  | @ -176,7 +176,7 @@ function generateTagInfoEntry(layout: LayoutConfig): any { | ||||||
| function generateProjectsOverview(files: string[]) { | function generateProjectsOverview(files: string[]) { | ||||||
|     try { |     try { | ||||||
|         const tagInfoList = "../taginfo-projects/project_list.txt" |         const tagInfoList = "../taginfo-projects/project_list.txt" | ||||||
|         let projectList = readFileSync(tagInfoList, "UTF8") |         let projectList = readFileSync(tagInfoList, { encoding: "utf8" }) | ||||||
|             .split("\n") |             .split("\n") | ||||||
|             .filter((entry) => entry.indexOf("mapcomplete_") < 0) |             .filter((entry) => entry.indexOf("mapcomplete_") < 0) | ||||||
|             .concat( |             .concat( | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ class TranslationPart { | ||||||
|         const files = ScriptUtils.readDirRecSync(path, 1).filter((file) => file.endsWith(".json")) |         const files = ScriptUtils.readDirRecSync(path, 1).filter((file) => file.endsWith(".json")) | ||||||
|         const rootTranslation = new TranslationPart() |         const rootTranslation = new TranslationPart() | ||||||
|         for (const file of files) { |         for (const file of files) { | ||||||
|             const content = JSON.parse(readFileSync(file, "UTF8")) |             const content = JSON.parse(readFileSync(file, { encoding: "utf8" })) | ||||||
|             rootTranslation.addTranslation(file.substr(0, file.length - ".json".length), content) |             rootTranslation.addTranslation(file.substr(0, file.length - ".json".length), content) | ||||||
|         } |         } | ||||||
|         return rootTranslation |         return rootTranslation | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ import ScriptUtils from "./ScriptUtils" | ||||||
| 
 | 
 | ||||||
| function makeConvex(file) { | function makeConvex(file) { | ||||||
|     ScriptUtils.erasableLog("Handling", file) |     ScriptUtils.erasableLog("Handling", file) | ||||||
|     const geoJson = JSON.parse(fs.readFileSync(file, "UTF8")) |     const geoJson = JSON.parse(fs.readFileSync(file, { encoding: "utf8" })) | ||||||
|     const convex = GeoOperations.convexHull(geoJson, { concavity: 2 }) |     const convex = GeoOperations.convexHull(geoJson, { concavity: 2 }) | ||||||
|     if (convex.properties === undefined) { |     if (convex.properties === undefined) { | ||||||
|         convex.properties = {} |         convex.properties = {} | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ function main(args) { | ||||||
|     const path = args[0] |     const path = args[0] | ||||||
|     const key = args[1] |     const key = args[1] | ||||||
| 
 | 
 | ||||||
|     const data = JSON.parse(fs.readFileSync(path, "UTF8")) |     const data = JSON.parse(fs.readFileSync(path, { encoding: "utf8" })) | ||||||
|     const perProperty = new Map<string, any[]>() |     const perProperty = new Map<string, any[]>() | ||||||
| 
 | 
 | ||||||
|     console.log("Partitioning", data.features.length, "features") |     console.log("Partitioning", data.features.length, "features") | ||||||
|  |  | ||||||
|  | @ -13,14 +13,14 @@ async function main(args: string[]) { | ||||||
| 
 | 
 | ||||||
|     const alreadyLoaded = new Set<number>() |     const alreadyLoaded = new Set<number>() | ||||||
|     if (existsSync(output)) { |     if (existsSync(output)) { | ||||||
|         const lines = readFileSync(output, "UTF8").split("\n") |         const lines = readFileSync(output, { encoding: "utf8" }).split("\n") | ||||||
|         lines.shift() |         lines.shift() | ||||||
|         lines.forEach((line) => { |         lines.forEach((line) => { | ||||||
|             const postalCode = Number(line.split(",")[0]) |             const postalCode = Number(line.split(",")[0]) | ||||||
|             alreadyLoaded.add(postalCode) |             alreadyLoaded.add(postalCode) | ||||||
|         }) |         }) | ||||||
|     } else { |     } else { | ||||||
|         writeFileSync(output, "postal_code,lon,lat\n", "UTF-8") |         writeFileSync(output, "postal_code,lon,lat\n", { encoding: "utf8" }) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     for (const boundary of postcodes.features) { |     for (const boundary of postcodes.features) { | ||||||
|  | @ -104,7 +104,7 @@ async function main(args: string[]) { | ||||||
|             " are ", |             " are ", | ||||||
|             JSON.stringify(depPoints) |             JSON.stringify(depPoints) | ||||||
|         ) |         ) | ||||||
|         appendFileSync(output, [postcode, ...depPoints[0]].join(", ") + "\n", "UTF-8") |         appendFileSync(output, [postcode, ...depPoints[0]].join(", ") + "\n", { encoding: "utf8" }) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ import { writeFileSync } from "fs" | ||||||
| import ScriptUtils from "../ScriptUtils" | import ScriptUtils from "../ScriptUtils" | ||||||
| 
 | 
 | ||||||
| function handleFile(file: string, postalCode: number) { | function handleFile(file: string, postalCode: number) { | ||||||
|     const geojson = JSON.parse(fs.readFileSync(file, "UTF8")) |     const geojson = JSON.parse(fs.readFileSync(file, { encoding: "utf8" })) | ||||||
|     geojson.properties = { |     geojson.properties = { | ||||||
|         type: "boundary", |         type: "boundary", | ||||||
|         boundary: "postal_code", |         boundary: "postal_code", | ||||||
|  | @ -14,7 +14,7 @@ function handleFile(file: string, postalCode: number) { | ||||||
| 
 | 
 | ||||||
| function getKnownPostalCodes(): number[] { | function getKnownPostalCodes(): number[] { | ||||||
|     return fs |     return fs | ||||||
|         .readFileSync("./scripts/postal_code_tools/knownPostalCodes.csv", "UTF8") |         .readFileSync("./scripts/postal_code_tools/knownPostalCodes.csv", { encoding: "utf8" }) | ||||||
|         .split("\n") |         .split("\n") | ||||||
|         .map((line) => Number(line.split(",")[1])) |         .map((line) => Number(line.split(",")[1])) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -7609,7 +7609,7 @@ describe("GenerateCache", () => { | ||||||
|         ]) |         ]) | ||||||
|         await ScriptUtils.sleep(250) |         await ScriptUtils.sleep(250) | ||||||
|         const birdhides = JSON.parse( |         const birdhides = JSON.parse( | ||||||
|             readFileSync(dir + "np-cache/natuurpunt_birdhide_12_2085_1368.geojson", "UTF8") |             readFileSync(dir + "np-cache/natuurpunt_birdhide_12_2085_1368.geojson", { encoding: "utf8" }) | ||||||
|         ) |         ) | ||||||
|         expect(birdhides.features.length).deep.equal(5) |         expect(birdhides.features.length).deep.equal(5) | ||||||
|         expect( |         expect( | ||||||
|  |  | ||||||
|  | @ -79,7 +79,7 @@ | ||||||
| <div id="leafletDiv"></div> | <div id="leafletDiv"></div> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| <script src="./index.ts"></script> | <script type="module" src="./index.ts"></script> | ||||||
| <script async data-goatcounter="https://pietervdvn.goatcounter.com/count" src="//gc.zgo.at/count.js"></script> | <script async data-goatcounter="https://pietervdvn.goatcounter.com/count" src="//gc.zgo.at/count.js"></script> | ||||||
| 
 | 
 | ||||||
| <script> | <script> | ||||||
|  |  | ||||||
|  | @ -1,18 +1,19 @@ | ||||||
| { | { | ||||||
|   "compilerOptions": { |   "compilerOptions": { | ||||||
|     "module": "commonjs", |     "target": "ESNext", | ||||||
|     "target": "es5", |     "useDefineForClassFields": true, | ||||||
|     "sourceMap": true, |     "module": "ESNext", | ||||||
|  |     "lib": ["ESNext", "DOM"], | ||||||
|  |     "moduleResolution": "Node", | ||||||
|  |     "strict": true, | ||||||
|     "resolveJsonModule": true, |     "resolveJsonModule": true, | ||||||
|  |     "isolatedModules": true, | ||||||
|     "esModuleInterop": true, |     "esModuleInterop": true, | ||||||
|     "lib": [ |     "noEmit": true, | ||||||
|       "DOM", |     "noUnusedLocals": true, | ||||||
|       "es5", |     "noUnusedParameters": true, | ||||||
|       "scripthost", |     "noImplicitReturns": true, | ||||||
|       "es2015.collection" |     "skipLibCheck": true | ||||||
|     ] |  | ||||||
|   }, |   }, | ||||||
|   "exclude": [ |   "exclude": ["node_modules"] | ||||||
|     "node_modules" | } | ||||||
|   ] |  | ||||||
| } |  | ||||||
|  |  | ||||||
							
								
								
									
										5
									
								
								vite.config.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								vite.config.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | ||||||
|  | /** @type {import('vite').UserConfig} */ | ||||||
|  | export default { | ||||||
|  |   // config options
 | ||||||
|  |   optimizeDeps: ["util"], | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue