forked from MapComplete/MapComplete
		
	Fix: fix #2183 by updating wikidata-sdk to latest wikibase-sdk
This commit is contained in:
		
							parent
							
								
									45fe5767e1
								
							
						
					
					
						commit
						021e5f2734
					
				
					 4 changed files with 54 additions and 24 deletions
				
			
		
							
								
								
									
										39
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										39
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							|  | @ -79,8 +79,7 @@ | ||||||
|         "turndown": "^7.1.3", |         "turndown": "^7.1.3", | ||||||
|         "vite-node": "^0.28.3", |         "vite-node": "^0.28.3", | ||||||
|         "vitest": "^0.28.3", |         "vitest": "^0.28.3", | ||||||
|         "wikibase-sdk": "^7.14.0", |         "wikibase-sdk": "^10.1.1", | ||||||
|         "wikidata-sdk": "^7.14.0", |  | ||||||
|         "xml2js": "^0.5.0" |         "xml2js": "^0.5.0" | ||||||
|       }, |       }, | ||||||
|       "devDependencies": { |       "devDependencies": { | ||||||
|  | @ -20745,15 +20744,19 @@ | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/wikibase-sdk": { |     "node_modules/wikibase-sdk": { | ||||||
|       "version": "7.15.0", |       "version": "10.1.1", | ||||||
|       "license": "MIT", |       "resolved": "https://registry.npmjs.org/wikibase-sdk/-/wikibase-sdk-10.1.1.tgz", | ||||||
|  |       "integrity": "sha512-ePSfVhHeJ5ljAxde7O9ryzIBeNF54RB+LTn5naF+mUitDJeRkrgz2ZTxl89EMDzJeHUV4VnwVmLRWRcDqPA9Ng==", | ||||||
|       "engines": { |       "engines": { | ||||||
|         "node": ">= 6.4" |         "node": ">= 12.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/wikidata-sdk": { |     "node_modules/wikidata-sdk": { | ||||||
|       "version": "7.14.4", |       "version": "7.14.4", | ||||||
|       "license": "MIT", |       "resolved": "https://registry.npmjs.org/wikidata-sdk/-/wikidata-sdk-7.14.4.tgz", | ||||||
|  |       "integrity": "sha512-UAFBXWLxEWvB0Pn/c+ekc1voU8o0zR7T3kRt9xHLyfy2OiV7W1htk2iErwJdfisBPDb2a35HUgf2x1+ZAdrM8A==", | ||||||
|  |       "deprecated": "wikidata-sdk has been renamed wikibase-sdk", | ||||||
|  |       "dev": true, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "wikibase-sdk": "^7.14.4" |         "wikibase-sdk": "^7.14.4" | ||||||
|       }, |       }, | ||||||
|  | @ -20761,6 +20764,15 @@ | ||||||
|         "node": ">= 6.4" |         "node": ">= 6.4" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/wikidata-sdk/node_modules/wikibase-sdk": { | ||||||
|  |       "version": "7.15.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/wikibase-sdk/-/wikibase-sdk-7.15.0.tgz", | ||||||
|  |       "integrity": "sha512-EZvOVz2Ezx1IsiSTlJ5XF1SLLudzWvtm7CV5DYKhO7CIX4EkB0Pc8seb8h6ZNEPRgYqnmrTx5aLsaIQW7GBe2w==", | ||||||
|  |       "dev": true, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">= 6.4" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/winston": { |     "node_modules/winston": { | ||||||
|       "version": "3.13.0", |       "version": "3.13.0", | ||||||
|       "license": "MIT", |       "license": "MIT", | ||||||
|  | @ -35251,12 +35263,25 @@ | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "wikibase-sdk": { |     "wikibase-sdk": { | ||||||
|       "version": "7.15.0" |       "version": "10.1.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/wikibase-sdk/-/wikibase-sdk-10.1.1.tgz", | ||||||
|  |       "integrity": "sha512-ePSfVhHeJ5ljAxde7O9ryzIBeNF54RB+LTn5naF+mUitDJeRkrgz2ZTxl89EMDzJeHUV4VnwVmLRWRcDqPA9Ng==" | ||||||
|     }, |     }, | ||||||
|     "wikidata-sdk": { |     "wikidata-sdk": { | ||||||
|       "version": "7.14.4", |       "version": "7.14.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/wikidata-sdk/-/wikidata-sdk-7.14.4.tgz", | ||||||
|  |       "integrity": "sha512-UAFBXWLxEWvB0Pn/c+ekc1voU8o0zR7T3kRt9xHLyfy2OiV7W1htk2iErwJdfisBPDb2a35HUgf2x1+ZAdrM8A==", | ||||||
|  |       "dev": true, | ||||||
|       "requires": { |       "requires": { | ||||||
|         "wikibase-sdk": "^7.14.4" |         "wikibase-sdk": "^7.14.4" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "wikibase-sdk": { | ||||||
|  |           "version": "7.15.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/wikibase-sdk/-/wikibase-sdk-7.15.0.tgz", | ||||||
|  |           "integrity": "sha512-EZvOVz2Ezx1IsiSTlJ5XF1SLLudzWvtm7CV5DYKhO7CIX4EkB0Pc8seb8h6ZNEPRgYqnmrTx5aLsaIQW7GBe2w==", | ||||||
|  |           "dev": true | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "winston": { |     "winston": { | ||||||
|  |  | ||||||
|  | @ -224,8 +224,7 @@ | ||||||
|     "turndown": "^7.1.3", |     "turndown": "^7.1.3", | ||||||
|     "vite-node": "^0.28.3", |     "vite-node": "^0.28.3", | ||||||
|     "vitest": "^0.28.3", |     "vitest": "^0.28.3", | ||||||
|     "wikibase-sdk": "^7.14.0", |     "wikibase-sdk": "^10.1.1", | ||||||
|     "wikidata-sdk": "^7.14.0", |  | ||||||
|     "xml2js": "^0.5.0" |     "xml2js": "^0.5.0" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|  |  | ||||||
|  | @ -3,7 +3,6 @@ | ||||||
|  * Some meta-info (e.g. RTL) is exported too |  * Some meta-info (e.g. RTL) is exported too | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import * as wds from "wikidata-sdk" |  | ||||||
| import { Utils } from "../src/Utils" | import { Utils } from "../src/Utils" | ||||||
| import ScriptUtils from "./ScriptUtils" | import ScriptUtils from "./ScriptUtils" | ||||||
| import { existsSync, readFileSync, writeFileSync } from "fs" | import { existsSync, readFileSync, writeFileSync } from "fs" | ||||||
|  | @ -44,10 +43,10 @@ async function fetchRegularLanguages() { | ||||||
|         "  ?lang wdt:P424 ?code. \n" + // Wikimedia language code seems to be close to the weblate entries
 |         "  ?lang wdt:P424 ?code. \n" + // Wikimedia language code seems to be close to the weblate entries
 | ||||||
|         '  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } \n' + |         '  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } \n' + | ||||||
|         "} " |         "} " | ||||||
|     const url = wds.sparqlQuery(sparql) |     const url = Wikidata.wds.sparqlQuery(sparql) | ||||||
| 
 | 
 | ||||||
|     // request the generated URL with your favorite HTTP request library
 |     // request the generated URL with your favorite HTTP request library
 | ||||||
|     const result = await Utils.downloadJson(url, { "User-Agent": "MapComplete script" }) |     const result = await Utils.downloadJson<{results: {bindings: any[]}}>(url, { "User-Agent": "MapComplete script" }) | ||||||
|     const bindings = <LanguageSpecResult[]>result.results.bindings |     const bindings = <LanguageSpecResult[]>result.results.bindings | ||||||
| 
 | 
 | ||||||
|     // Traditional chinese = 繁體中文 or 正體中文
 |     // Traditional chinese = 繁體中文 or 正體中文
 | ||||||
|  | @ -97,9 +96,9 @@ async function fetchSpecial(id: number, code: string): Promise<LanguageSpecResul | ||||||
|         '  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } \n' + |         '  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } \n' + | ||||||
|         "} " |         "} " | ||||||
|     console.log("Special sparql:", sparql) |     console.log("Special sparql:", sparql) | ||||||
|     const url = wds.sparqlQuery(sparql) |     const url = Wikidata.wds.sparqlQuery(sparql) | ||||||
| 
 | 
 | ||||||
|     const result = await Utils.downloadJson(url, { "User-Agent": "MapComplete script" }) |     const result = await Utils.downloadJson<{results: {bindings: any[]}}>(url, { "User-Agent": "MapComplete script" }) | ||||||
|     const bindings = result.results.bindings |     const bindings = result.results.bindings | ||||||
|     bindings.forEach((binding) => (binding["code"] = { value: code })) |     bindings.forEach((binding) => (binding["code"] = { value: code })) | ||||||
|     return bindings |     return bindings | ||||||
|  | @ -133,9 +132,9 @@ async function getOfficialLanguagesPerCountry(): Promise<Map<string, string[]>> | ||||||
|             ?language wdt:P218 ?languageCode. |             ?language wdt:P218 ?languageCode. | ||||||
|             SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } |             SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } | ||||||
|     }` |     }` | ||||||
|     const url = wds.sparqlQuery(sparql) |     const url = Wikidata.wds.sparqlQuery(sparql) | ||||||
| 
 | 
 | ||||||
|     const result = await Utils.downloadJson(url, { "User-Agent": "MapComplete script" }) |     const result = await Utils.downloadJson<{results: {bindings: any[]}}>(url, { "User-Agent": "MapComplete script" }) | ||||||
|     const bindings: { countryCode: { value: string }; languageCode: { value: string } }[] = |     const bindings: { countryCode: { value: string }; languageCode: { value: string } }[] = | ||||||
|         result.results.bindings |         result.results.bindings | ||||||
|     for (const binding of bindings) { |     for (const binding of bindings) { | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| import { Utils } from "../../Utils" | import { Utils } from "../../Utils" | ||||||
| import { Store, UIEventSource } from "../UIEventSource" | import { Store, UIEventSource } from "../UIEventSource" | ||||||
| import * as wds from "wikidata-sdk" | import { WBK} from "wikibase-sdk" | ||||||
| 
 | 
 | ||||||
| export class WikidataResponse { | export class WikidataResponse { | ||||||
|     public readonly id: string |     public readonly id: string | ||||||
|  | @ -54,7 +54,8 @@ export class WikidataResponse { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     static extractClaims(claimsJson: any): Map<string, Set<string>> { |     static extractClaims(claimsJson: any): Map<string, Set<string>> { | ||||||
|         const simplified = wds.simplify.claims(claimsJson, { |         // @ts-ignore
 | ||||||
|  |         const simplified = Wikidata.wds.simplify.claims(claimsJson, { | ||||||
|             timeConverter: "simple-day", |             timeConverter: "simple-day", | ||||||
|         }) |         }) | ||||||
| 
 | 
 | ||||||
|  | @ -127,6 +128,12 @@ interface SparqlResult { | ||||||
|  * Utility functions around wikidata |  * Utility functions around wikidata | ||||||
|  */ |  */ | ||||||
| export default class Wikidata { | export default class Wikidata { | ||||||
|  | 
 | ||||||
|  |     public static wds = WBK({ | ||||||
|  |         instance: "https://wikidata.org", | ||||||
|  |         sparqlEndpoint: "https://query.wikidata.org/bigdata/namespace/wdq/sparql" | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|     public static readonly neededUrls = [ |     public static readonly neededUrls = [ | ||||||
|         "https://www.wikidata.org/", |         "https://www.wikidata.org/", | ||||||
|         "https://wikidata.org/", |         "https://wikidata.org/", | ||||||
|  | @ -204,7 +211,7 @@ export default class Wikidata { | ||||||
|             ${instanceOf} |             ${instanceOf} | ||||||
|             ${minusPhrases.join("\n    ")} |             ${minusPhrases.join("\n    ")} | ||||||
|         } ORDER BY ASC(?num) LIMIT ${options?.maxCount ?? 20}` |         } ORDER BY ASC(?num) LIMIT ${options?.maxCount ?? 20}` | ||||||
|         const url = wds.sparqlQuery(sparql) |         const url = Wikidata. wds.sparqlQuery(sparql) | ||||||
| 
 | 
 | ||||||
|         const result = await Utils.downloadJson<SparqlResult>(url) |         const result = await Utils.downloadJson<SparqlResult>(url) | ||||||
|         /*The full uri of the wikidata-item*/ |         /*The full uri of the wikidata-item*/ | ||||||
|  | @ -245,9 +252,9 @@ export default class Wikidata { | ||||||
|             lang + |             lang + | ||||||
|             "&type=item&origin=*" + |             "&type=item&origin=*" + | ||||||
|             "&props=" // props= removes some unused values in the result
 |             "&props=" // props= removes some unused values in the result
 | ||||||
|         const response = await Utils.downloadJsonCached(url, 10000) |         const response = await Utils.downloadJsonCached<{search: any[]}>(url, 10000) | ||||||
| 
 | 
 | ||||||
|         const result: any[] = response.search |         const result = response.search | ||||||
| 
 | 
 | ||||||
|         if (result.length < pageCount) { |         if (result.length < pageCount) { | ||||||
|             // No next page
 |             // No next page
 | ||||||
|  | @ -375,7 +382,7 @@ export default class Wikidata { | ||||||
|     /** |     /** | ||||||
|      * Build a SPARQL-query, return the result |      * Build a SPARQL-query, return the result | ||||||
|      * |      * | ||||||
|      * @param keys: how variables are named. Every key not ending with 'Label' should appear in at least one statement |      * @param keys how variables are named. Every key not ending with 'Label' should appear in at least one statement | ||||||
|      * @param statements |      * @param statements | ||||||
|      * @constructor |      * @constructor | ||||||
|      */ |      */ | ||||||
|  | @ -392,9 +399,9 @@ export default class Wikidata { | ||||||
|             statements.map((stmt) => (stmt.endsWith(".") ? stmt : stmt + ".")).join("\n") + |             statements.map((stmt) => (stmt.endsWith(".") ? stmt : stmt + ".")).join("\n") + | ||||||
|             '  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }\n' + |             '  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }\n' + | ||||||
|             "}" |             "}" | ||||||
|         const url = wds.sparqlQuery(query) |         const url = Wikidata.wds.sparqlQuery(query) | ||||||
|         const result = await Utils.downloadJsonCached<SparqlResult>(url, 24 * 60 * 60 * 1000) |         const result = await Utils.downloadJsonCached<SparqlResult>(url, 24 * 60 * 60 * 1000) | ||||||
|         return result.results.bindings |         return <any> result.results.bindings | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private static _cache = new Map<string, Promise<WikidataResponse>>() |     private static _cache = new Map<string, Promise<WikidataResponse>>() | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue