GithubHelp home page GithubHelp logo

amir9480 / vscode-laravel-extra-intellisense Goto Github PK

View Code? Open in Web Editor NEW
3.1K 15.0 50.0 3.05 MB

This extension adds extra autocompletion for laravel projects to VSCode.

Home Page: https://marketplace.visualstudio.com/items?itemName=amiralizadeh9480.laravel-extra-intellisense

License: MIT License

TypeScript 98.20% JavaScript 1.80%
vscode vscode-extension laravel autocomplete intellisense vscode-for-laravel

vscode-laravel-extra-intellisense's Introduction

Laravel Extra Intellisense

This extension provides Laravel routes, views and ... autocomplete for VSCode.

Autocomplete

Route names and route parameters

Routes

Views and variables

Views

Configs

Configs

Translations and translation parameters

Translations

Laravel mix function

Mix

Validation rules

Validation rules

View sections and stacks

View sections

Env

env

Route Middlewares

Middlewares

Configuration

LaravelExtraIntellisense.customValidationRules:

Your custom validation rules snippets.

Example:

"LaravelExtraIntellisense.customValidationRules": {
    "mobile": "mobile",
    "distance_gt": "distance_gt:${0:1km}"
}

LaravelExtraIntellisense.phpCommand

Command to run PHP codes to interact with your Laravel application.

Default: php -r \"{code}\"

Note: {code} is PHP code generated by extension and should be wrapped with "".

LaravelExtraIntellisense.basePath

Base path of your Laravel application. useful if your Laravel project is not at the root of you project directory.

If the base path starts with . (like ./src) it will be considered a relative path otherwise it will be considered an absolute path.

LaravelExtraIntellisense.basePathForCode

Same as LaravelExtraIntellisense.basePath but this one using for require_once in generated PHP codes.

LaravelExtraIntellisense.viewDirectorySeparator

You also can use / instead of . as directory separator for view autocomplete.

LaravelExtraIntellisense.modelsPaths

Array of paths including your models. (Default: ["app", "app/Models"])

LaravelExtraIntellisense.modelVariables

Variable names that should provide autocomplete with specific model class. Finding variable type (especially in views) is not easy so you need to manually define variable types.

Example: The Following setting provides auto completion each time you type discountedProduct-> with App\Models\Product model attributes.

"LaravelExtraIntellisense.modelVariables": {
    "discountedProduct": "App\\Models\\Product"
}

All camelCase and snake_case of model names provide autocomplete by default. For example productDiscount and product_discount provides member autocomplete from App\Models\ProductDiscount model.

LaravelExtraIntellisense.modelAttributeCase

Change model attribute names case to snake_case, camelCase or default. (Default = default)

LaravelExtraIntellisense.modelAccessorCase

Change model accessor names case to snake_case, camelCase or default. (Default = snake)

LaravelExtraIntellisense.disableBlade

If you want to disable blade directives autocomplete set this to true.

LaravelExtraIntellisense.disableAuth

If you want to disable authorization autocomplete set this to true

Sample config to use docker

This is a simple configuration to use via Laradock.

"LaravelExtraIntellisense.phpCommand": "docker exec -w /var/www/your-project -u laradock laradock_workspace_1 php -r \"{code}\"",
"LaravelExtraIntellisense.basePathForCode": "/var/www/your-project"

Another sample for Laravel Sail.

"LaravelExtraIntellisense.basePathForCode": "/var/www/html",
"LaravelExtraIntellisense.phpCommand": "docker-compose exec -w /var/www/html YOUR_SERVICE_NAME php -r \"{code}\""

Default YOUR_SERVICE_NAME for Laravel sail is laravel.test.

It is possible to use this extension with other docker images or even other virtual machines.

Security Note

This extension runs your Laravel application automatically and periodically to get the information needed to provide autocomplete.

So if you have any unknown errors in your log make sure the extension not causing it.

Also if you writing any sensitive code in your service providers, disable the extension temporarily to prevent unwanted application executing.

Release Notes

0.6.x

  • Add blade directives autocomplete (#45).
  • Add change case option for model attributes (#46).
  • Add support workspace with multiple directory (#54).
  • Add nested translations support (#54).

0.5.x

  • Add asset support.
  • Add Model attributes autocomplete (Beta).

0.4.x

  • Add Docker support.

0.3.x

  • env autocomplete added.
  • Route middleware autocomplete added.
  • Nested stack and section support added.
  • Function parser improvement.
  • Performance improvement.
  • Bug fixes (#25, #26)
  • Add configuration for views separator (#22).
  • can, cannot autocomplete.
  • Fix #18.

0.2.x

  • Validation rules autocomplete added.
  • works with Validator class, validate functions and inside request classes.
  • markdown function added to view functions for autocomplete.
  • Using file watcher instead of save event. Better change detect for view autocomplete.
  • json translation autocomplete added.
  • Auto-Retry removed from all providers. causes some performance issues.
  • Disable logging added.
  • View parameters autocomplete.
  • Route autocomplete bug in linux fixed.
  • Blade section autocomplete added.
  • Blade stack autocomplete added.
  • Duplicate section autocomplete items fixed.
  • PHP commands converted to async functions to prevent unresponsive extension host error.

0.1.x

  • Fix problems with linux.
  • Add translation autocomplete.
  • Improved providers.
  • Add mix autocomplete.
  • Performance improvments.
  • Route action autocomplete added. Route::get, *Route::post, ... autocompletes controller actions inside app\Http\Controllers.

0.0.x

  • Config autocomplete added.
  • Route bug fix.
  • View names with namespaces ready to use.
  • View functions autocompelete added.
  • Blade bug fix.
  • Add route autocomplete.

Recommended extensions

Credits

vscode-laravel-extra-intellisense's People

Contributors

amir9480 avatar davidreyg avatar jdombroski avatar macbookandrew avatar mwkcoding avatar tuytoosh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vscode-laravel-extra-intellisense's Issues

Explain or document why the extension attempts to run PHP/Laravel every 1 minute

Hi there,

My laravel.log is showing an exception for the absence of Memcached and a syntax issue relating to PHP 7.3.

I've just been through many hours of debugging on a Laravel 8 app and done the following:

  • Cycled Telescope installation.
  • Installed DebugBar (which had no insights).
  • Completely removed homebrew, deleting hundreds of binaries, many of which need to be reinstalled.
  • Re-configured my PHP stack three or four times in various unrecoverable ways.
  • Re-configured MAMP in various ways.

After much hair pulling, I have finally realised it is this extension running laravel/cli every minute on the console, using what seems to be configured as the default Mac OS PHP (7.3, without Memcached).

I have realised this on my own, after debugging almost everything to do with my known stack. I did not for a moment think it would be the fault of an extension which provides autocomplete and syntax help in my IDE!

Can you please write some notes within either the readme or make it incredibly obvious within the extension that it is polling the Laravel CLI every 1 minute?

Please can you also explain what the reason for this is, as it is likely that others will want to know why their app is being executed without their knowledge.

This is otherwise a great extension and I enjoy using it, but this one niggle has had me wondering whether I was going mad for far too long. Anything you can do to alleviate this would be very much appreciated! 👍

Extension issue

  • Issue Type: Bug
  • Extension Name: laravel-extra-intellisense
  • Extension Version: 0.6.1
  • OS Version: Windows_NT x64 10.0.19042
  • VS Code version: 1.57.1

⚠️ We have written the needed data into your clipboard. Please paste! ⚠️

Scopes

Would be nice to have scope query intellisense.

Not working

I have installed this, but its not working as shown in gif. are there any other dependencies to this extension in vscode?

Development Guide for contribution

I’d like to contribute some features but I am unsure what is the best way to setup my VSCode for local development. Any instructions?

Call to undefined method Illuminate\Log\Writer::setHandlers()

I'm getting this error logged (in sentry) every 30 seconds 🤔 :

Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined method Illuminate\Log\Writer::setHandlers()
#14 Command line code(1): VscodeLaravelExtraIntellisenseProvider::boot
#13 [internal](0): call_user_func_array
#12 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}
#11 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::callBoundMethod
#10 /vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::call
#9 /vendor/laravel/framework/src/Illuminate/Container/Container.php(549): Illuminate\Container\Container::call
#8 /vendor/laravel/framework/src/Illuminate/Foundation/Application.php(792): Illuminate\Foundation\Application::bootProvider
#7 /vendor/laravel/framework/src/Illuminate/Foundation/Application.php(775): Illuminate\Foundation\Application::Illuminate\Foundation\{closure}
#6 [internal](0): array_walk
#5 /vendor/laravel/framework/src/Illuminate/Foundation/Application.php(776): Illuminate\Foundation\Application::boot
#4 /vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php(17): Illuminate\Foundation\Bootstrap\BootProviders::bootstrap
#3 /vendor/laravel/framework/src/Illuminate/Foundation/Application.php(213): Illuminate\Foundation\Application::bootstrapWith
#2 /vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(296): Illuminate\Foundation\Console\Kernel::bootstrap
#1 /vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(119): Illuminate\Foundation\Console\Kernel::handle
#0 Command line code(1): null

Blade Directive Autocomplete Not Working

I can't seem to get the autocomplete for blade directives to work. When typing @f I would expect it to show a list of blade directives beginning with f, like for, foreach, forelse, etc.

Here are my installed VSCode plugins (I disabled all other plugins to try and isolate the problem):

  • laravel Extra Intellisense
  • Livewire Language Support
  • PHP Intelephense

The following are my settings:

{
    "atomKeymap.promptV3Features": true,
    "window.zoomLevel": 2,
    "window.nativeTabs": true,
    "git.autofetch": true,
    "terminal.integrated.fontFamily": "MesloLGS NF",
    "editor.minimap.showSlider": "always",
    "workbench.editor.tabCloseButton": "left",
    "editor.minimap.renderCharacters": false,
    "editor.suggest.localityBonus": true,
    "git.confirmSync": false,
    "editor.wordWrapColumn": 120,
    "editor.fontLigatures": true,
    "editor.rulers": [
        80,
        120
    ],
    "sync.gist": "ed58e9e1c9087676306c374657b4b434",
    "git.enableSmartCommit": true,
    "terminal.integrated.shell.windows": "/bin/zsh",
    "editor.minimap.maxColumn": 80,
    "workbench.iconTheme": "file-icons",
    "php.validate.run": "onType",
    "git.allowForcePush": true,
    "git.showPushSuccessNotification": true,
    "editor.wrappingIndent": "indent",
    "editor.cursorSmoothCaretAnimation": true,
    "editor.parameterHints.enabled": false,
    "emmet.excludeLanguages": [
        "markdown",
        "php"
    ],
    "javascript.format.placeOpenBraceOnNewLineForControlBlocks": true,
    "sync.forceUpload": true,
    "editor.autoClosingBrackets": "always",
    "editor.acceptSuggestionOnEnter": "off",
    "editor.renderWhitespace": "none",
    "terminal.integrated.shell.osx": "/bin/zsh",
    "terminal.integrated.shell.linux": "/bin/zsh",
    "terminal.integrated.automationShell.linux": "/bin/zsh",
    "terminal.explorerKind": "external",
    "terminal.integrated.drawBoldTextInBrightColors": false,
    // "editor.formatOnPaste": true,
    "editor.formatOnType": true,
    "[html]": {
        "editor.defaultFormatter": "vscode.html-language-features"
    },
    "html.format.endWithNewline": true,
    "html.format.indentInnerHtml": true,
    "html.format.indentHandlebars": true,
    "html.format.wrapAttributes": "force",

    /***************************************************************************
    * Less is more ...
    ***************************************************************************/
    // "workbench.activityBar.visible": false,
    // "workbench.sideBar.location": "right",
    // "workbench.statusBar.visible": false,
    // "editor.minimap.enabled": false,
    // "workbench.editor.showTabs": false,

    /***************************************************************************
    * Better Defaults
    ***************************************************************************/
    "diffEditor.ignoreTrimWhitespace": false,
    "diffEditor.renderSideBySide": true,
    "editor.copyWithSyntaxHighlighting": true,
    "editor.detectIndentation": true,
    "editor.emptySelectionClipboard": false,
    "editor.multiCursorModifier": "ctrlCmd",
    "editor.snippetSuggestions": "none",
    "files.insertFinalNewline": true,
    "files.trimFinalNewlines": true,
    "files.trimTrailingWhitespace": true,
    "window.nativeFullScreen": false,
    "window.newWindowDimensions": "inherit",
    "workbench.editor.enablePreview": false,

    /***************************************************************************
    * Hide Everything
    ***************************************************************************/
    "workbench.activityBar.visible": true,
    // "workbench.sideBar.location": "right",
    // "workbench.statusBar.visible": false,
    "workbench.editor.showTabs": false,
    "editor.renderIndentGuides": false,
    "editor.minimap.enabled": false,
    // "editor.lineNumbers": "off",

    /***************************************************************************
    * Silence the Noise
    ***************************************************************************/
    // "breadcrumbs.enabled": false,
    // "scm.diffDecorations": "none",
    // "editor.hover.enabled": false,
    // "editor.matchBrackets": "never",
    "editor.matchBrackets": "always",
    "workbench.tips.enabled": false,
    // "editor.colorDecorators": false,
    // "git.decorations.enabled": false,
    "workbench.startupEditor": "none",
    "editor.lightbulb.enabled": true,
    "editor.selectionHighlight": false,
    "editor.overviewRulerBorder": false,
    "editor.renderLineHighlight": "none",
    "editor.occurrencesHighlight": false,
    // "problems.decorations.enabled": false,
    "editor.renderControlCharacters": false,
    "editor.hideCursorInOverviewRuler": true,
    "editor.gotoLocation.multipleReferences": "goto",
    "editor.gotoLocation.multipleDefinitions": "goto",
    "editor.gotoLocation.multipleDeclarations": "goto",
    "workbench.editor.enablePreviewFromQuickOpen": false,
    "editor.gotoLocation.multipleImplementations": "goto",
    "editor.gotoLocation.multipleTypeDefinitions": "goto",

    /***************************************************************************
    * Typography
    ***************************************************************************/
    // "workbench.colorTheme": "Palenight Theme",
    "workbench.colorTheme": "Ayu Light",
    // "editor.fontFamily": "MonoLisa",
    "editor.fontFamily": "\"Operator Mono Lig\"",
    "editor.fontSize": 15,
    "editor.lineHeight": 45,
    "editor.suggestFontSize": 15,
    "editor.suggestLineHeight": 28,
    // "terminal.integrated.fontSize": 15,
    "terminal.integrated.fontSize": 12,
    // "terminal.integrated.lineHeight": 1.5,
    "terminal.integrated.lineHeight": 1,

    /***************************************************************************
    * Search Parameters
    ***************************************************************************/
    "search.useIgnoreFiles": false,
    "search.exclude": {
        // Hide everything in /vendor, except "laravel" and "livewire" folders.
        "**/vendor/{[^l],?[^ai]}*": true,
        // Hide everything in /public, except "index.php"
        "**/public/{[^i],?[^n]}*": true,
        "**/node_modules": true,
        "**/dist": true,
        "**/_ide_helper.php": true,
        "**/composer.lock": true,
        "**/package-lock.json": true,
        "storage": true,
        ".phpunit.result.cache": true
    },

    /***************************************************************************
    * Search Parameters
    ***************************************************************************/
    // Include "-" in word selection.
    // "editor.wordSeparators": "`~!@#%^&*()=+[{]}\\|;:'\",.<>/?",
    "editor.wordSeparators": "`~!@#%^&*()-=+[{]}\\|;:'\",.<>/?",
    "emmet.includeLanguages": {
        "blade": "html",
        "vue-html": "html",
        "vue": "html"
    },
    "files.associations": {
        ".blade.php": "php",
        ".php_cs": "php",
        ".php_cs.dist": "php"
    },

    /***************************************************************************
    * PHP
    ***************************************************************************/
    "php.suggest.basic": false,
    "files.autoSave": "off",
    "vetur.format.styleInitialIndent": true,
    "vetur.format.scriptInitialIndent": true,
    "phpcs.executablePath": "tools/phpcs",
    "phpstan.path": "tools/phpstan",
    "phan.phanScriptPath": "/usr/local/bin/phan",
    "better-phpunit.phpunitBinary": "/usr/local/bin/phpunit",
    "phpmd.command": "tools/phpmd",
    "phpParameterHint.hintOnlyLine": true,
    "phpParameterHint.hintTypeName": 1,
    "phpParameterHint.onChange": true,
    "phpParameterHint.saveDelay": 0,
    "references.preferredLocation": "view",
    "namespaceResolver.showMessageOnStatusBar": true,
    "namespaceResolver.sortAlphabetically": true,
    "namespaceResolver.sortOnSave": true,
    "phpParameterHint.collapseHintsWhenEqual": true,
    "phpParameterHint.collapseTypeWhenEqual": true,
    "html.format.wrapLineLength": 80,
    "phan.enableCompletion": false,
    "phan.enableGoToDefinition": false,
    "phan.enableHover": false,
    "phpmd.rules": "phpmd.xml",
    "extensions.ignoreRecommendations": false,
    "git.enableCommitSigning": true,
    "phpstan.memoryLimit": "1024M",
    "todo-tree.highlights.enabled": false,
    "enableTelemetry": true,
    "phpcs.showSources": true,
    "headwind.defaultSortOrder": [
        "m-0",
        "m-1",
        "m-2",
        "m-3",
        "m-4",
        "m-5",
        "m-6",
        "m-8",
        "m-10",
        "m-12",
        "m-16",
        "m-20",
        "m-24",
        "m-32",
        "m-40",
        "m-48",
        "m-56",
        "m-64",
        "m-auto",
        "m-px",
        "mx-0",
        "mx-1",
        "mx-2",
        "mx-3",
        "mx-4",
        "mx-5",
        "mx-6",
        "mx-8",
        "mx-10",
        "mx-12",
        "mx-16",
        "mx-20",
        "mx-24",
        "mx-32",
        "mx-40",
        "mx-48",
        "mx-56",
        "mx-64",
        "mx-auto",
        "mx-px",
        "my-0",
        "my-1",
        "my-2",
        "my-3",
        "my-4",
        "my-5",
        "my-6",
        "my-8",
        "my-10",
        "my-12",
        "my-16",
        "my-20",
        "my-24",
        "my-32",
        "my-40",
        "my-48",
        "my-56",
        "my-64",
        "my-auto",
        "my-px",
        "mt-0",
        "mt-1",
        "mt-2",
        "mt-3",
        "mt-4",
        "mt-5",
        "mt-6",
        "mt-8",
        "mt-10",
        "mt-12",
        "mt-16",
        "mt-20",
        "mt-24",
        "mt-32",
        "mt-40",
        "mt-48",
        "mt-56",
        "mt-64",
        "mt-auto",
        "mt-px",
        "mb-0",
        "mb-1",
        "mb-2",
        "mb-3",
        "mb-4",
        "mb-5",
        "mb-6",
        "mb-8",
        "mb-10",
        "mb-12",
        "mb-16",
        "mb-20",
        "mb-24",
        "mb-32",
        "mb-40",
        "mb-48",
        "mb-56",
        "mb-64",
        "mb-auto",
        "mb-px",
        "ml-0",
        "ml-1",
        "ml-2",
        "ml-3",
        "ml-4",
        "ml-5",
        "ml-6",
        "ml-8",
        "ml-10",
        "ml-12",
        "ml-16",
        "ml-20",
        "ml-24",
        "ml-32",
        "ml-40",
        "ml-48",
        "ml-56",
        "ml-64",
        "ml-auto",
        "ml-px",
        "mr-0",
        "mr-1",
        "mr-2",
        "mr-3",
        "mr-4",
        "mr-5",
        "mr-6",
        "mr-8",
        "mr-10",
        "mr-12",
        "mr-16",
        "mr-20",
        "mr-24",
        "mr-32",
        "mr-40",
        "mr-48",
        "mr-56",
        "mr-64",
        "mr-auto",
        "mr-px",
        "-m-0",
        "-m-1",
        "-m-2",
        "-m-3",
        "-m-4",
        "-m-5",
        "-m-6",
        "-m-8",
        "-m-10",
        "-m-12",
        "-m-16",
        "-m-20",
        "-m-24",
        "-m-32",
        "-m-40",
        "-m-48",
        "-m-56",
        "-m-64",
        "-m-px",
        "-mx-0",
        "-mx-1",
        "-mx-2",
        "-mx-3",
        "-mx-4",
        "-mx-5",
        "-mx-6",
        "-mx-8",
        "-mx-10",
        "-mx-12",
        "-mx-16",
        "-mx-20",
        "-mx-24",
        "-mx-32",
        "-mx-40",
        "-mx-48",
        "-mx-56",
        "-mx-64",
        "-mx-px",
        "-my-0",
        "-my-1",
        "-my-2",
        "-my-3",
        "-my-4",
        "-my-5",
        "-my-6",
        "-my-8",
        "-my-10",
        "-my-12",
        "-my-16",
        "-my-20",
        "-my-24",
        "-my-32",
        "-my-40",
        "-my-48",
        "-my-56",
        "-my-64",
        "-my-px",
        "-mt-0",
        "-mt-1",
        "-mt-2",
        "-mt-3",
        "-mt-4",
        "-mt-5",
        "-mt-6",
        "-mt-8",
        "-mt-10",
        "-mt-12",
        "-mt-16",
        "-mt-20",
        "-mt-24",
        "-mt-32",
        "-mt-40",
        "-mt-48",
        "-mt-56",
        "-mt-64",
        "-mt-px",
        "-mb-0",
        "-mb-1",
        "-mb-2",
        "-mb-3",
        "-mb-4",
        "-mb-5",
        "-mb-6",
        "-mb-8",
        "-mb-10",
        "-mb-12",
        "-mb-16",
        "-mb-20",
        "-mb-24",
        "-mb-32",
        "-mb-40",
        "-mb-48",
        "-mb-56",
        "-mb-64",
        "-mb-px",
        "-ml-0",
        "-ml-1",
        "-ml-2",
        "-ml-3",
        "-ml-4",
        "-ml-5",
        "-ml-6",
        "-ml-8",
        "-ml-10",
        "-ml-12",
        "-ml-16",
        "-ml-20",
        "-ml-24",
        "-ml-32",
        "-ml-40",
        "-ml-48",
        "-ml-56",
        "-ml-64",
        "-ml-px",
        "-mr-0",
        "-mr-1",
        "-mr-2",
        "-mr-3",
        "-mr-4",
        "-mr-5",
        "-mr-6",
        "-mr-8",
        "-mr-10",
        "-mr-12",
        "-mr-16",
        "-mr-20",
        "-mr-24",
        "-mr-32",
        "-mr-40",
        "-mr-48",
        "-mr-56",
        "-mr-64",
        "-mr-px",
        "p-0",
        "p-1",
        "p-2",
        "p-3",
        "p-4",
        "p-5",
        "p-6",
        "p-8",
        "p-10",
        "p-12",
        "p-16",
        "p-20",
        "p-24",
        "p-32",
        "p-40",
        "p-48",
        "p-56",
        "p-64",
        "p-px",
        "px-0",
        "px-1",
        "px-2",
        "px-3",
        "px-4",
        "px-5",
        "px-6",
        "px-8",
        "px-10",
        "px-12",
        "px-16",
        "px-20",
        "px-24",
        "px-32",
        "px-40",
        "px-48",
        "px-56",
        "px-64",
        "px-px",
        "py-0",
        "py-1",
        "py-2",
        "py-3",
        "py-4",
        "py-5",
        "py-6",
        "py-8",
        "py-10",
        "py-12",
        "py-16",
        "py-20",
        "py-24",
        "py-32",
        "py-40",
        "py-48",
        "py-56",
        "py-64",
        "py-px",
        "pt-0",
        "pt-1",
        "pt-2",
        "pt-3",
        "pt-4",
        "pt-5",
        "pt-6",
        "pt-8",
        "pt-10",
        "pt-12",
        "pt-16",
        "pt-20",
        "pt-24",
        "pt-32",
        "pt-40",
        "pt-48",
        "pt-56",
        "pt-64",
        "pt-px",
        "pb-0",
        "pb-1",
        "pb-2",
        "pb-3",
        "pb-4",
        "pb-5",
        "pb-6",
        "pb-8",
        "pb-10",
        "pb-12",
        "pb-16",
        "pb-20",
        "pb-24",
        "pb-32",
        "pb-40",
        "pb-48",
        "pb-56",
        "pb-64",
        "pb-px",
        "pl-0",
        "pl-1",
        "pl-2",
        "pl-3",
        "pl-4",
        "pl-5",
        "pl-6",
        "pl-8",
        "pl-10",
        "pl-12",
        "pl-16",
        "pl-20",
        "pl-24",
        "pl-32",
        "pl-40",
        "pl-48",
        "pl-56",
        "pl-64",
        "pl-px",
        "pr-0",
        "pr-1",
        "pr-2",
        "pr-3",
        "pr-4",
        "pr-5",
        "pr-6",
        "pr-8",
        "pr-10",
        "pr-12",
        "pr-16",
        "pr-20",
        "pr-24",
        "pr-32",
        "pr-40",
        "pr-48",
        "pr-56",
        "pr-64",
        "pr-px",
        "w-0",
        "w-1",
        "w-2",
        "w-3",
        "w-4",
        "w-5",
        "w-6",
        "w-8",
        "w-10",
        "w-12",
        "w-16",
        "w-20",
        "w-24",
        "w-32",
        "w-40",
        "w-48",
        "w-56",
        "w-64",
        "w-auto",
        "w-px",
        "w-1/2",
        "w-1/3",
        "w-2/3",
        "w-1/4",
        "w-2/4",
        "w-3/4",
        "w-1/5",
        "w-2/5",
        "w-3/5",
        "w-4/5",
        "w-1/6",
        "w-2/6",
        "w-3/6",
        "w-4/6",
        "w-5/6",
        "w-1/12",
        "w-2/12",
        "w-3/12",
        "w-4/12",
        "w-5/12",
        "w-6/12",
        "w-7/12",
        "w-8/12",
        "w-9/12",
        "w-10/12",
        "w-11/12",
        "w-full",
        "w-screen",
        "h-0",
        "h-1",
        "h-2",
        "h-3",
        "h-4",
        "h-5",
        "h-6",
        "h-8",
        "h-10",
        "h-12",
        "h-16",
        "h-20",
        "h-24",
        "h-32",
        "h-40",
        "h-48",
        "h-56",
        "h-64",
        "h-auto",
        "h-px",
        "h-full",
        "h-screen",
        "max-w-xs",
        "max-w-sm",
        "max-w-md",
        "max-w-lg",
        "max-w-xl",
        "max-w-2xl",
        "max-w-3xl",
        "max-w-4xl",
        "max-w-5xl",
        "max-w-6xl",
        "max-w-full",
        "max-w-screen-sm",
        "max-w-screen-md",
        "max-w-screen-lg",
        "max-w-screen-xl",
        "max-h-full",
        "max-h-screen",
        "min-w-0",
        "min-w-full",
        "min-h-0",
        "min-h-full",
        "min-h-screen",


        "container",
        "box-border",
        "box-content",
        "static",
        "fixed",
        "absolute",
        "relative",
        "sticky",
        "inset-0",
        "inset-x-0",
        "inset-y-0",
        "inset-x-auto",
        "inset-y-auto",
        "inset-auto",
        "top-0",
        "bottom-0",
        "left-0",
        "right-0",
        "top-auto",
        "bottom-auto",
        "left-auto",
        "right-auto",
        "z-0",
        "z-10",
        "z-20",
        "z-30",
        "z-40",
        "z-50",
        "z-auto",
        "flex",
        "inline-flex",
        "grid",
        "inline-grid",
        "table-caption",
        "table-column",
        "table-column-group",
        "table-footer-group",
        "table-header-group",
        "table-row-group",
        "flex-row",
        "flex-row-reverse",
        "flex-col",
        "flex-col-reverse",
        "flex-no-wrap",
        "flex-wrap",
        "flex-wrap-reverse",
        "items-stretch",
        "items-start",
        "items-center",
        "items-end",
        "items-baseline",
        "content-start",
        "content-center",
        "content-end",
        "content-between",
        "content-around",
        "self-auto",
        "self-start",
        "self-center",
        "self-end",
        "self-stretch",
        "justify-start",
        "justify-center",
        "justify-end",
        "justify-between",
        "justify-around",
        "flex-1",
        "flex-auto",
        "flex-initial",
        "flex-none",
        "flex-grow",
        "flex-grow-0",
        "flex-shrink",
        "flex-shrink-0",
        "order-first",
        "order-last",
        "order-none",
        "order-1",
        "order-2",
        "order-3",
        "order-4",
        "order-5",
        "order-6",
        "order-7",
        "order-8",
        "order-9",
        "order-10",
        "order-11",
        "order-12",
        "visible",
        "invisible",
        "hidden",
        "block",
        "flow-root",
        "inline-block",
        "inline",
        "table",
        "table-row",
        "table-cell",
        "clearfix",
        "float-left",
        "float-right",
        "float-none",
        "clear-right",
        "clear-both",
        "clear-none",
        "object-contain",
        "object-cover",
        "object-fill",
        "object-none",
        "object-scale-down",
        "object-bottom",
        "object-center",
        "object-left",
        "object-left-bottom",
        "object-left-top",
        "object-right",
        "object-right-bottom",
        "object-right-top",
        "object-top",
        "grid-flow-row",
        "grid-flow-col",
        "grid-flow-row-dense",
        "grid-flow-col-dense",
        "grid-cols-1",
        "grid-cols-2",
        "grid-cols-3",
        "grid-cols-4",
        "grid-cols-5",
        "grid-cols-6",
        "grid-cols-7",
        "grid-cols-8",
        "grid-cols-9",
        "grid-cols-10",
        "grid-cols-11",
        "grid-cols-12",
        "grid-cols-none",
        "col-auto",
        "col-span-1",
        "col-span-2",
        "col-span-3",
        "col-span-4",
        "col-span-5",
        "col-span-6",
        "col-span-7",
        "col-span-8",
        "col-span-9",
        "col-span-10",
        "col-span-11",
        "col-span-12",
        "col-start-1",
        "col-start-2",
        "col-start-3",
        "col-start-4",
        "col-start-5",
        "col-start-6",
        "col-start-7",
        "col-start-8",
        "col-start-9",
        "col-start-10",
        "col-start-11",
        "col-start-12",
        "col-start-13",
        "col-start-auto",
        "col-end-1",
        "col-end-2",
        "col-end-3",
        "col-end-4",
        "col-end-5",
        "col-end-6",
        "col-end-7",
        "col-end-8",
        "col-end-9",
        "col-end-10",
        "col-end-11",
        "col-end-12",
        "col-end-13",
        "col-end-auto",
        "grid-rows-1",
        "grid-rows-2",
        "grid-rows-3",
        "grid-rows-4",
        "grid-rows-5",
        "grid-rows-6",
        "grid-rows-none",
        "row-auto",
        "row-span-1",
        "row-span-2",
        "row-span-3",
        "row-span-4",
        "row-span-5",
        "row-span-6",
        "row-start-1",
        "row-start-2",
        "row-start-3",
        "row-start-4",
        "row-start-5",
        "row-start-6",
        "row-start-7",
        "row-start-auto",
        "row-end-1",
        "row-end-2",
        "row-end-3",
        "row-end-4",
        "row-end-5",
        "row-end-6",
        "row-end-7",
        "row-end-auto",
        "gap-0",
        "gap-1",
        "gap-2",
        "gap-3",
        "gap-4",
        "gap-5",
        "gap-6",
        "gap-8",
        "gap-10",
        "gap-12",
        "gap-16",
        "gap-20",
        "gap-24",
        "gap-32",
        "gap-40",
        "gap-48",
        "gap-56",
        "gap-64",
        "gap-px",
        "row-gap-0",
        "row-gap-1",
        "row-gap-2",
        "row-gap-3",
        "row-gap-4",
        "row-gap-5",
        "row-gap-6",
        "row-gap-8",
        "row-gap-10",
        "row-gap-12",
        "row-gap-16",
        "row-gap-20",
        "row-gap-24",
        "row-gap-32",
        "row-gap-40",
        "row-gap-48",
        "row-gap-56",
        "row-gap-64",
        "row-gap-px",
        "col-gap-0",
        "col-gap-1",
        "col-gap-2",
        "col-gap-3",
        "col-gap-4",
        "col-gap-5",
        "col-gap-6",
        "col-gap-8",
        "col-gap-10",
        "col-gap-12",
        "col-gap-16",
        "col-gap-20",
        "col-gap-24",
        "col-gap-32",
        "col-gap-40",
        "col-gap-48",
        "col-gap-56",
        "col-gap-64",
        "col-gap-px",
        "space-x-0",
        "space-x-1",
        "space-x-2",
        "space-x-3",
        "space-x-4",
        "space-x-5",
        "space-x-6",
        "space-x-8",
        "space-x-10",
        "space-x-12",
        "space-x-16",
        "space-x-20",
        "space-x-24",
        "space-x-32",
        "space-x-40",
        "space-x-48",
        "space-x-56",
        "space-x-64",
        "space-x-px",
        "-space-x-1",
        "-space-x-2",
        "-space-x-3",
        "-space-x-4",
        "-space-x-5",
        "-space-x-6",
        "-space-x-8",
        "-space-x-10",
        "-space-x-12",
        "-space-x-16",
        "-space-x-20",
        "-space-x-24",
        "-space-x-32",
        "-space-x-40",
        "-space-x-48",
        "-space-x-56",
        "-space-x-64",
        "-space-x-px",
        "space-y-0",
        "space-y-1",
        "space-y-2",
        "space-y-3",
        "space-y-4",
        "space-y-5",
        "space-y-6",
        "space-y-8",
        "space-y-10",
        "space-y-12",
        "space-y-16",
        "space-y-20",
        "space-y-24",
        "space-y-32",
        "space-y-40",
        "space-y-48",
        "space-y-56",
        "space-y-64",
        "space-y-px",
        "-space-y-1",
        "-space-y-2",
        "-space-y-3",
        "-space-y-4",
        "-space-y-5",
        "-space-y-6",
        "-space-y-8",
        "-space-y-10",
        "-space-y-12",
        "-space-y-16",
        "-space-y-20",
        "-space-y-24",
        "-space-y-32",
        "-space-y-40",
        "-space-y-48",
        "-space-y-56",
        "-space-y-64",
        "-space-y-px",
        "space-x-reverse",
        "space-y-reverse",
        "overflow-auto",
        "overflow-hidden",
        "overflow-visible",
        "overflow-scroll",
        "overflow-x-auto",
        "overflow-x-hidden",
        "overflow-x-visible",
        "overflow-x-scroll",
        "overflow-y-auto",
        "overflow-y-hidden",
        "overflow-y-visible",
        "overflow-y-scroll",
        "scrolling-touch",
        "scrolling-auto",
        "font-sans",
        "font-serif",
        "font-mono",
        "text-xs",
        "text-sm",
        "text-base",
        "text-lg",
        "text-xl",
        "text-2xl",
        "text-3xl",
        "text-4xl",
        "text-5xl",
        "text-6xl",
        "antialiased",
        "subpixel-antialiased",
        "italic",
        "not-italic",
        "font-hairline",
        "font-thin",
        "font-light",
        "font-normal",
        "font-medium",
        "font-semibold",
        "font-bold",
        "font-extrabold",
        "font-black",
        "leading-none",
        "leading-tight",
        "leading-snug",
        "leading-normal",
        "leading-relaxed",
        "leading-loose",
        "leading-3",
        "leading-4",
        "leading-5",
        "leading-6",
        "leading-7",
        "leading-8",
        "leading-9",
        "leading-10",
        "tracking-tighter",
        "tracking-tight",
        "tracking-normal",
        "tracking-wide",
        "tracking-wider",
        "tracking-widest",
        "prose-sm",
        "prose",
        "prose-lg",
        "prose-xl",
        "prose-2xl",
        "text-left",
        "text-center",
        "text-right",
        "text-justify",
        "text-transparent",
        "text-current",
        "text-black",
        "text-white",
        "text-gray-100",
        "text-gray-200",
        "text-gray-300",
        "text-gray-400",
        "text-gray-500",
        "text-gray-600",
        "text-gray-700",
        "text-gray-800",
        "text-gray-900",
        "text-red-100",
        "text-red-200",
        "text-red-300",
        "text-red-400",
        "text-red-500",
        "text-red-600",
        "text-red-700",
        "text-red-800",
        "text-red-900",
        "text-orange-100",
        "text-orange-200",
        "text-orange-300",
        "text-orange-400",
        "text-orange-500",
        "text-orange-600",
        "text-orange-700",
        "text-orange-800",
        "text-orange-900",
        "text-yellow-100",
        "text-yellow-200",
        "text-yellow-300",
        "text-yellow-400",
        "text-yellow-500",
        "text-yellow-600",
        "text-yellow-700",
        "text-yellow-800",
        "text-yellow-900",
        "text-green-100",
        "text-green-200",
        "text-green-300",
        "text-green-400",
        "text-green-500",
        "text-green-600",
        "text-green-700",
        "text-green-800",
        "text-green-900",
        "text-teal-100",
        "text-teal-200",
        "text-teal-300",
        "text-teal-400",
        "text-teal-500",
        "text-teal-600",
        "text-teal-700",
        "text-teal-800",
        "text-teal-900",
        "text-blue-100",
        "text-blue-200",
        "text-blue-300",
        "text-blue-400",
        "text-blue-500",
        "text-blue-600",
        "text-blue-700",
        "text-blue-800",
        "text-blue-900",
        "text-indigo-100",
        "text-indigo-200",
        "text-indigo-300",
        "text-indigo-400",
        "text-indigo-500",
        "text-indigo-600",
        "text-indigo-700",
        "text-indigo-800",
        "text-indigo-900",
        "text-purple-100",
        "text-purple-200",
        "text-purple-300",
        "text-purple-400",
        "text-purple-500",
        "text-purple-600",
        "text-purple-700",
        "text-purple-800",
        "text-purple-900",
        "text-pink-100",
        "text-pink-200",
        "text-pink-300",
        "text-pink-400",
        "text-pink-500",
        "text-pink-600",
        "text-pink-700",
        "text-pink-800",
        "text-pink-900",
        "text-opacity-0",
        "text-opacity-25",
        "text-opacity-50",
        "text-opacity-75",
        "text-opacity-100",
        "placeholder-transparent",
        "placeholder-current",
        "placeholder-black",
        "placeholder-white",
        "placeholder-gray-100",
        "placeholder-gray-200",
        "placeholder-gray-300",
        "placeholder-gray-400",
        "placeholder-gray-500",
        "placeholder-gray-600",
        "placeholder-gray-700",
        "placeholder-gray-800",
        "placeholder-gray-900",
        "placeholder-red-100",
        "placeholder-red-200",
        "placeholder-red-300",
        "placeholder-red-400",
        "placeholder-red-500",
        "placeholder-red-600",
        "placeholder-red-700",
        "placeholder-red-800",
        "placeholder-red-900",
        "placeholder-orange-100",
        "placeholder-orange-200",
        "placeholder-orange-300",
        "placeholder-orange-400",
        "placeholder-orange-500",
        "placeholder-orange-600",
        "placeholder-orange-700",
        "placeholder-orange-800",
        "placeholder-orange-900",
        "placeholder-yellow-100",
        "placeholder-yellow-200",
        "placeholder-yellow-300",
        "placeholder-yellow-400",
        "placeholder-yellow-500",
        "placeholder-yellow-600",
        "placeholder-yellow-700",
        "placeholder-yellow-800",
        "placeholder-yellow-900",
        "placeholder-green-100",
        "placeholder-green-200",
        "placeholder-green-300",
        "placeholder-green-400",
        "placeholder-green-500",
        "placeholder-green-600",
        "placeholder-green-700",
        "placeholder-green-800",
        "placeholder-green-900",
        "placeholder-teal-100",
        "placeholder-teal-200",
        "placeholder-teal-300",
        "placeholder-teal-400",
        "placeholder-teal-500",
        "placeholder-teal-600",
        "placeholder-teal-700",
        "placeholder-teal-800",
        "placeholder-teal-900",
        "placeholder-blue-100",
        "placeholder-blue-200",
        "placeholder-blue-300",
        "placeholder-blue-400",
        "placeholder-blue-500",
        "placeholder-blue-600",
        "placeholder-blue-700",
        "placeholder-blue-800",
        "placeholder-blue-900",
        "placeholder-indigo-100",
        "placeholder-indigo-200",
        "placeholder-indigo-300",
        "placeholder-indigo-400",
        "placeholder-indigo-500",
        "placeholder-indigo-600",
        "placeholder-indigo-700",
        "placeholder-indigo-800",
        "placeholder-indigo-900",
        "placeholder-purple-100",
        "placeholder-purple-200",
        "placeholder-purple-300",
        "placeholder-purple-400",
        "placeholder-purple-500",
        "placeholder-purple-600",
        "placeholder-purple-700",
        "placeholder-purple-800",
        "placeholder-purple-900",
        "placeholder-pink-100",
        "placeholder-pink-200",
        "placeholder-pink-300",
        "placeholder-pink-400",
        "placeholder-pink-500",
        "placeholder-pink-600",
        "placeholder-pink-700",
        "placeholder-pink-800",
        "placeholder-pink-900",
        "placeholder-opacity-0",
        "placeholder-opacity-25",
        "placeholder-opacity-50",
        "placeholder-opacity-75",
        "placeholder-opacity-100",
        "placeholder-left",
        "placeholder-center",
        "placeholder-right",
        "placeholder-justify",
        "underline",
        "line-through",
        "no-underline",
        "uppercase",
        "lowercase",
        "capitalize",
        "normal-case",
        "break-normal",
        "break-words",
        "break-all",
        "truncate",
        "whitespace-normal",
        "whitespace-no-wrap",
        "whitespace-pre",
        "whitespace-pre-line",
        "whitespace-pre-wrap",
        "align-baseline",
        "align-top",
        "align-middle",
        "align-bottom",
        "align-text-top",
        "align-text-bottom",
        "list-none",
        "list-disc",
        "list-decimal",
        "list-inside",
        "list-outside",
        "transition-none",
        "transition-all",
        "transition",
        "transition-colors",
        "transition-opacity",
        "transition-shadow",
        "transition-transform",
        "duration-75",
        "duration-100",
        "duration-150",
        "duration-200",
        "duration-300",
        "duration-500",
        "duration-700",
        "duration-1000",
        "ease-linear",
        "ease-in",
        "ease-out",
        "ease-in-out",
        "delay-75",
        "delay-100",
        "delay-150",
        "delay-200",
        "delay-300",
        "delay-500",
        "delay-700",
        "delay-1000",
        "origin-center",
        "origin-top",
        "origin-top-right",
        "origin-right",
        "origin-bottom-right",
        "origin-bottom",
        "origin-bottom-left",
        "origin-left",
        "origin-top-left",
        "transform",
        "scale-0",
        "scale-50",
        "scale-75",
        "scale-90",
        "scale-95",
        "scale-100",
        "scale-105",
        "scale-110",
        "scale-125",
        "scale-150",
        "scale-x-0",
        "scale-x-50",
        "scale-x-75",
        "scale-x-90",
        "scale-x-95",
        "scale-x-100",
        "scale-x-105",
        "scale-x-110",
        "scale-x-125",
        "scale-x-150",
        "scale-y-0",
        "scale-y-50",
        "scale-y-75",
        "scale-y-90",
        "scale-y-95",
        "scale-y-100",
        "scale-y-105",
        "scale-y-110",
        "scale-y-125",
        "scale-y-150",
        "rotate-0",
        "rotate-45",
        "rotate-90",
        "rotate-180",
        "-rotate-180",
        "-rotate-90",
        "-rotate-45",
        "translate-x-0",
        "translate-x-1",
        "translate-x-2",
        "translate-x-3",
        "translate-x-4",
        "translate-x-5",
        "translate-x-6",
        "translate-x-8",
        "translate-x-10",
        "translate-x-12",
        "translate-x-16",
        "translate-x-20",
        "translate-x-24",
        "translate-x-32",
        "translate-x-40",
        "translate-x-48",
        "translate-x-56",
        "translate-x-64",
        "translate-x-px",
        "-translate-x-1",
        "-translate-x-2",
        "-translate-x-3",
        "-translate-x-4",
        "-translate-x-5",
        "-translate-x-6",
        "-translate-x-8",
        "-translate-x-10",
        "-translate-x-12",
        "-translate-x-16",
        "-translate-x-20",
        "-translate-x-24",
        "-translate-x-32",
        "-translate-x-40",
        "-translate-x-48",
        "-translate-x-56",
        "-translate-x-64",
        "-translate-x-px",
        "-translate-x-full",
        "-translate-x-1/2",
        "translate-x-1/2",
        "translate-x-full",
        "translate-y-0",
        "translate-y-1",
        "translate-y-2",
        "translate-y-3",
        "translate-y-4",
        "translate-y-5",
        "translate-y-6",
        "translate-y-8",
        "translate-y-10",
        "translate-y-12",
        "translate-y-16",
        "translate-y-20",
        "translate-y-24",
        "translate-y-32",
        "translate-y-40",
        "translate-y-48",
        "translate-y-56",
        "translate-y-64",
        "translate-y-px",
        "-translate-y-1",
        "-translate-y-2",
        "-translate-y-3",
        "-translate-y-4",
        "-translate-y-5",
        "-translate-y-6",
        "-translate-y-8",
        "-translate-y-10",
        "-translate-y-12",
        "-translate-y-16",
        "-translate-y-20",
        "-translate-y-24",
        "-translate-y-32",
        "-translate-y-40",
        "-translate-y-48",
        "-translate-y-56",
        "-translate-y-64",
        "-translate-y-px",
        "-translate-y-full",
        "-translate-y-1/2",
        "translate-y-1/2",
        "translate-y-full",
        "skew-x-0",
        "skew-x-3",
        "skew-x-6",
        "skew-x-12",
        "-skew-x-12",
        "-skew-x-6",
        "-skew-x-3",
        "skew-y-0",
        "skew-y-3",
        "skew-y-6",
        "skew-y-12",
        "-skew-y-12",
        "-skew-y-6",
        "-skew-y-3",
        "bg-fixed",
        "bg-local",
        "bg-scroll",
        "bg-transparent",
        "bg-current",
        "bg-black",
        "bg-white",
        "bg-gray-100",
        "bg-gray-200",
        "bg-gray-300",
        "bg-gray-400",
        "bg-gray-500",
        "bg-gray-600",
        "bg-gray-700",
        "bg-gray-800",
        "bg-gray-900",
        "bg-red-100",
        "bg-red-200",
        "bg-red-300",
        "bg-red-400",
        "bg-red-500",
        "bg-red-600",
        "bg-red-700",
        "bg-red-800",
        "bg-red-900",
        "bg-orange-100",
        "bg-orange-200",
        "bg-orange-300",
        "bg-orange-400",
        "bg-orange-500",
        "bg-orange-600",
        "bg-orange-700",
        "bg-orange-800",
        "bg-orange-900",
        "bg-yellow-100",
        "bg-yellow-200",
        "bg-yellow-300",
        "bg-yellow-400",
        "bg-yellow-500",
        "bg-yellow-600",
        "bg-yellow-700",
        "bg-yellow-800",
        "bg-yellow-900",
        "bg-green-100",
        "bg-green-200",
        "bg-green-300",
        "bg-green-400",
        "bg-green-500",
        "bg-green-600",
        "bg-green-700",
        "bg-green-800",
        "bg-green-900",
        "bg-teal-100",
        "bg-teal-200",
        "bg-teal-300",
        "bg-teal-400",
        "bg-teal-500",
        "bg-teal-600",
        "bg-teal-700",
        "bg-teal-800",
        "bg-teal-900",
        "bg-blue-100",
        "bg-blue-200",
        "bg-blue-300",
        "bg-blue-400",
        "bg-blue-500",
        "bg-blue-600",
        "bg-blue-700",
        "bg-blue-800",
        "bg-blue-900",
        "bg-indigo-100",
        "bg-indigo-200",
        "bg-indigo-300",
        "bg-indigo-400",
        "bg-indigo-500",
        "bg-indigo-600",
        "bg-indigo-700",
        "bg-indigo-800",
        "bg-indigo-900",
        "bg-purple-100",
        "bg-purple-200",
        "bg-purple-300",
        "bg-purple-400",
        "bg-purple-500",
        "bg-purple-600",
        "bg-purple-700",
        "bg-purple-800",
        "bg-purple-900",
        "bg-pink-100",
        "bg-pink-200",
        "bg-pink-300",
        "bg-pink-400",
        "bg-pink-500",
        "bg-pink-600",
        "bg-pink-700",
        "bg-pink-800",
        "bg-pink-900",
        "bg-opacity-0",
        "bg-opacity-25",
        "bg-opacity-50",
        "bg-opacity-75",
        "bg-opacity-100",
        "bg-bottom",
        "bg-center",
        "bg-left",
        "bg-left-bottom",
        "bg-left-top",
        "bg-right",
        "bg-right-bottom",
        "bg-right-top",
        "bg-top",
        "bg-repeat",
        "bg-no-repeat",
        "bg-repeat-x",
        "bg-repeat-y",
        "bg-repeat-round",
        "bg-repeat-space",
        "bg-auto",
        "bg-cover",
        "bg-contain",
        "border",
        "border-0",
        "border-2",
        "border-4",
        "border-8",
        "border-t",
        "border-t-0",
        "border-t-2",
        "border-t-4",
        "border-t-8",
        "border-b",
        "border-b-0",
        "border-b-2",
        "border-b-4",
        "border-b-8",
        "border-l",
        "border-l-0",
        "border-l-2",
        "border-l-4",
        "border-l-8",
        "border-r",
        "border-r-0",
        "border-r-2",
        "border-r-4",
        "border-r-8",
        "border-collapse",
        "border-separate",
        "border-transparent",
        "border-current",
        "border-black",
        "border-white",
        "border-gray-100",
        "border-gray-200",
        "border-gray-300",
        "border-gray-400",
        "border-gray-500",
        "border-gray-600",
        "border-gray-700",
        "border-gray-800",
        "border-gray-900",
        "border-red-100",
        "border-red-200",
        "border-red-300",
        "border-red-400",
        "border-red-500",
        "border-red-600",
        "border-red-700",
        "border-red-800",
        "border-red-900",
        "border-orange-100",
        "border-orange-200",
        "border-orange-300",
        "border-orange-400",
        "border-orange-500",
        "border-orange-600",
        "border-orange-700",
        "border-orange-800",
        "border-orange-900",
        "border-yellow-100",
        "border-yellow-200",
        "border-yellow-300",
        "border-yellow-400",
        "border-yellow-500",
        "border-yellow-600",
        "border-yellow-700",
        "border-yellow-800",
        "border-yellow-900",
        "border-green-100",
        "border-green-200",
        "border-green-300",
        "border-green-400",
        "border-green-500",
        "border-green-600",
        "border-green-700",
        "border-green-800",
        "border-green-900",
        "border-teal-100",
        "border-teal-200",
        "border-teal-300",
        "border-teal-400",
        "border-teal-500",
        "border-teal-600",
        "border-teal-700",
        "border-teal-800",
        "border-teal-900",
        "border-blue-100",
        "border-blue-200",
        "border-blue-300",
        "border-blue-400",
        "border-blue-500",
        "border-blue-600",
        "border-blue-700",
        "border-blue-800",
        "border-blue-900",
        "border-indigo-100",
        "border-indigo-200",
        "border-indigo-300",
        "border-indigo-400",
        "border-indigo-500",
        "border-indigo-600",
        "border-indigo-700",
        "border-indigo-800",
        "border-indigo-900",
        "border-purple-100",
        "border-purple-200",
        "border-purple-300",
        "border-purple-400",
        "border-purple-500",
        "border-purple-600",
        "border-purple-700",
        "border-purple-800",
        "border-purple-900",
        "border-pink-100",
        "border-pink-200",
        "border-pink-300",
        "border-pink-400",
        "border-pink-500",
        "border-pink-600",
        "border-pink-700",
        "border-pink-800",
        "border-pink-900",
        "border-opacity-0",
        "border-opacity-25",
        "border-opacity-50",
        "border-opacity-75",
        "border-opacity-100",
        "border-solid",
        "border-dashed",
        "border-dotted",
        "border-double",
        "border-none",
        "divide-x-0",
        "divide-x-2",
        "divide-x-4",
        "divide-x-8",
        "divide-x",
        "divide-y-0",
        "divide-y-2",
        "divide-y-4",
        "divide-y-8",
        "divide-y",
        "divide-x-reverse",
        "divide-y-reverse",
        "divide-transparent",
        "divide-current",
        "divide-black",
        "divide-white",
        "divide-gray-100",
        "divide-gray-200",
        "divide-gray-300",
        "divide-gray-400",
        "divide-gray-500",
        "divide-gray-600",
        "divide-gray-700",
        "divide-gray-800",
        "divide-gray-900",
        "divide-red-100",
        "divide-red-200",
        "divide-red-300",
        "divide-red-400",
        "divide-red-500",
        "divide-red-600",
        "divide-red-700",
        "divide-red-800",
        "divide-red-900",
        "divide-orange-100",
        "divide-orange-200",
        "divide-orange-300",
        "divide-orange-400",
        "divide-orange-500",
        "divide-orange-600",
        "divide-orange-700",
        "divide-orange-800",
        "divide-orange-900",
        "divide-yellow-100",
        "divide-yellow-200",
        "divide-yellow-300",
        "divide-yellow-400",
        "divide-yellow-500",
        "divide-yellow-600",
        "divide-yellow-700",
        "divide-yellow-800",
        "divide-yellow-900",
        "divide-green-100",
        "divide-green-200",
        "divide-green-300",
        "divide-green-400",
        "divide-green-500",
        "divide-green-600",
        "divide-green-700",
        "divide-green-800",
        "divide-green-900",
        "divide-teal-100",
        "divide-teal-200",
        "divide-teal-300",
        "divide-teal-400",
        "divide-teal-500",
        "divide-teal-600",
        "divide-teal-700",
        "divide-teal-800",
        "divide-teal-900",
        "divide-blue-100",
        "divide-blue-200",
        "divide-blue-300",
        "divide-blue-400",
        "divide-blue-500",
        "divide-blue-600",
        "divide-blue-700",
        "divide-blue-800",
        "divide-blue-900",
        "divide-indigo-100",
        "divide-indigo-200",
        "divide-indigo-300",
        "divide-indigo-400",
        "divide-indigo-500",
        "divide-indigo-600",
        "divide-indigo-700",
        "divide-indigo-800",
        "divide-indigo-900",
        "divide-purple-100",
        "divide-purple-200",
        "divide-purple-300",
        "divide-purple-400",
        "divide-purple-500",
        "divide-purple-600",
        "divide-purple-700",
        "divide-purple-800",
        "divide-purple-900",
        "divide-pink-100",
        "divide-pink-200",
        "divide-pink-300",
        "divide-pink-400",
        "divide-pink-500",
        "divide-pink-600",
        "divide-pink-700",
        "divide-pink-800",
        "divide-pink-900",
        "rounded-none",
        "rounded-sm",
        "rounded",
        "rounded-md",
        "rounded-lg",
        "rounded-full",
        "rounded-t-none",
        "rounded-t-sm",
        "rounded-t",
        "rounded-t-lg",
        "rounded-t-full",
        "rounded-b-none",
        "rounded-b-sm",
        "rounded-b",
        "rounded-b-lg",
        "rounded-b-full",
        "rounded-l-none",
        "rounded-l-sm",
        "rounded-l",
        "rounded-l-lg",
        "rounded-l-full",
        "rounded-r-none",
        "rounded-r-sm",
        "rounded-r",
        "rounded-r-lg",
        "rounded-r-full",
        "rounded-tl-none",
        "rounded-tl-sm",
        "rounded-tl",
        "rounded-tl-lg",
        "rounded-tl-full",
        "rounded-tr-none",
        "rounded-tr-sm",
        "rounded-tr",
        "rounded-tr-lg",
        "rounded-tr-full",
        "rounded-bl-none",
        "rounded-bl-sm",
        "rounded-bl",
        "rounded-bl-lg",
        "rounded-bl-full",
        "rounded-br-none",
        "rounded-br-sm",
        "rounded-br",
        "rounded-br-lg",
        "rounded-br-full",
        "shadow-xs",
        "shadow-sm",
        "shadow",
        "shadow-md",
        "shadow-lg",
        "shadow-xl",
        "shadow-2xl",
        "shadow-inner",
        "shadow-outline",
        "shadow-none",
        "outline-none",
        "opacity-0",
        "opacity-25",
        "opacity-50",
        "opacity-75",
        "opacity-100",
        "table-auto",
        "table-fixed",
        "appearance-none",
        "cursor-auto",
        "cursor-default",
        "cursor-pointer",
        "cursor-wait",
        "cursor-move",
        "cursor-not-allowed",
        "pointer-events-none",
        "pointer-events-auto",
        "resize-none",
        "resize",
        "resize-x",
        "resize-y",
        "select-none",
        "select-text",
        "select-all",
        "select-auto",
        "sr-only",
        "not-sr-only",
        "fill-current",
        "stroke-current",
        "stroke-0",
        "stroke-1",
        "stroke-2",
        "clear-left"
    ],
    "tailwindCSS.experimental.showPixelValues": true,
    "debug.allowBreakpointsEverywhere": true,
    "debug.showBreakpointsInOverviewRuler": true,
    "gitlens.codeLens.enabled": false,
    "gitlens.currentLine.scrollable": false,
    "intelephense.environment.documentRoot": "public/index.php",
    "intelephense.phpdoc.returnVoid": false,
    "jake.autoDetect": "off",
    "php.validate.enable": false,
    "LaravelExtraIntellisense.modelsPaths": [
        "app",
        "app/Models"
    ],
    "LaravelExtraIntellisense.modelVariables": {
        "user": "App\\Models\\User"
    },
    "files.autoGuessEncoding": true,
    "gulp.autoDetect": "off",
    "editor.inlineHints.fontFamily": "\"Operator Mono\"",
    "sync.removeExtensions": true,
    "sync.forceDownload": true,
    "indentRainbow.colorOnWhiteSpaceOnly": true,
    "phpcs.errorSeverity": 1,
    "phpcs.warningSeverity": 1,
    "phpcs.standard": "phpcs.xml",
    "gitlens.advanced.fileHistoryFollowsRenames": true,
    "gitlens.advanced.fileHistoryShowAllBranches": true,
    "gitlens.codeLens.authors.enabled": false
}

Not working in Mac OS Catalina

I wanted to try this extension because I work a lot with Laravel too but unfortunately it is not working in my environment at all. I am using Mac OS and I type the examples but no intellisense is showing. I don't know how to debug and send you some info, but I wanted to help reporting the issue.

It seems lots of extensions for Laravel does not work with Mac OS. I don't know why.

can, cant

I guess theres is missing rule for methods can and cant.
With this code in a controller:

$user = Auth::user();
$user->can('sth');
$user->cant('sth');

intelephense will throw error Undefined method.

The extension makes vs code slowly

I'm using VS code latest version (Version: 1.49.0) and this extension makes vs code slowly when I'm editing a php file >10.000 lines of codes.
The extension host always took 100% of CPU, I tried to disable all extensions and enable again one by one and I found this extension is reason make VS code slow.
Please check.
Thanks.

Extension issue

  • Issue Type: Bug
  • Extension Name: laravel-extra-intellisense
  • Extension Version: 0.2.3
  • OS Version: Windows_NT x64 10.0.18363
  • VSCode version: 1.41.1

⚠️ We have written the needed data into your clipboard. Please paste! ⚠️

Publish extensions to open-vsx

I'm a VS Codium user, a FLOSS version of VS Code, it's the same code but without the Microsoft's telemetry and branding.
I want to request if possible to add the Laravel Extra Intellisense extension on the open-vsx.org market to us doesn't need to works with the Microsoft marketplace as is unclear if it's legal to use it on VS Code forks, see here.

Additional info:

  • This is how to publish a new extension.

The extension 'XML Tools' took a very long time.

  • Issue Type: Bug
  • Extension Name: laravel-extra-intellisense
  • Extension Version: 0.4.1
  • OS Version: Windows_NT x64 10.0.18363
  • VSCode version: 1.52.1

⚠️ The extension 'XML Tools' took a very long time to complete its last operation and it has prevented other extensions from running.

{
	"messages": [],
	"activationTimes": {
		"codeLoadingTime": 852,
		"activateCallTime": 50153,
		"activateResolvedTime": 297,
		"activationReason": {
			"startup": false,
			"extensionId": {
				"value": "amiralizadeh9480.laravel-extra-intellisense",
				"_lower": "amiralizadeh9480.laravel-extra-intellisense"
			},
			"activationEvent": "onLanguage:php"
		}
	},
	"runtimeErrors": [
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		},
		{
			"name": "SyntaxError",
			"message": "Unexpected end of JSON input"
		}
	]
}

⚠️

Feature Request: Blade Directive Autocompletions

Would love to see blade template auto-completions based on actual registered blade templates (as opposed to a static library). This would automatically take in any blade macros and laravel packages that bring in their own blade directives. :)

Awesome package, it's at the core of my VSCode setup! :)

Can't get extension to work

I must be missing something. I installed this extension, but I can't get it to do anything. Is there some sort of initiation command? I'm using Laravel 8.

Each minute extension throws exception

When extension is enabled, each minute appears this in window log (output > Log (window)):

___VSCODE_LARAVEL_EXTRA_INSTELLISENSE_OUTPUT___
                                                                                                                                                                                                   
  [Symfony\Component\Debug\Exception\FatalErrorException]                                                                                                                                          
  Uncaught Error: Call to undefined method Illuminate\Auth\Access\Gate::abilities() in /home/user/path-to-repository/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:237  
  Stack trace:                                                                                                                                                                                     
  #0 Command line code(1): Illuminate\Support\Facades\Facade::__callStatic('abilities', Array)                                                                                                     
  #1 {main}                                                                                                                                                                                        
    thrown   

Same log without first line appears in storage/logs/laravel.log:

[2020-10-01 12:41:53] local.ERROR: Symfony\Component\Debug\Exception\FatalErrorException: Uncaught Error: Call to undefined method Illuminate\Auth\Access\Gate::abilities() in /home/user/path-to-repository/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:237
Stack trace:
#0 Command line code(1): Illuminate\Support\Facades\Facade::__callStatic('abilities', Array)
#1 {main}
  thrown in /home/user/path-to-repository/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:237
Stack trace:
#0 {main}  

I am using laravel 5.3, and, in this particular version, Gate::abilities() does not exist.
How can i prevent this to appear in storage/logs/laravel.log?

No autocomplete appearing with the extension

I am using vscode 1.45.0 and the following extensions:

  • laravel blade snippets
  • laravel goto view
  • laravel goto controller
  • laravel snippets
  • laravel blade
  • php intelephense

I tried to install laravel extra intellisense. I relaunched vscode and if I try in a blade to enter {{ config('app. ') }} I don't get any proposition, same for return view in a controller.

It seems as if the application is not activated even though it is enabled...

Feature Request: Add Toggle for snake_case vs camelCase.

Hi @amir9480,

Would you consider adding a toggle in settings to autocomplete model attributes using camel case, instead of snake case?
PSRs dictate that class properties be in camelCase, and in our company style-guide we currently consider model attributes properties, rather than database fields.

Thanks :)
~Mike Bronner

No Autocomplete Suggestions for Variables in blade.php files

Hello,

I'm not sure if this is a bug or this is not a feature of this extension, but in my blade files, when I write a variable that I have used before in the blade file, I do not get auto suggest completion for the variable. For example:

@foreach($bookings as $booking)
                <td>{{ $booking}}</td>
@endforeach

In this block of code, in an IDE like PHPStorm i would get the autocomplete in the curly braces for the $booking variable. If this is not a feature of this extension, do you know of any that provides this functionality?

Many thanks

Random logging error

I have a custom logger provided via a laravel package that works fine otherwise, but randomly throws the below error when this extension is activated.
Seems like there is something running in the background that uses the laravel cli but my custom handler can't be found (custom handler normally works fine for cli).
the two [internal function]line point to VscodeLaravelExtraIntellisenseProvider.

[2020-07-13 09:03:14] laravel.EMERGENCY: Unable to create configured logger. Using emergency logger. {"exception":"[object] (InvalidArgumentException(code: 0): Authentication user provider [customauth] is not defined. at vendor/laravel/framework/src/Illuminate/Auth/CreatesUserProviders.php:42)
[stacktrace]
#0 vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php(123): Illuminate\\Auth\\AuthManager->createUserProvider('users')
#1 vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php(94): Illuminate\\Auth\\AuthManager->createSessionDriver('web', Array)
#2 vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php(68): Illuminate\\Auth\\AuthManager->resolve('web')
#3 vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php(297): Illuminate\\Auth\\AuthManager->guard()
#4 vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(239): Illuminate\\Auth\\AuthManager->__call('user', Array)
#5 vendor/martin/logger/src/DiscoHandler.php(23): Illuminate\\Support\\Facades\\Facade::__callStatic('user', Array)
#6 vendor/laravel/framework/src/Illuminate/Log/LogManager.php(126): Martin\\Logger\\DiscoHandler->__invoke(Object(Illuminate\\Log\\Logger), '')
#7 vendor/laravel/framework/src/Illuminate/Log/LogManager.php(103): Illuminate\\Log\\LogManager->tap('cli', Object(Illuminate\\Log\\Logger))
#8 vendor/laravel/framework/src/Illuminate/Support/helpers.php(1263): Illuminate\\Log\\LogManager->Illuminate\\Log\\{closure}(Object(Monolog\\Logger))
#9 vendor/laravel/framework/src/Illuminate/Log/LogManager.php(104): with(Object(Monolog\\Logger), Object(Closure))
#10 vendor/laravel/framework/src/Illuminate/Log/LogManager.php(90): Illuminate\\Log\\LogManager->get('cli')
#11 vendor/laravel/framework/src/Illuminate/Log/LogManager.php(583): Illuminate\\Log\\LogManager->driver()
#12 Command line code(1): Illuminate\\Log\\LogManager->__call('setHandlers', Array)
#13 [internal function]: VscodeLaravelExtraIntellisenseProvider->boot()
#14 vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(32): call_user_func_array(Array, Array)
#15 vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(90): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#16 vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(34): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#17 vendor/laravel/framework/src/Illuminate/Container/Container.php(576): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#18 vendor/laravel/framework/src/Illuminate/Foundation/Application.php(827): Illuminate\\Container\\Container->call(Array)
#19 vendor/laravel/framework/src/Illuminate/Foundation/Application.php(810): Illuminate\\Foundation\\Application->bootProvider(Object(VscodeLaravelExtraIntellisenseProvider))
#20 [internal function]: Illuminate\\Foundation\\Application->Illuminate\\Foundation\\{closure}(Object(VscodeLaravelExtraIntellisenseProvider), 3)
#21 vendor/laravel/framework/src/Illuminate/Foundation/Application.php(811): array_walk(Array, Object(Closure))
#22 vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php(17): Illuminate\\Foundation\\Application->boot()
#23 vendor/laravel/framework/src/Illuminate/Foundation/Application.php(210): Illuminate\\Foundation\\Bootstrap\\BootProviders->bootstrap(Object(Illuminate\\Foundation\\Application))
#24 vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(322): Illuminate\\Foundation\\Application->bootstrapWith(Array)
#25 vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(131): Illuminate\\Foundation\\Console\\Kernel->bootstrap()
#26 Command line code(1): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#27 {main}

Extension issue

  • Issue Type: Bug
  • Extension Name: laravel-extra-intellisense
  • Extension Version: 0.6.1
  • OS Version: Windows_NT x64 10.0.19042
  • VS Code version: 1.57.0

⚠️ We have written the needed data into your clipboard. Please paste! ⚠️

{
	"messages": [],
	"activationTimes": {
		"codeLoadingTime": 197,
		"activateCallTime": 6435,
		"activateResolvedTime": 950,
		"activationReason": {
			"startup": false,
			"extensionId": {
				"value": "amiralizadeh9480.laravel-extra-intellisense",
				"_lower": "amiralizadeh9480.laravel-extra-intellisense"
			},
			"activationEvent": "onLanguage:blade"
		}
	},
	"runtimeErrors": []
}

Triggers Constant Laravel Errors

It looks like this extension is making constant requests to the app through PHP. This is triggering a constant deluge of application errors, as the extension is not tenant-aware, and does not execute its requests through the necessary Laravel middleware that determines the active tenant.

I would not expect VSCode plugins to make PHP requests to my application in order to understand them, but rather to run their own internal language server (if necessary), and parse the files in the directories as needed, to get more information.

As this stands now, I am unable to use this plugin because of this issue.

Plugin error is logged in laravel's log

I found 3 issue within the plugin all error is logged in laravel's log

The first issue is :

[2020-09-25 19:51:40] local.ERROR: Uncaught Error: Class 'Arr' not found in Command line code:1
Stack trace:
#0 {main}
  thrown {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 1): Uncaught Error: Class 'Arr' not found in Command line code:1
Stack trace:
#0 {main}
  thrown at Command line code:1)
[stacktrace]
#0 {main}
"} 

I dig down and found the caused. It was from file /src/authprovider.ts on line 55. The caused of it was the usage of Arr::flatten(). This will cause error for users who don't have Illuminate\support\Arr registered as alias.

Second Issue I found is:

After fixing the Arr::flatten() issue, I got a new error.

[2020-10-06 06:15:03] local.ERROR: Uncaught ReflectionException: Class App\Policies\ModelPolicy does not exist in Command line code:1
Stack trace:
#0 Command line code(1): ReflectionClass->__construct('App\\Policies\\Mo...')
#1 [internal function]: {closure}('App\\Policies\\Mo...', 'App\\Model')
#2 Command line code(1): array_map(Object(Closure), Array, Array)
#3 {main}
  thrown {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 1): Uncaught ReflectionException: Class App\\Policies\\ModelPolicy does not exist in Command line code:1
Stack trace:
#0 Command line code(1): ReflectionClass->__construct('App\\\\Policies\\\\Mo...')
#1 [internal function]: {closure}('App\\\\Policies\\\\Mo...', 'App\\\\Model')
#2 Command line code(1): array_map(Object(Closure), Array, Array)
#3 {main}
  thrown at Command line code:1)
[stacktrace]
#0 {main}
"}

I see that you added a new feature, autocompleting policies. But for people who don't use policies and actually have a default policy registered when you first installed laravel at \app\AuthServiceProvider.php will receive this error.

AuthServiceProvider.php

/**
 * The policy mappings for the application.
 *
 * @var array
 */
 protected $policies = [
    'App\Model' => 'App\Policies\ModelPolicy',
 ];

for user who don't use policy and didn't have the file in that location, that error log will consistently came out. it's best if you have some kind of handler for this. I find the fix is pretty simple. Just comment the line and it works fine. But I think this should be handled within the plugin itself.

The third issue is :

[2020-10-06 06:31:40] local.ERROR: Uncaught Error: Call to undefined method App\Http\Kernel::getRouteMiddleware() in Command line code:1
Stack trace:
#0 {main}
  thrown {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 1): Uncaught Error: Call to undefined method App\\Http\\Kernel::getRouteMiddleware() in Command line code:1
Stack trace:
#0 {main}
  thrown at Command line code:1)
[stacktrace]
#0 {main}
"} 

I don't know much about this one since i didn't look into it. But it is an issue nonetheless.

Enhancement Request: Autocomplete Suggestions Too Broad

I am seeing what I would call incorrect behavior, and am wondering if there are some settings I could implement to work around the problem. Consider the following example:

<?php

namespace Database\Factories;

use App\Models\Store;
use Illuminate\Database\Eloquent\Factories\Factory;

class StoreFactory extends Factory
{
    protected $model = Store::class;

    public function definition(): array
    {
        return [
            "address" => $this->faker->,
            "test1" => $this->faker->string,
            "test2" => $this->faker->string,
            "test3" => $this->faker->string,
            "test4" => $this->faker->string,
            "test5" => $this->faker->string,
            "test6" => $this->faker->string,
            "test7" => $this->faker->string,
        ];
    }
}

If you place your cursor at the end of the address field line, then delete the back to the greater-than, and re-type it to trigger auto-complete, it will suggest all keys listed in the array being returned. When autocompleting a variable, I would expect the autocomplete to only show items available in the variable.

A couple issues on Linux

When I installed the extension through VSCode it didn't work at all. Developer Tools showed a case issue with the routeProvider.js file. Linux is case sensitive and the R needed to be uppercase (same issue with viewProvider.js). I downloaded the repo and did a compile and the problem was gone -- it was the correct case.

But that left one other issue. Linux (and I think macOS) uses Bash shell and when there are $ signs in a double quoted string Bash treats it as a variable, which breaks running the PHP command. I was able to resolve the issue by updating the helpers.ts file:

  1. I imported 'os':
    import * as os from 'os';

  2. I changed the runPhp function to:

	static runPhp(code: string): string {
		if (fs.existsSync(Helpers.projectPath("vendor/autoload.php")) && fs.existsSync(Helpers.projectPath("bootstrap/app.php"))) {

			var command = "php -r \"define('LARAVEL_START', microtime(true));require_once '" + Helpers.projectPath("vendor/autoload.php") + "'; require_once '" + Helpers.projectPath("bootstrap/app.php") + "';$kernel = $app->make(Illuminate\\Contracts\\Http\\Kernel::class);$response = $kernel->handle(     $request = Illuminate\\Http\\Request::capture() );" + code + "\"";;

			if (['linux', 'openbsd', 'sunos', 'darwin'].findIndex(x => x === os.platform()) > -1) { // aix, darwin, linux, openbsd, sunos, win32
				command = command.replace(/\$/g, "\\$");
			}

			return cp.execSync(command).toString();
		}
		return "";
	}

Basically I'm escaping the $ signs if the operating system matches one in the list.

Extension issue

  • Issue Type: Bug
  • Extension Name: laravel-extra-intellisense
  • Extension Version: 0.2.1
  • OS Version: Windows_NT x64 10.0.18362
  • VSCode version: 1.38.0

⚠️ We have written the needed data into your clipboard. Please paste! ⚠️

Extension issue

  • Issue Type: Bug
  • Extension Name: laravel-extra-intellisense
  • Extension Version: 0.2.3
  • OS Version: Windows_NT x64 10.0.17134
  • VSCode version: 1.41.1

⚠️ We have written the needed data into your clipboard. Please paste! ⚠️

Not getting any suggestions.

Hello. If anyone can help me pinpoint down what's wrong would greatly appreciate it. ^^

I tried disabling all extensions and only turning on the Laravel Extra Intellisense 0.4.1 since I thought there might be a conflict but didn't work. Not getting any intelisense suggestions for routes , views , etc.
I'm using docker containers and this is my settings.json for the extension

   "LaravelExtraIntellisense.phpCommand": "docker exec -w /var/www/html -u laravel php php -r \"{code}\"",
    "intelephense.files.maxSize": 3000000,
    "LaravelExtraIntellisense.basePathForCode": "/var/www/html",
    "LaravelExtraIntellisense.basePath": "/var/www/html"

This is my list of recommended extensions for current workspace.

	"recommendations": [
        "formulahendry.auto-close-tag",
        "coenraads.bracket-pair-colorizer",
        "mikestead.dotenv",
        "vincaslt.highlight-matching-tag",
        "xabikos.javascriptsnippets",
        "onecentlin.laravel-blade",
        "austenc.laravel-blade-spacer",
        "dacoto.laravel-easy-blade-snippets",
        "dacoto.laravel-easy-blade-snippets",
        "amiralizadeh9480.laravel-extra-intellisense",
        "codingyu.laravel-goto-view",
        "pkief.material-icon-theme",
        "leizongmin.node-module-intellisense",
        "christian-kohler.npm-intellisense",
        "christian-kohler.path-intellisense",
        "bmewburn.vscode-intelephense-client",
        "marabesi.php-import-checker",
        "mehedidracula.php-namespace-resolver",
        "kokororin.vscode-phpfmt",
        "greven.umbra",
        "visualstudioexptteam.vscodeintellicode"
	],

ERR Cannot find module 'php-parser': Error: Cannot find module 'php-parser'

ERR Cannot find module 'php-parser': Error: Cannot find module 'php-parser'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:602:15)
at Function.Module._load (internal/modules/cjs/loader.js:528:25)
at Function.t._load (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:729:537)
at Function.t.getExtensionPathIndex.then.a._load (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:691:639)
at Function.t.getExtensionPathIndex.then.r._load (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:655:197)

Php-parser should not be in the development kit.

"devDependencies": {
	"php-parser": "^3.0.0-prerelease.8"
}

Open VSX Registry: Awareness and Important Steps

@treyssatvincent has published this extension in the Open VSX Registry.

The service was recently transferred to the Eclipse Foundation and we want to ensure a seamless transition for our users. To ensure uninterrupted service and more exposure for your extension, I recommend the following.

To the maintainers: If you would like to take over publishing to open-vsx.org, here’s how: https://github.com/eclipse/openvsx/wiki/Publishing-Extensions

To the current publisher: Please sign the Eclipse Publisher Agreement. The signing process is explained in the Wiki (steps 1 and 2).

Claiming ownership of the namespace for your extension(s). To find out how to do this, see:
https://github.com/eclipse/openvsx/wiki/Namespace-Access
As owner you can add more namespace members (including service accounts) yourself in https://open-vsx.org/user-settings/namespaces. Note that publishing can be done by any contributor to the extension, namely those you add as namespace members once they have signed the Publisher Agreement as well.

Please also note that a license is now mandatory for publishing your extension to Open VSX. If your project doesn't have any license, please add one, preferably an open source license such as MIT. The publishing tool ovsx offers to automatically add the MIT license when you try to publish without a license.

Useful links:
Eclipse Publisher Agreement
Eclipse Foundation Open VSX Registry Frequently Asked Questions (FAQ)

More details are in these recent blog posts:
https://blogs.eclipse.org/post/brian-king/open-vsx-registry-under-new-management
https://blogs.eclipse.org/post/brian-king/new-era-open-vsx-registry

Today, there’s growing momentum around open source tools and technologies that support Visual Studio (VS) Code extensions. Leading global organizations are adopting these tools and technologies. This momentum has spurred demand for a marketplace without restrictions and limitations. We hope you join us on this journey as we continue to build the Open VSX community.
We look forward to continued innovation from you in 2021!

Extension issue

  • Issue Type: Bug
  • Extension Name: laravel-extra-intellisense
  • Extension Version: 0.5.2
  • OS Version: Windows_NT x64 10.0.18363
  • VSCode version: 1.54.1

⚠️ We have written the needed data into your clipboard. Please paste! ⚠️

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.