diff --git a/jest.setup.js b/jest.setup.js index de4a3788..f7cfa62f 100644 --- a/jest.setup.js +++ b/jest.setup.js @@ -2,3 +2,4 @@ // @ts-nocheck var mockMediaWiki = require( '@wikimedia/mw-node-qunit/src/mockMediaWiki.js' ); global.mw = mockMediaWiki(); +global.$ = require('jquery'); diff --git a/jsdoc.json b/jsdoc.json index 9bed76b2..9a67c1ee 100644 --- a/jsdoc.json +++ b/jsdoc.json @@ -19,6 +19,7 @@ "linkMap": { "\"addEventListener\"": "https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener", "jQuery": "https://api.jquery.com", + "AbortSignal": "https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal", "Document": "https://developer.mozilla.org/docs/Web/API/Document", "Element": "https://developer.mozilla.org/docs/Web/API/Element", "Event": "https://developer.mozilla.org/docs/Web/API/Event", @@ -31,11 +32,11 @@ "HTMLInputElement": "https://developer.mozilla.org/docs/Web/API/HTMLInputElement", "\"removeEventListener\"": "https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener", "Window": "https://developer.mozilla.org/docs/Web/API/Window", - "CheckboxHack": "https://doc.wikimedia.org/mediawiki-core/master/js", - - "MW": "https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw", "MediaWikiPageReadyModule": "https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.plugin.page.ready", + "MW": "https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw", + "MwMap": "https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.Map", + "RequestInit": "https://developer.mozilla.org/en-US/docs/Web/API/Request/Request", "JQueryStatic": "https://api.jquery.com", "VectorResourceLoaderVirtualConfig": "#", "void": "#", diff --git a/package-lock.json b/package-lock.json index ee7b6178..c3785069 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,8 +19,9 @@ "eslint-config-wikimedia": "0.20.0", "grunt-banana-checker": "0.9.0", "jest": "26.4.2", + "jest-fetch-mock": "3.0.3", "jsdoc": "3.6.7", - "jsdoc-wmf-theme": "0.0.3", + "jsdoc-wmf-theme": "0.0.5", "less": "3.8.1", "less-loader": "4.1.0", "mustache": "3.0.1", @@ -7607,6 +7608,57 @@ "react": "^0.14.0 || ^15.0.0 || ^16.0.0" } }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/cross-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/cross-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/cross-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -14172,6 +14224,16 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-fetch-mock": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz", + "integrity": "sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==", + "dev": true, + "dependencies": { + "cross-fetch": "^3.0.4", + "promise-polyfill": "^8.1.3" + } + }, "node_modules/jest-get-type": { "version": "26.3.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", @@ -15793,9 +15855,9 @@ } }, "node_modules/jsdoc-wmf-theme": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/jsdoc-wmf-theme/-/jsdoc-wmf-theme-0.0.3.tgz", - "integrity": "sha512-jpszk0hcjY7bD1sCd8JrBdtcoudG0h9FbJTjdq8WOSEtUBNWgtIc7s1ccDoYnK/bp4OEuA7xH0xtpqe0SVutsw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/jsdoc-wmf-theme/-/jsdoc-wmf-theme-0.0.5.tgz", + "integrity": "sha512-YRVucO3yiKF6a54oIR+gQLDynO60o2m0lOiCBCws0vIORJOn9T++tGJrOCVy5TSaSAmJTX1cnTbUCH7L+c1JCw==", "dev": true, "dependencies": { "domino": "^2.0.1", @@ -18861,6 +18923,12 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "node_modules/promise-polyfill": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.1.tgz", + "integrity": "sha512-3p9zj0cEHbp7NVUxEYUWjQlffXqnXaZIMPkAO7HhFh8u5636xLRDHOUo2vpWSK0T2mqm6fKLXYn1KP6PAZ2gKg==", + "dev": true + }, "node_modules/promise.allsettled": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.4.tgz", @@ -30772,6 +30840,48 @@ "warning": "^4.0.3" } }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "requires": { + "node-fetch": "2.6.7" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -35892,6 +36002,16 @@ "jest-util": "^26.6.2" } }, + "jest-fetch-mock": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz", + "integrity": "sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==", + "dev": true, + "requires": { + "cross-fetch": "^3.0.4", + "promise-polyfill": "^8.1.3" + } + }, "jest-get-type": { "version": "26.3.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", @@ -37144,9 +37264,9 @@ "dev": true }, "jsdoc-wmf-theme": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/jsdoc-wmf-theme/-/jsdoc-wmf-theme-0.0.3.tgz", - "integrity": "sha512-jpszk0hcjY7bD1sCd8JrBdtcoudG0h9FbJTjdq8WOSEtUBNWgtIc7s1ccDoYnK/bp4OEuA7xH0xtpqe0SVutsw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/jsdoc-wmf-theme/-/jsdoc-wmf-theme-0.0.5.tgz", + "integrity": "sha512-YRVucO3yiKF6a54oIR+gQLDynO60o2m0lOiCBCws0vIORJOn9T++tGJrOCVy5TSaSAmJTX1cnTbUCH7L+c1JCw==", "dev": true, "requires": { "domino": "^2.0.1", @@ -39569,6 +39689,12 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "promise-polyfill": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.1.tgz", + "integrity": "sha512-3p9zj0cEHbp7NVUxEYUWjQlffXqnXaZIMPkAO7HhFh8u5636xLRDHOUo2vpWSK0T2mqm6fKLXYn1KP6PAZ2gKg==", + "dev": true + }, "promise.allsettled": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.4.tgz", diff --git a/package.json b/package.json index 2015abd3..5c03ea5e 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,9 @@ "eslint-config-wikimedia": "0.20.0", "grunt-banana-checker": "0.9.0", "jest": "26.4.2", + "jest-fetch-mock": "3.0.3", "jsdoc": "3.6.7", - "jsdoc-wmf-theme": "0.0.3", + "jsdoc-wmf-theme": "0.0.5", "less": "3.8.1", "less-loader": "4.1.0", "mustache": "3.0.1", diff --git a/resources/skins.vector.search/.eslintrc.json b/resources/skins.vector.search/.eslintrc.json index f7eaa245..915524cc 100644 --- a/resources/skins.vector.search/.eslintrc.json +++ b/resources/skins.vector.search/.eslintrc.json @@ -1,5 +1,16 @@ { "extends": [ "../../.eslintrcEs6.json" - ] + ], + "rules": { + "jsdoc/no-undefined-types": [ + "error", + { + "definedTypes": [ + "RequestInit", + "MwMap" + ] + } + ] + } } diff --git a/resources/skins.vector.search/App.vue b/resources/skins.vector.search/App.vue index 93ffe5ff..421441d3 100644 --- a/resources/skins.vector.search/App.vue +++ b/resources/skins.vector.search/App.vue @@ -42,6 +42,7 @@