Lucas_Werkmeister_WMDE added a comment.

  I couldn’t figure out how to make it part of the app module, but extracting 
the dispatcher into a separate module reduces the size of the init module 
substantially:
  
    diff --git a/client/data-bridge/package.json 
b/client/data-bridge/package.json
    index fd81fd9f4..383145e24 100644
    --- a/client/data-bridge/package.json
    +++ b/client/data-bridge/package.json
    @@ -8,6 +8,7 @@
         "build": "npm-run-all build:*",
         "build:app": "NODE_ENV=production vue-cli-service build --no-clean 
--target lib --formats commonjs src/main.ts",
         "build:init": "NODE_ENV=production vue-cli-service build --no-clean",
    +    "build:dispatcher": "NODE_ENV=production vue-cli-service build 
--no-clean --target lib --formats commonjs --name dispatcher 
src/mediawiki/Dispatcher.ts",
         "fix": "vue-cli-service lint --max-warnings 0 .",
         "test": "npm-run-all test:*",
         "test:lint": "vue-cli-service lint --max-warnings 0 --no-fix . && 
stylelint --syntax scss 'src/**/*.(vue|scss)'",
    diff --git a/client/data-bridge/src/mediawiki/init.ts 
b/client/data-bridge/src/mediawiki/init.ts
    index 3d78cc33c..62516a32d 100644
    --- a/client/data-bridge/src/mediawiki/init.ts
    +++ b/client/data-bridge/src/mediawiki/init.ts
    @@ -1,9 +1,10 @@
     import MwWindow from '@/@types/mediawiki/MwWindow';
     import BridgeDomElementsSelector from 
'@/mediawiki/BridgeDomElementsSelector';
     import { SelectedElement } from '@/mediawiki/SelectedElement';
    -import Dispatcher from '@/mediawiki/Dispatcher';
    +import { default as DispatcherType } from '@/mediawiki/Dispatcher';
     
     const APP_MODULE = 'wikibase.client.data-bridge.app';
    +const DISPATCHER_MODULE = 'wikibase.client.data-bridge.dispatcher';
     const WBREPO_MODULE = 'mw.config.values.wbRepo';
     const FOREIGNAPI_MODULE = 'mediawiki.ForeignApi';
     const ULS_MODULE = 'jquery.uls.data';
    @@ -28,12 +29,14 @@ export default async (): Promise<void> => {
        if ( linksToOverload.length > 0 ) {
                const require = await mwWindow.mw.loader.using( [
                                APP_MODULE,
    +                           DISPATCHER_MODULE,
                                WBREPO_MODULE,
                                FOREIGNAPI_MODULE,
                                ULS_MODULE,
                                MWLANGUAGE_MODULE,
                        ] ),
                        app = require( APP_MODULE ),
    +                   Dispatcher: typeof DispatcherType = require( 
DISPATCHER_MODULE ).default,
                        dispatcher = new Dispatcher( mwWindow, app, 
dataBridgeConfig );
     
                linksToOverload.map( ( selectedElement: SelectedElement ) => {
    diff --git a/client/resources/Resources.php b/client/resources/Resources.php
    index 9c9a0e0f2..085d2bccd 100644
    --- a/client/resources/Resources.php
    +++ b/client/resources/Resources.php
    @@ -66,6 +66,24 @@
                        }
                ],
     
    +           'wikibase.client.data-bridge.dispatcher' => [
    +                   'factory' => function () {
    +                           $clientSettings = 
WikibaseClient::getDefaultInstance()->getSettings();
    +                           return new ResourceLoaderFileModule(
    +                                   [
    +                                           'scripts' => [
    +                                                   'dispatcher.common.js'
    +                                           ],
    +                                           'targets' => 
$clientSettings->getSetting( 'dataBridgeEnabled' ) ?
    +                                                   [ 'desktop', 'mobile' ] 
:
    +                                                   [],
    +                                           'remoteExtPath' => 
'Wikibase/client/data-bridge/dist',
    +                                   ],
    +                                   __DIR__ . '/../data-bridge/dist'
    +                           );
    +                   },
    +           ],
    +
                'wikibase.client.data-bridge.app' => [
                        'factory' => function () {
                                $clientSettings = 
WikibaseClient::getDefaultInstance()->getSettings();
  
  
  
    $ git show @:client/data-bridge/dist/data-bridge.init.js | wc -c
    85411
    $ cat client/data-bridge/dist/data-bridge.init.js | wc -c
    56988
  
  The new `dispatcher.common.js` is much larger than this difference, but I 
hope that’s mostly because it’s not minified whereas `data-bridge.init.js` is.

TASK DETAIL
  https://phabricator.wikimedia.org/T233305

EMAIL PREFERENCES
  https://phabricator.wikimedia.org/settings/panel/emailpreferences/

To: Lucas_Werkmeister_WMDE
Cc: Lucas_Werkmeister_WMDE, Michael, Aklapper, Lydia_Pintscher, darthmon_wmde, 
DannyS712, Nandana, Lahi, Gq86, GoranSMilovanovic, QZanden, LawExplorer, 
_jensen, rosalieper, Wikidata-bugs, aude, Mbch331
_______________________________________________
Wikidata-bugs mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikidata-bugs

Reply via email to