feat: Initial WordPress project

This commit is contained in:
2026-03-18 08:06:28 -04:00
commit 22cdda7fbf
40 changed files with 8903 additions and 0 deletions

25
.gitignore vendored Normal file
View File

@@ -0,0 +1,25 @@
# Project-specific files
/*
!/.cpanel.yml
!/.gitea
!/.github
!/.gitignore
!/.vscode
!/README.md
!/composer.*
!/phpcs.xml
!/project.code-workspace
!/wp-content/
/wp-content/*
# Version-controlled plugins
!/wp-content/mu-plugins/
!/wp-content/plugins/
/wp-content/plugins/*
!/wp-content/plugins/.gitkeep
# Version-controlled themes
!/wp-content/themes/
/wp-content/themes/*
!/wp-content/themes/.gitkeep
!/wp-content/themes/headless/

5
README.md Normal file
View File

@@ -0,0 +1,5 @@
# Headless
Headless WordPress project boilerplate using Nuxt.
✨ [Release notes](/wp-content/themes/headless/CHANGELOG.md)

48
composer.json Normal file
View File

@@ -0,0 +1,48 @@
{
"name": "lewebsimple/headless",
"description": "WordPress project",
"type": "project",
"license": "MIT",
"repositories": [
{
"type": "composer",
"url": "https://satis.ledevsimple.ca"
},
{
"type": "composer",
"url": "https://wpackagist.org"
}
],
"prefer-stable": true,
"config": {
"allow-plugins": {
"composer/installers": true,
"dealerdirect/phpcodesniffer-composer-installer": true
},
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"scripts": {
"lint": "vendor/bin/phpcs",
"lintfix": "vendor/bin/phpcbf"
},
"require": {
"axepress/wp-graphql-rank-math": "*",
"lewebsimple/acf-phone": "*",
"lewebsimple/advanced-custom-fields-pro": "*",
"lewebsimple/kaliroots": "*",
"lewebsimple/wp-graphql-headless-login": "*",
"wpackagist-plugin/acf-extended": "*",
"wpackagist-plugin/clean-image-filenames": "*",
"wpackagist-plugin/disable-comments": "*",
"wpackagist-plugin/media-focus-point": "*",
"wpackagist-plugin/seo-by-rank-math": "*",
"wpackagist-plugin/wp-graphql": "*",
"wpackagist-plugin/wpgraphql-acf": "*"
},
"require-dev": {
"lewebsimple/wp-phpcs-ruleset": "*",
"squizlabs/php_codesniffer": "*"
}
}

995
composer.lock generated Normal file
View File

@@ -0,0 +1,995 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "a1b040fb49fb0a59dd39debcaec4386d",
"packages": [
{
"name": "axepress/wp-graphql-plugin-boilerplate",
"version": "0.1.1",
"source": {
"type": "git",
"url": "https://github.com/AxeWP/wp-graphql-plugin-boilerplate.git",
"reference": "09495b61346453baabdf4c71a38ada3cfc91c3a7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/AxeWP/wp-graphql-plugin-boilerplate/zipball/09495b61346453baabdf4c71a38ada3cfc91c3a7",
"reference": "09495b61346453baabdf4c71a38ada3cfc91c3a7",
"shasum": ""
},
"require": {
"php": ">=7.4"
},
"require-dev": {
"axepress/wp-graphql-cs": "^2.0.0",
"axepress/wp-graphql-stubs": "^2.3.0",
"phpcompatibility/php-compatibility": "dev-develop as 9.9.9",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^2.0",
"phpstan/phpstan-deprecation-rules": "^2.0.1",
"szepeviktor/phpstan-wordpress": "^2.0",
"wp-cli/wp-cli-bundle": "^2.8.1"
},
"type": "library",
"autoload": {
"psr-4": {
"AxeWP\\GraphQL\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-3.0-or-later"
],
"authors": [
{
"name": "AxePress Development",
"homepage": "https://axepress.dev"
},
{
"name": "David Levine",
"role": "Developer"
}
],
"description": "Boilerplate for creating WPGraphQL extensions",
"support": {
"issues": "https://github.com/AxeWP/wp-graphql-plugin-boilerplate/issues",
"source": "https://github.com/AxeWP/wp-graphql-plugin-boilerplate/tree/0.1.1"
},
"funding": [
{
"url": "https://github.com/AxeWp",
"type": "github"
}
],
"time": "2025-06-07T02:03:50+00:00"
},
{
"name": "axepress/wp-graphql-rank-math",
"version": "0.3.4",
"source": {
"type": "git",
"url": "https://github.com/AxeWP/wp-graphql-rank-math.git",
"reference": "167bdd4a5350717ed34069c304e0ffc3fe02bc7d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/AxeWP/wp-graphql-rank-math/zipball/167bdd4a5350717ed34069c304e0ffc3fe02bc7d",
"reference": "167bdd4a5350717ed34069c304e0ffc3fe02bc7d",
"shasum": ""
},
"require": {
"axepress/wp-graphql-plugin-boilerplate": "^0.1.1",
"php": ">=7.4"
},
"require-dev": {
"axepress/wp-graphql-cs": "^2.0.0",
"axepress/wp-graphql-stubs": "^2.0.0",
"codeception/lib-innerbrowser": "^1.0",
"codeception/module-asserts": "^1.0",
"codeception/module-cli": "^1.0",
"codeception/module-db": "^1.0",
"codeception/module-filesystem": "^1.0",
"codeception/module-phpbrowser": "^1.0",
"codeception/module-rest": "^2.0",
"codeception/module-webdriver": "^1.0",
"codeception/phpunit-wrapper": "^9.0",
"codeception/util-universalframework": "^1.0",
"lucatume/wp-browser": "<3.5",
"php-coveralls/php-coveralls": "^2.5",
"phpcompatibility/php-compatibility": "dev-develop as 9.9.9",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^2.1.5",
"phpunit/phpunit": "^9.5",
"szepeviktor/phpstan-wordpress": "^2.0.1",
"wp-cli/wp-cli-bundle": "^2.8.1",
"wp-graphql/wp-graphql-testcase": "~3.4.0"
},
"type": "wordpress-plugin",
"extra": {
"strauss": {
"packages": [
"axepress/wp-graphql-plugin-boilerplate"
],
"classmap_prefix": "WPGraphQL_RankMath_",
"constant_prefix": "WPGRAPHQL_SEO_",
"namespace_prefix": "WPGraphQL\\RankMath\\Vendor\\",
"target_directory": "vendor-prefixed",
"update_call_sites": false,
"exclude_from_prefix": {
"namespaces": [],
"file_patterns": []
},
"include_modified_date": false,
"delete_vendor_packages": true
}
},
"autoload": {
"files": [
"access-functions.php"
],
"psr-4": {
"WPGraphQL\\RankMath\\": "src/"
},
"classmap": [
"vendor-prefixed/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-3.0-or-later"
],
"authors": [
{
"name": "AxePress Development",
"email": "support@axepress.dev",
"homepage": "https://axepress.dev"
},
{
"name": "David Levine",
"role": "Developer"
}
],
"description": "Adds WPGraphQL support for RankMath SEO",
"support": {
"email": "support@axepress.dev",
"forum": "https://github.com/AxeWP/wp-graphql-rank-math/discussions",
"issues": "https://github.com/AxeWP/wp-graphql-rank-math/issues",
"source": "https://github.com/AxeWP/wp-graphql-rank-math/tree/0.3.4"
},
"funding": [
{
"url": "https://github.com/sponsors/AxeWP",
"type": "github"
}
],
"time": "2025-06-07T12:05:15+00:00"
},
{
"name": "composer/installers",
"version": "v2.3.0",
"source": {
"type": "git",
"url": "https://github.com/composer/installers.git",
"reference": "12fb2dfe5e16183de69e784a7b84046c43d97e8e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/installers/zipball/12fb2dfe5e16183de69e784a7b84046c43d97e8e",
"reference": "12fb2dfe5e16183de69e784a7b84046c43d97e8e",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.0 || ^2.0",
"php": "^7.2 || ^8.0"
},
"require-dev": {
"composer/composer": "^1.10.27 || ^2.7",
"composer/semver": "^1.7.2 || ^3.4.0",
"phpstan/phpstan": "^1.11",
"phpstan/phpstan-phpunit": "^1",
"symfony/phpunit-bridge": "^7.1.1",
"symfony/process": "^5 || ^6 || ^7"
},
"type": "composer-plugin",
"extra": {
"class": "Composer\\Installers\\Plugin",
"branch-alias": {
"dev-main": "2.x-dev"
},
"plugin-modifies-install-path": true
},
"autoload": {
"psr-4": {
"Composer\\Installers\\": "src/Composer/Installers"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kyle Robinson Young",
"email": "kyle@dontkry.com",
"homepage": "https://github.com/shama"
}
],
"description": "A multi-framework Composer library installer",
"homepage": "https://composer.github.io/installers/",
"keywords": [
"Dolibarr",
"Eliasis",
"Hurad",
"ImageCMS",
"Kanboard",
"Lan Management System",
"MODX Evo",
"MantisBT",
"Mautic",
"Maya",
"OXID",
"Plentymarkets",
"Porto",
"RadPHP",
"SMF",
"Starbug",
"Thelia",
"Whmcs",
"WolfCMS",
"agl",
"annotatecms",
"attogram",
"bitrix",
"cakephp",
"chef",
"cockpit",
"codeigniter",
"concrete5",
"concreteCMS",
"croogo",
"dokuwiki",
"drupal",
"eZ Platform",
"elgg",
"expressionengine",
"fuelphp",
"grav",
"installer",
"itop",
"known",
"kohana",
"laravel",
"lavalite",
"lithium",
"magento",
"majima",
"mako",
"matomo",
"mediawiki",
"miaoxing",
"modulework",
"modx",
"moodle",
"osclass",
"pantheon",
"phpbb",
"piwik",
"ppi",
"processwire",
"puppet",
"pxcms",
"reindex",
"roundcube",
"shopware",
"silverstripe",
"sydes",
"sylius",
"tastyigniter",
"wordpress",
"yawik",
"zend",
"zikula"
],
"support": {
"issues": "https://github.com/composer/installers/issues",
"source": "https://github.com/composer/installers/tree/v2.3.0"
},
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://github.com/composer",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2024-06-24T20:46:46+00:00"
},
{
"name": "lewebsimple/acf-phone",
"version": "v3.1.1",
"source": {
"type": "git",
"url": "https://github.com/lewebsimple/acf-phone.git",
"reference": "f9cb86eacb26eb92a40eb5e4366cff3e58e01f47"
},
"dist": {
"type": "zip",
"url": "https://satis.ledevsimple.ca/dist/lewebsimple/acf-phone/lewebsimple-acf-phone-f9cb86eacb26eb92a40eb5e4366cff3e58e01f47-zip-606a09.zip",
"reference": "f9cb86eacb26eb92a40eb5e4366cff3e58e01f47",
"shasum": "2bbbc7d7f917e278d7d913bcb9da07a30f4662e6"
},
"require-dev": {
"lewebsimple/wp-phpcs-ruleset": "*",
"php-stubs/acf-pro-stubs": "*",
"squizlabs/php_codesniffer": "*"
},
"type": "wordpress-plugin",
"scripts": {
"post-create-project-cmd": [
"./scripts/post-create.sh"
],
"lint": [
"vendor/bin/phpcs"
],
"lintfix": [
"vendor/bin/phpcbf"
]
},
"support": {
"source": "https://github.com/lewebsimple/acf-phone/tree/v3.1.1",
"issues": "https://github.com/lewebsimple/acf-phone/issues"
},
"time": "2026-02-10T17:56:38+00:00"
},
{
"name": "lewebsimple/advanced-custom-fields-pro",
"version": "v6.7.0.2",
"source": {
"type": "git",
"url": "ssh://git@gitea.websimple.com:222/wp-plugins/advanced-custom-fields-pro.git",
"reference": "0f05fc999189ec688c19abe4d8c889f947ec96c3"
},
"dist": {
"type": "zip",
"url": "https://satis.ledevsimple.ca/dist/lewebsimple/advanced-custom-fields-pro/lewebsimple-advanced-custom-fields-pro-v6.7.0.2-911a1f.zip",
"reference": "0f05fc999189ec688c19abe4d8c889f947ec96c3",
"shasum": "2782595387ea3b62a81cdb0a79ec75e9beca8aa7"
},
"type": "wordpress-plugin",
"time": "2025-12-12T16:12:43+00:00"
},
{
"name": "lewebsimple/kaliroots",
"version": "v0.9.19",
"source": {
"type": "git",
"url": "ssh://git@gitea.websimple.com:222/wp-themes/kaliroots.git",
"reference": "40789468328e126cec9bd2f85a6a9923663a8d91"
},
"dist": {
"type": "zip",
"url": "https://satis.ledevsimple.ca/dist/lewebsimple/kaliroots/lewebsimple-kaliroots-v0.9.19-12b0b3.zip",
"reference": "40789468328e126cec9bd2f85a6a9923663a8d91",
"shasum": "0a4cadbbc7719ee7de94b5cff4b2bb9c436f6416"
},
"type": "wordpress-theme",
"time": "2026-02-09T15:07:56+00:00"
},
{
"name": "lewebsimple/wp-graphql-headless-login",
"version": "v0.4.4",
"source": {
"type": "git",
"url": "ssh://git@gitea.websimple.com:222/wp-plugins/wp-graphql-headless-login.git",
"reference": "1df7b88b18b5a064d6f7237acbd7607050a1adfc"
},
"dist": {
"type": "zip",
"url": "https://satis.ledevsimple.ca/dist/lewebsimple/wp-graphql-headless-login/lewebsimple-wp-graphql-headless-login-v0.4.4-55b70a.zip",
"reference": "1df7b88b18b5a064d6f7237acbd7607050a1adfc",
"shasum": "2ff58080a20c4529c82015c821c22a29fd8cdd3e"
},
"type": "wordpress-plugin",
"time": "2025-10-10T13:00:48+00:00"
},
{
"name": "wpackagist-plugin/acf-extended",
"version": "0.9.2.3",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/acf-extended/",
"reference": "tags/0.9.2.3"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/acf-extended.0.9.2.3.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
},
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/acf-extended/"
},
{
"name": "wpackagist-plugin/clean-image-filenames",
"version": "1.5",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/clean-image-filenames/",
"reference": "tags/1.5"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/clean-image-filenames.1.5.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
},
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/clean-image-filenames/"
},
{
"name": "wpackagist-plugin/disable-comments",
"version": "2.6.2",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/disable-comments/",
"reference": "tags/2.6.2"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/disable-comments.2.6.2.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
},
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/disable-comments/"
},
{
"name": "wpackagist-plugin/media-focus-point",
"version": "2.0.5",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/media-focus-point/",
"reference": "tags/2.0.5"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/media-focus-point.2.0.5.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
},
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/media-focus-point/"
},
{
"name": "wpackagist-plugin/seo-by-rank-math",
"version": "1.0.266",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/seo-by-rank-math/",
"reference": "tags/1.0.266"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/seo-by-rank-math.1.0.266.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
},
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/seo-by-rank-math/"
},
{
"name": "wpackagist-plugin/wp-graphql",
"version": "2.10.0",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/wp-graphql/",
"reference": "tags/2.10.0"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/wp-graphql.2.10.0.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
},
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/wp-graphql/"
},
{
"name": "wpackagist-plugin/wpgraphql-acf",
"version": "2.5.1",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/wpgraphql-acf/",
"reference": "tags/2.5.1"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/wpgraphql-acf.2.5.1.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
},
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/wpgraphql-acf/"
}
],
"packages-dev": [
{
"name": "dealerdirect/phpcodesniffer-composer-installer",
"version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/composer-installer.git",
"reference": "845eb62303d2ca9b289ef216356568ccc075ffd1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/845eb62303d2ca9b289ef216356568ccc075ffd1",
"reference": "845eb62303d2ca9b289ef216356568ccc075ffd1",
"shasum": ""
},
"require": {
"composer-plugin-api": "^2.2",
"php": ">=5.4",
"squizlabs/php_codesniffer": "^3.1.0 || ^4.0"
},
"require-dev": {
"composer/composer": "^2.2",
"ext-json": "*",
"ext-zip": "*",
"php-parallel-lint/php-parallel-lint": "^1.4.0",
"phpcompatibility/php-compatibility": "^9.0 || ^10.0.0@dev",
"yoast/phpunit-polyfills": "^1.0"
},
"type": "composer-plugin",
"extra": {
"class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
},
"autoload": {
"psr-4": {
"PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Franck Nijhof",
"email": "opensource@frenck.dev",
"homepage": "https://frenck.dev",
"role": "Open source developer"
},
{
"name": "Contributors",
"homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors"
}
],
"description": "PHP_CodeSniffer Standards Composer Installer Plugin",
"keywords": [
"PHPCodeSniffer",
"PHP_CodeSniffer",
"code quality",
"codesniffer",
"composer",
"installer",
"phpcbf",
"phpcs",
"plugin",
"qa",
"quality",
"standard",
"standards",
"style guide",
"stylecheck",
"tests"
],
"support": {
"issues": "https://github.com/PHPCSStandards/composer-installer/issues",
"security": "https://github.com/PHPCSStandards/composer-installer/security/policy",
"source": "https://github.com/PHPCSStandards/composer-installer"
},
"funding": [
{
"url": "https://github.com/PHPCSStandards",
"type": "github"
},
{
"url": "https://github.com/jrfnl",
"type": "github"
},
{
"url": "https://opencollective.com/php_codesniffer",
"type": "open_collective"
},
{
"url": "https://thanks.dev/u/gh/phpcsstandards",
"type": "thanks_dev"
}
],
"time": "2025-11-11T04:32:07+00:00"
},
{
"name": "lewebsimple/wp-phpcs-ruleset",
"version": "0.1.5",
"source": {
"type": "git",
"url": "https://github.com/lewebsimple/wp-phpcs-ruleset.git",
"reference": "8467947b62d2c394819aa7313ddcb09086da53bb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lewebsimple/wp-phpcs-ruleset/zipball/8467947b62d2c394819aa7313ddcb09086da53bb",
"reference": "8467947b62d2c394819aa7313ddcb09086da53bb",
"shasum": ""
},
"require": {
"wp-coding-standards/wpcs": "*"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "*"
},
"type": "phpcodesniffer-standard",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Pascal Martineau",
"email": "pascal@lewebsimple.ca"
}
],
"description": "Shared PHPCS ruleset for WordPress projects",
"support": {
"issues": "https://github.com/lewebsimple/wp-phpcs-ruleset/issues",
"source": "https://github.com/lewebsimple/wp-phpcs-ruleset/tree/v0.1.5"
},
"time": "2025-12-03T16:04:08+00:00"
},
{
"name": "phpcsstandards/phpcsextra",
"version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHPCSExtra.git",
"reference": "b598aa890815b8df16363271b659d73280129101"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/b598aa890815b8df16363271b659d73280129101",
"reference": "b598aa890815b8df16363271b659d73280129101",
"shasum": ""
},
"require": {
"php": ">=5.4",
"phpcsstandards/phpcsutils": "^1.2.0",
"squizlabs/php_codesniffer": "^3.13.5 || ^4.0.1"
},
"require-dev": {
"php-parallel-lint/php-console-highlighter": "^1.0",
"php-parallel-lint/php-parallel-lint": "^1.4.0",
"phpcsstandards/phpcsdevcs": "^1.2.0",
"phpcsstandards/phpcsdevtools": "^1.2.1",
"phpunit/phpunit": "^4.5 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
},
"type": "phpcodesniffer-standard",
"extra": {
"branch-alias": {
"dev-stable": "1.x-dev",
"dev-develop": "1.x-dev"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-3.0-or-later"
],
"authors": [
{
"name": "Juliette Reinders Folmer",
"homepage": "https://github.com/jrfnl",
"role": "lead"
},
{
"name": "Contributors",
"homepage": "https://github.com/PHPCSStandards/PHPCSExtra/graphs/contributors"
}
],
"description": "A collection of sniffs and standards for use with PHP_CodeSniffer.",
"keywords": [
"PHP_CodeSniffer",
"phpcbf",
"phpcodesniffer-standard",
"phpcs",
"standards",
"static analysis"
],
"support": {
"issues": "https://github.com/PHPCSStandards/PHPCSExtra/issues",
"security": "https://github.com/PHPCSStandards/PHPCSExtra/security/policy",
"source": "https://github.com/PHPCSStandards/PHPCSExtra"
},
"funding": [
{
"url": "https://github.com/PHPCSStandards",
"type": "github"
},
{
"url": "https://github.com/jrfnl",
"type": "github"
},
{
"url": "https://opencollective.com/php_codesniffer",
"type": "open_collective"
},
{
"url": "https://thanks.dev/u/gh/phpcsstandards",
"type": "thanks_dev"
}
],
"time": "2025-11-12T23:06:57+00:00"
},
{
"name": "phpcsstandards/phpcsutils",
"version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHPCSUtils.git",
"reference": "c216317e96c8b3f5932808f9b0f1f7a14e3bbf55"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/c216317e96c8b3f5932808f9b0f1f7a14e3bbf55",
"reference": "c216317e96c8b3f5932808f9b0f1f7a14e3bbf55",
"shasum": ""
},
"require": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0",
"php": ">=5.4",
"squizlabs/php_codesniffer": "^3.13.5 || ^4.0.1"
},
"require-dev": {
"ext-filter": "*",
"php-parallel-lint/php-console-highlighter": "^1.0",
"php-parallel-lint/php-parallel-lint": "^1.4.0",
"phpcsstandards/phpcsdevcs": "^1.2.0",
"yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0 || ^3.0.0"
},
"type": "phpcodesniffer-standard",
"extra": {
"branch-alias": {
"dev-stable": "1.x-dev",
"dev-develop": "1.x-dev"
}
},
"autoload": {
"classmap": [
"PHPCSUtils/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-3.0-or-later"
],
"authors": [
{
"name": "Juliette Reinders Folmer",
"homepage": "https://github.com/jrfnl",
"role": "lead"
},
{
"name": "Contributors",
"homepage": "https://github.com/PHPCSStandards/PHPCSUtils/graphs/contributors"
}
],
"description": "A suite of utility functions for use with PHP_CodeSniffer",
"homepage": "https://phpcsutils.com/",
"keywords": [
"PHP_CodeSniffer",
"phpcbf",
"phpcodesniffer-standard",
"phpcs",
"phpcs3",
"phpcs4",
"standards",
"static analysis",
"tokens",
"utility"
],
"support": {
"docs": "https://phpcsutils.com/",
"issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues",
"security": "https://github.com/PHPCSStandards/PHPCSUtils/security/policy",
"source": "https://github.com/PHPCSStandards/PHPCSUtils"
},
"funding": [
{
"url": "https://github.com/PHPCSStandards",
"type": "github"
},
{
"url": "https://github.com/jrfnl",
"type": "github"
},
{
"url": "https://opencollective.com/php_codesniffer",
"type": "open_collective"
},
{
"url": "https://thanks.dev/u/gh/phpcsstandards",
"type": "thanks_dev"
}
],
"time": "2025-12-08T14:27:58+00:00"
},
{
"name": "squizlabs/php_codesniffer",
"version": "3.13.5",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
"reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0ca86845ce43291e8f5692c7356fccf3bcf02bf4",
"reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4",
"shasum": ""
},
"require": {
"ext-simplexml": "*",
"ext-tokenizer": "*",
"ext-xmlwriter": "*",
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
},
"bin": [
"bin/phpcbf",
"bin/phpcs"
],
"type": "library",
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Greg Sherwood",
"role": "Former lead"
},
{
"name": "Juliette Reinders Folmer",
"role": "Current lead"
},
{
"name": "Contributors",
"homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
}
],
"description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
"homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"keywords": [
"phpcs",
"standards",
"static analysis"
],
"support": {
"issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
"security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
"source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
},
"funding": [
{
"url": "https://github.com/PHPCSStandards",
"type": "github"
},
{
"url": "https://github.com/jrfnl",
"type": "github"
},
{
"url": "https://opencollective.com/php_codesniffer",
"type": "open_collective"
},
{
"url": "https://thanks.dev/u/gh/phpcsstandards",
"type": "thanks_dev"
}
],
"time": "2025-11-04T16:30:35+00:00"
},
{
"name": "wp-coding-standards/wpcs",
"version": "3.3.0",
"source": {
"type": "git",
"url": "https://github.com/WordPress/WordPress-Coding-Standards.git",
"reference": "7795ec6fa05663d716a549d0b44e47ffc8b0d4a6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7795ec6fa05663d716a549d0b44e47ffc8b0d4a6",
"reference": "7795ec6fa05663d716a549d0b44e47ffc8b0d4a6",
"shasum": ""
},
"require": {
"ext-filter": "*",
"ext-libxml": "*",
"ext-tokenizer": "*",
"ext-xmlreader": "*",
"php": ">=7.2",
"phpcsstandards/phpcsextra": "^1.5.0",
"phpcsstandards/phpcsutils": "^1.1.0",
"squizlabs/php_codesniffer": "^3.13.4"
},
"require-dev": {
"php-parallel-lint/php-console-highlighter": "^1.0.0",
"php-parallel-lint/php-parallel-lint": "^1.4.0",
"phpcompatibility/php-compatibility": "^10.0.0@dev",
"phpcsstandards/phpcsdevtools": "^1.2.0",
"phpunit/phpunit": "^8.0 || ^9.0"
},
"suggest": {
"ext-iconv": "For improved results",
"ext-mbstring": "For improved results"
},
"type": "phpcodesniffer-standard",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Contributors",
"homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors"
}
],
"description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions",
"keywords": [
"phpcs",
"standards",
"static analysis",
"wordpress"
],
"support": {
"issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues",
"source": "https://github.com/WordPress/WordPress-Coding-Standards",
"wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki"
},
"funding": [
{
"url": "https://opencollective.com/php_codesniffer",
"type": "custom"
}
],
"time": "2025-11-25T12:08:04+00:00"
}
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {},
"prefer-stable": true,
"prefer-lowest": false,
"platform": {},
"platform-dev": {},
"plugin-api-version": "2.9.0"
}

5
phpcs.xml Normal file
View File

@@ -0,0 +1,5 @@
<?xml version="1.0"?>
<ruleset name="Headless">
<rule ref="WebsimpleWP"/>
<file>wp-content/themes/headless/</file>
</ruleset>

30
project.code-workspace Normal file
View File

@@ -0,0 +1,30 @@
{
"folders": [
{
"name": "Nuxt",
"path": "wp-content/themes/headless"
},
{
"name": "WordPress",
"path": "."
}
],
"settings": {
"files.associations": {
"*.css": "tailwindcss"
},
"editor.quickSuggestions": {
"strings": "on"
},
"tailwindCSS.classAttributes": [
"class",
"ui"
],
"tailwindCSS.experimental.classRegex": [
[
"ui:\\s*{([^)]*)\\s*}",
"(?:'|\"|`)([^']*)(?:'|\"|`)"
]
]
}
}

View File

View File

@@ -0,0 +1,10 @@
<?php
// Disable 'headless' theme updates
add_filter( 'site_transient_update_themes', 'headless_disable_theme_updates' );
function headless_disable_theme_updates( $transient ) {
if ( isset( $transient->response['headless'] ) ) {
unset( $transient->response['headless'] );
}
return $transient;
}

View File

@@ -0,0 +1,20 @@
<?php
// Customize home URL for headless WordPress
add_filter( 'home_url', 'headless_home_url', 10, 4 );
function headless_home_url( $url, $path, $orig_scheme, $blog_id ) {
// Exclude specific patterns from rewriting
$excluded_patterns = array(
'#/wp-json(/|$)#i', // WP REST API
'#\.(xsl|xml)$#i', // Sitemap and XSLT files
);
foreach ( $excluded_patterns as $pattern ) {
if ( preg_match( $pattern, $url ) ) {
return get_site_url( $blog_id, $path, $orig_scheme );
}
}
// Rewrite URL protocol to match original home scheme
$scheme = wp_parse_url( get_option( 'home' ) )['scheme'] ?? 'https';
return preg_replace( '#^https:#i', "$scheme:", $url );
}

View File

View File

24
wp-content/themes/headless/.gitignore vendored Normal file
View File

@@ -0,0 +1,24 @@
# Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
# Node dependencies
node_modules
# Logs
logs
*.log
# Misc
.DS_Store
.fleet
.idea
# Local env files
.env
.env.*
!.env.example

View File

@@ -0,0 +1 @@
shamefully-hoist=true

View File

@@ -0,0 +1,19 @@
{
"$schema": "./node_modules/oxfmt/configuration_schema.json",
"experimentalSortImports": {
"groups": [
["side_effect"],
["builtin"],
["external", "type-external"],
["internal", "type-internal"],
["parent", "type-parent"],
["sibling", "type-sibling"],
["index", "type-index"]
]
},
"experimentalTailwindcss": {
"attributes": ["class"],
"functions": ["tv"],
"stylesheet": "./app/assets/css/_main.css"
}
}

View File

@@ -0,0 +1,22 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"categories": {},
"env": {
"builtin": true,
"browser": true,
"node": true
},
"globals": {},
"ignorePatterns": [],
"plugins": ["import", "vue"],
"rules": {
"vue/define-emits-declaration": ["error", "type-based"],
"vue/define-props-declaration": ["error", "type-based"],
"vue/require-typed-ref": "error"
},
"settings": {
"vitest": {
"typecheck": false
}
}
}

View File

@@ -0,0 +1,3 @@
{
"recommendations": ["oxc.oxc-vscode"]
}

View File

@@ -0,0 +1,25 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Nuxt server",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/node_modules/nuxt/bin/nuxt.mjs",
"runtimeArgs": ["--inspect"],
"args": ["dev"],
"autoAttachChildProcesses": true,
"console": "integratedTerminal",
"skipFiles": ["<node_internals>/**"]
},
{
"name": "Nuxt client",
"type": "chrome",
"request": "launch",
"sourceMaps": true,
"trace": false,
"url": "http://localhost:3000",
"userDataDir": "${env:HOME}/.vscode/chromium-profile"
}
]
}

View File

@@ -0,0 +1,35 @@
{
"[css]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[json]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[jsonc]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[postcss]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[scss]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[vue]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"editor.codeActionsOnSave": {
"source.fixAll": "always"
},
"editor.defaultFormatter": "oxc.oxc-vscode",
"editor.formatOnSave": true,
"editor.quickSuggestions": {
"strings": "on"
},
"eslint.enable": false
}

View File

@@ -0,0 +1 @@
# Changelog

View File

@@ -0,0 +1,75 @@
# Nuxt Minimal Starter
Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
## Setup
Make sure to install dependencies:
```bash
# npm
npm install
# pnpm
pnpm install
# yarn
yarn install
# bun
bun install
```
## Development Server
Start the development server on `http://localhost:3000`:
```bash
# npm
npm run dev
# pnpm
pnpm dev
# yarn
yarn dev
# bun
bun run dev
```
## Production
Build the application for production:
```bash
# npm
npm run build
# pnpm
pnpm build
# yarn
yarn build
# bun
bun run build
```
Locally preview production build:
```bash
# npm
npm run preview
# pnpm
pnpm preview
# yarn
yarn preview
# bun
bun run preview
```
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.

View File

@@ -0,0 +1,8 @@
<template>
<div>
<NuxtRouteAnnouncer />
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</div>
</template>

View File

@@ -0,0 +1,5 @@
<template>
<div id="layout-default">
<slot />
</div>
</template>

View File

@@ -0,0 +1,3 @@
<template>
<div id="page-node-from-uri">TODO: [...uri].vue</div>
</template>

View File

@@ -0,0 +1,14 @@
<?php
// Core
require_once __DIR__ . '/includes/core/theme-setup.php';
// Vendors
require_once __DIR__ . '/includes/vendors/acf.php';
require_once __DIR__ . '/includes/vendors/rankmath.php';
require_once __DIR__ . '/includes/vendors/tinymce.php';
require_once __DIR__ . '/includes/vendors/wpgraphql.php';
// WPGraphQL
require_once __DIR__ . '/includes/wpgraphql/media-focus-point.php';
require_once __DIR__ . '/includes/wpgraphql/term-connection.php';

View File

@@ -0,0 +1,27 @@
<?php
// Setup theme
add_action( 'after_setup_theme', 'headless_after_setup_theme' );
function headless_after_setup_theme() {
// Load textdomain
load_theme_textdomain( 'headless', get_theme_file_path( 'languages' ) );
// Theme features
add_theme_support( 'custom-logo' );
add_theme_support( 'editor-styles' );
remove_theme_support( 'core-block-patterns' );
// Register menus
register_nav_menu( 'main', __( "Main menu", 'headless' ) );
// Register sidebars
}
// Display theme version in admin footer
add_filter( 'update_footer', 'headless_update_footer', 100 );
function headless_update_footer() {
$package_json = json_decode( file_get_contents( get_theme_file_path( 'package.json' ) ), true );
$name = $package_json['name'] ?? 'headless';
$version = $package_json['version'] ?? '(unknown)';
return sprintf( '%s v%s', esc_html( $name ), esc_html( $version ) );
}

View File

@@ -0,0 +1,15 @@
<?php
// Disable ACF / ACFE modules
add_filter( 'acf/settings/enable_post_types', '__return_false' );
add_action( 'acf/init', 'headless_acf_init' );
function headless_acf_init() {
acf_update_setting( 'acfe/modules/block_types', false );
acf_update_setting( 'acfe/modules/categories', false );
acf_update_setting( 'acfe/modules/forms', false );
acf_update_setting( 'acfe/modules/options', false );
acf_update_setting( 'acfe/modules/options_pages', false );
acf_update_setting( 'acfe/modules/post_types', false );
acf_update_setting( 'acfe/modules/taxonomies', false );
acf_update_setting( 'acfe/modules/templates', false );
}

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1,139 @@
<?php
// Enable formats (styleselect) in TinyMCE
add_filter( 'mce_buttons', 'headless_tinymce_styleselect' );
function headless_tinymce_styleselect( $buttons ) {
array_unshift( $buttons, 'styleselect' );
return $buttons;
}
// Configure TinyMCE
add_filter( 'tiny_mce_before_init', 'headless_tiny_mce_before_init' );
function headless_tiny_mce_before_init( $settings ) {
// Reset TinyMCE editor CSS
if ( isset( $settings['content_css'] ) ) {
$content_css = explode( ',', $settings['content_css'] );
unset( $content_css[1] ); // wp-content.min.css
$settings['content_css'] = implode( ',', $content_css );
}
// Format styles
$settings['style_formats'] = wp_json_encode(
array(
array(
'title' => "Caractères",
'items' => array(// Inline styles
array(
'title' => __( "Semi-bold", 'headless' ),
'inline' => 'span',
'classes' => 'font-semibold',
),
),
),
array(
'title' => "Liens",
'items' => array(// Link styles
array(
'title' => "Lien (opacité)",
'selector' => 'a',
'classes' => 'link-opacity',
),
),
),
array(
'title' => "Listes",
'items' => array(// List styles
array(
'title' => "Liste horizontale",
'selector' => 'ul,ol',
'classes' => 'list-horizontal',
),
),
),
array(
'title' => "Paragraphes",
'items' => array(// Paragraph styles
array(
'title' => "Paragraphe vedette",
'block' => 'p',
'classes' => 'paragraph-lead',
),
),
),
array(
'title' => "Titres",
'items' => array(// Heading styles
array(
'title' => "Titre 1",
'selector' => 'h1,h2,h3,h4',
'classes' => 'heading-1',
),
array(
'title' => "Titre 2",
'selector' => 'h1,h2,h3,h4',
'classes' => 'heading-2',
),
array(
'title' => "Titre 3",
'selector' => 'h1,h2,h3,h4',
'classes' => 'heading-3',
),
array(
'title' => "Titre 4",
'selector' => 'h1,h2,h3,h4',
'classes' => 'heading-4',
),
),
),
)
);
// Block styles
$settings['block_formats'] = implode(
';',
array(
'Paragraph=p',
'Heading 1=h1',
'Heading 2=h2',
'Heading 3=h3',
'Heading 4=h4',
)
);
return $settings;
}
// Override TinyMCE editor styles
add_filter( 'mce_css', 'headless_override_editor_styles' );
function headless_override_editor_styles() {
return get_stylesheet_directory_uri() . '/editor-style.css';
}
// Remove default TinyMCE styles for all editors (WordPress & ACF)
add_action( 'admin_print_footer_scripts', 'headless_remove_tinymce_default_styles', 99 );
function headless_remove_tinymce_default_styles() {
?>
<script>
(function($) {
if (typeof tinymce !== 'undefined') {
tinymce.on('AddEditor', function({editor}) {
editor.on('init', function() {
$(editor.iframeElement).contents().find("link[href*='content.min.css']").remove();
});
});
}
})(jQuery);
</script>
<?php
}
// Convert absolute URLs to relative in link query
add_filter( 'wp_link_query', 'headless_tinymce_relative_urls' );
function headless_tinymce_relative_urls( $results ) {
foreach ( $results as &$result ) {
if ( empty( $result['permalink'] ) ) {
continue;
}
$result['permalink'] = str_replace( get_home_url(), '', $result['permalink'] );
}
return $results;
}

View File

@@ -0,0 +1,17 @@
<?php
// Default WPGraphQL settings
add_filter( 'graphql_get_setting_section_field_value', 'headless_wpgraphql_settings', 10, 5 );
function headless_wpgraphql_settings( $value, $default_value, $option_name, $section_fields, $section_name ) {
if ( $section_name === 'graphql_general_settings' ) {
switch ( $option_name ) {
case 'graphql_endpoint':
$value = 'graphql';
break;
case "public_introspection_enabled":
$value = "on";
break;
}
}
return $value;
}

View File

@@ -0,0 +1,17 @@
<?php
// Expose 'bg_pos_desktop' post meta on MediaItem type in WPGraphQL
add_action( 'graphql_register_types', 'leblanc_graphql_register_media_focus_point' );
function leblanc_graphql_register_media_focus_point() {
register_graphql_field(
'MediaItem',
'objectPosition',
array(
'type' => 'String',
'description' => 'CSS object-position value from Media Focus Point plugin',
'resolve' => static function ( $media_item ) {
return get_post_meta( $media_item->databaseId, 'bg_pos_desktop', true );
},
)
);
}

View File

@@ -0,0 +1,13 @@
<?php
// Override term connection query args
add_filter( 'graphql_term_object_connection_query_args', 'headless_graphql_term_object_connection_query_args', 10, 3 );
function headless_graphql_term_object_connection_query_args( $query_args, $source, $args ) {
// Sort by 'order' meta value instead of legacy 'term_order' field
if ( 'term_order' === $args['where']['orderby'] ?? false ) {
$query_args['meta_key'] = 'order';
$query_args['orderby'] = 'meta_value_num';
}
return $query_args;
}

View File

@@ -0,0 +1,5 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
compatibilityDate: "2026-03-18",
devtools: { enabled: true },
});

View File

@@ -0,0 +1,49 @@
{
"name": "@lewebsimple/headless",
"version": "0.1.0",
"private": true,
"description": "Headless WordPress theme based on Nuxt.",
"type": "module",
"scripts": {
"build": "pnpm --sequential /build:.*/",
"build:nuxt": "nuxt build",
"dev": "nuxt dev",
"format": "oxfmt .",
"lint": "oxlint . --fix",
"preview": "nuxt preview",
"postinstall": "pnpm --sequential /postinstall:.*/",
"postinstall:nuxt": "nuxt prepare",
"release": "oxlint . && oxfmt --check . && nuxt typecheck && changelogen --noAuthors --release --push"
},
"dependencies": {
"nuxt": "^4.4.2",
"vue": "^3.5.30",
"vue-router": "^5.0.3"
},
"devDependencies": {
"changelogen": "^0.6.2",
"oxfmt": "^0.41.0",
"oxlint": "^1.56.0",
"typescript": "^5.9.3",
"vue-tsc": "^3.2.6"
},
"pnpm": {
"overrides": {
"@tiptap/core": "3.14.0",
"@tiptap/pm": "3.14.0"
},
"onlyBuiltDependencies": [
"@parcel/watcher",
"esbuild",
"sharp",
"unrs-resolver",
"vue-demi",
"workerd"
]
},
"changelog": {
"types": {
"chore": false
}
}
}

7219
wp-content/themes/headless/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -0,0 +1,2 @@
User-Agent: *
Disallow:

View File

@@ -0,0 +1,8 @@
/*
Theme Name: Headless
Author: Pascal Martineau <pascal@lewebsimple.ca>
Author URI: https://websimple.com/
Description: Headless WordPress theme based on Nuxt.
Text Domain: headless
Template: kaliroots
*/

View File

@@ -0,0 +1,18 @@
{
// https://nuxt.com/docs/guide/concepts/typescript
"files": [],
"references": [
{
"path": "./.nuxt/tsconfig.app.json"
},
{
"path": "./.nuxt/tsconfig.server.json"
},
{
"path": "./.nuxt/tsconfig.shared.json"
},
{
"path": "./.nuxt/tsconfig.node.json"
}
]
}