├── .ddev ├── config.yaml └── docker-compose.vite.yaml ├── .env.example ├── .gitignore ├── README.md ├── bootstrap.php ├── composer.json ├── composer.lock ├── config ├── app.php ├── general.php ├── htmlpurifier │ └── Default.json ├── project │ ├── entryTypes │ │ └── homepage--6d0432ca-1d3b-4f00-852e-ec388087a44d.yaml │ ├── fieldGroups │ │ └── 51d63246-27c0-4d94-9b81-19d2f30aafb9.yaml │ ├── project.yaml │ ├── sections │ │ └── homepage--e0e8e3aa-cf42-415c-9340-0575097bf532.yaml │ ├── siteGroups │ │ ├── 1edbdb64-5b0e-4c31-9acc-cfaab559a140.yaml │ │ └── f547d841-1b7a-4001-a724-2dca1368b1b5.yaml │ └── sites │ │ └── default--dfefb769-2512-455a-adb3-bbfee8164f68.yaml ├── redactor │ ├── Default.json │ └── Simple.json ├── routes.php └── vite.php ├── craft ├── modules └── Module.php ├── package-lock.json ├── package.json ├── postcss.config.js ├── resources ├── css │ └── app.css └── js │ └── app.js ├── storage ├── .gitignore └── config-deltas │ └── .gitignore ├── tailwind.config.js ├── templates ├── .gitkeep └── index.twig ├── vite.config.js └── web ├── .htaccess ├── cpresources └── .gitignore ├── index.php └── web.config /.ddev/config.yaml: -------------------------------------------------------------------------------- 1 | name: modern-setup 2 | type: php 3 | docroot: web 4 | php_version: "8.1" 5 | webserver_type: nginx-fpm 6 | router_http_port: "80" 7 | router_https_port: "443" 8 | xdebug_enabled: false 9 | additional_hostnames: [] 10 | additional_fqdns: [] 11 | database: 12 | type: mariadb 13 | version: "10.3" 14 | nfs_mount_enabled: false 15 | mutagen_enabled: false 16 | use_dns_when_possible: true 17 | composer_version: "2" 18 | web_environment: [] 19 | nodejs_version: "18" 20 | 21 | # Key features of ddev's config.yaml: 22 | 23 | # name: # Name of the project, automatically provides 24 | # http://projectname.ddev.site and https://projectname.ddev.site 25 | 26 | # type: # drupal6/7/8, backdrop, typo3, wordpress, php 27 | 28 | # docroot: # Relative path to the directory containing index.php. 29 | 30 | # php_version: "7.4" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1" 31 | 32 | # You can explicitly specify the webimage but this 33 | # is not recommended, as the images are often closely tied to ddev's' behavior, 34 | # so this can break upgrades. 35 | 36 | # webimage: # nginx/php docker image. 37 | 38 | # database: 39 | # type: # mysql, mariadb 40 | # version: # database version, like "10.3" or "8.0" 41 | # Note that mariadb_version or mysql_version from v1.18 and earlier 42 | # will automatically be converted to this notation with just a "ddev config --auto" 43 | 44 | # router_http_port: # Port to be used for http (defaults to port 80) 45 | # router_https_port: # Port for https (defaults to 443) 46 | 47 | # xdebug_enabled: false # Set to true to enable xdebug and "ddev start" or "ddev restart" 48 | # Note that for most people the commands 49 | # "ddev xdebug" to enable xdebug and "ddev xdebug off" to disable it work better, 50 | # as leaving xdebug enabled all the time is a big performance hit. 51 | 52 | # xhprof_enabled: false # Set to true to enable xhprof and "ddev start" or "ddev restart" 53 | # Note that for most people the commands 54 | # "ddev xhprof" to enable xhprof and "ddev xhprof off" to disable it work better, 55 | # as leaving xhprof enabled all the time is a big performance hit. 56 | 57 | # webserver_type: nginx-fpm # or apache-fpm 58 | 59 | # timezone: Europe/Berlin 60 | # This is the timezone used in the containers and by PHP; 61 | # it can be set to any valid timezone, 62 | # see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 63 | # For example Europe/Dublin or MST7MDT 64 | 65 | # composer_root: 66 | # Relative path to the composer root directory from the project root. This is 67 | # the directory which contains the composer.json and where all Composer related 68 | # commands are executed. 69 | 70 | # composer_version: "2" 71 | # if composer_version:"2" it will use the most recent composer v2 72 | # It can also be set to "1", to get most recent composer v1 73 | # or "" for the default v2 created at release time. 74 | # It can be set to any existing specific composer version. 75 | # After first project 'ddev start' this will not be updated until it changes 76 | 77 | # nodejs_version: "16" 78 | # change from the default system Node.js version to another supported version, like 12, 14, 17, 18. 79 | # Note that you can use 'ddev nvm' or nvm inside the web container to provide nearly any 80 | # Node.js version, including v6, etc. 81 | 82 | # additional_hostnames: 83 | # - somename 84 | # - someothername 85 | # would provide http and https URLs for "somename.ddev.site" 86 | # and "someothername.ddev.site". 87 | 88 | # additional_fqdns: 89 | # - example.com 90 | # - sub1.example.com 91 | # would provide http and https URLs for "example.com" and "sub1.example.com" 92 | # Please take care with this because it can cause great confusion. 93 | 94 | # upload_dir: custom/upload/dir 95 | # would set the destination path for ddev import-files to /custom/upload/dir 96 | 97 | # working_dir: 98 | # web: /var/www/html 99 | # db: /home 100 | # would set the default working directory for the web and db services. 101 | # These values specify the destination directory for ddev ssh and the 102 | # directory in which commands passed into ddev exec are run. 103 | 104 | # omit_containers: [db, dba, ddev-ssh-agent] 105 | # Currently only these containers are supported. Some containers can also be 106 | # omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit 107 | # the "db" container, several standard features of ddev that access the 108 | # database container will be unusable. In the global configuration it is also 109 | # possible to omit ddev-router, but not here. 110 | 111 | # nfs_mount_enabled: false 112 | # Great performance improvement but requires host configuration first. 113 | # See https://ddev.readthedocs.io/en/stable/users/performance/#using-nfs-to-mount-the-project-into-the-container 114 | 115 | # mutagen_enabled: false 116 | # Experimental performance improvement using mutagen asynchronous updates. 117 | # See https://ddev.readthedocs.io/en/latest/users/performance/#using-mutagen 118 | 119 | # fail_on_hook_fail: False 120 | # Decide whether 'ddev start' should be interrupted by a failing hook 121 | 122 | # host_https_port: "59002" 123 | # The host port binding for https can be explicitly specified. It is 124 | # dynamic unless otherwise specified. 125 | # This is not used by most people, most people use the *router* instead 126 | # of the localhost port. 127 | 128 | # host_webserver_port: "59001" 129 | # The host port binding for the ddev-webserver can be explicitly specified. It is 130 | # dynamic unless otherwise specified. 131 | # This is not used by most people, most people use the *router* instead 132 | # of the localhost port. 133 | 134 | # host_db_port: "59002" 135 | # The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic 136 | # unless explicitly specified. 137 | 138 | # phpmyadmin_port: "8036" 139 | # phpmyadmin_https_port: "8037" 140 | # The PHPMyAdmin ports can be changed from the default 8036 and 8037 141 | 142 | # host_phpmyadmin_port: "8036" 143 | # The phpmyadmin (dba) port is not normally bound on the host at all, instead being routed 144 | # through ddev-router, but it can be specified and bound. 145 | 146 | # mailhog_port: "8025" 147 | # mailhog_https_port: "8026" 148 | # The MailHog ports can be changed from the default 8025 and 8026 149 | 150 | # host_mailhog_port: "8025" 151 | # The mailhog port is not normally bound on the host at all, instead being routed 152 | # through ddev-router, but it can be bound directly to localhost if specified here. 153 | 154 | # webimage_extra_packages: [php7.4-tidy, php-bcmath] 155 | # Extra Debian packages that are needed in the webimage can be added here 156 | 157 | # dbimage_extra_packages: [telnet,netcat] 158 | # Extra Debian packages that are needed in the dbimage can be added here 159 | 160 | # use_dns_when_possible: true 161 | # If the host has internet access and the domain configured can 162 | # successfully be looked up, DNS will be used for hostname resolution 163 | # instead of editing /etc/hosts 164 | # Defaults to true 165 | 166 | # project_tld: ddev.site 167 | # The top-level domain used for project URLs 168 | # The default "ddev.site" allows DNS lookup via a wildcard 169 | # If you prefer you can change this to "ddev.local" to preserve 170 | # pre-v1.9 behavior. 171 | 172 | # ngrok_args: --basic-auth username:pass1234 173 | # Provide extra flags to the "ngrok http" command, see 174 | # https://ngrok.com/docs#http or run "ngrok http -h" 175 | 176 | # disable_settings_management: false 177 | # If true, ddev will not create CMS-specific settings files like 178 | # Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php 179 | # In this case the user must provide all such settings. 180 | 181 | # You can inject environment variables into the web container with: 182 | # web_environment: 183 | # - SOMEENV=somevalue 184 | # - SOMEOTHERENV=someothervalue 185 | 186 | # no_project_mount: false 187 | # (Experimental) If true, ddev will not mount the project into the web container; 188 | # the user is responsible for mounting it manually or via a script. 189 | # This is to enable experimentation with alternate file mounting strategies. 190 | # For advanced users only! 191 | 192 | # bind_all_interfaces: false 193 | # If true, host ports will be bound on all network interfaces, 194 | # not just the localhost interface. This means that ports 195 | # will be available on the local network if the host firewall 196 | # allows it. 197 | 198 | # Many ddev commands can be extended to run tasks before or after the 199 | # ddev command is executed, for example "post-start", "post-import-db", 200 | # "pre-composer", "post-composer" 201 | # See https://ddev.readthedocs.io/en/stable/users/extending-commands/ for more 202 | # information on the commands that can be extended and the tasks you can define 203 | # for them. Example: 204 | #hooks: 205 | -------------------------------------------------------------------------------- /.ddev/docker-compose.vite.yaml: -------------------------------------------------------------------------------- 1 | # Override the web container's standard HTTP_EXPOSE and HTTPS_EXPOSE services 2 | # to expose port 3000 of DDEV's web container. 3 | version: '3.6' 4 | services: 5 | web: 6 | # ports are a list of exposed *container* ports 7 | ports: 8 | - "3000" 9 | environment: 10 | - HTTP_EXPOSE=${DDEV_ROUTER_HTTP_PORT}:80,${DDEV_MAILHOG_PORT}:8025,3001:3000 11 | - HTTPS_EXPOSE=${DDEV_ROUTER_HTTPS_PORT}:80,${DDEV_MAILHOG_HTTPS_PORT}:8025,3000:3000 12 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | # The application ID used to to uniquely store session and cache data, mutex locks, and more 2 | CRAFT_APP_ID= 3 | 4 | # The environment Craft is currently running in (dev, staging, production, etc.) 5 | CRAFT_ENVIRONMENT=local 6 | 7 | # The secure key Craft will use for hashing and encrypting data 8 | CRAFT_SECURITY_KEY= 9 | 10 | # Database Configuration 11 | CRAFT_DB_DRIVER=mysql 12 | CRAFT_DB_SERVER=ddev-modern-setup-db 13 | CRAFT_DB_PORT=3306 14 | CRAFT_DB_DATABASE= 15 | CRAFT_DB_USER=root 16 | CRAFT_DB_PASSWORD=root 17 | CRAFT_DB_SCHEMA=public 18 | CRAFT_DB_TABLE_PREFIX= 19 | 20 | # MailHog 21 | CRAFT_SMTP_HOST=127.0.0.1 22 | CRAFT_SMTP_PORT=1025 23 | 24 | # URLS 25 | BASE_URL="https://modern-setup.ddev.site/" 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.env 2 | /.idea 3 | /vendor 4 | /web/dist/* 5 | certs/* 6 | !certs/.gitkeep 7 | .DS_Store 8 | config/license.key 9 | yarn-error.log 10 | node_modules 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Example setup for Craft CMS using DDEV, TailwindCSS & Vite.js 2 | 3 | ## Start DDEV 4 | 5 | - run `ddev config` 6 | - `cp .env.example .env` and update the credentials based on `ddev describe` 7 | 8 | 9 | ## Install Craft 10 | 11 | - Install php packages: `ddev ssh` and `composer install` 12 | - Generate Security key: `./craft setup/security-key` 13 | - Generate App ID: `./craft setup/app-id` 14 | - Install Craft CMS 15 | - Update the $BASE_URL .env variable to match your DDEV url. 16 | - Create a homepage entry, using the `__HOME__` slug 17 | 18 | ## Test HMR 19 | 20 | - Install node dependencies: `npm i` 21 | - Start vite: `npm run dev` 22 | - Refresh your browser to make sure you have the HMR in session 23 | - Try making a change to your `app.css` and see if HMR is working 24 | - Try making a change to your `app.js` and see if HMR is working 25 | 26 | 27 | Big shout out to [@nystudio107](https://twitter.com/nystudio107) for making the [Craft CMS Vite plugin](https://nystudio107.com/docs/vite/) and [@johndwells](https://twitter.com/johndwells) for coming up with the solution to expose the ports in DDEV. 28 | -------------------------------------------------------------------------------- /bootstrap.php: -------------------------------------------------------------------------------- 1 | safeLoad(); 18 | } 19 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "craftcms/cms": "4.2.5.1", 4 | "nystudio107/craft-vite": "4.0.3", 5 | "vlucas/phpdotenv": "^5.4.0" 6 | }, 7 | "require-dev": { 8 | "yiisoft/yii2-shell": "^2.0.3" 9 | }, 10 | "autoload": { 11 | "psr-4": { 12 | "modules\\": "modules/" 13 | } 14 | }, 15 | "config": { 16 | "allow-plugins": { 17 | "craftcms/plugin-installer": true, 18 | "yiisoft/yii2-composer": true 19 | }, 20 | "sort-packages": true, 21 | "optimize-autoloader": true, 22 | "platform": { 23 | "php": "8.0.2" 24 | } 25 | }, 26 | "scripts": { 27 | "post-root-package-install": [ 28 | "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" 29 | ] 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /config/app.php: -------------------------------------------------------------------------------- 1 | App::env('CRAFT_APP_ID') ?: 'CraftCMS', 24 | 'modules' => [ 25 | 'my-module' => \modules\Module::class, 26 | ], 27 | //'bootstrap' => ['my-module'], 28 | ]; 29 | -------------------------------------------------------------------------------- /config/general.php: -------------------------------------------------------------------------------- 1 | defaultWeekStartDay(1) 22 | ->enableCsrfProtection(true) 23 | ->omitScriptNameInUrls(true) 24 | ->addTrailingSlashesToUrls(false) 25 | ->cpTrigger('admin') 26 | ->convertFilenamesToAscii(true) 27 | ->limitAutoSlugsToAscii(true) 28 | ->allowUpdates($isLocal) 29 | ->allowAdminChanges($isLocal) 30 | ->devMode(!$isProd) 31 | ->sendPoweredByHeader(false) 32 | ->maxInvalidLogins(3) 33 | ->preventUserEnumeration(true) 34 | ->phpSessionName('PHPSESSID') 35 | ->csrfTokenName('CSRF_TOKEN') 36 | ->phpMaxMemoryLimit('256M') 37 | ->disallowRobots(!$isProd) 38 | ->runQueueAutomatically(!$isProd) 39 | ->aliases([ 40 | 'assetBaseUrl' => getenv('ASSET_BASE_URL') ? trim(getenv('ASSET_BASE_URL'), '/') : trim(getenv('BASE_URL'), '/'), 41 | 'baseUrl' => trim(getenv('BASE_URL'), '/'), 42 | ]); 43 | -------------------------------------------------------------------------------- /config/htmlpurifier/Default.json: -------------------------------------------------------------------------------- 1 | { 2 | "Attr.AllowedFrameTargets": [ 3 | "_blank" 4 | ], 5 | "Attr.EnableID": true, 6 | "HTML.AllowedComments": [ 7 | "pagebreak" 8 | ], 9 | "HTML.SafeIframe": true, 10 | "URI.SafeIframeRegexp": "%^(https?:)?//(www.youtube.com/embed/|player.vimeo.com/video/)%" 11 | } 12 | -------------------------------------------------------------------------------- /config/project/entryTypes/homepage--6d0432ca-1d3b-4f00-852e-ec388087a44d.yaml: -------------------------------------------------------------------------------- 1 | fieldLayouts: 2 | 11c6a5bc-2e8e-4962-9ce2-53c89b4f1037: 3 | tabs: 4 | - 5 | elements: 6 | - 7 | autocapitalize: true 8 | autocomplete: false 9 | autocorrect: true 10 | class: null 11 | disabled: false 12 | id: null 13 | instructions: null 14 | label: null 15 | max: null 16 | min: null 17 | name: null 18 | orientation: null 19 | placeholder: null 20 | readonly: false 21 | requirable: false 22 | size: null 23 | step: null 24 | tip: null 25 | title: null 26 | type: craft\fieldlayoutelements\entries\EntryTitleField 27 | uid: 95b1241f-645f-43e5-9b10-7abecf13ceca 28 | warning: null 29 | width: 100 30 | name: Content 31 | uid: 18ef7028-438d-462e-a31b-38c1bf249f71 32 | handle: homepage 33 | hasTitleField: false 34 | name: Homepage 35 | section: e0e8e3aa-cf42-415c-9340-0575097bf532 # Homepage 36 | sortOrder: 1 37 | titleFormat: '{section.name|raw}' 38 | titleTranslationKeyFormat: null 39 | titleTranslationMethod: site 40 | -------------------------------------------------------------------------------- /config/project/fieldGroups/51d63246-27c0-4d94-9b81-19d2f30aafb9.yaml: -------------------------------------------------------------------------------- 1 | name: Common 2 | -------------------------------------------------------------------------------- /config/project/project.yaml: -------------------------------------------------------------------------------- 1 | dateModified: 1655125531 2 | email: 3 | fromEmail: jan.dhollander@teamleader.eu 4 | fromName: modern-setup 5 | replyToEmail: null 6 | template: null 7 | transportSettings: 8 | encryptionMethod: none 9 | host: $CRAFT_SMTP_HOST 10 | password: $CRAFT_SMTP_PASSWORD 11 | port: $CRAFT_SMTP_PORT 12 | timeout: '10' 13 | useAuthentication: '0' 14 | username: '' 15 | transportType: craft\mail\transportadapters\Smtp 16 | meta: 17 | __names__: 18 | 6d0432ca-1d3b-4f00-852e-ec388087a44d: Homepage # Homepage 19 | 51d63246-27c0-4d94-9b81-19d2f30aafb9: Common # Common 20 | dfefb769-2512-455a-adb3-bbfee8164f68: modern-setup # modern-setup 21 | e0e8e3aa-cf42-415c-9340-0575097bf532: Homepage # Homepage 22 | f547d841-1b7a-4001-a724-2dca1368b1b5: modern-setup # modern-setup 23 | plugins: 24 | vite: 25 | edition: standard 26 | enabled: true 27 | schemaVersion: 1.0.0 28 | system: 29 | edition: solo 30 | live: true 31 | name: modern-setup 32 | schemaVersion: 4.0.0.9 33 | timeZone: America/Los_Angeles 34 | users: 35 | allowPublicRegistration: false 36 | defaultGroup: null 37 | photoSubpath: null 38 | photoVolumeUid: null 39 | requireEmailVerification: true 40 | -------------------------------------------------------------------------------- /config/project/sections/homepage--e0e8e3aa-cf42-415c-9340-0575097bf532.yaml: -------------------------------------------------------------------------------- 1 | defaultPlacement: end 2 | enableVersioning: true 3 | handle: homepage 4 | name: Homepage 5 | propagationMethod: all 6 | siteSettings: 7 | dfefb769-2512-455a-adb3-bbfee8164f68: # modern-setup 8 | enabledByDefault: true 9 | hasUrls: true 10 | template: index.twig 11 | uriFormat: homepage 12 | type: single 13 | -------------------------------------------------------------------------------- /config/project/siteGroups/1edbdb64-5b0e-4c31-9acc-cfaab559a140.yaml: -------------------------------------------------------------------------------- 1 | name: modern-setup 2 | -------------------------------------------------------------------------------- /config/project/siteGroups/f547d841-1b7a-4001-a724-2dca1368b1b5.yaml: -------------------------------------------------------------------------------- 1 | name: modern-setup 2 | -------------------------------------------------------------------------------- /config/project/sites/default--dfefb769-2512-455a-adb3-bbfee8164f68.yaml: -------------------------------------------------------------------------------- 1 | baseUrl: $BASE_URL 2 | enabled: true 3 | handle: default 4 | hasUrls: true 5 | language: en-US 6 | name: modern-setup 7 | primary: true 8 | siteGroup: f547d841-1b7a-4001-a724-2dca1368b1b5 # modern-setup 9 | sortOrder: 1 10 | -------------------------------------------------------------------------------- /config/redactor/Default.json: -------------------------------------------------------------------------------- 1 | { 2 | "buttons": [ 3 | "html", 4 | "formatting", 5 | "bold", 6 | "italic", 7 | "unorderedlist", 8 | "orderedlist", 9 | "link", 10 | "image", 11 | "video" 12 | ], 13 | "plugins": [ 14 | "fullscreen", 15 | "video" 16 | ], 17 | "linkNewTab": true, 18 | "toolbarFixed": true 19 | } 20 | -------------------------------------------------------------------------------- /config/redactor/Simple.json: -------------------------------------------------------------------------------- 1 | { 2 | "buttons": ["bold", "italic"], 3 | "toolbarFixed": true 4 | } 5 | -------------------------------------------------------------------------------- /config/routes.php: -------------------------------------------------------------------------------- 1 | ' => ['template' => 'blog/_archive'], 15 | * 16 | * That example would match URIs such as `/blog/archive/2012`, and pass the 17 | * request along to the `blog/_archive` template, providing it a `year` variable 18 | * set to the value `2012`. 19 | */ 20 | 21 | return [ 22 | 23 | ]; 24 | -------------------------------------------------------------------------------- /config/vite.php: -------------------------------------------------------------------------------- 1 | true, 8 | 'devServerInternal' => 'http://localhost:3000/', 9 | 'devServerPublic' => Craft::getAlias('@web') . ':3000', 10 | 'errorEntry' => 'resources/js/app.js', 11 | 'manifestPath' => Craft::getAlias('@webroot') . '/dist/manifest.json', 12 | 'serverPublic' => Craft::getAlias('@web') . '/dist/', 13 | 'useDevServer' => App::env('CRAFT_ENVIRONMENT') === 'local', 14 | ]; 15 | -------------------------------------------------------------------------------- /craft: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | run(); 14 | exit($exitCode); 15 | -------------------------------------------------------------------------------- /modules/Module.php: -------------------------------------------------------------------------------- 1 | getModule('my-module')`. 11 | * 12 | * You can change its module ID ("my-module") to something else from 13 | * config/app.php. 14 | * 15 | * If you want the module to get loaded on every request, uncomment this line 16 | * in config/app.php: 17 | * 18 | * 'bootstrap' => ['my-module'] 19 | * 20 | * Learn more about Yii module development in Yii's documentation: 21 | * http://www.yiiframework.com/doc-2.0/guide-structure-modules.html 22 | */ 23 | class Module extends \yii\base\Module 24 | { 25 | /** 26 | * Initializes the module. 27 | */ 28 | public function init() 29 | { 30 | // Set a @modules alias pointed to the modules/ directory 31 | Craft::setAlias('@modules', __DIR__); 32 | 33 | // Set the controllerNamespace based on whether this is a console or web request 34 | if (Craft::$app->getRequest()->getIsConsoleRequest()) { 35 | $this->controllerNamespace = 'modules\\console\\controllers'; 36 | } else { 37 | $this->controllerNamespace = 'modules\\controllers'; 38 | } 39 | 40 | parent::init(); 41 | 42 | // Custom initialization code goes here... 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "modern-setup", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "modern-setup", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "autoprefixer": "^10.4.7", 13 | "postcss": "^8.4.14", 14 | "tailwindcss": "^3.1.2", 15 | "vite-plugin-restart": "^0.0.2" 16 | } 17 | }, 18 | "node_modules/@nodelib/fs.scandir": { 19 | "version": "2.1.5", 20 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 21 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 22 | "dev": true, 23 | "dependencies": { 24 | "@nodelib/fs.stat": "2.0.5", 25 | "run-parallel": "^1.1.9" 26 | }, 27 | "engines": { 28 | "node": ">= 8" 29 | } 30 | }, 31 | "node_modules/@nodelib/fs.stat": { 32 | "version": "2.0.5", 33 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 34 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 35 | "dev": true, 36 | "engines": { 37 | "node": ">= 8" 38 | } 39 | }, 40 | "node_modules/@nodelib/fs.walk": { 41 | "version": "1.2.8", 42 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 43 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 44 | "dev": true, 45 | "dependencies": { 46 | "@nodelib/fs.scandir": "2.1.5", 47 | "fastq": "^1.6.0" 48 | }, 49 | "engines": { 50 | "node": ">= 8" 51 | } 52 | }, 53 | "node_modules/acorn": { 54 | "version": "7.4.1", 55 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 56 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 57 | "dev": true, 58 | "bin": { 59 | "acorn": "bin/acorn" 60 | }, 61 | "engines": { 62 | "node": ">=0.4.0" 63 | } 64 | }, 65 | "node_modules/acorn-node": { 66 | "version": "1.8.2", 67 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", 68 | "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", 69 | "dev": true, 70 | "dependencies": { 71 | "acorn": "^7.0.0", 72 | "acorn-walk": "^7.0.0", 73 | "xtend": "^4.0.2" 74 | } 75 | }, 76 | "node_modules/acorn-walk": { 77 | "version": "7.2.0", 78 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 79 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", 80 | "dev": true, 81 | "engines": { 82 | "node": ">=0.4.0" 83 | } 84 | }, 85 | "node_modules/ansi-styles": { 86 | "version": "4.3.0", 87 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 88 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 89 | "dev": true, 90 | "dependencies": { 91 | "color-convert": "^2.0.1" 92 | }, 93 | "engines": { 94 | "node": ">=8" 95 | }, 96 | "funding": { 97 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 98 | } 99 | }, 100 | "node_modules/anymatch": { 101 | "version": "3.1.2", 102 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 103 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 104 | "dev": true, 105 | "dependencies": { 106 | "normalize-path": "^3.0.0", 107 | "picomatch": "^2.0.4" 108 | }, 109 | "engines": { 110 | "node": ">= 8" 111 | } 112 | }, 113 | "node_modules/arg": { 114 | "version": "5.0.2", 115 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 116 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 117 | "dev": true 118 | }, 119 | "node_modules/autoprefixer": { 120 | "version": "10.4.7", 121 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", 122 | "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", 123 | "dev": true, 124 | "funding": [ 125 | { 126 | "type": "opencollective", 127 | "url": "https://opencollective.com/postcss/" 128 | }, 129 | { 130 | "type": "tidelift", 131 | "url": "https://tidelift.com/funding/github/npm/autoprefixer" 132 | } 133 | ], 134 | "dependencies": { 135 | "browserslist": "^4.20.3", 136 | "caniuse-lite": "^1.0.30001335", 137 | "fraction.js": "^4.2.0", 138 | "normalize-range": "^0.1.2", 139 | "picocolors": "^1.0.0", 140 | "postcss-value-parser": "^4.2.0" 141 | }, 142 | "bin": { 143 | "autoprefixer": "bin/autoprefixer" 144 | }, 145 | "engines": { 146 | "node": "^10 || ^12 || >=14" 147 | }, 148 | "peerDependencies": { 149 | "postcss": "^8.1.0" 150 | } 151 | }, 152 | "node_modules/binary-extensions": { 153 | "version": "2.2.0", 154 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 155 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 156 | "dev": true, 157 | "engines": { 158 | "node": ">=8" 159 | } 160 | }, 161 | "node_modules/braces": { 162 | "version": "3.0.2", 163 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 164 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 165 | "dev": true, 166 | "dependencies": { 167 | "fill-range": "^7.0.1" 168 | }, 169 | "engines": { 170 | "node": ">=8" 171 | } 172 | }, 173 | "node_modules/browserslist": { 174 | "version": "4.20.4", 175 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", 176 | "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", 177 | "dev": true, 178 | "funding": [ 179 | { 180 | "type": "opencollective", 181 | "url": "https://opencollective.com/browserslist" 182 | }, 183 | { 184 | "type": "tidelift", 185 | "url": "https://tidelift.com/funding/github/npm/browserslist" 186 | } 187 | ], 188 | "dependencies": { 189 | "caniuse-lite": "^1.0.30001349", 190 | "electron-to-chromium": "^1.4.147", 191 | "escalade": "^3.1.1", 192 | "node-releases": "^2.0.5", 193 | "picocolors": "^1.0.0" 194 | }, 195 | "bin": { 196 | "browserslist": "cli.js" 197 | }, 198 | "engines": { 199 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 200 | } 201 | }, 202 | "node_modules/camelcase-css": { 203 | "version": "2.0.1", 204 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", 205 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", 206 | "dev": true, 207 | "engines": { 208 | "node": ">= 6" 209 | } 210 | }, 211 | "node_modules/caniuse-lite": { 212 | "version": "1.0.30001352", 213 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001352.tgz", 214 | "integrity": "sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA==", 215 | "dev": true, 216 | "funding": [ 217 | { 218 | "type": "opencollective", 219 | "url": "https://opencollective.com/browserslist" 220 | }, 221 | { 222 | "type": "tidelift", 223 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 224 | } 225 | ] 226 | }, 227 | "node_modules/chalk": { 228 | "version": "4.1.2", 229 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 230 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 231 | "dev": true, 232 | "dependencies": { 233 | "ansi-styles": "^4.1.0", 234 | "supports-color": "^7.1.0" 235 | }, 236 | "engines": { 237 | "node": ">=10" 238 | }, 239 | "funding": { 240 | "url": "https://github.com/chalk/chalk?sponsor=1" 241 | } 242 | }, 243 | "node_modules/chokidar": { 244 | "version": "3.5.3", 245 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 246 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 247 | "dev": true, 248 | "funding": [ 249 | { 250 | "type": "individual", 251 | "url": "https://paulmillr.com/funding/" 252 | } 253 | ], 254 | "dependencies": { 255 | "anymatch": "~3.1.2", 256 | "braces": "~3.0.2", 257 | "glob-parent": "~5.1.2", 258 | "is-binary-path": "~2.1.0", 259 | "is-glob": "~4.0.1", 260 | "normalize-path": "~3.0.0", 261 | "readdirp": "~3.6.0" 262 | }, 263 | "engines": { 264 | "node": ">= 8.10.0" 265 | }, 266 | "optionalDependencies": { 267 | "fsevents": "~2.3.2" 268 | } 269 | }, 270 | "node_modules/chokidar/node_modules/glob-parent": { 271 | "version": "5.1.2", 272 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 273 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 274 | "dev": true, 275 | "dependencies": { 276 | "is-glob": "^4.0.1" 277 | }, 278 | "engines": { 279 | "node": ">= 6" 280 | } 281 | }, 282 | "node_modules/color-convert": { 283 | "version": "2.0.1", 284 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 285 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 286 | "dev": true, 287 | "dependencies": { 288 | "color-name": "~1.1.4" 289 | }, 290 | "engines": { 291 | "node": ">=7.0.0" 292 | } 293 | }, 294 | "node_modules/color-name": { 295 | "version": "1.1.4", 296 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 297 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 298 | "dev": true 299 | }, 300 | "node_modules/cssesc": { 301 | "version": "3.0.0", 302 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 303 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 304 | "dev": true, 305 | "bin": { 306 | "cssesc": "bin/cssesc" 307 | }, 308 | "engines": { 309 | "node": ">=4" 310 | } 311 | }, 312 | "node_modules/defined": { 313 | "version": "1.0.0", 314 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 315 | "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", 316 | "dev": true 317 | }, 318 | "node_modules/detective": { 319 | "version": "5.2.1", 320 | "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", 321 | "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", 322 | "dev": true, 323 | "dependencies": { 324 | "acorn-node": "^1.8.2", 325 | "defined": "^1.0.0", 326 | "minimist": "^1.2.6" 327 | }, 328 | "bin": { 329 | "detective": "bin/detective.js" 330 | }, 331 | "engines": { 332 | "node": ">=0.8.0" 333 | } 334 | }, 335 | "node_modules/didyoumean": { 336 | "version": "1.2.2", 337 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 338 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", 339 | "dev": true 340 | }, 341 | "node_modules/dlv": { 342 | "version": "1.1.3", 343 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", 344 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 345 | "dev": true 346 | }, 347 | "node_modules/electron-to-chromium": { 348 | "version": "1.4.152", 349 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.152.tgz", 350 | "integrity": "sha512-jk4Ju5SGZAQQJ1iI4Rgru7dDlvkQPLpNPWH9gIZmwCD4YteA5Bbk1xPcPDUf5jUYs3e1e80RXdi8XgKQZaigeg==", 351 | "dev": true 352 | }, 353 | "node_modules/esbuild": { 354 | "version": "0.14.43", 355 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.43.tgz", 356 | "integrity": "sha512-Uf94+kQmy/5jsFwKWiQB4hfo/RkM9Dh7b79p8yqd1tshULdr25G2szLz631NoH3s2ujnKEKVD16RmOxvCNKRFA==", 357 | "dev": true, 358 | "hasInstallScript": true, 359 | "peer": true, 360 | "bin": { 361 | "esbuild": "bin/esbuild" 362 | }, 363 | "engines": { 364 | "node": ">=12" 365 | }, 366 | "optionalDependencies": { 367 | "esbuild-android-64": "0.14.43", 368 | "esbuild-android-arm64": "0.14.43", 369 | "esbuild-darwin-64": "0.14.43", 370 | "esbuild-darwin-arm64": "0.14.43", 371 | "esbuild-freebsd-64": "0.14.43", 372 | "esbuild-freebsd-arm64": "0.14.43", 373 | "esbuild-linux-32": "0.14.43", 374 | "esbuild-linux-64": "0.14.43", 375 | "esbuild-linux-arm": "0.14.43", 376 | "esbuild-linux-arm64": "0.14.43", 377 | "esbuild-linux-mips64le": "0.14.43", 378 | "esbuild-linux-ppc64le": "0.14.43", 379 | "esbuild-linux-riscv64": "0.14.43", 380 | "esbuild-linux-s390x": "0.14.43", 381 | "esbuild-netbsd-64": "0.14.43", 382 | "esbuild-openbsd-64": "0.14.43", 383 | "esbuild-sunos-64": "0.14.43", 384 | "esbuild-windows-32": "0.14.43", 385 | "esbuild-windows-64": "0.14.43", 386 | "esbuild-windows-arm64": "0.14.43" 387 | } 388 | }, 389 | "node_modules/esbuild-android-64": { 390 | "version": "0.14.43", 391 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.43.tgz", 392 | "integrity": "sha512-kqFXAS72K6cNrB6RiM7YJ5lNvmWRDSlpi7ZuRZ1hu1S3w0zlwcoCxWAyM23LQUyZSs1PbjHgdbbfYAN8IGh6xg==", 393 | "cpu": [ 394 | "x64" 395 | ], 396 | "dev": true, 397 | "optional": true, 398 | "os": [ 399 | "android" 400 | ], 401 | "peer": true, 402 | "engines": { 403 | "node": ">=12" 404 | } 405 | }, 406 | "node_modules/esbuild-android-arm64": { 407 | "version": "0.14.43", 408 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.43.tgz", 409 | "integrity": "sha512-bKS2BBFh+7XZY9rpjiHGRNA7LvWYbZWP87pLehggTG7tTaCDvj8qQGOU/OZSjCSKDYbgY7Q+oDw8RlYQ2Jt2BA==", 410 | "cpu": [ 411 | "arm64" 412 | ], 413 | "dev": true, 414 | "optional": true, 415 | "os": [ 416 | "android" 417 | ], 418 | "peer": true, 419 | "engines": { 420 | "node": ">=12" 421 | } 422 | }, 423 | "node_modules/esbuild-darwin-64": { 424 | "version": "0.14.43", 425 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.43.tgz", 426 | "integrity": "sha512-/3PSilx011ttoieRGkSZ0XV8zjBf2C9enV4ScMMbCT4dpx0mFhMOpFnCHkOK0pWGB8LklykFyHrWk2z6DENVUg==", 427 | "cpu": [ 428 | "x64" 429 | ], 430 | "dev": true, 431 | "optional": true, 432 | "os": [ 433 | "darwin" 434 | ], 435 | "peer": true, 436 | "engines": { 437 | "node": ">=12" 438 | } 439 | }, 440 | "node_modules/esbuild-darwin-arm64": { 441 | "version": "0.14.43", 442 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.43.tgz", 443 | "integrity": "sha512-1HyFUKs8DMCBOvw1Qxpr5Vv/ThNcVIFb5xgXWK3pyT40WPvgYIiRTwJCvNs4l8i5qWF8/CK5bQxJVDjQvtv0Yw==", 444 | "cpu": [ 445 | "arm64" 446 | ], 447 | "dev": true, 448 | "optional": true, 449 | "os": [ 450 | "darwin" 451 | ], 452 | "peer": true, 453 | "engines": { 454 | "node": ">=12" 455 | } 456 | }, 457 | "node_modules/esbuild-freebsd-64": { 458 | "version": "0.14.43", 459 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.43.tgz", 460 | "integrity": "sha512-FNWc05TPHYgaXjbPZO5/rJKSBslfG6BeMSs8GhwnqAKP56eEhvmzwnIz1QcC9cRVyO+IKqWNfmHFkCa1WJTULA==", 461 | "cpu": [ 462 | "x64" 463 | ], 464 | "dev": true, 465 | "optional": true, 466 | "os": [ 467 | "freebsd" 468 | ], 469 | "peer": true, 470 | "engines": { 471 | "node": ">=12" 472 | } 473 | }, 474 | "node_modules/esbuild-freebsd-arm64": { 475 | "version": "0.14.43", 476 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.43.tgz", 477 | "integrity": "sha512-amrYopclz3VohqisOPR6hA3GOWA3LZC1WDLnp21RhNmoERmJ/vLnOpnrG2P/Zao+/erKTCUqmrCIPVtj58DRoA==", 478 | "cpu": [ 479 | "arm64" 480 | ], 481 | "dev": true, 482 | "optional": true, 483 | "os": [ 484 | "freebsd" 485 | ], 486 | "peer": true, 487 | "engines": { 488 | "node": ">=12" 489 | } 490 | }, 491 | "node_modules/esbuild-linux-32": { 492 | "version": "0.14.43", 493 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.43.tgz", 494 | "integrity": "sha512-KoxoEra+9O3AKVvgDFvDkiuddCds6q71owSQEYwjtqRV7RwbPzKxJa6+uyzUulHcyGVq0g15K0oKG5CFBcvYDw==", 495 | "cpu": [ 496 | "ia32" 497 | ], 498 | "dev": true, 499 | "optional": true, 500 | "os": [ 501 | "linux" 502 | ], 503 | "peer": true, 504 | "engines": { 505 | "node": ">=12" 506 | } 507 | }, 508 | "node_modules/esbuild-linux-64": { 509 | "version": "0.14.43", 510 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.43.tgz", 511 | "integrity": "sha512-EwINwGMyiJMgBby5/SbMqKcUhS5AYAZ2CpEBzSowsJPNBJEdhkCTtEjk757TN/wxgbu3QklqDM6KghY660QCUw==", 512 | "cpu": [ 513 | "x64" 514 | ], 515 | "dev": true, 516 | "optional": true, 517 | "os": [ 518 | "linux" 519 | ], 520 | "peer": true, 521 | "engines": { 522 | "node": ">=12" 523 | } 524 | }, 525 | "node_modules/esbuild-linux-arm": { 526 | "version": "0.14.43", 527 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.43.tgz", 528 | "integrity": "sha512-e6YzQUoDxxtyamuF12eVzzRC7bbEFSZohJ6igQB9tBqnNmIQY3fI6Cns3z2wxtbZ3f2o6idkD2fQnlvs2902Dg==", 529 | "cpu": [ 530 | "arm" 531 | ], 532 | "dev": true, 533 | "optional": true, 534 | "os": [ 535 | "linux" 536 | ], 537 | "peer": true, 538 | "engines": { 539 | "node": ">=12" 540 | } 541 | }, 542 | "node_modules/esbuild-linux-arm64": { 543 | "version": "0.14.43", 544 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.43.tgz", 545 | "integrity": "sha512-UlSpjMWllAc70zYbHxWuDS3FJytyuR/gHJYBr8BICcTNb/TSOYVBg6U7b3jZ3mILTrgzwJUHwhEwK18FZDouUQ==", 546 | "cpu": [ 547 | "arm64" 548 | ], 549 | "dev": true, 550 | "optional": true, 551 | "os": [ 552 | "linux" 553 | ], 554 | "peer": true, 555 | "engines": { 556 | "node": ">=12" 557 | } 558 | }, 559 | "node_modules/esbuild-linux-mips64le": { 560 | "version": "0.14.43", 561 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.43.tgz", 562 | "integrity": "sha512-f+v8cInPEL1/SDP//CfSYzcDNgE4CY3xgDV81DWm3KAPWzhvxARrKxB1Pstf5mB56yAslJDxu7ryBUPX207EZA==", 563 | "cpu": [ 564 | "mips64el" 565 | ], 566 | "dev": true, 567 | "optional": true, 568 | "os": [ 569 | "linux" 570 | ], 571 | "peer": true, 572 | "engines": { 573 | "node": ">=12" 574 | } 575 | }, 576 | "node_modules/esbuild-linux-ppc64le": { 577 | "version": "0.14.43", 578 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.43.tgz", 579 | "integrity": "sha512-5wZYMDGAL/K2pqkdIsW+I4IR41kyfHr/QshJcNpUfK3RjB3VQcPWOaZmc+74rm4ZjVirYrtz+jWw0SgxtxRanA==", 580 | "cpu": [ 581 | "ppc64" 582 | ], 583 | "dev": true, 584 | "optional": true, 585 | "os": [ 586 | "linux" 587 | ], 588 | "peer": true, 589 | "engines": { 590 | "node": ">=12" 591 | } 592 | }, 593 | "node_modules/esbuild-linux-riscv64": { 594 | "version": "0.14.43", 595 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.43.tgz", 596 | "integrity": "sha512-lYcAOUxp85hC7lSjycJUVSmj4/9oEfSyXjb/ua9bNl8afonaduuqtw7hvKMoKuYnVwOCDw4RSfKpcnIRDWq+Bw==", 597 | "cpu": [ 598 | "riscv64" 599 | ], 600 | "dev": true, 601 | "optional": true, 602 | "os": [ 603 | "linux" 604 | ], 605 | "peer": true, 606 | "engines": { 607 | "node": ">=12" 608 | } 609 | }, 610 | "node_modules/esbuild-linux-s390x": { 611 | "version": "0.14.43", 612 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.43.tgz", 613 | "integrity": "sha512-27e43ZhHvhFE4nM7HqtUbMRu37I/4eNSUbb8FGZWszV+uLzMIsHDwLoBiJmw7G9N+hrehNPeQ4F5Ujad0DrUKQ==", 614 | "cpu": [ 615 | "s390x" 616 | ], 617 | "dev": true, 618 | "optional": true, 619 | "os": [ 620 | "linux" 621 | ], 622 | "peer": true, 623 | "engines": { 624 | "node": ">=12" 625 | } 626 | }, 627 | "node_modules/esbuild-netbsd-64": { 628 | "version": "0.14.43", 629 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.43.tgz", 630 | "integrity": "sha512-2mH4QF6hHBn5zzAfxEI/2eBC0mspVsZ6UVo821LpAJKMvLJPBk3XJO5xwg7paDqSqpl7p6IRrAenW999AEfJhQ==", 631 | "cpu": [ 632 | "x64" 633 | ], 634 | "dev": true, 635 | "optional": true, 636 | "os": [ 637 | "netbsd" 638 | ], 639 | "peer": true, 640 | "engines": { 641 | "node": ">=12" 642 | } 643 | }, 644 | "node_modules/esbuild-openbsd-64": { 645 | "version": "0.14.43", 646 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.43.tgz", 647 | "integrity": "sha512-ZhQpiZjvqCqO8jKdGp9+8k9E/EHSA+zIWOg+grwZasI9RoblqJ1QiZqqi7jfd6ZrrG1UFBNGe4m0NFxCFbMVbg==", 648 | "cpu": [ 649 | "x64" 650 | ], 651 | "dev": true, 652 | "optional": true, 653 | "os": [ 654 | "openbsd" 655 | ], 656 | "peer": true, 657 | "engines": { 658 | "node": ">=12" 659 | } 660 | }, 661 | "node_modules/esbuild-sunos-64": { 662 | "version": "0.14.43", 663 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.43.tgz", 664 | "integrity": "sha512-DgxSi9DaHReL9gYuul2rrQCAapgnCJkh3LSHPKsY26zytYppG0HgkgVF80zjIlvEsUbGBP/GHQzBtrezj/Zq1Q==", 665 | "cpu": [ 666 | "x64" 667 | ], 668 | "dev": true, 669 | "optional": true, 670 | "os": [ 671 | "sunos" 672 | ], 673 | "peer": true, 674 | "engines": { 675 | "node": ">=12" 676 | } 677 | }, 678 | "node_modules/esbuild-windows-32": { 679 | "version": "0.14.43", 680 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.43.tgz", 681 | "integrity": "sha512-Ih3+2O5oExiqm0mY6YYE5dR0o8+AspccQ3vIAtRodwFvhuyGLjb0Hbmzun/F3Lw19nuhPMu3sW2fqIJ5xBxByw==", 682 | "cpu": [ 683 | "ia32" 684 | ], 685 | "dev": true, 686 | "optional": true, 687 | "os": [ 688 | "win32" 689 | ], 690 | "peer": true, 691 | "engines": { 692 | "node": ">=12" 693 | } 694 | }, 695 | "node_modules/esbuild-windows-64": { 696 | "version": "0.14.43", 697 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.43.tgz", 698 | "integrity": "sha512-8NsuNfI8xwFuJbrCuI+aBqNTYkrWErejFO5aYM+yHqyHuL8mmepLS9EPzAzk8rvfaJrhN0+RvKWAcymViHOKEw==", 699 | "cpu": [ 700 | "x64" 701 | ], 702 | "dev": true, 703 | "optional": true, 704 | "os": [ 705 | "win32" 706 | ], 707 | "peer": true, 708 | "engines": { 709 | "node": ">=12" 710 | } 711 | }, 712 | "node_modules/esbuild-windows-arm64": { 713 | "version": "0.14.43", 714 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.43.tgz", 715 | "integrity": "sha512-7ZlD7bo++kVRblJEoG+cepljkfP8bfuTPz5fIXzptwnPaFwGS6ahvfoYzY7WCf5v/1nX2X02HDraVItTgbHnKw==", 716 | "cpu": [ 717 | "arm64" 718 | ], 719 | "dev": true, 720 | "optional": true, 721 | "os": [ 722 | "win32" 723 | ], 724 | "peer": true, 725 | "engines": { 726 | "node": ">=12" 727 | } 728 | }, 729 | "node_modules/escalade": { 730 | "version": "3.1.1", 731 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 732 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 733 | "dev": true, 734 | "engines": { 735 | "node": ">=6" 736 | } 737 | }, 738 | "node_modules/fast-glob": { 739 | "version": "3.2.11", 740 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", 741 | "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", 742 | "dev": true, 743 | "dependencies": { 744 | "@nodelib/fs.stat": "^2.0.2", 745 | "@nodelib/fs.walk": "^1.2.3", 746 | "glob-parent": "^5.1.2", 747 | "merge2": "^1.3.0", 748 | "micromatch": "^4.0.4" 749 | }, 750 | "engines": { 751 | "node": ">=8.6.0" 752 | } 753 | }, 754 | "node_modules/fast-glob/node_modules/glob-parent": { 755 | "version": "5.1.2", 756 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 757 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 758 | "dev": true, 759 | "dependencies": { 760 | "is-glob": "^4.0.1" 761 | }, 762 | "engines": { 763 | "node": ">= 6" 764 | } 765 | }, 766 | "node_modules/fastq": { 767 | "version": "1.13.0", 768 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 769 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 770 | "dev": true, 771 | "dependencies": { 772 | "reusify": "^1.0.4" 773 | } 774 | }, 775 | "node_modules/fill-range": { 776 | "version": "7.0.1", 777 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 778 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 779 | "dev": true, 780 | "dependencies": { 781 | "to-regex-range": "^5.0.1" 782 | }, 783 | "engines": { 784 | "node": ">=8" 785 | } 786 | }, 787 | "node_modules/fraction.js": { 788 | "version": "4.2.0", 789 | "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", 790 | "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", 791 | "dev": true, 792 | "engines": { 793 | "node": "*" 794 | }, 795 | "funding": { 796 | "type": "patreon", 797 | "url": "https://www.patreon.com/infusion" 798 | } 799 | }, 800 | "node_modules/fsevents": { 801 | "version": "2.3.2", 802 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 803 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 804 | "dev": true, 805 | "hasInstallScript": true, 806 | "optional": true, 807 | "os": [ 808 | "darwin" 809 | ], 810 | "engines": { 811 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 812 | } 813 | }, 814 | "node_modules/function-bind": { 815 | "version": "1.1.1", 816 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 817 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 818 | "dev": true 819 | }, 820 | "node_modules/glob-parent": { 821 | "version": "6.0.2", 822 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 823 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 824 | "dev": true, 825 | "dependencies": { 826 | "is-glob": "^4.0.3" 827 | }, 828 | "engines": { 829 | "node": ">=10.13.0" 830 | } 831 | }, 832 | "node_modules/has": { 833 | "version": "1.0.3", 834 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 835 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 836 | "dev": true, 837 | "dependencies": { 838 | "function-bind": "^1.1.1" 839 | }, 840 | "engines": { 841 | "node": ">= 0.4.0" 842 | } 843 | }, 844 | "node_modules/has-flag": { 845 | "version": "4.0.0", 846 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 847 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 848 | "dev": true, 849 | "engines": { 850 | "node": ">=8" 851 | } 852 | }, 853 | "node_modules/is-binary-path": { 854 | "version": "2.1.0", 855 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 856 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 857 | "dev": true, 858 | "dependencies": { 859 | "binary-extensions": "^2.0.0" 860 | }, 861 | "engines": { 862 | "node": ">=8" 863 | } 864 | }, 865 | "node_modules/is-core-module": { 866 | "version": "2.9.0", 867 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", 868 | "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", 869 | "dev": true, 870 | "dependencies": { 871 | "has": "^1.0.3" 872 | }, 873 | "funding": { 874 | "url": "https://github.com/sponsors/ljharb" 875 | } 876 | }, 877 | "node_modules/is-extglob": { 878 | "version": "2.1.1", 879 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 880 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 881 | "dev": true, 882 | "engines": { 883 | "node": ">=0.10.0" 884 | } 885 | }, 886 | "node_modules/is-glob": { 887 | "version": "4.0.3", 888 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 889 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 890 | "dev": true, 891 | "dependencies": { 892 | "is-extglob": "^2.1.1" 893 | }, 894 | "engines": { 895 | "node": ">=0.10.0" 896 | } 897 | }, 898 | "node_modules/is-number": { 899 | "version": "7.0.0", 900 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 901 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 902 | "dev": true, 903 | "engines": { 904 | "node": ">=0.12.0" 905 | } 906 | }, 907 | "node_modules/lilconfig": { 908 | "version": "2.0.5", 909 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", 910 | "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", 911 | "dev": true, 912 | "engines": { 913 | "node": ">=10" 914 | } 915 | }, 916 | "node_modules/merge2": { 917 | "version": "1.4.1", 918 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 919 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 920 | "dev": true, 921 | "engines": { 922 | "node": ">= 8" 923 | } 924 | }, 925 | "node_modules/micromatch": { 926 | "version": "4.0.5", 927 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 928 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 929 | "dev": true, 930 | "dependencies": { 931 | "braces": "^3.0.2", 932 | "picomatch": "^2.3.1" 933 | }, 934 | "engines": { 935 | "node": ">=8.6" 936 | } 937 | }, 938 | "node_modules/minimist": { 939 | "version": "1.2.6", 940 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 941 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 942 | "dev": true 943 | }, 944 | "node_modules/nanoid": { 945 | "version": "3.3.4", 946 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 947 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 948 | "dev": true, 949 | "bin": { 950 | "nanoid": "bin/nanoid.cjs" 951 | }, 952 | "engines": { 953 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 954 | } 955 | }, 956 | "node_modules/node-releases": { 957 | "version": "2.0.5", 958 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", 959 | "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", 960 | "dev": true 961 | }, 962 | "node_modules/normalize-path": { 963 | "version": "3.0.0", 964 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 965 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 966 | "dev": true, 967 | "engines": { 968 | "node": ">=0.10.0" 969 | } 970 | }, 971 | "node_modules/normalize-range": { 972 | "version": "0.1.2", 973 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", 974 | "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", 975 | "dev": true, 976 | "engines": { 977 | "node": ">=0.10.0" 978 | } 979 | }, 980 | "node_modules/object-hash": { 981 | "version": "3.0.0", 982 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", 983 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", 984 | "dev": true, 985 | "engines": { 986 | "node": ">= 6" 987 | } 988 | }, 989 | "node_modules/path-parse": { 990 | "version": "1.0.7", 991 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 992 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 993 | "dev": true 994 | }, 995 | "node_modules/picocolors": { 996 | "version": "1.0.0", 997 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 998 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 999 | "dev": true 1000 | }, 1001 | "node_modules/picomatch": { 1002 | "version": "2.3.1", 1003 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1004 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1005 | "dev": true, 1006 | "engines": { 1007 | "node": ">=8.6" 1008 | }, 1009 | "funding": { 1010 | "url": "https://github.com/sponsors/jonschlinkert" 1011 | } 1012 | }, 1013 | "node_modules/pify": { 1014 | "version": "2.3.0", 1015 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1016 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 1017 | "dev": true, 1018 | "engines": { 1019 | "node": ">=0.10.0" 1020 | } 1021 | }, 1022 | "node_modules/postcss": { 1023 | "version": "8.4.14", 1024 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 1025 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 1026 | "dev": true, 1027 | "funding": [ 1028 | { 1029 | "type": "opencollective", 1030 | "url": "https://opencollective.com/postcss/" 1031 | }, 1032 | { 1033 | "type": "tidelift", 1034 | "url": "https://tidelift.com/funding/github/npm/postcss" 1035 | } 1036 | ], 1037 | "dependencies": { 1038 | "nanoid": "^3.3.4", 1039 | "picocolors": "^1.0.0", 1040 | "source-map-js": "^1.0.2" 1041 | }, 1042 | "engines": { 1043 | "node": "^10 || ^12 || >=14" 1044 | } 1045 | }, 1046 | "node_modules/postcss-import": { 1047 | "version": "14.1.0", 1048 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", 1049 | "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", 1050 | "dev": true, 1051 | "dependencies": { 1052 | "postcss-value-parser": "^4.0.0", 1053 | "read-cache": "^1.0.0", 1054 | "resolve": "^1.1.7" 1055 | }, 1056 | "engines": { 1057 | "node": ">=10.0.0" 1058 | }, 1059 | "peerDependencies": { 1060 | "postcss": "^8.0.0" 1061 | } 1062 | }, 1063 | "node_modules/postcss-js": { 1064 | "version": "4.0.0", 1065 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", 1066 | "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", 1067 | "dev": true, 1068 | "dependencies": { 1069 | "camelcase-css": "^2.0.1" 1070 | }, 1071 | "engines": { 1072 | "node": "^12 || ^14 || >= 16" 1073 | }, 1074 | "funding": { 1075 | "type": "opencollective", 1076 | "url": "https://opencollective.com/postcss/" 1077 | }, 1078 | "peerDependencies": { 1079 | "postcss": "^8.3.3" 1080 | } 1081 | }, 1082 | "node_modules/postcss-load-config": { 1083 | "version": "3.1.4", 1084 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", 1085 | "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", 1086 | "dev": true, 1087 | "dependencies": { 1088 | "lilconfig": "^2.0.5", 1089 | "yaml": "^1.10.2" 1090 | }, 1091 | "engines": { 1092 | "node": ">= 10" 1093 | }, 1094 | "funding": { 1095 | "type": "opencollective", 1096 | "url": "https://opencollective.com/postcss/" 1097 | }, 1098 | "peerDependencies": { 1099 | "postcss": ">=8.0.9", 1100 | "ts-node": ">=9.0.0" 1101 | }, 1102 | "peerDependenciesMeta": { 1103 | "postcss": { 1104 | "optional": true 1105 | }, 1106 | "ts-node": { 1107 | "optional": true 1108 | } 1109 | } 1110 | }, 1111 | "node_modules/postcss-nested": { 1112 | "version": "5.0.6", 1113 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", 1114 | "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", 1115 | "dev": true, 1116 | "dependencies": { 1117 | "postcss-selector-parser": "^6.0.6" 1118 | }, 1119 | "engines": { 1120 | "node": ">=12.0" 1121 | }, 1122 | "funding": { 1123 | "type": "opencollective", 1124 | "url": "https://opencollective.com/postcss/" 1125 | }, 1126 | "peerDependencies": { 1127 | "postcss": "^8.2.14" 1128 | } 1129 | }, 1130 | "node_modules/postcss-selector-parser": { 1131 | "version": "6.0.10", 1132 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", 1133 | "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", 1134 | "dev": true, 1135 | "dependencies": { 1136 | "cssesc": "^3.0.0", 1137 | "util-deprecate": "^1.0.2" 1138 | }, 1139 | "engines": { 1140 | "node": ">=4" 1141 | } 1142 | }, 1143 | "node_modules/postcss-value-parser": { 1144 | "version": "4.2.0", 1145 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 1146 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 1147 | "dev": true 1148 | }, 1149 | "node_modules/queue-microtask": { 1150 | "version": "1.2.3", 1151 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1152 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1153 | "dev": true, 1154 | "funding": [ 1155 | { 1156 | "type": "github", 1157 | "url": "https://github.com/sponsors/feross" 1158 | }, 1159 | { 1160 | "type": "patreon", 1161 | "url": "https://www.patreon.com/feross" 1162 | }, 1163 | { 1164 | "type": "consulting", 1165 | "url": "https://feross.org/support" 1166 | } 1167 | ] 1168 | }, 1169 | "node_modules/quick-lru": { 1170 | "version": "5.1.1", 1171 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 1172 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 1173 | "dev": true, 1174 | "engines": { 1175 | "node": ">=10" 1176 | }, 1177 | "funding": { 1178 | "url": "https://github.com/sponsors/sindresorhus" 1179 | } 1180 | }, 1181 | "node_modules/read-cache": { 1182 | "version": "1.0.0", 1183 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", 1184 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", 1185 | "dev": true, 1186 | "dependencies": { 1187 | "pify": "^2.3.0" 1188 | } 1189 | }, 1190 | "node_modules/readdirp": { 1191 | "version": "3.6.0", 1192 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1193 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1194 | "dev": true, 1195 | "dependencies": { 1196 | "picomatch": "^2.2.1" 1197 | }, 1198 | "engines": { 1199 | "node": ">=8.10.0" 1200 | } 1201 | }, 1202 | "node_modules/resolve": { 1203 | "version": "1.22.0", 1204 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 1205 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 1206 | "dev": true, 1207 | "dependencies": { 1208 | "is-core-module": "^2.8.1", 1209 | "path-parse": "^1.0.7", 1210 | "supports-preserve-symlinks-flag": "^1.0.0" 1211 | }, 1212 | "bin": { 1213 | "resolve": "bin/resolve" 1214 | }, 1215 | "funding": { 1216 | "url": "https://github.com/sponsors/ljharb" 1217 | } 1218 | }, 1219 | "node_modules/reusify": { 1220 | "version": "1.0.4", 1221 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1222 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1223 | "dev": true, 1224 | "engines": { 1225 | "iojs": ">=1.0.0", 1226 | "node": ">=0.10.0" 1227 | } 1228 | }, 1229 | "node_modules/rollup": { 1230 | "version": "2.75.6", 1231 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.6.tgz", 1232 | "integrity": "sha512-OEf0TgpC9vU6WGROJIk1JA3LR5vk/yvqlzxqdrE2CzzXnqKXNzbAwlWUXis8RS3ZPe7LAq+YUxsRa0l3r27MLA==", 1233 | "dev": true, 1234 | "peer": true, 1235 | "bin": { 1236 | "rollup": "dist/bin/rollup" 1237 | }, 1238 | "engines": { 1239 | "node": ">=10.0.0" 1240 | }, 1241 | "optionalDependencies": { 1242 | "fsevents": "~2.3.2" 1243 | } 1244 | }, 1245 | "node_modules/run-parallel": { 1246 | "version": "1.2.0", 1247 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1248 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1249 | "dev": true, 1250 | "funding": [ 1251 | { 1252 | "type": "github", 1253 | "url": "https://github.com/sponsors/feross" 1254 | }, 1255 | { 1256 | "type": "patreon", 1257 | "url": "https://www.patreon.com/feross" 1258 | }, 1259 | { 1260 | "type": "consulting", 1261 | "url": "https://feross.org/support" 1262 | } 1263 | ], 1264 | "dependencies": { 1265 | "queue-microtask": "^1.2.2" 1266 | } 1267 | }, 1268 | "node_modules/source-map-js": { 1269 | "version": "1.0.2", 1270 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1271 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1272 | "dev": true, 1273 | "engines": { 1274 | "node": ">=0.10.0" 1275 | } 1276 | }, 1277 | "node_modules/supports-color": { 1278 | "version": "7.2.0", 1279 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1280 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1281 | "dev": true, 1282 | "dependencies": { 1283 | "has-flag": "^4.0.0" 1284 | }, 1285 | "engines": { 1286 | "node": ">=8" 1287 | } 1288 | }, 1289 | "node_modules/supports-preserve-symlinks-flag": { 1290 | "version": "1.0.0", 1291 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1292 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1293 | "dev": true, 1294 | "engines": { 1295 | "node": ">= 0.4" 1296 | }, 1297 | "funding": { 1298 | "url": "https://github.com/sponsors/ljharb" 1299 | } 1300 | }, 1301 | "node_modules/tailwindcss": { 1302 | "version": "3.1.2", 1303 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.2.tgz", 1304 | "integrity": "sha512-yJ6L5s1U5AeS5g7HHy212zdQfjwD426FBfm59pet/JsyneuZuD4C2W7PpJEg4ppisiB21uLqtNagv8KXury3+Q==", 1305 | "dev": true, 1306 | "dependencies": { 1307 | "arg": "^5.0.1", 1308 | "chokidar": "^3.5.3", 1309 | "color-name": "^1.1.4", 1310 | "detective": "^5.2.1", 1311 | "didyoumean": "^1.2.2", 1312 | "dlv": "^1.1.3", 1313 | "fast-glob": "^3.2.11", 1314 | "glob-parent": "^6.0.2", 1315 | "is-glob": "^4.0.3", 1316 | "lilconfig": "^2.0.5", 1317 | "normalize-path": "^3.0.0", 1318 | "object-hash": "^3.0.0", 1319 | "picocolors": "^1.0.0", 1320 | "postcss": "^8.4.14", 1321 | "postcss-import": "^14.1.0", 1322 | "postcss-js": "^4.0.0", 1323 | "postcss-load-config": "^3.1.4", 1324 | "postcss-nested": "5.0.6", 1325 | "postcss-selector-parser": "^6.0.10", 1326 | "postcss-value-parser": "^4.2.0", 1327 | "quick-lru": "^5.1.1", 1328 | "resolve": "^1.22.0" 1329 | }, 1330 | "bin": { 1331 | "tailwind": "lib/cli.js", 1332 | "tailwindcss": "lib/cli.js" 1333 | }, 1334 | "engines": { 1335 | "node": ">=12.13.0" 1336 | }, 1337 | "peerDependencies": { 1338 | "postcss": "^8.0.9" 1339 | } 1340 | }, 1341 | "node_modules/to-regex-range": { 1342 | "version": "5.0.1", 1343 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1344 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1345 | "dev": true, 1346 | "dependencies": { 1347 | "is-number": "^7.0.0" 1348 | }, 1349 | "engines": { 1350 | "node": ">=8.0" 1351 | } 1352 | }, 1353 | "node_modules/util-deprecate": { 1354 | "version": "1.0.2", 1355 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1356 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 1357 | "dev": true 1358 | }, 1359 | "node_modules/vite": { 1360 | "version": "2.9.12", 1361 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.12.tgz", 1362 | "integrity": "sha512-suxC36dQo9Rq1qMB2qiRorNJtJAdxguu5TMvBHOc/F370KvqAe9t48vYp+/TbPKRNrMh/J55tOUmkuIqstZaew==", 1363 | "dev": true, 1364 | "peer": true, 1365 | "dependencies": { 1366 | "esbuild": "^0.14.27", 1367 | "postcss": "^8.4.13", 1368 | "resolve": "^1.22.0", 1369 | "rollup": "^2.59.0" 1370 | }, 1371 | "bin": { 1372 | "vite": "bin/vite.js" 1373 | }, 1374 | "engines": { 1375 | "node": ">=12.2.0" 1376 | }, 1377 | "optionalDependencies": { 1378 | "fsevents": "~2.3.2" 1379 | }, 1380 | "peerDependencies": { 1381 | "less": "*", 1382 | "sass": "*", 1383 | "stylus": "*" 1384 | }, 1385 | "peerDependenciesMeta": { 1386 | "less": { 1387 | "optional": true 1388 | }, 1389 | "sass": { 1390 | "optional": true 1391 | }, 1392 | "stylus": { 1393 | "optional": true 1394 | } 1395 | } 1396 | }, 1397 | "node_modules/vite-plugin-restart": { 1398 | "version": "0.0.2", 1399 | "resolved": "https://registry.npmjs.org/vite-plugin-restart/-/vite-plugin-restart-0.0.2.tgz", 1400 | "integrity": "sha512-WZ2Qp8Jo83wqBcZFQo481JchQcNgEYLIjd3NbhwPXr/mbg1mUC7hCMCrvafF5WcEQPChd7agx6fBm8RYrRR46A==", 1401 | "dev": true, 1402 | "dependencies": { 1403 | "chalk": "^4.1.0", 1404 | "micromatch": "^4.0.2" 1405 | }, 1406 | "funding": { 1407 | "url": "https://github.com/sponsors/antfu" 1408 | }, 1409 | "peerDependencies": { 1410 | "vite": "^2.0.0-beta.69" 1411 | } 1412 | }, 1413 | "node_modules/xtend": { 1414 | "version": "4.0.2", 1415 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1416 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 1417 | "dev": true, 1418 | "engines": { 1419 | "node": ">=0.4" 1420 | } 1421 | }, 1422 | "node_modules/yaml": { 1423 | "version": "1.10.2", 1424 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 1425 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 1426 | "dev": true, 1427 | "engines": { 1428 | "node": ">= 6" 1429 | } 1430 | } 1431 | }, 1432 | "dependencies": { 1433 | "@nodelib/fs.scandir": { 1434 | "version": "2.1.5", 1435 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 1436 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 1437 | "dev": true, 1438 | "requires": { 1439 | "@nodelib/fs.stat": "2.0.5", 1440 | "run-parallel": "^1.1.9" 1441 | } 1442 | }, 1443 | "@nodelib/fs.stat": { 1444 | "version": "2.0.5", 1445 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 1446 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 1447 | "dev": true 1448 | }, 1449 | "@nodelib/fs.walk": { 1450 | "version": "1.2.8", 1451 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 1452 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 1453 | "dev": true, 1454 | "requires": { 1455 | "@nodelib/fs.scandir": "2.1.5", 1456 | "fastq": "^1.6.0" 1457 | } 1458 | }, 1459 | "acorn": { 1460 | "version": "7.4.1", 1461 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 1462 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 1463 | "dev": true 1464 | }, 1465 | "acorn-node": { 1466 | "version": "1.8.2", 1467 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", 1468 | "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", 1469 | "dev": true, 1470 | "requires": { 1471 | "acorn": "^7.0.0", 1472 | "acorn-walk": "^7.0.0", 1473 | "xtend": "^4.0.2" 1474 | } 1475 | }, 1476 | "acorn-walk": { 1477 | "version": "7.2.0", 1478 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 1479 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", 1480 | "dev": true 1481 | }, 1482 | "ansi-styles": { 1483 | "version": "4.3.0", 1484 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1485 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1486 | "dev": true, 1487 | "requires": { 1488 | "color-convert": "^2.0.1" 1489 | } 1490 | }, 1491 | "anymatch": { 1492 | "version": "3.1.2", 1493 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 1494 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 1495 | "dev": true, 1496 | "requires": { 1497 | "normalize-path": "^3.0.0", 1498 | "picomatch": "^2.0.4" 1499 | } 1500 | }, 1501 | "arg": { 1502 | "version": "5.0.2", 1503 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 1504 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 1505 | "dev": true 1506 | }, 1507 | "autoprefixer": { 1508 | "version": "10.4.7", 1509 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", 1510 | "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", 1511 | "dev": true, 1512 | "requires": { 1513 | "browserslist": "^4.20.3", 1514 | "caniuse-lite": "^1.0.30001335", 1515 | "fraction.js": "^4.2.0", 1516 | "normalize-range": "^0.1.2", 1517 | "picocolors": "^1.0.0", 1518 | "postcss-value-parser": "^4.2.0" 1519 | } 1520 | }, 1521 | "binary-extensions": { 1522 | "version": "2.2.0", 1523 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 1524 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 1525 | "dev": true 1526 | }, 1527 | "braces": { 1528 | "version": "3.0.2", 1529 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1530 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1531 | "dev": true, 1532 | "requires": { 1533 | "fill-range": "^7.0.1" 1534 | } 1535 | }, 1536 | "browserslist": { 1537 | "version": "4.20.4", 1538 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", 1539 | "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", 1540 | "dev": true, 1541 | "requires": { 1542 | "caniuse-lite": "^1.0.30001349", 1543 | "electron-to-chromium": "^1.4.147", 1544 | "escalade": "^3.1.1", 1545 | "node-releases": "^2.0.5", 1546 | "picocolors": "^1.0.0" 1547 | } 1548 | }, 1549 | "camelcase-css": { 1550 | "version": "2.0.1", 1551 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", 1552 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", 1553 | "dev": true 1554 | }, 1555 | "caniuse-lite": { 1556 | "version": "1.0.30001352", 1557 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001352.tgz", 1558 | "integrity": "sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA==", 1559 | "dev": true 1560 | }, 1561 | "chalk": { 1562 | "version": "4.1.2", 1563 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1564 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1565 | "dev": true, 1566 | "requires": { 1567 | "ansi-styles": "^4.1.0", 1568 | "supports-color": "^7.1.0" 1569 | } 1570 | }, 1571 | "chokidar": { 1572 | "version": "3.5.3", 1573 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 1574 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 1575 | "dev": true, 1576 | "requires": { 1577 | "anymatch": "~3.1.2", 1578 | "braces": "~3.0.2", 1579 | "fsevents": "~2.3.2", 1580 | "glob-parent": "~5.1.2", 1581 | "is-binary-path": "~2.1.0", 1582 | "is-glob": "~4.0.1", 1583 | "normalize-path": "~3.0.0", 1584 | "readdirp": "~3.6.0" 1585 | }, 1586 | "dependencies": { 1587 | "glob-parent": { 1588 | "version": "5.1.2", 1589 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1590 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1591 | "dev": true, 1592 | "requires": { 1593 | "is-glob": "^4.0.1" 1594 | } 1595 | } 1596 | } 1597 | }, 1598 | "color-convert": { 1599 | "version": "2.0.1", 1600 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1601 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1602 | "dev": true, 1603 | "requires": { 1604 | "color-name": "~1.1.4" 1605 | } 1606 | }, 1607 | "color-name": { 1608 | "version": "1.1.4", 1609 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1610 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1611 | "dev": true 1612 | }, 1613 | "cssesc": { 1614 | "version": "3.0.0", 1615 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 1616 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 1617 | "dev": true 1618 | }, 1619 | "defined": { 1620 | "version": "1.0.0", 1621 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 1622 | "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", 1623 | "dev": true 1624 | }, 1625 | "detective": { 1626 | "version": "5.2.1", 1627 | "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", 1628 | "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", 1629 | "dev": true, 1630 | "requires": { 1631 | "acorn-node": "^1.8.2", 1632 | "defined": "^1.0.0", 1633 | "minimist": "^1.2.6" 1634 | } 1635 | }, 1636 | "didyoumean": { 1637 | "version": "1.2.2", 1638 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 1639 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", 1640 | "dev": true 1641 | }, 1642 | "dlv": { 1643 | "version": "1.1.3", 1644 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", 1645 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 1646 | "dev": true 1647 | }, 1648 | "electron-to-chromium": { 1649 | "version": "1.4.152", 1650 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.152.tgz", 1651 | "integrity": "sha512-jk4Ju5SGZAQQJ1iI4Rgru7dDlvkQPLpNPWH9gIZmwCD4YteA5Bbk1xPcPDUf5jUYs3e1e80RXdi8XgKQZaigeg==", 1652 | "dev": true 1653 | }, 1654 | "esbuild": { 1655 | "version": "0.14.43", 1656 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.43.tgz", 1657 | "integrity": "sha512-Uf94+kQmy/5jsFwKWiQB4hfo/RkM9Dh7b79p8yqd1tshULdr25G2szLz631NoH3s2ujnKEKVD16RmOxvCNKRFA==", 1658 | "dev": true, 1659 | "peer": true, 1660 | "requires": { 1661 | "esbuild-android-64": "0.14.43", 1662 | "esbuild-android-arm64": "0.14.43", 1663 | "esbuild-darwin-64": "0.14.43", 1664 | "esbuild-darwin-arm64": "0.14.43", 1665 | "esbuild-freebsd-64": "0.14.43", 1666 | "esbuild-freebsd-arm64": "0.14.43", 1667 | "esbuild-linux-32": "0.14.43", 1668 | "esbuild-linux-64": "0.14.43", 1669 | "esbuild-linux-arm": "0.14.43", 1670 | "esbuild-linux-arm64": "0.14.43", 1671 | "esbuild-linux-mips64le": "0.14.43", 1672 | "esbuild-linux-ppc64le": "0.14.43", 1673 | "esbuild-linux-riscv64": "0.14.43", 1674 | "esbuild-linux-s390x": "0.14.43", 1675 | "esbuild-netbsd-64": "0.14.43", 1676 | "esbuild-openbsd-64": "0.14.43", 1677 | "esbuild-sunos-64": "0.14.43", 1678 | "esbuild-windows-32": "0.14.43", 1679 | "esbuild-windows-64": "0.14.43", 1680 | "esbuild-windows-arm64": "0.14.43" 1681 | } 1682 | }, 1683 | "esbuild-android-64": { 1684 | "version": "0.14.43", 1685 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.43.tgz", 1686 | "integrity": "sha512-kqFXAS72K6cNrB6RiM7YJ5lNvmWRDSlpi7ZuRZ1hu1S3w0zlwcoCxWAyM23LQUyZSs1PbjHgdbbfYAN8IGh6xg==", 1687 | "dev": true, 1688 | "optional": true, 1689 | "peer": true 1690 | }, 1691 | "esbuild-android-arm64": { 1692 | "version": "0.14.43", 1693 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.43.tgz", 1694 | "integrity": "sha512-bKS2BBFh+7XZY9rpjiHGRNA7LvWYbZWP87pLehggTG7tTaCDvj8qQGOU/OZSjCSKDYbgY7Q+oDw8RlYQ2Jt2BA==", 1695 | "dev": true, 1696 | "optional": true, 1697 | "peer": true 1698 | }, 1699 | "esbuild-darwin-64": { 1700 | "version": "0.14.43", 1701 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.43.tgz", 1702 | "integrity": "sha512-/3PSilx011ttoieRGkSZ0XV8zjBf2C9enV4ScMMbCT4dpx0mFhMOpFnCHkOK0pWGB8LklykFyHrWk2z6DENVUg==", 1703 | "dev": true, 1704 | "optional": true, 1705 | "peer": true 1706 | }, 1707 | "esbuild-darwin-arm64": { 1708 | "version": "0.14.43", 1709 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.43.tgz", 1710 | "integrity": "sha512-1HyFUKs8DMCBOvw1Qxpr5Vv/ThNcVIFb5xgXWK3pyT40WPvgYIiRTwJCvNs4l8i5qWF8/CK5bQxJVDjQvtv0Yw==", 1711 | "dev": true, 1712 | "optional": true, 1713 | "peer": true 1714 | }, 1715 | "esbuild-freebsd-64": { 1716 | "version": "0.14.43", 1717 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.43.tgz", 1718 | "integrity": "sha512-FNWc05TPHYgaXjbPZO5/rJKSBslfG6BeMSs8GhwnqAKP56eEhvmzwnIz1QcC9cRVyO+IKqWNfmHFkCa1WJTULA==", 1719 | "dev": true, 1720 | "optional": true, 1721 | "peer": true 1722 | }, 1723 | "esbuild-freebsd-arm64": { 1724 | "version": "0.14.43", 1725 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.43.tgz", 1726 | "integrity": "sha512-amrYopclz3VohqisOPR6hA3GOWA3LZC1WDLnp21RhNmoERmJ/vLnOpnrG2P/Zao+/erKTCUqmrCIPVtj58DRoA==", 1727 | "dev": true, 1728 | "optional": true, 1729 | "peer": true 1730 | }, 1731 | "esbuild-linux-32": { 1732 | "version": "0.14.43", 1733 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.43.tgz", 1734 | "integrity": "sha512-KoxoEra+9O3AKVvgDFvDkiuddCds6q71owSQEYwjtqRV7RwbPzKxJa6+uyzUulHcyGVq0g15K0oKG5CFBcvYDw==", 1735 | "dev": true, 1736 | "optional": true, 1737 | "peer": true 1738 | }, 1739 | "esbuild-linux-64": { 1740 | "version": "0.14.43", 1741 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.43.tgz", 1742 | "integrity": "sha512-EwINwGMyiJMgBby5/SbMqKcUhS5AYAZ2CpEBzSowsJPNBJEdhkCTtEjk757TN/wxgbu3QklqDM6KghY660QCUw==", 1743 | "dev": true, 1744 | "optional": true, 1745 | "peer": true 1746 | }, 1747 | "esbuild-linux-arm": { 1748 | "version": "0.14.43", 1749 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.43.tgz", 1750 | "integrity": "sha512-e6YzQUoDxxtyamuF12eVzzRC7bbEFSZohJ6igQB9tBqnNmIQY3fI6Cns3z2wxtbZ3f2o6idkD2fQnlvs2902Dg==", 1751 | "dev": true, 1752 | "optional": true, 1753 | "peer": true 1754 | }, 1755 | "esbuild-linux-arm64": { 1756 | "version": "0.14.43", 1757 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.43.tgz", 1758 | "integrity": "sha512-UlSpjMWllAc70zYbHxWuDS3FJytyuR/gHJYBr8BICcTNb/TSOYVBg6U7b3jZ3mILTrgzwJUHwhEwK18FZDouUQ==", 1759 | "dev": true, 1760 | "optional": true, 1761 | "peer": true 1762 | }, 1763 | "esbuild-linux-mips64le": { 1764 | "version": "0.14.43", 1765 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.43.tgz", 1766 | "integrity": "sha512-f+v8cInPEL1/SDP//CfSYzcDNgE4CY3xgDV81DWm3KAPWzhvxARrKxB1Pstf5mB56yAslJDxu7ryBUPX207EZA==", 1767 | "dev": true, 1768 | "optional": true, 1769 | "peer": true 1770 | }, 1771 | "esbuild-linux-ppc64le": { 1772 | "version": "0.14.43", 1773 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.43.tgz", 1774 | "integrity": "sha512-5wZYMDGAL/K2pqkdIsW+I4IR41kyfHr/QshJcNpUfK3RjB3VQcPWOaZmc+74rm4ZjVirYrtz+jWw0SgxtxRanA==", 1775 | "dev": true, 1776 | "optional": true, 1777 | "peer": true 1778 | }, 1779 | "esbuild-linux-riscv64": { 1780 | "version": "0.14.43", 1781 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.43.tgz", 1782 | "integrity": "sha512-lYcAOUxp85hC7lSjycJUVSmj4/9oEfSyXjb/ua9bNl8afonaduuqtw7hvKMoKuYnVwOCDw4RSfKpcnIRDWq+Bw==", 1783 | "dev": true, 1784 | "optional": true, 1785 | "peer": true 1786 | }, 1787 | "esbuild-linux-s390x": { 1788 | "version": "0.14.43", 1789 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.43.tgz", 1790 | "integrity": "sha512-27e43ZhHvhFE4nM7HqtUbMRu37I/4eNSUbb8FGZWszV+uLzMIsHDwLoBiJmw7G9N+hrehNPeQ4F5Ujad0DrUKQ==", 1791 | "dev": true, 1792 | "optional": true, 1793 | "peer": true 1794 | }, 1795 | "esbuild-netbsd-64": { 1796 | "version": "0.14.43", 1797 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.43.tgz", 1798 | "integrity": "sha512-2mH4QF6hHBn5zzAfxEI/2eBC0mspVsZ6UVo821LpAJKMvLJPBk3XJO5xwg7paDqSqpl7p6IRrAenW999AEfJhQ==", 1799 | "dev": true, 1800 | "optional": true, 1801 | "peer": true 1802 | }, 1803 | "esbuild-openbsd-64": { 1804 | "version": "0.14.43", 1805 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.43.tgz", 1806 | "integrity": "sha512-ZhQpiZjvqCqO8jKdGp9+8k9E/EHSA+zIWOg+grwZasI9RoblqJ1QiZqqi7jfd6ZrrG1UFBNGe4m0NFxCFbMVbg==", 1807 | "dev": true, 1808 | "optional": true, 1809 | "peer": true 1810 | }, 1811 | "esbuild-sunos-64": { 1812 | "version": "0.14.43", 1813 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.43.tgz", 1814 | "integrity": "sha512-DgxSi9DaHReL9gYuul2rrQCAapgnCJkh3LSHPKsY26zytYppG0HgkgVF80zjIlvEsUbGBP/GHQzBtrezj/Zq1Q==", 1815 | "dev": true, 1816 | "optional": true, 1817 | "peer": true 1818 | }, 1819 | "esbuild-windows-32": { 1820 | "version": "0.14.43", 1821 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.43.tgz", 1822 | "integrity": "sha512-Ih3+2O5oExiqm0mY6YYE5dR0o8+AspccQ3vIAtRodwFvhuyGLjb0Hbmzun/F3Lw19nuhPMu3sW2fqIJ5xBxByw==", 1823 | "dev": true, 1824 | "optional": true, 1825 | "peer": true 1826 | }, 1827 | "esbuild-windows-64": { 1828 | "version": "0.14.43", 1829 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.43.tgz", 1830 | "integrity": "sha512-8NsuNfI8xwFuJbrCuI+aBqNTYkrWErejFO5aYM+yHqyHuL8mmepLS9EPzAzk8rvfaJrhN0+RvKWAcymViHOKEw==", 1831 | "dev": true, 1832 | "optional": true, 1833 | "peer": true 1834 | }, 1835 | "esbuild-windows-arm64": { 1836 | "version": "0.14.43", 1837 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.43.tgz", 1838 | "integrity": "sha512-7ZlD7bo++kVRblJEoG+cepljkfP8bfuTPz5fIXzptwnPaFwGS6ahvfoYzY7WCf5v/1nX2X02HDraVItTgbHnKw==", 1839 | "dev": true, 1840 | "optional": true, 1841 | "peer": true 1842 | }, 1843 | "escalade": { 1844 | "version": "3.1.1", 1845 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1846 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1847 | "dev": true 1848 | }, 1849 | "fast-glob": { 1850 | "version": "3.2.11", 1851 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", 1852 | "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", 1853 | "dev": true, 1854 | "requires": { 1855 | "@nodelib/fs.stat": "^2.0.2", 1856 | "@nodelib/fs.walk": "^1.2.3", 1857 | "glob-parent": "^5.1.2", 1858 | "merge2": "^1.3.0", 1859 | "micromatch": "^4.0.4" 1860 | }, 1861 | "dependencies": { 1862 | "glob-parent": { 1863 | "version": "5.1.2", 1864 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1865 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1866 | "dev": true, 1867 | "requires": { 1868 | "is-glob": "^4.0.1" 1869 | } 1870 | } 1871 | } 1872 | }, 1873 | "fastq": { 1874 | "version": "1.13.0", 1875 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 1876 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 1877 | "dev": true, 1878 | "requires": { 1879 | "reusify": "^1.0.4" 1880 | } 1881 | }, 1882 | "fill-range": { 1883 | "version": "7.0.1", 1884 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1885 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1886 | "dev": true, 1887 | "requires": { 1888 | "to-regex-range": "^5.0.1" 1889 | } 1890 | }, 1891 | "fraction.js": { 1892 | "version": "4.2.0", 1893 | "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", 1894 | "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", 1895 | "dev": true 1896 | }, 1897 | "fsevents": { 1898 | "version": "2.3.2", 1899 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1900 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1901 | "dev": true, 1902 | "optional": true 1903 | }, 1904 | "function-bind": { 1905 | "version": "1.1.1", 1906 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1907 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1908 | "dev": true 1909 | }, 1910 | "glob-parent": { 1911 | "version": "6.0.2", 1912 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1913 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1914 | "dev": true, 1915 | "requires": { 1916 | "is-glob": "^4.0.3" 1917 | } 1918 | }, 1919 | "has": { 1920 | "version": "1.0.3", 1921 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1922 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1923 | "dev": true, 1924 | "requires": { 1925 | "function-bind": "^1.1.1" 1926 | } 1927 | }, 1928 | "has-flag": { 1929 | "version": "4.0.0", 1930 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1931 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1932 | "dev": true 1933 | }, 1934 | "is-binary-path": { 1935 | "version": "2.1.0", 1936 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1937 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1938 | "dev": true, 1939 | "requires": { 1940 | "binary-extensions": "^2.0.0" 1941 | } 1942 | }, 1943 | "is-core-module": { 1944 | "version": "2.9.0", 1945 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", 1946 | "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", 1947 | "dev": true, 1948 | "requires": { 1949 | "has": "^1.0.3" 1950 | } 1951 | }, 1952 | "is-extglob": { 1953 | "version": "2.1.1", 1954 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1955 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1956 | "dev": true 1957 | }, 1958 | "is-glob": { 1959 | "version": "4.0.3", 1960 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1961 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1962 | "dev": true, 1963 | "requires": { 1964 | "is-extglob": "^2.1.1" 1965 | } 1966 | }, 1967 | "is-number": { 1968 | "version": "7.0.0", 1969 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1970 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1971 | "dev": true 1972 | }, 1973 | "lilconfig": { 1974 | "version": "2.0.5", 1975 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", 1976 | "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", 1977 | "dev": true 1978 | }, 1979 | "merge2": { 1980 | "version": "1.4.1", 1981 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1982 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1983 | "dev": true 1984 | }, 1985 | "micromatch": { 1986 | "version": "4.0.5", 1987 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1988 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1989 | "dev": true, 1990 | "requires": { 1991 | "braces": "^3.0.2", 1992 | "picomatch": "^2.3.1" 1993 | } 1994 | }, 1995 | "minimist": { 1996 | "version": "1.2.6", 1997 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1998 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 1999 | "dev": true 2000 | }, 2001 | "nanoid": { 2002 | "version": "3.3.4", 2003 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 2004 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 2005 | "dev": true 2006 | }, 2007 | "node-releases": { 2008 | "version": "2.0.5", 2009 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", 2010 | "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", 2011 | "dev": true 2012 | }, 2013 | "normalize-path": { 2014 | "version": "3.0.0", 2015 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2016 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2017 | "dev": true 2018 | }, 2019 | "normalize-range": { 2020 | "version": "0.1.2", 2021 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", 2022 | "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", 2023 | "dev": true 2024 | }, 2025 | "object-hash": { 2026 | "version": "3.0.0", 2027 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", 2028 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", 2029 | "dev": true 2030 | }, 2031 | "path-parse": { 2032 | "version": "1.0.7", 2033 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2034 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2035 | "dev": true 2036 | }, 2037 | "picocolors": { 2038 | "version": "1.0.0", 2039 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 2040 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 2041 | "dev": true 2042 | }, 2043 | "picomatch": { 2044 | "version": "2.3.1", 2045 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2046 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2047 | "dev": true 2048 | }, 2049 | "pify": { 2050 | "version": "2.3.0", 2051 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2052 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 2053 | "dev": true 2054 | }, 2055 | "postcss": { 2056 | "version": "8.4.14", 2057 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 2058 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 2059 | "dev": true, 2060 | "requires": { 2061 | "nanoid": "^3.3.4", 2062 | "picocolors": "^1.0.0", 2063 | "source-map-js": "^1.0.2" 2064 | } 2065 | }, 2066 | "postcss-import": { 2067 | "version": "14.1.0", 2068 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", 2069 | "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", 2070 | "dev": true, 2071 | "requires": { 2072 | "postcss-value-parser": "^4.0.0", 2073 | "read-cache": "^1.0.0", 2074 | "resolve": "^1.1.7" 2075 | } 2076 | }, 2077 | "postcss-js": { 2078 | "version": "4.0.0", 2079 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", 2080 | "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", 2081 | "dev": true, 2082 | "requires": { 2083 | "camelcase-css": "^2.0.1" 2084 | } 2085 | }, 2086 | "postcss-load-config": { 2087 | "version": "3.1.4", 2088 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", 2089 | "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", 2090 | "dev": true, 2091 | "requires": { 2092 | "lilconfig": "^2.0.5", 2093 | "yaml": "^1.10.2" 2094 | } 2095 | }, 2096 | "postcss-nested": { 2097 | "version": "5.0.6", 2098 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", 2099 | "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", 2100 | "dev": true, 2101 | "requires": { 2102 | "postcss-selector-parser": "^6.0.6" 2103 | } 2104 | }, 2105 | "postcss-selector-parser": { 2106 | "version": "6.0.10", 2107 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", 2108 | "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", 2109 | "dev": true, 2110 | "requires": { 2111 | "cssesc": "^3.0.0", 2112 | "util-deprecate": "^1.0.2" 2113 | } 2114 | }, 2115 | "postcss-value-parser": { 2116 | "version": "4.2.0", 2117 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 2118 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 2119 | "dev": true 2120 | }, 2121 | "queue-microtask": { 2122 | "version": "1.2.3", 2123 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2124 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2125 | "dev": true 2126 | }, 2127 | "quick-lru": { 2128 | "version": "5.1.1", 2129 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 2130 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 2131 | "dev": true 2132 | }, 2133 | "read-cache": { 2134 | "version": "1.0.0", 2135 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", 2136 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", 2137 | "dev": true, 2138 | "requires": { 2139 | "pify": "^2.3.0" 2140 | } 2141 | }, 2142 | "readdirp": { 2143 | "version": "3.6.0", 2144 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 2145 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 2146 | "dev": true, 2147 | "requires": { 2148 | "picomatch": "^2.2.1" 2149 | } 2150 | }, 2151 | "resolve": { 2152 | "version": "1.22.0", 2153 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 2154 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 2155 | "dev": true, 2156 | "requires": { 2157 | "is-core-module": "^2.8.1", 2158 | "path-parse": "^1.0.7", 2159 | "supports-preserve-symlinks-flag": "^1.0.0" 2160 | } 2161 | }, 2162 | "reusify": { 2163 | "version": "1.0.4", 2164 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2165 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2166 | "dev": true 2167 | }, 2168 | "rollup": { 2169 | "version": "2.75.6", 2170 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.6.tgz", 2171 | "integrity": "sha512-OEf0TgpC9vU6WGROJIk1JA3LR5vk/yvqlzxqdrE2CzzXnqKXNzbAwlWUXis8RS3ZPe7LAq+YUxsRa0l3r27MLA==", 2172 | "dev": true, 2173 | "peer": true, 2174 | "requires": { 2175 | "fsevents": "~2.3.2" 2176 | } 2177 | }, 2178 | "run-parallel": { 2179 | "version": "1.2.0", 2180 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2181 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2182 | "dev": true, 2183 | "requires": { 2184 | "queue-microtask": "^1.2.2" 2185 | } 2186 | }, 2187 | "source-map-js": { 2188 | "version": "1.0.2", 2189 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2190 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 2191 | "dev": true 2192 | }, 2193 | "supports-color": { 2194 | "version": "7.2.0", 2195 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2196 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2197 | "dev": true, 2198 | "requires": { 2199 | "has-flag": "^4.0.0" 2200 | } 2201 | }, 2202 | "supports-preserve-symlinks-flag": { 2203 | "version": "1.0.0", 2204 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2205 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2206 | "dev": true 2207 | }, 2208 | "tailwindcss": { 2209 | "version": "3.1.2", 2210 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.2.tgz", 2211 | "integrity": "sha512-yJ6L5s1U5AeS5g7HHy212zdQfjwD426FBfm59pet/JsyneuZuD4C2W7PpJEg4ppisiB21uLqtNagv8KXury3+Q==", 2212 | "dev": true, 2213 | "requires": { 2214 | "arg": "^5.0.1", 2215 | "chokidar": "^3.5.3", 2216 | "color-name": "^1.1.4", 2217 | "detective": "^5.2.1", 2218 | "didyoumean": "^1.2.2", 2219 | "dlv": "^1.1.3", 2220 | "fast-glob": "^3.2.11", 2221 | "glob-parent": "^6.0.2", 2222 | "is-glob": "^4.0.3", 2223 | "lilconfig": "^2.0.5", 2224 | "normalize-path": "^3.0.0", 2225 | "object-hash": "^3.0.0", 2226 | "picocolors": "^1.0.0", 2227 | "postcss": "^8.4.14", 2228 | "postcss-import": "^14.1.0", 2229 | "postcss-js": "^4.0.0", 2230 | "postcss-load-config": "^3.1.4", 2231 | "postcss-nested": "5.0.6", 2232 | "postcss-selector-parser": "^6.0.10", 2233 | "postcss-value-parser": "^4.2.0", 2234 | "quick-lru": "^5.1.1", 2235 | "resolve": "^1.22.0" 2236 | } 2237 | }, 2238 | "to-regex-range": { 2239 | "version": "5.0.1", 2240 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2241 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2242 | "dev": true, 2243 | "requires": { 2244 | "is-number": "^7.0.0" 2245 | } 2246 | }, 2247 | "util-deprecate": { 2248 | "version": "1.0.2", 2249 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2250 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2251 | "dev": true 2252 | }, 2253 | "vite": { 2254 | "version": "2.9.12", 2255 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.12.tgz", 2256 | "integrity": "sha512-suxC36dQo9Rq1qMB2qiRorNJtJAdxguu5TMvBHOc/F370KvqAe9t48vYp+/TbPKRNrMh/J55tOUmkuIqstZaew==", 2257 | "dev": true, 2258 | "peer": true, 2259 | "requires": { 2260 | "esbuild": "^0.14.27", 2261 | "fsevents": "~2.3.2", 2262 | "postcss": "^8.4.13", 2263 | "resolve": "^1.22.0", 2264 | "rollup": "^2.59.0" 2265 | } 2266 | }, 2267 | "vite-plugin-restart": { 2268 | "version": "0.0.2", 2269 | "resolved": "https://registry.npmjs.org/vite-plugin-restart/-/vite-plugin-restart-0.0.2.tgz", 2270 | "integrity": "sha512-WZ2Qp8Jo83wqBcZFQo481JchQcNgEYLIjd3NbhwPXr/mbg1mUC7hCMCrvafF5WcEQPChd7agx6fBm8RYrRR46A==", 2271 | "dev": true, 2272 | "requires": { 2273 | "chalk": "^4.1.0", 2274 | "micromatch": "^4.0.2" 2275 | } 2276 | }, 2277 | "xtend": { 2278 | "version": "4.0.2", 2279 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 2280 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 2281 | "dev": true 2282 | }, 2283 | "yaml": { 2284 | "version": "1.10.2", 2285 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 2286 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 2287 | "dev": true 2288 | } 2289 | } 2290 | } 2291 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "modern-setup", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "dev": "NODE_ENV=dev vite", 8 | "build": "NODE_ENV=production vite build --mode production", 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | }, 11 | "author": "", 12 | "license": "ISC", 13 | "devDependencies": { 14 | "autoprefixer": "^10.4.7", 15 | "postcss": "^8.4.14", 16 | "tailwindcss": "^3.1.2", 17 | "vite-plugin-restart": "^0.0.2" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | 'postcss-import': {}, 4 | 'tailwindcss/nesting': {}, 5 | tailwindcss: {}, 6 | autoprefixer: {}, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /resources/css/app.css: -------------------------------------------------------------------------------- 1 | @import 'tailwindcss/base'; 2 | @import 'tailwindcss/components'; 3 | @import 'tailwindcss/utilities'; 4 | -------------------------------------------------------------------------------- /resources/js/app.js: -------------------------------------------------------------------------------- 1 | import '@css/app.css'; 2 | -------------------------------------------------------------------------------- /storage/.gitignore: -------------------------------------------------------------------------------- 1 | backups 2 | composer-backups 3 | config-backups 4 | logs 5 | runtime 6 | -------------------------------------------------------------------------------- /storage/config-deltas/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: [ 4 | './templates/**/*.html', 5 | './templates/**/*.twig', 6 | './resources/js/**/*.js', 7 | ], 8 | theme: { 9 | extend: {}, 10 | }, 11 | plugins: [], 12 | } 13 | -------------------------------------------------------------------------------- /templates/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jan-dh/modern-setup/8a2951c0f5e1a2d962de723ab12156b5f24eac9a/templates/.gitkeep -------------------------------------------------------------------------------- /templates/index.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Welcome to Craft CMS 7 | 8 | 9 | {{ craft.vite.script("/resources/js/app.js", false) }} 10 | 11 | 12 |
13 |

👋 Hi everyone

14 |
15 | 16 | 17 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import path from 'path'; 2 | import ViteRestart from 'vite-plugin-restart'; 3 | 4 | // https://vitejs.dev/config/ 5 | /** 6 | * @type {import('vite').UserConfig} 7 | */ 8 | export default ({ command }) => { 9 | return { 10 | base: command === 'serve' ? '' : '/dist/', 11 | build: { 12 | commonjsOptions: { 13 | transformMixedEsModules: true, 14 | }, 15 | manifest: true, 16 | outDir: path.resolve(__dirname, 'web/dist/'), 17 | // assetsDir: './', 18 | rollupOptions: { 19 | input: { 20 | app: path.resolve(__dirname, 'resources/js/app.js'), 21 | }, 22 | }, 23 | }, 24 | plugins: [ 25 | ViteRestart({ 26 | reload: [ 27 | path.resolve(__dirname, 'templates/**/*'), 28 | ], 29 | }), 30 | ], 31 | publicDir: path.resolve(__dirname, 'resources/public'), 32 | resolve: { 33 | alias: { 34 | '@': path.resolve(__dirname, 'resources'), 35 | '@css': path.resolve(__dirname, 'resources/css'), 36 | '@js': path.resolve(__dirname, 'resources/js'), 37 | }, 38 | }, 39 | server: { 40 | host: '0.0.0.0', 41 | port: 3000, 42 | strictPort: true, 43 | }, 44 | }; 45 | }; 46 | -------------------------------------------------------------------------------- /web/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | RewriteEngine On 3 | 4 | # Send would-be 404 requests to Craft 5 | RewriteCond %{REQUEST_FILENAME} !-f 6 | RewriteCond %{REQUEST_FILENAME} !-d 7 | RewriteCond %{REQUEST_URI} !^/(favicon\.ico|apple-touch-icon.*\.png)$ [NC] 8 | RewriteRule (.+) index.php?p=$1 [QSA,L] 9 | 10 | -------------------------------------------------------------------------------- /web/cpresources/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /web/index.php: -------------------------------------------------------------------------------- 1 | run(); 13 | -------------------------------------------------------------------------------- /web/web.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | --------------------------------------------------------------------------------