├── tests ├── usr │ └── .keep ├── test.php └── docker-compose.yml ├── .gitignore ├── markdown-parse-config-page.png ├── renovate.json ├── composer.json ├── .github └── workflows │ ├── pr-check.yml │ └── release.yml ├── LICENSE.md ├── README.md ├── Plugin.php ├── MarkdownParse.php └── composer.lock /tests/usr/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | tests/usr 2 | vendor 3 | vendor.phar -------------------------------------------------------------------------------- /markdown-parse-config-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrgeneralgoo/typecho-markdown/HEAD/markdown-parse-config-page.png -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:recommended" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "php": "^8.1", 4 | "league/commonmark": "^2.4", 5 | "wnx/commonmark-mark-extension": "^1.2", 6 | "simonvomeyser/commonmark-ext-lazy-image": "^2.0", 7 | "clue/phar-composer": "^1.4" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tests/test.php: -------------------------------------------------------------------------------- 1 | setIsTocEnable(true); 10 | 11 | echo $markdownParser->parse('Hello World!'); 12 | -------------------------------------------------------------------------------- /tests/docker-compose.yml: -------------------------------------------------------------------------------- 1 | services: 2 | typecho: 3 | image: joyqi/typecho:nightly-php8.2-apache 4 | # image: joyqi/typecho:1.2.1-php8.0-apache 5 | # image: joyqi/typecho:1.2.0-php8.0-apache 6 | container_name: TYPECHO 7 | restart: always 8 | environment: 9 | - TIMEZONE=Asia/Shanghai 10 | - TYPECHO_INSTALL=1 11 | - TYPECHO_DB_ADAPTER=Pdo_SQLite 12 | - TYPECHO_SITE_URL=http://127.0.0.1:8080 13 | - TYPECHO_USER_NAME=typecho 14 | - TYPECHO_USER_PASSWORD=V40yx1iqybZgOWsxq6dtEed45Z1Vr1zl 15 | - TYPECHO_USER_MAIL=typecho@localhost.local 16 | ports: 17 | - 8080:80 18 | volumes: 19 | - ./usr:/app/usr 20 | # - ../.:/app/usr/plugins/MarkdownParse -------------------------------------------------------------------------------- /.github/workflows/pr-check.yml: -------------------------------------------------------------------------------- 1 | name: Pull Request Check 2 | 3 | on: 4 | pull_request: 5 | branches: [ main, master ] 6 | types: [ opened, synchronize, reopened ] 7 | 8 | jobs: 9 | compatibility-check: 10 | name: PHP ${{ matrix.php-version }} Compatibility 11 | runs-on: ubuntu-latest 12 | strategy: 13 | fail-fast: false 14 | matrix: 15 | php-version: ['8.1', '8.2', '8.3', '8.4'] 16 | 17 | steps: 18 | - name: Checkout Repository 19 | uses: actions/checkout@v6 20 | 21 | - name: Setup PHP 22 | uses: shivammathur/setup-php@v2 23 | with: 24 | php-version: ${{ matrix.php-version }} 25 | extensions: mbstring 26 | coverage: none 27 | 28 | - name: Check Platform Requirements 29 | run: composer check-platform-reqs 30 | 31 | - name: Install Dependencies 32 | run: composer install --prefer-dist --no-progress 33 | 34 | - name: Check PHP Syntax 35 | run: | 36 | find . -type f -name '*.php' -not -path "./vendor/*" -print0 | \ 37 | xargs -0 -n1 php -l -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Taylor Otwell 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - '*' 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout Repository 13 | uses: actions/checkout@v6 14 | 15 | - name: Setup PHP 16 | id: setup-php 17 | uses: shivammathur/setup-php@v2 18 | with: 19 | php-version: '8.1' 20 | extensions: mbstring 21 | coverage: none 22 | 23 | - name: Install Composer Dependencies 24 | run: | 25 | composer check-platform-reqs 26 | composer install --no-dev --prefer-dist -o 27 | 28 | - name: Create vendor.phar 29 | run: | 30 | mkdir temp 31 | cp -r vendor temp/ 32 | cp composer.json temp/ 33 | cp MarkdownParse.php temp/ 34 | php -d phar.readonly=0 vendor/bin/phar-composer build temp vendor.phar 35 | 36 | - name: Package Files 37 | run: | 38 | rm -rf vendor/ 39 | mkdir MarkdownParse 40 | mv vendor.phar MarkdownParse/ 41 | cp LICENSE.md MarkdownParse/ 42 | cp Plugin.php MarkdownParse/ 43 | cp README.md MarkdownParse/ 44 | zip -r MarkdownParse.zip MarkdownParse 45 | 46 | - name: Get Latest Release Version 47 | id: get_latest_release 48 | run: | 49 | echo "VERSION=$(curl -s https://api.github.com/repos/mrgeneralgoo/typecho-markdown/releases/latest | jq -r .tag_name)" >> $GITHUB_OUTPUT 50 | 51 | - name: Create Release 52 | uses: ncipollo/release-action@v1 53 | with: 54 | token: ${{ secrets.AUTO_RELEASE_TOKEN }} 55 | tag: ${{github.ref_name}} 56 | artifacts: "MarkdownParse.zip" 57 | body: | 58 | **Full Changelog**: https://github.com/mrgeneralgoo/typecho-markdown/compare/${{ steps.get_latest_release.outputs.VERSION }}...${{github.ref_name}}) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Markdown Plugin for Typecho 2 | ========================= 3 | 4 | MarkdownParse 是一款基于 [league/commonmark](https://commonmark.thephpleague.com) 的 Typecho Markdown 解析插件,它的特色在于完美符合 [CommonMark](https://spec.commonmark.org) 和 GFM([GitHub-Flavored Markdown](https://github.github.com/gfm/))规范,不仅可以为你提供强大而丰富的功能,同时也能确保你的内容在不同平台上都能展现一致的出色效果。 5 | 6 | 本插件除了支持 CommonMark 和 GFM 规范内提到的功能(目录、表格、任务列表、脚标等等),MarkdownParse 还具有以下额外特性: 7 | 8 | 1. **Mermaid 语法支持:** 可以利用 Mermaid 语法轻松创建各种图表 9 | 2. **MathJax 数学公式渲染:** 支持使用 MathJax 渲染数学公式 10 | 3. **智能资源加载:** 根据实际渲染需求,能够智能识别是否加载渲染所需资源,无需担心引入冗余资源 11 | 4. **图片延迟加载:** 支持浏览器原生的图片延迟加载技术,[MDN-Lazy loading](https://developer.mozilla.org/en-US/docs/Web/Performance/Lazy_loading) 12 | 5. **文本高亮:** 通过 `` HTML 标签实现文本高亮效果,[MDN-Mark](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark) 13 | 14 | ## 环境要求 15 | 16 | * Typecho 1.2.0 or higher 17 | * PHP 8.1 or higher 18 | 19 | ## 安装 20 | 21 | 1. [下载这个插件](https://github.com/mrgeneralgoo/typecho-markdown/releases) 22 | 2. 修改文件夹的名字为 "MarkdownParse" 23 | 3. 添加到你的项目中并启用它 24 | 25 | ## 配置页面 26 | 27 | ![MarkdownParse Config Page](./markdown-parse-config-page.png) 28 | 29 | ## 报告问题 30 | 31 | [你可以直接点击这里提出你的问题](https://github.com/mrgeneralgoo/typecho-markdown/issues/new) 32 | 33 | ## 语法示例 34 | 35 | https://www.chengxiaobai.cn/record/markdown-concise-grammar-manual.html 36 | 37 | ------ 38 | 39 | MarkdownParse is a Typecho Markdown parsing plugin based on [league/commonmark](https://commonmark.thephpleague.com). Its feature lies in its perfect compliance with [CommonMark](https://spec.commonmark.org) and GFM ([GitHub-Flavored Markdown](https://github.github.com/gfm/)) specifications. It not only provides you with powerful and abundant functions, but also ensures consistent outstanding effects of your content on different platforms. 40 | 41 | In addition to the functions mentioned in the CommonMark and GFM specifications (table of contents, tables, task lists, footnotes, etc.), MarkdownParse also has the following additional features: 42 | 43 | 1. **Mermaid syntax support:** Easily create various charts using Mermaid syntax 44 | 2. **MathJax formula rendering:** Supports rendering mathematical formulas using MathJax 45 | 3. **Intelligent resource loading:** According to actual rendering needs, it can intelligently identify whether to load required rendering resources without worrying about introducing redundant resources 46 | 4. **Image lazy loading:** Supports native image lazy loading technology in browsers, [MDN-Lazy loading](https://developer.mozilla.org/en-US/docs/Web/Performance/Lazy_loading) 47 | 5. **Text highlight:** Realize text highlight effect through `` HTML tag, [MDN-Mark](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark) 48 | 49 | ## Requirements 50 | 51 | * Typecho 1.2.0 or higher 52 | * PHP 8.1 or higher 53 | 54 | ## Installation 55 | 56 | 1. [Download this plugin](https://github.com/mrgeneralgoo/typecho-markdown/releases) 57 | 2. Rename the folder to "MarkdownParse" 58 | 3. Add it to your project and activate it 59 | 60 | ## Configuration 61 | 62 | ![MarkdownParse Config Page](./markdown-parse-config-page.png) 63 | 64 | ## Reporting Issues 65 | 66 | [You can click here directly to create an issue](https://github.com/mrgeneralgoo/typecho-markdown/issues/new) 67 | 68 | ## Example 69 | 70 | https://www.chengxiaobai.cn/record/markdown-concise-grammar-manual.html 71 | -------------------------------------------------------------------------------- /Plugin.php: -------------------------------------------------------------------------------- 1 | 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs', 28 | 'cdnjs' => 'https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.7.0/mermaid.esm.min.mjs', 29 | 'baomitu' => 'https://lib.baomitu.com/mermaid/10.7.0/mermaid.esm.min.mjs' 30 | ]; 31 | const CDN_SOURCE_MATHJAX = [ 32 | 'jsDelivr' => 'https://cdn.jsdelivr.net/npm/mathjax/es5/tex-mml-chtml.min.js', 33 | 'cdnjs' => 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.2/es5/tex-mml-chtml.min.js', 34 | 'baomitu' => 'https://lib.baomitu.com/mathjax/latest/es5/tex-mml-chtml.min.js' 35 | ]; 36 | 37 | public static function activate() 38 | { 39 | \Typecho\Plugin::factory('\Widget\Base\Contents')->markdown = [__CLASS__, 'parse']; 40 | \Typecho\Plugin::factory('\Widget\Base\Comments')->markdown = [__CLASS__, 'parse']; 41 | \Typecho\Plugin::factory('Widget_Archive')->footer = [__CLASS__, 'resourceLink']; 42 | } 43 | 44 | public static function deactivate() 45 | { 46 | // TODO: Implement deactivate() method. 47 | } 48 | 49 | public static function config(Form $form) 50 | { 51 | $elementToc = new Form\Element\Radio('is_available_toc', [self::RADIO_VALUE_DISABLE => _t('不解析'), self::RADIO_VALUE_AUTO => _t('解析')], self::RADIO_VALUE_AUTO, _t('是否解析 [TOC] 语法(符合 HTML 规范,无需 JS 支持)'), _t('开会后支持 [TOC] 语法来生成目录')); 52 | $form->addInput($elementToc); 53 | 54 | $elementMermaid = new Form\Element\Radio('is_available_mermaid', [self::RADIO_VALUE_DISABLE => _t('不开启'), self::RADIO_VALUE_AUTO => _t('开启(按需加载)'), self::RADIO_VALUE_FORCE => _t('开启(每次加载,pjax 主题建议选择此选项)')], self::RADIO_VALUE_AUTO, _t('是否开启 Mermaid 支持(支持自动识别,按需渲染,无需担心引入冗余资源)'), _t('开启后支持解析并渲染 Mermaid')); 55 | $form->addInput($elementMermaid); 56 | 57 | $elementMermaidTheme = new Form\Element\Radio('mermaid_theme', ['default' => _t('默认(default)'), 'neutral' => _t('墨水(neutral)'), 'dark' => _t('暗黑(dark)'), 'forest' => _t('森林绿(forest)')], 'default', _t('Mermaid 主题颜色'), _t('可以去这里 实时编辑器调整主题配置看下效果')); 58 | $form->addInput($elementMermaidTheme); 59 | 60 | $elementMathJax = new Form\Element\Radio('is_available_mathjax', [self::RADIO_VALUE_DISABLE => _t('不开启'), self::RADIO_VALUE_AUTO => _t('开启(按需加载)'), self::RADIO_VALUE_FORCE => _t('开启(每次加载,pjax 主题建议选择此选项)')], self::RADIO_VALUE_AUTO, _t('是否开启 MathJax 支持(支持自动识别,按需渲染,无需担心引入冗余资源)'), _t('开启后支持解析并渲染 MathJax')); 61 | $form->addInput($elementMathJax); 62 | 63 | $elementCDNSource = new Form\Element\Radio('cdn_source', array_combine(array_keys(self::CDN_SOURCE_MERMAID), array_map('_t', array_keys(self::CDN_SOURCE_MERMAID))), self::CDN_SOURCE_DEFAULT, _t('静态资源 CDN'), _t('jsDelivr 默认使用最新版本')); 64 | $form->addInput($elementCDNSource); 65 | 66 | $elementInternalHosts = new Form\Element\Text('internal_hosts', null, '', _t('设置内部链接'), _t('默认为本站点地址,支持正则表达式("/(^|\.)example\.com$/"),多个可用英文逗号分隔。
外部链接解析策略:默认在新窗口中打开,并加上 "noopener noreferrer" 属性')); 67 | $form->addInput($elementInternalHosts); 68 | 69 | $elementHelper = new Form\Element\Radio('show_help_info', [], self::RADIO_VALUE_DISABLE, _t('点击查看更新信息'), _t('点击查看语法手册')); 70 | $form->addInput($elementHelper); 71 | } 72 | 73 | public static function personalConfig(Form $form) 74 | { 75 | // TODO: Implement personalConfig() method. 76 | } 77 | 78 | public static function parse($text) 79 | { 80 | $markdownParser = MarkdownParse::getInstance(); 81 | 82 | $markdownParser->setIsTocEnable((bool)Options::alloc()->plugin('MarkdownParse')->is_available_toc); 83 | $markdownParser->setInternalHosts((string)Options::alloc()->plugin('MarkdownParse')->internal_hosts ?: parse_url(Options::alloc()->siteUrl, PHP_URL_HOST)); 84 | 85 | return $markdownParser->parse($text); 86 | } 87 | 88 | public static function resourceLink() 89 | { 90 | $markdownParser = MarkdownParse::getInstance(); 91 | $configMermaid = (int)Options::alloc()->plugin('MarkdownParse')->is_available_mermaid; 92 | $configLaTex = (int)Options::alloc()->plugin('MarkdownParse')->is_available_mathjax; 93 | $configCDN = (string)Options::alloc()->plugin('MarkdownParse')->cdn_source; 94 | $isAvailableMermaid = $configMermaid === self::RADIO_VALUE_FORCE || ($markdownParser->getIsNeedMermaid() && $configMermaid === self::RADIO_VALUE_AUTO); 95 | $isAvailableMathjax = $configLaTex === self::RADIO_VALUE_FORCE || ($markdownParser->getIsNeedLaTex() && $configLaTex === self::RADIO_VALUE_AUTO); 96 | 97 | $resourceContent = ''; 98 | 99 | if ($isAvailableMermaid) { 100 | $resourceContent .= sprintf('', (string)Options::alloc()->plugin('MarkdownParse')->mermaid_theme ?: 'default'); 102 | } 103 | 104 | if ($isAvailableMathjax) { 105 | $resourceContent .= ''; 106 | $resourceContent .= ''; 107 | $resourceContent .= sprintf('', self::CDN_SOURCE_MATHJAX[$configCDN] ?: self::CDN_SOURCE_MATHJAX[self::CDN_SOURCE_DEFAULT]); 108 | } 109 | 110 | echo $resourceContent; 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /MarkdownParse.php: -------------------------------------------------------------------------------- 1 | preParse($text, $config); 81 | 82 | $environment = new Environment(array_merge($this->getConfig(), $config)); 83 | 84 | $this->addCommonMarkExtensions($environment); 85 | 86 | $htmlContent = (new MarkdownConverter($environment))->convert($text)->getContent(); 87 | 88 | list($htmlContent, $config) = $this->postParse($htmlContent, $config); 89 | 90 | return $htmlContent; 91 | } 92 | 93 | /** 94 | * Placeholder function for actions to be performed before parsing 95 | * 96 | * @param string $text The input text 97 | * @param array $config Optional configuration for the parsing process 98 | * @return array Result of actions before parsing 99 | */ 100 | public function preParse(string $text, array $config = []): array 101 | { 102 | // Remove Table of Contents config if it is not enabled 103 | if (!$this->isTocEnable) { 104 | $config['table_of_contents']['placeholder'] = ''; 105 | } 106 | 107 | // Set internal hosts for external link config 108 | if (!empty($this->internalHosts)) { 109 | $config['external_link']['internal_hosts'] = explode(',', $this->internalHosts); 110 | } 111 | 112 | // Check if LaTeX is needed by searching for $$ or $ in the text 113 | if (!$this->isNeedLaTex) { 114 | $this->isNeedLaTex = (bool)preg_match('/\${1,2}[^`]*?\${1,2}/m', $text); 115 | } 116 | 117 | // Replace double $$ at the beginning and end of the text with
tags 118 | if ($this->isNeedLaTex) { 119 | $text = preg_replace('/(^\${2,})([\s\S]+?)(\${2,})/m', '
$1$2$3
', $text, -1); 120 | } 121 | 122 | return [$text, $config]; 123 | } 124 | 125 | /** 126 | * Placeholder function for actions to be performed after parsing 127 | * 128 | * @param string $htmlContent The parsed HTML content 129 | * @param array $config Optional configuration for the parsing process 130 | * @return array Result of actions after parsing 131 | */ 132 | public function postParse(string $htmlContent, array $config = []): array 133 | { 134 | // If Mermaid is needed, replace the class attribute of Mermaid code blocks 135 | if ($this->isNeedMermaid) { 136 | $htmlContent = str_replace([''], '', $htmlContent); 137 | } 138 | 139 | // If LaTeX is needed, remove
tags added during preParse 140 | if ($this->isNeedLaTex) { 141 | $htmlContent = str_replace(['
$$', '$$
'], '$$', $htmlContent); 142 | } 143 | 144 | return [$htmlContent, $config]; 145 | } 146 | 147 | /** 148 | * Get the default configuration settings 149 | * 150 | * @return array The default configuration settings 151 | */ 152 | public function getConfig(): array 153 | { 154 | $instance = $this::getInstance(); 155 | 156 | $defaultConfig = [ 157 | 'table_of_contents' => [ 158 | 'position' => 'placeholder', 159 | 'placeholder' => '[TOC]', 160 | ], 161 | 'external_link' => [ 162 | 'internal_hosts' => [], 163 | 'open_in_new_window' => true, 164 | ], 165 | 'heading_permalink' => [ 166 | 'symbol' => '', 167 | ], 168 | 'default_attributes' => [ 169 | FencedCode::class => [ 170 | 'class' => static function (FencedCode $node) use ($instance) { 171 | $infoWords = $node->getInfoWords(); 172 | if (\count($infoWords) !== 0 && $infoWords[0] === 'mermaid') { 173 | $instance->setIsNeedMermaid(true); 174 | } 175 | return null; 176 | }, 177 | ] 178 | ] 179 | ]; 180 | 181 | return $defaultConfig; 182 | } 183 | 184 | /** 185 | * Add CommonMark extensions to the given environment 186 | * 187 | * @param Environment $environment The CommonMark environment 188 | */ 189 | private function addCommonMarkExtensions(Environment $environment): void 190 | { 191 | $environment->addExtension(new CommonMarkCoreExtension()); 192 | $environment->addExtension(new AutolinkExtension()); 193 | $environment->addExtension(new DisallowedRawHtmlExtension()); 194 | $environment->addExtension(new StrikethroughExtension()); 195 | $environment->addExtension(new ExternalLinkExtension()); 196 | $environment->addExtension(new FootnoteExtension()); 197 | $environment->addExtension(new TableExtension()); 198 | $environment->addExtension(new TaskListExtension()); 199 | $environment->addExtension(new HeadingPermalinkExtension()); 200 | $environment->addExtension(new DescriptionListExtension()); 201 | $environment->addExtension(new MarkExtension()); 202 | $environment->addExtension(new DefaultAttributesExtension()); 203 | $environment->addExtension(new TableOfContentsExtension()); 204 | $environment->addExtension(new LazyImageExtension()); 205 | } 206 | 207 | /** 208 | * Get the flag indicating if Table of Contents (TOC) is enabled 209 | * 210 | * @return bool The flag indicating if TOC is enabled 211 | */ 212 | public function getIsTocEnable(): bool 213 | { 214 | return $this->isTocEnable; 215 | } 216 | 217 | /** 218 | * Set the flag indicating if Table of Contents (TOC) should be enabled 219 | * 220 | * @param bool $isTocEnable The flag indicating if TOC should be enabled 221 | */ 222 | public function setIsTocEnable(bool $isTocEnable): void 223 | { 224 | $this->isTocEnable = $isTocEnable; 225 | } 226 | 227 | /** 228 | * Get the flag indicating if Mermaid support is needed 229 | * 230 | * @return bool The flag indicating if Mermaid support is needed 231 | */ 232 | public function getIsNeedMermaid(): bool 233 | { 234 | return $this->isNeedMermaid; 235 | } 236 | 237 | /** 238 | * Set the flag indicating if Mermaid support is needed 239 | * 240 | * @param bool $isNeedMermaid The flag indicating if Mermaid support is needed 241 | */ 242 | public function setIsNeedMermaid(bool $isNeedMermaid): void 243 | { 244 | $this->isNeedMermaid = $isNeedMermaid; 245 | } 246 | 247 | /** 248 | * Get the flag indicating if LaTex support is needed 249 | * 250 | * @return bool The flag indicating if LaTex support is needed 251 | */ 252 | public function getIsNeedLaTex(): bool 253 | { 254 | return $this->isNeedLaTex; 255 | } 256 | 257 | /** 258 | * Set the flag indicating if LaTex support is needed 259 | * 260 | * @param bool $isNeedLaTex The flag indicating if LaTex support is needed 261 | */ 262 | public function setIsNeedLaTex(bool $isNeedLaTex): void 263 | { 264 | $this->isNeedLaTex = $isNeedLaTex; 265 | } 266 | 267 | /** 268 | * Get the internal hosts value 269 | * 270 | * @return string The internal hosts value 271 | */ 272 | public function getInternalHosts(): string 273 | { 274 | return $this->internalHosts; 275 | } 276 | 277 | /** 278 | * Set the internal hosts value 279 | * 280 | * @param string $internalHosts The internal hosts value 281 | */ 282 | public function setInternalHosts(string $internalHosts): void 283 | { 284 | $this->internalHosts = $internalHosts; 285 | } 286 | } 287 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "351bffefcc9955cdc59f476b723eaf66", 8 | "packages": [ 9 | { 10 | "name": "clue/phar-composer", 11 | "version": "v1.4.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/clue/phar-composer.git", 15 | "reference": "0cae6984e0da45639881d3b26442d525b8b65406" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/clue/phar-composer/zipball/0cae6984e0da45639881d3b26442d525b8b65406", 20 | "reference": "0cae6984e0da45639881d3b26442d525b8b65406", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "knplabs/packagist-api": "^1.0", 25 | "php": ">=5.3.6", 26 | "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.0 || ^2.5", 27 | "symfony/finder": "^6.0 || ^5.0 || ^4.0 || ^3.0 || ^2.5", 28 | "symfony/process": "^6.0 || ^5.0 || ^4.0 || ^3.0 || ^2.5" 29 | }, 30 | "require-dev": { 31 | "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" 32 | }, 33 | "bin": [ 34 | "bin/phar-composer" 35 | ], 36 | "type": "library", 37 | "autoload": { 38 | "psr-4": { 39 | "Clue\\PharComposer\\": "src/" 40 | } 41 | }, 42 | "notification-url": "https://packagist.org/downloads/", 43 | "license": [ 44 | "MIT" 45 | ], 46 | "authors": [ 47 | { 48 | "name": "Christian Lück", 49 | "email": "christian@clue.engineering" 50 | } 51 | ], 52 | "description": "Simple phar creation for any project managed via Composer", 53 | "homepage": "https://github.com/clue/phar-composer", 54 | "keywords": [ 55 | "build process", 56 | "bundle dependencies", 57 | "composer", 58 | "executable phar", 59 | "phar" 60 | ], 61 | "support": { 62 | "issues": "https://github.com/clue/phar-composer/issues", 63 | "source": "https://github.com/clue/phar-composer/tree/v1.4.0" 64 | }, 65 | "funding": [ 66 | { 67 | "url": "https://clue.engineering/support", 68 | "type": "custom" 69 | }, 70 | { 71 | "url": "https://github.com/clue", 72 | "type": "github" 73 | } 74 | ], 75 | "time": "2022-02-14T11:28:08+00:00" 76 | }, 77 | { 78 | "name": "dflydev/dot-access-data", 79 | "version": "v3.0.3", 80 | "source": { 81 | "type": "git", 82 | "url": "https://github.com/dflydev/dflydev-dot-access-data.git", 83 | "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" 84 | }, 85 | "dist": { 86 | "type": "zip", 87 | "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", 88 | "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", 89 | "shasum": "" 90 | }, 91 | "require": { 92 | "php": "^7.1 || ^8.0" 93 | }, 94 | "require-dev": { 95 | "phpstan/phpstan": "^0.12.42", 96 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", 97 | "scrutinizer/ocular": "1.6.0", 98 | "squizlabs/php_codesniffer": "^3.5", 99 | "vimeo/psalm": "^4.0.0" 100 | }, 101 | "type": "library", 102 | "extra": { 103 | "branch-alias": { 104 | "dev-main": "3.x-dev" 105 | } 106 | }, 107 | "autoload": { 108 | "psr-4": { 109 | "Dflydev\\DotAccessData\\": "src/" 110 | } 111 | }, 112 | "notification-url": "https://packagist.org/downloads/", 113 | "license": [ 114 | "MIT" 115 | ], 116 | "authors": [ 117 | { 118 | "name": "Dragonfly Development Inc.", 119 | "email": "info@dflydev.com", 120 | "homepage": "http://dflydev.com" 121 | }, 122 | { 123 | "name": "Beau Simensen", 124 | "email": "beau@dflydev.com", 125 | "homepage": "http://beausimensen.com" 126 | }, 127 | { 128 | "name": "Carlos Frutos", 129 | "email": "carlos@kiwing.it", 130 | "homepage": "https://github.com/cfrutos" 131 | }, 132 | { 133 | "name": "Colin O'Dell", 134 | "email": "colinodell@gmail.com", 135 | "homepage": "https://www.colinodell.com" 136 | } 137 | ], 138 | "description": "Given a deep data structure, access data by dot notation.", 139 | "homepage": "https://github.com/dflydev/dflydev-dot-access-data", 140 | "keywords": [ 141 | "access", 142 | "data", 143 | "dot", 144 | "notation" 145 | ], 146 | "support": { 147 | "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", 148 | "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" 149 | }, 150 | "time": "2024-07-08T12:26:09+00:00" 151 | }, 152 | { 153 | "name": "doctrine/inflector", 154 | "version": "2.0.10", 155 | "source": { 156 | "type": "git", 157 | "url": "https://github.com/doctrine/inflector.git", 158 | "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" 159 | }, 160 | "dist": { 161 | "type": "zip", 162 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", 163 | "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", 164 | "shasum": "" 165 | }, 166 | "require": { 167 | "php": "^7.2 || ^8.0" 168 | }, 169 | "require-dev": { 170 | "doctrine/coding-standard": "^11.0", 171 | "phpstan/phpstan": "^1.8", 172 | "phpstan/phpstan-phpunit": "^1.1", 173 | "phpstan/phpstan-strict-rules": "^1.3", 174 | "phpunit/phpunit": "^8.5 || ^9.5", 175 | "vimeo/psalm": "^4.25 || ^5.4" 176 | }, 177 | "type": "library", 178 | "autoload": { 179 | "psr-4": { 180 | "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" 181 | } 182 | }, 183 | "notification-url": "https://packagist.org/downloads/", 184 | "license": [ 185 | "MIT" 186 | ], 187 | "authors": [ 188 | { 189 | "name": "Guilherme Blanco", 190 | "email": "guilhermeblanco@gmail.com" 191 | }, 192 | { 193 | "name": "Roman Borschel", 194 | "email": "roman@code-factory.org" 195 | }, 196 | { 197 | "name": "Benjamin Eberlei", 198 | "email": "kontakt@beberlei.de" 199 | }, 200 | { 201 | "name": "Jonathan Wage", 202 | "email": "jonwage@gmail.com" 203 | }, 204 | { 205 | "name": "Johannes Schmitt", 206 | "email": "schmittjoh@gmail.com" 207 | } 208 | ], 209 | "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", 210 | "homepage": "https://www.doctrine-project.org/projects/inflector.html", 211 | "keywords": [ 212 | "inflection", 213 | "inflector", 214 | "lowercase", 215 | "manipulation", 216 | "php", 217 | "plural", 218 | "singular", 219 | "strings", 220 | "uppercase", 221 | "words" 222 | ], 223 | "support": { 224 | "issues": "https://github.com/doctrine/inflector/issues", 225 | "source": "https://github.com/doctrine/inflector/tree/2.0.10" 226 | }, 227 | "funding": [ 228 | { 229 | "url": "https://www.doctrine-project.org/sponsorship.html", 230 | "type": "custom" 231 | }, 232 | { 233 | "url": "https://www.patreon.com/phpdoctrine", 234 | "type": "patreon" 235 | }, 236 | { 237 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", 238 | "type": "tidelift" 239 | } 240 | ], 241 | "time": "2024-02-18T20:23:39+00:00" 242 | }, 243 | { 244 | "name": "guzzlehttp/guzzle", 245 | "version": "7.9.2", 246 | "source": { 247 | "type": "git", 248 | "url": "https://github.com/guzzle/guzzle.git", 249 | "reference": "d281ed313b989f213357e3be1a179f02196ac99b" 250 | }, 251 | "dist": { 252 | "type": "zip", 253 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", 254 | "reference": "d281ed313b989f213357e3be1a179f02196ac99b", 255 | "shasum": "" 256 | }, 257 | "require": { 258 | "ext-json": "*", 259 | "guzzlehttp/promises": "^1.5.3 || ^2.0.3", 260 | "guzzlehttp/psr7": "^2.7.0", 261 | "php": "^7.2.5 || ^8.0", 262 | "psr/http-client": "^1.0", 263 | "symfony/deprecation-contracts": "^2.2 || ^3.0" 264 | }, 265 | "provide": { 266 | "psr/http-client-implementation": "1.0" 267 | }, 268 | "require-dev": { 269 | "bamarni/composer-bin-plugin": "^1.8.2", 270 | "ext-curl": "*", 271 | "guzzle/client-integration-tests": "3.0.2", 272 | "php-http/message-factory": "^1.1", 273 | "phpunit/phpunit": "^8.5.39 || ^9.6.20", 274 | "psr/log": "^1.1 || ^2.0 || ^3.0" 275 | }, 276 | "suggest": { 277 | "ext-curl": "Required for CURL handler support", 278 | "ext-intl": "Required for Internationalized Domain Name (IDN) support", 279 | "psr/log": "Required for using the Log middleware" 280 | }, 281 | "type": "library", 282 | "extra": { 283 | "bamarni-bin": { 284 | "bin-links": true, 285 | "forward-command": false 286 | } 287 | }, 288 | "autoload": { 289 | "files": [ 290 | "src/functions_include.php" 291 | ], 292 | "psr-4": { 293 | "GuzzleHttp\\": "src/" 294 | } 295 | }, 296 | "notification-url": "https://packagist.org/downloads/", 297 | "license": [ 298 | "MIT" 299 | ], 300 | "authors": [ 301 | { 302 | "name": "Graham Campbell", 303 | "email": "hello@gjcampbell.co.uk", 304 | "homepage": "https://github.com/GrahamCampbell" 305 | }, 306 | { 307 | "name": "Michael Dowling", 308 | "email": "mtdowling@gmail.com", 309 | "homepage": "https://github.com/mtdowling" 310 | }, 311 | { 312 | "name": "Jeremy Lindblom", 313 | "email": "jeremeamia@gmail.com", 314 | "homepage": "https://github.com/jeremeamia" 315 | }, 316 | { 317 | "name": "George Mponos", 318 | "email": "gmponos@gmail.com", 319 | "homepage": "https://github.com/gmponos" 320 | }, 321 | { 322 | "name": "Tobias Nyholm", 323 | "email": "tobias.nyholm@gmail.com", 324 | "homepage": "https://github.com/Nyholm" 325 | }, 326 | { 327 | "name": "Márk Sági-Kazár", 328 | "email": "mark.sagikazar@gmail.com", 329 | "homepage": "https://github.com/sagikazarmark" 330 | }, 331 | { 332 | "name": "Tobias Schultze", 333 | "email": "webmaster@tubo-world.de", 334 | "homepage": "https://github.com/Tobion" 335 | } 336 | ], 337 | "description": "Guzzle is a PHP HTTP client library", 338 | "keywords": [ 339 | "client", 340 | "curl", 341 | "framework", 342 | "http", 343 | "http client", 344 | "psr-18", 345 | "psr-7", 346 | "rest", 347 | "web service" 348 | ], 349 | "support": { 350 | "issues": "https://github.com/guzzle/guzzle/issues", 351 | "source": "https://github.com/guzzle/guzzle/tree/7.9.2" 352 | }, 353 | "funding": [ 354 | { 355 | "url": "https://github.com/GrahamCampbell", 356 | "type": "github" 357 | }, 358 | { 359 | "url": "https://github.com/Nyholm", 360 | "type": "github" 361 | }, 362 | { 363 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", 364 | "type": "tidelift" 365 | } 366 | ], 367 | "time": "2024-07-24T11:22:20+00:00" 368 | }, 369 | { 370 | "name": "guzzlehttp/promises", 371 | "version": "2.0.3", 372 | "source": { 373 | "type": "git", 374 | "url": "https://github.com/guzzle/promises.git", 375 | "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" 376 | }, 377 | "dist": { 378 | "type": "zip", 379 | "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", 380 | "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", 381 | "shasum": "" 382 | }, 383 | "require": { 384 | "php": "^7.2.5 || ^8.0" 385 | }, 386 | "require-dev": { 387 | "bamarni/composer-bin-plugin": "^1.8.2", 388 | "phpunit/phpunit": "^8.5.39 || ^9.6.20" 389 | }, 390 | "type": "library", 391 | "extra": { 392 | "bamarni-bin": { 393 | "bin-links": true, 394 | "forward-command": false 395 | } 396 | }, 397 | "autoload": { 398 | "psr-4": { 399 | "GuzzleHttp\\Promise\\": "src/" 400 | } 401 | }, 402 | "notification-url": "https://packagist.org/downloads/", 403 | "license": [ 404 | "MIT" 405 | ], 406 | "authors": [ 407 | { 408 | "name": "Graham Campbell", 409 | "email": "hello@gjcampbell.co.uk", 410 | "homepage": "https://github.com/GrahamCampbell" 411 | }, 412 | { 413 | "name": "Michael Dowling", 414 | "email": "mtdowling@gmail.com", 415 | "homepage": "https://github.com/mtdowling" 416 | }, 417 | { 418 | "name": "Tobias Nyholm", 419 | "email": "tobias.nyholm@gmail.com", 420 | "homepage": "https://github.com/Nyholm" 421 | }, 422 | { 423 | "name": "Tobias Schultze", 424 | "email": "webmaster@tubo-world.de", 425 | "homepage": "https://github.com/Tobion" 426 | } 427 | ], 428 | "description": "Guzzle promises library", 429 | "keywords": [ 430 | "promise" 431 | ], 432 | "support": { 433 | "issues": "https://github.com/guzzle/promises/issues", 434 | "source": "https://github.com/guzzle/promises/tree/2.0.3" 435 | }, 436 | "funding": [ 437 | { 438 | "url": "https://github.com/GrahamCampbell", 439 | "type": "github" 440 | }, 441 | { 442 | "url": "https://github.com/Nyholm", 443 | "type": "github" 444 | }, 445 | { 446 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", 447 | "type": "tidelift" 448 | } 449 | ], 450 | "time": "2024-07-18T10:29:17+00:00" 451 | }, 452 | { 453 | "name": "guzzlehttp/psr7", 454 | "version": "2.7.0", 455 | "source": { 456 | "type": "git", 457 | "url": "https://github.com/guzzle/psr7.git", 458 | "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" 459 | }, 460 | "dist": { 461 | "type": "zip", 462 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", 463 | "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", 464 | "shasum": "" 465 | }, 466 | "require": { 467 | "php": "^7.2.5 || ^8.0", 468 | "psr/http-factory": "^1.0", 469 | "psr/http-message": "^1.1 || ^2.0", 470 | "ralouphie/getallheaders": "^3.0" 471 | }, 472 | "provide": { 473 | "psr/http-factory-implementation": "1.0", 474 | "psr/http-message-implementation": "1.0" 475 | }, 476 | "require-dev": { 477 | "bamarni/composer-bin-plugin": "^1.8.2", 478 | "http-interop/http-factory-tests": "0.9.0", 479 | "phpunit/phpunit": "^8.5.39 || ^9.6.20" 480 | }, 481 | "suggest": { 482 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" 483 | }, 484 | "type": "library", 485 | "extra": { 486 | "bamarni-bin": { 487 | "bin-links": true, 488 | "forward-command": false 489 | } 490 | }, 491 | "autoload": { 492 | "psr-4": { 493 | "GuzzleHttp\\Psr7\\": "src/" 494 | } 495 | }, 496 | "notification-url": "https://packagist.org/downloads/", 497 | "license": [ 498 | "MIT" 499 | ], 500 | "authors": [ 501 | { 502 | "name": "Graham Campbell", 503 | "email": "hello@gjcampbell.co.uk", 504 | "homepage": "https://github.com/GrahamCampbell" 505 | }, 506 | { 507 | "name": "Michael Dowling", 508 | "email": "mtdowling@gmail.com", 509 | "homepage": "https://github.com/mtdowling" 510 | }, 511 | { 512 | "name": "George Mponos", 513 | "email": "gmponos@gmail.com", 514 | "homepage": "https://github.com/gmponos" 515 | }, 516 | { 517 | "name": "Tobias Nyholm", 518 | "email": "tobias.nyholm@gmail.com", 519 | "homepage": "https://github.com/Nyholm" 520 | }, 521 | { 522 | "name": "Márk Sági-Kazár", 523 | "email": "mark.sagikazar@gmail.com", 524 | "homepage": "https://github.com/sagikazarmark" 525 | }, 526 | { 527 | "name": "Tobias Schultze", 528 | "email": "webmaster@tubo-world.de", 529 | "homepage": "https://github.com/Tobion" 530 | }, 531 | { 532 | "name": "Márk Sági-Kazár", 533 | "email": "mark.sagikazar@gmail.com", 534 | "homepage": "https://sagikazarmark.hu" 535 | } 536 | ], 537 | "description": "PSR-7 message implementation that also provides common utility methods", 538 | "keywords": [ 539 | "http", 540 | "message", 541 | "psr-7", 542 | "request", 543 | "response", 544 | "stream", 545 | "uri", 546 | "url" 547 | ], 548 | "support": { 549 | "issues": "https://github.com/guzzle/psr7/issues", 550 | "source": "https://github.com/guzzle/psr7/tree/2.7.0" 551 | }, 552 | "funding": [ 553 | { 554 | "url": "https://github.com/GrahamCampbell", 555 | "type": "github" 556 | }, 557 | { 558 | "url": "https://github.com/Nyholm", 559 | "type": "github" 560 | }, 561 | { 562 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", 563 | "type": "tidelift" 564 | } 565 | ], 566 | "time": "2024-07-18T11:15:46+00:00" 567 | }, 568 | { 569 | "name": "knplabs/packagist-api", 570 | "version": "v1.7.2", 571 | "source": { 572 | "type": "git", 573 | "url": "https://github.com/KnpLabs/packagist-api.git", 574 | "reference": "4feae228a4505c1cd817da61e752e5dea2b22c2d" 575 | }, 576 | "dist": { 577 | "type": "zip", 578 | "url": "https://api.github.com/repos/KnpLabs/packagist-api/zipball/4feae228a4505c1cd817da61e752e5dea2b22c2d", 579 | "reference": "4feae228a4505c1cd817da61e752e5dea2b22c2d", 580 | "shasum": "" 581 | }, 582 | "require": { 583 | "doctrine/inflector": "^1.0 || ^2.0", 584 | "guzzlehttp/guzzle": "^6.0 || ^7.0", 585 | "php": "^7.1 || ^8.0" 586 | }, 587 | "require-dev": { 588 | "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0", 589 | "squizlabs/php_codesniffer": "^3.0" 590 | }, 591 | "type": "library", 592 | "extra": { 593 | "branch-alias": { 594 | "dev-master": "1.x-dev" 595 | } 596 | }, 597 | "autoload": { 598 | "psr-0": { 599 | "Packagist\\Api\\": "src/" 600 | } 601 | }, 602 | "notification-url": "https://packagist.org/downloads/", 603 | "license": [ 604 | "MIT" 605 | ], 606 | "authors": [ 607 | { 608 | "name": "KnpLabs Team", 609 | "homepage": "http://knplabs.com" 610 | } 611 | ], 612 | "description": "Packagist API client.", 613 | "homepage": "http://knplabs.com", 614 | "keywords": [ 615 | "api", 616 | "composer", 617 | "packagist" 618 | ], 619 | "support": { 620 | "issues": "https://github.com/KnpLabs/packagist-api/issues", 621 | "source": "https://github.com/KnpLabs/packagist-api/tree/v1.7.2" 622 | }, 623 | "time": "2022-03-01T08:20:15+00:00" 624 | }, 625 | { 626 | "name": "league/commonmark", 627 | "version": "2.8.0", 628 | "source": { 629 | "type": "git", 630 | "url": "https://github.com/thephpleague/commonmark.git", 631 | "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb" 632 | }, 633 | "dist": { 634 | "type": "zip", 635 | "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb", 636 | "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb", 637 | "shasum": "" 638 | }, 639 | "require": { 640 | "ext-mbstring": "*", 641 | "league/config": "^1.1.1", 642 | "php": "^7.4 || ^8.0", 643 | "psr/event-dispatcher": "^1.0", 644 | "symfony/deprecation-contracts": "^2.1 || ^3.0", 645 | "symfony/polyfill-php80": "^1.16" 646 | }, 647 | "require-dev": { 648 | "cebe/markdown": "^1.0", 649 | "commonmark/cmark": "0.31.1", 650 | "commonmark/commonmark.js": "0.31.1", 651 | "composer/package-versions-deprecated": "^1.8", 652 | "embed/embed": "^4.4", 653 | "erusev/parsedown": "^1.0", 654 | "ext-json": "*", 655 | "github/gfm": "0.29.0", 656 | "michelf/php-markdown": "^1.4 || ^2.0", 657 | "nyholm/psr7": "^1.5", 658 | "phpstan/phpstan": "^1.8.2", 659 | "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", 660 | "scrutinizer/ocular": "^1.8.1", 661 | "symfony/finder": "^5.3 | ^6.0 | ^7.0", 662 | "symfony/process": "^5.4 | ^6.0 | ^7.0", 663 | "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", 664 | "unleashedtech/php-coding-standard": "^3.1.1", 665 | "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" 666 | }, 667 | "suggest": { 668 | "symfony/yaml": "v2.3+ required if using the Front Matter extension" 669 | }, 670 | "type": "library", 671 | "extra": { 672 | "branch-alias": { 673 | "dev-main": "2.9-dev" 674 | } 675 | }, 676 | "autoload": { 677 | "psr-4": { 678 | "League\\CommonMark\\": "src" 679 | } 680 | }, 681 | "notification-url": "https://packagist.org/downloads/", 682 | "license": [ 683 | "BSD-3-Clause" 684 | ], 685 | "authors": [ 686 | { 687 | "name": "Colin O'Dell", 688 | "email": "colinodell@gmail.com", 689 | "homepage": "https://www.colinodell.com", 690 | "role": "Lead Developer" 691 | } 692 | ], 693 | "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", 694 | "homepage": "https://commonmark.thephpleague.com", 695 | "keywords": [ 696 | "commonmark", 697 | "flavored", 698 | "gfm", 699 | "github", 700 | "github-flavored", 701 | "markdown", 702 | "md", 703 | "parser" 704 | ], 705 | "support": { 706 | "docs": "https://commonmark.thephpleague.com/", 707 | "forum": "https://github.com/thephpleague/commonmark/discussions", 708 | "issues": "https://github.com/thephpleague/commonmark/issues", 709 | "rss": "https://github.com/thephpleague/commonmark/releases.atom", 710 | "source": "https://github.com/thephpleague/commonmark" 711 | }, 712 | "funding": [ 713 | { 714 | "url": "https://www.colinodell.com/sponsor", 715 | "type": "custom" 716 | }, 717 | { 718 | "url": "https://www.paypal.me/colinpodell/10.00", 719 | "type": "custom" 720 | }, 721 | { 722 | "url": "https://github.com/colinodell", 723 | "type": "github" 724 | }, 725 | { 726 | "url": "https://tidelift.com/funding/github/packagist/league/commonmark", 727 | "type": "tidelift" 728 | } 729 | ], 730 | "time": "2025-11-26T21:48:24+00:00" 731 | }, 732 | { 733 | "name": "league/config", 734 | "version": "v1.2.0", 735 | "source": { 736 | "type": "git", 737 | "url": "https://github.com/thephpleague/config.git", 738 | "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" 739 | }, 740 | "dist": { 741 | "type": "zip", 742 | "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", 743 | "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", 744 | "shasum": "" 745 | }, 746 | "require": { 747 | "dflydev/dot-access-data": "^3.0.1", 748 | "nette/schema": "^1.2", 749 | "php": "^7.4 || ^8.0" 750 | }, 751 | "require-dev": { 752 | "phpstan/phpstan": "^1.8.2", 753 | "phpunit/phpunit": "^9.5.5", 754 | "scrutinizer/ocular": "^1.8.1", 755 | "unleashedtech/php-coding-standard": "^3.1", 756 | "vimeo/psalm": "^4.7.3" 757 | }, 758 | "type": "library", 759 | "extra": { 760 | "branch-alias": { 761 | "dev-main": "1.2-dev" 762 | } 763 | }, 764 | "autoload": { 765 | "psr-4": { 766 | "League\\Config\\": "src" 767 | } 768 | }, 769 | "notification-url": "https://packagist.org/downloads/", 770 | "license": [ 771 | "BSD-3-Clause" 772 | ], 773 | "authors": [ 774 | { 775 | "name": "Colin O'Dell", 776 | "email": "colinodell@gmail.com", 777 | "homepage": "https://www.colinodell.com", 778 | "role": "Lead Developer" 779 | } 780 | ], 781 | "description": "Define configuration arrays with strict schemas and access values with dot notation", 782 | "homepage": "https://config.thephpleague.com", 783 | "keywords": [ 784 | "array", 785 | "config", 786 | "configuration", 787 | "dot", 788 | "dot-access", 789 | "nested", 790 | "schema" 791 | ], 792 | "support": { 793 | "docs": "https://config.thephpleague.com/", 794 | "issues": "https://github.com/thephpleague/config/issues", 795 | "rss": "https://github.com/thephpleague/config/releases.atom", 796 | "source": "https://github.com/thephpleague/config" 797 | }, 798 | "funding": [ 799 | { 800 | "url": "https://www.colinodell.com/sponsor", 801 | "type": "custom" 802 | }, 803 | { 804 | "url": "https://www.paypal.me/colinpodell/10.00", 805 | "type": "custom" 806 | }, 807 | { 808 | "url": "https://github.com/colinodell", 809 | "type": "github" 810 | } 811 | ], 812 | "time": "2022-12-11T20:36:23+00:00" 813 | }, 814 | { 815 | "name": "nette/schema", 816 | "version": "v1.3.3", 817 | "source": { 818 | "type": "git", 819 | "url": "https://github.com/nette/schema.git", 820 | "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004" 821 | }, 822 | "dist": { 823 | "type": "zip", 824 | "url": "https://api.github.com/repos/nette/schema/zipball/2befc2f42d7c715fd9d95efc31b1081e5d765004", 825 | "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004", 826 | "shasum": "" 827 | }, 828 | "require": { 829 | "nette/utils": "^4.0", 830 | "php": "8.1 - 8.5" 831 | }, 832 | "require-dev": { 833 | "nette/tester": "^2.5.2", 834 | "phpstan/phpstan-nette": "^2.0@stable", 835 | "tracy/tracy": "^2.8" 836 | }, 837 | "type": "library", 838 | "extra": { 839 | "branch-alias": { 840 | "dev-master": "1.3-dev" 841 | } 842 | }, 843 | "autoload": { 844 | "psr-4": { 845 | "Nette\\": "src" 846 | }, 847 | "classmap": [ 848 | "src/" 849 | ] 850 | }, 851 | "notification-url": "https://packagist.org/downloads/", 852 | "license": [ 853 | "BSD-3-Clause", 854 | "GPL-2.0-only", 855 | "GPL-3.0-only" 856 | ], 857 | "authors": [ 858 | { 859 | "name": "David Grudl", 860 | "homepage": "https://davidgrudl.com" 861 | }, 862 | { 863 | "name": "Nette Community", 864 | "homepage": "https://nette.org/contributors" 865 | } 866 | ], 867 | "description": "📐 Nette Schema: validating data structures against a given Schema.", 868 | "homepage": "https://nette.org", 869 | "keywords": [ 870 | "config", 871 | "nette" 872 | ], 873 | "support": { 874 | "issues": "https://github.com/nette/schema/issues", 875 | "source": "https://github.com/nette/schema/tree/v1.3.3" 876 | }, 877 | "time": "2025-10-30T22:57:59+00:00" 878 | }, 879 | { 880 | "name": "nette/utils", 881 | "version": "v4.0.9", 882 | "source": { 883 | "type": "git", 884 | "url": "https://github.com/nette/utils.git", 885 | "reference": "505a30ad386daa5211f08a318e47015b501cad30" 886 | }, 887 | "dist": { 888 | "type": "zip", 889 | "url": "https://api.github.com/repos/nette/utils/zipball/505a30ad386daa5211f08a318e47015b501cad30", 890 | "reference": "505a30ad386daa5211f08a318e47015b501cad30", 891 | "shasum": "" 892 | }, 893 | "require": { 894 | "php": "8.0 - 8.5" 895 | }, 896 | "conflict": { 897 | "nette/finder": "<3", 898 | "nette/schema": "<1.2.2" 899 | }, 900 | "require-dev": { 901 | "jetbrains/phpstorm-attributes": "^1.2", 902 | "nette/tester": "^2.5", 903 | "phpstan/phpstan-nette": "^2.0@stable", 904 | "tracy/tracy": "^2.9" 905 | }, 906 | "suggest": { 907 | "ext-gd": "to use Image", 908 | "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", 909 | "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", 910 | "ext-json": "to use Nette\\Utils\\Json", 911 | "ext-mbstring": "to use Strings::lower() etc...", 912 | "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" 913 | }, 914 | "type": "library", 915 | "extra": { 916 | "branch-alias": { 917 | "dev-master": "4.0-dev" 918 | } 919 | }, 920 | "autoload": { 921 | "psr-4": { 922 | "Nette\\": "src" 923 | }, 924 | "classmap": [ 925 | "src/" 926 | ] 927 | }, 928 | "notification-url": "https://packagist.org/downloads/", 929 | "license": [ 930 | "BSD-3-Clause", 931 | "GPL-2.0-only", 932 | "GPL-3.0-only" 933 | ], 934 | "authors": [ 935 | { 936 | "name": "David Grudl", 937 | "homepage": "https://davidgrudl.com" 938 | }, 939 | { 940 | "name": "Nette Community", 941 | "homepage": "https://nette.org/contributors" 942 | } 943 | ], 944 | "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", 945 | "homepage": "https://nette.org", 946 | "keywords": [ 947 | "array", 948 | "core", 949 | "datetime", 950 | "images", 951 | "json", 952 | "nette", 953 | "paginator", 954 | "password", 955 | "slugify", 956 | "string", 957 | "unicode", 958 | "utf-8", 959 | "utility", 960 | "validation" 961 | ], 962 | "support": { 963 | "issues": "https://github.com/nette/utils/issues", 964 | "source": "https://github.com/nette/utils/tree/v4.0.9" 965 | }, 966 | "time": "2025-10-31T00:45:47+00:00" 967 | }, 968 | { 969 | "name": "psr/container", 970 | "version": "2.0.2", 971 | "source": { 972 | "type": "git", 973 | "url": "https://github.com/php-fig/container.git", 974 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" 975 | }, 976 | "dist": { 977 | "type": "zip", 978 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", 979 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", 980 | "shasum": "" 981 | }, 982 | "require": { 983 | "php": ">=7.4.0" 984 | }, 985 | "type": "library", 986 | "extra": { 987 | "branch-alias": { 988 | "dev-master": "2.0.x-dev" 989 | } 990 | }, 991 | "autoload": { 992 | "psr-4": { 993 | "Psr\\Container\\": "src/" 994 | } 995 | }, 996 | "notification-url": "https://packagist.org/downloads/", 997 | "license": [ 998 | "MIT" 999 | ], 1000 | "authors": [ 1001 | { 1002 | "name": "PHP-FIG", 1003 | "homepage": "https://www.php-fig.org/" 1004 | } 1005 | ], 1006 | "description": "Common Container Interface (PHP FIG PSR-11)", 1007 | "homepage": "https://github.com/php-fig/container", 1008 | "keywords": [ 1009 | "PSR-11", 1010 | "container", 1011 | "container-interface", 1012 | "container-interop", 1013 | "psr" 1014 | ], 1015 | "support": { 1016 | "issues": "https://github.com/php-fig/container/issues", 1017 | "source": "https://github.com/php-fig/container/tree/2.0.2" 1018 | }, 1019 | "time": "2021-11-05T16:47:00+00:00" 1020 | }, 1021 | { 1022 | "name": "psr/event-dispatcher", 1023 | "version": "1.0.0", 1024 | "source": { 1025 | "type": "git", 1026 | "url": "https://github.com/php-fig/event-dispatcher.git", 1027 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 1028 | }, 1029 | "dist": { 1030 | "type": "zip", 1031 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 1032 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 1033 | "shasum": "" 1034 | }, 1035 | "require": { 1036 | "php": ">=7.2.0" 1037 | }, 1038 | "type": "library", 1039 | "extra": { 1040 | "branch-alias": { 1041 | "dev-master": "1.0.x-dev" 1042 | } 1043 | }, 1044 | "autoload": { 1045 | "psr-4": { 1046 | "Psr\\EventDispatcher\\": "src/" 1047 | } 1048 | }, 1049 | "notification-url": "https://packagist.org/downloads/", 1050 | "license": [ 1051 | "MIT" 1052 | ], 1053 | "authors": [ 1054 | { 1055 | "name": "PHP-FIG", 1056 | "homepage": "http://www.php-fig.org/" 1057 | } 1058 | ], 1059 | "description": "Standard interfaces for event handling.", 1060 | "keywords": [ 1061 | "events", 1062 | "psr", 1063 | "psr-14" 1064 | ], 1065 | "support": { 1066 | "issues": "https://github.com/php-fig/event-dispatcher/issues", 1067 | "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" 1068 | }, 1069 | "time": "2019-01-08T18:20:26+00:00" 1070 | }, 1071 | { 1072 | "name": "psr/http-client", 1073 | "version": "1.0.3", 1074 | "source": { 1075 | "type": "git", 1076 | "url": "https://github.com/php-fig/http-client.git", 1077 | "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" 1078 | }, 1079 | "dist": { 1080 | "type": "zip", 1081 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", 1082 | "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", 1083 | "shasum": "" 1084 | }, 1085 | "require": { 1086 | "php": "^7.0 || ^8.0", 1087 | "psr/http-message": "^1.0 || ^2.0" 1088 | }, 1089 | "type": "library", 1090 | "extra": { 1091 | "branch-alias": { 1092 | "dev-master": "1.0.x-dev" 1093 | } 1094 | }, 1095 | "autoload": { 1096 | "psr-4": { 1097 | "Psr\\Http\\Client\\": "src/" 1098 | } 1099 | }, 1100 | "notification-url": "https://packagist.org/downloads/", 1101 | "license": [ 1102 | "MIT" 1103 | ], 1104 | "authors": [ 1105 | { 1106 | "name": "PHP-FIG", 1107 | "homepage": "https://www.php-fig.org/" 1108 | } 1109 | ], 1110 | "description": "Common interface for HTTP clients", 1111 | "homepage": "https://github.com/php-fig/http-client", 1112 | "keywords": [ 1113 | "http", 1114 | "http-client", 1115 | "psr", 1116 | "psr-18" 1117 | ], 1118 | "support": { 1119 | "source": "https://github.com/php-fig/http-client" 1120 | }, 1121 | "time": "2023-09-23T14:17:50+00:00" 1122 | }, 1123 | { 1124 | "name": "psr/http-factory", 1125 | "version": "1.1.0", 1126 | "source": { 1127 | "type": "git", 1128 | "url": "https://github.com/php-fig/http-factory.git", 1129 | "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" 1130 | }, 1131 | "dist": { 1132 | "type": "zip", 1133 | "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", 1134 | "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", 1135 | "shasum": "" 1136 | }, 1137 | "require": { 1138 | "php": ">=7.1", 1139 | "psr/http-message": "^1.0 || ^2.0" 1140 | }, 1141 | "type": "library", 1142 | "extra": { 1143 | "branch-alias": { 1144 | "dev-master": "1.0.x-dev" 1145 | } 1146 | }, 1147 | "autoload": { 1148 | "psr-4": { 1149 | "Psr\\Http\\Message\\": "src/" 1150 | } 1151 | }, 1152 | "notification-url": "https://packagist.org/downloads/", 1153 | "license": [ 1154 | "MIT" 1155 | ], 1156 | "authors": [ 1157 | { 1158 | "name": "PHP-FIG", 1159 | "homepage": "https://www.php-fig.org/" 1160 | } 1161 | ], 1162 | "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", 1163 | "keywords": [ 1164 | "factory", 1165 | "http", 1166 | "message", 1167 | "psr", 1168 | "psr-17", 1169 | "psr-7", 1170 | "request", 1171 | "response" 1172 | ], 1173 | "support": { 1174 | "source": "https://github.com/php-fig/http-factory" 1175 | }, 1176 | "time": "2024-04-15T12:06:14+00:00" 1177 | }, 1178 | { 1179 | "name": "psr/http-message", 1180 | "version": "2.0", 1181 | "source": { 1182 | "type": "git", 1183 | "url": "https://github.com/php-fig/http-message.git", 1184 | "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" 1185 | }, 1186 | "dist": { 1187 | "type": "zip", 1188 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", 1189 | "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", 1190 | "shasum": "" 1191 | }, 1192 | "require": { 1193 | "php": "^7.2 || ^8.0" 1194 | }, 1195 | "type": "library", 1196 | "extra": { 1197 | "branch-alias": { 1198 | "dev-master": "2.0.x-dev" 1199 | } 1200 | }, 1201 | "autoload": { 1202 | "psr-4": { 1203 | "Psr\\Http\\Message\\": "src/" 1204 | } 1205 | }, 1206 | "notification-url": "https://packagist.org/downloads/", 1207 | "license": [ 1208 | "MIT" 1209 | ], 1210 | "authors": [ 1211 | { 1212 | "name": "PHP-FIG", 1213 | "homepage": "https://www.php-fig.org/" 1214 | } 1215 | ], 1216 | "description": "Common interface for HTTP messages", 1217 | "homepage": "https://github.com/php-fig/http-message", 1218 | "keywords": [ 1219 | "http", 1220 | "http-message", 1221 | "psr", 1222 | "psr-7", 1223 | "request", 1224 | "response" 1225 | ], 1226 | "support": { 1227 | "source": "https://github.com/php-fig/http-message/tree/2.0" 1228 | }, 1229 | "time": "2023-04-04T09:54:51+00:00" 1230 | }, 1231 | { 1232 | "name": "ralouphie/getallheaders", 1233 | "version": "3.0.3", 1234 | "source": { 1235 | "type": "git", 1236 | "url": "https://github.com/ralouphie/getallheaders.git", 1237 | "reference": "120b605dfeb996808c31b6477290a714d356e822" 1238 | }, 1239 | "dist": { 1240 | "type": "zip", 1241 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", 1242 | "reference": "120b605dfeb996808c31b6477290a714d356e822", 1243 | "shasum": "" 1244 | }, 1245 | "require": { 1246 | "php": ">=5.6" 1247 | }, 1248 | "require-dev": { 1249 | "php-coveralls/php-coveralls": "^2.1", 1250 | "phpunit/phpunit": "^5 || ^6.5" 1251 | }, 1252 | "type": "library", 1253 | "autoload": { 1254 | "files": [ 1255 | "src/getallheaders.php" 1256 | ] 1257 | }, 1258 | "notification-url": "https://packagist.org/downloads/", 1259 | "license": [ 1260 | "MIT" 1261 | ], 1262 | "authors": [ 1263 | { 1264 | "name": "Ralph Khattar", 1265 | "email": "ralph.khattar@gmail.com" 1266 | } 1267 | ], 1268 | "description": "A polyfill for getallheaders.", 1269 | "support": { 1270 | "issues": "https://github.com/ralouphie/getallheaders/issues", 1271 | "source": "https://github.com/ralouphie/getallheaders/tree/develop" 1272 | }, 1273 | "time": "2019-03-08T08:55:37+00:00" 1274 | }, 1275 | { 1276 | "name": "simonvomeyser/commonmark-ext-lazy-image", 1277 | "version": "v2.0.3", 1278 | "source": { 1279 | "type": "git", 1280 | "url": "https://github.com/simonvomeyser/commonmark-ext-lazy-image.git", 1281 | "reference": "38c2b017ee8af71ca2cf5e052e0719ee51847c5e" 1282 | }, 1283 | "dist": { 1284 | "type": "zip", 1285 | "url": "https://api.github.com/repos/simonvomeyser/commonmark-ext-lazy-image/zipball/38c2b017ee8af71ca2cf5e052e0719ee51847c5e", 1286 | "reference": "38c2b017ee8af71ca2cf5e052e0719ee51847c5e", 1287 | "shasum": "" 1288 | }, 1289 | "require": { 1290 | "league/commonmark": "^2.0", 1291 | "php": "^7.4 || ^8.0" 1292 | }, 1293 | "require-dev": { 1294 | "phpunit/phpunit": "^9.0" 1295 | }, 1296 | "type": "commonmark-extension", 1297 | "autoload": { 1298 | "psr-4": { 1299 | "SimonVomEyser\\CommonMarkExtension\\": "src/" 1300 | } 1301 | }, 1302 | "notification-url": "https://packagist.org/downloads/", 1303 | "license": [ 1304 | "MIT" 1305 | ], 1306 | "authors": [ 1307 | { 1308 | "name": "Simon vom Eyser", 1309 | "email": "simon.vom.eyser@gmail.com" 1310 | } 1311 | ], 1312 | "description": "Adds support for lazy images to the phpleague/commonmark markdown parser package", 1313 | "keywords": [ 1314 | "commonmark", 1315 | "extension", 1316 | "image", 1317 | "lazy", 1318 | "markdown" 1319 | ], 1320 | "support": { 1321 | "issues": "https://github.com/simonvomeyser/commonmark-ext-lazy-image/issues", 1322 | "source": "https://github.com/simonvomeyser/commonmark-ext-lazy-image/tree/v2.0.3" 1323 | }, 1324 | "time": "2022-09-15T14:58:51+00:00" 1325 | }, 1326 | { 1327 | "name": "symfony/console", 1328 | "version": "v6.4.10", 1329 | "source": { 1330 | "type": "git", 1331 | "url": "https://github.com/symfony/console.git", 1332 | "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc" 1333 | }, 1334 | "dist": { 1335 | "type": "zip", 1336 | "url": "https://api.github.com/repos/symfony/console/zipball/504974cbe43d05f83b201d6498c206f16fc0cdbc", 1337 | "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc", 1338 | "shasum": "" 1339 | }, 1340 | "require": { 1341 | "php": ">=8.1", 1342 | "symfony/deprecation-contracts": "^2.5|^3", 1343 | "symfony/polyfill-mbstring": "~1.0", 1344 | "symfony/service-contracts": "^2.5|^3", 1345 | "symfony/string": "^5.4|^6.0|^7.0" 1346 | }, 1347 | "conflict": { 1348 | "symfony/dependency-injection": "<5.4", 1349 | "symfony/dotenv": "<5.4", 1350 | "symfony/event-dispatcher": "<5.4", 1351 | "symfony/lock": "<5.4", 1352 | "symfony/process": "<5.4" 1353 | }, 1354 | "provide": { 1355 | "psr/log-implementation": "1.0|2.0|3.0" 1356 | }, 1357 | "require-dev": { 1358 | "psr/log": "^1|^2|^3", 1359 | "symfony/config": "^5.4|^6.0|^7.0", 1360 | "symfony/dependency-injection": "^5.4|^6.0|^7.0", 1361 | "symfony/event-dispatcher": "^5.4|^6.0|^7.0", 1362 | "symfony/http-foundation": "^6.4|^7.0", 1363 | "symfony/http-kernel": "^6.4|^7.0", 1364 | "symfony/lock": "^5.4|^6.0|^7.0", 1365 | "symfony/messenger": "^5.4|^6.0|^7.0", 1366 | "symfony/process": "^5.4|^6.0|^7.0", 1367 | "symfony/stopwatch": "^5.4|^6.0|^7.0", 1368 | "symfony/var-dumper": "^5.4|^6.0|^7.0" 1369 | }, 1370 | "type": "library", 1371 | "autoload": { 1372 | "psr-4": { 1373 | "Symfony\\Component\\Console\\": "" 1374 | }, 1375 | "exclude-from-classmap": [ 1376 | "/Tests/" 1377 | ] 1378 | }, 1379 | "notification-url": "https://packagist.org/downloads/", 1380 | "license": [ 1381 | "MIT" 1382 | ], 1383 | "authors": [ 1384 | { 1385 | "name": "Fabien Potencier", 1386 | "email": "fabien@symfony.com" 1387 | }, 1388 | { 1389 | "name": "Symfony Community", 1390 | "homepage": "https://symfony.com/contributors" 1391 | } 1392 | ], 1393 | "description": "Eases the creation of beautiful and testable command line interfaces", 1394 | "homepage": "https://symfony.com", 1395 | "keywords": [ 1396 | "cli", 1397 | "command-line", 1398 | "console", 1399 | "terminal" 1400 | ], 1401 | "support": { 1402 | "source": "https://github.com/symfony/console/tree/v6.4.10" 1403 | }, 1404 | "funding": [ 1405 | { 1406 | "url": "https://symfony.com/sponsor", 1407 | "type": "custom" 1408 | }, 1409 | { 1410 | "url": "https://github.com/fabpot", 1411 | "type": "github" 1412 | }, 1413 | { 1414 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1415 | "type": "tidelift" 1416 | } 1417 | ], 1418 | "time": "2024-07-26T12:30:32+00:00" 1419 | }, 1420 | { 1421 | "name": "symfony/deprecation-contracts", 1422 | "version": "v3.5.1", 1423 | "source": { 1424 | "type": "git", 1425 | "url": "https://github.com/symfony/deprecation-contracts.git", 1426 | "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" 1427 | }, 1428 | "dist": { 1429 | "type": "zip", 1430 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", 1431 | "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", 1432 | "shasum": "" 1433 | }, 1434 | "require": { 1435 | "php": ">=8.1" 1436 | }, 1437 | "type": "library", 1438 | "extra": { 1439 | "thanks": { 1440 | "url": "https://github.com/symfony/contracts", 1441 | "name": "symfony/contracts" 1442 | }, 1443 | "branch-alias": { 1444 | "dev-main": "3.5-dev" 1445 | } 1446 | }, 1447 | "autoload": { 1448 | "files": [ 1449 | "function.php" 1450 | ] 1451 | }, 1452 | "notification-url": "https://packagist.org/downloads/", 1453 | "license": [ 1454 | "MIT" 1455 | ], 1456 | "authors": [ 1457 | { 1458 | "name": "Nicolas Grekas", 1459 | "email": "p@tchwork.com" 1460 | }, 1461 | { 1462 | "name": "Symfony Community", 1463 | "homepage": "https://symfony.com/contributors" 1464 | } 1465 | ], 1466 | "description": "A generic function and convention to trigger deprecation notices", 1467 | "homepage": "https://symfony.com", 1468 | "support": { 1469 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" 1470 | }, 1471 | "funding": [ 1472 | { 1473 | "url": "https://symfony.com/sponsor", 1474 | "type": "custom" 1475 | }, 1476 | { 1477 | "url": "https://github.com/fabpot", 1478 | "type": "github" 1479 | }, 1480 | { 1481 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1482 | "type": "tidelift" 1483 | } 1484 | ], 1485 | "time": "2024-09-25T14:20:29+00:00" 1486 | }, 1487 | { 1488 | "name": "symfony/finder", 1489 | "version": "v6.4.10", 1490 | "source": { 1491 | "type": "git", 1492 | "url": "https://github.com/symfony/finder.git", 1493 | "reference": "af29198d87112bebdd397bd7735fbd115997824c" 1494 | }, 1495 | "dist": { 1496 | "type": "zip", 1497 | "url": "https://api.github.com/repos/symfony/finder/zipball/af29198d87112bebdd397bd7735fbd115997824c", 1498 | "reference": "af29198d87112bebdd397bd7735fbd115997824c", 1499 | "shasum": "" 1500 | }, 1501 | "require": { 1502 | "php": ">=8.1" 1503 | }, 1504 | "require-dev": { 1505 | "symfony/filesystem": "^6.0|^7.0" 1506 | }, 1507 | "type": "library", 1508 | "autoload": { 1509 | "psr-4": { 1510 | "Symfony\\Component\\Finder\\": "" 1511 | }, 1512 | "exclude-from-classmap": [ 1513 | "/Tests/" 1514 | ] 1515 | }, 1516 | "notification-url": "https://packagist.org/downloads/", 1517 | "license": [ 1518 | "MIT" 1519 | ], 1520 | "authors": [ 1521 | { 1522 | "name": "Fabien Potencier", 1523 | "email": "fabien@symfony.com" 1524 | }, 1525 | { 1526 | "name": "Symfony Community", 1527 | "homepage": "https://symfony.com/contributors" 1528 | } 1529 | ], 1530 | "description": "Finds files and directories via an intuitive fluent interface", 1531 | "homepage": "https://symfony.com", 1532 | "support": { 1533 | "source": "https://github.com/symfony/finder/tree/v6.4.10" 1534 | }, 1535 | "funding": [ 1536 | { 1537 | "url": "https://symfony.com/sponsor", 1538 | "type": "custom" 1539 | }, 1540 | { 1541 | "url": "https://github.com/fabpot", 1542 | "type": "github" 1543 | }, 1544 | { 1545 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1546 | "type": "tidelift" 1547 | } 1548 | ], 1549 | "time": "2024-07-24T07:06:38+00:00" 1550 | }, 1551 | { 1552 | "name": "symfony/polyfill-ctype", 1553 | "version": "v1.30.0", 1554 | "source": { 1555 | "type": "git", 1556 | "url": "https://github.com/symfony/polyfill-ctype.git", 1557 | "reference": "0424dff1c58f028c451efff2045f5d92410bd540" 1558 | }, 1559 | "dist": { 1560 | "type": "zip", 1561 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", 1562 | "reference": "0424dff1c58f028c451efff2045f5d92410bd540", 1563 | "shasum": "" 1564 | }, 1565 | "require": { 1566 | "php": ">=7.1" 1567 | }, 1568 | "provide": { 1569 | "ext-ctype": "*" 1570 | }, 1571 | "suggest": { 1572 | "ext-ctype": "For best performance" 1573 | }, 1574 | "type": "library", 1575 | "extra": { 1576 | "thanks": { 1577 | "name": "symfony/polyfill", 1578 | "url": "https://github.com/symfony/polyfill" 1579 | } 1580 | }, 1581 | "autoload": { 1582 | "files": [ 1583 | "bootstrap.php" 1584 | ], 1585 | "psr-4": { 1586 | "Symfony\\Polyfill\\Ctype\\": "" 1587 | } 1588 | }, 1589 | "notification-url": "https://packagist.org/downloads/", 1590 | "license": [ 1591 | "MIT" 1592 | ], 1593 | "authors": [ 1594 | { 1595 | "name": "Gert de Pagter", 1596 | "email": "BackEndTea@gmail.com" 1597 | }, 1598 | { 1599 | "name": "Symfony Community", 1600 | "homepage": "https://symfony.com/contributors" 1601 | } 1602 | ], 1603 | "description": "Symfony polyfill for ctype functions", 1604 | "homepage": "https://symfony.com", 1605 | "keywords": [ 1606 | "compatibility", 1607 | "ctype", 1608 | "polyfill", 1609 | "portable" 1610 | ], 1611 | "support": { 1612 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" 1613 | }, 1614 | "funding": [ 1615 | { 1616 | "url": "https://symfony.com/sponsor", 1617 | "type": "custom" 1618 | }, 1619 | { 1620 | "url": "https://github.com/fabpot", 1621 | "type": "github" 1622 | }, 1623 | { 1624 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1625 | "type": "tidelift" 1626 | } 1627 | ], 1628 | "time": "2024-05-31T15:07:36+00:00" 1629 | }, 1630 | { 1631 | "name": "symfony/polyfill-intl-grapheme", 1632 | "version": "v1.30.0", 1633 | "source": { 1634 | "type": "git", 1635 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 1636 | "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" 1637 | }, 1638 | "dist": { 1639 | "type": "zip", 1640 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", 1641 | "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", 1642 | "shasum": "" 1643 | }, 1644 | "require": { 1645 | "php": ">=7.1" 1646 | }, 1647 | "suggest": { 1648 | "ext-intl": "For best performance" 1649 | }, 1650 | "type": "library", 1651 | "extra": { 1652 | "thanks": { 1653 | "name": "symfony/polyfill", 1654 | "url": "https://github.com/symfony/polyfill" 1655 | } 1656 | }, 1657 | "autoload": { 1658 | "files": [ 1659 | "bootstrap.php" 1660 | ], 1661 | "psr-4": { 1662 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 1663 | } 1664 | }, 1665 | "notification-url": "https://packagist.org/downloads/", 1666 | "license": [ 1667 | "MIT" 1668 | ], 1669 | "authors": [ 1670 | { 1671 | "name": "Nicolas Grekas", 1672 | "email": "p@tchwork.com" 1673 | }, 1674 | { 1675 | "name": "Symfony Community", 1676 | "homepage": "https://symfony.com/contributors" 1677 | } 1678 | ], 1679 | "description": "Symfony polyfill for intl's grapheme_* functions", 1680 | "homepage": "https://symfony.com", 1681 | "keywords": [ 1682 | "compatibility", 1683 | "grapheme", 1684 | "intl", 1685 | "polyfill", 1686 | "portable", 1687 | "shim" 1688 | ], 1689 | "support": { 1690 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" 1691 | }, 1692 | "funding": [ 1693 | { 1694 | "url": "https://symfony.com/sponsor", 1695 | "type": "custom" 1696 | }, 1697 | { 1698 | "url": "https://github.com/fabpot", 1699 | "type": "github" 1700 | }, 1701 | { 1702 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1703 | "type": "tidelift" 1704 | } 1705 | ], 1706 | "time": "2024-05-31T15:07:36+00:00" 1707 | }, 1708 | { 1709 | "name": "symfony/polyfill-intl-normalizer", 1710 | "version": "v1.30.0", 1711 | "source": { 1712 | "type": "git", 1713 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 1714 | "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" 1715 | }, 1716 | "dist": { 1717 | "type": "zip", 1718 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", 1719 | "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", 1720 | "shasum": "" 1721 | }, 1722 | "require": { 1723 | "php": ">=7.1" 1724 | }, 1725 | "suggest": { 1726 | "ext-intl": "For best performance" 1727 | }, 1728 | "type": "library", 1729 | "extra": { 1730 | "thanks": { 1731 | "name": "symfony/polyfill", 1732 | "url": "https://github.com/symfony/polyfill" 1733 | } 1734 | }, 1735 | "autoload": { 1736 | "files": [ 1737 | "bootstrap.php" 1738 | ], 1739 | "psr-4": { 1740 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 1741 | }, 1742 | "classmap": [ 1743 | "Resources/stubs" 1744 | ] 1745 | }, 1746 | "notification-url": "https://packagist.org/downloads/", 1747 | "license": [ 1748 | "MIT" 1749 | ], 1750 | "authors": [ 1751 | { 1752 | "name": "Nicolas Grekas", 1753 | "email": "p@tchwork.com" 1754 | }, 1755 | { 1756 | "name": "Symfony Community", 1757 | "homepage": "https://symfony.com/contributors" 1758 | } 1759 | ], 1760 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 1761 | "homepage": "https://symfony.com", 1762 | "keywords": [ 1763 | "compatibility", 1764 | "intl", 1765 | "normalizer", 1766 | "polyfill", 1767 | "portable", 1768 | "shim" 1769 | ], 1770 | "support": { 1771 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" 1772 | }, 1773 | "funding": [ 1774 | { 1775 | "url": "https://symfony.com/sponsor", 1776 | "type": "custom" 1777 | }, 1778 | { 1779 | "url": "https://github.com/fabpot", 1780 | "type": "github" 1781 | }, 1782 | { 1783 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1784 | "type": "tidelift" 1785 | } 1786 | ], 1787 | "time": "2024-05-31T15:07:36+00:00" 1788 | }, 1789 | { 1790 | "name": "symfony/polyfill-mbstring", 1791 | "version": "v1.30.0", 1792 | "source": { 1793 | "type": "git", 1794 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1795 | "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" 1796 | }, 1797 | "dist": { 1798 | "type": "zip", 1799 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", 1800 | "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", 1801 | "shasum": "" 1802 | }, 1803 | "require": { 1804 | "php": ">=7.1" 1805 | }, 1806 | "provide": { 1807 | "ext-mbstring": "*" 1808 | }, 1809 | "suggest": { 1810 | "ext-mbstring": "For best performance" 1811 | }, 1812 | "type": "library", 1813 | "extra": { 1814 | "thanks": { 1815 | "name": "symfony/polyfill", 1816 | "url": "https://github.com/symfony/polyfill" 1817 | } 1818 | }, 1819 | "autoload": { 1820 | "files": [ 1821 | "bootstrap.php" 1822 | ], 1823 | "psr-4": { 1824 | "Symfony\\Polyfill\\Mbstring\\": "" 1825 | } 1826 | }, 1827 | "notification-url": "https://packagist.org/downloads/", 1828 | "license": [ 1829 | "MIT" 1830 | ], 1831 | "authors": [ 1832 | { 1833 | "name": "Nicolas Grekas", 1834 | "email": "p@tchwork.com" 1835 | }, 1836 | { 1837 | "name": "Symfony Community", 1838 | "homepage": "https://symfony.com/contributors" 1839 | } 1840 | ], 1841 | "description": "Symfony polyfill for the Mbstring extension", 1842 | "homepage": "https://symfony.com", 1843 | "keywords": [ 1844 | "compatibility", 1845 | "mbstring", 1846 | "polyfill", 1847 | "portable", 1848 | "shim" 1849 | ], 1850 | "support": { 1851 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" 1852 | }, 1853 | "funding": [ 1854 | { 1855 | "url": "https://symfony.com/sponsor", 1856 | "type": "custom" 1857 | }, 1858 | { 1859 | "url": "https://github.com/fabpot", 1860 | "type": "github" 1861 | }, 1862 | { 1863 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1864 | "type": "tidelift" 1865 | } 1866 | ], 1867 | "time": "2024-06-19T12:30:46+00:00" 1868 | }, 1869 | { 1870 | "name": "symfony/polyfill-php80", 1871 | "version": "v1.31.0", 1872 | "source": { 1873 | "type": "git", 1874 | "url": "https://github.com/symfony/polyfill-php80.git", 1875 | "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" 1876 | }, 1877 | "dist": { 1878 | "type": "zip", 1879 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", 1880 | "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", 1881 | "shasum": "" 1882 | }, 1883 | "require": { 1884 | "php": ">=7.2" 1885 | }, 1886 | "type": "library", 1887 | "extra": { 1888 | "thanks": { 1889 | "url": "https://github.com/symfony/polyfill", 1890 | "name": "symfony/polyfill" 1891 | } 1892 | }, 1893 | "autoload": { 1894 | "files": [ 1895 | "bootstrap.php" 1896 | ], 1897 | "psr-4": { 1898 | "Symfony\\Polyfill\\Php80\\": "" 1899 | }, 1900 | "classmap": [ 1901 | "Resources/stubs" 1902 | ] 1903 | }, 1904 | "notification-url": "https://packagist.org/downloads/", 1905 | "license": [ 1906 | "MIT" 1907 | ], 1908 | "authors": [ 1909 | { 1910 | "name": "Ion Bazan", 1911 | "email": "ion.bazan@gmail.com" 1912 | }, 1913 | { 1914 | "name": "Nicolas Grekas", 1915 | "email": "p@tchwork.com" 1916 | }, 1917 | { 1918 | "name": "Symfony Community", 1919 | "homepage": "https://symfony.com/contributors" 1920 | } 1921 | ], 1922 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 1923 | "homepage": "https://symfony.com", 1924 | "keywords": [ 1925 | "compatibility", 1926 | "polyfill", 1927 | "portable", 1928 | "shim" 1929 | ], 1930 | "support": { 1931 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" 1932 | }, 1933 | "funding": [ 1934 | { 1935 | "url": "https://symfony.com/sponsor", 1936 | "type": "custom" 1937 | }, 1938 | { 1939 | "url": "https://github.com/fabpot", 1940 | "type": "github" 1941 | }, 1942 | { 1943 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1944 | "type": "tidelift" 1945 | } 1946 | ], 1947 | "time": "2024-09-09T11:45:10+00:00" 1948 | }, 1949 | { 1950 | "name": "symfony/process", 1951 | "version": "v6.4.14", 1952 | "source": { 1953 | "type": "git", 1954 | "url": "https://github.com/symfony/process.git", 1955 | "reference": "25214adbb0996d18112548de20c281be9f27279f" 1956 | }, 1957 | "dist": { 1958 | "type": "zip", 1959 | "url": "https://api.github.com/repos/symfony/process/zipball/25214adbb0996d18112548de20c281be9f27279f", 1960 | "reference": "25214adbb0996d18112548de20c281be9f27279f", 1961 | "shasum": "" 1962 | }, 1963 | "require": { 1964 | "php": ">=8.1" 1965 | }, 1966 | "type": "library", 1967 | "autoload": { 1968 | "psr-4": { 1969 | "Symfony\\Component\\Process\\": "" 1970 | }, 1971 | "exclude-from-classmap": [ 1972 | "/Tests/" 1973 | ] 1974 | }, 1975 | "notification-url": "https://packagist.org/downloads/", 1976 | "license": [ 1977 | "MIT" 1978 | ], 1979 | "authors": [ 1980 | { 1981 | "name": "Fabien Potencier", 1982 | "email": "fabien@symfony.com" 1983 | }, 1984 | { 1985 | "name": "Symfony Community", 1986 | "homepage": "https://symfony.com/contributors" 1987 | } 1988 | ], 1989 | "description": "Executes commands in sub-processes", 1990 | "homepage": "https://symfony.com", 1991 | "support": { 1992 | "source": "https://github.com/symfony/process/tree/v6.4.14" 1993 | }, 1994 | "funding": [ 1995 | { 1996 | "url": "https://symfony.com/sponsor", 1997 | "type": "custom" 1998 | }, 1999 | { 2000 | "url": "https://github.com/fabpot", 2001 | "type": "github" 2002 | }, 2003 | { 2004 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2005 | "type": "tidelift" 2006 | } 2007 | ], 2008 | "time": "2024-11-06T09:25:01+00:00" 2009 | }, 2010 | { 2011 | "name": "symfony/service-contracts", 2012 | "version": "v3.5.0", 2013 | "source": { 2014 | "type": "git", 2015 | "url": "https://github.com/symfony/service-contracts.git", 2016 | "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" 2017 | }, 2018 | "dist": { 2019 | "type": "zip", 2020 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", 2021 | "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", 2022 | "shasum": "" 2023 | }, 2024 | "require": { 2025 | "php": ">=8.1", 2026 | "psr/container": "^1.1|^2.0", 2027 | "symfony/deprecation-contracts": "^2.5|^3" 2028 | }, 2029 | "conflict": { 2030 | "ext-psr": "<1.1|>=2" 2031 | }, 2032 | "type": "library", 2033 | "extra": { 2034 | "branch-alias": { 2035 | "dev-main": "3.5-dev" 2036 | }, 2037 | "thanks": { 2038 | "name": "symfony/contracts", 2039 | "url": "https://github.com/symfony/contracts" 2040 | } 2041 | }, 2042 | "autoload": { 2043 | "psr-4": { 2044 | "Symfony\\Contracts\\Service\\": "" 2045 | }, 2046 | "exclude-from-classmap": [ 2047 | "/Test/" 2048 | ] 2049 | }, 2050 | "notification-url": "https://packagist.org/downloads/", 2051 | "license": [ 2052 | "MIT" 2053 | ], 2054 | "authors": [ 2055 | { 2056 | "name": "Nicolas Grekas", 2057 | "email": "p@tchwork.com" 2058 | }, 2059 | { 2060 | "name": "Symfony Community", 2061 | "homepage": "https://symfony.com/contributors" 2062 | } 2063 | ], 2064 | "description": "Generic abstractions related to writing services", 2065 | "homepage": "https://symfony.com", 2066 | "keywords": [ 2067 | "abstractions", 2068 | "contracts", 2069 | "decoupling", 2070 | "interfaces", 2071 | "interoperability", 2072 | "standards" 2073 | ], 2074 | "support": { 2075 | "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" 2076 | }, 2077 | "funding": [ 2078 | { 2079 | "url": "https://symfony.com/sponsor", 2080 | "type": "custom" 2081 | }, 2082 | { 2083 | "url": "https://github.com/fabpot", 2084 | "type": "github" 2085 | }, 2086 | { 2087 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2088 | "type": "tidelift" 2089 | } 2090 | ], 2091 | "time": "2024-04-18T09:32:20+00:00" 2092 | }, 2093 | { 2094 | "name": "symfony/string", 2095 | "version": "v6.4.10", 2096 | "source": { 2097 | "type": "git", 2098 | "url": "https://github.com/symfony/string.git", 2099 | "reference": "ccf9b30251719567bfd46494138327522b9a9446" 2100 | }, 2101 | "dist": { 2102 | "type": "zip", 2103 | "url": "https://api.github.com/repos/symfony/string/zipball/ccf9b30251719567bfd46494138327522b9a9446", 2104 | "reference": "ccf9b30251719567bfd46494138327522b9a9446", 2105 | "shasum": "" 2106 | }, 2107 | "require": { 2108 | "php": ">=8.1", 2109 | "symfony/polyfill-ctype": "~1.8", 2110 | "symfony/polyfill-intl-grapheme": "~1.0", 2111 | "symfony/polyfill-intl-normalizer": "~1.0", 2112 | "symfony/polyfill-mbstring": "~1.0" 2113 | }, 2114 | "conflict": { 2115 | "symfony/translation-contracts": "<2.5" 2116 | }, 2117 | "require-dev": { 2118 | "symfony/error-handler": "^5.4|^6.0|^7.0", 2119 | "symfony/http-client": "^5.4|^6.0|^7.0", 2120 | "symfony/intl": "^6.2|^7.0", 2121 | "symfony/translation-contracts": "^2.5|^3.0", 2122 | "symfony/var-exporter": "^5.4|^6.0|^7.0" 2123 | }, 2124 | "type": "library", 2125 | "autoload": { 2126 | "files": [ 2127 | "Resources/functions.php" 2128 | ], 2129 | "psr-4": { 2130 | "Symfony\\Component\\String\\": "" 2131 | }, 2132 | "exclude-from-classmap": [ 2133 | "/Tests/" 2134 | ] 2135 | }, 2136 | "notification-url": "https://packagist.org/downloads/", 2137 | "license": [ 2138 | "MIT" 2139 | ], 2140 | "authors": [ 2141 | { 2142 | "name": "Nicolas Grekas", 2143 | "email": "p@tchwork.com" 2144 | }, 2145 | { 2146 | "name": "Symfony Community", 2147 | "homepage": "https://symfony.com/contributors" 2148 | } 2149 | ], 2150 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 2151 | "homepage": "https://symfony.com", 2152 | "keywords": [ 2153 | "grapheme", 2154 | "i18n", 2155 | "string", 2156 | "unicode", 2157 | "utf-8", 2158 | "utf8" 2159 | ], 2160 | "support": { 2161 | "source": "https://github.com/symfony/string/tree/v6.4.10" 2162 | }, 2163 | "funding": [ 2164 | { 2165 | "url": "https://symfony.com/sponsor", 2166 | "type": "custom" 2167 | }, 2168 | { 2169 | "url": "https://github.com/fabpot", 2170 | "type": "github" 2171 | }, 2172 | { 2173 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2174 | "type": "tidelift" 2175 | } 2176 | ], 2177 | "time": "2024-07-22T10:21:14+00:00" 2178 | }, 2179 | { 2180 | "name": "wnx/commonmark-mark-extension", 2181 | "version": "v1.4.0", 2182 | "source": { 2183 | "type": "git", 2184 | "url": "https://github.com/stefanzweifel/commonmark-mark-extension.git", 2185 | "reference": "316a295e75f8c7fd4deca85f865404d5c76b2c68" 2186 | }, 2187 | "dist": { 2188 | "type": "zip", 2189 | "url": "https://api.github.com/repos/stefanzweifel/commonmark-mark-extension/zipball/316a295e75f8c7fd4deca85f865404d5c76b2c68", 2190 | "reference": "316a295e75f8c7fd4deca85f865404d5c76b2c68", 2191 | "shasum": "" 2192 | }, 2193 | "require": { 2194 | "league/commonmark": "^2.0", 2195 | "php": "^8.0" 2196 | }, 2197 | "require-dev": { 2198 | "friendsofphp/php-cs-fixer": "^3.0", 2199 | "phpstan/phpstan": "^2.0", 2200 | "phpunit/phpunit": "^9.5 | ^10" 2201 | }, 2202 | "type": "library", 2203 | "autoload": { 2204 | "psr-4": { 2205 | "Wnx\\CommonmarkMarkExtension\\": "src" 2206 | } 2207 | }, 2208 | "notification-url": "https://packagist.org/downloads/", 2209 | "license": [ 2210 | "MIT" 2211 | ], 2212 | "authors": [ 2213 | { 2214 | "name": "Stefan Zweifel", 2215 | "email": "stefan@stefanzweifel.dev", 2216 | "role": "Developer" 2217 | } 2218 | ], 2219 | "description": "Render ==highlighted== texts as elements in league/commonmark", 2220 | "homepage": "https://github.com/wnx/commonmark-mark-extension", 2221 | "keywords": [ 2222 | "commonmark-mark-extension", 2223 | "wnx" 2224 | ], 2225 | "support": { 2226 | "source": "https://github.com/stefanzweifel/commonmark-mark-extension/tree/v1.4.0" 2227 | }, 2228 | "funding": [ 2229 | { 2230 | "url": "https://buymeacoff.ee/3oQ64YW", 2231 | "type": "custom" 2232 | }, 2233 | { 2234 | "url": "https://github.com/stefanzweifel", 2235 | "type": "github" 2236 | } 2237 | ], 2238 | "time": "2025-11-23T20:23:43+00:00" 2239 | } 2240 | ], 2241 | "packages-dev": [], 2242 | "aliases": [], 2243 | "minimum-stability": "stable", 2244 | "stability-flags": {}, 2245 | "prefer-stable": false, 2246 | "prefer-lowest": false, 2247 | "platform": { 2248 | "php": "^8.1" 2249 | }, 2250 | "platform-dev": {}, 2251 | "plugin-api-version": "2.9.0" 2252 | } 2253 | --------------------------------------------------------------------------------