Talk:Parsoid

Jump to navigation Jump to search

About this board

"yum install git npm" doesn't work

3
TheSplatGuy (talkcontribs)

Hello all, I have been trying to set up VisualEditor for two days now because of how much a nightmare this is and I have finally gotten to this point where I need to download parsoid. So I am on a shared server which means that I can't use sudo or apt-get so I need to use the development section of this article. However when I try to put in the command "yum install git npm" it responds with the folling error message:

CRITICAL:yum.cli:Config Error: Error accessing file for config file:///etc/yum.conf

The thing is I have absolutely no clue how to solve this and I am getting pretty sick and tired of dealing with this stuff so please any advice would help. I am using an SSH through my terminal, Bluehost as my hosting service, and cPanel as the management system.

Aron Manning (talkcontribs)

Tip: join us on MediaWiki_on_Discord for help.

I don't know your hosting provider, so this might not be helpful, but anyway: yum is also a package manager just like apt-get, so that might be the reason why you can't use it.

As you're running that command I assume git and npm are not installed... you can skip git by uploading through ssh/scp. npm: I assume you can install it by hand in your user folder, or you might not even need it if you are running the latest parsoid: it's been ported to php recently. However, I haven't used that yet, so I suggest you asking this on discord. Hope that helps.

TheSplatGuy (talkcontribs)

I am sorry I did not mention this earlier but the hosting service I use is Bluehost. the hosting plan that I got is Shared hosting and I use cPanel for file management. from what I have done so far git works, but npm and yum do not (because they are not installed).

Reply to ""yum install git npm" doesn't work"

Parsoid throws error: Template Fetch failure for \"Main_Page\": 500 in the log

3
86.129.179.116 (talkcontribs)

My visual editor setup was working fine this afternoon, but then I started getting this error whenever I tried to use the editor: Error loading data from server: apierror-visualeditor-docserver-http: HTTP 500. I tried installing php7.2-curl (didn't work), so I decided to dive into the logs. There I found the following error: Template Fetch failure for \"Main_Page\": 500. I couldn't find anything on Google so I came here. The only thing I can think that might have caused it was me setting up Wikibase in preparation for importing some infoboxes from Wikipedia.

My setup: NodeJS 12.16, Mediawiki 1.34 (Bitnami edition), Ubuntu 16.04 LTS. AWS EC2 instance.

Arlolra (talkcontribs)

Did you try disabling Wikibase to see if it resolves the issue?

The 500 errors looks like something might be configured correctly in MediaWiki.

86.129.179.116 (talkcontribs)

It was Wikibase in the end, thank you.

Reply to "Parsoid throws error: Template Fetch failure for \"Main_Page\": 500 in the log"

Parsoid with AuthRemoteuser (private wiki)

9
Summary by Arlolra
2A02:A03F:48B8:BA00:FCD4:94B6:A36D:4719 (talkcontribs)

We have Kerberos enabled for apache which provides for every page the user. However as parsoid was not providing these credentials when connecting to http://localhost/wiki/api.php , the create/edit would fail.

We thought solving it by excluding the specific url http://localhost/wiki/api.php from authentication. However we now have the strange problem that when browsing to a page, the user is clearly logged in in the upper right corner, however when he clicks on edit, the visual editor complains about the user being 'anonymous' and consequently in the history only the ip address is logged instead of the username.

I have no clear understanding how parsoid provides the username to the api.php endpoint. What could be the issue here?

Arlolra (talkcontribs)
Mishter Jingles (talkcontribs)

Thanks for your answer.

I tried both links.

If I enable authentication in apache for http://localhost/wiki/api.php, then parsoid always gives :

"401 Unauthorized This server could not verify that you\nare authorized to access the document\nrequested.  Either you supplied the wrong\ncredentials (e.g., bad password), or your\nbrowser doesn't understand how to supply\nthe credentials required"

If I disable authentication in apache, parsoid "works" but the user is still 'anonymous'

Arlolra (talkcontribs)

After enabling authentication, you'd need to forward cookies. Did you try that?

Mszicsu (talkcontribs)
Starws (talkcontribs)

Hello!

Same configuration as Mishter Jingles

After enabling authentication, you'd need to forward cookies. Did you try that? - Yup!

Still ip address instead of the username while edit any page.


Apache:

<Location /mediawiki/api.php>

        Satisfy Any

</Location>


LocalSettings.php:

...

$wgGroupPermissions['*']['read'] = true;

$wgGroupPermissions['*']['edit'] = true;

...

PS:

Also tried with $wgSessionsInObjectCache = true; and $wgVirtualRestConfig['modules']['parsoid']['forwardCookies'] = true;

Parsoid and mediawiki hosted on same server.


PSS:

Next configuration doesn't work (read permissions error):


LocalSettings.php:

...

$wgGroupPermissions['*']['read'] = false;

$wgGroupPermissions['*']['edit'] = false;

...

if ( !isset( $_SERVER['REMOTE_ADDR'] ) OR $_SERVER['REMOTE_ADDR'] == '127.0.0.1' ) {

$wgGroupPermissions['*']['read'] = true;

$wgGroupPermissions['*']['edit'] = true;

}

#NetworkAuth

require_once "$IP/extensions/NetworkAuth/NetworkAuth.php";

$wgNetworkAuthUsers[] = [

        'iprange' => [ '127.0.0.1' ],

        'user'    => 'parsoid'

];

Arlolra (talkcontribs)
Meowoclock (talkcontribs)

Thanks all above for the help, I just wanted to chime in myself because this page was in top google results while troubleshooting.


I was setting up a similar config, for myself (just a intranet wiki using apache basic http auth to restrict a "open" wiki.)

I was struggling but eventually realized that


1. my apache needed to be configured as:


Apache:


<Location /mediawiki/api.php>

        Satisfy Any

</Location>


and


2.(as Arlolra mentioned) I needed to forward cookies.


176.10.190.25 (talkcontribs)

Wow, finally! This post resolved my problem. Turns out I somehow missed to add $wgGroupPermissions to LocalSettings.php file. Not sure how I could miss this step in the manual. Now I finally can start adding my client-documentation in my private mediawiki.

I have battled this problem for a week! XD Thanks

Reply to "Parsoid with AuthRemoteuser (private wiki)"

Couldn't resolve host name (curl error: 6) but able to curl MediaWiki fine

1
FireAmpersand (talkcontribs)

Not sure if I should be posting here or on the visualeditor page, but I can't for the life of me get Parsaoid/VisualEditor working.

Here is some info about my setup:

- Host: Centos 8

- Docker Installed and MediaWiki is running on that with 80->80

- MediaWiki is a private wiki

- Parsaoid is installed on the host and mapped to 8001 (Default had a conflict with container already in use)

- VisualEditor is installed and throws no error other then the one in the title.


Now I have gone through the following pages to try to troubleshoot my issue:

Parsoid/Troubleshooting

Extension:VisualEditor#Linking with Parsoid in private wikis


Currently I can curl the api through Parsoid and get values through a private wiki but within mediawiki, I can not edit with visual editor.


LocalSetting.php


<?php

# This file was automatically generated by the MediaWiki 1.34.0

# installer. If you make manual changes, please keep track in case you

# need to recreate them later.

#

# See includes/DefaultSettings.php for all configurable settings

# and their default values, but don't forget to make changes in _this_

# file, not there.

#

# Further documentation for configuration settings may be found at:

# https://www.mediawiki.org/wiki/Manual:Configuration_settings

# Protect against web entry

if ( !defined( 'MEDIAWIKI' ) ) {

   exit;

}

## Uncomment this to disable output compression

# $wgDisableOutputCompression = true;

$wgSitename = "FireAmpersand Documentation";

$wgMetaNamespace = "FireAmpersand_Documentation";

## The URL base path to the directory containing the wiki;

## defaults for all runtime URL paths are based off of this.

## For more information on customizing the URLs

## (like /w/index.php/Page_title to /wiki/Page_title) please see:

## https://www.mediawiki.org/wiki/Manual:Short_URL

$wgScriptPath = "";

## The protocol and server name to use in fully-qualified URLs

$wgServer = "http://bumblebee.fireampersand.ca";

## The URL path to static resources (images, scripts, etc.)

$wgResourceBasePath = $wgScriptPath;

## The URL path to the logo.  Make sure you change this from the default,

## or else you'll overwrite your logo when you upgrade!

$wgLogo = "$wgResourceBasePath/resources/assets/wiki.png";

## UPO means: this is also a user preference option

$wgEnableEmail = false;

$wgEnableUserEmail = true; # UPO

$wgEmergencyContact = "apache@🌻.invalid";

$wgPasswordSender = "apache@🌻.invalid";

$wgEnotifUserTalk = false; # UPO

$wgEnotifWatchlist = false; # UPO

$wgEmailAuthentication = true;

## Database settings

$wgDBtype = "sqlite";

$wgDBserver = "";

$wgDBname = "my_wiki";

$wgDBuser = "";

$wgDBpassword = "";

# SQLite-specific settings

$wgSQLiteDataDir = "/var/www/data";

$wgObjectCaches[CACHE_DB] = [

   'class' => SqlBagOStuff::class,

   'loggroup' => 'SQLBagOStuff',

   'server' => [

       'type' => 'sqlite',

       'dbname' => 'wikicache',

       'tablePrefix' => '',

       'variables' => [ 'synchronous' => 'NORMAL' ],

       'dbDirectory' => $wgSQLiteDataDir,

       'trxMode' => 'IMMEDIATE',

       'flags' => 0

   ]

];

$wgLocalisationCacheConf['storeServer'] = [

   'type' => 'sqlite',

   'dbname' => "{$wgDBname}_l10n_cache",

   'tablePrefix' => '',

   'variables' => [ 'synchronous' => 'NORMAL' ],

   'dbDirectory' => $wgSQLiteDataDir,

   'trxMode' => 'IMMEDIATE',

   'flags' => 0

];

$wgJobTypeConf['default'] = [

   'class' => 'JobQueueDB',

   'claimTTL' => 3600,

   'server' => [

       'type' => 'sqlite',

       'dbname' => "{$wgDBname}_jobqueue",

       'tablePrefix' => '',

       'variables' => [ 'synchronous' => 'NORMAL' ],

       'dbDirectory' => $wgSQLiteDataDir,

       'trxMode' => 'IMMEDIATE',

       'flags' => 0

   ]

];

## Shared memory settings

$wgMainCacheType = CACHE_ACCEL;

$wgMemCachedServers = [];

## To enable image uploads, make sure the 'images' directory

## is writable, then set this to true:

$wgEnableUploads = true;

$wgUseImageMagick = true;

$wgImageMagickConvertCommand = "/usr/bin/convert";

# InstantCommons allows wiki to use images from https://commons.wikimedia.org

$wgUseInstantCommons = false;

# Periodically send a pingback to https://www.mediawiki.org/ with basic data

# about this MediaWiki instance. The Wikimedia Foundation shares this data

# with MediaWiki developers to help guide future development efforts.

$wgPingback = false;

## If you use ImageMagick (or any other shell command) on a

## Linux server, this will need to be set to the name of an

## available UTF-8 locale

$wgShellLocale = "C.UTF-8";

## Set $wgCacheDirectory to a writable directory on the web server

## to make your wiki go slightly faster. The directory should not

## be publicly accessible from the web.

#$wgCacheDirectory = "$IP/cache";

# Site language code, should be one of the list in ./languages/data/Names.php

$wgLanguageCode = "en-ca";

$wgSecretKey = "d8f1a050a167350916861d1c65c428ec2e15ef1ddde8c3d305533350dd83f480";

# Changing this will log out all existing sessions.

$wgAuthenticationTokenVersion = "1";

# Site upgrade key. Must be set to a string (default provided) to turn on the

# web installer while LocalSettings.php is in place

$wgUpgradeKey = "364ffa43b8516e75";

## For attaching licensing metadata to pages, and displaying an

## appropriate copyright notice / icon. GNU Free Documentation

## License and Creative Commons licenses are supported so far.

$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright

$wgRightsUrl = "";

$wgRightsText = "";

$wgRightsIcon = "";

# Path to the GNU diff3 utility. Used for conflict resolution.

$wgDiff3 = "/usr/bin/diff3";

# The following permissions were set based on your choice in the installer

$wgGroupPermissions['*']['createaccount'] = false;

$wgGroupPermissions['*']['edit'] = false;

$wgGroupPermissions['*']['read'] = false;

## Default skin: you can change the default skin. Use the internal symbolic

## names, ie 'vector', 'monobook':

$wgDefaultSkin = "vector";

# Enabled skins.

# The following skins were automatically enabled:

wfLoadSkin( 'MonoBook' );

wfLoadSkin( 'Timeless' );

wfLoadSkin( 'Vector' );

# End of automatically generated settings.

# Add more configuration options below.

#Extensions

# VisualEditor

wfLoadExtension( 'VisualEditor' );

$wgDefaultUserOptions['visualeditor-enable'] = 1;

$wgHiddenPrefs[] = 'visualeditor-enable';

#Parsoid Connection

$wgVirtualRestConfig['modules']['parsoid'] = array(

   #URL to the Parsoid instance

   'url' => 'http://bumblebee.fireampersand.ca:8001',

   'domain' => 'localhost',

   'prefix' => 'localhost'

   );

//$wgSessionsInObjectCache = true;

//$wgVirtualRestConfig['modules']['parsoid']['forwardCookies'] = true;

if ( $_SERVER['REMOTE_ADDR'] == '172.17.0.1'){

   $wgGroupPermissions['*']['read'] = true;

   $wgGroupPermissions['*']['edit'] = true;

};

ini_set('error_log','/tmp/php-error.log');

error_log($_SERVER['REMOTE_ADDR']);



Any help would be apreciated, been working on this since last night.

Reply to "Couldn't resolve host name (curl error: 6) but able to curl MediaWiki fine"

Error in the npm test for the parsoid folder?

5
Summary by Arlolra

Follow CentOS step-by-step

Pdwangchao (talkcontribs)

I installed the parsoid and run the "npm install", everything is OK. But when I use the npm test ,Error occoured. Anyone knows the reason or give some advise?

the log file is below:

0 info it worked if it ends with ok

1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'run', 'nsp' ]

2 info using npm@5.4.0

3 info using node@v6.11.2

4 verbose run-script [ 'prensp', 'nsp', 'postnsp' ]

5 info lifecycle parsoid@0.7.1~prensp: parsoid@0.7.1

6 info lifecycle parsoid@0.7.1~nsp: parsoid@0.7.1

7 verbose lifecycle parsoid@0.7.1~nsp: unsafe-perm in lifecycle true

8 verbose lifecycle parsoid@0.7.1~nsp: PATH: /usr/local/lib/node_modules/npm/bin/node-gyp-bin:/data/wwwroot/default/mediawiki/services/parsoid/node_modules/.bin:/usr/local/lib/node_modules/npm/bin/node-gyp-bin:/data/wwwroot/default/mediawiki/services/parsoid/node_modules/.bin:/usr/local/php/bin:/usr/local/apache/bin:/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

9 verbose lifecycle parsoid@0.7.1~nsp: CWD: /data/wwwroot/default/mediawiki/services/parsoid

10 silly lifecycle parsoid@0.7.1~nsp: Args: [ '-c', 'nsp check' ]

11 silly lifecycle parsoid@0.7.1~nsp: Returned: code: 1  signal: null

12 info lifecycle parsoid@0.7.1~nsp: Failed to exec nsp script

13 verbose stack Error: parsoid@0.7.1 nsp: `nsp check`

13 verbose stack Exit status 1

13 verbose stack     at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:280:16)

13 verbose stack     at emitTwo (events.js:106:13)

13 verbose stack     at EventEmitter.emit (events.js:191:7)

13 verbose stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)

13 verbose stack     at emitTwo (events.js:106:13)

13 verbose stack     at ChildProcess.emit (events.js:191:7)

13 verbose stack     at maybeClose (internal/child_process.js:891:16)

13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)

14 verbose pkgid parsoid@0.7.1

15 verbose cwd /data/wwwroot/default/mediawiki/services/parsoid

16 verbose Linux 3.10.0-514.26.2.el7.x86_64

17 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "nsp"

18 verbose node v6.11.2

19 verbose npm  v5.4.0

20 error code ELIFECYCLE

21 error errno 1

22 error parsoid@0.7.1 nsp: `nsp check`

22 error Exit status 1

23 error Failed at the parsoid@0.7.1 nsp script.

23 error This is probably not a problem with npm. There is likely additional logging output above.

24 verbose exit [ 1, true ]

Arlolra (talkcontribs)

Are there any warnings of missing packages when you run npm ls?

nsp check makes a request to nodesecurity.io, is that being rejected by a firewall or something>

Pdwangchao (talkcontribs)

Hi Arlolra

Thanks for your reply!

Yes, it exists.

when I use "npm ls", the output is below. I google for it but have no idea. when I run the "nsp check", nothing happened. Then I ran it again and the output is "bash: nsp: command not found..."

By the way, I install the parsoid by git clone method, and install the nodejs by yum method(v6.11.1) and then the make method(v6.11.2).

npm ls:

parsoid@0.7.1 /data/wwwroot/default/mediawiki/services/parsoid

├── alea@0.0.9

├── async@0.9.2

├─┬ babybird@0.0.1

│ ├── asap@2.0.5

│ └── is-arguments@1.0.2

├─┬ body-parser@1.17.1

│ ├── bytes@2.4.0

│ ├── content-type@1.0.2

│ ├─┬ debug@2.6.1

│ │ └── ms@0.7.2

│ ├── depd@1.1.0

│ ├─┬ http-errors@1.6.1

│ │ ├── depd@1.1.0 deduped

│ │ ├── inherits@2.0.3

│ │ ├── setprototypeof@1.0.3 deduped

│ │ └── statuses@1.3.1 deduped

│ ├── iconv-lite@0.4.15

│ ├─┬ on-finished@2.3.0

│ │ └── ee-first@1.1.1

│ ├── qs@6.4.0

│ ├─┬ raw-body@2.2.0

│ │ ├── bytes@2.4.0 deduped

│ │ ├── iconv-lite@0.4.15 deduped

│ │ └── unpipe@1.0.0 deduped

│ └─┬ type-is@1.6.15

│   ├── media-typer@0.3.0

│   └── mime-types@2.1.15 deduped

├─┬ chai@3.5.0

│ ├── assertion-error@1.0.2

│ ├─┬ deep-eql@0.1.3

│ │ └── type-detect@0.1.1

│ └── type-detect@1.0.0

├── colors@1.1.2

├─┬ compression@1.6.2

│ ├─┬ accepts@1.3.3

│ │ ├── mime-types@2.1.15 deduped

│ │ └── negotiator@0.6.1 deduped (git+https://github.com/arlolra/negotiator.git#0418ab4e9a665772b7e233564a4525c9d9a8ec3a)

│ ├── bytes@2.3.0

│ ├─┬ compressible@2.0.10

│ │ └── mime-db@1.27.0

│ ├─┬ debug@2.2.0

│ │ └── ms@0.7.1

│ ├── on-headers@1.0.1

│ └── vary@1.1.1

├─┬ connect-busboy@0.0.2

│ └─┬ busboy@0.2.14

│   ├─┬ dicer@0.2.5

│   │ ├── readable-stream@1.1.14 deduped

│   │ └── streamsearch@0.1.2

│   └─┬ readable-stream@1.1.14

│     ├── core-util-is@1.0.2

│     ├── inherits@2.0.3 deduped

│     ├── isarray@0.0.1

│     └── string_decoder@0.10.31

├── content-type@1.0.1 (git+https://github.com/wikimedia/content-type.git#47b2632d0a2ee79a7d67268e2f6621becd95d05b)

├── core-js@2.4.1

├─┬ coveralls@2.13.0

│ ├─┬ js-yaml@3.6.1

│ │ ├── argparse@1.0.9 deduped

│ │ └── esprima@2.7.3

│ ├── lcov-parse@0.0.10

│ ├── log-driver@1.2.5

│ ├── minimist@1.2.0

│ └─┬ request@2.79.0

│   ├── aws-sign2@0.6.0 deduped

│   ├── aws4@1.6.0 deduped

│   ├── caseless@0.11.0

│   ├── combined-stream@1.0.5 deduped

│   ├── extend@3.0.0 deduped

│   ├── forever-agent@0.6.1 deduped

│   ├── form-data@2.1.2 deduped

│   ├─┬ har-validator@2.0.6

│   │ ├── chalk@1.1.3 deduped

│   │ ├─┬ commander@2.9.0

│   │ │ └── graceful-readlink@1.0.1

│   │ ├── is-my-json-valid@2.16.0 deduped

│   │ └─┬ pinkie-promise@2.0.1

│   │   └── pinkie@2.0.4

│   ├── hawk@3.1.3 deduped

│   ├── http-signature@1.1.1 deduped

│   ├── is-typedarray@1.0.0 deduped

│   ├── isstream@0.1.2 deduped

│   ├── json-stringify-safe@5.0.1 deduped

│   ├── mime-types@2.1.15 deduped

│   ├── oauth-sign@0.8.2 deduped

│   ├── qs@6.3.2

│   ├── stringstream@0.0.5 deduped

│   ├── tough-cookie@2.3.2 deduped

│   ├── tunnel-agent@0.4.3

│   └── uuid@3.0.1

├── diff@1.4.0

├── domino@1.0.28

├── entities@1.1.1

├─┬ eslint@3.19.0

│ ├─┬ babel-code-frame@6.22.0

│ │ ├── chalk@1.1.3 deduped

│ │ ├── esutils@2.0.2 deduped

│ │ └── js-tokens@3.0.1

│ ├─┬ chalk@1.1.3

│ │ ├── ansi-styles@2.2.1

│ │ ├── escape-string-regexp@1.0.5

│ │ ├─┬ has-ansi@2.0.0

│ │ │ └── ansi-regex@2.1.1 deduped

│ │ ├─┬ strip-ansi@3.0.1

│ │ │ └── ansi-regex@2.1.1 deduped

│ │ └── supports-color@2.0.0

│ ├─┬ concat-stream@1.6.0

│ │ ├── inherits@2.0.3 deduped

│ │ ├─┬ readable-stream@2.2.9

│ │ │ ├── buffer-shims@1.0.0

│ │ │ ├── core-util-is@1.0.2 deduped

│ │ │ ├── inherits@2.0.3 deduped

│ │ │ ├── isarray@1.0.0

│ │ │ ├── process-nextick-args@1.0.7

│ │ │ ├─┬ string_decoder@1.0.0

│ │ │ │ └── buffer-shims@1.0.0 deduped

│ │ │ └── util-deprecate@1.0.2

│ │ └── typedarray@0.0.6

│ ├── debug@2.6.1 deduped

│ ├─┬ doctrine@2.0.0

│ │ ├── esutils@2.0.2 deduped

│ │ └── isarray@1.0.0

│ ├─┬ escope@3.6.0

│ │ ├─┬ es6-map@0.1.5

│ │ │ ├─┬ d@1.0.0

│ │ │ │ └── es5-ext@0.10.15 deduped

│ │ │ ├─┬ es5-ext@0.10.15

│ │ │ │ ├── es6-iterator@2.0.1 deduped

│ │ │ │ └── es6-symbol@3.1.1 deduped

│ │ │ ├─┬ es6-iterator@2.0.1

│ │ │ │ ├── d@1.0.0 deduped

│ │ │ │ ├── es5-ext@0.10.15 deduped

│ │ │ │ └── es6-symbol@3.1.1 deduped

│ │ │ ├─┬ es6-set@0.1.5

│ │ │ │ ├── d@1.0.0 deduped

│ │ │ │ ├── es5-ext@0.10.15 deduped

│ │ │ │ ├── es6-iterator@2.0.1 deduped

│ │ │ │ ├── es6-symbol@3.1.1 deduped

│ │ │ │ └── event-emitter@0.3.5 deduped

│ │ │ ├─┬ es6-symbol@3.1.1

│ │ │ │ ├── d@1.0.0 deduped

│ │ │ │ └── es5-ext@0.10.15 deduped

│ │ │ └─┬ event-emitter@0.3.5

│ │ │   ├── d@1.0.0 deduped

│ │ │   └── es5-ext@0.10.15 deduped

│ │ ├─┬ es6-weak-map@2.0.2

│ │ │ ├── d@1.0.0 deduped

│ │ │ ├── es5-ext@0.10.15 deduped

│ │ │ ├── es6-iterator@2.0.1 deduped

│ │ │ └── es6-symbol@3.1.1 deduped

│ │ ├─┬ esrecurse@4.1.0

│ │ │ ├── estraverse@4.1.1

│ │ │ └── object-assign@4.1.1 deduped

│ │ └── estraverse@4.2.0

│ ├─┬ espree@3.4.2

│ │ ├── acorn@5.0.3

│ │ └─┬ acorn-jsx@3.0.1

│ │   └── acorn@3.3.0

│ ├─┬ esquery@1.0.0

│ │ └── estraverse@4.2.0

│ ├── estraverse@4.2.0

│ ├── esutils@2.0.2

│ ├─┬ file-entry-cache@2.0.0

│ │ ├─┬ flat-cache@1.2.2

│ │ │ ├── circular-json@0.3.1

│ │ │ ├─┬ del@2.2.2

│ │ │ │ ├─┬ globby@5.0.0

│ │ │ │ │ ├─┬ array-union@1.0.2

│ │ │ │ │ │ └── array-uniq@1.0.3

│ │ │ │ │ ├── arrify@1.0.1

│ │ │ │ │ ├─┬ glob@7.1.1

│ │ │ │ │ │ ├── fs.realpath@1.0.0 deduped

│ │ │ │ │ │ ├── inflight@1.0.6 deduped

│ │ │ │ │ │ ├── inherits@2.0.3 deduped

│ │ │ │ │ │ ├── minimatch@3.0.3 deduped

│ │ │ │ │ │ ├── once@1.4.0 deduped

│ │ │ │ │ │ └── path-is-absolute@1.0.1 deduped

│ │ │ │ │ ├── object-assign@4.1.1 deduped

│ │ │ │ │ ├── pify@2.3.0 deduped

│ │ │ │ │ └── pinkie-promise@2.0.1 deduped

│ │ │ │ ├── is-path-cwd@1.0.0

│ │ │ │ ├─┬ is-path-in-cwd@1.0.0

│ │ │ │ │ └─┬ is-path-inside@1.0.0

│ │ │ │ │   └── path-is-inside@1.0.2 deduped

│ │ │ │ ├── object-assign@4.1.1 deduped

│ │ │ │ ├── pify@2.3.0

│ │ │ │ ├── pinkie-promise@2.0.1 deduped

│ │ │ │ └─┬ rimraf@2.6.1

│ │ │ │   └─┬ glob@7.1.1

│ │ │ │     ├── fs.realpath@1.0.0 deduped

│ │ │ │     ├── inflight@1.0.6 deduped

│ │ │ │     ├── inherits@2.0.3 deduped

│ │ │ │     ├── minimatch@3.0.3 deduped

│ │ │ │     ├── once@1.4.0 deduped

│ │ │ │     └── path-is-absolute@1.0.1 deduped

│ │ │ ├── graceful-fs@4.1.11 deduped

│ │ │ └─┬ write@0.2.1

│ │ │   └── mkdirp@0.5.1 deduped

│ │ └── object-assign@4.1.1

│ ├─┬ glob@7.1.1

│ │ ├── fs.realpath@1.0.0

│ │ ├─┬ inflight@1.0.6

│ │ │ ├── once@1.4.0 deduped

│ │ │ └── wrappy@1.0.2 deduped

│ │ ├── inherits@2.0.3 deduped

│ │ ├─┬ minimatch@3.0.3

│ │ │ └─┬ brace-expansion@1.1.6

│ │ │   ├── balanced-match@0.4.2

│ │ │   └── concat-map@0.0.1

│ │ ├── once@1.4.0 deduped

│ │ └── path-is-absolute@1.0.1

│ ├── globals@9.17.0

│ ├── ignore@3.2.7

│ ├── imurmurhash@0.1.4

│ ├─┬ inquirer@0.12.0

│ │ ├── ansi-escapes@1.4.0

│ │ ├── ansi-regex@2.1.1

│ │ ├── chalk@1.1.3 deduped

│ │ ├─┬ cli-cursor@1.0.2

│ │ │ └─┬ restore-cursor@1.0.1

│ │ │   ├── exit-hook@1.1.1

│ │ │   └── onetime@1.1.0

│ │ ├── cli-width@2.1.0

│ │ ├─┬ figures@1.7.0

│ │ │ ├── escape-string-regexp@1.0.5 deduped

│ │ │ └── object-assign@4.1.1 deduped

│ │ ├── lodash@4.17.4

│ │ ├─┬ readline2@1.0.1

│ │ │ ├── code-point-at@1.1.0 deduped

│ │ │ ├── is-fullwidth-code-point@1.0.0 deduped

│ │ │ └── mute-stream@0.0.5

│ │ ├─┬ run-async@0.1.0

│ │ │ └── once@1.4.0 deduped

│ │ ├── rx-lite@3.1.2

│ │ ├── string-width@1.0.2 deduped

│ │ ├── strip-ansi@3.0.1 deduped

│ │ └── through@2.3.8

│ ├─┬ is-my-json-valid@2.16.0

│ │ ├── generate-function@2.0.0

│ │ ├─┬ generate-object-property@1.2.0

│ │ │ └── is-property@1.0.2

│ │ ├── jsonpointer@4.0.1

│ │ └── xtend@4.0.1

│ ├─┬ is-resolvable@1.0.0

│ │ └── tryit@1.0.3

│ ├── js-yaml@3.8.3 deduped

│ ├─┬ json-stable-stringify@1.0.1

│ │ └── jsonify@0.0.0

│ ├─┬ levn@0.3.0

│ │ ├── prelude-ls@1.1.2

│ │ └─┬ type-check@0.3.2

│ │   └── prelude-ls@1.1.2 deduped

│ ├── lodash@4.17.4

│ ├─┬ mkdirp@0.5.1

│ │ └── minimist@0.0.8

│ ├── natural-compare@1.4.0

│ ├─┬ optionator@0.8.2

│ │ ├── deep-is@0.1.3

│ │ ├── fast-levenshtein@2.0.6

│ │ ├── levn@0.3.0 deduped

│ │ ├── prelude-ls@1.1.2 deduped

│ │ ├── type-check@0.3.2 deduped

│ │ └── wordwrap@1.0.0

│ ├── path-is-inside@1.0.2

│ ├── pluralize@1.2.1

│ ├── progress@1.1.8

│ ├─┬ require-uncached@1.0.3

│ │ ├─┬ caller-path@0.1.0

│ │ │ └── callsites@0.2.0

│ │ └── resolve-from@1.0.1

│ ├─┬ shelljs@0.7.7

│ │ ├── glob@7.1.1 deduped

│ │ ├── interpret@1.0.3

│ │ └─┬ rechoir@0.6.2

│ │   └── resolve@1.1.7 deduped

│ ├── strip-bom@3.0.0

│ ├── strip-json-comments@2.0.1

│ ├─┬ table@3.8.3

│ │ ├─┬ ajv@4.11.5

│ │ │ ├── co@4.6.0

│ │ │ └── json-stable-stringify@1.0.1 deduped

│ │ ├── ajv-keywords@1.5.1

│ │ ├── chalk@1.1.3 deduped

│ │ ├── lodash@4.17.4

│ │ ├── slice-ansi@0.0.4

│ │ └─┬ string-width@2.0.0

│ │   ├── is-fullwidth-code-point@2.0.0

│ │   └── strip-ansi@3.0.1 deduped

│ ├── text-table@0.2.0

│ └─┬ user-home@2.0.0

│   └── os-homedir@1.0.2

├── eslint-config-node-services@2.1.1

├─┬ eslint-plugin-jsdoc@3.0.2

│ ├─┬ comment-parser@0.4.0

│ │ └─┬ readable-stream@2.2.9

│ │   ├── buffer-shims@1.0.0 deduped

│ │   ├── core-util-is@1.0.2 deduped

│ │   ├── inherits@2.0.3 deduped

│ │   ├── isarray@1.0.0

│ │   ├── process-nextick-args@1.0.7 deduped

│ │   ├─┬ string_decoder@1.0.0

│ │   │ └── buffer-shims@1.0.0 deduped

│ │   └── util-deprecate@1.0.2 deduped

│ └── lodash@4.17.4

├─┬ eslint-plugin-json@1.2.0

│ └─┬ jshint@2.9.4

│   ├─┬ cli@1.0.1

│   │ ├── exit@0.1.2 deduped

│   │ └─┬ glob@7.1.1

│   │   ├── fs.realpath@1.0.0 deduped

│   │   ├── inflight@1.0.6 deduped

│   │   ├── inherits@2.0.3 deduped

│   │   ├── minimatch@3.0.3 deduped

│   │   ├── once@1.4.0 deduped

│   │   └── path-is-absolute@1.0.1 deduped

│   ├─┬ console-browserify@1.1.0

│   │ └── date-now@0.1.4

│   ├── exit@0.1.2

│   ├─┬ htmlparser2@3.8.3

│   │ ├── domelementtype@1.3.0

│   │ ├─┬ domhandler@2.3.0

│   │ │ └── domelementtype@1.3.0 deduped

│   │ ├─┬ domutils@1.5.1

│   │ │ ├─┬ dom-serializer@0.1.0

│   │ │ │ ├── domelementtype@1.1.3

│   │ │ │ └── entities@1.1.1 deduped

│   │ │ └── domelementtype@1.3.0 deduped

│   │ ├── entities@1.0.0

│   │ └── readable-stream@1.1.14 deduped

│   ├── lodash@3.7.0

│   ├── minimatch@3.0.3 deduped

│   ├── shelljs@0.3.0

│   └── strip-json-comments@1.0.4

├─┬ express@4.15.2

│ ├── accepts@1.3.3 deduped

│ ├── array-flatten@1.1.1

│ ├── content-disposition@0.5.2

│ ├── content-type@1.0.2

│ ├── cookie@0.3.1

│ ├── cookie-signature@1.0.6

│ ├── debug@2.6.1 deduped

│ ├── depd@1.1.0 deduped

│ ├── encodeurl@1.0.1

│ ├── escape-html@1.0.3

│ ├── etag@1.8.0

│ ├── finalhandler@1.0.1 deduped

│ ├── fresh@0.5.0

│ ├── merge-descriptors@1.0.1

│ ├── methods@1.1.2

│ ├── on-finished@2.3.0 deduped

│ ├── parseurl@1.3.1

│ ├── path-to-regexp@0.1.7

│ ├─┬ proxy-addr@1.1.4

│ │ ├── forwarded@0.1.0

│ │ └── ipaddr.js@1.3.0

│ ├── qs@6.4.0 deduped

│ ├── range-parser@1.2.0

│ ├─┬ send@0.15.1

│ │ ├── debug@2.6.1 deduped

│ │ ├── depd@1.1.0 deduped

│ │ ├── destroy@1.0.4

│ │ ├── encodeurl@1.0.1 deduped

│ │ ├── escape-html@1.0.3 deduped

│ │ ├── etag@1.8.0 deduped

│ │ ├── fresh@0.5.0 deduped

│ │ ├── http-errors@1.6.1 deduped

│ │ ├── mime@1.3.4

│ │ ├── ms@0.7.2 deduped

│ │ ├── on-finished@2.3.0 deduped

│ │ ├── range-parser@1.2.0 deduped

│ │ └── statuses@1.3.1 deduped

│ ├─┬ serve-static@1.12.1

│ │ ├── encodeurl@1.0.1 deduped

│ │ ├── escape-html@1.0.3 deduped

│ │ ├── parseurl@1.3.1 deduped

│ │ └── send@0.15.1 deduped

│ ├── setprototypeof@1.0.3

│ ├── statuses@1.3.1

│ ├── type-is@1.6.15 deduped

│ ├── utils-merge@1.0.0

│ └── vary@1.1.1 deduped

├─┬ express-handlebars@3.0.0

│ ├─┬ glob@6.0.4

│ │ ├── inflight@1.0.6 deduped

│ │ ├── inherits@2.0.3 deduped

│ │ ├── minimatch@3.0.3 deduped

│ │ ├── once@1.4.0 deduped

│ │ └── path-is-absolute@1.0.1 deduped

│ ├── graceful-fs@4.1.11

│ ├─┬ handlebars@4.0.6

│ │ ├── async@1.5.2

│ │ ├─┬ optimist@0.6.1

│ │ │ ├── minimist@0.0.10

│ │ │ └── wordwrap@0.0.3

│ │ ├─┬ source-map@0.4.4

│ │ │ └── amdefine@1.0.1

│ │ └── UNMET OPTIONAL DEPENDENCY uglify-js@^2.6

│ ├─┬ object.assign@4.0.4

│ │ ├─┬ define-properties@1.1.2

│ │ │ ├── foreach@2.0.5

│ │ │ └── object-keys@1.0.11 deduped

│ │ ├── function-bind@1.1.0

│ │ └── object-keys@1.0.11

│ └─┬ promise@7.1.1

│   └── asap@2.0.5 deduped

├─┬ finalhandler@1.0.1

│ ├─┬ debug@2.6.3

│ │ └── ms@0.7.2 deduped

│ ├── encodeurl@1.0.1 deduped

│ ├── escape-html@1.0.3 deduped

│ ├── on-finished@2.3.0 deduped

│ ├── parseurl@1.3.1 deduped

│ ├── statuses@1.3.1 deduped

│ └── unpipe@1.0.0

├─┬ istanbul@0.4.5

│ ├── abbrev@1.0.9

│ ├── async@1.5.2

│ ├─┬ escodegen@1.8.1

│ │ ├── esprima@2.7.3

│ │ ├── estraverse@1.9.3

│ │ ├── esutils@2.0.2 deduped

│ │ ├── optionator@0.8.2 deduped

│ │ └── source-map@0.4.4 deduped

│ ├── esprima@2.7.3

│ ├─┬ glob@5.0.15

│ │ ├── inflight@1.0.6 deduped

│ │ ├── inherits@2.0.3 deduped

│ │ ├── minimatch@3.0.3 deduped

│ │ ├── once@1.4.0 deduped

│ │ └── path-is-absolute@1.0.1 deduped

│ ├── handlebars@4.0.6 deduped

│ ├── js-yaml@3.8.3 deduped

│ ├── mkdirp@0.5.1 deduped

│ ├─┬ nopt@3.0.6

│ │ └── abbrev@1.0.9 deduped

│ ├─┬ once@1.4.0

│ │ └── wrappy@1.0.2

│ ├── resolve@1.1.7

│ ├─┬ supports-color@3.2.3

│ │ └── has-flag@1.0.0

│ ├─┬ which@1.2.14

│ │ └── isexe@2.0.0

│ └── wordwrap@1.0.0

├─┬ js-yaml@3.8.3

│ ├─┬ argparse@1.0.9

│ │ └── sprintf-js@1.0.3

│ └── esprima@3.1.3

├── mediawiki-title@0.6.3

├─┬ mocha@2.5.3

│ ├── commander@2.3.0

│ ├─┬ debug@2.2.0

│ │ └── ms@0.7.1

│ ├── diff@1.4.0 deduped

│ ├── escape-string-regexp@1.0.2

│ ├─┬ glob@3.2.11

│ │ ├── inherits@2.0.3 deduped

│ │ └─┬ minimatch@0.3.0

│ │   ├── lru-cache@2.7.3

│ │   └── sigmund@1.0.1

│ ├── growl@1.9.2

│ ├─┬ jade@0.26.3

│ │ ├── commander@0.6.1

│ │ └── mkdirp@0.3.0

│ ├── mkdirp@0.5.1 deduped

│ ├── supports-color@1.2.0

│ └── to-iso-string@0.0.2

├── negotiator@0.6.1 (git+https://github.com/arlolra/negotiator.git#0418ab4e9a665772b7e233564a4525c9d9a8ec3a)

├─┬ nock@8.2.1

│ ├── chai@3.5.0 deduped

│ ├── debug@2.6.1 deduped

│ ├── deep-equal@1.0.1

│ ├── json-stringify-safe@5.0.1

│ ├── lodash@4.9.0

│ ├── mkdirp@0.5.1 deduped

│ ├── propagate@0.4.0

│ └── qs@6.4.0 deduped

├── node-uuid@1.4.8

├─┬ nsp@2.6.3

│ ├─┬ chalk@1.1.3

│ │ ├── ansi-styles@2.2.1

│ │ ├── escape-string-regexp@1.0.5

│ │ ├─┬ has-ansi@2.0.0

│ │ │ └── ansi-regex@2.0.0

│ │ ├─┬ strip-ansi@3.0.1

│ │ │ └── ansi-regex@2.0.0

│ │ └── supports-color@2.0.0

│ ├─┬ cli-table@0.3.1

│ │ └── colors@1.0.3

│ ├── cvss@1.0.1

│ ├─┬ https-proxy-agent@1.0.0

│ │ ├─┬ agent-base@2.0.1

│ │ │ ├── extend@3.0.0 deduped

│ │ │ └── semver@5.0.3

│ │ ├─┬ debug@2.2.0

│ │ │ └── ms@0.7.1

│ │ └── extend@3.0.0

│ ├─┬ joi@6.10.1

│ │ ├── hoek@2.16.3

│ │ ├── isemail@1.2.0

│ │ ├── moment@2.12.0

│ │ └─┬ topo@1.1.0

│ │   └── hoek@2.16.3 deduped

│ ├── nodesecurity-npm-utils@5.0.0

│ ├── path-is-absolute@1.0.0

│ ├─┬ rc@1.1.6

│ │ ├── deep-extend@0.4.1

│ │ ├── ini@1.3.4

│ │ ├── minimist@1.2.0

│ │ └── strip-json-comments@1.0.4

│ ├── semver@5.1.0

│ ├─┬ subcommand@2.0.3

│ │ ├── cliclopts@1.1.1

│ │ ├─┬ debug@2.2.0

│ │ │ └── ms@0.7.1

│ │ ├── minimist@1.2.0

│ │ └── xtend@4.0.1

│ └─┬ wreck@6.3.0

│   ├─┬ boom@2.10.1

│   │ └── hoek@2.16.3 deduped

│   └── hoek@2.16.3

├── pegjs@0.8.0 (git+https://github.com/tstarling/pegjs.git#36d584bd7bbc564c86c058c5dfe8053b1fe1d584)

├─┬ prfun@2.1.4

│ └── core-js@2.4.1 deduped

├─┬ request@2.81.0

│ ├── aws-sign2@0.6.0

│ ├── aws4@1.6.0

│ ├── caseless@0.12.0

│ ├─┬ combined-stream@1.0.5

│ │ └── delayed-stream@1.0.0

│ ├── extend@3.0.0

│ ├── forever-agent@0.6.1

│ ├─┬ form-data@2.1.2

│ │ ├── asynckit@0.4.0

│ │ ├── combined-stream@1.0.5 deduped

│ │ └── mime-types@2.1.15 deduped

│ ├─┬ har-validator@4.2.1

│ │ ├── ajv@4.11.5 deduped

│ │ └── har-schema@1.0.5

│ ├─┬ hawk@3.1.3

│ │ ├─┬ boom@2.10.1

│ │ │ └── hoek@2.16.3 deduped

│ │ ├─┬ cryptiles@2.0.5

│ │ │ └── boom@2.10.1 deduped

│ │ ├── hoek@2.16.3

│ │ └─┬ sntp@1.0.9

│ │   └── hoek@2.16.3 deduped

│ ├─┬ http-signature@1.1.1

│ │ ├── assert-plus@0.2.0

│ │ ├─┬ jsprim@1.4.0

│ │ │ ├── assert-plus@1.0.0

│ │ │ ├── extsprintf@1.0.2

│ │ │ ├── json-schema@0.2.3

│ │ │ └─┬ verror@1.3.6

│ │ │   └── extsprintf@1.0.2 deduped

│ │ └─┬ sshpk@1.11.0

│ │   ├── asn1@0.2.3

│ │   ├── assert-plus@1.0.0

│ │   ├── UNMET OPTIONAL DEPENDENCY bcrypt-pbkdf@^1.0.0

│ │   ├─┬ dashdash@1.14.1

│ │   │ └── assert-plus@1.0.0

│ │   ├── UNMET OPTIONAL DEPENDENCY ecc-jsbn@~0.1.1

│ │   ├─┬ getpass@0.1.6

│ │   │ └── assert-plus@1.0.0

│ │   ├── UNMET OPTIONAL DEPENDENCY jodid25519@^1.0.0

│ │   ├── UNMET OPTIONAL DEPENDENCY jsbn@~0.1.0

│ │   └── UNMET OPTIONAL DEPENDENCY tweetnacl@~0.14.0

│ ├── is-typedarray@1.0.0

│ ├── isstream@0.1.2

│ ├── json-stringify-safe@5.0.1 deduped

│ ├─┬ mime-types@2.1.15

│ │ └── mime-db@1.27.0 deduped

│ ├── oauth-sign@0.8.2

│ ├── performance-now@0.2.0

│ ├── qs@6.4.0 deduped

│ ├── safe-buffer@5.0.1

│ ├── stringstream@0.0.5

│ ├─┬ tough-cookie@2.3.2

│ │ └── punycode@1.4.1

│ ├─┬ tunnel-agent@0.6.0

│ │ └── safe-buffer@5.0.1 deduped

│ └── uuid@3.0.1

├── semver@5.3.0

├─┬ serve-favicon@2.4.2

│ ├── etag@1.8.0 deduped

│ ├── fresh@0.5.0 deduped

│ ├── ms@1.0.0

│ └── parseurl@1.3.1 deduped

├─┬ service-runner@2.2.5

│ ├── bluebird@3.5.0

│ ├─┬ bunyan@1.8.10

│ │ ├── UNMET OPTIONAL DEPENDENCY dtrace-provider@~0.8

│ │ ├── UNMET OPTIONAL DEPENDENCY moment@^2.10.6

│ │ ├── UNMET OPTIONAL DEPENDENCY mv@~2

│ │ └── UNMET OPTIONAL DEPENDENCY safe-json-stringify@~1

│ ├── bunyan-syslog-udp@0.1.0

│ ├─┬ dnscache@1.0.1

│ │ ├── asap@2.0.5 deduped

│ │ └─┬ lodash.clone@4.3.2

│ │   └── lodash._baseclone@4.5.7

│ ├── extend@3.0.0 deduped

│ ├─┬ gelf-stream@1.1.1

│ │ └── gelfling@0.3.1

│ ├── hot-shots@4.4.0

│ ├── js-yaml@3.8.3 deduped

│ ├─┬ limitation@0.2.0

│ │ ├── bluebird@3.5.0 deduped

│ │ ├─┬ kad@1.3.6 (git+https://github.com/gwicke/kad.git#936c91652d757ea6f9dd30e44698afb0daaa1d17)

│ │ │ ├── async@0.9.2 deduped

│ │ │ ├── clarinet@0.11.0

│ │ │ ├── colors@1.1.2 deduped

│ │ │ ├── hat@0.0.3

│ │ │ ├─┬ kad-fs@0.0.4

│ │ │ │ └─┬ readable-stream@2.2.6

│ │ │ │   ├── buffer-shims@1.0.0 deduped

│ │ │ │   ├── core-util-is@1.0.2 deduped

│ │ │ │   ├── inherits@2.0.3 deduped

│ │ │ │   ├── isarray@1.0.0

│ │ │ │   ├── process-nextick-args@1.0.7 deduped

│ │ │ │   ├── string_decoder@0.10.31 deduped

│ │ │ │   └── util-deprecate@1.0.2 deduped

│ │ │ ├─┬ kad-localstorage@0.0.7

│ │ │ │ └── dom-storage@2.0.2

│ │ │ ├─┬ kad-memstore@0.0.1

│ │ │ │ └─┬ readable-stream@2.2.6

│ │ │ │   ├── buffer-shims@1.0.0 deduped

│ │ │ │   ├── core-util-is@1.0.2 deduped

│ │ │ │   ├── inherits@2.0.3 deduped

│ │ │ │   ├── isarray@1.0.0

│ │ │ │   ├── process-nextick-args@1.0.7 deduped

│ │ │ │   ├── string_decoder@0.10.31 deduped

│ │ │ │   └── util-deprecate@1.0.2 deduped

│ │ │ ├── lodash@3.10.1

│ │ │ ├── merge@1.2.0

│ │ │ ├── ms@0.7.2 deduped

│ │ │ └─┬ msgpack5@3.4.1

│ │ │   ├─┬ bl@1.2.0

│ │ │   │ └─┬ readable-stream@2.2.6

│ │ │   │   ├── buffer-shims@1.0.0 deduped

│ │ │   │   ├── core-util-is@1.0.2 deduped

│ │ │   │   ├── inherits@2.0.3 deduped

│ │ │   │   ├── isarray@1.0.0

│ │ │   │   ├── process-nextick-args@1.0.7 deduped

│ │ │   │   ├── string_decoder@0.10.31 deduped

│ │ │   │   └── util-deprecate@1.0.2 deduped

│ │ │   ├── inherits@2.0.3 deduped

│ │ │   └─┬ readable-stream@2.2.6

│ │ │     ├── buffer-shims@1.0.0 deduped

│ │ │     ├── core-util-is@1.0.2 deduped

│ │ │     ├── inherits@2.0.3 deduped

│ │ │     ├── isarray@1.0.0

│ │ │     ├── process-nextick-args@1.0.7 deduped

│ │ │     ├── string_decoder@0.10.31 deduped

│ │ │     └── util-deprecate@1.0.2 deduped

│ │ └─┬ readable-stream@2.2.6

│ │   ├── buffer-shims@1.0.0 deduped

│ │   ├── core-util-is@1.0.2 deduped

│ │   ├── inherits@2.0.3 deduped

│ │   ├── isarray@1.0.0

│ │   ├── process-nextick-args@1.0.7 deduped

│ │   ├── string_decoder@0.10.31 deduped

│ │   └── util-deprecate@1.0.2 deduped

│ ├── semver@5.3.0 deduped

│ └── yargs@6.6.0 deduped

├── simplediff@0.1.1

├─┬ supertest@1.2.0

│ ├── methods@1.1.2 deduped

│ └─┬ superagent@1.8.5

│   ├── component-emitter@1.2.1

│   ├── cookiejar@2.0.6

│   ├── debug@2.6.1 deduped

│   ├── extend@3.0.0 deduped

│   ├─┬ form-data@1.0.0-rc3

│   │ ├── async@1.5.2

│   │ ├── combined-stream@1.0.5 deduped

│   │ └── mime-types@2.1.15 deduped

│   ├── formidable@1.0.17

│   ├── methods@1.1.2 deduped

│   ├── mime@1.3.4 deduped

│   ├── qs@2.3.3

│   ├─┬ readable-stream@1.0.27-1

│   │ ├── core-util-is@1.0.2 deduped

│   │ ├── inherits@2.0.3 deduped

│   │ ├── isarray@0.0.1 deduped

│   │ └── string_decoder@0.10.31 deduped

│   └── reduce-component@1.0.1

└─┬ yargs@6.6.0

  ├── camelcase@3.0.0

  ├─┬ cliui@3.2.0

  │ ├── string-width@1.0.2 deduped

  │ ├── strip-ansi@3.0.1 deduped

  │ └─┬ wrap-ansi@2.1.0

  │   ├── string-width@1.0.2 deduped

  │   └── strip-ansi@3.0.1 deduped

  ├── decamelize@1.2.0

  ├── get-caller-file@1.0.2

  ├─┬ os-locale@1.4.0

  │ └─┬ lcid@1.0.0

  │   └── invert-kv@1.0.0

  ├─┬ read-pkg-up@1.0.1

  │ ├─┬ find-up@1.1.2

  │ │ ├─┬ path-exists@2.1.0

  │ │ │ └── pinkie-promise@2.0.1 deduped

  │ │ └── pinkie-promise@2.0.1 deduped

  │ └─┬ read-pkg@1.1.0

  │   ├─┬ load-json-file@1.1.0

  │   │ ├── graceful-fs@4.1.11 deduped

  │   │ ├─┬ parse-json@2.2.0

  │   │ │ └─┬ error-ex@1.3.1

  │   │ │   └── is-arrayish@0.2.1

  │   │ ├── pify@2.3.0 deduped

  │   │ ├── pinkie-promise@2.0.1 deduped

  │   │ └─┬ strip-bom@2.0.0

  │   │   └── is-utf8@0.2.1

  │   ├─┬ normalize-package-data@2.3.6

  │   │ ├── hosted-git-info@2.4.1

  │   │ ├─┬ is-builtin-module@1.0.0

  │   │ │ └── builtin-modules@1.1.1

  │   │ ├── semver@5.3.0 deduped

  │   │ └─┬ validate-npm-package-license@3.0.1

  │   │   ├─┬ spdx-correct@1.0.2

  │   │   │ └── spdx-license-ids@1.2.2

  │   │   └── spdx-expression-parse@1.0.4

  │   └─┬ path-type@1.1.0

  │     ├── graceful-fs@4.1.11 deduped

  │     ├── pify@2.3.0 deduped

  │     └── pinkie-promise@2.0.1 deduped

  ├── require-directory@2.1.1

  ├── require-main-filename@1.0.1

  ├── set-blocking@2.0.0

  ├─┬ string-width@1.0.2

  │ ├── code-point-at@1.1.0

  │ ├─┬ is-fullwidth-code-point@1.0.0

  │ │ └── number-is-nan@1.0.1

  │ └── strip-ansi@3.0.1 deduped

  ├── which-module@1.0.0

  ├── y18n@3.2.1

  └─┬ yargs-parser@4.2.1

    └── camelcase@3.0.0 deduped

Pdwangchao (talkcontribs)
Benn2003 (talkcontribs)
== English ==

According to this website https://www.centos.org/forums/viewtopic.php?f=47&t=53223&p=225372#p225372 all commands were executed.

The following should be set in the LocalSettings.php file from MediaWiki:

# Namespces for VE

        $ wgVisualEditorNamespaces = array_merge (

         $ WgContentNamespaces,          array (*) );

The following error is logged when the website is accessed:

FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected '*', expecting ')' in /usr/share/mediawiki/mediawiki-1.34.0/LocalSettings.php on line 130"

Line 130 specifies "array (*)".

Can anyone help?

== German ==

Gemäß dieser Webseite https://www.centos.org/forums/viewtopic.php?f=47&t=53223&p=225372#p225372 wurden alle Befehle ausgeführt.

In der Datei LocalSettings.php vom MediaWiki soll folgendes eingestellt werden:

# Namespces for VE

       $wgVisualEditorNamespaces = array_merge(

        $wgContentNamespaces,         array( * ) );

Beim Aufruf der Webseite wird folgender Fehler protokolliert:

FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected '*', expecting ')' in /usr/share/mediawiki/mediawiki-1.34.0/LocalSettings.php on line 130"

In Zeile 130 ist "array( * )" angegeben.

Kann jemand weiterhelfen?

Reply to "Error in the npm test for the parsoid folder?"

Check which version of parsoid is installed

5
Summary last edited by SSastry (WMF) 15:01, 29 November 2018 1 year ago

curl "http://localhost:8142/version" or http://localhost:$PORT/version where $PORT is the port Parsoid listens on

Kghbln (talkcontribs)

I think I saw this somewhere but I cannot remember where and cannot find it right now. How do I check for the version of parsoid I am currently running?

Kghbln (talkcontribs)

Ok. Go to `/usr/lib/parsoid/src`, open "package.json" and look for the version stated. However I have the strong feeling that there is a saner method around.

Legoktm (talkcontribs)
Bryandamon (talkcontribs)

One other method that worked for me (on Ubuntu):

dpkg -s parsoid


Or, maybe more specifically:

dpkg -s parsoid | grep Version
Legoktm (talkcontribs)

That will work for anyone who installed via the Debian/Ubuntu package only (but is still convenient nonetheless).

Reply to "Check which version of parsoid is installed"

Error loading data from server: 500: apierror-visualeditor-docserver-http: HTTP 500. Would you like to retry?

5
NicolasEcarnot (talkcontribs)

Hello,

Here is my setup :

- Debian 10

- Mediawiki 1.31.4

- VisualEditor 0.1.0

- Parsoid 0.10.0

I installed the above using packages, and using short URLs with the following setup :

LocalSettings.php :

$wgScriptPath = "";

$wgArticlePath = "/wiki/$1";


Then about Parsoid binding with VisualEditor :

$wgVirtualRestConfig['modules']['parsoid'] = array(

   'url' => 'http://wiki.example.lan:8142',

   'domain' => 'mydomain'

);


In /etc/mediawiki/parsoid/config.yaml, I've set up this :

mwApis:

       -

         uri: 'http://wiki.example.lan/wiki/api.php'

         domain: 'mydomain'


When I'm trying to edit an article with VisualEditor, I get the error described in the subject :

Error loading data from server: 500: apierror-visualeditor-docserver-http: HTTP 500. Would you like to retry?


In /var/log/parsoid/parsoid.log, I see :

"Config Request failure for \"http://wiki.example.lan/wiki/api.php\": 404","time":"2019-12-09T15:11:21.586Z","v":0}


Using curl, I can ask simple things to Parsoid like its version, but that's all.

The wiki is open (no auth restriction).

Obviously, I've read 72% of all internet web pages and tried tons of settings before asking my question here, but now, I don't know what to check.

May you help me please?

Arlolra (talkcontribs)
NicolasEcarnot (talkcontribs)

Hello Arlolra,

As I'm using short URLs, my wiki is serving its page like the page you're reading at present :

<code>https://www.mediawiki.org/wiki/Topic:Vcmzn6wl4la0fd69}</code> so in my case :

<code>http://wiki.example.lan/wiki/}</code>.

This URLs shortening is working for articles, but I agree that in the case of special files like load.php, api.php, something has to be looked at. Though, so far, except on this Parsoid issue, things seem to be working nicely.


You wrote : Usually that's something like, http://wiki.example.lan/w/api.php or http://wiki.example.lan/api.php

1 : Using http://wiki.example.lan/w/api.php, is very similar to http://wiki.example.lan/w/api.php and this only deals with how one shortens the URL in the config file.

2 : But using http://wiki.example.lan/api.php does not seem possible to me as I'm serving the mediawiki folder through an apache Alias directive (I did not choose this, this came from the Debian package. About Short URLs, other people here wrote one had to choose between aliases and rewriting. The Debian package maintainers have chosen aliases.)

I'd be very glad to have a look at the setup of www.mediawiki.org setup files, especially how they shorten their URLs.

Arlolra (talkcontribs)
2003:C6:4F25:E6E0:285D:1D34:EF27:E455 (talkcontribs)

Hi,

are you using the heroku app?

1) Make sure that no htpasswd is set up in your /w folder. I realized that the heroku app is not working with a password protected ftp folder.

2) Be careful where you set your root directory in your website hosting app. I realized that it worked very well after I set the /w folder under public_html

Reply to "Error loading data from server: 500: apierror-visualeditor-docserver-http: HTTP 500. Would you like to retry?"
D8sychain (talkcontribs)

Looking for advice as to where to continue sorting out this issue. It seems to me that API requests timeout and fail to respond in time, but then eventually responds and Parsoid process everything, but by that point in time the UI has already responded with an error. It doesn't occur every time, but most times. Pages with templates never work.

UI popup message:

Error loading data from server: Could not connect to the server. Would you like to retry?

Logs:

- - 21/Dec/2019:13:08:25 +0000 "GET /Test" 200

- - 21/Dec/2019:13:08:27 +0000 "GET /load.php" 304

- - 21/Dec/2019:13:08:27 +0000 "GET /load.php" 200

- - 21/Dec/2019:13:08:29 +0000 "GET /load.php" 200

- - 21/Dec/2019:13:08:30 +0000 "GET /api.php" 200

{"name":"parsoid","hostname":"30095a5f2051","pid":412,"level":30,"logType":"info","wiki":"wiki$0","title":"Test","oldId":null,"reqId":"36e8196ad5bcc4204e61e57a","userAgent":"VisualEditor-MediaWiki/1.33.1","msg":"started wt2html","longMsg":"started wt2html","levelPath":"info","time":"2019-12-21T13:08:33.047Z","v":0}

{"name":"parsoid","hostname":"30095a5f2051","pid":412,"level":40,"logType":"warn/api/esockettimedout","wiki":"wiki$0","title":"Test","oldId":"34","reqId":"36e8196ad5bcc4204e61e57a","userAgent":"VisualEditor-MediaWiki/1.33.1","msg":"Failed API request, {\"error\":{\"code\":\"ESOCKETTIMEDOUT\",\"connect\":false},\"retries-remaining\":1}","longMsg":"Failed API request,\n{\"error\":{\"code\":\"ESOCKETTIMEDOUT\",\"connect\":false},\"retries-remaining\":1}","levelPath":"warn/api/esockettimedout","time":"2019-12-21T13:09:13.054Z","v":0}

{"name":"parsoid","hostname":"30095a5f2051","pid":412,"level":40,"logType":"warn/api/esockettimedout","wiki":"wiki$0","title":"Test","oldId":"34","reqId":"36e8196ad5bcc4204e61e57a","userAgent":"VisualEditor-MediaWiki/1.33.1","msg":"Failed API request, {\"error\":{\"code\":\"ESOCKETTIMEDOUT\",\"connect\":false},\"retries-remaining\":1}","longMsg":"Failed API request,\n{\"error\":{\"code\":\"ESOCKETTIMEDOUT\",\"connect\":false},\"retries-remaining\":1}","levelPath":"warn/api/esockettimedout","time":"2019-12-21T13:09:13.054Z","v":0}

- - 21/Dec/2019:13:08:30 +0000 "POST /api.php" 500

- - 21/Dec/2019:13:08:32 +0000 "GET /api.php" 200

- - 21/Dec/2019:13:08:33 +0000 "GET /api.php" 200

- - 21/Dec/2019:13:09:13 +0000 "GET /api.php" 200

[DEBUG] | AsyncTokenTransformManager.setFrame []

[DEBUG] | SyncTokenTransformManager.onChunk, input: ["test"]

[DEBUG] | SyncTokenTransformManager.onChunk: emitting ["test"]

[DEBUG] | maybeSyncReturn transforming c-0 {"tokens":["test"]}

[DEBUG] | firstAccum sync c-0 ["test"]

[DEBUG] | AsyncTokenTransformManager onChunk sync ["test"]

[DEBUG] | emitting

[DEBUG] | SyncTokenTransformManager.onChunk, input: ["test"]

0-[PRE-DBG] | saved : []

0-[PRE-DBG] | ----> ["test"]

[DEBUG] | SyncTokenTransformManager.onChunk: emitting []

[DEBUG] | SyncTokenTransformManager.onChunk, input: [{"type":"NlTk","dataAttribs":{"tsr":[4,5]}},{"type":"NlTk","dataAttribs":{"tsr":[5,6]}},"test 2"]

[DEBUG] | SyncTokenTransformManager.onChunk: emitting [{"type":"NlTk","dataAttribs":{"tsr":[4,5]}},{"type":"NlTk","dataAttribs":{"tsr":[5,6]}},"test 2"]

[DEBUG] | maybeSyncReturn transforming c-1 {"tokens":[{"type":"NlTk","dataAttribs":{"tsr":[4,5]}}]}

[DEBUG] | maybeSyncReturn transforming c-1 {"tokens":[{"type":"NlTk","dataAttribs":{"tsr":[5,6]}}]}

[DEBUG] | maybeSyncReturn transforming c-1 {"tokens":["test 2"]}

[DEBUG] | firstAccum sync c-1 [{"type":"NlTk","dataAttribs":{"tsr":[4,5]}},{"type":"NlTk","dataAttribs":{"tsr":[5,6]}},"test 2"]

[DEBUG] | AsyncTokenTransformManager onChunk sync [{"type":"NlTk","dataAttribs":{"tsr":[4,5]}},{"type":"NlTk","dataAttribs":{"tsr":[5,6]}},"test 2"]

[DEBUG] | emitting

[DEBUG] | SyncTokenTransformManager.onChunk, input: [{"type":"NlTk","dataAttribs":{"tsr":[4,5]}},{"type":"NlTk","dataAttribs":{"tsr":[5,6]}},"test 2"]

0-[PRE-DBG] | saved : []

0-[PRE-DBG] | ----> [{"type":"NlTk","dataAttribs":{"tsr":[4,5]}}]

0-[PRE-DBG] | saved : []

0-[PRE-DBG] | ----> [{"type":"NlTk","dataAttribs":{"tsr":[5,6]}}]

0-[PRE-DBG] | saved : []

0-[PRE-DBG] | ----> ["test 2"]

[DEBUG] | SyncTokenTransformManager.onChunk: emitting [{"type":"TagTk","name":"p","attribs":[],"dataAttribs":{}},"test",{"type":"EndTagTk","name":"p","attribs":[],"dataAttribs":{}},{"type":"NlTk","dataAttribs":{"tsr":[4,5]}},{"type":"NlTk","dataAttribs":{"tsr":[5,6]}}]

0-[HTML-DBG] | Inserting shadow meta for p

0-[HTML-DBG] | Inserting shadow meta for p

[DEBUG] | SyncTokenTransformManager.onChunk, input: [{"type":"EOFTk"}]

[DEBUG] | SyncTokenTransformManager.onChunk: emitting [{"type":"EOFTk"}]

[DEBUG] | maybeSyncReturn transforming c-2 {"tokens":[{"type":"EOFTk"}]}

[DEBUG] | maybeSyncReturn transforming c-2 {"tokens":[{"type":"EOFTk"}]}

[DEBUG] | firstAccum sync c-2 [{"type":"EOFTk"}]

[DEBUG] | AsyncTokenTransformManager onChunk sync [{"type":"EOFTk"}]

[DEBUG] | emitting

[DEBUG] | SyncTokenTransformManager.onChunk, input: [{"type":"EOFTk"}]

[DEBUG] | SyncTokenTransformManager.onChunk: emitting [{"type":"TagTk","name":"p","attribs":[],"dataAttribs":{}},"test 2",{"type":"EndTagTk","name":"p","attribs":[],"dataAttribs":{}},{"type":"EOFTk"}]

0-[HTML-DBG] | Inserting shadow meta for p

0-[HTML-DBG] | Inserting shadow meta for p

{"name":"parsoid","hostname":"30095a5f2051","pid":412,"level":30,"logType":"info","wiki":"wiki$0","title":"Test","oldId":34,"reqId":"36e8196ad5bcc4204e61e57a","userAgent":"VisualEditor-MediaWiki/1.33.1","msg":"completed wt2html in 60875.93622291088ms","longMsg":"completed wt2html in 60875.93622291088ms","levelPath":"info","time":"2019-12-21T13:09:33.909Z","v":0}

- - 21/Dec/2019:13:08:30 +0000 "GET /api.php" 200

D8sychain (talkcontribs)

Successful load log:

- - 21/Dec/2019:13:46:13 +0000 "GET /Test" 200

- - 21/Dec/2019:13:46:14 +0000 "GET /load.php" 304

- - 21/Dec/2019:13:46:14 +0000 "GET /load.php" 304

- - 21/Dec/2019:13:46:14 +0000 "GET /load.php" 304

- - 21/Dec/2019:13:46:17 +0000 "GET /load.php" 200

- - 21/Dec/2019:13:46:24 +0000 "GET /api.php" 200

- - 21/Dec/2019:13:46:24 +0000 "GET /api.php" 200

{"name":"parsoid","hostname":"30095a5f2051","pid":423,"level":30,"logType":"info","wiki":"wiki$0","title":"Test","oldId":null,"reqId":"fecf319b412cafc20822db0f","userAgent":"VisualEditor-MediaWiki/1.33.1","msg":"started wt2html","longMsg":"started wt2html","levelPath":"info","time":"2019-12-21T13:46:25.244Z","v":0}

[DEBUG] | AsyncTokenTransformManager.setFrame []

[DEBUG] | SyncTokenTransformManager.onChunk, input: ["test"]

[DEBUG] | SyncTokenTransformManager.onChunk: emitting ["test"]

[DEBUG] | maybeSyncReturn transforming c-0 {"tokens":["test"]}

[DEBUG] | firstAccum sync c-0 ["test"]

[DEBUG] | AsyncTokenTransformManager onChunk sync ["test"]

[DEBUG] | emitting

[DEBUG] | SyncTokenTransformManager.onChunk, input: ["test"]

0-[PRE-DBG] | saved : []

0-[PRE-DBG] | ----> ["test"]

[DEBUG] | SyncTokenTransformManager.onChunk: emitting []

[DEBUG] | SyncTokenTransformManager.onChunk, input: [{"type":"NlTk","dataAttribs":{"tsr":[4,5]}},{"type":"NlTk","dataAttribs":{"tsr":[5,6]}},"test 2"]

[DEBUG] | SyncTokenTransformManager.onChunk: emitting [{"type":"NlTk","dataAttribs":{"tsr":[4,5]}},{"type":"NlTk","dataAttribs":{"tsr":[5,6]}},"test 2"]

[DEBUG] | maybeSyncReturn transforming c-1 {"tokens":[{"type":"NlTk","dataAttribs":{"tsr":[4,5]}}]}

[DEBUG] | maybeSyncReturn transforming c-1 {"tokens":[{"type":"NlTk","dataAttribs":{"tsr":[5,6]}}]}

[DEBUG] | maybeSyncReturn transforming c-1 {"tokens":["test 2"]}

[DEBUG] | firstAccum sync c-1 [{"type":"NlTk","dataAttribs":{"tsr":[4,5]}},{"type":"NlTk","dataAttribs":{"tsr":[5,6]}},"test 2"]

[DEBUG] | AsyncTokenTransformManager onChunk sync [{"type":"NlTk","dataAttribs":{"tsr":[4,5]}},{"type":"NlTk","dataAttribs":{"tsr":[5,6]}},"test 2"]

[DEBUG] | emitting

[DEBUG] | SyncTokenTransformManager.onChunk, input: [{"type":"NlTk","dataAttribs":{"tsr":[4,5]}},{"type":"NlTk","dataAttribs":{"tsr":[5,6]}},"test 2"]

0-[PRE-DBG] | saved : []

0-[PRE-DBG] | ----> [{"type":"NlTk","dataAttribs":{"tsr":[4,5]}}]

0-[PRE-DBG] | saved : []

0-[PRE-DBG] | ----> [{"type":"NlTk","dataAttribs":{"tsr":[5,6]}}]

0-[PRE-DBG] | saved : []

0-[PRE-DBG] | ----> ["test 2"]

[DEBUG] | SyncTokenTransformManager.onChunk: emitting [{"type":"TagTk","name":"p","attribs":[],"dataAttribs":{}},"test",{"type":"EndTagTk","name":"p","attribs":[],"dataAttribs":{}},{"type":"NlTk","dataAttribs":{"tsr":[4,5]}},{"type":"NlTk","dataAttribs":{"tsr":[5,6]}}]

0-[HTML-DBG] | Inserting shadow meta for p

0-[HTML-DBG] | Inserting shadow meta for p

[DEBUG] | SyncTokenTransformManager.onChunk, input: [{"type":"EOFTk"}]

[DEBUG] | SyncTokenTransformManager.onChunk: emitting [{"type":"EOFTk"}]

[DEBUG] | maybeSyncReturn transforming c-2 {"tokens":[{"type":"EOFTk"}]}

[DEBUG] | maybeSyncReturn transforming c-2 {"tokens":[{"type":"EOFTk"}]}

[DEBUG] | firstAccum sync c-2 [{"type":"EOFTk"}]

[DEBUG] | AsyncTokenTransformManager onChunk sync [{"type":"EOFTk"}]

[DEBUG] | emitting

[DEBUG] | SyncTokenTransformManager.onChunk, input: [{"type":"EOFTk"}]

[DEBUG] | SyncTokenTransformManager.onChunk: emitting [{"type":"TagTk","name":"p","attribs":[],"dataAttribs":{}},"test 2",{"type":"EndTagTk","name":"p","attribs":[],"dataAttribs":{}},{"type":"EOFTk"}]

0-[HTML-DBG] | Inserting shadow meta for p

0-[HTML-DBG] | Inserting shadow meta for p

{"name":"parsoid","hostname":"30095a5f2051","pid":423,"level":30,"logType":"info","wiki":"wiki$0","title":"Test","oldId":34,"reqId":"fecf319b412cafc20822db0f","userAgent":"VisualEditor-MediaWiki/1.33.1","msg":"completed wt2html in 1136.6053849458694ms","longMsg":"completed wt2html in 1136.6053849458694ms","levelPath":"info","time":"2019-12-21T13:46:26.367Z","v":0}

- - 21/Dec/2019:13:46:23 +0000 "GET /api.php" 200

- - 21/Dec/2019:13:46:23 +0000 "GET /load.php" 200

- - 21/Dec/2019:13:46:25 +0000 "GET /api.php" 200

- - 21/Dec/2019:13:46:26 +0000 "GET /Test" 200

- - 21/Dec/2019:13:46:26 +0000 "POST /api.php" 200

D8sychain (talkcontribs)

I did not figure out the exact cause, but I switched from SQLite database to MySQL database and the issue went away.

Reply to "Timeout issues"

The Parsoid Guide needs updating and better formatting

5
Thedonquixotic (talkcontribs)

Hi, I'm new to using Mediawiki but I just wanted to comment and say that I think the Parsoid guide is poorly written and needs some serious improvements. It's constantly sidetracked by notes on obsolete options, or alternative installation issues etc, which results in a very confusing stream of information to parse.

I was unable to install Parsoid correctly following the official guide but I found this one much easier to follow: https://www.howtoforge.com/tutorial/how-to-install-visualeditor-for-mediawiki-on-centos-7/

While the one linked is only for a specific OS and server type, I think it is a better example of how a Parsoid installation tutorial should be structured. The current one is very muddy and the structure of it is not consistent, at least to the eyes of a newbie like me. I am a newbie, but I think I have a decent understanding of technical information writing and the current shape of the article is not a good example of that.

Arlolra (talkcontribs)

I'm sorry for the assessment of the documentation. It is community maintained so there's an opportunity for you to contribute improvements, if possible.

Setting up Parsoid has been a thorn in many a MediaWiki developers side and is one motivating factor in porting Parsoid from JavaScript to PHP, to be included in core.

Hopefully that will ease the burden of many peoples' setup moving forward.

I appreciate the feedback.

MavropaliasG (talkcontribs)

Hi @Arlolra is there a chance you could tell me when approximately the port will finish? I know it's very difficult to say, but if you had to take a wild guess, would you say it's going to be like ~6 months or more like 2 years? Thanks

Arlolra (talkcontribs)

The port is currently in process of being deployed to WMF's production cluster so, for all extents and purposes, it's done.

D8sychain (talkcontribs)

I think that is wonderful news. Is there a good place to follow along with updates on its development?

Reply to "The Parsoid Guide needs updating and better formatting"

curl: (7) Failed to connect to localhost port 8142: Connection refused

5
210.195.7.193 (talkcontribs)

Hi, been trying to install parsoid for days. still got this error. anyone can help?


OS: Ubuntu 18.04

PHP: 7.3

Web Server: Nginx

Nodejs: 12.5.0

service parsoid status replied:

parsoid.service - LSB: Web service converting HTML+RDFa to MediaWiki wikitext and back

  Loaded: loaded (/etc/init.d/parsoid; generated)

  Active: active (running) since Mon 2019-07-01 14:20:30 UTC; 10min ago

    Docs: man:systemd-sysv-generator(8)

  Process: 4557 ExecStop=/etc/init.d/parsoid stop (code=exited, status=0/SUCCESS)

  Process: 4565 ExecStart=/etc/init.d/parsoid start (code=exited, status=0/SUCCESS)

    Tasks: 12 (limit: 2344)

  CGroup: /system.slice/parsoid.service

          ├─4583 /bin/sh -c /usr/bin/nodejs /usr/lib/parsoid/src/bin/server.js -c /etc/mediawiki/parsoid/config.yaml >> /var/log/parsoid/parsoid.log 2>&1

          └─4585 /usr/bin/nodejs /usr/lib/parsoid/src/bin/server.js -c /etc/mediawiki/parsoid/config.yaml

Jul 01 14:20:25 homestead systemd[1]: Stopped LSB: Web service converting HTML+RDFa to MediaWiki wikitext and back.

Jul 01 14:20:25 homestead systemd[1]: Starting LSB: Web service converting HTML+RDFa to MediaWiki wikitext and back...

Jul 01 14:20:25 homestead parsoid[4565]: Started Parsoid server on port 8142

Jul 01 14:20:30 homestead systemd[1]: Started LSB: Web service converting HTML+RDFa to MediaWiki wikitext and back.


But still the error was displayed when trying to curl to localhost:8142


Please help. Thanks


210.195.7.193 (talkcontribs)

/var/log/parsoid/parsoid.log


{"name":"parsoid","hostname":"homestead","pid":5784,"level":30,"levelPath":"info/service-runner","msg":"master(5784) initializing 1 workers","time":"2019-07-01T14:43:04.066Z","v":0}

{"name":"parsoid","hostname":"homestead","pid":5796,"level":60,"code":"MODULE_NOT_FOUND","requireStack":["/usr/lib/parsoid/node_modules/service-runner/lib/base_service.js","/usr/lib/parsoid/node_modules/service-runner/lib/master.js","/usr/lib/parsoid/node_modules/service-runner/service-runner.js"],"moduleName":"../src/lib/index.js","levelPath":"fatal/service-runner/worker","msg":"Cannot find module '../src/lib/index.js'\nRequire stack:\n- /usr/lib/parsoid/node_modules/service-runner/lib/base_service.js\n- /usr/lib/parsoid/node_modules/service-runner/lib/master.js\n- /usr/lib/parsoid/node_modules/service-runner/service-runner.js","time":"2019-07-01T14:43:04.338Z","v":0}

{"name":"parsoid","hostname":"homestead","pid":5784,"level":40,"message":"first worker died during startup, continue startup","worker_pid":5796,"exit_code":1,"startup_attempt":1,"levelPath":"warn/service-runner/master","msg":"first worker died during startup, continue startup","time":"2019-07-01T14:43:05.358Z","v":0}

Arlolra (talkcontribs)

Is the file "/usr/lib/parsoid/src/lib/index.js" present?

Arlolra (talkcontribs)

Most likely the module in /etc/mediawiki/parsoid/config.yaml needs to be updated to point to the right place.

31.166.159.122 (talkcontribs)

arlolra is right

edit config.yaml

point module: /usr/lib/parsoid/src/lib/index.js

thats it :)


Reply to "curl: (7) Failed to connect to localhost port 8142: Connection refused"