npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

eslint-config-etherpad

v4.0.4

Published

ESLint shareable config used for Etherpad and its plugins

Downloads

3,357

Readme

Etherpad ESLint Shareable Config

This package contains an ESLint shareable config that is used by Etherpad and Etherpad plugins in the https://github.com/ether namespace. You are encouraged to use it for your own Etherpad plugins so that your code stays consistent with the Etherpad codebase.

Available Configs

  • etherpad: Base config containing settings that are common to all files.
  • etherpad/node: Extends etherpad for code that runs in Node.js.
  • etherpad/browser: Extends etherpad for code that runs in the browser.
  • etherpad/tests: Extends etherpad for test code.
  • etherpad/tests/backend: Extends etherpad/node and etherpad/tests for backend test code.
  • etherpad/tests/cypress: Extends etherpad/node and etherpad/tests for Cypress test code.
  • etherpad/tests/frontend: Extends etherpad/browser and etherpad/tests for frontend test code.
  • etherpad/plugin: Applies the above configs to the appropriate files. Assumes the plugin follows the typical file layout.

Usage in an Etherpad Plugin

  1. Install the shareable config and its dependencies:

    npm install --save-dev eslint eslint-config-etherpad typescript
  2. Create a .eslintrc.cjs in your project's root directory:

    'use strict';
    
    // This is a workaround for https://github.com/eslint/eslint/issues/3458
    require('eslint-config-etherpad/patch/modern-module-resolution');
    
    module.exports = {
      root: true,
      extends: 'etherpad/plugin',
    };
  3. If you require('ep_etherpad-lite/*') anywhere in your server-side code, add a peer dependency to your package.json so that the n ESLint plugin (for Node.js) won't complain about unavailable modules:

       "peerDependencies": {
         "ep_etherpad-lite": ">=1.8.6"
       },

    Adding an entry to peerDependencies does not cause npm install to install that peer dependency; you must manually install it yourself:

    npm install --no-save ep_etherpad-lite@file:/path/to/etherpad-lite/src

    The above command creates a symlink at node_modules/ep_etherpad-lite that points to /path/to/etherpad-lite/src. Unfortunately, npm automatically deletes that symlink whenever you run npm install to install, add, or update a regular dependency, so remember to re-run the above command each time you run npm install.

  4. Optional but recommended: Define a lint script in your package.json so that you can run npm run lint to check the code:

      "scripts": {
        "lint": "eslint ."
      },
  5. Optional but recommended: Specify the minimum version of Node.js you support (ideally this would match Etherpad's minimum required version) so that the n ESLint plugin (for Node.js) can warn you when you use incompatible features:

      "engines": {
        "node": ">=12.17.0"
      },
  6. Apply automatic fixes. If you added the optional lint script to package.json, you can run:

    npm run lint -- --fix

    Or you can run:

    npx eslint --fix .

Overrides

If you need to tune the configs, you can specify overrides in your .eslintrc.cjs. For example:

'use strict';

// This is a workaround for https://github.com/eslint/eslint/issues/3458
require('eslint-config-etherpad/patch/modern-module-resolution');

module.exports = {
  root: true,
  extends: 'etherpad/plugin',
  overrides: [
    {
      files: ['static/js/shared/**/*'],
      env: {
        shared-node-browser: true,
      },
      extends: 'etherpad/node',
    },
  ],
};

Copyright and License

Copyright © 2020 Richard Hansen [email protected]

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.