Product
Introducing Enhanced Alert Actions and Triage Functionality
Socket now supports four distinct alert actions instead of the previous two, and alert triaging allows users to override the actions taken for all individual alerts.
mwn
Advanced tools
Changelog
2.0.0
import {Mwn} from 'mwn'
instead of import {mwn} from 'mwn'
setUTCDate
) used to be chainable as they returned this
. Because MwnDate extends the native Date, the change in return values was not possible to represent in TypeScript types (Liskov substitution principle). This undocumented feature has now been removed for the sake of accurate types.printYaml
logging config option is no longer supported in Mwn.setLoggingConfig() method.queryAuthors()
method on page objects.Readme
Quick links: Getting Started — GitHub — NPM — User Documentation — API Documentation
Mwn is a modern and comprehensive MediaWiki bot framework for Node.js, originally adapted from mwbot.
Mwn works with both JavaScript and TypeScript. It is created with a design philosophy of allowing bot developers to easily and quickly write bot code, without having to deal with the MediaWiki API complications and idiosyncrasies such as logins, tokens, maxlag, query continuations and error handling. Making raw API calls is also supported for complete flexibility. Mwn uses JSON with formatversion 2 by default. The axios library is used for HTTP requests.
This library provides TypeScript type definitions for all its functions, as well as for MediaWiki API request objects (MW core + several extensions). API responses are also typed for the common operations.
In addition to the MediaWiki Action API, methods are provided to talk to the Wikimedia Pageviews API, the ORES API, and WikiWho API.
This library uses mocha and chai for tests, and has extensive test coverage. Testing is automated using a CI workflow on GitHub Actions.
To install, run npm install mwn
.
Up-to-date documentation is hosted on Toolforge.
API documentation (automatically generated via typedoc) is also available at https://mwn.toolforge.org/docs/api.
Handling multiple users and wikis: Mwn can seamlessly work with multiple bot users signed into the same wiki, and multiple wikis at the same time. You just have to create multiple bot instances – each one representing a wiki + user. Each bot instance uses an isolated cookie jar; all settings are also isolated.
Token handling: Tokens are automatically fetched as part of mwn.init()
or bot.login()
or bot.getTokensAndSiteInfo()
. Once retrieved, they are stored in the bot state and can be reused any number of times. If any API request fails due to an expired or missing token, the request is automatically retried after fetching a new token. bot.getTokens()
can be used to refresh the token cache, though mwn manages this, so you'd never need to explicitly use that.
Maxlag: The default maxlag parameter used by mwn is 5 seconds. Requests failing due to maxlag will be automatically retried after pausing for a duration specified by maxlagPause
(default 5 seconds). A maximum of maxRetries
will take place (default 3).
Retries: Mwn automatically retries failing requests bot.options.maxRetries
times (default: 3). This is useful in case of connectivity resets and the like. As for errors raised by the API itself, note that MediaWiki generally handles these at the response level rather than the protocol level (they still emit a 200 OK response). Mwn will attempt retries for these errors based on the error code. For instance, if the error is readonly
or maxlag
, retry is done after a delay. If it's assertuserfailed
or assertbotfailed
(indicates a session loss), mwn will try to log in again and then retry. If it's badtoken
, retry is done after fetching a fresh edit token.
Handling query continuation: Mwn uses asynchronous generators, (for await...of loops) to provide a very intuitive interface around MediaWiki API's query continuation. See Handling query continuation.
Parsing wikitext: Mwn provides methods for common wikitext parsing needs (templates, links, and simple tables).
Titles: Work with page titles with the very same API as the in-browser mw.Title that userscript/gadget developers are familiar with.
Batch operations: Perform a large number of tasks (like page edits) with control over the concurrency (default 5). Failing actions can be set to automatically retry.
Patches are very much welcome. See https://mwn.toolforge.org/docs/developing for instructions.
Mwn is released under GNU Lesser General Public License (LGPL) v3.0, since it borrows quite a bit of code from MediaWiki core (GPL v2). LGPL is a more permissive variant of GNU GPL. Unlike GPL, it enables this library to be used in software not released under GPL-compatible licenses, and even in proprietary software. However, any derivatives of this library should be released under an GPL-compatible license (like LGPL).
FAQs
JavaScript & TypeScript MediaWiki bot framework for Node.js
The npm package mwn receives a total of 198 weekly downloads. As such, mwn popularity was classified as not popular.
We found that mwn demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket now supports four distinct alert actions instead of the previous two, and alert triaging allows users to override the actions taken for all individual alerts.
Security News
Polyfill.io has been serving malware for months via its CDN, after the project's open source maintainer sold the service to a company based in China.
Security News
OpenSSF is warning open source maintainers to stay vigilant against reputation farming on GitHub, where users artificially inflate their status by manipulating interactions on closed issues and PRs.