From ce7e264cfa3d0dbb93917f3aec9abc716ec27e43 Mon Sep 17 00:00:00 2001
From: yangweijie <917647288@qq.com>
Date: Fri, 30 Sep 2022 11:59:15 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E7=AC=AC=E4=B8=80?=
 =?UTF-8?q?=E4=B8=AA=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .editorconfig                     |  20 +++
 .gitattributes                    |  11 ++
 .gitignore                        |   8 ++
 README.md                         |  94 +++++++++++++
 art/logo.png                      | Bin 0 -> 67843 bytes
 art/os/linux.png                  | Bin 0 -> 37161 bytes
 art/os/macos.png                  | Bin 0 -> 5261 bytes
 art/os/windows.png                | Bin 0 -> 6295 bytes
 composer.json                     |  31 ++++
 config/config.php                 | 205 +++++++++++++++++++++++++++
 src/.gitkeep                      |   0
 src/Concerns/Colors.php           |  49 +++++++
 src/Http.php                      | 150 ++++++++++++++++++++
 src/LaraDumps.php                 | 227 ++++++++++++++++++++++++++++++
 src/Payloads/ClearPayload.php     |  17 +++
 src/Payloads/ColorPayload.php     |  26 ++++
 src/Payloads/DiffPayload.php      |  31 ++++
 src/Payloads/DumpPayload.php      |  30 ++++
 src/Payloads/EventPayload.php     |  32 +++++
 src/Payloads/LogPayload.php       |  25 ++++
 src/Payloads/ModelPayload.php     |  48 +++++++
 src/Payloads/Payload.php          |  91 ++++++++++++
 src/Payloads/PhpInfoPayload.php   |  47 +++++++
 src/Payloads/QueriesPayload.php   |  37 +++++
 src/Payloads/QueryPayload.php     |  30 ++++
 src/Payloads/ScreenPayload.php    |  39 +++++
 src/Payloads/TablePayload.php     |  61 ++++++++
 src/Payloads/TimeTrackPayload.php |  34 +++++
 src/Support/Dumper.php            |  25 ++++
 src/Support/IdeHandle.php         |  73 ++++++++++
 src/functions.php                 | 151 ++++++++++++++++++++
 31 files changed, 1592 insertions(+)
 create mode 100644 .editorconfig
 create mode 100644 .gitattributes
 create mode 100644 .gitignore
 create mode 100644 README.md
 create mode 100755 art/logo.png
 create mode 100644 art/os/linux.png
 create mode 100644 art/os/macos.png
 create mode 100644 art/os/windows.png
 create mode 100644 composer.json
 create mode 100644 config/config.php
 create mode 100644 src/.gitkeep
 create mode 100644 src/Concerns/Colors.php
 create mode 100644 src/Http.php
 create mode 100644 src/LaraDumps.php
 create mode 100644 src/Payloads/ClearPayload.php
 create mode 100644 src/Payloads/ColorPayload.php
 create mode 100644 src/Payloads/DiffPayload.php
 create mode 100644 src/Payloads/DumpPayload.php
 create mode 100644 src/Payloads/EventPayload.php
 create mode 100644 src/Payloads/LogPayload.php
 create mode 100644 src/Payloads/ModelPayload.php
 create mode 100644 src/Payloads/Payload.php
 create mode 100644 src/Payloads/PhpInfoPayload.php
 create mode 100644 src/Payloads/QueriesPayload.php
 create mode 100644 src/Payloads/QueryPayload.php
 create mode 100644 src/Payloads/ScreenPayload.php
 create mode 100644 src/Payloads/TablePayload.php
 create mode 100644 src/Payloads/TimeTrackPayload.php
 create mode 100644 src/Support/Dumper.php
 create mode 100644 src/Support/IdeHandle.php
 create mode 100644 src/functions.php

diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..df55cd7
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,20 @@
+root = true
+
+[*]
+indent_style = space
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = false
+
+[*.{vue,js,scss}]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+trim_trailing_whitespace = false
\ No newline at end of file
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..9af3157
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,11 @@
+* text=auto
+
+/tests export-ignore
+.gitattributes export-ignore
+.gitignore export-ignore
+.scrutinizer.yml export-ignore
+.travis.yml export-ignore
+phpunit.php export-ignore
+phpunit.xml.dist export-ignore
+phpunit.xml export-ignore
+.php_cs export-ignore
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..497c4e2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+.idea
+*.DS_Store
+/vendor
+/coverage
+sftp-config.json
+composer.lock
+.subsplit
+.php_cs.cache
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..937c7f1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,94 @@
+<h1 align="center"> think-laradumps </h1>
+
+<p align="center"> debug tool Using Laradumps App in ThinkPHP6</p>
+
+<p align="center">
+  <img src="./art/logo.png" height="128" alt="" />
+</p>
+<h1 align="center">LaraDumps</h1>
+<div align="center">
+  <br />
+  <p align="center">
+    <a href="https://github.com/laradumps/app/releases/download/v1.2.3/LaraDumps-Setup-1.2.3.exe">
+      <img src="./art/os/windows.png" height="60" alt="LaraDumps Windows App" />
+    </a>
+    <a href="https://github.com/laradumps/app/releases/download/v1.2.3/LaraDumps-1.2.3.dmg">
+      <img src="./art/os/macos.png" height="60" alt="LaraDumps MacOS App" />
+    </a>
+    <a href="https://github.com/laradumps/app/releases/download/v1.2.3/LaraDumps-1.2.3.AppImage">
+      <img src="./art/os/linux.png" height="60" alt="LaraDumps Linux App" />
+    </a>
+  </p>
+  <h3>Click on your OS logo to download the Desktop App.</h3>
+  <sub>Available for Windows, Linux and macOS.</sub>
+  <br />
+  <br />
+  <p>
+    <a href="https://laradumps.dev"> 📚 Documentation </a>
+  </p>
+</div>
+ <br/>
+
+
+## 安装
+
+```shell
+$ composer require yangweijie/think-laradumps --dev -vvv
+```
+
+## 用法
+
+### 👋 Hello Dev,
+
+<br/>
+
+### Get Started
+
+#### Requirements
+
+ PHP 7.2+ and ThinkPHP6.0+
+
+#### Usage
+
+3. 配置 LaraDumps :
+
+编辑 安装扩展后自动创建的 laradumps 配置文件
+
+4. 调试你的代码通过使用 `ds()` 和 ThinkPHP 应用里的 trace 一样使用。
+
+> dsd == halt
+
+5. 运行应用,然后看到调试的信息在 LaraDumps App 窗口里。
+
+Here's an example:
+
+```php
+Route::get('/', function () {
+    ds('Home page accessed!');
+    return view('home');
+});
+```
+
+```php
+ds('')->phpinfo();
+```
+
+```php
+ds()->table([['id'=1,'name'=>'a']], 'table');
+```
+
+```php
+ds()->time('event');
+ds()->stopTime('event');
+
+```
+```php
+ds('调试信息1')->s('tab1'); // 可以输出不同调试到不同tab
+```
+
+至于显示日志功能,和监听sql,再考虑要不要实现,因为目前这个函数输出的是和ThinkPHP log 独立开来的。
+要高度扩展,可以实现基于本库再实现一个log 的驱动,倒时候配置database 的 trace 就行了。
+
+## License
+
+MIT
\ No newline at end of file
diff --git a/art/logo.png b/art/logo.png
new file mode 100755
index 0000000000000000000000000000000000000000..11b24660436a795a123d3e62a80b4f8614dac5b2
GIT binary patch
literal 67843
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
aG&k*-<;QCa8KArixN^}zJ73c(@c#hmg5moB

literal 0
HcmV?d00001

diff --git a/art/os/linux.png b/art/os/linux.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd92b58f3b7e535a95694abd9d80e8e5094897db
GIT binary patch
literal 37161
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

literal 0
HcmV?d00001

diff --git a/art/os/macos.png b/art/os/macos.png
new file mode 100644
index 0000000000000000000000000000000000000000..193feecce5a68cea44fe938e1cdac4e180c6cec2
GIT binary patch
literal 5261
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
C<mDRx

literal 0
HcmV?d00001

diff --git a/art/os/windows.png b/art/os/windows.png
new file mode 100644
index 0000000000000000000000000000000000000000..3de8a4b6e6015be85edb385c9cb60b20a7b848cc
GIT binary patch
literal 6295
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
POu^WYu_t$z^KbtHWONqX

literal 0
HcmV?d00001

diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..63303a2
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,31 @@
+{
+    "name": "yangweijie\/think-laradumps",
+    "description": "debug tool Using Laradumps App in ThinkPHP",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "yangweijie",
+            "email": "917647288@qq.com"
+        }
+    ],
+    "require": {
+        "php": ">=7.2.0",
+        "topthink/framework": "6.0.*",
+        "ramsey/uuid": "^4.2"
+    },
+    "autoload": {
+        "psr-4": {
+            "think\\Laradumps\\": "src"
+        },
+        "files": [
+            "src/functions.php"
+        ]
+    },
+    "extra": {
+        "think": {
+            "config": {
+                "laradumps": "config/config.php"
+            }
+        }
+    }
+}
diff --git a/config/config.php b/config/config.php
new file mode 100644
index 0000000..4216397
--- /dev/null
+++ b/config/config.php
@@ -0,0 +1,205 @@
+<?php
+
+use think\facade\Env;
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Host
+    |--------------------------------------------------------------------------
+    |
+    | Dumps App Host address. By default: '127.0.0.1',
+    | Uncomment the line below according to your environment.
+    |
+    */
+
+    'host' => Env::get('laradumps.DS_APP_HOST', '127.0.0.1'),
+
+    //'host' => 'host.docker.internal',    //Docker on Mac or Windows
+    //'host' => '127.0.0.1',               //Homestead with the VirtualBox provider,
+    //'host' => '10.211.55.2',             //Homestead with the Parallels provider,
+
+    /*
+    |--------------------------------------------------------------------------
+    | Port
+    |--------------------------------------------------------------------------
+    |
+    | Dumps App port. By default: 9191
+    |
+    */
+
+    'port' => Env::get('laradumps.DS_APP_PORT', 9191),
+
+    /*
+    |--------------------------------------------------------------------------
+    | Auto Invoke Desktop App
+    |--------------------------------------------------------------------------
+    |
+    | Invoke LaraDumps Desktop App to gain focus when a new dump arrives.
+    |
+    */
+
+    'auto_invoke_app' => Env::get('laradumps.DS_AUTO_INVOKE_APP', true),
+
+    /*
+    |--------------------------------------------------------------------------
+    | SQL Query dump
+    |--------------------------------------------------------------------------
+    |
+    | When `true`, it allows to dump database and send them to Desktop App.
+    | Required for: ds()->queriesOn() method.
+    |
+    */
+
+    'send_queries' => Env::get('laradumps.DS_SEND_QUERIES', false),
+
+    /*
+    |--------------------------------------------------------------------------
+    | Log dump
+    |--------------------------------------------------------------------------
+    |
+    | When `true`, it allows to dump Laravel logs and send them to Desktop App.
+    | Required for logs dumping.
+    |
+    */
+
+    'send_log_applications' => Env::get('laradumps.DS_SEND_LOGS', false),
+
+    'auto_clear_on_page_reload' => Env::get('laradumps.DS_AUTO_CLEAR_ON_PAGE_RELOAD', false),
+
+    /*
+    |--------------------------------------------------------------------------
+    | Preferred IDE
+    |--------------------------------------------------------------------------
+    |
+    | Configure your preferred IDE to be used in Dumps App file links.
+    |
+    */
+
+    'preferred_ide' => Env::get('laradumps.DS_PREFERRED_IDE', 'phpstorm'),
+
+    /*
+    |--------------------------------------------------------------------------
+    | IDE Handlers
+    |--------------------------------------------------------------------------
+    |
+    | Dumps already ships with pre-configured IDE protocol handlers.
+    | You may adjust the handler or include custom ones, if needed.
+    |
+    */
+
+    'ide_handlers' => [
+        'atom' => [
+            'handler'        => 'atom://core/open/file?filename=',
+            'line_separator' => '&line=',
+        ],
+        'phpstorm' => [
+            'handler'        => 'phpstorm://open?file=',
+            'line_separator' => '&line=',
+        ],
+        'sublime' => [
+            'handler'        => 'subl://open?url=file://',
+            'line_separator' => '&line=',
+        ],
+        'vscode' => [
+            'handler'        => 'vscode://file/',
+            'line_separator' => ':',
+        ],
+        'vscode_remote' => [
+            'handler'        => 'vscode://vscode-remote/',
+            'line_separator' => ':',
+            'local_path'     => 'wsl+' . Env::get('laradumps.DS_PREFERRED_WSL_DISTRO', 'Ubuntu20.04LTS'),
+            'remote_path'    => Env::get('laradumps.DS_REMOTE_PATH', null),
+            'work_dir'       => Env::get('laradumps.DS_WORKDIR', '/var/www/html'),
+        ],
+    ],
+
+    /*
+    |--------------------------------------------------------------------------
+    | Ignore Routes
+    |--------------------------------------------------------------------------
+    |
+    | Routes containing the words listed below will NOT be dumped with
+    | ds()->routes() command.
+    |
+    */
+
+    'ignore_route_contains' => [
+        'debugbar',
+        'ignition',
+        'horizon',
+        'livewire',
+    ],
+
+    /*
+    |--------------------------------------------------------------------------
+    | Sleep
+    |--------------------------------------------------------------------------
+    |
+    | You can specify an interval in 'seconds' between sending dumps
+    | to the Desktop App.
+    |
+    */
+
+    'sleep' => Env::get('laradumps.DS_SLEEP'),
+
+    /*
+    |--------------------------------------------------------------------------
+    | Color in Screen
+    |--------------------------------------------------------------------------
+    |
+    | If true, LaraDumps will separate colors into screens with the name of the
+    | submitted color.
+    |
+    */
+
+    'send_color_in_screen' => Env::get('laradumps.DS_SEND_COLOR_IN_SCREEN', false),
+
+    /*
+    |--------------------------------------------------------------------------
+    | Color in Screen - Color Map
+    |--------------------------------------------------------------------------
+    |
+    | Color map for "Color in Screen" feature.
+    |
+    */
+
+    'screen_btn_colors_map' => [
+        'default' => [
+            'default' => 'btn-white',
+        ],
+        'danger' => [
+            'default' => 'btn-danger',
+        ],
+        'info' => [
+            'default' => 'btn-info',
+        ],
+        'success' => [
+            'default' => 'btn-success',
+        ],
+        'warning' => [
+            'default' => 'btn-warning',
+        ],
+    ],
+
+    /*
+    |--------------------------------------------------------------------------
+    | Level Log Colors Map
+    |--------------------------------------------------------------------------
+    |
+    | Definition of Tailwind CSS class for LaraDumps color tag.
+    |
+    */
+
+    'level_log_colors_map' => [
+        'error'     => Env::get('laradumps.DS_LOG_COLOR_ERROR', 'bg-red-600'),
+        'critical'  => Env::get('laradumps.DS_LOG_COLOR_CRITICAL', 'bg-red-600'),
+        'alert'     => Env::get('laradumps.DS_LOG_COLOR_ALERT', 'bg-red-600'),
+        'emergency' => Env::get('laradumps.DS_LOG_COLOR_EMERGENCY', 'bg-red-600'),
+        'warning'   => Env::get('laradumps.DS_LOG_COLOR_WARNING', 'bg-orange-300'),
+        'notice'    => Env::get('laradumps.DS_LOG_COLOR_NOTICE', 'bg-blue-300'),
+        'info'      => Env::get('laradumps.DS_LOG_COLOR_INFO', 'bg-gray-300'),
+    ],
+
+];
\ No newline at end of file
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/src/Concerns/Colors.php b/src/Concerns/Colors.php
new file mode 100644
index 0000000..21a48a5
--- /dev/null
+++ b/src/Concerns/Colors.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace think\Laradumps\Concerns;
+
+use think\Laradumps\LaraDumps;
+
+trait Colors
+{
+    public function danger(): LaraDumps
+    {
+        if (boolval(config('laradumps.send_color_in_screen'))) {
+            return $this->toScreen('danger', true);
+        }
+
+        return $this->color('bg-red-300');
+    }
+
+    public function dark(): LaraDumps
+    {
+        return $this->color('bg-black');
+    }
+
+    public function warning(): LaraDumps
+    {
+        if (boolval(config('laradumps.send_color_in_screen'))) {
+            return $this->toScreen('warning', true);
+        }
+
+        return $this->color('bg-orange-300');
+    }
+
+    public function success(): LaraDumps
+    {
+        if (boolval(config('laradumps.send_color_in_screen'))) {
+            return $this->toScreen('success', true);
+        }
+
+        return $this->color('bg-green-600');
+    }
+
+    public function info(): LaraDumps
+    {
+        if (boolval(config('laradumps.send_color_in_screen'))) {
+            return $this->toScreen('info', true);
+        }
+
+        return $this->color('bg-blue-600');
+    }
+}
\ No newline at end of file
diff --git a/src/Http.php b/src/Http.php
new file mode 100644
index 0000000..065afbd
--- /dev/null
+++ b/src/Http.php
@@ -0,0 +1,150 @@
+<?php
+
+// +----------------------------------------------------------------------
+// | Library for ThinkAdmin
+// +----------------------------------------------------------------------
+// | 版权所有 2014~2018 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
+// +----------------------------------------------------------------------
+// | 官方网站: http://library.thinkadmin.top
+// +----------------------------------------------------------------------
+// | 开源协议 ( https://mit-license.org )
+// +----------------------------------------------------------------------
+// | github 仓库地址 :https://github.com/zoujingli/ThinkLibrary
+// +----------------------------------------------------------------------
+
+namespace think\Laradumps;
+
+/**
+ * CURL数据请求管理器
+ * Class Http
+ * @package library\tools
+ */
+class Http
+{
+    /**
+     * 以get模拟网络请求
+     * @param string $url HTTP请求URL地址
+     * @param array $query GET请求参数
+     * @param array $options CURL参数
+     * @return boolean|string
+     */
+    public static function get($url, $query = [], $options = [])
+    {
+        $options['query'] = $query;
+        return self::request('get', $url, $options);
+    }
+
+    /**
+     * 以get模拟网络请求
+     * @param string $url HTTP请求URL地址
+     * @param array $data POST请求数据
+     * @param array $options CURL参数
+     * @return boolean|string
+     */
+    public static function post($url, $data = [], $options = [])
+    {
+        $options['data'] = $data;
+        return self::request('post', $url, $options);
+    }
+
+    /**
+     * CURL模拟网络请求
+     * @param string $method 请求方法
+     * @param string $url 请求方法
+     * @param array $options 请求参数[headers,data]
+     * @return boolean|string
+     */
+    public static function request($method, $url, $options = [])
+    {
+        $key  = "http_{$url}";
+        cache($key, null);
+        $curl = curl_init();
+        // GET 参数设置
+        if (!empty($options['query'])) {
+            $url .= (stripos($url, '?') !== false ? '&' : '?') . http_build_query($options['query']);
+        }
+        // 浏览器代理设置
+        curl_setopt($curl, CURLOPT_USERAGENT, self::getUserAgent());
+        // CURL 头信息设置
+        if (!empty($options['headers'])) {
+            curl_setopt($curl, CURLOPT_HTTPHEADER, $options['headers']);
+        }
+        // Cookie 信息设置
+        if (!empty($options['cookie'])) {
+            curl_setopt($curl, CURLOPT_COOKIE, $options['cookie']);
+        }
+        if (!empty($options['cookie_file'])) {
+            curl_setopt($curl, CURLOPT_COOKIEJAR, $options['cookie_file']);
+            curl_setopt($curl, CURLOPT_COOKIEFILE, $options['cookie_file']);
+        }
+        // POST 数据设置
+        if (strtolower($method) === 'post') {
+            curl_setopt($curl, CURLOPT_POST, true);
+            curl_setopt($curl, CURLOPT_POSTFIELDS, self::buildQueryData($options['data']));
+        }
+        // 请求超时设置
+        if (isset($options['timeout']) && is_numeric($options['timeout'])) {
+            curl_setopt($curl, CURLOPT_TIMEOUT, $options['timeout']);
+        } else {
+            curl_setopt($curl, CURLOPT_TIMEOUT, 60);
+        }
+        curl_setopt($curl, CURLOPT_URL, $url);
+        curl_setopt($curl, CURLOPT_HEADER, false);
+        curl_setopt($curl, CURLOPT_AUTOREFERER, true);
+        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
+        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
+        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
+        $content = curl_exec($curl);
+        if(curl_errno($curl))
+        {
+            $error = curl_error($curl);
+            cache($key, $error);
+            trace($error);
+        }
+        curl_close($curl);
+        return $content;
+    }
+
+    /**
+     * POST数据过滤处理
+     * @param array $data 需要处理的数据
+     * @param boolean $build 是否编译数据
+     * @return array|string
+     */
+    private static function buildQueryData($data, $build = true)
+    {
+        if (!is_array($data)) return $data;
+        foreach ($data as $key => $value) if (is_object($value) && $value instanceof \CURLFile) {
+            $build = false;
+        } elseif (is_string($value) && class_exists('CURLFile', false) && stripos($value, '@') === 0) {
+            if (($filename = realpath(trim($value, '@'))) && file_exists($filename)) {
+                list($build, $data[$key]) = [false, new \CURLFile($filename)];
+            }
+        }
+        return $build ? http_build_query($data) : $data;
+    }
+
+
+    /**
+     * 获取浏览器代理信息
+     * @return string
+     */
+    private static function getUserAgent()
+    {
+        if (!empty($_SERVER['HTTP_USER_AGENT'])) return $_SERVER['HTTP_USER_AGENT'];
+        $userAgents = [
+            "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
+            "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
+            "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0",
+            "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko",
+            "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
+            "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)",
+            "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",
+            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
+            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
+        ];
+        return $userAgents[array_rand($userAgents, 1)];
+    }
+
+}
\ No newline at end of file
diff --git a/src/LaraDumps.php b/src/LaraDumps.php
new file mode 100644
index 0000000..57577ca
--- /dev/null
+++ b/src/LaraDumps.php
@@ -0,0 +1,227 @@
+<?php
+
+namespace think\Laradumps;
+
+use think\Model;
+use Illuminate\Support\{Collection, Str};
+use think\Laradumps\Concerns\Colors;
+use think\Laradumps\Payloads\{ClearPayload,
+    ColorPayload,
+    DiffPayload,
+    DumpPayload,
+    LabelPayload,
+    ModelPayload,
+    Payload,
+    PhpInfoPayload,
+    RoutesPayload,
+    ScreenPayload,
+    TablePayload,
+    TimeTrackPayload,
+    ValidateStringPayload};
+
+class LaraDumps
+{
+    use Colors;
+
+    public $notificationId = '';
+    public $fullUrl = '';
+    public $backtrace = [];
+
+    public function __construct(
+        $notificationId = '',
+        $fullUrl = '',
+        $backtrace = []
+    ) {
+        if (config('laradumps.sleep')) {
+            $sleep = intval(config('laradumps.sleep'));
+            sleep($sleep);
+        }
+
+        $this->fullUrl        = config('laradumps.host') . ':' . config('laradumps.port') . '/api/dumps';
+        $this->notificationId = $notificationId?? Str::uuid()->toString();
+        $this->backtrace      = $backtrace;
+    }
+
+    public function send($payload)
+    {
+        if ($payload instanceof Payload) {
+            $payload->trace($this->backtrace);
+            $payload->notificationId($this->notificationId);
+            $payload = $payload->toArray();
+            try {
+                Http::post($this->fullUrl, $payload);
+            } catch (\Throwable $e) {
+                trace($e->getMessage().PHP_EOL.$e->getTraceAsString());
+            }
+        }
+
+        return $payload;
+    }
+
+    /**
+     * Send custom color
+     *
+     */
+    public function color(string $color): LaraDumps
+    {
+        $payload = new ColorPayload($color);
+        $this->send($payload);
+
+        return $this;
+    }
+
+    /**
+     * Add new screen
+     *
+     */
+    public function s(string $screen, bool $classAttr = false): LaraDumps
+    {
+        return $this->toScreen($screen, $classAttr);
+    }
+
+    /**
+     * Add new screen
+     *
+     * @param int $raiseIn Delay in seconds for the app to raise and focus
+     */
+    public function toScreen(
+        string $screenName,
+        bool $classAttr = false,
+        int $raiseIn = 0
+    ): LaraDumps {
+        $payload = new ScreenPayload($screenName, $classAttr, $raiseIn);
+        $this->send($payload);
+
+        return $this;
+    }
+
+    /**
+     * Send dump and die
+     */
+    public function die(string $status = ''): void
+    {
+        die($status);
+    }
+
+    /**
+     * Clear screen
+     *
+     */
+    public function clear(): LaraDumps
+    {
+        $this->send(new ClearPayload());
+
+        return $this;
+    }
+
+    /**
+     * Send PHPInfo
+     *
+     */
+    public function phpinfo(): LaraDumps
+    {
+        $this->send(new PhpInfoPayload());
+
+        return $this;
+    }
+
+    /**
+     * Send Table
+     *
+     */
+    public function table($data = [], string $name = '')
+    {
+        $this->send(new TablePayload($data, $name));
+
+        return $this;
+    }
+
+    public function write($args = null, ?bool $autoInvokeApp = null): LaraDumps
+    {
+        $originalContent = $args;
+        $args            = Support\Dumper::dump($args);
+        trace($args);
+        if (!empty($args)) {
+            $payload = new DumpPayload($args, $originalContent);
+            trace($payload);
+            $payload->autoInvokeApp($autoInvokeApp);
+            $this->send($payload);
+        }
+
+        return $this;
+    }
+
+    // /**
+    //  * Shows model attributes and relationship
+    //  *
+    //  */
+    // public function model(Model ...$models): LaraDumps
+    // {
+    //     foreach ($models as $model) {
+    //         if ($model instanceof Model) {
+    //             $payload    = new ModelPayload($model);
+    //             $this->send($payload);
+    //         }
+    //     }
+
+    //     return $this;
+    // }
+
+    /**
+     * Display all queries that are executed with custom label
+     *
+     */
+    public function queriesOn(string $label = null): void
+    {
+        $backtrace   = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0];
+
+        app(QueryObserver::class)->setTrace($backtrace);
+        app(QueryObserver::class)->enable($label);
+    }
+
+    /**
+     * Stop displaying queries
+     *
+     */
+    public function queriesOff(): void
+    {
+        app(QueryObserver::class)->disable();
+    }
+
+    /**
+     * @param mixed $argument
+     * @param boolean $splitDiff Outputs comparison result in 2 rows (original/diff).
+     * @return LaraDumps
+     */
+    public function diff(mixed $argument, bool $splitDiff = false): LaraDumps
+    {
+        $argument  = is_array($argument) ? json_encode($argument) : $argument;
+
+        $payload = new DiffPayload($argument, $splitDiff);
+        $this->send($payload);
+
+        return $this;
+    }
+
+    /**
+     * Starts clocking a code block execution time
+     *
+     * @param string $reference Unique name for this time clocking
+     */
+    public function time(string $reference): void
+    {
+        $payload = new TimeTrackPayload($reference);
+        $this->send($payload);
+    }
+
+    /**
+     * Stops clocking a code block execution time
+     *
+     * @param string $reference Unique name called on ds()->time()
+     */
+    public function stopTime(string $reference): void
+    {
+        $payload = new TimeTrackPayload($reference);
+        $this->send($payload);
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/ClearPayload.php b/src/Payloads/ClearPayload.php
new file mode 100644
index 0000000..cebf25c
--- /dev/null
+++ b/src/Payloads/ClearPayload.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+class ClearPayload extends Payload
+{
+    public function type(): string
+    {
+        return 'clear';
+    }
+
+    /** @return array<string> */
+    public function content(): array
+    {
+        return [];
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/ColorPayload.php b/src/Payloads/ColorPayload.php
new file mode 100644
index 0000000..3396899
--- /dev/null
+++ b/src/Payloads/ColorPayload.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+class ColorPayload extends Payload
+{
+    public $color;
+    public function __construct(
+        string $color
+    ) {
+        $this->color = $color;
+    }
+
+    public function type(): string
+    {
+        return 'color';
+    }
+
+    /** @return array<string> */
+    public function content(): array
+    {
+        return [
+            'color' => $this->color,
+        ];
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/DiffPayload.php b/src/Payloads/DiffPayload.php
new file mode 100644
index 0000000..88e305e
--- /dev/null
+++ b/src/Payloads/DiffPayload.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+class DiffPayload extends Payload
+{
+    public mixed $argument;
+    public bool $splitDiff;
+
+    public function __construct(
+        mixed $argument,
+        bool $splitDiff
+    ) {
+        $this->argument  = $argument;
+        $this->splitDiff = $splitDiff;
+    }
+
+    public function type(): string
+    {
+        return 'diff';
+    }
+
+    /** @return array<string, mixed> */
+    public function content(): array
+    {
+        return [
+            'argument'  => $this->argument,
+            'splitDiff' => $this->splitDiff,
+        ];
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/DumpPayload.php b/src/Payloads/DumpPayload.php
new file mode 100644
index 0000000..7c38fbf
--- /dev/null
+++ b/src/Payloads/DumpPayload.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+class DumpPayload extends Payload
+{
+    public  $dump;
+    public  $originalContent = null;
+
+    public function __construct(
+        $dump,
+        $originalContent = null
+    ) {
+        $this->dump            = $dump;
+        $this->originalContent = $originalContent;
+    }
+
+    public function type(): string
+    {
+        return 'dump';
+    }
+
+    public function content(): array
+    {
+        return [
+            'dump'            => $this->dump,
+            'originalContent' => $this->originalContent,
+        ];
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/EventPayload.php b/src/Payloads/EventPayload.php
new file mode 100644
index 0000000..4fe8bea
--- /dev/null
+++ b/src/Payloads/EventPayload.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+class EventPayload extends Payload
+{
+    /** @var object|mixed|null */
+    protected $event = null;
+
+    public function __construct($eventName, $payload)
+    {
+        if (class_exists($eventName)) {
+            $this->event = $payload[0];
+        }
+        $this->payload = $payload;
+    }
+
+    public function content(): array
+    {
+        return [
+            'name'              => $this->eventName,
+            'event'             => $this->event ?: null,
+            'payload'           => count($this->payload) ? $this->payload : null,
+            'class_based_event' => !is_null($this->event),
+        ];
+    }
+
+    public function type(): string
+    {
+        return 'events';
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/LogPayload.php b/src/Payloads/LogPayload.php
new file mode 100644
index 0000000..be990c6
--- /dev/null
+++ b/src/Payloads/LogPayload.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+class LogPayload extends Payload
+{
+    protected  $value;
+    public function __construct(
+        $value
+    ) {
+        $this->value = $value;
+    }
+
+    public function type(): string
+    {
+        return 'log';
+    }
+
+    public function content(): array
+    {
+        return [
+            'value' => $this->value,
+        ];
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/ModelPayload.php b/src/Payloads/ModelPayload.php
new file mode 100644
index 0000000..bd9adc5
--- /dev/null
+++ b/src/Payloads/ModelPayload.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+use think\Model;
+use think\Laradumps\Support\Dumper;
+
+class ModelPayload extends Payload
+{
+    protected $model;
+
+    public function __construct(
+        $model
+    ) {
+        $this->model = $model;
+    }
+
+    public function type(): string
+    {
+        return 'model';
+    }
+
+    /** @return array<string, array|string> */
+    public function content(): array
+    {
+        $relations = $this->model->getRelation();
+
+        return [
+            'relations'  => $relations ? Dumper::dump($relations) : [],
+            'className'  => get_class($this->model),
+            'attributes' => Dumper::dump($this->modelAttributes($this->model)),
+        ];
+    }
+
+    public function modelAttributes($model){
+        $data    = $model->getData();
+        $orign   = $model->getOrigin();
+        if($data == $orign){
+            return $data;
+        }else{
+            $ret = [];
+            foreach ($data as $key => $value) {
+                $ret[$key] = $model->getAttr($value);
+            }
+            return $ret;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/Payload.php b/src/Payloads/Payload.php
new file mode 100644
index 0000000..c764959
--- /dev/null
+++ b/src/Payloads/Payload.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+use think\Laradumps\Support\IdeHandle;
+
+abstract class Payload
+{
+    private $notificationId;
+
+    private $backtrace = [];
+
+    protected $typesWithTrace = [
+        'table',
+        'validate',
+        'query',
+        'queries',
+        'dump',
+        'events',
+        'diff',
+        'model',
+        'time-track',
+    ];
+
+    private ?bool $autoInvokeApp = null;
+
+    abstract public function type(): string;
+
+    public function trace(array $backtrace): void
+    {
+        $this->backtrace = $backtrace;
+    }
+
+    public function notificationId(string $notificationId): void
+    {
+        $this->notificationId = $notificationId;
+    }
+
+    public function content(): array
+    {
+        return [];
+    }
+
+    public function ideHandle(): array
+    {
+        $trace = new IdeHandle( $this->backtrace);
+
+        return $trace->ideHandle();
+    }
+
+    public function customHandle(): array
+    {
+        return [];
+    }
+
+    public function autoInvokeApp(?bool $enable = null): void
+    {
+        $this->autoInvokeApp = $enable;
+    }
+
+    public function toArray(): array
+    {
+        $ideHandle = $this->customHandle();
+        if (in_array($this->type(), $this->typesWithTrace)) {
+            $ideHandle = $this->ideHandle();
+        }
+
+        $pusherConfig = '';
+        if (boolval(config('laradumps.send_livewire_components_highlight'))) {
+            $pusherConfig = config('broadcasting.connections.pusher');
+        }
+
+        return [
+            'id'   => $this->notificationId,
+            'type' => $this->type(),
+            'meta' => [
+                'laradumps_version' => $this->getInstalledVersion(),
+                'auto_invoke_app'   => $this->autoInvokeApp ?? boolval(config('laradumps.auto_invoke_app')),
+            ],
+            'content'   => $this->content(),
+            'ideHandle' => $ideHandle,
+            'dateTime'  => date('H:i:s'),
+            'pusher'    => $pusherConfig,
+        ];
+    }
+
+    public function getInstalledVersion(): ?string
+    {
+        return '1.3.2.0';
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/PhpInfoPayload.php b/src/Payloads/PhpInfoPayload.php
new file mode 100644
index 0000000..863fd32
--- /dev/null
+++ b/src/Payloads/PhpInfoPayload.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+class PhpInfoPayload extends Payload
+{
+    public function type(): string
+    {
+        return 'table';
+    }
+
+    /**
+     * @return array
+     */
+    public function content(): array
+    {
+        $phpinfo = [
+            'PHP version'          => phpversion(),
+            'Memory limit'         => ini_get('memory_limit'),
+            'Max file upload size' => ini_get('max_file_uploads'),
+            'Max post size'        => ini_get('post_max_size'),
+            'ini file'             => php_ini_loaded_file(),
+            'Extensions'           => implode(', ', get_loaded_extensions()),
+        ];
+
+        foreach ($phpinfo as $key => $value) {
+            /** @var array<string> $values */
+            $values[] = [
+                'property' => $key,
+                'value'    => $value,
+            ];
+        }
+
+        return [
+            'fields' => [
+                'property',
+                'value',
+            ],
+            'values' => $values,
+            'header' => [
+                'Property',
+                'Value',
+            ],
+            'label' => 'PHPINFO',
+        ];
+    }
+}
diff --git a/src/Payloads/QueriesPayload.php b/src/Payloads/QueriesPayload.php
new file mode 100644
index 0000000..e28b4d3
--- /dev/null
+++ b/src/Payloads/QueriesPayload.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+class QueriesPayload extends Payload
+{
+    private $queries = [];
+    public $file     = '';
+    public $line     = '';
+    public $trace    = [];
+
+    public function __construct(
+        $queries = [],
+        $file    = '',
+        $line    = '',
+        $trace   = []
+    ) {
+        $this->queries = $queries;
+        $this->file    = $file;
+        $this->line    = $line;
+        $this->trace   = $trace;
+    }
+
+    public function type(): string
+    {
+        return 'queries';
+    }
+
+    public function content(): array
+    {
+        return [
+            'queries' => $this->queries,
+            'file'    => $this->file,
+            'line'    => $this->line,
+        ];
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/QueryPayload.php b/src/Payloads/QueryPayload.php
new file mode 100644
index 0000000..06af3d3
--- /dev/null
+++ b/src/Payloads/QueryPayload.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+use Illuminate\Database\Query\Builder;
+
+class QueryPayload extends Payload
+{
+    protected $query;
+    public function __construct(
+        $query
+    ) {
+        $this->query = $query;
+    }
+
+    public function content(): array
+    {
+        $toSql = str_replace(['?'], ['\'%s\''], $this->query->toSql());
+        $toSql = vsprintf($toSql, $this->query->getBindings());
+
+        return [
+            'sql' => $toSql,
+        ];
+    }
+
+    public function type(): string
+    {
+        return 'query';
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/ScreenPayload.php b/src/Payloads/ScreenPayload.php
new file mode 100644
index 0000000..9de94b7
--- /dev/null
+++ b/src/Payloads/ScreenPayload.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+class ScreenPayload extends Payload
+{
+    public  $screenName;
+    public  $classAttr = false;
+    public  $raiseIn   = 0;
+
+    public function __construct(
+        $screenName,
+        $classAttr = false,
+        $raiseIn = 0
+    ) {
+        $this->screenName = $screenName;
+        $this->classAttr  = $classAttr;
+        $this->raiseIn    = $raiseIn;
+    }
+
+    public function type(): string
+    {
+        return 'screen';
+    }
+
+    /** @return array<string|mixed> */
+    public function content(): array
+    {
+        /** @var array $config */
+        $config    = config('laradumps.screen_btn_colors_map');
+        $classAttr = ($this->classAttr) ? $config[$this->screenName] : $config['default'];
+
+        return [
+            'screenName' => $this->screenName,
+            'classAttr'  => $classAttr,
+            'raiseIn'    => $this->raiseIn,
+        ];
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/TablePayload.php b/src/Payloads/TablePayload.php
new file mode 100644
index 0000000..ffacfa2
--- /dev/null
+++ b/src/Payloads/TablePayload.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+use Illuminate\Support\Collection;
+
+class TablePayload extends Payload
+{
+    private $data = [];
+    private $name = '';
+
+    public function __construct(
+        $data = [],
+        $name = ''
+    ) {
+        if (blank($this->name)) {
+            $this->name = 'Table';
+        }
+        $this->data = $data;
+    }
+
+    public function type(): string
+    {
+        return 'table';
+    }
+
+    /**
+     * @return array
+     */
+    public function content(): array
+    {
+        $values  = [];
+        $columns = [];
+
+        if ($this->data instanceof Collection) {
+            $this->data = $this->data->toArray();
+        }
+
+        foreach ($this->data as $row) {
+            foreach ($row as $key => $item) {
+                if (!in_array($key, $columns)) {
+                    $columns[] = $key;
+                }
+            }
+
+            $value = [];
+            foreach ($columns as $column) {
+                $value[$column] = (string) $row[$column];
+            }
+
+            $values[] = $value;
+        }
+
+        return [
+            'fields' => $columns,
+            'values' => $values,
+            'header' => $columns,
+            'label'  => $this->name,
+        ];
+    }
+}
\ No newline at end of file
diff --git a/src/Payloads/TimeTrackPayload.php b/src/Payloads/TimeTrackPayload.php
new file mode 100644
index 0000000..e284689
--- /dev/null
+++ b/src/Payloads/TimeTrackPayload.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace think\Laradumps\Payloads;
+
+class TimeTrackPayload extends Payload
+{
+     public $reference;
+
+    /**
+     * Clock script executiontime
+     *
+     * @param string $reference Reference name used in each call
+     */
+    public function __construct(
+        $reference
+    ) {
+        $this->reference = $reference;
+    }
+
+    public function type(): string
+    {
+        return 'time-track';
+    }
+
+    /** @return array<string, mixed> */
+    public function content(): array
+    {
+        return [
+            'timeTrackerId' => base64_encode(config('app.name') . strtolower($this->reference)),
+            'label'         => $this->reference,
+            'time'          => microtime(true),
+        ];
+    }
+}
\ No newline at end of file
diff --git a/src/Support/Dumper.php b/src/Support/Dumper.php
new file mode 100644
index 0000000..2ec887e
--- /dev/null
+++ b/src/Support/Dumper.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace think\Laradumps\Support;
+
+use Symfony\Component\VarDumper\Cloner\VarCloner;
+use Symfony\Component\VarDumper\Dumper\HtmlDumper;
+
+class Dumper
+{
+    public static function dump($arguments): string
+    {
+        $varCloner = new VarCloner();
+
+        $dumper = new HtmlDumper();
+
+        $htmlDumper = (string) $dumper->dump($varCloner->cloneVar($arguments), true);
+        return self::cut($htmlDumper, '<pre ', '</pre>');
+    }
+
+    public static function cut($string, $begin, $end){
+        $str = strstr($string ,$begin);
+        $str = strstr($str, $end, true). $end;
+        return $str;
+    }
+}
\ No newline at end of file
diff --git a/src/Support/IdeHandle.php b/src/Support/IdeHandle.php
new file mode 100644
index 0000000..c8bedd6
--- /dev/null
+++ b/src/Support/IdeHandle.php
@@ -0,0 +1,73 @@
+<?php
+
+namespace think\Laradumps\Support;
+
+class IdeHandle
+{
+    public $backtrace;
+    public function __construct(
+       $backtrace = []
+    ) {
+        $this->backtrace = $backtrace;
+    }
+
+    public function ideHandle(): array
+    {
+        $file = $this->backtrace['file']?? '';
+
+        $line = $this->backtrace['line']?? 0;
+
+        $fileHandle = $this->makeFileHandler($file, $line);
+
+        if (str_contains($file, 'Laravel Kit')) {
+            $fileHandle = '';
+            $file       = 'Laravel Kit';
+            $line       = '';
+        }
+
+        if (str_contains($file, 'eval()')) {
+            $fileHandle = '';
+            $file       = 'Tinker';
+            $line       = '';
+        }
+
+        $file = str_replace(base_path() . '/', '', strval($file));
+
+        if (str_contains($file, 'resources')) {
+            $file = str_replace('resources/views/', '', strval($file));
+        }
+
+        return [
+            'handler' => $fileHandle,
+            'path'    => $file,
+            'line'    => $line,
+        ];
+    }
+
+    public static function makeFileHandler(?string $file, $line): string
+    {
+        /** @var string $preferredIde */
+        $preferredIde = config('laradumps.preferred_ide');
+        /** @var array $handlers */
+        $handlers   = config('laradumps.ide_handlers');
+
+        $ide        = $handlers[$preferredIde] ?? $handlers['vscode'];
+        $localPath  = $ide['local_path']       ?? null;
+        $remotePath = $ide['remote_path']      ?? null;
+        $workDir    = $ide['work_dir']         ?? null;
+
+        if (!empty($localPath)) {
+            $file      = $localPath . $file;
+        }
+
+        if (!empty($remotePath)) {
+            $file = str_replace($workDir, $remotePath, strval($file));
+        }
+
+        if (!empty($ide['line_separator'])) {
+            $line = $ide['line_separator'] . $line;
+        }
+
+        return $ide['handler'] . $file . $line;
+    }
+}
\ No newline at end of file
diff --git a/src/functions.php b/src/functions.php
new file mode 100644
index 0000000..1a82272
--- /dev/null
+++ b/src/functions.php
@@ -0,0 +1,151 @@
+<?php
+
+
+use Illuminate\Support\Str;
+use think\Laradumps\LaraDumps;
+use think\Laradumps\Payloads\BladePayload;
+use Ramsey\Uuid\Uuid;
+use Ramsey\Uuid\UuidFactory;
+
+if(!function_exists('uuid')){
+    function uuid(){
+        return Uuid::uuid4()->toString();
+    }
+}
+
+if (!function_exists('ds')) {
+    function ds(...$args): LaraDumps
+    {
+        $backtrace      = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0];
+        $notificationId = uuid();
+        $dump           = new LaraDumps($notificationId, '', $backtrace);
+        if ($args) {
+            foreach ($args as $arg) {
+                $dump->write($arg);
+            }
+        }
+
+        return $dump;
+    }
+}
+
+if (!function_exists('phpinfo')) {
+    function phpinfo(): LaraDumps
+    {
+        return ds()->phpinfo();
+    }
+}
+
+if (!function_exists('dsd')) {
+    function dsd(...$args): void
+    {
+        ds($args)->die();
+    }
+}
+
+if (!function_exists('ds1')) {
+    function ds1(...$args): LaraDumps
+    {
+        $backtrace   = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0];
+
+        $notificationId = uuid();
+        $dump           = new LaraDumps($notificationId, $backtrace);
+
+        if ($args) {
+            foreach ($args as $arg) {
+                $dump->write($arg)->toScreen('screen 1');
+            }
+        }
+
+        return new LaraDumps($notificationId, $backtrace);
+    }
+}
+
+if (!function_exists('ds2')) {
+    function ds2(...$args): LaraDumps
+    {
+        $backtrace   = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0];
+
+        $notificationId = uuid();
+        $dump           = new LaraDumps($notificationId, $backtrace);
+
+        if ($args) {
+            foreach ($args as $arg) {
+                $dump->write($arg)->toScreen('screen 2');
+            }
+        }
+
+        return new LaraDumps($notificationId, $backtrace);
+    }
+}
+
+if (!function_exists('ds3')) {
+    function ds3(...$args): LaraDumps
+    {
+        $backtrace   = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0];
+
+        $notificationId = uuid();
+        $dump           = new LaraDumps($notificationId, $backtrace);
+
+        if ($args) {
+            foreach ($args as $arg) {
+                $dump->write($arg)->toScreen('screen 3');
+            }
+        }
+
+        return new LaraDumps($notificationId, $backtrace);
+    }
+}
+
+if (!function_exists('ds4')) {
+    function ds4(...$args): LaraDumps
+    {
+        $backtrace   = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0];
+
+        $notificationId = uuid();
+        $dump           = new LaraDumps($notificationId, $backtrace);
+
+        if ($args) {
+            foreach ($args as $arg) {
+                $dump->write($arg)->toScreen('screen 4');
+            }
+        }
+
+        return new LaraDumps($notificationId, $backtrace);
+    }
+}
+
+if (!function_exists('ds5')) {
+    function ds5(...$args): LaraDumps
+    {
+        $backtrace   = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0];
+
+        $notificationId = uuid();
+        $dump           = new LaraDumps($notificationId, $backtrace);
+
+        if ($args) {
+            foreach ($args as $arg) {
+                $dump->write($arg)->toScreen('screen 5');
+            }
+        }
+
+        return new LaraDumps($notificationId, $backtrace);
+    }
+}
+
+
+if (!function_exists('dsq')) {
+    function dsq(...$args): void
+    {
+        $backtrace   = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1)[0];
+
+        $notificationId = uuid();
+        $dump           = new LaraDumps($notificationId, $backtrace);
+
+        if ($args) {
+            foreach ($args as $arg) {
+                $dump->write($arg, false);
+            }
+        }
+    }
+}
\ No newline at end of file