diff --git a/.env.dist b/.env.dist new file mode 100644 index 0000000..c32499e --- /dev/null +++ b/.env.dist @@ -0,0 +1,10 @@ +DB_DATABASE=contributte +DB_USER=contributte +DB_PASSWORD=contributte +DB_ROOT_PASSWORD=contributte + +XDEBUG_MODE= +XDEBUG_HOST=host.docker.internal + +NETTE_DEBUG=0 +NETTE_ENV=production diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..286eaa0 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +NETTE_DEBUG=1 +NETTE_ENV=development diff --git a/.github/workflows/codesniffer.yml b/.github/workflows/codesniffer.yml new file mode 100644 index 0000000..60ccf92 --- /dev/null +++ b/.github/workflows/codesniffer.yml @@ -0,0 +1,17 @@ +name: "Codesniffer" + +on: + pull_request: + + push: + branches: ["*"] + + schedule: + - cron: "0 8 * * 1" + +jobs: + codesniffer: + name: "Codesniffer" + uses: contributte/.github/.github/workflows/codesniffer.yml@v1 + with: + php: "8.2" diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 0000000..c5e7125 --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,20 @@ +name: "Coverage" + +on: + pull_request: + + push: + branches: ["*"] + + schedule: + - cron: "0 8 * * 1" + +jobs: + test80: + name: "Nette Tester" + uses: contributte/.github/.github/workflows/nette-tester-mysql.yml@v1 + with: + php: "8.2" + database: tests + coverage: true + make: coverage diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml deleted file mode 100644 index 8e4ef16..0000000 --- a/.github/workflows/main.yaml +++ /dev/null @@ -1,133 +0,0 @@ -name: "build" - -on: - pull_request: - paths-ignore: - - ".docs/**" - push: - branches: - - "*" - schedule: - - cron: "0 8 * * 1" # At 08:00 on Monday - -env: - extensions: "json" - cacheVersion: "1" - composerVersion: "v2" - composerInstall: "composer install" - -jobs: - qa: - name: "Quality Assurance" - runs-on: "${{ matrix.operating-system }}" - - strategy: - matrix: - php-versions: [ "8.0" ] - operating-system: [ "ubuntu-latest" ] - fail-fast: false - - steps: - - name: "Checkout" - uses: "actions/checkout@v2" - - - name: "Setup PHP cache environment" - id: "extcache" - uses: "shivammathur/cache-extensions@v1" - with: - php-version: "${{ matrix.php-versions }}" - extensions: "${{ env.extensions }}" - key: "${{ env.cacheVersion }}" - - - name: "Cache PHP extensions" - uses: "actions/cache@v2" - with: - path: "${{ steps.extcache.outputs.dir }}" - key: "${{ steps.extcache.outputs.key }}" - restore-keys: "${{ steps.extcache.outputs.key }}" - - - name: "Install PHP" - uses: "shivammathur/setup-php@v2" - with: - php-version: "${{ matrix.php-versions }}" - extensions: "${{ env.extensions }}" - tools: "composer:${{ env.composerVersion }} " - - - name: "Setup problem matchers for PHP" - run: 'echo "::add-matcher::${{ runner.tool_cache }}/php.json"' - - - name: "Get Composer cache directory" - id: "composercache" - run: 'echo "::set-output name=dir::$(composer config cache-files-dir)"' - - - name: "Cache PHP dependencies" - uses: "actions/cache@v2" - with: - path: "${{ steps.composercache.outputs.dir }}" - key: "${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}" - restore-keys: "${{ runner.os }}-composer-" - - - name: "Validate Composer" - run: "composer validate" - - - name: "Install dependencies" - run: "${{ env.composerInstall }}" - - - name: "Coding Standard" - run: "make cs" - - static-analysis: - name: "Static analysis" - runs-on: "${{ matrix.operating-system }}" - - strategy: - matrix: - php-versions: [ "8.0" ] - operating-system: [ "ubuntu-latest" ] - fail-fast: false - - steps: - - name: "Checkout" - uses: "actions/checkout@v2" - - - name: "Setup PHP cache environment" - id: "extcache" - uses: "shivammathur/cache-extensions@v1" - with: - php-version: "${{ matrix.php-versions }}" - extensions: "${{ env.extensions }}" - key: "${{ env.cacheVersion }}" - - - name: "Cache PHP extensions" - uses: "actions/cache@v2" - with: - path: "${{ steps.extcache.outputs.dir }}" - key: "${{ steps.extcache.outputs.key }}" - restore-keys: "${{ steps.extcache.outputs.key }}" - - - name: "Install PHP" - uses: "shivammathur/setup-php@v2" - with: - php-version: "${{ matrix.php-versions }}" - extensions: "${{ env.extensions }}" - tools: "composer:${{ env.composerVersion }} " - - - name: "Setup problem matchers for PHP" - run: 'echo "::add-matcher::${{ runner.tool_cache }}/php.json"' - - - name: "Get Composer cache directory" - id: "composercache" - run: 'echo "::set-output name=dir::$(composer config cache-files-dir)"' - - - name: "Cache PHP dependencies" - uses: "actions/cache@v2" - with: - path: "${{ steps.composercache.outputs.dir }}" - key: "${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}" - restore-keys: "${{ runner.os }}-composer-" - - - name: "Install dependencies" - run: "${{ env.composerInstall }}" - - - name: "PHPStan" - run: "make phpstan" diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml new file mode 100644 index 0000000..131be8e --- /dev/null +++ b/.github/workflows/phpstan.yml @@ -0,0 +1,17 @@ +name: "Phpstan" + +on: + pull_request: + + push: + branches: ["*"] + + schedule: + - cron: "0 8 * * 1" + +jobs: + phpstan: + name: "Phpstan" + uses: contributte/.github/.github/workflows/phpstan.yml@v1 + with: + php: "8.2" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..a817aa1 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,25 @@ +name: "Nette Tester" + +on: + pull_request: + + push: + branches: ["*"] + + schedule: + - cron: "0 8 * * 1" + +jobs: + test82: + name: "Nette Tester" + uses: contributte/.github/.github/workflows/nette-tester-mysql.yml@v1 + with: + php: "8.2" + database: tests + + test81: + name: "Nette Tester" + uses: contributte/.github/.github/workflows/nette-tester-mysql.yml@v1 + with: + php: "8.1" + database: tests diff --git a/.gitignore b/.gitignore index a38efc3..d37ab58 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,20 @@ -/_data +# IDE +.idea + +# Docker +/.docker + +# Composer /vendor -/ftp-deployment + +# Nette +/config/local.neon + +# Assets +/www/dist + +# Node +/node_modules + +# Envs +.env diff --git a/Makefile b/Makefile index 4ec9279..a6709bf 100644 --- a/Makefile +++ b/Makefile @@ -1,56 +1,110 @@ +# Include variables +include .env.dist +-include .env +export + ############################################################ # PROJECT ################################################## ############################################################ -.PHONY: project install setup clean - +.PHONY: project project: install setup -install: +.PHONY: install +install: install-php install-node + +.PHONY: install-php +install-php: composer install +.PHONY: install-node +install-node: + npm install + +.PHONY: setup setup: - mkdir -p temp temp/sessions log - chmod +0777 temp temp/sessions log + cp -n .env.example .env || true + cp -n config/local.neon.dist config/local.neon || true + mkdir -p var/log var/tmp var/tmp/sessions + chmod 0777 var/log var/tmp var/tmp/sessions +.PHONY: clean clean: - find temp -mindepth 1 ! -name '.gitignore' -type f,d -exec rm -rf {} + - find log -mindepth 1 ! -name '.gitignore' -type f,d -exec rm -rf {} + + find var/tmp -mindepth 1 ! -name '.gitignore' -type f,d -exec rm -rf {} + + find var/log -mindepth 1 ! -name '.gitignore' -type f,d -exec rm -rf {} + ############################################################ # DEVELOPMENT ############################################## ############################################################ -.PHONY: qa dev cs csf phpstan tests coverage dev build - +.PHONY: qa qa: cs phpstan +.PHONY: cs cs: - vendor/bin/codesniffer app +ifdef GITHUB_ACTION + vendor/bin/phpcs --standard=ruleset.xml --extensions=php,phpt --tab-width=4 --ignore=tests/tmp -q --report=checkstyle app tests | cs2pr +else + vendor/bin/phpcs --standard=ruleset.xml --extensions=php,phpt --tab-width=4 --ignore=tests/tmp --colors -nsp app tests +endif +.PHONY: csf csf: - vendor/bin/codefixer app + vendor/bin/phpcbf --standard=ruleset.xml --extensions=php,phpt --tab-width=4 --ignore=tests/tmp --colors -nsp app tests +.PHONY: phpstan phpstan: - vendor/bin/phpstan analyse -c phpstan.neon --memory-limit=512M app + vendor/bin/phpstan analyse -c phpstan.neon --memory-limit=512M +.PHONY: tests tests: - echo "OK" + vendor/bin/tester -s -p php --colors 1 -C tests/Cases +.PHONY: coverage coverage: - echo "OK" +ifdef GITHUB_ACTION + vendor/bin/tester -s -p phpdbg --colors 1 -C --coverage coverage.xml --coverage-src app tests/Cases +else + vendor/bin/tester -s -p phpdbg --colors 1 -C --coverage coverage.html --coverage-src app tests/Cases +endif +.PHONY: dev dev: NETTE_DEBUG=1 NETTE_ENV=dev php -S 0.0.0.0:8000 -t www +.PHONY: build build: - echo "BUILD OK" + npm run build + +.PHONY: watch +watch: + npm run watch ############################################################ # DEPLOYMENT ############################################### ############################################################ .PHONY: deploy - deploy: $(MAKE) clean $(MAKE) project $(MAKE) build $(MAKE) clean + +############################################################ +# DOCKER ################################################### +############################################################ +.PHONY: docker-up +docker-up: + docker compose up + +.PHONY: docker-mariadb +docker-mariadb: ## Spin MariaDB docker container + docker run \ + -it \ + --rm \ + -p 3306:3306 \ + -v $(CURDIR)/.docker/data/mariadb:/var/lib/mysql \ + -v $(CURDIR)/db/init.sql:/docker-entrypoint-initdb.d/init.sql \ + -e MYSQL_USER=${DB_USER} \ + -e MYSQL_PASSWORD=${DB_PASSWORD} \ + -e MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD} \ + -e MYSQL_DATABASE=${DB_DATABASE} \ + mariadb:10.11 diff --git a/README.md b/README.md index 46aaf60..68da1a1 100644 --- a/README.md +++ b/README.md @@ -40,21 +40,25 @@ composer create-project -s dev contributte/datagrid-skeleton acme ### Install using [docker](https://github.com/docker/docker/) -1) At first, use GIT to download this project. +1) At first, use Git to download this project. ``` git clone https://github.com/contributte/datagrid-skeleton.git ``` -2) Run command: +2) Setup project. ``` - docker-compose up + make install ``` -3) Open http://localhost and enjoy! +3) Run docker stack. - If you need enter into container (such as `composer update`) run command `docker-compose run web bash`. + ``` + make docker-up + ``` + +4) Open http://localhost and enjoy! ### Composer packages diff --git a/app/Bootstrap.php b/app/Bootstrap.php index cbb844f..341631f 100644 --- a/app/Bootstrap.php +++ b/app/Bootstrap.php @@ -2,28 +2,27 @@ namespace App; -use Nette\Configurator; +use Contributte\Bootstrap\ExtraConfigurator; +use Contributte\Nella\Boot\Bootloader; +use Contributte\Nella\Boot\Preset\NellaPreset; +use Nette\Application\Application; final class Bootstrap { - public static function boot(): Configurator + public static function boot(): ExtraConfigurator { - $configurator = new Configurator(); - - $configurator->setDebugMode(false); - $configurator->enableTracy(__DIR__ . '/../log'); - - $configurator->setTimeZone('Europe/Prague'); - $configurator->setTempDirectory(__DIR__ . '/../temp'); - - $configurator->addConfig(__DIR__ . '/../config/common.neon'); - - if (file_exists(__DIR__ . '/../config/local.neon')) { - $configurator->addConfig(__DIR__ . '/../config/local.neon'); - } + return Bootloader::create() + ->use(NellaPreset::create(__DIR__)) + ->boot(); + } - return $configurator; + public static function run(): void + { + self::boot() + ->createContainer() + ->getByType(Application::class) + ->run(); } } diff --git a/app/Model/Parameters.php b/app/Model/Parameters.php new file mode 100644 index 0000000..cb8efe9 --- /dev/null +++ b/app/Model/Parameters.php @@ -0,0 +1,24 @@ +parameters = $parameters; + } + + public function get(string $key): mixed + { + return $this->parameters[$key]; + } + +} diff --git a/app/Model/Utils/DateTime.php b/app/Model/Utils/DateTime.php new file mode 100644 index 0000000..7ffa6fb --- /dev/null +++ b/app/Model/Utils/DateTime.php @@ -0,0 +1,20 @@ +getRequest() === null) { - throw new UnexpectedValueException(); - } - - if (!$this->getRequest()->isMethod(Request::FORWARD)) { - $this->error(); - } - } - - - public function renderDefault(BadRequestException $exception): void - { - // load template 403.latte or 404.latte or ... 4xx.latte - $file = __DIR__ . '/templates/Error/' . $exception->getCode() . '.latte'; - $this->getTemplate()->setFile( - is_file($file) ? $file : __DIR__ . '/templates/Error/4xx.latte' - ); - } - -} diff --git a/app/Presenters/ErrorPresenter.php b/app/Presenters/ErrorPresenter.php deleted file mode 100644 index 729a4dc..0000000 --- a/app/Presenters/ErrorPresenter.php +++ /dev/null @@ -1,52 +0,0 @@ -logger = $logger; - } - - public function run(Request $request): Response - { - $e = $request->getParameter('exception'); - if ($e instanceof BadRequestException) { - // $this->logger->log("HTTP code {$e->getCode()}: {$e->getMessage()} in {$e->getFile()}:{$e->getLine()}", 'access'); - [$module, , $sep] = Helpers::splitName($request->getPresenterName()); - $errorPresenter = $module . $sep . 'Error4xx'; - - return new ForwardResponse($request->setPresenterName($errorPresenter)); - } - - $this->logger->log($e, ILogger::EXCEPTION); - - return new CallbackResponse( - static function (IRequest $httpRequest, IResponse $httpResponse): void { - if (preg_match('#^text/html(?:;|$)#', (string) $httpResponse->getHeader('Content-Type')) > 0) { - require __DIR__ . '/templates/Error/500.phtml'; - } - } - ); - } - -} diff --git a/app/Router/RouterFactory.php b/app/Router/RouterFactory.php deleted file mode 100644 index b1d23b9..0000000 --- a/app/Router/RouterFactory.php +++ /dev/null @@ -1,19 +0,0 @@ -addRoute('[/]', 'Basic:default'); - - return $router; - } - -} diff --git a/app/UI/@Templates/@layout.latte b/app/UI/@Templates/@layout.latte new file mode 100644 index 0000000..0b4740b --- /dev/null +++ b/app/UI/@Templates/@layout.latte @@ -0,0 +1,44 @@ + + + + + + + + + + {ifset title}{include title|stripHtml} | {/ifset}DataGrid Sandbox + + + + + + + {snippet flashes} +
+
+ {$flash->message} +
+
+ {/snippet} + + + +
+
+ {include content} +
+
{include 'parts/code.latte'}
+
+ + diff --git a/app/UI/@Templates/parts/code.latte b/app/UI/@Templates/parts/code.latte new file mode 100644 index 0000000..4ef4250 --- /dev/null +++ b/app/UI/@Templates/parts/code.latte @@ -0,0 +1,25 @@ +
+
+ {var $reflection = new ReflectionClass($control)} + {var $presenterFile = basename($reflection->getFileName())} +   See the code below 👇 or see GitHub +
+ +
{include #code|trim}
+
+
+{define #code} + {php + $method = new ReflectionMethod($control, 'createComponentGrid'); + $filename = $method->getFileName(); + $start_line = $method->getStartLine() - 1; + $end_line = $method->getEndLine(); + $length = $end_line - $start_line; + + $source = file($filename); + $body = implode("", array_slice($source, $start_line, $length)); + $body = trim(preg_replace_callback('/^\t/m', function($i){ return ''; }, $body)); + } + {$body} + +{/define} diff --git a/app/Presenters/AbstractPresenter.php b/app/UI/AbstractPresenter.php similarity index 68% rename from app/Presenters/AbstractPresenter.php rename to app/UI/AbstractPresenter.php index 336be33..5b3f3a0 100644 --- a/app/Presenters/AbstractPresenter.php +++ b/app/UI/AbstractPresenter.php @@ -1,14 +1,13 @@ $newStatus]; @@ -33,11 +26,7 @@ public function changeStatus($id, string $newStatus): void } if ($this->isAjax()) { - $grid = $this['grid']; - - if (!$grid instanceof DataGrid) { - throw new UnexpectedValueException(); - } + $grid = $this->getComponent('grid'); $grid->redrawItem($id); $this->flashMessage('Status changed'); diff --git a/app/Presenters/ActionsPresenter.php b/app/UI/Actions/ActionsPresenter.php similarity index 95% rename from app/Presenters/ActionsPresenter.php rename to app/UI/Actions/ActionsPresenter.php index 818958e..dadc5f4 100644 --- a/app/Presenters/ActionsPresenter.php +++ b/app/UI/Actions/ActionsPresenter.php @@ -1,16 +1,14 @@ setSortable(); $grid->addColumnNumber('id', 'Id') - ->setAlign('left') + ->setAlign('start') ->setSortable(); $grid->addColumnText('name', 'Name') @@ -69,21 +67,18 @@ public function createComponentGrid(): DataGrid return $grid; } - public function handleSort(): void { $this->flashMessage('Sorted!'); $this->redrawControl('flashes'); } - public function handleBlah(): void { $this->flashMessage('Blah'); $this->redrawControl('flashes'); } - public function handleDelete(): void { $this->flashMessage('Deleted!', 'info'); diff --git a/app/templates/Actions/default.latte b/app/UI/Actions/Templates/default.latte similarity index 100% rename from app/templates/Actions/default.latte rename to app/UI/Actions/Templates/default.latte diff --git a/app/Presenters/AddPresenter.php b/app/UI/Add/AddPresenter.php similarity index 91% rename from app/Presenters/AddPresenter.php rename to app/UI/Add/AddPresenter.php index e99119b..88d2422 100644 --- a/app/Presenters/AddPresenter.php +++ b/app/UI/Add/AddPresenter.php @@ -1,15 +1,13 @@ setItemsPerPageList([20, 50, 100]); $grid->addColumnNumber('id', 'Id') - ->setAlign('left') + ->setAlign('start') ->setFilterText(); $grid->addColumnText('name', 'Name') diff --git a/app/templates/Add/default.latte b/app/UI/Add/Templates/default.latte similarity index 100% rename from app/templates/Add/default.latte rename to app/UI/Add/Templates/default.latte diff --git a/app/Presenters/ColumnsPresenter.php b/app/UI/Columns/ColumnsPresenter.php similarity index 80% rename from app/Presenters/ColumnsPresenter.php rename to app/UI/Columns/ColumnsPresenter.php index e1ac41e..2578db1 100644 --- a/app/Presenters/ColumnsPresenter.php +++ b/app/UI/Columns/ColumnsPresenter.php @@ -1,9 +1,10 @@ onChange[] = [$this, 'changeStatus']; $grid->addColumnText('emojis', 'Emojis (template)') - ->setTemplate(__DIR__ . '/../templates/Columns/grid/columnsEmojis.latte'); + ->setTemplate(__DIR__ . '/Templates/grid/columnsEmojis.latte'); $grid->addColumnDateTime('birth_date', 'Birthday') ->setFormat('j. n. Y') ->setSortable(); $grid->addColumnNumber('age', 'Age') - ->setRenderer(function (Row $row): int { - return $row['birth_date']->diff(new DateTime())->y; - }); + ->setRenderer(fn (Row $row): ?int => DateTime::fromSafe($row->asDateTime('birth_date'))?->diff(new DateTime())->y); $grid->setColumnsHideable(); @@ -80,9 +77,7 @@ public function createComponentGrid(): DataGrid $grid->addColumnCallback('email', function (ColumnLink $column, Row $row): void { if ($row['id'] === 3) { - $column->setRenderer(function (): string { - return ''; - }); + $column->setRenderer(fn (): string => ''); } }); @@ -92,33 +87,30 @@ public function createComponentGrid(): DataGrid new class implements IMultipleAggregationFunction { - /** @var int */ - private $idsSum = 0; + private int $idsSum = 0; - /** @var float */ - private $avgAge = 0.0; + private float $avgAge = 0.0; public function getFilterDataType(): string { return IAggregationFunction::DATA_TYPE_PAGINATED; } - /** @param mixed $dataSource */ - public function processDataSource($dataSource): void + public function processDataSource(mixed $dataSource): void { if (!$dataSource instanceof Fluent) { throw new UnexpectedValueException(); } - $this->idsSum = (int) $dataSource->getConnection() + $this->idsSum = Types::forceInt($dataSource->getConnection() ->select('SUM([id])') ->from($dataSource, '_') - ->fetchSingle(); + ->fetchSingle()); - $this->avgAge = round((float) $dataSource->getConnection() + $this->avgAge = round(Types::forceNumber($dataSource->getConnection() ->select('AVG(YEAR([birth_date]))') ->from($dataSource, '_') - ->fetchSingle()); + ->fetchSingle())); } public function renderResult(string $key): string diff --git a/app/templates/Basic/default.latte b/app/UI/Columns/Templates/default.latte similarity index 100% rename from app/templates/Basic/default.latte rename to app/UI/Columns/Templates/default.latte diff --git a/app/templates/Columns/grid/columnsEmojis.latte b/app/UI/Columns/Templates/grid/columnsEmojis.latte similarity index 100% rename from app/templates/Columns/grid/columnsEmojis.latte rename to app/UI/Columns/Templates/grid/columnsEmojis.latte diff --git a/app/Presenters/EditPresenter.php b/app/UI/Edit/EditPresenter.php similarity index 90% rename from app/Presenters/EditPresenter.php rename to app/UI/Edit/EditPresenter.php index 27e51f8..3b2b3a7 100644 --- a/app/Presenters/EditPresenter.php +++ b/app/UI/Edit/EditPresenter.php @@ -1,8 +1,9 @@ addColumnNumber('id', 'Id') ->setSortable() - ->setAlign('left'); + ->setAlign('start'); $grid->addColumnText('name', 'Name') ->setSortable() @@ -34,9 +33,7 @@ public function createComponentGrid(): DataGrid $grid->addColumnLink('link', 'Link', 'this#demo', 'name', ['id', 'surname' => 'name']) ->setEditableValueCallback( - function (Row $row) { - return $row['name']; - } + fn (Row $row) => $row['name'] ) ->setEditableCallback(function ($id, $value): string { $this->flashMessage(sprintf('Id: %s, new value: %s', $id, $value)); @@ -69,7 +66,7 @@ function (Row $row) { $container->setDefaults([ 'id' => $row['id'], 'name' => $row['name'], - 'birth_date' => $row['birth_date']->format('j. n. Y'), + 'birth_date' => DateTime::fromSafe($row->asDateTime('birth_date'))?->format('j. n. Y'), 'link' => $row['name'], 'status' => $row['status'], ]); diff --git a/app/templates/Columns/default.latte b/app/UI/Edit/Templates/default.latte similarity index 100% rename from app/templates/Columns/default.latte rename to app/UI/Edit/Templates/default.latte diff --git a/app/Presenters/ExportPresenter.php b/app/UI/Export/ExportPresenter.php similarity index 87% rename from app/Presenters/ExportPresenter.php rename to app/UI/Export/ExportPresenter.php index 8ce5db8..75654cf 100644 --- a/app/Presenters/ExportPresenter.php +++ b/app/UI/Export/ExportPresenter.php @@ -1,16 +1,14 @@ setItemsPerPageList([20, 50, 100]); $grid->addColumnNumber('id', 'Id') - ->setAlign('left') + ->setAlign('start') ->setSortable(); $grid->addColumnText('name', 'Name') @@ -43,9 +41,7 @@ public function createComponentGrid(): DataGrid $columnName = new ColumnText($grid, 'name', 'name', 'Name'); $columnEven = (new ColumnText($grid, 'even', 'even', 'Even ID (yes/no)')) ->setRenderer( - function ($item) { - return $item['id'] % 2 === 0 ? 'No' : 'Yes'; - } + fn ($item) => $item['id'] % 2 === 0 ? 'No' : 'Yes' ); $grid->addExportCsv('Csv export', 'examples-all.csv') diff --git a/app/templates/Edit/default.latte b/app/UI/Export/Templates/default.latte similarity index 100% rename from app/templates/Edit/default.latte rename to app/UI/Export/Templates/default.latte diff --git a/app/Presenters/FiltersPresenter.php b/app/UI/Filters/FiltersPresenter.php similarity index 87% rename from app/Presenters/FiltersPresenter.php rename to app/UI/Filters/FiltersPresenter.php index 7f8224f..c7809dc 100644 --- a/app/Presenters/FiltersPresenter.php +++ b/app/UI/Filters/FiltersPresenter.php @@ -1,9 +1,9 @@ setFilterDateRange(); $grid->addColumnNumber('age', 'Age') - ->setRenderer(function (Row $row): int { - return $row['birth_date']->diff(new DateTime())->y; - }) + ->setRenderer(fn (Row $row): ?int => DateTime::fromSafe($row->asDateTime('birth_date'))?->diff(new DateTime())->y) ->setFilterRange() ->setCondition(function (Fluent $fluent, ArrayHash $values): void { if ((bool) $values['from']) { diff --git a/app/templates/Export/default.latte b/app/UI/Filters/Templates/default.latte similarity index 100% rename from app/templates/Export/default.latte rename to app/UI/Filters/Templates/default.latte diff --git a/app/Presenters/GroupActionsPresenter.php b/app/UI/GroupActions/GroupActionsPresenter.php similarity index 95% rename from app/Presenters/GroupActionsPresenter.php rename to app/UI/GroupActions/GroupActionsPresenter.php index ee72020..f4909ee 100644 --- a/app/Presenters/GroupActionsPresenter.php +++ b/app/UI/GroupActions/GroupActionsPresenter.php @@ -1,15 +1,13 @@ setItemsPerPageList([20, 50, 100]); $grid->addColumnNumber('id', 'Id') - ->setAlign('left') + ->setAlign('start') ->setSortable(); $grid->addColumnText('name', 'Name') @@ -40,8 +38,8 @@ public function createComponentGrid(): DataGrid )->onSelect[] = [$this, 'groupChangeStatus']; $grid->addGroupAction('Send', [ - 'john' => 'John', - 'joe' => 'Joe', + 'john' => 'John', + 'joe' => 'Joe', 'frank' => 'Frank', ])->onSelect[] = [$this, 'groupSend']; @@ -54,7 +52,6 @@ public function createComponentGrid(): DataGrid return $grid; } - /** * @param mixed[] $ids */ @@ -85,7 +82,6 @@ public function groupChangeStatus(array $ids, string $newStatus): void } } - /** * @param mixed[] $ids */ @@ -104,7 +100,6 @@ public function groupAddNote(array $ids, string $value): void } } - /** * @param mixed[] $ids */ @@ -123,7 +118,6 @@ public function groupSend(array $ids, string $key): void } } - /** * @param mixed[] $ids */ @@ -142,7 +136,6 @@ public function groupDelete(array $ids): void } } - /** * @param mixed[] $ids */ diff --git a/app/templates/Filters/default.latte b/app/UI/GroupActions/Templates/default.latte similarity index 100% rename from app/templates/Filters/default.latte rename to app/UI/GroupActions/Templates/default.latte diff --git a/app/Presenters/BasicPresenter.php b/app/UI/Home/HomePresenter.php similarity index 71% rename from app/Presenters/BasicPresenter.php rename to app/UI/Home/HomePresenter.php index da91f3b..e64de0b 100644 --- a/app/Presenters/BasicPresenter.php +++ b/app/UI/Home/HomePresenter.php @@ -1,17 +1,15 @@ setFormat('j. n. Y'); $grid->addColumnNumber('age', 'Age') - ->setRenderer(function (Row $row): int { - return $row['birth_date']->diff(new DateTime())->y; - }); + ->setRenderer(fn (Row $row): ?int => DateTime::fromSafe($row->asDateTime('birth_date'))?->diff(new DateTime())->y); return $grid; } diff --git a/app/templates/GroupActions/default.latte b/app/UI/Home/Templates/default.latte similarity index 100% rename from app/templates/GroupActions/default.latte rename to app/UI/Home/Templates/default.latte diff --git a/app/Presenters/ItemDetailPresenter.php b/app/UI/ItemDetail/ItemDetailPresenter.php similarity index 79% rename from app/Presenters/ItemDetailPresenter.php rename to app/UI/ItemDetail/ItemDetailPresenter.php index f8521e5..77128e1 100644 --- a/app/Presenters/ItemDetailPresenter.php +++ b/app/UI/ItemDetail/ItemDetailPresenter.php @@ -1,15 +1,13 @@ setItemsDetail(); - $grid->setTemplateFile(__DIR__ . '/../templates/ItemDetail/grid/item-detail-grid.latte'); + $grid->setTemplateFile(__DIR__ . '/Templates/grid/item-detail-grid.latte'); return $grid; } diff --git a/app/templates/ItemDetail/default.latte b/app/UI/ItemDetail/Templates/default.latte similarity index 100% rename from app/templates/ItemDetail/default.latte rename to app/UI/ItemDetail/Templates/default.latte diff --git a/app/templates/ItemDetail/grid/item-detail-grid.latte b/app/UI/ItemDetail/Templates/grid/item-detail-grid.latte similarity index 100% rename from app/templates/ItemDetail/grid/item-detail-grid.latte rename to app/UI/ItemDetail/Templates/grid/item-detail-grid.latte diff --git a/app/Presenters/LocalizationPresenter.php b/app/UI/Localization/LocalizationPresenter.php similarity index 88% rename from app/Presenters/LocalizationPresenter.php rename to app/UI/Localization/LocalizationPresenter.php index 261f484..e1a6e31 100644 --- a/app/Presenters/LocalizationPresenter.php +++ b/app/UI/Localization/LocalizationPresenter.php @@ -1,9 +1,9 @@ setFormat('j. n. Y'); $grid->addColumnNumber('age', 'Age') - ->setRenderer(function (Row $row): int { - return $row['birth_date']->diff(new DateTime())->y; - }); + ->setRenderer(fn (Row $row): ?int => DateTime::fromSafe($row->asDateTime('birth_date'))?->diff(new DateTime())->y); $translator = new SimpleTranslator([ 'ublaboo_datagrid.no_item_found_reset' => 'Žádné položky nenalezeny. Filtr můžete vynulovat', diff --git a/app/templates/Localization/default.latte b/app/UI/Localization/Templates/default.latte similarity index 100% rename from app/templates/Localization/default.latte rename to app/UI/Localization/Templates/default.latte diff --git a/app/Presenters/RowPresenter.php b/app/UI/Row/RowPresenter.php similarity index 79% rename from app/Presenters/RowPresenter.php rename to app/UI/Row/RowPresenter.php index 87e6c3f..2e6e1f9 100644 --- a/app/Presenters/RowPresenter.php +++ b/app/UI/Row/RowPresenter.php @@ -1,16 +1,14 @@ addColumnNumber('id', 'Id') - ->setAlign('left') + ->setAlign('start') ->setSortable(); $grid->addColumnText('name', 'Name') @@ -46,29 +44,21 @@ public function createComponentGrid(): DataGrid $grid->addGroupAction('Delete')->onSelect[] = [$this, 'groupDelete']; - $grid->allowRowsGroupAction(function ($item): bool { - return $item->id % 2 === 0; - }); + $grid->allowRowsGroupAction(fn ($item): bool => $item->id % 2 === 0); - $grid->allowRowsAction('delete', function ($item): bool { - return $item->id % 3 === 0; - }); + $grid->allowRowsAction('delete', fn ($item): bool => $item->id % 3 === 0); - $grid->allowRowsAction('detail', function ($item): bool { - return $item->id % 4 === 0; - }); + $grid->allowRowsAction('detail', fn ($item): bool => $item->id % 4 === 0); return $grid; } - public function handleDelete(): void { $this->flashMessage('Deleted!', 'info'); $this->redrawControl('flashes'); } - /** * @param mixed[] $ids */ diff --git a/app/templates/Row/default.latte b/app/UI/Row/Templates/default.latte similarity index 100% rename from app/templates/Row/default.latte rename to app/UI/Row/Templates/default.latte diff --git a/app/UI/TEmptyLayoutView.php b/app/UI/TEmptyLayoutView.php deleted file mode 100644 index b6e5421..0000000 --- a/app/UI/TEmptyLayoutView.php +++ /dev/null @@ -1,35 +0,0 @@ -getRequest(); - - if ($request->getParameter('inFrame') == true) { - $this->setLayout(__DIR__ . '/../templates/@layout.inFrame.latte'); - } - } -} diff --git a/app/templates/TreeView/default.latte b/app/UI/TreeView/Templates/default.latte similarity index 100% rename from app/templates/TreeView/default.latte rename to app/UI/TreeView/Templates/default.latte diff --git a/app/Presenters/TreeViewPresenter.php b/app/UI/TreeView/TreeViewPresenter.php similarity index 86% rename from app/Presenters/TreeViewPresenter.php rename to app/UI/TreeView/TreeViewPresenter.php index 3e276cf..474d0d9 100644 --- a/app/Presenters/TreeViewPresenter.php +++ b/app/UI/TreeView/TreeViewPresenter.php @@ -1,8 +1,8 @@ */ - public function getChildren($parentCategoryId): Fluent + public function getChildren(int $parentCategoryId): Fluent { $join = $this->dibiConnection->select('COUNT(id) AS count, parent_category_id') ->from('categories') @@ -84,18 +80,10 @@ public function getChildren($parentCategoryId): Fluent ->from('categories', 'c') ->leftJoin($join, 'c_b') ->on('c_b.parent_category_id = c.id') - ->where('c.parent_category_id = ?', (int) $parentCategoryId); + ->where('c.parent_category_id = ?', $parentCategoryId); } - - - /** - * @param mixed $itemId - * @param mixed $prevId - * @param mixed $nextId - * @param mixed $parentId - */ - public function handleSort($itemId, $prevId, $nextId, $parentId): void + public function handleSort(?int $itemId, ?int $prevId, ?int $nextId, ?int $parentId): void { $this->flashMessage( sprintf( @@ -115,7 +103,6 @@ public function handleSort($itemId, $prevId, $nextId, $parentId): void } } - public function handleEdit(): void { $this->flashMessage('Edited!', 'success'); @@ -127,7 +114,6 @@ public function handleEdit(): void } } - public function handleDelete(): void { $this->flashMessage('Deleted!', 'info'); diff --git a/app/templates/@layout.inFrame.latte b/app/templates/@layout.inFrame.latte deleted file mode 100644 index 2d10ebe..0000000 --- a/app/templates/@layout.inFrame.latte +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - {ifset title}{include title|stripHtml} | {/ifset}DataGrid Sandbox - - - - - - - - - - - - - - - - - - - - - - {snippet flashes} - {if count($flashes) != 0} -
-
- {$flash->message} -
-
- {/if} - {/snippet} - -
-
- {include content} -
-
- - {block scripts} - - - - - - - - - - - - - - - - - - - - - - - - - - {/block} - - diff --git a/app/templates/@layout.latte b/app/templates/@layout.latte index d0028ea..e010109 100644 --- a/app/templates/@layout.latte +++ b/app/templates/@layout.latte @@ -9,19 +9,21 @@ {ifset title}{include title|stripHtml} | {/ifset}DataGrid Sandbox - + - + - + - + + + @@ -94,18 +96,19 @@ --> - + - + - + + {/block} diff --git a/app/templates/Error/403.latte b/app/templates/Error/403.latte deleted file mode 100644 index de00328..0000000 --- a/app/templates/Error/403.latte +++ /dev/null @@ -1,7 +0,0 @@ -{block content} -

Access Denied

- -

You do not have permission to view this page. Please try contact the web -site administrator if you believe you should be able to view this page.

- -

error 403

diff --git a/app/templates/Error/404.latte b/app/templates/Error/404.latte deleted file mode 100644 index 022001c..0000000 --- a/app/templates/Error/404.latte +++ /dev/null @@ -1,8 +0,0 @@ -{block content} -

Page Not Found

- -

The page you requested could not be found. It is possible that the address is -incorrect, or that the page no longer exists. Please use a search engine to find -what you are looking for.

- -

error 404

diff --git a/app/templates/Error/405.latte b/app/templates/Error/405.latte deleted file mode 100644 index d424892..0000000 --- a/app/templates/Error/405.latte +++ /dev/null @@ -1,6 +0,0 @@ -{block content} -

Method Not Allowed

- -

The requested method is not allowed for the URL.

- -

error 405

diff --git a/app/templates/Error/410.latte b/app/templates/Error/410.latte deleted file mode 100644 index 99bde92..0000000 --- a/app/templates/Error/410.latte +++ /dev/null @@ -1,6 +0,0 @@ -{block content} -

Page Not Found

- -

The page you requested has been taken off the site. We apologize for the inconvenience.

- -

error 410

diff --git a/app/templates/Error/4xx.latte b/app/templates/Error/4xx.latte deleted file mode 100644 index d5ce82f..0000000 --- a/app/templates/Error/4xx.latte +++ /dev/null @@ -1,4 +0,0 @@ -{block content} -

Oops...

- -

Your browser sent a request that this server could not understand or process.

diff --git a/app/templates/Error/500.phtml b/app/templates/Error/500.phtml deleted file mode 100644 index a2b900c..0000000 --- a/app/templates/Error/500.phtml +++ /dev/null @@ -1,27 +0,0 @@ - - - -Server Error - - - -
-
-

Server Error

- -

We're sorry! The server encountered an internal error and - was unable to complete your request. Please try again later.

- -

error 500

-
-
- - diff --git a/app/templates/Error/503.phtml b/app/templates/Error/503.phtml deleted file mode 100644 index 1c2c427..0000000 --- a/app/templates/Error/503.phtml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - -Site is temporarily down for maintenance - -

We're Sorry

- -

The site is temporarily down for maintenance. Please try again in a few minutes.

diff --git a/app/templates/datagridFactoryCode.latte b/app/templates/datagridFactoryCode.latte deleted file mode 100644 index 4f59b3f..0000000 --- a/app/templates/datagridFactoryCode.latte +++ /dev/null @@ -1,15 +0,0 @@ -{** - * @param $method - *} -{php - $method = new ReflectionMethod($control, $method); - $filename = $method->getFileName(); - $start_line = $method->getStartLine() - 1; - $end_line = $method->getEndLine(); - $length = $end_line - $start_line; - - $source = file($filename); - $body = implode("", array_slice($source, $start_line, $length)); - $body = trim(preg_replace_callback('/^\t/m', function($i){ return ''; }, $body)); -} -{$body} diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..f608161 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,6 @@ +/* Datagrid styles */ +@import '@contributte/datagrid/assets/css/datagrid-full.css'; + +/* App styles */ +@import 'prismjs/themes/prism-okaidia.css'; +@import './styles.css'; diff --git a/www/assets/styles.css b/assets/css/styles.css similarity index 100% rename from www/assets/styles.css rename to assets/css/styles.css diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..303c6c9 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,72 @@ +import naja from "naja"; +import netteForms from "nette-forms"; +import { + AutosubmitPlugin, + CheckboxPlugin, + ConfirmPlugin, + createDatagrids, + DatepickerPlugin, + Happy, + HappyPlugin, + InlinePlugin, + ItemDetailPlugin, + NetteFormsPlugin, + SelectpickerPlugin, + SortableJS, + SortablePlugin, + TomSelect, + TreeViewPlugin, + VanillaDatepicker +} from "@contributte/datagrid/assets"; +import { NajaAjax } from "@contributte/datagrid/assets/ajax"; +import Select from "tom-select"; +import { Dropdown } from "bootstrap"; + +// Code highlighting +import Prism from "prismjs/components/prism-core"; +import "prismjs/components/prism-markup-templating"; +import "prismjs/components/prism-php"; +import "prismjs/components/prism-clike"; +import "prismjs/components/prism-javascript"; +import "prismjs/components/prism-css"; + +// Styles +import '../css/main.css'; + +// Datagrid + UI +document.addEventListener("DOMContentLoaded", () => { + // Initialize dropdowns + Array.from(document.querySelectorAll('.dropdown')) + .forEach(el => new Dropdown(el)) + + // Initialize Naja (nette ajax) + naja.formsHandler.netteForms = netteForms; + naja.initialize(); + + // Initialize datagrids + createDatagrids(new NajaAjax(naja), { + datagrid: { + plugins: [ + new AutosubmitPlugin(), + new CheckboxPlugin(), + new ConfirmPlugin(), + new InlinePlugin(), + new ItemDetailPlugin(), + new NetteFormsPlugin(netteForms), + new HappyPlugin(new Happy()), + new SortablePlugin(new SortableJS()), + new DatepickerPlugin(new VanillaDatepicker({buttonClass: 'btn'})), + new SelectpickerPlugin(new TomSelect(Select)), + new TreeViewPlugin(), + ], + }, + }); +}); + +document.addEventListener("DOMContentLoaded", () => { + // Highlighting + const codes = document.querySelectorAll('code'); + codes.forEach(code => { + Prism.highlightElement(code); + }); +}); diff --git a/assets/public/favicon.ico b/assets/public/favicon.ico new file mode 100644 index 0000000..0f09ae9 Binary files /dev/null and b/assets/public/favicon.ico differ diff --git a/composer.json b/composer.json index 3be25a0..0c897cf 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "contributte/datagrid-skeleton", - "description": "Datagrid component project skeleton based on Nette Framework and Contributte libraries by @f3l1x & @paveljanda.", + "description": "Example of contributte/datagrid component. Project skeleton based on Nette Framework and Contributte libraries by @f3l1x & @paveljanda.", "keywords": [ "php", "nette", @@ -13,29 +13,21 @@ "license": "MIT", "type": "project", "require": { - "php": ">= 8.0", - "nette/application": "~3.1.0", - "nette/bootstrap": "~3.2.0", - "nette/caching": "~3.2.0", - "nette/database": "~3.1.0", - "nette/di": "^3.0", - "nette/finder": "~2.6.0", - "nette/forms": "~3.1.0", - "nette/http": "~3.2.0", - "nette/mail": "~3.1.0", - "nette/security": "~3.1.0", - "nette/utils": "^3.0", - "latte/latte": "^3.0", - "tracy/tracy": "^2.7.0", - "ublaboo/datagrid": "^6.0", - "dibi/dibi": "^5.0.0" + "php": ">= 8.1", + + "contributte/nella": "^0.1", + "ublaboo/datagrid": "dev-next", + + "dibi/dibi": "^4.2.7" }, "require-dev": { - "ninjify/qa": "^0.13", - "phpstan/phpstan": "^1.0.0", - "phpstan/phpstan-dibi": "^1.0.0", - "phpstan/phpstan-nette": "^1.0.0", - "phpstan/phpstan-strict-rules": "^1.0.0" + "contributte/qa": "^0.4.0", + "contributte/tester": "^0.1.0", + "phpstan/phpstan": "^1.9.14", + "phpstan/phpstan-dibi": "^1.0.1", + "phpstan/phpstan-nette": "^1.2.1", + "phpstan/phpstan-strict-rules": "^1.4.5", + "phpstan/phpstan-deprecation-rules": "^1.1.1" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 97f5089..7e468eb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "59c41fc2243812dd0d1dd1a9cf919f5b", + "content-hash": "c3cd2f19a97d67000400c328a59e7527", "packages": [ { "name": "contributte/application", @@ -81,37 +81,558 @@ ], "time": "2023-09-27T20:32:37+00:00" }, + { + "name": "contributte/bootstrap", + "version": "v0.5.0", + "source": { + "type": "git", + "url": "https://github.com/contributte/bootstrap.git", + "reference": "55c2358ef001b922896f9a8faaa0282e67a64d09" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/contributte/bootstrap/zipball/55c2358ef001b922896f9a8faaa0282e67a64d09", + "reference": "55c2358ef001b922896f9a8faaa0282e67a64d09", + "shasum": "" + }, + "require": { + "nette/bootstrap": "^3.0.2", + "nette/utils": "^3.1.5", + "php": ">=7.2" + }, + "require-dev": { + "ninjify/nunjuck": "^0.4", + "ninjify/qa": "^0.12", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-nette": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.6-dev" + } + }, + "autoload": { + "psr-4": { + "Contributte\\Bootstrap\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Milan Felix Šulc", + "homepage": "https://f3l1x.io" + } + ], + "description": "Extra contrib to nette/boostrap", + "homepage": "https://github.com/contributte/bootstrap", + "keywords": [ + "application", + "bootstrap", + "docker", + "nette" + ], + "support": { + "issues": "https://github.com/contributte/bootstrap/issues", + "source": "https://github.com/contributte/bootstrap/tree/v0.5.0" + }, + "time": "2020-12-13T19:07:20+00:00" + }, + { + "name": "contributte/di", + "version": "v0.5.6", + "source": { + "type": "git", + "url": "https://github.com/contributte/di.git", + "reference": "49d6b93d46f57be319b1e811cd983bfed0c90979" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/contributte/di/zipball/49d6b93d46f57be319b1e811cd983bfed0c90979", + "reference": "49d6b93d46f57be319b1e811cd983bfed0c90979", + "shasum": "" + }, + "require": { + "nette/di": "^3.1.0", + "nette/utils": "^3.2.8 || ^4.0", + "php": ">=7.2" + }, + "conflict": { + "nette/schema": "<1.1.0" + }, + "require-dev": { + "nette/bootstrap": "^3.1.4", + "nette/robot-loader": "^3.4.2 || ^4.0", + "ninjify/nunjuck": "^0.4", + "ninjify/qa": "^0.13", + "phpstan/phpstan": "^1.9.11", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-nette": "^1.2.0", + "phpstan/phpstan-strict-rules": "^1.4.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Contributte\\DI\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Milan Felix Šulc", + "homepage": "https://f3l1x.io" + } + ], + "description": "Extra contrib to nette/di", + "homepage": "https://github.com/contributte/di", + "keywords": [ + "dependency", + "inject", + "nette" + ], + "support": { + "issues": "https://github.com/contributte/di/issues", + "source": "https://github.com/contributte/di/tree/v0.5.6" + }, + "funding": [ + { + "url": "https://contributte.org/partners.html", + "type": "custom" + }, + { + "url": "https://github.com/f3l1x", + "type": "github" + } + ], + "time": "2023-09-05T08:23:55+00:00" + }, + { + "name": "contributte/forms", + "version": "v0.5.1", + "source": { + "type": "git", + "url": "https://github.com/contributte/forms.git", + "reference": "c7ac26b456ff2958ea207c43be6515ad1154dcea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/contributte/forms/zipball/c7ac26b456ff2958ea207c43be6515ad1154dcea", + "reference": "c7ac26b456ff2958ea207c43be6515ad1154dcea", + "shasum": "" + }, + "require": { + "nette/forms": "^3.0.0", + "php": ">=7.2" + }, + "conflict": { + "nette/di": "<3.0.0" + }, + "require-dev": { + "nette/application": "^3.0.0", + "nette/di": "^3.1.0", + "ninjify/nunjuck": "^0.4", + "ninjify/qa": "^0.12", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-nette": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1" + }, + "suggest": { + "nette/di": "to use FormFactoryExtension[CompilerExtension]" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Contributte\\Forms\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Milan Felix Šulc", + "homepage": "https://f3l1x.io" + } + ], + "description": "Extra contrib to nette/forms", + "homepage": "https://github.com/contributte/forms", + "keywords": [ + "Forms", + "checkbox", + "inputs", + "nette", + "renderers", + "rules", + "validation" + ], + "support": { + "issues": "https://github.com/contributte/forms/issues", + "source": "https://github.com/contributte/forms/tree/v0.5.1" + }, + "funding": [ + { + "url": "https://contributte.org/partners.html", + "type": "custom" + }, + { + "url": "https://github.com/f3l1x", + "type": "github" + } + ], + "time": "2022-11-13T17:22:04+00:00" + }, + { + "name": "contributte/latte", + "version": "v0.6.0", + "source": { + "type": "git", + "url": "https://github.com/contributte/latte.git", + "reference": "f558925e5b9e29e669f242fdfd3dcb520652b9c3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/contributte/latte/zipball/f558925e5b9e29e669f242fdfd3dcb520652b9c3", + "reference": "f558925e5b9e29e669f242fdfd3dcb520652b9c3", + "shasum": "" + }, + "require": { + "latte/latte": "^3.0.12", + "php": ">=8.1" + }, + "require-dev": { + "contributte/phpstan": "^0.1", + "contributte/qa": "^0.4", + "contributte/tester": "^0.4", + "nette/application": "^3.1.14", + "nette/di": "^3.0.17" + }, + "suggest": { + "nette/di": "to use VersionExtension[CompilerExtension]" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Contributte\\Latte\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Milan Felix Šulc", + "homepage": "https://f3l1x.io" + } + ], + "description": "Extra contrib to nette/latte", + "homepage": "https://github.com/contributte/latte", + "keywords": [ + "extra", + "latte", + "nette" + ], + "support": { + "issues": "https://github.com/contributte/latte/issues", + "source": "https://github.com/contributte/latte/tree/v0.6.0" + }, + "funding": [ + { + "url": "https://contributte.org/partners.html", + "type": "custom" + }, + { + "url": "https://github.com/f3l1x", + "type": "github" + } + ], + "time": "2023-12-12T19:43:05+00:00" + }, + { + "name": "contributte/nella", + "version": "v0.1", + "source": { + "type": "git", + "url": "https://github.com/contributte/nella.git", + "reference": "6a701ac972674aa02adee9abe508f60fe9a082cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/contributte/nella/zipball/6a701ac972674aa02adee9abe508f60fe9a082cd", + "reference": "6a701ac972674aa02adee9abe508f60fe9a082cd", + "shasum": "" + }, + "require": { + "contributte/application": "^0.5.0", + "contributte/bootstrap": "^0.5.0", + "contributte/di": "^0.5.1", + "contributte/forms": "^0.5.0", + "contributte/latte": "^0.6.0", + "contributte/tracy": "^0.5.1", + "contributte/utils": "^0.5.0", + "php": ">=8.0" + }, + "require-dev": { + "contributte/qa": "^0.2.0", + "contributte/tester": "^0.1.0", + "mockery/mockery": "^1.5.0", + "phpstan/phpstan": "^1.2.0", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-nette": "^1.0.0", + "phpstan/phpstan-strict-rules": "^1.1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Contributte\\Nella\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Milan Felix Šulc", + "homepage": "https://f3l1x.io" + } + ], + "description": "Opinionated pre-configured kernel based on Nette (@nette). Suitable for all kind apps.", + "homepage": "https://github.com/contributte/nella", + "keywords": [ + "kernel", + "nella", + "nette", + "stack" + ], + "support": { + "issues": "https://github.com/contributte/nella/issues", + "source": "https://github.com/contributte/nella/tree/v0.1" + }, + "funding": [ + { + "url": "https://contributte.org/partners.html", + "type": "custom" + }, + { + "url": "https://github.com/f3l1x", + "type": "github" + } + ], + "time": "2023-04-29T10:21:45+00:00" + }, + { + "name": "contributte/tracy", + "version": "v0.5.1", + "source": { + "type": "git", + "url": "https://github.com/contributte/tracy.git", + "reference": "eefc7596f348145c23ce81653b89a68b79653e67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/contributte/tracy/zipball/eefc7596f348145c23ce81653b89a68b79653e67", + "reference": "eefc7596f348145c23ce81653b89a68b79653e67", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "tracy/tracy": "^2.7.0" + }, + "conflict": { + "nette/di": "<3.0.0" + }, + "require-dev": { + "nette/application": "~3.0.0", + "nette/di": "~3.0.0", + "nette/http": "~3.0.1", + "ninjify/nunjuck": "^0.4", + "ninjify/qa": "^0.12", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-nette": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Contributte\\Tracy\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Milan Felix Šulc", + "homepage": "https://f3l1x.io" + }, + { + "name": "Marek Bartoš", + "homepage": "https://marek-bartos.cz" + } + ], + "description": "Tuned Tracy Bars/Panels/BlueScreens for easy-developing", + "homepage": "https://github.com/contributte/tracy", + "keywords": [ + "bluescreen", + "develop", + "navigation", + "nette", + "profile", + "tracy" + ], + "support": { + "issues": "https://github.com/contributte/tracy/issues", + "source": "https://github.com/contributte/tracy/tree/v0.5.1" + }, + "time": "2020-12-19T17:38:47+00:00" + }, + { + "name": "contributte/utils", + "version": "v0.5.2", + "source": { + "type": "git", + "url": "https://github.com/contributte/utils.git", + "reference": "e2d9c380dbb179cf15a66555924ab2792b2c1769" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/contributte/utils/zipball/e2d9c380dbb179cf15a66555924ab2792b2c1769", + "reference": "e2d9c380dbb179cf15a66555924ab2792b2c1769", + "shasum": "" + }, + "require": { + "nette/utils": "^3.0.1", + "php": ">=7.2" + }, + "conflict": { + "nette/di": "<3.0.0" + }, + "require-dev": { + "nette/di": "^3.1.0", + "ninjify/nunjuck": "^0.4.0", + "ninjify/qa": "^0.12.0", + "phpstan/phpstan": "^1.9.0", + "phpstan/phpstan-deprecation-rules": "^1.1.0", + "phpstan/phpstan-nette": "^1.2.0", + "phpstan/phpstan-strict-rules": "^1.4.0" + }, + "suggest": { + "nette/di": "to use DateTimeExtension[CompilerExtension]" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Contributte\\Utils\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Milan Felix Šulc", + "homepage": "https://f3l1x.io" + } + ], + "description": "Extra contrib to nette/utils", + "homepage": "https://github.com/contributte/utils", + "keywords": [ + "datetime", + "filesystem", + "nette", + "strings", + "utils" + ], + "support": { + "issues": "https://github.com/contributte/utils/issues", + "source": "https://github.com/contributte/utils/tree/v0.5.2" + }, + "funding": [ + { + "url": "https://contributte.org/partners.html", + "type": "custom" + }, + { + "url": "https://github.com/f3l1x", + "type": "github" + } + ], + "time": "2022-12-26T13:10:34+00:00" + }, { "name": "dibi/dibi", - "version": "v5.0.1", + "version": "v4.2.8", "source": { "type": "git", "url": "https://github.com/dg/dibi.git", - "reference": "86a71dde28fd1c1b55e4c66a6f7ebfd4efb13e1d" + "reference": "cb0cf4ba2face22d809c8f863a5a0465b46a6ca9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dg/dibi/zipball/86a71dde28fd1c1b55e4c66a6f7ebfd4efb13e1d", - "reference": "86a71dde28fd1c1b55e4c66a6f7ebfd4efb13e1d", + "url": "https://api.github.com/repos/dg/dibi/zipball/cb0cf4ba2face22d809c8f863a5a0465b46a6ca9", + "reference": "cb0cf4ba2face22d809c8f863a5a0465b46a6ca9", "shasum": "" }, "require": { - "php": "8.0 - 8.3" + "php": ">=7.2" }, "replace": { "dg/dibi": "*" }, "require-dev": { - "jetbrains/phpstorm-attributes": "^1.0", - "nette/di": "^3.1", - "nette/tester": "^2.5", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.9" + "nette/di": "^3.0", + "nette/tester": "~2.0", + "phpstan/phpstan": "^0.12", + "tracy/tracy": "~2.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -148,9 +669,9 @@ ], "support": { "issues": "https://github.com/dg/dibi/issues", - "source": "https://github.com/dg/dibi/tree/v5.0.1" + "source": "https://github.com/dg/dibi/tree/v4.2.8" }, - "time": "2023-11-25T13:08:47+00:00" + "time": "2023-08-09T14:15:07+00:00" }, { "name": "latte/latte", @@ -410,77 +931,6 @@ }, "time": "2024-04-19T00:07:13+00:00" }, - { - "name": "nette/caching", - "version": "v3.2.3", - "source": { - "type": "git", - "url": "https://github.com/nette/caching.git", - "reference": "6821d74c1db82c493c02c47f6485022d79b63176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/caching/zipball/6821d74c1db82c493c02c47f6485022d79b63176", - "reference": "6821d74c1db82c493c02c47f6485022d79b63176", - "shasum": "" - }, - "require": { - "nette/finder": "^2.4 || ^3.0", - "nette/utils": "^3.2 || ~4.0.0", - "php": "8.0 - 8.3" - }, - "require-dev": { - "latte/latte": "^2.11 || ^3.0", - "nette/di": "^3.1 || ^4.0", - "nette/tester": "^2.4", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.9" - }, - "suggest": { - "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "⏱ Nette Caching: library with easy-to-use API and many cache backends.", - "homepage": "https://nette.org", - "keywords": [ - "cache", - "journal", - "memcached", - "nette", - "sqlite" - ], - "support": { - "issues": "https://github.com/nette/caching/issues", - "source": "https://github.com/nette/caching/tree/v3.2.3" - }, - "time": "2023-09-26T11:12:20+00:00" - }, { "name": "nette/component-model", "version": "v3.0.3", @@ -507,77 +957,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "⚛ Nette Component Model", - "homepage": "https://nette.org", - "keywords": [ - "components", - "nette" - ], - "support": { - "issues": "https://github.com/nette/component-model/issues", - "source": "https://github.com/nette/component-model/tree/v3.0.3" - }, - "time": "2023-01-09T20:16:05+00:00" - }, - { - "name": "nette/database", - "version": "v3.1.9", - "source": { - "type": "git", - "url": "https://github.com/nette/database.git", - "reference": "4a21417d545e226a8fe189b95111d23a454bd2b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/database/zipball/4a21417d545e226a8fe189b95111d23a454bd2b3", - "reference": "4a21417d545e226a8fe189b95111d23a454bd2b3", - "shasum": "" - }, - "require": { - "ext-pdo": "*", - "nette/caching": "^3.0", - "nette/utils": "^3.2.1 || ~4.0.0", - "php": "7.2 - 8.3" - }, - "conflict": { - "nette/di": "<3.0-stable" - }, - "require-dev": { - "jetbrains/phpstorm-attributes": "^1.0", - "mockery/mockery": "^1.3.4", - "nette/di": "^v3.0", - "nette/tester": "^2.4", - "phpstan/phpstan-nette": "^0.12", - "tracy/tracy": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -601,25 +981,17 @@ "homepage": "https://nette.org/contributors" } ], - "description": "💾 Nette Database: layer with a familiar PDO-like API but much more powerful. Building queries, advanced joins, drivers for MySQL, PostgreSQL, SQLite, MS SQL Server and Oracle.", + "description": "⚛ Nette Component Model", "homepage": "https://nette.org", "keywords": [ - "database", - "mssql", - "mysql", - "nette", - "notorm", - "oracle", - "pdo", - "postgresql", - "queries", - "sqlite" + "components", + "nette" ], "support": { - "issues": "https://github.com/nette/database/issues", - "source": "https://github.com/nette/database/tree/v3.1.9" + "issues": "https://github.com/nette/component-model/issues", + "source": "https://github.com/nette/component-model/tree/v3.0.3" }, - "time": "2023-11-05T19:41:36+00:00" + "time": "2023-01-09T20:16:05+00:00" }, { "name": "nette/di", @@ -918,80 +1290,6 @@ }, "time": "2024-01-30T18:13:43+00:00" }, - { - "name": "nette/mail", - "version": "v3.1.11", - "source": { - "type": "git", - "url": "https://github.com/nette/mail.git", - "reference": "804d70278458452863a2d6be4c1d5bf5f91b3950" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/mail/zipball/804d70278458452863a2d6be4c1d5bf5f91b3950", - "reference": "804d70278458452863a2d6be4c1d5bf5f91b3950", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "nette/utils": "^3.1 || ~4.0.0", - "php": "7.1 - 8.3" - }, - "conflict": { - "nette/di": "<3.0-stable" - }, - "require-dev": { - "nette/di": "^3.0.0", - "nette/tester": "^2.0", - "phpstan/phpstan-nette": "^0.12", - "tracy/tracy": "^2.4" - }, - "suggest": { - "ext-fileinfo": "to detect type of attached files", - "ext-openssl": "to use Nette\\Mail\\DkimSigner" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "📧 Nette Mail: handy email creation and transfer library for PHP with both text and MIME-compliant support.", - "homepage": "https://nette.org", - "keywords": [ - "mail", - "mailer", - "mime", - "nette", - "smtp" - ], - "support": { - "issues": "https://github.com/nette/mail/issues", - "source": "https://github.com/nette/mail/tree/v3.1.11" - }, - "time": "2023-11-02T23:18:58+00:00" - }, { "name": "nette/neon", "version": "v3.4.1", @@ -1320,77 +1618,6 @@ }, "time": "2023-10-05T20:37:59+00:00" }, - { - "name": "nette/security", - "version": "v3.1.8", - "source": { - "type": "git", - "url": "https://github.com/nette/security.git", - "reference": "9b8e5c76b2e738350498470c35a36a6f0d0e38d6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/security/zipball/9b8e5c76b2e738350498470c35a36a6f0d0e38d6", - "reference": "9b8e5c76b2e738350498470c35a36a6f0d0e38d6", - "shasum": "" - }, - "require": { - "nette/utils": "^3.2.1 || ~4.0.0", - "php": "7.2 - 8.3" - }, - "conflict": { - "nette/di": "<3.0-stable", - "nette/http": "<3.1.3" - }, - "require-dev": { - "mockery/mockery": "^1.3.6", - "nette/di": "^3.0.1", - "nette/http": "^3.0.0", - "nette/tester": "^2.0", - "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🔑 Nette Security: provides authentication, authorization and a role-based access control management via ACL (Access Control List)", - "homepage": "https://nette.org", - "keywords": [ - "Authentication", - "acl", - "authorization", - "nette" - ], - "support": { - "issues": "https://github.com/nette/security/issues", - "source": "https://github.com/nette/security/tree/v3.1.8" - }, - "time": "2023-10-18T17:05:31+00:00" - }, { "name": "nette/utils", "version": "v3.2.10", @@ -1477,73 +1704,6 @@ }, "time": "2023-07-30T15:38:18+00:00" }, - { - "name": "symfony/deprecation-contracts", - "version": "v2.5.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:53:40+00:00" - }, { "name": "symfony/polyfill-ctype", "version": "v1.29.0", @@ -1753,98 +1913,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-01-29T20:11:03+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.29.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", + "intl", + "normalizer", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -1863,22 +1943,28 @@ "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/polyfill-php80", + "name": "symfony/polyfill-mbstring", "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, "type": "library", "extra": { "thanks": { @@ -1891,21 +1977,14 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -1915,16 +1994,17 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", + "mbstring", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -1944,29 +2024,24 @@ }, { "name": "symfony/property-access", - "version": "v5.4.35", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "f1341758d8046cfff0ac748a0cad238f917191d4" + "reference": "8661b861480d2807eb2789ff99d034c0c71ab955" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/f1341758d8046cfff0ac748a0cad238f917191d4", - "reference": "f1341758d8046cfff0ac748a0cad238f917191d4", + "url": "https://api.github.com/repos/symfony/property-access/zipball/8661b861480d2807eb2789ff99d034c0c71ab955", + "reference": "8661b861480d2807eb2789ff99d034c0c71ab955", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/property-info": "^5.2|^6.0" + "php": ">=8.2", + "symfony/property-info": "^6.4|^7.0" }, "require-dev": { - "symfony/cache": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." + "symfony/cache": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2005,7 +2080,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.4.35" + "source": "https://github.com/symfony/property-access/tree/v7.0.7" }, "funding": [ { @@ -2021,46 +2096,38 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "symfony/property-info", - "version": "v5.4.35", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "d30d48f366ad2bfbf521256be85eb1c182c29198" + "reference": "f0bdb46e19ab308527b324b7ec36161f6880a532" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/d30d48f366ad2bfbf521256be85eb1c182c29198", - "reference": "d30d48f366ad2bfbf521256be85eb1c182c29198", + "url": "https://api.github.com/repos/symfony/property-info/zipball/f0bdb46e19ab308527b324b7ec36161f6880a532", + "reference": "f0bdb46e19ab308527b324b7ec36161f6880a532", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.1|^6.0" + "php": ">=8.2", + "symfony/string": "^6.4|^7.0" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4" + "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/dependency-injection": "<6.4", + "symfony/serializer": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" - }, - "suggest": { - "phpdocumentor/reflection-docblock": "To use the PHPDoc", - "psr/cache-implementation": "To cache results", - "symfony/doctrine-bridge": "To use Doctrine metadata", - "symfony/serializer": "To use Serializer metadata" + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2096,7 +2163,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.4.35" + "source": "https://github.com/symfony/property-info/tree/v7.0.7" }, "funding": [ { @@ -2112,38 +2179,38 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:43:50+00:00" + "time": "2024-04-28T11:44:19+00:00" }, { "name": "symfony/string", - "version": "v5.4.36", + "version": "v7.0.7", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b" + "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/4e232c83622bd8cd32b794216aa29d0d266d353b", - "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b", + "url": "https://api.github.com/repos/symfony/string/zipball/e405b5424dc2528e02e31ba26b83a79fd4eb8f63", + "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2182,7 +2249,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.36" + "source": "https://github.com/symfony/string/tree/v7.0.7" }, "funding": [ { @@ -2198,7 +2265,7 @@ "type": "tidelift" } ], - "time": "2024-02-01T08:49:30+00:00" + "time": "2024-04-18T09:29:19+00:00" }, { "name": "tracy/tracy", @@ -2277,16 +2344,16 @@ }, { "name": "ublaboo/datagrid", - "version": "v6.10.0", + "version": "dev-next", "source": { "type": "git", "url": "https://github.com/contributte/datagrid.git", - "reference": "1a63088529f47692d57c186f43a9e084f4b52e88" + "reference": "86c88ed1d927aa455b5ead6e84e5e65ffbdafe9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/contributte/datagrid/zipball/1a63088529f47692d57c186f43a9e084f4b52e88", - "reference": "1a63088529f47692d57c186f43a9e084f4b52e88", + "url": "https://api.github.com/repos/contributte/datagrid/zipball/86c88ed1d927aa455b5ead6e84e5e65ffbdafe9f", + "reference": "86c88ed1d927aa455b5ead6e84e5e65ffbdafe9f", "shasum": "" }, "require": { @@ -2294,35 +2361,39 @@ "nette/di": "^3.0.0", "nette/forms": "^3.1.3", "nette/utils": "^3.0.1 || ^4.0.0", - "php": ">=7.2", + "php": ">=8.1", "symfony/property-access": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "require-dev": { - "contributte/code-rules": "^1.1.0", + "contributte/qa": "^0.3.0", "dibi/dibi": "^3.0.0 || ^4.0.0", "doctrine/annotations": "^1.12.1", "doctrine/cache": "^1.11.0", "doctrine/orm": "^2.11.1", - "elasticsearch/elasticsearch": "^7.1", + "elasticsearch/elasticsearch": "^8.6", "mockery/mockery": "^1.3.3", "nette/database": "^3.0.2", "nette/tester": "^2.3.4", - "nextras/dbal": "^3.0.1 || ^4.0", - "nextras/orm": "^3.1.0 || ^4.0", - "ninjify/coding-standard": "^0.12.1", + "nextras/dbal": "^4.0", + "nextras/orm": "^4.0", + "phpstan/phpstan-deprecation-rules": "^1.1", "phpstan/phpstan-nette": "^1.0.0", + "phpstan/phpstan-strict-rules": "^1.4", "tharos/leanmapper": "^3.4.2 || ^4.0.0", "tracy/tracy": "^2.6.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.10.x-dev" + "dev-master": "7.x-dev" } }, "autoload": { + "files": [ + "./compatibility.php" + ], "psr-4": { - "Ublaboo\\DataGrid\\": "src/" + "Contributte\\Datagrid\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2350,7 +2421,7 @@ ], "support": { "issues": "https://github.com/contributte/datagrid/issues", - "source": "https://github.com/contributte/datagrid/tree/v6.10.0" + "source": "https://github.com/contributte/datagrid/tree/next" }, "funding": [ { @@ -2362,41 +2433,42 @@ "type": "github" } ], - "time": "2024-03-03T16:52:06+00:00" + "time": "2024-05-03T19:38:57+00:00" } ], "packages-dev": [ { - "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", + "name": "contributte/qa", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" + "url": "https://github.com/contributte/qa.git", + "reference": "bf22df4d9dd2853d2036c69ef99db818a0cea17d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "url": "https://api.github.com/repos/contributte/qa/zipball/bf22df4d9dd2853d2036c69ef99db818a0cea17d", + "reference": "bf22df4d9dd2853d2036c69ef99db818a0cea17d", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + "php": ">=8.0", + "slevomat/coding-standard": "^8.12.1", + "squizlabs/php_codesniffer": "^3.7.2" }, "require-dev": { - "composer/composer": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" + "contributte/tester": "^0.2.0", + "symfony/process": "^6.0.0" }, - "type": "composer-plugin", + "default-branch": true, + "bin": [ + "bin/codesniffer", + "bin/codefixer" + ], + "type": "library", "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" - }, - "autoload": { - "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + "branch-alias": { + "dev-master": "0.4.x-dev" } }, "notification-url": "https://packagist.org/downloads/", @@ -2405,65 +2477,84 @@ ], "authors": [ { - "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" - }, - { - "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" + "name": "Milan Felix Šulc", + "homepage": "https://f3l1x.io" } ], - "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", + "description": "Tuned & very strict coding standards for PHP projects. Trusted by Contributte, Apitte, Nettrine and many others.", + "homepage": "https://github.com/contributte/qa", "keywords": [ - "PHPCodeSniffer", - "PHP_CodeSniffer", - "code quality", + "Codestyle", "codesniffer", - "composer", - "installer", - "phpcbf", - "phpcs", - "plugin", + "contributte", "qa", - "quality", - "standard", - "standards", - "style guide", - "stylecheck", - "tests" + "quality assurance" ], "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + "issues": "https://github.com/contributte/qa/issues", + "source": "https://github.com/contributte/qa/tree/master" }, - "time": "2022-02-04T12:51:07+00:00" + "funding": [ + { + "url": "https://contributte.org/partners.html", + "type": "custom" + }, + { + "url": "https://github.com/f3l1x", + "type": "github" + } + ], + "time": "2023-10-30T09:49:37+00:00" }, { - "name": "ninjify/coding-standard", - "version": "v0.12.1", + "name": "contributte/tester", + "version": "v0.1.0", "source": { "type": "git", - "url": "https://github.com/ninjify/coding-standard.git", - "reference": "c655eedbe1b4f9b307e9941ad347f9078fbdd58a" + "url": "https://github.com/contributte/tester.git", + "reference": "792373c8dc31be448cc4e9383e443a9ea713ce4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ninjify/coding-standard/zipball/c655eedbe1b4f9b307e9941ad347f9078fbdd58a", - "reference": "c655eedbe1b4f9b307e9941ad347f9078fbdd58a", + "url": "https://api.github.com/repos/contributte/tester/zipball/792373c8dc31be448cc4e9383e443a9ea713ce4b", + "reference": "792373c8dc31be448cc4e9383e443a9ea713ce4b", "shasum": "" }, "require": { - "php": ">=7.2", - "slevomat/coding-standard": "^7.0.18", - "squizlabs/php_codesniffer": "^3.5.8" + "nette/tester": "^2.3.4", + "php": ">=7.4" + }, + "require-dev": { + "contributte/qa": "^0.1", + "janmarek/mockista": "^1.1.0", + "mockery/mockery": "^1.2.2", + "nette/di": "~3.0.0", + "nette/robot-loader": "^3.2", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0" + }, + "suggest": { + "janmarek/mockista": "to use BaseMockistaTestCase", + "mockery/mockery": "to use BaseMockeryTestCase", + "nette/di": "to use BaseContainerTestCase" }, + "bin": [ + "bin/nunjuck", + "bin/nunjuck-setup" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "0.13.x-dev" + "dev-master": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Contributte\\Tester\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2476,17 +2567,16 @@ "homepage": "https://f3l1x.io" } ], - "description": "Tuned & very strict coding standards for PHP projects. Trusted by Contributte, Apitte, Nettrine and many others.", - "homepage": "https://github.com/ninjify/coding-standard", + "description": "Special tuned version of nette/tester for your PHP projects", + "homepage": "https://github.com/contributte/tester", "keywords": [ - "Codestyle", - "codesniffer", - "ninjify", - "php" + "nette", + "php", + "tester" ], "support": { - "issues": "https://github.com/ninjify/coding-standard/issues", - "source": "https://github.com/ninjify/coding-standard/tree/v0.12.1" + "issues": "https://github.com/contributte/tester/issues", + "source": "https://github.com/contributte/tester/tree/v0.1.0" }, "funding": [ { @@ -2498,36 +2588,42 @@ "type": "github" } ], - "time": "2022-02-11T14:34:15+00:00" + "time": "2022-01-29T12:08:32+00:00" }, { - "name": "ninjify/qa", - "version": "v0.13.0", + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/ninjify/qa.git", - "reference": "9080dc0b8c28ba9b984e451f99654212288e60bb" + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ninjify/qa/zipball/9080dc0b8c28ba9b984e451f99654212288e60bb", - "reference": "9080dc0b8c28ba9b984e451f99654212288e60bb", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", "shasum": "" }, "require": { - "ninjify/coding-standard": "^0.12.0", - "php": ">=7.2", - "php-parallel-lint/php-parallel-lint": "^1.2.0" + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, - "bin": [ - "bin/codesniffer", - "bin/codefixer", - "bin/linter" - ], - "type": "library", + "require-dev": { + "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-master": "0.13.x-dev" + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2536,114 +2632,141 @@ ], "authors": [ { - "name": "Milan Felix Šulc", - "homepage": "https://f3l1x.io" + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" } ], - "description": "Quality assurance for your PHP projects", - "homepage": "https://github.com/ninjify/qa", + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", "keywords": [ - "assurance", + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", "codesniffer", - "linter", - "nette", - "php", - "quality" + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" ], "support": { - "issues": "https://github.com/ninjify/qa/issues", - "source": "https://github.com/ninjify/qa/tree/v0.13.0" + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" }, - "funding": [ - { - "url": "https://contributte.org/partners.html", - "type": "custom" - }, - { - "url": "https://github.com/f3l1x", - "type": "github" - } - ], - "time": "2022-01-08T13:15:44+00:00" + "time": "2023-01-05T11:28:13+00:00" }, { - "name": "php-parallel-lint/php-parallel-lint", - "version": "v1.3.2", + "name": "nette/tester", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/php-parallel-lint/PHP-Parallel-Lint.git", - "reference": "6483c9832e71973ed29cf71bd6b3f4fde438a9de" + "url": "https://github.com/nette/tester.git", + "reference": "328d7b64579cdbc82e0e01d92ea9c58b9cf0a327" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-parallel-lint/PHP-Parallel-Lint/zipball/6483c9832e71973ed29cf71bd6b3f4fde438a9de", - "reference": "6483c9832e71973ed29cf71bd6b3f4fde438a9de", + "url": "https://api.github.com/repos/nette/tester/zipball/328d7b64579cdbc82e0e01d92ea9c58b9cf0a327", + "reference": "328d7b64579cdbc82e0e01d92ea9c58b9cf0a327", "shasum": "" }, "require": { - "ext-json": "*", - "php": ">=5.3.0" - }, - "replace": { - "grogy/php-parallel-lint": "*", - "jakub-onderka/php-parallel-lint": "*" + "php": ">=8.0 <8.4" }, "require-dev": { - "nette/tester": "^1.3 || ^2.0", - "php-parallel-lint/php-console-highlighter": "0.* || ^1.0", - "squizlabs/php_codesniffer": "^3.6" - }, - "suggest": { - "php-parallel-lint/php-console-highlighter": "Highlight syntax in code snippet" + "ext-simplexml": "*", + "phpstan/phpstan": "^1.0" }, "bin": [ - "parallel-lint" + "src/tester" ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, "autoload": { "classmap": [ - "./src/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-2-Clause" + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" ], "authors": [ { - "name": "Jakub Onderka", - "email": "ahoj@jakubonderka.cz" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Miloslav Hůla", + "homepage": "https://github.com/milo" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "This tool check syntax of PHP files about 20x faster than serial check.", - "homepage": "https://github.com/php-parallel-lint/PHP-Parallel-Lint", + "description": "Nette Tester: enjoyable unit testing in PHP with code coverage reporter. 🍏🍏🍎🍏", + "homepage": "https://tester.nette.org", + "keywords": [ + "Xdebug", + "assertions", + "clover", + "code coverage", + "nette", + "pcov", + "phpdbg", + "phpunit", + "testing", + "unit" + ], "support": { - "issues": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/issues", - "source": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/tree/v1.3.2" + "issues": "https://github.com/nette/tester/issues", + "source": "https://github.com/nette/tester/tree/v2.5.2" }, - "time": "2022-02-21T12:50:22+00:00" + "time": "2024-01-08T11:41:26+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.4.5", + "version": "1.28.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "129a63b3bc7caeb593c224c41f420675e63cfefc" + "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/129a63b3bc7caeb593c224c41f420675e63cfefc", - "reference": "129a63b3bc7caeb593c224c41f420675e63cfefc", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", + "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.0", "phpunit/phpunit": "^9.5", "symfony/process": "^5.2" @@ -2663,9 +2786,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.4.5" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0" }, - "time": "2022-04-22T11:11:01+00:00" + "time": "2024-04-03T18:51:33+00:00" }, { "name": "phpstan/phpstan", @@ -2725,6 +2848,54 @@ ], "time": "2024-04-16T07:22:02+00:00" }, + { + "name": "phpstan/phpstan-deprecation-rules", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.10.3" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-php-parser": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", + "support": { + "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.4" + }, + "time": "2023-08-05T09:02:04+00:00" + }, { "name": "phpstan/phpstan-dibi", "version": "1.0.1", @@ -2893,42 +3064,42 @@ }, { "name": "slevomat/coding-standard", - "version": "7.1", + "version": "8.15.0", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "b521bd358b5f7a7d69e9637fd139e036d8adeb6f" + "reference": "7d1d957421618a3803b593ec31ace470177d7817" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/b521bd358b5f7a7d69e9637fd139e036d8adeb6f", - "reference": "b521bd358b5f7a7d69e9637fd139e036d8adeb6f", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/7d1d957421618a3803b593ec31ace470177d7817", + "reference": "7d1d957421618a3803b593ec31ace470177d7817", "shasum": "" }, "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": "^1.4.1", - "squizlabs/php_codesniffer": "^3.6.2" + "phpstan/phpdoc-parser": "^1.23.1", + "squizlabs/php_codesniffer": "^3.9.0" }, "require-dev": { - "phing/phing": "2.17.2", + "phing/phing": "2.17.4", "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.4.10|1.5.2", - "phpstan/phpstan-deprecation-rules": "1.0.0", - "phpstan/phpstan-phpunit": "1.0.0|1.1.0", - "phpstan/phpstan-strict-rules": "1.1.0", - "phpunit/phpunit": "7.5.20|8.5.21|9.5.19" + "phpstan/phpstan": "1.10.60", + "phpstan/phpstan-deprecation-rules": "1.1.4", + "phpstan/phpstan-phpunit": "1.3.16", + "phpstan/phpstan-strict-rules": "1.5.2", + "phpunit/phpunit": "8.5.21|9.6.8|10.5.11" }, "type": "phpcodesniffer-standard", "extra": { "branch-alias": { - "dev-master": "7.x-dev" + "dev-master": "8.x-dev" } }, "autoload": { "psr-4": { - "SlevomatCodingStandard\\": "SlevomatCodingStandard" + "SlevomatCodingStandard\\": "SlevomatCodingStandard/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2936,9 +3107,13 @@ "MIT" ], "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "keywords": [ + "dev", + "phpcs" + ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/7.1" + "source": "https://github.com/slevomat/coding-standard/tree/8.15.0" }, "funding": [ { @@ -2950,20 +3125,20 @@ "type": "tidelift" } ], - "time": "2022-03-29T12:44:16+00:00" + "time": "2024-03-09T15:20:58+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.2", + "version": "3.9.2", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "aac1f6f347a5c5ac6bc98ad395007df00990f480" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/aac1f6f347a5c5ac6bc98ad395007df00990f480", + "reference": "aac1f6f347a5c5ac6bc98ad395007df00990f480", "shasum": "" }, "require": { @@ -2973,11 +3148,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -2992,30 +3167,56 @@ "authors": [ { "name": "Greg Sherwood", - "role": "lead" + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", "keywords": [ "phpcs", - "standards" + "standards", + "static analysis" ], "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" }, - "time": "2021-12-12T21:44:58+00:00" + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-04-23T20:25:34+00:00" } ], "aliases": [], "minimum-stability": "dev", - "stability-flags": [], + "stability-flags": { + "ublaboo/datagrid": 20 + }, "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">= 8.0" + "php": ">= 8.1" }, "platform-dev": [], "plugin-api-version": "2.6.0" diff --git a/config/.gitignore b/config/.gitignore deleted file mode 100644 index ffe2f35..0000000 --- a/config/.gitignore +++ /dev/null @@ -1 +0,0 @@ -local.neon diff --git a/config/common.neon b/config/common.neon deleted file mode 100644 index b699cf0..0000000 --- a/config/common.neon +++ /dev/null @@ -1,24 +0,0 @@ -application: - errorPresenter: Error - mapping: - *: App\*Module\Presenters\*Presenter - -services: - router: App\Router\RouterFactory::create - -extensions: - dibi: Dibi\Bridges\Nette\DibiExtension22 - -latte: - extensions: - - Latte\Essential\RawPhpExtension - -dibi: - host: database - username: contributte - password: contributte - database: contributte - port: 3306 - -session: - savePath: "%tempDir%/sessions" diff --git a/config/config.neon b/config/config.neon new file mode 100644 index 0000000..8b7eb47 --- /dev/null +++ b/config/config.neon @@ -0,0 +1,36 @@ +# ====================================== +# Config =============================== +php: + date.timezone: Europe/Prague + # session.save_path: %tempDir%/session + +# ====================================== +# Extension ============================ +extensions: + dibi: Dibi\Bridges\Nette\DibiExtension22 + +latte: + extensions: + - Latte\Essential\RawPhpExtension + +dibi: + host: %db.host% + username: %db.username% + password: %db.password% + database: %db.database% + port: %db.port% + +session: + autoStart: smart + savePath: "%tempDir%/sessions" + + +# ====================================== +# Parameters =========================== +parameters: + vendorDir: %appDir%/../vendor + +# ====================================== +# Services ============================= +services: + parameters: App\Model\Parameters(%parameters%) diff --git a/config/local.neon.dist b/config/local.neon.dist new file mode 100644 index 0000000..fce0565 --- /dev/null +++ b/config/local.neon.dist @@ -0,0 +1,9 @@ +# parameters: +# db: +# host: 0.0.0.0 +# username: contributte +# password: contributte +# database: contributte +# port: 3306 +# +# services: diff --git a/.docker/db/init.sql b/db/init.sql similarity index 100% rename from .docker/db/init.sql rename to db/init.sql diff --git a/docker-compose.yml b/docker-compose.yml index c6ba3ba..a08d324 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,20 +1,21 @@ -version: '3.3' +version: '3.6' services: web: - image: dockette/web:php-80 + image: dockette/web:php-81 volumes: - ./:/srv ports: - - 80:80 - + - 8000:80 depends_on: - database + environment: + NETTE_DEBUG: 1 database: image: mariadb:latest volumes: - - .docker/db/init.sql:/docker-entrypoint-initdb.d/init.sql + - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql ports: - 3306:3306 environment: diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8ac12de --- /dev/null +++ b/package-lock.json @@ -0,0 +1,945 @@ +{ + "name": "datagrid", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "datagrid", + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "@contributte/datagrid": "github:contributte/datagrid#next", + "@fortawesome/fontawesome-free": "^6.3.0", + "bootstrap": "^5.3.0-alpha3", + "naja": "^2.5.0", + "nette-forms": "^3.3.1", + "prismjs": "^1.29.0", + "sortablejs": "^1.15.0", + "tom-select": "^2.2.2", + "vanillajs-datepicker": "^1.3.1" + }, + "devDependencies": { + "@types/bootstrap-select": "^1.13.4", + "@types/jquery": "^3.5.16", + "@types/jqueryui": "^1.12.16", + "@types/sortablejs": "^1.15.1", + "@types/vanillajs-datepicker": "^1.2.1", + "autoprefixer": "^10.4.0", + "typescript": "^4.9.5", + "vite": "^2.6.10" + }, + "engines": { + "node": ">=18.0", + "npm": ">=9.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz", + "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@contributte/datagrid": { + "version": "6.9.1", + "resolved": "git+ssh://git@github.com/contributte/datagrid.git#dca24b45dd760af0a8c28fd0eb0c45a5d39a7246", + "license": "MIT", + "dependencies": { + "naja": "^2.5.0" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.0.tgz", + "integrity": "sha512-0NyytTlPJwB/BF5LtRV8rrABDbe3TdTXqNB3PdZ+UUUZAEIrdOJdmABqKjt4AXwIoJNaRVVZEXxpNrqvE1GAYQ==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@orchidjs/sifter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@orchidjs/sifter/-/sifter-1.0.3.tgz", + "integrity": "sha512-zCZbwKegHytfsPm8Amcfh7v/4vHqTAaOu6xFswBYcn8nznBOuseu6COB2ON7ez0tFV0mKL0nRNnCiZZA+lU9/g==", + "dependencies": { + "@orchidjs/unicode-variants": "^1.0.4" + } + }, + "node_modules/@orchidjs/unicode-variants": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@orchidjs/unicode-variants/-/unicode-variants-1.0.4.tgz", + "integrity": "sha512-NvVBRnZNE+dugiXERFsET1JlKZfM5lJDEpSMilKW4bToYJ7pxf0Zne78xyXB2ny2c2aHfJ6WLnz1AaTNHAmQeQ==" + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@types/bootstrap-select": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/@types/bootstrap-select/-/bootstrap-select-1.13.4.tgz", + "integrity": "sha512-jpmfCyF/DETb7P9Ob1htDoSGwSNvdddmBEe47iAbLttWGAGbEzE/Ks6/eGzKzEbDDLbL/melqSW8RkqTpa60Gw==", + "dev": true, + "dependencies": { + "@types/jquery": "*" + } + }, + "node_modules/@types/jquery": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.16.tgz", + "integrity": "sha512-bsI7y4ZgeMkmpG9OM710RRzDFp+w4P1RGiIt30C1mSBT+ExCleeh4HObwgArnDFELmRrOpXgSYN9VF1hj+f1lw==", + "dev": true, + "dependencies": { + "@types/sizzle": "*" + } + }, + "node_modules/@types/jqueryui": { + "version": "1.12.17", + "resolved": "https://registry.npmjs.org/@types/jqueryui/-/jqueryui-1.12.17.tgz", + "integrity": "sha512-rqiCaZO7d1rAcJVXNSV6MYwt42oB4ArTRr0QbU3f4+Siv0d6m9uRkhiKHpc6oL9NFJKDxzIIDvUeMXTtlJFFaA==", + "dev": true, + "dependencies": { + "@types/jquery": "*" + } + }, + "node_modules/@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "node_modules/@types/sortablejs": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.1.tgz", + "integrity": "sha512-g/JwBNToh6oCTAwNS8UGVmjO7NLDKsejVhvE4x1eWiPTC3uCuNsa/TD4ssvX3du+MLiM+SHPNDuijp8y76JzLQ==", + "dev": true + }, + "node_modules/@types/vanillajs-datepicker": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/vanillajs-datepicker/-/vanillajs-datepicker-1.2.2.tgz", + "integrity": "sha512-jVHa34qqFekNESMk2/ms12DboY4kIyIObQqRM+CFkmrUT4eGtovdqiO//TNIz2N5c9MWdD2/5MQyI7fHfuRzYA==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/bootstrap": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.0.tgz", + "integrity": "sha512-UnBV3E3v4STVNQdms6jSGO2CvOkjUMdDAVR2V5N4uCMdaIkaQjbcEAMqRimDHIs4uqBYzDAKCQwCB+97tJgHQw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.7" + } + }, + "node_modules/browserslist": { + "version": "4.21.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", + "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001489", + "electron-to-chromium": "^1.4.411", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001495", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz", + "integrity": "sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/electron-to-chromium": { + "version": "1.4.424", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.424.tgz", + "integrity": "sha512-KOfOIoEE0b3L0CTDgqS+NpokmcBdxpqLIPtp9PL0v5GAMZmZXa9uoUfWJdEy63MNy6jMvKHkBVUYY5DSuqqpdw==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/naja": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/naja/-/naja-2.5.0.tgz", + "integrity": "sha512-SmGR5VVVtF7jF6EPRkPx+cuhzsxDvKKbs+XO8RO2/2En2l2PBe9LglwFBbYIWMLxeGuYl5wGt2MQvkUjjVaagg==", + "dependencies": { + "@babel/runtime": "^7.18.3" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nette-forms": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nette-forms/-/nette-forms-3.3.1.tgz", + "integrity": "sha512-UOmA3rF+FjpSci5CGmMtsy79PMWCcl0yyfyCd8YXVS+c68FAnVq3ref5qSxYFcwFynTqcPsYKhsNh8eYW5nVhQ==" + }, + "node_modules/node-releases": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "dev": true + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", + "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "2.77.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", + "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/sortablejs": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", + "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tom-select": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tom-select/-/tom-select-2.2.2.tgz", + "integrity": "sha512-igGah1yY6yhrnN2h/Ky8I5muw/nE/YQxIsEZoYu5qaA4bsRibvKto3s8QZZosKpOd0uO8fNYhRfAwgHB4IAYew==", + "dependencies": { + "@orchidjs/sifter": "^1.0.3", + "@orchidjs/unicode-variants": "^1.0.4" + }, + "engines": { + "node": "*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tom-select" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vanillajs-datepicker": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/vanillajs-datepicker/-/vanillajs-datepicker-1.3.3.tgz", + "integrity": "sha512-O7eeSSyZ9aeTcy6X9NBswNvWZRRvKIl2F20sbYvL1L32+1fMpiIPD3TvDF4hrU0ezXspHPgGFyvbFkoXIBs83w==" + }, + "node_modules/vite": { + "version": "2.9.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz", + "integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==", + "dev": true, + "dependencies": { + "esbuild": "^0.14.27", + "postcss": "^8.4.13", + "resolve": "^1.22.0", + "rollup": ">=2.59.0 <2.78.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": ">=12.2.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ba73ef1 --- /dev/null +++ b/package.json @@ -0,0 +1,34 @@ +{ + "name": "datagrid", + "version": "0.0.0", + "license": "MIT", + "engines": { + "npm": ">=9.0", + "node": ">=18.0" + }, + "dependencies": { + "@contributte/datagrid": "github:contributte/datagrid#next", + "@fortawesome/fontawesome-free": "^6.3.0", + "bootstrap": "^5.3.0-alpha3", + "naja": "^2.5.0", + "nette-forms": "^3.3.1", + "prismjs": "^1.29.0", + "sortablejs": "^1.15.0", + "tom-select": "^2.2.2", + "vanillajs-datepicker": "^1.3.1" + }, + "devDependencies": { + "@types/bootstrap-select": "^1.13.4", + "@types/jquery": "^3.5.16", + "@types/jqueryui": "^1.12.16", + "@types/sortablejs": "^1.15.1", + "@types/vanillajs-datepicker": "^1.2.1", + "autoprefixer": "^10.4.0", + "typescript": "^4.9.5", + "vite": "^2.6.10" + }, + "scripts": { + "watch": "vite build --watch --mode=development", + "build": "vite build --mode=production" + } +} diff --git a/phpstan.neon b/phpstan.neon index 52cbae7..24b05e1 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,10 +1,20 @@ includes: - - vendor/phpstan/phpstan-dibi/extension.neon + - vendor/phpstan/phpstan-deprecation-rules/rules.neon - vendor/phpstan/phpstan-nette/extension.neon - vendor/phpstan/phpstan-nette/rules.neon + - vendor/phpstan/phpstan-strict-rules/rules.neon + - vendor/phpstan/phpstan-dibi/extension.neon parameters: - level: 8 + level: 9 + phpVersion: 80100 + + tmpDir: %currentWorkingDirectory%/var/tmp/phpstan paths: - app + + fileExtensions: + - php + + ignoreErrors: diff --git a/ruleset.xml b/ruleset.xml index b146dae..7ab6433 100644 --- a/ruleset.xml +++ b/ruleset.xml @@ -1,15 +1,14 @@ - - - + + diff --git a/tests/.coveralls.yml b/tests/.coveralls.yml new file mode 100644 index 0000000..8450382 --- /dev/null +++ b/tests/.coveralls.yml @@ -0,0 +1,4 @@ +# for php-coveralls +service_name: github-actions +coverage_clover: coverage.xml +json_path: coverage.json diff --git a/tests/.gitignore b/tests/.gitignore new file mode 100644 index 0000000..e3886ad --- /dev/null +++ b/tests/.gitignore @@ -0,0 +1,3 @@ +output +/test.log +/tmp diff --git a/tests/Cases/Build/EntrypointTest.php b/tests/Cases/Build/EntrypointTest.php new file mode 100644 index 0000000..74e66ab --- /dev/null +++ b/tests/Cases/Build/EntrypointTest.php @@ -0,0 +1,18 @@ +createContainer(); + $container->getByType(Application::class); + + Assert::type(Container::class, $container); +}); diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..b09de76 --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,7 @@ + { + const DEV = mode === 'development'; + + return { + publicDir: './assets/public', + resolve: { + alias: { + '@': resolve(__dirname, 'assets/js'), + '~': resolve(__dirname, 'node_modules'), + }, + }, + base: '/dist/', + server: { + open: false, + hmr: false, + }, + css: { + postcss: [ + "autoprefixer" + ] + }, + build: { + manifest: true, + assetsDir: '', + outDir: './www/dist/', + emptyOutDir: true, + minify: DEV ? false : 'esbuild', + rollupOptions: { + output: { + manualChunks: undefined, + chunkFileNames: '[name].js', // DEV ? '[name].js' : '[name]-[hash].js', + entryFileNames: '[name].js', // DEV ? '[name].js' : '[name].[hash].js', + assetFileNames: '[name].[ext]', // DEV ? '[name].[ext]' : '[name].[hash].[ext]', + }, + input: { + app: './assets/js/main.js' + } + } + }, + } +}); diff --git a/www/assets/prism.css b/www/assets/prism.css deleted file mode 100644 index 43af91f..0000000 --- a/www/assets/prism.css +++ /dev/null @@ -1,126 +0,0 @@ -/* PrismJS 1.20.0 -https://prismjs.com/download.html#themes=prism-okaidia&languages=markup+clike+javadoclike+markup-templating+php+phpdoc+php-extras */ -/** - * okaidia theme for JavaScript, CSS and HTML - * Loosely based on Monokai textmate theme by http://www.monokai.nl/ - * @author ocodia - */ - -code[class*="language-"], -pre[class*="language-"] { - color: #f8f8f2; - background: none; - text-shadow: 0 1px rgba(0, 0, 0, 0.3); - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - font-size: 1em; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; - border-radius: 0.3em; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: #272822; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: slategray; -} - -.token.punctuation { - color: #f8f8f2; -} - -.token.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.constant, -.token.symbol, -.token.deleted { - color: #f92672; -} - -.token.boolean, -.token.number { - color: #ae81ff; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #a6e22e; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string, -.token.variable { - color: #f8f8f2; -} - -.token.atrule, -.token.attr-value, -.token.function, -.token.class-name { - color: #e6db74; -} - -.token.keyword { - color: #66d9ef; -} - -.token.regex, -.token.important { - color: #fd971f; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - diff --git a/www/assets/prism.js b/www/assets/prism.js deleted file mode 100644 index 246380d..0000000 --- a/www/assets/prism.js +++ /dev/null @@ -1,10 +0,0 @@ -/* PrismJS 1.20.0 -https://prismjs.com/download.html#themes=prism-okaidia&languages=markup+clike+javadoclike+markup-templating+php+phpdoc+php-extras */ -var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(u){var c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,C={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof _?new _(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/n.length)return;if(!(b instanceof _)){var x=1;if(d&&y!=t.tail.prev){g.lastIndex=k;var w=g.exec(n);if(!w)break;var A=w.index+(h&&w[1]?w[1].length:0),P=w.index+w[0].length,S=k;for(S+=y.value.length;S<=A;)y=y.next,S+=y.value.length;if(S-=y.value.length,k=S,y.value instanceof _)continue;for(var O=y;O!==t.tail&&(S"+a.content+""},!u.document)return u.addEventListener&&(C.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(C.highlight(r,C.languages[t],t)),a&&u.close()},!1)),C;var e=C.util.currentScript();function t(){C.manual||C.highlightAll()}if(e&&(C.filename=e.src,e.hasAttribute("data-manual")&&(C.manual=!0)),!C.manual){var r=document.readyState;"loading"===r||"interactive"===r&&e&&e.defer?document.addEventListener("DOMContentLoaded",t):window.requestAnimationFrame?window.requestAnimationFrame(t):window.setTimeout(t,16)}return C}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); -Prism.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var n={"included-cdata":{pattern://i,inside:s}};n["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var t={};t[a]={pattern:RegExp("(<__[^]*?>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:n},Prism.languages.insertBefore("markup","cdata",t)}}),Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup; -Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; -!function(h){function v(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,o){if(a.language===r){var c=a.tokenStack=[];a.code=a.code.replace(e,function(e){if("function"==typeof o&&!o(e))return e;for(var n,t=c.length;-1!==a.code.indexOf(n=v(r,t));)++t;return c[t]=e,n}),a.grammar=h.languages.markup}}},tokenizePlaceholders:{value:function(p,k){if(p.language===k&&p.tokenStack){p.grammar=h.languages[k];var m=0,d=Object.keys(p.tokenStack);!function e(n){for(var t=0;t=d.length);t++){var a=n[t];if("string"==typeof a||a.content&&"string"==typeof a.content){var r=d[m],o=p.tokenStack[r],c="string"==typeof a?a:a.content,i=v(k,r),u=c.indexOf(i);if(-1$|^<\?(?:php(?=\s)|=)?/i,alias:"important"}}),n.languages.insertBefore("php","keyword",{variable:/\$+(?:\w+\b|(?={))/i,package:{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),n.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}});var e={pattern:/{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)*)/,lookbehind:!0,inside:n.languages.php};n.languages.insertBefore("php","string",{"nowdoc-string":{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},"heredoc-string":{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:e}},"single-quoted-string":{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0,alias:"string"},"double-quoted-string":{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,alias:"string",inside:{interpolation:e}}}),delete n.languages.php.string,n.hooks.add("before-tokenize",function(e){if(/<\?/.test(e.code)){n.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#)(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|\/\*[\s\S]*?(?:\*\/|$))*?(?:\?>|$)/gi)}}),n.hooks.add("after-tokenize",function(e){n.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism); -!function(p){var a=p.languages.javadoclike={parameter:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(a,"addSupport",{value:function(a,e){"string"==typeof a&&(a=[a]),a.forEach(function(a){!function(a,e){var n="doc-comment",t=p.languages[a];if(t){var r=t[n];if(!r){var o={"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}};r=(t=p.languages.insertBefore(a,"comment",o))[n]}if(r instanceof RegExp&&(r=t[n]={pattern:r}),Array.isArray(r))for(var i=0,s=r.length;i 0) { - setTimeout( - function() { - $('.flash').remove(); - }, - 4000 - ); - } -}; - -if (typeof naja !== "undefined") { - function FlashesExtension(naja) { - naja.addEventListener('complete', finishFlash); - - return this; - } - - naja.registerExtension(FlashesExtension); -} else { - $.nette.ext('flashes', { - complete: function() { - finishFlash(); - } - }); -} - -finishFlash(); diff --git a/www/index.php b/www/index.php index 9e5ffde..0996575 100644 --- a/www/index.php +++ b/www/index.php @@ -1,13 +1,5 @@ -createContainer() - ->getByType(Application::class) - ->run(); +App\Bootstrap::run(); diff --git a/www/package-lock.json b/www/package-lock.json deleted file mode 100644 index a4d8f93..0000000 --- a/www/package-lock.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "bootstrap": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.4.1.tgz", - "integrity": "sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA==", - "dev": true - }, - "bootstrap-datepicker": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.9.0.tgz", - "integrity": "sha512-9rYYbaVOheGYxjOr/+bJCmRPihfy+LkLSg4fIFMT9Od8WwWB/MB50w0JO1eBgKUMbb7PFHQD5uAfI3ArAxZRXA==", - "requires": { - "jquery": ">=1.7.1 <4.0.0" - } - }, - "bootstrap-select": { - "version": "1.13.14", - "resolved": "https://registry.npmjs.org/bootstrap-select/-/bootstrap-select-1.13.14.tgz", - "integrity": "sha512-TiL2BobDTwPNV1pteDhukepamPXnbH33+B7D9oMI672KnsyDl0/j6lfQ+0TCL74TI1vaUv+gjL/0nvpmiTCzxQ==" - }, - "happy-inputs": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/happy-inputs/-/happy-inputs-2.0.4.tgz", - "integrity": "sha512-3ddO912xhms26FcNqpYJuV09lKsj+h0x7se9cWnTNvNjOmsoeQ7yrfKhNJiLwfmLmhF+Ut4dH8s09TABNsL6Hg==" - }, - "jquery": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz", - "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==" - }, - "jquery-ui-sortable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jquery-ui-sortable/-/jquery-ui-sortable-1.0.0.tgz", - "integrity": "sha1-DuBizgKymzZYXt46Pg3d5mYGD5Y=" - }, - "nette-forms": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/nette-forms/-/nette-forms-3.0.4.tgz", - "integrity": "sha512-Z9Ia5T38mXQ81gMku/h9O2v+ZzFt5RgdI4lXaCNWH/HxJZAsViQUyDoYTLMNhwYJ7vx6Yzl1HusmlMHoTIZG3w==" - }, - "nette.ajax.js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/nette.ajax.js/-/nette.ajax.js-2.3.0.tgz", - "integrity": "sha1-QmdSyyoAmIVw7XCqK9xY0HLMA1Q=" - }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" - }, - "ublaboo-datagrid": { - "version": "6.2.13", - "resolved": "https://registry.npmjs.org/ublaboo-datagrid/-/ublaboo-datagrid-6.2.13.tgz", - "integrity": "sha512-AbnhulHMUiyhxPx1XtbUt1WRX2llKTqUDH4WxSyYCfvPbRehzkOa3ygb64+ZIYS4YSKaOfHOS3mfCIN5bxajlA==" - } - } -} diff --git a/www/package.json b/www/package.json deleted file mode 100644 index 86fdeba..0000000 --- a/www/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "dependencies": { - "bootstrap-datepicker": "^1.9", - "bootstrap-select": "^1.13", - "happy-inputs": "^2.0", - "jquery-ui-sortable": "^1.0", - "nette-forms": "^3.0", - "nette.ajax.js": "^2.3", - "popper.js": "^1.14.7", - "ublaboo-datagrid": "^6.2.13" - }, - "devDependencies": { - "bootstrap": "^4.4.1", - "jquery": "^3.5.0" - } -} diff --git a/www/phpinfo.php b/www/phpinfo.php deleted file mode 100644 index 61ace19..0000000 --- a/www/phpinfo.php +++ /dev/null @@ -1,2 +0,0 @@ -