Commit graph

1786 commits

Author SHA1 Message Date
Translation updater bot dbb16dadc7 Localisation updates from https://translatewiki.net.
Change-Id: I1253ccba13a8d85c96ba14b8d3bff30a399ae5c3
2019-01-17 09:12:52 +01:00
Thiemo Kreuz 84ef742bc2 Simplify PopupsContext::areDependenciesMet
Change-Id: I4d545f27e05451e44945217520fdbea77cfd881a
2019-01-16 20:20:47 +00:00
Thiemo Kreuz 944153c15f Add @var type hints to all MediaWikiServices::getService calls
This makes the following code work much better in IDEs, e.g. it's now
possible to click method names and actually go there.

Change-Id: Iddbe838f1402c5017ffeb3bc03b4a017b05d8b02
2019-01-16 20:01:29 +00:00
Thiemo Kreuz 20327ab718 Use ?: shortcut where it makes sense
Available since PHP 5.3.

Change-Id: Id16125268358495e0c2f3522fe7701d472c1c220
2019-01-16 19:50:43 +00:00
Thiemo Kreuz f67b7b0a66 Remove non-helpful auto-generated comments on constructors
The code literally explains itself. The comments don't add anything
to this. They are more distracting because one must read them first
to understand they don't contain anything.

Change-Id: I6f152962ec634ae15d2bff4472e332453cb9b0bf
2019-01-16 15:34:19 +01:00
Translation updater bot f0b0fea03f Localisation updates from https://translatewiki.net.
Change-Id: I805718e3f4de5499995bf8e1eaa7a6dcf4a3f1aa
2019-01-10 22:49:19 +01:00
jdlrobson 30c9de1d3a Lower node version
This now reflects the value inside:
https://github.com/storybooks/storybook/blob/next/package.json#L140

Change-Id: I2258d23b5edc80c6e608e431b87623373b19bdb9
2019-01-08 15:03:35 -08:00
Jan Drewniak 83a28d177f Storybook.js for Popups
Storybook.js provides a framework for
viewing and working with UI components.
https://storybook.js.org/

This patch adds the Storybook.js UI library to Popups for
the purposes of viewing multiple previews at once.
This enables viewing page previews in the following states:

- with thumbnails
- without thumbnails
- with SVG thumbnails
- with narrow thumbnails
- with white background thumbnails
- in RTL languages
- in non-latin languages
- disambiguation popups

Storybook also allows users to change the image or text
of a popup through a GUI.

This patch sets up Storybook as a "mini" repo inside
the.storybook folder with a seperate package.json file
to avoid incompatibilities with the current webpack/babel
(or even Node) versions used in the Popups repo.

Storybook requires at least Node v8.3 to run.
(an .nvmrc file with 11.3.0 has been added to the .stories dir).

To start:
`cd .storybook && npm install && npm run start`.

Bug: T205989
Change-Id: I041e46c4f0cf173950015067e2dce81c023d3fdd
2019-01-08 14:19:00 +01:00
Stephen Niedzielski c8c93d0859 Hygiene: replace deprecated Webpack plugin
Replace NamedModulesPlugin with `optimisations.namedModules = true`. Not
to be confused with `optimization.namedModules` which is deprecated.

https://github.com/webpack/webpack/releases/tag/v4.0.0
https://github.com/webpack/webpack/releases/tag/v4.16.0

Bug: T212527
Change-Id: Ie5c7b74e294b012f270de8a6ebc660bf5e75d478
2019-01-07 19:00:01 +00:00
Reedy f2c1e787bc Remove Popups.php
Change-Id: I70e5c97d228f742dae0112b4ae67af3bfc24a5e7
2019-01-05 01:58:10 +00:00
Translation updater bot 86462b855f Localisation updates from https://translatewiki.net.
Change-Id: Ib517c67573fe91baec74df83ab3f960540b175e9
2019-01-03 22:52:34 +01:00
Stephen Niedzielski a922331d36 Hygiene: remove unused Webpack plugins
Remove the LoaderOptionsPlugin and DefinePlugin from the Webpack
configuration. These plugins *do not* alter production or development
build products or appear to impact Redux interaction.

Bug: T212527
Change-Id: I4ca2bde2346011167f86f7f4a331048a2e92263b
2019-01-03 20:02:45 +00:00
Stephen Niedzielski 81a2f4acb0 Hygiene: copy MobileFrontend Webpack learnings
Copy learnings from MobileFrontend's Webpack configuration. If nothing
else, the files are more consistent and easier to diff. When the change
to rename source maps is excluded, the build products are identical.

The following changes were copied:

- DRY up the output directory and source map extension as variables. For
  the latter, rename the source map from ".json" to ".map.json". Without
  renaming, the build products are unchanged.
- Reduce verbosity. Only report warnings and errors.
- Fail to build when an error occurs.
- Update ordering and add comments for easier reasoning and diffing with
  MobileFrontend.

Bug: T212527
Change-Id: Icf11dff91358ad021932aa209c65ed8aac77d12b
2019-01-02 21:30:12 +00:00
Translation updater bot 99ccfc1a79 Localisation updates from https://translatewiki.net.
Change-Id: If8959b4a5ece63711a55ccf96c7259e18c575b6e
2019-01-01 22:21:34 +01:00
Translation updater bot 694588ce0a Localisation updates from https://translatewiki.net.
Change-Id: I29c89556d9e10148e1c396d6cec23b69215f7bb2
2018-12-27 09:52:03 +01:00
Translation updater bot d8dbdeadb6 Localisation updates from https://translatewiki.net.
Change-Id: Iaccfd4deda59e7b679297c8ad9a92669d9993109
2018-12-20 22:41:47 +01:00
Thiemo Kreuz 357dbc4ff4 Fix copy-paste mistake in linkTitle.test.js
As far as I can see this is not an integration test, because linkTitle.js
does not interact with the document (in contrast to footerLink.js, which
does).

Change-Id: I8b611263020fe597efb63d8a0080b996ffc7dde4
2018-12-20 17:22:20 +00:00
Thiemo Kreuz 6ed00b924a Add some more missing @covers tags
I figured a single "@covers ::__construct" in PopupsContextTest should
be enough, especially since this constructor is super trivial.

There is nothing to test in NullLogger. I also removed the duplicated
documentation as it does not really apply, and is still available in the
base class.

Change-Id: I9a2e4b06e5bfd015efa4a92ba802c942290ec49d
2018-12-20 15:31:14 +00:00
Stephen Niedzielski 578233674d Fix: rebuild dist
Due to loosely versioned dependencies, master's resources/dist is out of
date. This won't be an issue when package-lock is supported. Rebuild the
assets as a workaround.

Change-Id: I2bb8eab5b849616f5ae96a7915f8f1a9069109a6
2018-12-20 15:30:55 +00:00
Translation updater bot 3aaaeda834 Localisation updates from https://translatewiki.net.
Change-Id: Ifb839af17b97c59a1b96f0ed0d1768dc29536e33
2018-12-19 22:22:46 +01:00
Stephen Niedzielski 4ce0246d78 Hygiene: replace jQuery.noop dependency
Replace $.noop dependency with inline empty function.

The tests relied on a single function instance to pass. A toString()
comparison of the noop function cannot be used as they differ when
coverage is enabled.

Change-Id: I641801593beb240a8f7d06e388a0e41dc8a25bc6
2018-12-19 15:52:31 +00:00
jenkins-bot 531b4f33ad Merge "Remove misplaced comments from PHPUnit tests" 2018-12-18 17:11:24 +00:00
Thiemo Kreuz 8efd3b20a5 Remove misplaced comments from PHPUnit tests
Some comments are copy-pasted from other, unrelated code. Documenting
a PHPUnit test file as being a "module test" is, I would argue, somewhat
pointless.

Change-Id: Iac28dc9c7b3e321b682e94c6a48efb2db41ca5f7
2018-12-18 10:00:00 +01:00
Thiemo Kreuz a90c9d5ce6 Add missing @covers tags to EventLoggerFactoryTest
According to https://tools.wmflabs.org/coverme/?repo=Extension%3APopups
these might be relevant to cover, and already are, but the required
@covers tags have been forgotten.

Note that the MWEventLogger class does not have a dedicated test. This
is fine because it is exclusively used by the factory (as it should),
can be considered part of it, and in this case it's fine if one test
covers both.

However, none of the log() methods is covered by any test. This is for
a later patch.

Change-Id: Ic1391f7a921d76796c4648ba59df64e793c8feae
2018-12-18 09:54:47 +01:00
Nicholas Ray 63031429b8 Upgrade redux / redux-thunk
redux       | 3.6.0 | 4.0.1
redux-thunk | 2.2.0 | 2.3.0

Upgrading these two dependencies caused the build size to increase from
from 12.2 KB to 12.4 KB (gzip) and so the bundlesize was adjusted
accordingly in our package.json.

Additionally, our linters flagged two rules that were then turned off in
.eslintrc.es5.json.

Looks like the changes in Redux were mostly cosmetic with much work
dedicated to typescript definitiions and dropping support of private
imports [1].

The changes to redux-thunk only involved changing typescript typings and
should not affect us. [2]

The upgrade was tested locally and did not appear to break anything.

[1] https://github.com/reduxjs/redux/issues/1342#issue-130452197
[2] https://github.com/reduxjs/redux-thunk/releases/tag/v2.3.0

Bug: T209314
Change-Id: I35284793ca0c72914d9b9b2e7c28dd407bafd4d8
2018-12-13 15:04:03 -07:00
Nicholas Ray 0c1a65f39d Upgrade webpack / webpack-cli
webpack     | 4.1.1  | 4.27.1
webpack-cli | 2.0.12 | 3.1.2

The upgrade of webpack modified our build files and included these
side effects:

* Our linter flagged the usage of bitwise operators in the build files
so I turned that off in our build file lint config (.eslintrc.es5.json)

* Our build file's size increased slightly from 12.1 KB to 12.13 KB
(gzip) so the package.json's bundlesize was updated accordingly.

No deleterious effects were noticed to popups running locally, but the
jump in webpack version included these notable changes:

* Switch from uglify-es to terser minimizer [1]

[1] https://github.com/webpack/webpack/releases/tag/v4.26.0

The upgrade for webpack-cli was a major version jump, but the params
that we pass to it in our package.json file appear to work as before.

Bug: T209314
Change-Id: I1403f2c4d354cf54554a740f8c23176bf80fd3c6
2018-12-13 14:53:54 -07:00
Nick Ray 15cc402343 Upgrade webdriverio / wdio-spec-reporter
wdio-mocha-framework | 0.6.1  | 0.6.3
wdio-spec-reporter   | 0.1.4  | 0.1.5
webdriverio          | 4.13.1 | 4.14.1

Selenium tests were tested locally with these upgrades and passed.

Note: I had some difficulty in upgrading wdio-mocha-framework to the
latest version 0.6.4 on my mac os (10.14) and experienced a `'utility'
file not found` error when npm installed the 'fibers' package. This
appears to be a known problem relating to node-gyp and older versions of
node. [1] Running the following suggested command [2] worked
for me:

`CXXFLAGS="-mmacosx-version-min=10.9" LDFLAGS="-mmacosx-version-min=10.9" npm i`

However, it was a hassle. Therefore, I chose to upgrade to only
0.6.3 in which this problem doesn't occur.

[1] https://github.com/nodejs/node-gyp/issues/1564
[2] https://github.com/nodejs/node-gyp/issues/1564#issuecomment-436609523

Bug: T209314
Change-Id: I0657ca5db4747b4ebb7aa0d01e2aeb97d6b2a7d0
2018-12-13 14:17:38 -07:00
Nick Ray 9975bbc4b4 Replace husky dependency with pre-commit
MobileFrontend uses the npm package 'pre-commit' to execute pre-commit
hooks but Popups was using 'husky'. This commit rectifies that for
consistency.

Bug: T209314
Change-Id: I56e841d6dc6739ffe040cb930ddf0ebce3905a9f
2018-12-13 14:17:06 -07:00
Nick Ray 2ed5587945 Upgrade stylelint-config-wikimedia and remove stylelint
The following upgrade was made:

stylelint-config-wikimedia | 0.4.3 | 0.5.0

The upgraded version stylelint-config-wikimedia includes stylelint as a
dependency (no longer a peer dependency) [1] so our stylelint dependency was
removed.

As a result of this upgrade, several of our .less files were flagged by
the linter and corrected in this patch.

[1] https://github.com/wikimedia/stylelint-config-wikimedia/blob/v0.5.0/package.json#L36

Bug: T209314
Change-Id: Ic6d4b1caf60f4e03fa60076a2ae74d6639117f25
2018-12-13 14:16:23 -07:00
Nick Ray c64497e5df Upgrade elint-config-wikimedia (drop eslint-plugin-qunit)
The following upgrade was made:

eslint-config-wikimedia | 0.8.1 | 0.9.0

The upgrade of eslint-config-wikimedia removes the need of
eslint-plugin-qunit as a peerDependency because it is now a hard
dependency [1] so it was removed in our package.json.

It appears the biggest change in the upgrade was the use of separate
profiles [2]. Given this, our root .eslintrc.json was updated to extend
from 'wikimedia/client'.

Several test files were flagged by the upgraded linter and were fixed in
this patch. Additionally, our build file was flagged for having too many
statements on one line. This rule was turned off in .eslintrc.es5.json

[1] https://github.com/wikimedia/eslint-config-wikimedia/blob/master/package.json#L48
[2] https://github.com/wikimedia/eslint-config-wikimedia/blob/master/CHANGELOG.md#090--2018-11-19

Bug: T209314
Change-Id: I29db72e77f04a327bc9c2b558c6d53849287bb80
2018-12-13 14:12:06 -07:00
Nick Ray 1594374fe2 Upgrade bundlesize, clean-webpack-plugin, grunt-contrib-watch, nyc
The following upgrades were made:

bundlesize           | 0.15.3 | 0.17.0
clean-webpack-plugin | 0.1.19 | 1.0.0
grunt-contrib-watch  | 1.0.1  | 1.1.0
nyc                  | 12.0.2 | 13.1.0

These potentially breaking changes were listed for nyc (but were not
observed):

* "--hook-run-in-context, and --hook-run-in-this-context are no longer
true by default (they should be enabled if you're using a library like
requirejs)."[1]

[1] https://github.com/istanbuljs/nyc/blob/master/CHANGELOG.md#breaking-changes

Bug: T209314
Change-Id: Iaf705d4e6cdde1e3d3103f1c154a8fb172815535
2018-12-13 13:09:24 -07:00
Translation updater bot 993cb357b4 Localisation updates from https://translatewiki.net.
Change-Id: I536252f163912026eec8f01d3179ef6ff7edc9f0
2018-12-12 22:18:43 +01:00
Thiemo Kreuz 096c74fae8 Fiy a few small typos in the Popups documentation
Change-Id: I0f02a41977eef0e1bf8fe4fc924c32e17ef78dd7
2018-12-11 18:23:30 +01:00
Shreyas Minocha 22226f3367
Switch from babel-preset-env to @babel/preset-env
Replace:
    - babel-preset-env@1.6.0 with @babel/preset-env@7.2.0
    - babel-register@6.24.1 with @babel/register@7.0.0
    - babel-loader@7.1.4 with babel-loader@8.0.4

Add:
    - @babel/core@7.2.0

---

- babel-preset-env, @babel/preset-env
  babel-preset-env moved to @babel/preset-env in the Babel monorepo.
  This appears to have incremented the version from v1.6.0[0] to 7.x to
  match the rest of the Babel packages but appears to otherwise be
  undocumented.[1,3]

  [0] https://github.com/babel/babel-preset-env/blob/24b99ec/README.md
  [1] https://github.com/babel/babel/blob/efa571a/CHANGELOG.md

- @babel/preset-env, @babel/register
  *Many* changes as identified by package [2] and summarized [3].

  Node.js v6 or above now required.

  New dependency on @babel/core.

  Support for ES2018 and browserslist v4.

  `modules: false` is now the default for preset-env + babel-loader. The
  .babelrc has been updated.

  New babel-upgrade tool.

  babel.config.js can replace .babelrc. Popups doesn't seem to need it.

  TypeScript and JSX fragment support.

  [2] https://github.com/babel/babel/blob/efa571a/CHANGELOG.md
  [3] https://babeljs.io/blog/2018/08/27/7.0.0

- babel-loader
  Support for Babel 7.x.

  The following warning is printed when building but perhaps this is due
  to another dependency:

    (node:14559) DeprecationWarning: loaderUtils.parseQuery() received a
    non-string value which can be problematic, see
    https://github.com/webpack/loader-utils/issues/56 parseQuery() will
    be replaced with getOptions() in the next major version of
    loader-utils.

  https://github.com/webpack/loader-utils/issues/56#issuecomment-286117000
  https://github.com/babel/babel-loader/releases/tag/v7.1.5
  https://github.com/babel/babel-loader/releases/tag/v8.0.0-beta.0
  https://github.com/babel/babel-loader/releases/tag/v8.0.0-beta.1
  https://github.com/babel/babel-loader/releases/tag/v8.0.0-beta.2
  https://github.com/babel/babel-loader/releases/tag/v8.0.0-beta.3
  https://github.com/babel/babel-loader/releases/tag/v8.0.0-beta.4
  (v8.0.0-beta.5 was erroneous.)
  https://github.com/babel/babel-loader/releases/tag/v8.0.0-beta.6
  https://github.com/babel/babel-loader/releases/tag/v8.0.0
  https://github.com/babel/babel-loader/releases/tag/v8.0.1
  https://github.com/babel/babel-loader/releases/tag/v8.0.2
  https://github.com/babel/babel-loader/releases/tag/v8.0.3
  https://github.com/babel/babel-loader/releases/tag/v8.0.4

Bug: T197883
Change-Id: Ie3a5404630fde87ea7fe618a842950ed8c0c6494
2018-12-11 13:09:45 +05:30
jenkins-bot 301df2cdea Merge "Hygiene: remove package-lock.json" 2018-12-10 23:55:09 +00:00
jenkins-bot b7b46b5fae Merge "Fix bug in ABANDON_END test" 2018-12-10 16:09:50 +00:00
Umherirrender 033cf7a795 build: Update sniff list in .phpcs.xml
FunctionDeclarationArgumentSpacing is now part of the default

Change-Id: I6e6638e1e115dd793b58cc18852aaaa5d282846c
2018-12-08 15:34:57 +01:00
Shreyas Minocha 9e515f73e7
Fix bug in ABANDON_END test
Change-Id: Ic0b6404630fde88ea7fe571a842950ec8c0c648f
2018-12-08 11:17:34 +05:30
Stephen Niedzielski 6d4eebe12b Hygiene: remove package-lock.json
Remove package-lock.json until a Node.js version that supports it is
possible.

Change-Id: I00d2168d8671d0f7fa2b999171e03c13bfac192a
2018-12-03 09:32:52 -07:00
Translation updater bot 53015b7237 Localisation updates from https://translatewiki.net.
Change-Id: Ib0b6404630fde88ea7fe618a842950ec8c0c648e
2018-12-02 22:15:04 +01:00
Translation updater bot 7953a2709d Localisation updates from https://translatewiki.net.
Change-Id: I0c528b44c87e727fa0cae9775029dd6df12964be
2018-11-25 22:34:11 +01:00
Translation updater bot 6c22f0d96b Localisation updates from https://translatewiki.net.
Change-Id: I5014349e5581a5e4b85f3ab896f84630e6dfc516
2018-11-21 22:29:20 +01:00
Translation updater bot f3751463fc Localisation updates from https://translatewiki.net.
Change-Id: Ic6c98be126addf0481a05e02c76f7f5d01a0c584
2018-11-17 22:19:51 +01:00
Stephen Niedzielski a24bbe76e6 Hygiene: use source-maps for dev builds not eval maps
Webpack's `-d` option is an alias for
`--debug --devtool cheap-module-eval-source-map --output-pathinfo`[0]
which overrode the `devtool` specified in the config. Specify
`--mode=development` which appears to be better supported than `-d`,
although the distinction is poorly documented[1]. The build products are
identical for `--mode=development --debug --output-pathinfo` and simply
`--mode=development` so the latter is used.

For consistency, replace `-p`, an alias for
`--optimize-minimize --define process.env.NODE_ENV=production`[0],
where `--optimize-minimize` is documented[2] as:

  Minimize JavaScript and switches loaders to minimizing UglifyJsPlugin
  and LoaderOptionsPlugin.

With `--mode=production` which is documented[3] as:

  Sets process.env.NODE_ENV on DefinePlugin to value production. Enables
  FlagDependencyUsagePlugin, FlagIncludedChunksPlugin,
  ModuleConcatenationPlugin, NoEmitOnErrorsPlugin,
  OccurrenceOrderPlugin, SideEffectsFlagPlugin and UglifyJsPlugin.

This change has already been made to MobileFrontend in c10f87d89.

[0] https://webpack.js.org/api/cli/#shortcuts
[1] https://medium.com/webpack/webpack-4-released-today-6cdb994702d4#dfa8
[2] https://webpack.js.org/api/cli/#optimize-options
[3] https://webpack.js.org/concepts/mode/#usage

Change-Id: I7a7ffc913592f0b18e091bb219a7fc75873d4d7a
2018-11-16 13:17:46 -07:00
libraryupgrader 750a357434 build: Updating mediawiki/mediawiki-codesniffer to 23.0.0
Change-Id: I046509fb8fa8c7e3e3ad8ab00062212498da54d0
2018-11-16 07:41:01 +00:00
Translation updater bot b7f0a9e0c7 Localisation updates from https://translatewiki.net.
Change-Id: Ie7eb4531cffee9534136779d5b64b8cd1eefb18d
2018-11-12 22:12:54 +01:00
Translation updater bot fa8af07513 Localisation updates from https://translatewiki.net.
Change-Id: I76384f034e05632b3f74602ada589e23a61c222d
2018-11-04 22:42:33 +01:00
Translation updater bot 605b13ff97 Localisation updates from https://translatewiki.net.
Change-Id: Icc70b5dd3afbdf0bc36e7c3f778392f4350ea9d0
2018-10-18 22:34:27 +02:00
Stephen Niedzielski 4d44390a4b Hygiene: enable ESLint caching
Copy ESLint caching configuration from MinervaNeue.

eead7c9382%5E%21/

Change-Id: Ifee0f67392f73c1285da7767a949998520bf4a0d
2018-10-17 16:45:35 -06:00
Stephen Niedzielski c7e742743b Doc: fix fetch delay comments
FETCH_COMPLETE_TARGET_DELAY is used to introduce an artificial delay to
HTTP requests as needed. However, FETCH_START_DELAY is always accounted
for so it makes sense to define FETCH_COMPLETE_TARGET_DELAY with it. The
docs are updated to draw the distinction between total delay and API
response delay.

Change-Id: I4cddc89b8090d54db0dd85f270441cab17c54993
2018-10-17 16:44:16 -06:00