User talk:SD0001/Making user scripts load faster

Latest comment: 3 months ago by GhostInTheMachine in topic Change please

Further issue with spihelper edit

This script seemingly does not work with spihelper again. It worked for a bit, but now does not work again. The error from the console is "Uncaught (in promise) ReferenceError: displayMessage is not defined". This seemingly seems to be the script not working well with importing scripts from cached scripts. The displayMessage function is in a imported javascript file in spihelper. When adding "?nocache=yes" to the URL it does not cause the error. I also manually called "displayMessage" with and without the cache and confirmed that with cache the javascript console does not have the function defined. However, the network tab shows that regardless of cache being enabled or not enabled the displayMessage javascript file is still downloaded or has loaded the cached result (and using the api method if caching is enabled). I'm using Firefox. Dreamy Jazz talk to me | my contributions 22:07, 3 June 2021 (UTC)Reply

@Dreamy Jazz Thanks for the note. Just seeing this now. Should be fixed. I replaced use of eval with inserting a <script> tag, which seems to make the behaviour more like the uncached method.
Going by the book, if User:Timotheus Canens/displaymessage.js wants displayMessage to be globally exposed, it should really be doing window.displayMessage = function() {...}. I'm surprised that it even works. – SD0001 (talk) 16:55, 13 June 2021 (UTC)Reply

Conflict with scriptManager edit

@SD0001: I think this has a conflict with scriptManager, meaning it ignores scriptManager-installed scripts. Also, the text to be copied and pasted could be replaced with {{subst:User:SD0001/userscript-load-caching.min.js}} and {{subst:User:SD0001/userscript-load-caching.js}}, respectively. ― Qwerfjkl | 𝕋𝔸𝕃𝕂  (please use {{reply to|Qwerfjkl}} on reply) 13:56, 13 June 2021 (UTC)Reply

@Qwerfjkl I made some changes per the above section. Could you check again? Looking at scriptManager's source code, I can't think of a reason why the two would conflict. Also, does it now work with RedWarn? – SD0001 (talk) 11:55, 15 June 2021 (UTC)Reply
@SD0001 We now just need Ed6767 to apply the changes to User:RedWarn/.js. ― Qwerfjkl | 𝕋𝔸𝕃𝕂  (please use {{reply to|Qwerfjkl}} on reply) 15:55, 15 June 2021 (UTC)Reply
@SD0001 With scriptManager enbled I get this error:
mdlLogic.js:1 Uncaught URIError: URI malformed
at decodeURIComponent (<anonymous>)
at Function.t.EPPyTH (mdlLogic.js:1)
at t (mdlLogic.js:1)
at Object.mw.loader.load (<anonymous>:3:767)
at HTMLAnchorElement.loadScript (index.php?action=raw&ctype=text/javascript&title=User%3AMusikAnimal%2FscriptManager.js:15)
at HTMLAnchorElement.dispatch (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:70)
at HTMLAnchorElement.elemData.handle (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:66) ― Qwerfjkl | 𝕋𝔸𝕃𝕂  (please use {{reply to|Qwerfjkl}} on reply) 15:59, 15 June 2021 (UTC)Reply
@Qwerfjkl I just tested with both (scriptManager & RedWarn) and they all work fine for me now. The changes to User:RedWarn/.js are already applied.
As to why it isn't working for you, it might be because of complications in your common.js. You can remove those if (scriptManager == ...) conditions now as scriptManager and script caching wouldn't conflict. Also, avoid redefining importScript (lines 4-6) as the script caching code does this internally. – SD0001 (talk) 16:38, 15 June 2021 (UTC)Reply
@SD0001 I think I've removed all of the unecessary code (messily). ― Qwerfjkl | 𝕋𝔸𝕃𝕂  (please use {{reply to|Qwerfjkl}} on reply) 16:55, 15 June 2021 (UTC)Reply
@SD0001 I now get (which I think stopped me from saving an edit):
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 Uncaught TypeError: Cannot read property 'end' of null
at jQuery.fn.init.getCaretPosition (<anonymous>:137:580)
at jQuery.fn.init.$.fn.textSelection (<anonymous>:205:237)
at jQuery.fn.init.$.fn.wikiEditor (load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:11)
at Object.mw.addWikiEditor (load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:5)
at HTMLDocument.<anonymous> (load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:5)
at mightThrow (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:49)
at process (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:50)
mdlLogic.js:1 Uncaught URIError: URI malformed
at decodeURIComponent (<anonymous>)
at Function.t.EPPyTH (mdlLogic.js:1)
at t (mdlLogic.js:1)
at Object.mw.loader.load (<anonymous>:2:180)
at Object.preloadDeflate (<anonymous>:155:854)
at <anonymous>:462:348 ― Qwerfjkl | 𝕋𝔸𝕃𝕂  (please use {{reply to|Qwerfjkl}} on reply) 16:59, 15 June 2021 (UTC)Reply
My eror console in full:
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:145 JQMIGRATE: Migrate is installed with logging active, version 3.3.2
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:339 This page is using the deprecated ResourceLoader module "jquery.ui".
Please use OOUI instead.
mw.loader.implement.css @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:339
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146 JQMIGRATE: jQuery.isFunction is deprecated
migrateWarn @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146 JQMIGRATE: jQuery.fn.delegate is deprecated
migrateWarn @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146 JQMIGRATE: jQuery.type is deprecated
migrateWarn @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146
2VM1905:661 Use of "importScriptURI" is deprecated. Use mw.loader instead.
maybeLog @ VM1905:661
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 jQuery.Deferred exception: Cannot read property 'indexOf' of undefined TypeError: Cannot read property 'indexOf' of undefined
at Array.<anonymous> (<anonymous>:760:12)
at Object.ARA_Functions.getSuggestions (<anonymous>:380:24)
at Object.ARA_Functions.scan (<anonymous>:299:45)
at HTMLDocument.<anonymous> (<anonymous>:22:16)
at mightThrow (https://en.wikipedia.org/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:49:833)
at process (https://en.wikipedia.org/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:50:498) undefined
jQuery.Deferred.exceptionHook @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 Uncaught TypeError: Cannot read property 'indexOf' of undefined
at Array.<anonymous> (<anonymous>:760:12)
at Object.ARA_Functions.getSuggestions (<anonymous>:380:24)
at Object.ARA_Functions.scan (<anonymous>:299:45)
at HTMLDocument.<anonymous> (<anonymous>:22:16)
at mightThrow (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:49)
at process (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:50)
VM1905:661 Use of "userscript-regexframework-regexTool" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-regsearch" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-regex" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-setreason" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-setoptions" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-doaction" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-custom" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-customaddnew" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
2VM1905:661 Use of "userscript-regexframework-rfmenu" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-regexTool" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-regsearch" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-regex" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-setreason" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-setoptions" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-doaction" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-custom" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-customaddnew" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-rfmenu" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-regexTool" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-regsearch" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-regex" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-setreason" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-setoptions" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-doaction" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-custom" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-customaddnew" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
2VM1905:661 Use of "userscript-regexframework-rfmenu" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-regexTool" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-regsearch" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-regex" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-setreason" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-setoptions" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-doaction" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-custom" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-customaddnew" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1905:661 Use of "userscript-regexframework-rfmenu" is deprecated. Use m:TemplateScript instead.
maybeLog @ VM1905:661
VM1853:305 RedWarn 16.1 - (c) 2021 RedWarn Contributors
2mdlLogic.js:1 Uncaught URIError: URI malformed
at decodeURIComponent (<anonymous>)
at Function.t.EPPyTH (mdlLogic.js:1)
at t (mdlLogic.js:1)
at Object.mw.loader.load (<anonymous>:2:180)
at <anonymous>:6:11
at Object.<anonymous> (<anonymous>:1:724)
at mightThrow (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:49)
at process (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:50)
VM1914:2 This page is using the deprecated ResourceLoader module "jquery.throttle-debounce".
Please use OO.ui.throttle/debounce instead. See https://phabricator.wikimedia.org/T213426
(anonymous) @ VM1914:2
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 jQuery.Deferred exception: URI malformed URIError: URI malformed
at decodeURIComponent (<anonymous>)
at Function.t.EPPyTH (https://redwarn.toolforge.org/cdn/js/mdlLogic.js:1:2695)
at t (https://redwarn.toolforge.org/cdn/js/mdlLogic.js:1:3719)
at Object.mw.loader.load (<anonymous>:2:180)
at Array.<anonymous> (<anonymous>:38:12)
at mightThrow (https://en.wikipedia.org/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:49:833)
at process (https://en.wikipedia.org/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:50:498) undefined
jQuery.Deferred.exceptionHook @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146 JQMIGRATE: jQuery.trim is deprecated; use String.prototype.trim
migrateWarn @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 jQuery.Deferred exception: Cannot read property 'end' of null TypeError: Cannot read property 'end' of null
at jQuery.fn.init.getCaretPosition (<anonymous>:137:580)
at jQuery.fn.init.$.fn.textSelection (<anonymous>:205:237)
at jQuery.fn.init.$.fn.wikiEditor (https://en.wikipedia.org/w/load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:11:344)
at Object.mw.addWikiEditor (https://en.wikipedia.org/w/load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:5:620)
at HTMLDocument.<anonymous> (https://en.wikipedia.org/w/load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:5:527)
at mightThrow (https://en.wikipedia.org/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:49:833)
at process (https://en.wikipedia.org/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:50:498) undefined
jQuery.Deferred.exceptionHook @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146 JQMIGRATE: jQuery.fn.unbind is deprecated
migrateWarn @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 Uncaught TypeError: Cannot read property 'end' of null
at jQuery.fn.init.getCaretPosition (<anonymous>:137:580)
at jQuery.fn.init.$.fn.textSelection (<anonymous>:205:237)
at jQuery.fn.init.$.fn.wikiEditor (load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:11)
at Object.mw.addWikiEditor (load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:5)
at HTMLDocument.<anonymous> (load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:5)
at mightThrow (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:49)
at process (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:50)
mdlLogic.js:1 Uncaught URIError: URI malformed
at decodeURIComponent (<anonymous>)
at Function.t.EPPyTH (mdlLogic.js:1)
at t (mdlLogic.js:1)
at Object.mw.loader.load (<anonymous>:2:180)
at Object.preloadDeflate (<anonymous>:155:854)
at <anonymous>:462:348
load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 jQuery.Deferred exception: URI malformed URIError: URI malformed
at decodeURIComponent (<anonymous>)
at Function.t.EPPyTH (https://redwarn.toolforge.org/cdn/js/mdlLogic.js:1:2695)
at t (https://redwarn.toolforge.org/cdn/js/mdlLogic.js:1:3719)
at Object.mw.loader.load (<anonymous>:2:180)
at VeInitMwDesktopArticleTarget.ve.init.mw.DesktopArticleTarget.saveComplete (<anonymous>:18:677)
at fire (https://en.wikipedia.org/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:46:897)
at fireWith (https://en.wikipedia.org/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:48:96)
at mightThrow (https://en.wikipedia.org/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:50:441)
at process (https://en.wikipedia.org/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:50:498) undefined
jQuery.Deferred.exceptionHook @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52
DevTools failed to load source map: Could not load content for https://redwarn.toolforge.org/cdn/css/jquery.contextMenu.min.css.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools failed to load source map: Could not load content for https://redwarn.toolforge.org/cdn/js/jquery.contextMenu.min.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools failed to load source map: Could not load content for https://redwarn.toolforge.org/cdn/js/material.min.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE ― Qwerfjkl | 𝕋𝔸𝕃𝕂  (please use {{reply to|Qwerfjkl}} on reply) 17:02, 15 June 2021 (UTC)Reply
@SD0001 For both of these revisions of my common.js page, I cannot edit: [1] [2] Qwerfjkl | 𝕋𝔸𝕃𝕂  (please use {{reply to|Qwerfjkl}} on reply) 17:15, 15 June 2021 (UTC)Reply
That's strange. I have the copy of [3] in my common.js right now, but I am able to edit. It's very rare for user script issues to interfere with editing ability. – SD0001 (talk) 17:20, 15 June 2021 (UTC)Reply
@Qwerfjkl: Do you also have browser extensions enabled? That might be making the difference. From the stack trace you posted, it seems to me most of those errors are coming from RedWarn. Try disabling RedWarn. If all else fails, I'd suggest deleting everything from common.js and then going on adding the scripts you use one by one until the issue comes up again. – SD0001 (talk) 17:25, 15 June 2021 (UTC)Reply
@SD0001 RedWarn seems to be the problem. I'll post a notice there. ― Qwerfjkl | 𝕋𝔸𝕃𝕂  (please use {{reply to|Qwerfjkl}} on reply) 17:42, 15 June 2021 (UTC)Reply
  This editing deficiency was a problem relating to the 2017 WikiText editor.Qwerfjkltalk 07:57, 22 July 2021 (UTC)Reply

Mobile? edit

@SD0001, Does this allow importScripts to load on mobile? I suspect it does, just curious. — Qwerfjkltalk 20:09, 22 September 2022 (UTC)Reply

@Qwerfjkl importScript already works on mobile since this month or last month. Before that, yes this script enabled it to work on mobile. – SD0001 (talk) 06:07, 23 September 2022 (UTC)Reply

Change please edit

@SD0001: I use your loader code to good effect, but was unable to fully load AutoEd. I cloned your code to find out why. I then made a couple of changes and now AutoEd loads and works correctly:

  • Contentmodel — your code confirms that the target page is indeed JavaScript. However, the AutoEd module pages are currently set as wikitext and so are rejected.
  • Namespace — your code checks the target namespace for user or MediaWiki. However, AutoEd is in the Wikipedia namespace.

The first is not an issue with the loader — JavaScript should identify as JavaScript. I have asked that the module pages be changed.

However, please could you update the code to also allow the Wikipedia namespace. — GhostInTheMachine talk to me 12:14, 25 January 2024 (UTC)Reply

I've fixed the content model issue. On the namespace issue, what standard importScript does is to also allow fully-protected pages (regardless of namespace) in addition to MediaWiki namespace pages and user JS pages. Personally I don't think any restriction is needed at all - the purpose of the rule (which only dates to 2018) is to keep inexperienced people from shooting themselves in the foot and anyone using this script is familiar enough with user scripts to not do that. * Pppery * it has begun... 20:45, 25 January 2024 (UTC)Reply
Fair enough. I think that the contentmodel check is the important one. Importing something and treating it as JavaScript means we would really like it to be JavaScript. (Not an absolute test, I know.) Where the JS came from is probably less important, since we did ask for it to be loaded. Presumably, each JS "consumer" is going to check where it does come from! We are therefore outsourcing trust to specific users for subsequent changes to their user scripts or to the overall "system" for any published utilities or gadgets. I am fairly happy about that, as user (JS) sub-pages are protected from edits by other "normal" users (WP:UPPROT).
@SD0001: Any thoughts on removing the namespace test? — GhostInTheMachine talk to me 13:59, 28 January 2024 (UTC)Reply
MediaWiki doesn't check the content model at all for non-userspace pages. So I suppose us checking the content model is a sufficient (and better) security measure. Makes sense to remove the namespace check. – SD0001 (talk) 16:58, 28 January 2024 (UTC)Reply
  DoneSD0001 (talk) 17:23, 28 January 2024 (UTC)Reply
  Many thanks. All is well — GhostInTheMachine talk to me 11:17, 29 January 2024 (UTC)Reply

mw.Api()? edit

Would it be faster to use wmdoc:mediawiki-core/master/js/mw.Api.html and ES6 promises instead of jQuery stuff? Aaron Liu (talk) 19:33, 25 January 2024 (UTC)Reply

Not only do you have to wait for the module to load to use mw.Api, it is a wrapper for $.ajax. Fetch API is the modern way but there's usually little to no performance difference. Nardog (talk) 10:54, 27 January 2024 (UTC)Reply
As Nardog implies, the reason for not depending on mediawiki.api or other dependencies is because any importScript calls that occur while we wait for dependencies to load wouldn't benefit from caching. Even if mw.Api is already loaded when common.js loads, there is still no guarantee that the snippet executes before the importScript calls down the page, because of the mw.loader.using callback being async. This is also the reason the script urls are parsed with regex instead of mw.Uri. – SD0001 (talk) 17:44, 28 January 2024 (UTC)Reply