Prettier PHP Plugin

Overview
Prettier PHP

Prettier PHP Plugin

GitHub Workflow Status npm version Codecov Coverage Status code style: prettier Gitter Follow+Prettier+on+Twitter

Intro

Prettier is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.

This plugin adds support for the PHP language to Prettier.

Can this be used in production?

We're considering the plugin to be stable when pure PHP files are formatted. Formatting of files that contain mixed PHP and HTML is still considered unstable - please see open issues with the tag "inline" for details.

If you want to use the plugin in production, we recommend limiting its scope to pure PHP files.

Input

<?php
array_map(function($arg1,$arg2) use ( $var1, $var2 ) {
    return $arg1+$arg2/($var+$var2);
}, array("complex"=>"code","with"=>
    function() {return "inconsistent";}
,"formatting"=>"is", "hard" => "to", "maintain"=>true));

Output

<?php

array_map(
    function ($arg1, $arg2) use ($var1, $var2) {
        return $arg1 + $arg2 / ($var + $var2);
    },
    [
        "complex" => "code",
        "with" => function () {
            return "inconsistent";
        },
        "formatting" => "is",
        "hard" => "to",
        "maintain" => true,
    ]
);

Playground

You can give the plugin a try in our playground!

Install

yarn:

yarn add --dev prettier @prettier/plugin-php
# or globally
yarn global add prettier @prettier/plugin-php

npm:

npm install --save-dev prettier @prettier/plugin-php
# or globally
npm install --global prettier @prettier/plugin-php

Use

With Node.js

If you installed prettier as a local dependency, you can add prettier as a script in your package.json,

{
  "scripts": {
    "prettier": "prettier"
  }
}

and then run it via

yarn run prettier path/to/file.php --write
# or
npm run prettier -- path/to/file.php --write

If you installed globally, run

prettier path/to/file.php --write

In the Browser

This package exposes a standalone.js that can be used alongside Prettier's own standalone.js to make the PHP plugin work in browsers without a compile step.

First, grab both standalone scripts from an npm CDN like unpkg:

<script src="https://unpkg.com/prettier/standalone.js"></script>
<script src="https://unpkg.com/@prettier/plugin-php/standalone.js"></script>

Then use Prettier with PHP, just like this:

prettier.format(YOUR_CODE, {
  plugins: prettierPlugins,
  parser: "php"
});

See this code in action in this basic demo.

With Bundlers

Bundlers like webpack, Rollup or browserify automatically recognize how to handle the PHP plugin. Remember that even when using a bundler, you still have to use the standalone builds:

import prettier from "prettier/standalone";
import phpPlugin from "@prettier/plugin-php/standalone";

prettier.format(YOUR_CODE, {
  plugins: [phpPlugin],
  parser: "php"
});

Configuration

Prettier for PHP supports the following options. We recommend that all users set the phpVersion option.

Name Default Description
phpVersion "5.4" Allows specifying the PHP version you're using. If you're using PHP 7.1 or later, setting this option will make use of modern language features in the printed output. If you're using PHP 5.3 or lower, you'll have to set this option or Prettier will generate incompatible code.
printWidth 80 Same as in Prettier (see prettier docs)
tabWidth 4 Same as in Prettier (see prettier docs)
useTabs false Same as in Prettier (see prettier docs)
singleQuote false If set to "true", strings that use double quotes but do not rely on the features they add, will be reformatted. Example: "foo" -> 'foo', "foo $bar" -> "foo $bar".
trailingCommaPHP true If set to true, trailing commas will be added wherever possible.
If set to false, no trailing commas are printed.
braceStyle "psr-2" If set to "psr-2", prettier will move open brace for code blocks (classes, functions and methods) onto new line.
If set to "1tbs", prettier will move open brace for code blocks (classes, functions and methods) onto same line.
requirePragma false Same as in Prettier (see prettier docs)
insertPragma false Same as in Prettier (see prettier docs)

Ignoring code

A comment // prettier-ignore will exclude the next node in the abstract syntax tree from formatting.

For example:

matrix(
  1, 0, 0,
  0, 1, 0,
  0, 0, 1
);

// prettier-ignore
matrix(
  1, 0, 0,
  0, 1, 0,
  0, 0, 1
);

will be transformed to

matrix(1, 0, 0, 0, 1, 0, 0, 0, 1);

// prettier-ignore
matrix(
  1, 0, 0,
  0, 1, 0,
  0, 0, 1
)

Editor integration

Atom

The official prettier plugin for atom supports plugins.

VScode

The official prettier plugin for vscode supports plugins since Version 1.10.0. To enable it, install the extension and make sure the plugin is installed locally (in your project folder). After restarting VScode the plugin should work as expected.

PhpStorm / IntelliJ / Jetbrains IDE

  • Install prettier and plugin locally yarn add -D prettier @prettier/plugin-php
  • Open Settings (File, Settings)
  • Go to Plugins Section, Select Marketplace, Search for Prettier, Install Plugin, Restart IDE
  • Open Settings, Search for Prettier, select Prettier in left settings navigation
  • Check prettier package has auto-detected, should be something like myproject/node_modules/prettier
  • Update Run for Files to include .php, eg: {**/*,*}.{js,ts,jsx,tsx,php,json,scss,vue,md}
  • Tick the On Save button, if you want your files formatting updated on file save
  • Clock OK to save settings

Note: Just pressing save does not reformat your current file unless the file has been modified in some way, alternatively you can use the Prettier shortcut Ctrl+Alt+Shift+P

Sublime Text

Sublime Text support is available through Package Control and the JsPrettier plugin.

Vim

Regarding plugin support in the official plugin vim-prettier see this issue.

ALE

The linting plugin ALE has built-in support for prettier and its plugins. Just add prettier to your list of fixers. For example:

let g:ale_fixers={
  \'javascript': ['prettier'],
  \'json': ['prettier'],
  \'php': ['prettier'],
\}

Custom

Alternatively, adding the following to .vimrc will define a custom command :PrettierPhp that runs the plugin while preserving the cursor position and run it on save.

" Prettier for PHP
function PrettierPhpCursor()
  let save_pos = getpos(".")
  %! prettier --stdin --parser=php
  call setpos('.', save_pos)
endfunction
" define custom command
command PrettierPhp call PrettierPhpCursor()
" format on save
autocmd BufwritePre *.php PrettierPhp

Integration for other tools

PHP-CS-Fixer

See docs/recipes/php-cs-fixer for integration help, code can also be found in https://gist.github.com/Billz95/9d5fad3af728b88540fa831b73261733

Contributing

If you're interested in contributing to the development of Prettier for PHP, you can follow the CONTRIBUTING guide from Prettier, as it all applies to this repository too.

To test it out on a PHP file:

  • Clone this repository.
  • Run yarn.
  • Create a file called test.php.
  • Run yarn prettier test.php to check the output.

Maintainers


Christian Zosel

Evilebot Tnawi
Issues
  • Option for opening brace

    Option for opening brace

    1st off I want to be clear - I think the default should still be to follow PSR2-like formatting standards

    With that in mind, from my own experience and now starting to look through other open-source php projects, it seems like one of the biggest differences in formatting standards is putting the opening brace for functions, classes, etc on a new line vs same line. I'm a little worried that not having this option might scare people off from using prettier/plugin-php.

    I was thinking of starting to work on a PR for adding an option to do this (defaulting to the PSR2 format of putting it on a new line), but wanted to open for discussion first.

    openingBraceNewLine = true (default)
    
    class Test
    {
      public function testMethod()
      {
      }
    }
    
    function testFunction()
    {
    }
    
    openingBraceNewLine = false
    
    
    class Test {
      public function testMethod() {
      }
    }
    
    function testFunction() {
    }
    
    enhancement 
    opened by mgrip 59
  • Feat update php parser

    Feat update php parser

    Prepare to new release. Feel free to feedback/fix/commit in this branch

    opened by alexander-akait 40
  • Add build step for standalone version, resolves #842

    Add build step for standalone version, resolves #842

    This pull request resolves #842, adding a standalone build to the Prettier PHP plugin.

    Build

    The standalone.js in the root of the package is generated through running:

    yarn run build-standalone
    

    Usage

    The standalone.js is "standalone" in the sense that it is bundled into one file with no Node.js-specific dependencies left. It does however not include Prettier itself. Prettier's standalone version has to be included on its own first (order matters):

    <script src="https://unpkg.com/prettier/standalone.js"></script>
    <script src="https://unpkg.com/@prettier/plugin-php/standalone.js"></script> <!-- does not exist yet -->
    

    The plugin registers as a global variable named prettier_pluginPhp. Using Prettier with it look like this:

    prettier.format(YOUR_CODE, {
      plugins: [prettier_pluginPhp],
      parser: ["php"]
    });
    

    Here's a demo.

    Transformations

    Things I instructed Rollup to do:

    • Mark the prettier module as external, so essentially all require("prettier") are replaced with the prettier global variable.
    • Add a shim for Node's assert module. I'm not sure why the strictEqual method should do nothing, but that's how it's done in Prettier.
    • Add a shim for Buffer.isBuffer() (used by the php-parser dependency).
    • Set process.arch to x32 (relevant for maximum float size).

    ToDo

    • [x] Write tests
    • [x] Add documentation to readme

    Considerations

    • [x] Name of the global? prettier_pluginPhp is not that catchy, suggestions are welcome.

      ✅ Resolved: Like Prettier's built-in plugins, the plugin is registered on the global prettierPlugins object as prettierPlugins.php.

    • [x] Minify? Prettier doesn't do it, therefore this pull request currently doesn't either.

      ✅ Resolved: Prettier does actually apply minification, not to their standalone.js, but to each of their plugins. This PR matches this behavior and minifies the standalone plugin.

    • [x] Add the generated standalone.js to the repo? Prettier does so.

      ❌ Rejected: I was wrong, Prettier actually does not.

    • [x] Is it reasonable to hardcode process.arch to x32? Doing a quick search, I found no way to detect a machine's architecture with browser-side JS with a reasonable amount of confidence. x32 should be a safe bet.

    • [x] Add documentation about how to use this plugin in bundlers? The standalone.js is not really suited for usage with bundlers. To avoid confusion, an additional section about using bundlers in the readme (i.e. "rewrite all prettier calls to prettier/standalone") could be reasonable.

      ✅ Resolved: No weird tips for bundler usage needed as this PR now also includes a pretty fool-proof way to integrate with bundlers.

    opened by loilo 38
  • Alpha release?

    Alpha release?

    https://github.com/prettier/plugin-php/issues/174#issuecomment-371190371

    Wanted to start a discussion on where people think the quality of this plugin is currently, and plans for rolling out more widely.

    For myself I've been running --debug-check on a codebase of ~1000 php files, and as of this morning am not getting any breaking errors 🎉

    Do people think its time to start publishing this as an alpha/beta release to encourage more people to start using and finding edge cases? I'm guessing that would mostly just entail bumping our package version to 0.1.0 and updating our README.md + documentation

    question 
    opened by mgrip 34
  • Proper support for flexible heredoc/nowdoc syntax

    Proper support for flexible heredoc/nowdoc syntax

    Currently, the new flexible heredoc/nowdoc syntax is "destroyed" during formatting:

    $php73FlexibleNowdoc = <<<'EOD'
          Example of string
          spanning multiple lines
          using nowdoc syntax.
          EOD;
    

    is printed as

    $php73FlexibleNowdoc = <<<'EOD'
    Example of string
    spanning multiple lines
    using nowdoc syntax.
    turns into
    
    EOD;
    

    Also, there seems to be an extra linebreak before the end.

    Concerning expected behavior, I'd propose to leave the indentation the same way we find it. Thoughts?

    cc @evilebottnawi @loilo

    enhancement discussion 
    opened by czosel 27
  • Convert double quotes to single quotes

    Convert double quotes to single quotes

    ...if the string is "simple", i.e. doesn't use any features that require double quotes:

    • embedded variables
    • linebreaks
    • special characters like \n, \t, ", ', ... See http://php.net/manual/en/language.types.string.php#language.types.string.syntax.double

    Fixes #633

    opened by czosel 27
  • ci: appveyor

    ci: appveyor

    /cc @vjeux looks we don't have permissions to add project https://ci.appveyor.com/project/prettier/plugin-php

    opened by alexander-akait 27
  • Strategy on adding new options

    Strategy on adding new options

    I think we should discuss the general procedure on how we handle the wish to add new options.

    I started writing this as a comment to #118, but I'd like to discuss the "big picture" in a separate issue instead.

    To me, #118 is a nice example to prove @evilebottnawi 's point in the discussion about opening braces (#107, #108):

    I'm not against the option or not specifically this option, the only problem is that adding one option other will want more options, and each will complicate the maintenance of the project and deliver only problems

    In this case, I'd advise against introducing a new option, because the number of options we'd have to support if we allow configuration of "this type of" styling decision. Thinking about it from this standpoint, I'd even support your wish to revert the option we introduced about curly braces and add it back in when we've released a first stable version and the tool has been in use for a while - because then we have an actual community of user that will keep asking for specific options. I'd also like to cite two comments by @vjeux which might offer guidance:

    For prettier, I used a combination of my experience writing JavaScript for 10+ years, grepping through the millions of lines of the Facebook codebase to see which style was more popular, reading through various coding styles (eg Airbnb) and what are all the related eslint configs and finally feedback from people complaining that some pattern looked bad. My guiding principle was for the code generated by prettier to pass code review as if it was written by a human. I also tried to make all the decisions be as less controversial as possible.

    Also, one thing that really helped is to have someone to make the final decision. This way all the discussions could happen and were useful input but at the end of the day, only the things I wanted would go through. I found that there are a handful of useful tactics to manage those discussions:

    • Ask for specific snippets of code and try to find solutions for those. So many times people argue about very general things but in practice there are concrete fixes you can do for their use case.
    • Explicitly say that you're not going to make a decision right now on certain issues. One thing that people pick up quickly is to engage in places where the people involve the project are responding. Then once in a while you can sort issues by upvote/comments and figure out what are the most painful things and do a deep dive.
    • Avoid style trashing. Ideally, you should think deeply about each important style decision you are making and once you do it, actually commit to it. This way you can "close" the issue and whenever this subject comes up in the future say that you have reached a decision and are not looking to spend time thinking about it for now. This way you can focus on the things that still need to be fixed rather than going through the same discussions over an over again wasting everyone's time. This is hard to do in practice but if you can pull it off, it'll help a lot.

    (See https://github.com/prettier/plugin-php/issues/59#issuecomment-366744779)

    I'm gonna make a suggestion on how i could imagine we handle things, just to keep this issue actionable:

    • Until our first release, we don't add any custom options and remain PSR-2 compatible.

    After that:

    • We only consider a new option if there is a considerable amount of requests to add it
    • If necessary, we put the decision up to a vote after a short "cool-down" period

    That would also mean that we don't open anything that involves adding options for votes just yet. Of course we can (and should) vote on difficult stylistic decisions that go into the first version.

    What do you think?

    /cc @mgrip

    opened by czosel 26
  • Behavior change: Add trailing commas to array items

    Behavior change: Add trailing commas to array items

    I propose a behavior change to array formatting: Prettier should add a trailing comma to the last item in a multi-line array.

    Trailing commas are beneficial in that they make editing easier and make diffs smaller. But more importantly, the coding standards for several significant PHP projects (e.g. Drupal, Symfony and WordPress) require/recommend trailing commas.

    PSR-2 doesn’t address this topic, so I think changing this behavior to match common practice is consistent with Prettier’s goals.

    Current behavior:

    $array = [
        'item-in-array-example-1',
        'item-in-array-example-2',
        'item-in-array-example-3'
    ];
    

    Desired behavior:

    $array = [
        'item-in-array-example-1',
        'item-in-array-example-2',
        'item-in-array-example-3',
    ];
    

    I hope this is easy to implement since the main Prettier project already has a config option for trailing comma.

    For reference, these project coding standards all recommend trailing commas:

    enhancement discussion 
    opened by gouch 25
  • If plain html code is provided, empty lines are added

    If plain html code is provided, empty lines are added

    I have alot of php files that contain pure html code.

    Prettier PHP takes those files and adds plain empty html lines between every line.

    Before:

    <section class="[ c-social-foot ]  [ has-text-centered ]">
      <div class="[ container  is-fluid ]">
        <div class="[ columns  is-centered ]">
          <div class="[ column ]">
    

    After

    <section class="[ c-social-foot ]  [ has-text-centered ]">
    
      <div class="[ container  is-fluid ]">
    
        <div class="[ columns  is-centered ]">
    
          <div class="[ column ]">
    

    This is very odd, it should remain as it was.

    ugly 
    opened by vielhuber 24
  • build(deps-dev): bump @babel/preset-env from 7.16.0 to 7.16.4

    build(deps-dev): bump @babel/preset-env from 7.16.0 to 7.16.4

    Bumps @babel/preset-env from 7.16.0 to 7.16.4.

    Release notes

    Sourced from @​babel/preset-env's releases.

    v7.16.3 (2021-11-09)

    Thanks @​The-x-Theorist for your first PR!

    :bug: Bug Fix

    :house: Internal

    Committers: 5

    v7.16.2 (2021-11-01)

    :bug: Bug Fix

    • babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression

    :house: Internal

    Committers: 3

    v7.16.1 (2021-10-30)

    Thanks @​PeachScript for your first PR!

    :bug: Bug Fix

    • babel-plugin-transform-typescript

    ... (truncated)

    Changelog

    Sourced from @​babel/preset-env's changelog.

    v7.16.4 (2021-11-16)

    :eyeglasses: Spec Compliance

    • babel-helper-remap-async-to-generator, babel-plugin-transform-async-to-generator
    • babel-parser

    :bug: Bug Fix

    • babel-parser
    • babel-plugin-proposal-async-generator-functions, babel-plugin-proposal-decorators, babel-plugin-transform-runtime, babel-preset-env

    :nail_care: Polish

    • babel-parser

    v7.16.3 (2021-11-09)

    :bug: Bug Fix

    :house: Internal

    v7.16.2 (2021-11-01)

    :bug: Bug Fix

    • babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression

    :house: Internal

    v7.16.1 (2021-10-30)

    :bug: Bug Fix

    • babel-plugin-transform-typescript

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps-dev): bump rollup from 2.59.0 to 2.60.0

    build(deps-dev): bump rollup from 2.59.0 to 2.60.0

    Bumps rollup from 2.59.0 to 2.60.0.

    Changelog

    Sourced from rollup's changelog.

    2.60.0

    2021-11-11

    Features

    • Add this.load context function to load, transform and parse modules without adding them to the graph (#4234)
    • Sanitize non-url-safe characters in generated chunk names by default (#4262)
    • Support ESM plugins via command line (#4265)

    Pull Requests

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Ugly: Wrong indent in empty array with //comment inside

    Ugly: Wrong indent in empty array with //comment inside

    @prettier/plugin-php v0.17.6 Playground link

    Input:

    <?php
    
    return [
      // TODO: ...
    ];
    
    return [
      // TODO: ...
      'foo' => 'bar',
    ];
    
    return [
      'foo' => 'bar',
    ];
    
    

    Output:

    <?php
    
    return [
            // TODO: ...
        ];
    
    return [
        // TODO: ...
        "foo" => "bar",
    ];
    
    return [
        "foo" => "bar",
    ];
    
    
    opened by Vovan-VE 0
  • build(deps-dev): bump eslint-plugin-import from 2.25.2 to 2.25.3

    build(deps-dev): bump eslint-plugin-import from 2.25.2 to 2.25.3

    Bumps eslint-plugin-import from 2.25.2 to 2.25.3.

    Changelog

    Sourced from eslint-plugin-import's changelog.

    [2.25.3] - 2021-11-09

    Fixed

    Changed

    Commits
    • 7c239fe Bump to v2.25.3
    • dfc5b54 [Fix] no-import-module-exports: avoid a crash in eslint < 4
    • 790d9af [Tests] skip 2020 test in eslint < 6
    • 3fbc252 [Deps] update eslint-module-utils, is-core-module
    • cdcc76a [eslint] consolidate configs
    • 332d3c8 [Fix] no-import-module-exports: avoid false positives with a shadowed `modu...
    • add650a [Docs] HTTP => HTTPS
    • 6682e9a [Fix] importType: fix isExternalModule calculation
    • 498b102 [Refactor] importType: combine redundant isScoped and isScopedModule
    • 651a4d7 [readme] Add note to TypeScript docs to install appropriate resolver
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps-dev): bump eslint from 7.32.0 to 8.2.0

    build(deps-dev): bump eslint from 7.32.0 to 8.2.0

    Bumps eslint from 7.32.0 to 8.2.0.

    Release notes

    Sourced from eslint's releases.

    v8.2.0

    Features

    • c9fefd2 feat: report class evaluation TDZ errors in no-use-before-define (#15134) (Milos Djermanovic)

    Documentation

    • c415c04 docs: Use string rule severity in CLI examples (#15253) (Kevin Partington)
    • 12b627d docs: fix typo in working-with-rules.md (#15233) (Nitin Kumar)
    • a86ffc0 docs: fix broken anchor in configuration files (#15223) (Pierre Berger)
    • ee8af5f docs: Link to unit tests from rule documentation (#15207) (Brandon Mills)
    • 1c0ca3c docs: add ci and perf tags for commit (#15215) (Nitin Kumar)

    Build Related

    • 796587a build: upgrade eslint-release to v3.2.0 to support conventional commits (#15246) (Milos Djermanovic)

    Chores

    • cf5b6be chore: update @​eslint/eslintrc to avoid different versions of js-yaml (#15265) (Milos Djermanovic)
    • 4fd7a6c perf: don't prepare a fix for valid code in key-spacing (#15239) (Milos Djermanovic)
    • fda533c chore: update strip-ansi dependency (#15221) (Nitin Kumar)
    • 67949bd ci: Remove Node 16 CI prerelease workaround (#14935) (Brandon Mills)

    v8.1.0

    • 446b4b3 Docs: Update commit message format docs (#15200) (Nicholas C. Zakas)
    • d9d84a0 Fix: keyword-spacing conflict with space-infix-ops on > (fixes #14712) (#15172) (Milos Djermanovic)
    • a1f7ad7 Fix: allow baseConfig to extend preloaded plugin config (fixes #15079) (#15187) (Milos Djermanovic)
    • 3d370fb New: Add no-unused-private-class-members rule (fixes #14859) (#14895) (Tim van der Lippe)
    • e926b17 New: Add name to RuleTester (#15179) (Gareth Jones)
    • 90a5b6b Chore: improve performance of :function selector (#15181) (Milos Djermanovic)
    • 31af1c8 Chore: fix counting of files in performance test (#15190) (Milos Djermanovic)
    • 1b87fa8 Build: add node v17 (#15193) (唯然)
    • 0fb3bb2 Docs: remove instanceof from keyword-spacing docs (#15180) (Milos Djermanovic)
    • 249a040 Upgrade: eslint-plugin-eslint-plugin to v4 (#15169) (Bryan Mishkin)
    • 35f3254 Docs: Describe range in rule docs (fixes #14162) (#15174) (Nicholas C. Zakas)
    • b5049c8 Chore: Update stale bot settings (#15173) (Nicholas C. Zakas)
    • 2b32f50 Docs: Fix typo in README.md (#15168) (Dmitriy Fishman)
    • dd58cd4 Chore: migrate master to main (#15062) (Nitesh Seram)
    • ec0f8e0 Chore: Add stale issue/PR checker (#15151) (Nicholas C. Zakas)
    • 2cfbd4b Docs: Update README team and sponsors (ESLint Jenkins)

    v8.0.1

    v8.0.0

    • 7d3f7f0 Upgrade: unfrozen @​eslint/eslintrc (fixes #15036) (#15146) (Brandon Mills)
    • 2174a6f Fix: require-atomic-updates property assignment message (fixes #15076) (#15109) (Milos Djermanovic)
    • f885fe0 Docs: add note and example for extending the range of fix (refs #13706) (#13748) (Milos Djermanovic)
    • 3da1509 Docs: Add jsdoc type annotation to sample rule (#15085) (Bryan Mishkin)
    • 68a49a9 Docs: Update Rollup Integrations (#15142) (xiaohai)
    • d867f81 Docs: Remove a dot from curly link (#15128) (Mauro Murru)

    ... (truncated)

    Changelog

    Sourced from eslint's changelog.

    v8.2.0 - November 5, 2021

    • cf5b6be chore: update @​eslint/eslintrc to avoid different versions of js-yaml (#15265) (Milos Djermanovic)
    • c9fefd2 feat: report class evaluation TDZ errors in no-use-before-define (#15134) (Milos Djermanovic)
    • 4fd7a6c perf: don't prepare a fix for valid code in key-spacing (#15239) (Milos Djermanovic)
    • c415c04 docs: Use string rule severity in CLI examples (#15253) (Kevin Partington)
    • 796587a build: upgrade eslint-release to v3.2.0 to support conventional commits (#15246) (Milos Djermanovic)
    • 12b627d docs: fix typo in working-with-rules.md (#15233) (Nitin Kumar)
    • a86ffc0 docs: fix broken anchor in configuration files (#15223) (Pierre Berger)
    • fda533c chore: update strip-ansi dependency (#15221) (Nitin Kumar)
    • ee8af5f docs: Link to unit tests from rule documentation (#15207) (Brandon Mills)
    • 1c0ca3c docs: add ci and perf tags for commit (#15215) (Nitin Kumar)
    • 67949bd ci: Remove Node 16 CI prerelease workaround (#14935) (Brandon Mills)

    v8.1.0 - October 22, 2021

    • 446b4b3 Docs: Update commit message format docs (#15200) (Nicholas C. Zakas)
    • d9d84a0 Fix: keyword-spacing conflict with space-infix-ops on > (fixes #14712) (#15172) (Milos Djermanovic)
    • a1f7ad7 Fix: allow baseConfig to extend preloaded plugin config (fixes #15079) (#15187) (Milos Djermanovic)
    • 3d370fb New: Add no-unused-private-class-members rule (fixes #14859) (#14895) (Tim van der Lippe)
    • e926b17 New: Add name to RuleTester (#15179) (Gareth Jones)
    • 90a5b6b Chore: improve performance of :function selector (#15181) (Milos Djermanovic)
    • 31af1c8 Chore: fix counting of files in performance test (#15190) (Milos Djermanovic)
    • 1b87fa8 Build: add node v17 (#15193) (唯然)
    • 0fb3bb2 Docs: remove instanceof from keyword-spacing docs (#15180) (Milos Djermanovic)
    • 249a040 Upgrade: eslint-plugin-eslint-plugin to v4 (#15169) (Bryan Mishkin)
    • 35f3254 Docs: Describe range in rule docs (fixes #14162) (#15174) (Nicholas C. Zakas)
    • b5049c8 Chore: Update stale bot settings (#15173) (Nicholas C. Zakas)
    • 2b32f50 Docs: Fix typo in README.md (#15168) (Dmitriy Fishman)
    • dd58cd4 Chore: migrate master to main (#15062) (Nitesh Seram)
    • ec0f8e0 Chore: Add stale issue/PR checker (#15151) (Nicholas C. Zakas)
    • 2cfbd4b Docs: Update README team and sponsors (ESLint Jenkins)

    v8.0.1 - October 13, 2021

    v8.0.0 - October 9, 2021

    • 7d3f7f0 Upgrade: unfrozen @​eslint/eslintrc (fixes #15036) (#15146) (Brandon Mills)
    • 2174a6f Fix: require-atomic-updates property assignment message (fixes #15076) (#15109) (Milos Djermanovic)
    • f885fe0 Docs: add note and example for extending the range of fix (refs #13706) (#13748) (Milos Djermanovic)
    • 3da1509 Docs: Add jsdoc type annotation to sample rule (#15085) (Bryan Mishkin)
    • 68a49a9 Docs: Update Rollup Integrations (#15142) (xiaohai)
    • d867f81 Docs: Remove a dot from curly link (#15128) (Mauro Murru)
    • 9f8b919 Sponsors: Sync README with website (ESLint Jenkins)
    • 4b08f29 Sponsors: Sync README with website (ESLint Jenkins)
    • ebc1ba1 Sponsors: Sync README with website (ESLint Jenkins)

    ... (truncated)

    Commits
    • 04e91b6 8.2.0
    • e7685f2 Build: changelog update for 8.2.0
    • cf5b6be chore: update @​eslint/eslintrc to avoid different versions of js-yaml (#15265)
    • c9fefd2 feat: report class evaluation TDZ errors in no-use-before-define (#15134)
    • 4fd7a6c perf: don't prepare a fix for valid code in key-spacing (#15239)
    • c415c04 docs: Use string rule severity in CLI examples (#15253)
    • 796587a build: upgrade eslint-release to v3.2.0 to support conventional commits (#15246)
    • 99b1fca Sponsors: Sync README with website
    • 3630211 Sponsors: Sync README with website
    • 12b627d docs: fix typo in working-with-rules.md (#15233)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps-dev): bump eslint-plugin-jest from 24.4.0 to 25.2.4

    build(deps-dev): bump eslint-plugin-jest from 24.4.0 to 25.2.4

    Bumps eslint-plugin-jest from 24.4.0 to 25.2.4.

    Release notes

    Sourced from eslint-plugin-jest's releases.

    v25.2.4

    25.2.4 (2021-11-08)

    Bug Fixes

    • prefer-to-be: preserve resolves and rejects modifiers (#980) (a1296bd)

    v25.2.3

    25.2.3 (2021-11-04)

    Bug Fixes

    • no-deprecated-functions: mark jest as an optional peer dependency (#970) (f468752)

    v25.2.2

    25.2.2 (2021-10-17)

    Bug Fixes

    • require-hook: check variables are either const or declarations (#959) (ce8cd61)

    v25.2.1

    25.2.1 (2021-10-15)

    Bug Fixes

    • expect-expect: don't error on it.todo & test.todo calls (#954) (d3cc0db)

    v25.2.0

    25.2.0 (2021-10-14)

    Features

    • expect-expect: support additionalTestBlockFunctions option (#850) (3b94c62)

    v25.1.0

    25.1.0 (2021-10-14)

    Features

    v25.0.6

    25.0.6 (2021-10-14)

    ... (truncated)

    Changelog

    Sourced from eslint-plugin-jest's changelog.

    25.2.4 (2021-11-08)

    Bug Fixes

    • prefer-to-be: preserve resolves and rejects modifiers (#980) (a1296bd)

    25.2.3 (2021-11-04)

    Bug Fixes

    • no-deprecated-functions: mark jest as an optional peer dependency (#970) (f468752)

    25.2.2 (2021-10-17)

    Bug Fixes

    • require-hook: check variables are either const or declarations (#959) (ce8cd61)

    25.2.1 (2021-10-15)

    Bug Fixes

    • expect-expect: don't error on it.todo & test.todo calls (#954) (d3cc0db)

    25.2.0 (2021-10-14)

    Features

    • expect-expect: support additionalTestBlockFunctions option (#850) (3b94c62)

    25.1.0 (2021-10-14)

    Features

    25.0.6 (2021-10-14)

    Bug Fixes

    • valid-expect-in-promise: allow expect.resolve & expect.reject (#948) (71b7e17), closes #947
    • valid-expect-in-promise: support await in arrays (#949) (a62130c)

    ... (truncated)

    Commits
    • 7833de4 chore(release): 25.2.4 [skip ci]
    • a1296bd fix(prefer-to-be): preserve resolves and rejects modifiers (#980)
    • 43e1722 chore(deps): update yarn to v3.1.0 (#975)
    • 84bc605 chore(deps): lock file maintenance
    • 1cfded5 chore(release): 25.2.3 [skip ci]
    • f468752 fix(no-deprecated-functions): mark jest as an optional peer dependency (#970)
    • 5403268 chore(deps): lock file maintenance
    • 59d86f5 chore(deps): lock file maintenance
    • 4762cce docs(prefer-lowercase-title): fix rule name in examples (#968)
    • e7a9a9b chore(deps): update dependency @​types/node to v16 (#967)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • php-parser integrity error after plugin-php update

    php-parser integrity error after plugin-php update

    I got an integrity error when I updated @prettier/plugin-php from 0.16.1 to 0.17.5.

    npm ERR! code EINTEGRITY
    npm ERR! sha512-zhM2ggKlHIj4BhpSzoj4zQWAOG7yi/pWdcIWPvyYwl2Na9BNpddbQCU/WBcZCwBZKT1rFbEYkeBXC1gmHZIY8Q== integrity checksum failed when using sha512: wanted sha512-zhM2ggKlHIj4BhpSzoj4zQWAOG7yi/pWdcIWPvyYwl2Na9BNpddbQCU/WBcZCwBZKT1rFbEYkeBXC1gmHZIY8Q== but got sha512-T4ypA7AQdplhTSawCk1jw4oIBF6ytumfagzmHyZpP8te0LF2kizXlrVKWfVyEf94cyTmO7QOAH73fhyiBk0eRQ==. (144420 bytes)
    

    It is the same issue as this one https://github.com/prettier/plugin-php/issues/1813 but I am not satisfied with the answer. What happens is:

    • I use @prettier/plugin-php 0.16.1, it installs the package php-parser 3.0.2 release from npm
    • I update @prettier/plugin-php to 0.17.5, this update and many others have set a Github url as the version to use instead of npm registry for php-parser, but still a 3.0.2 release
    • when running npm i, and even after deleting package-lock.json, I get the above error

    That's because npm builds a package-lock.json with the new version's hash from Github version of php-parser. Then it tries to install packages, but there is a mismatch between the hash of the package-lock version's (from Github) and the one already in node-modules (from npm registry), both 3.0.2 release.

    You need to delete node-modules to reinstall everything without mismatching cache.

    Can you please use an official npm release of php-parser instead of a Github custom version? It would prevent hashes comparisons from cached node-modules mismatches !

    opened by jebarjonet 1
  • build(deps-dev): bump prettier from 2.1.2 to 2.4.1

    build(deps-dev): bump prettier from 2.1.2 to 2.4.1

    Bumps prettier from 2.1.2 to 2.4.1.

    Release notes

    Sourced from prettier's releases.

    2.4.1

    🔗 Changelog

    2.4.0

    diff

    Release note

    2.3.2

    changelog

    v2.3.1

    Changelog

    2.3.0

    diff

    🔗 Release Notes

    2.2.1

    🔗 Changelog

    2.2.0

    diff

    🔗 Release Notes

    Changelog

    Sourced from prettier's changelog.

    2.4.1

    diff

    Fix wildcard syntax in @forward (#11482) (#11487 by @​niksy)

    // Input
    @forward "library" as btn-*;
    

    // Prettier 2.4.0 @​forward "library" as btn- *;

    // Prettier 2.4.1 @​forward "library" as btn-*;

    Add new CLI option debug-print-ast (#11514 by @​sosukesuzuki)

    A new --debug-print-ast CLI flag for debugging.

    2.4.0

    diff

    🔗 Release Notes

    2.3.2

    diff

    Fix failure on dir with trailing slash (#11000 by @​fisker)

    $ ls
    1.js  1.unknown
    

    Prettier 2.3.1

    $ prettier . -l 1.js $ prettier ./ -l [error] No supported files were found in the directory: "./".

    Prettier 2.3.2

    $ prettier ./ -l 1.js

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(deps-dev): bump strip-ansi from 6.0.0 to 7.0.1

    build(deps-dev): bump strip-ansi from 6.0.0 to 7.0.1

    Bumps strip-ansi from 6.0.0 to 7.0.1.

    Release notes

    Sourced from strip-ansi's releases.

    v7.0.1

    • Upgrade dependencies ed41f38

    https://github.com/chalk/strip-ansi/compare/v7.0.0...v7.0.1

    v7.0.0

    Breaking

    • Require Node.js 12 7cda68d
    • This package is now pure ESM. Please read this.

    https://github.com/chalk/strip-ansi/compare/v6.0.0...v7.0.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • PHP parser dependency makes the GitHub Actions fail

    PHP parser dependency makes the GitHub Actions fail

    Hi there,

    plugin-php depends on php-parser, which is locked to only git+ssh protocol rather than git+https+ssh which fails builds even though php-parser is a public repo.

    best

    Run npm ci
    npm ERR! Error while executing:
    npm ERR! /usr/bin/git ls-remote -h -t ssh://[email protected]/glayzzle/php-parser.git
    npm ERR! 
    npm ERR! Warning: Permanently added the RSA host key for IP address '140.82.112.4' to the list of known hosts.
    npm ERR! [email protected]: Permission denied (publickey).
    npm ERR! fatal: Could not read from remote repository.
    npm ERR! 
    npm ERR! Please make sure you have the correct access rights
    npm ERR! and the repository exists.
    npm ERR! 
    npm ERR! exited with error code: 128
    
    opened by kastriotkastrati 4
Releases(v0.17.6)
  • v0.17.6(Oct 30, 2021)

  • v0.17.5(Sep 10, 2021)

    • fix: workaround for extra end tag appearing when first line line has comment (#1764, thanks @cseufert!)
    • fix: don't duplicate php8 attributes (#1821, thanks @cseufert!)
    Source code(tar.gz)
    Source code(zip)
  • v0.17.4(Aug 31, 2021)

    • feat(php8-attribute): PHP 8 Attribute output (#1761, thanks @cseufert!)
    • fix class const ignore formatting bug (#1799, thanks @wdoug!)
    • dependency updates
    Source code(tar.gz)
    Source code(zip)
  • v0.17.3(Jul 27, 2021)

    • Update PHP parser to allow for dangling comma in use block (#1796, thanks @justim!)
    • Added PhpStorm/Jetbrains config guide (#1787, thanks @cseufert!)
    • Updated NodeJS versions to current stable releases (#1775, thanks @cseufert!)
    • chore: update prettier to 2.1.2 (#1774)
    • dependency updates
    Source code(tar.gz)
    Source code(zip)
  • v0.17.2(Jun 26, 2021)

    • feat(php8 hanging comma) Add support for haning comma for functions, closures, arrow functions and methods (#1769)
    • fix(php8): non-capturing exception catches (#1763)
    Source code(tar.gz)
    Source code(zip)
  • v0.17.1(Jun 15, 2021)

  • v0.17.0(Jun 14, 2021)

    This release adds partial support for PHP8 :tada:

    • feat: PHP8 Promoted Props / Match Statement / Throw Statement / Union Types (#1753, thanks @cseufert!)
    • feat: add support for named arguments and nullsafepropertylookup (php8) (#1656)
    • dependency updates
    Source code(tar.gz)
    Source code(zip)
  • v0.16.3(May 13, 2021)

  • v0.16.2(Mar 19, 2021)

  • v0.16.1(Dec 12, 2020)

  • v0.16.0(Nov 12, 2020)

    • feat: Convert single quotes to double quotes (#1254 / #1582, thanks @utkarshgupta137!)
    • fix: comment position in anonymous class (#1580)
    • fix: space after anonymous class keyword (#1579)
    Source code(tar.gz)
    Source code(zip)
  • v0.15.2(Oct 26, 2020)

  • v0.15.1(Oct 17, 2020)

  • v0.15.0(Oct 4, 2020)

  • v0.14.3(Jul 25, 2020)

  • v0.14.2(May 28, 2020)

  • v0.14.1(May 20, 2020)

  • v0.14.0(Mar 31, 2020)

    Breaking change

    This release introduces the new option phpVersion. Depending on the options you're using, the upgrade requires some changes to your configuration:

    • phpVersion: This new option allows the plugin to produce output which is optimized for the PHP version you're running. The following values are supported:

      • 7.1, 7.0, 5.6, 5.5, 5.4: Since our formatting doesn't change between these versions, all of them are equivalent. This category is used by default.
      • 7.2: Print trailing commas in "use"
      • 7.3, 7.4: Print trailing commas in function calls, flexible heredoc/nowdoc printing
      • 5.3 and below: Don't force array shorthand notation
    • trailingCommaPHP: All options except none and all have been removed and the option now requires a Boolean value. If you've been using a setting like php7.2 before, change it to true and set phpVersion to 7.2.

    For more information please see #1280.

    Features

    This release adds support for PHP 7.3 and 7.4 :tada:

    • feat: add phpVersion option (#1286)
    • fix: remove extra linebreak in nowdoc (#1287)
    • feat: deterministic printing of array shortform (#1289)
    • fix: array entry byref printing (#1293)
    • feat: numeric literal separator support (#1294)
    • fix: remove extraneous open tag for inline nodes following comments (#1338, thanks @jodysimpson)
    • fix: correctly handle right-associative ?? operator (#1345)
    • feat: print flexible heredoc/nowdoc for PHP >= 7.3 (#1291)
    • fix: Support static & return-typed arrow functions (#1362, thanks @adamaveray)
    Source code(tar.gz)
    Source code(zip)
  • v0.13.0(Feb 20, 2020)

    • feat: update parser and add arrow function support (#1277)

    • fix(switch): inconsistent line spreading (#1256)

    • fix(retif): correct parentheses for bin in retif (#1257)

    • fix: shorthand echo as first node (#1266)

    • fix: flexible heredoc/nowdoc syntax (#1269)

    • fix: namespace followed by inline node (#1265)

    • fix: insert pragma when first docblock mid-file (#1310)

    • dependency updates

    Source code(tar.gz)
    Source code(zip)
  • v0.12.0(Dec 22, 2019)

  • v0.11.1(May 28, 2019)

    Breaking changes

    The trailingComma option has been renamed to trailingCommaPHP to avoid collisions with Prettier for JS (https://github.com/prettier/plugin-php/pull/1059).

    Source code(tar.gz)
    Source code(zip)
  • v0.10.2(Feb 18, 2019)

  • v0.9.0(Oct 15, 2018)

  • v0.8.0(Oct 3, 2018)

Owner
Prettier
Prettier is an opinionated code formatter
Prettier
SpawnInLobby Pocketmine-MP plugin. With this plugin the player will always join the game at the default world spawn point

SpawnInLobby Pocketmine-MP plugin. With this plugin the player will always join the game at the default world spawn point

null 1 Nov 9, 2021
Ratio plugin is a luck plugin. The more lucky you are, the more you win!

Ratio Ratio plugin is a luck plugin. The more lucky you are, the more you win Features When you break a block (Cobblestone), it gives/puts you somethi

Ali Tura Çetin 1 Nov 24, 2021
actionMaster is a new faction plugin that aims at flexibility and customization of the plugin by the user and the developers.

FactionMaster is a new faction plugin that aims at flexibility and customization of the plugin by the user and the developers. It includes all the basic functionality of a faction plugin and data storage in MySQL or SQLITE. This is done by adding an extension system and a translation system. FactionMaster has a will of accessibility to the players and especially not to have to remember a lot of commands to play, all is done via interface.

FactionMaster 13 Nov 9, 2021
This is a plugin written in PHP programming language and running on the PocketMine platform that works stably on the API 3.25.0 platform

This is a plugin written in PHP programming language and running on the PocketMine platform that works stably on the API 3.25.0 platform. It allows you to hear the sound

Thành Nhân 6 Nov 4, 2021
This repository contains the codebase PHP bridge using RoadRunner Jobs plugin.

RoadRunner Jobs Plugin This repository contains the codebase PHP bridge using RoadRunner Jobs plugin. Installation To install application server and J

Spiral Scout 9 Nov 17, 2021
jMQTT is a plugin for Jeedom aiming to connect Jeedom to an MQTT broker to subscribe and publish messages

jMQTT is a plugin for Jeedom aiming to connect Jeedom to an MQTT broker to subscribe and publish messages

null 15 Nov 26, 2021
Formcreator is a plugin which allow creation of custom forms of easy access

Formcreator is a plugin which allow creation of custom forms of easy access. At the same time, the plugin allow the creation of one or more tickets when the form is filled.

GLPI plugins 111 Nov 23, 2021
vPOS Official Wordpres WooCommerce Plugin

vPOS - WooCommerce The number #1 payment solution in Angola This plugin currently works for the solutions listed below: EMIS GPO (Multicaixa Express)

vPOS 7 Nov 16, 2021
Moodle plugin to limit the access to course content according to the user level in Block Game.

Moodle plugin to limit the access to course content according to the user level in Block Game.

null 3 Jul 9, 2021
A PocketMine/Altay Plugin to morph yourself into a block

BlockMorph A PocketMine/Altay Plugin to morph yourself into a block Command To morph yourself into a block use this command: /blockmorph [BlockID|Bloc

Matze 6 Oct 8, 2021
A useful PocketMine-MP plugin that allows you to create crates in-game!

ComplexCrates A useful PocketMine-MP plugin that allows you to create crates in-game! Commands Main command: /crate Sub commands: create

Oğuzhan 8 Aug 26, 2021
⚙️ A WordPress plugin to set WordPress options from a .env file.

dotenv A WordPress plugin to set WordPress options from a .env file. Any WPENV_ prefixed variables in the .env will be used to override the WordPress

Brad Parbs 12 Oct 6, 2021
⚡️ A WordPress plugin to quickly send a 404 for missing static files

Static 404 A WordPress plugin to quickly send a 404 for missing static files. Quickly output a 404 for static files that aren't found, rather than loa

Brad Parbs 25 Oct 6, 2021
A plugin for working with popular money libraries in Pest

This package is a plugin for Pest PHP. It allows you to write tests against monetary values provided by either brick/money or moneyphp/money using the same declarative syntax you're used to with Pest's expectation syntax.

Luke Downing 17 Oct 1, 2021
A plugin to add more blocks to PocketMine

This plugin aims to add all blocks not included in PocketMine. As of right now the ExtendedBlocks plugin is required to add blocks with IDs above 255.

xSuper 24 Nov 19, 2021
This plugin allows you to create many-to-many relationships between pages in Kirby and synchronizes them on both sides.

Kirby 3 Many To Many Field This plugin allows you to create many-to-many relationships between pages in Kirby.

Jonas Holfeld 37 Oct 27, 2021
✨An Ultimate NPC plugin made by brokiem for PocketMine-MP.

SimpleNPC An Ultimate NPC plugin made by brokiem for PocketMine-MP. ✨ Features Migration from Slapper supported! ✔ Right click to interact! ✔ NPC can

broki 46 Nov 23, 2021
Plugin to add items

CustomItem Plugin to add items No more item limit ?? Your imagnition the only barrier ?? New id new items ?? How to make texture for new item 1• Creat

Refaltor 17 Aug 30, 2021
Plot and protection plugin for PocketMine-MP

MyPlot Create, manage, and build in protected plots. Keep your builds safe from griefers! Official MyPlot precompiled builds can be found on Poggit at

Jason 90 Nov 15, 2021