vanilla 17.0

This commit is contained in:
Ernad Husremovic 2025-10-08 10:47:08 +02:00
parent d72e748793
commit a9bcec8e91
1986 changed files with 1613876 additions and 568976 deletions

View file

@ -47,19 +47,6 @@ web_studio/static/tests/**/legacy/*
# blacklist legacy
addons/base_import/static/src/legacy/**/*
# Whitelist web_kanban_gauge
!addons/web_kanban_gauge
!addons/web_kanban_gauge/**/*
# web_dashboard
# whitelist new code
!web_dashboard
!web_dashboard/**/*
# blacklist legacy
web_dashboard/static/src/legacy/**/*
web_dashboard/static/tests/legacy/**/*
# web_cohort
# whitelist new code
!web_cohort
@ -69,6 +56,33 @@ web_dashboard/static/tests/legacy/**/*
web_cohort/static/src/legacy/**/*
web_cohort/static/tests/legacy/**/*
# web_gantt
# whitelist new code
!web_gantt
!web_gantt/**/*
# blacklist legacy
web_gantt/static/src/legacy/**/*
web_gantt/static/tests/legacy/**/*
# planning
# whitelist new code
!planning
!planning/static
!planning/static/src
!planning/static/src/*.js
!planning/static/tests
!planning/static/tests/planning_gantt_tests.js
# project_enterprise
# whitelist new code
!project_enterprise
!project_enterprise/static
!project_enterprise/static/src
!project_enterprise/static/src/*.js
!project_enterprise/static/tests
!project_enterprise/static/tests/*.js
# web_map
# whitelist new code
!web_map
@ -78,6 +92,10 @@ web_cohort/static/tests/legacy/**/*
web_map/static/src/legacy/**/*
web_map/static/tests/legacy/**/*
# whitelist web_tour
!web_tour
!web_tour/**/*
# whitelist base_setup
!addons/base_setup
!addons/base_setup/**/*
@ -147,3 +165,166 @@ addons/spreadsheet/static/src/o_spreadsheet/o_spreadsheet.js
!addons/auth_password_policy
!addons/auth_password_policy/**/*
# Whitelist bus
!addons/bus/
!addons/bus/**/*
# Whitelist mail & dependents (with a lot of JS overrides)
!addons/calendar
!addons/calendar/**/*
!addons/hr
!addons/hr/**/*
!addons/hr_holidays
!addons/hr_holidays/**/*
!addons/im_livechat
!addons/im_livechat/**/*
!addons/mail
!addons/mail/**/*
!addons/sms
!addons/sms/**/*
!addons/snailmail
!addons/snailmail/**/*
!addons/test_discuss_full
!addons/test_discuss_full/**/*
!addons/test_mail
!addons/test_mail/**/*
!addons/website_livechat
!addons/website_livechat/**/*
!approvals
!approvals/**/*
!documents
!documents/**/*
!mail_enterprise
!mail_enterprise/**/*
!test_discuss_full_enterprise
!test_discuss_full_enterprise/**/*
!whatsapp
!whatsapp/**/*
# Whitelist point_of_sale
!addons/point_of_sale
!addons/point_of_sale/**/*
# Whitelist community pos modules
!addons/hw_posbox_homepage
!addons/hw_posbox_homepage/**/*
!addons/l10n_ar_pos
!addons/l10n_ar_pos/**/*
!addons/l10n_co_pos
!addons/l10n_co_pos/**/*
!addons/l10n_es_pos
!addons/l10n_es_pos/**/*
!addons/l10n_fr_pos_cert
!addons/l10n_fr_pos_cert/**/*
!addons/l10n_gcc_pos
!addons/l10n_gcc_pos/**/*
!addons/l10n_in_pos
!addons/l10n_in_pos/**/*
!addons/l10n_sa_pos
!addons/l10n_sa_pos/**/*
!addons/pos_adyen
!addons/pos_adyen/**/*
!addons/pos_discount
!addons/pos_discount/**/*
!addons/pos_epson_printer
!addons/pos_epson_printer/**/*
!addons/pos_hr
!addons/pos_hr/**/*
!addons/pos_hr_restaurant
!addons/pos_hr_restaurant/**/*
!addons/pos_loyalty
!addons/pos_loyalty/**/*
!addons/pos_mercury
!addons/pos_mercury/**/*
!addons/pos_mrp
!addons/pos_mrp/**/*
!addons/pos_online_payment
!addons/pos_online_payment/**/*
!addons/pos_online_payment_self_order
!addons/pos_online_payment_self_order/**/*
!addons/pos_paytm
!addons/pos_paytm/**/*
!addons/pos_restaurant
!addons/pos_restaurant/**/*
!addons/pos_restaurant_adyen
!addons/pos_restaurant_adyen/**/*
!addons/pos_restaurant_stripe
!addons/pos_restaurant_stripe/**/*
!addons/pos_sale
!addons/pos_sale/**/*
!addons/pos_sale_loyalty
!addons/pos_sale_loyalty/**/*
!addons/pos_sale_margin
!addons/pos_sale_margin/**/*
!addons/pos_sale_product_configurator
!addons/pos_sale_product_configurator/**/*
!addons/pos_self_order
!addons/pos_self_order/**/*
!addons/pos_self_order_adyen
!addons/pos_self_order_adyen/**/*
!addons/pos_self_order_epson_printer
!addons/pos_self_order_epson_printer/**/*
!addons/pos_self_order_sale
!addons/pos_self_order_sale/**/*
!addons/pos_self_order_stripe
!addons/pos_self_order_stripe/**/*
!addons/pos_six
!addons/pos_six/**/*
!addons/pos_stripe
!addons/pos_stripe/**/*
!addons/spreadsheet_dashboard_pos_hr
!addons/spreadsheet_dashboard_pos_hr/**/*
# Whitelist enterprise pos modules
!l10n_cl_edi_pos
!l10n_cl_edi_pos/**/*
!l10n_de_pos_cert
!l10n_de_pos_cert/**/*
!l10n_de_pos_res_cert
!l10n_de_pos_res_cert/**/*
!l10n_in_reports_gstr_pos
!l10n_in_reports_gstr_pos/**/*
!l10n_mx_edi_pos
!l10n_mx_edi_pos/**/*
!l10n_pl_reports_pos_jpk
!l10n_pl_reports_pos_jpk/**/*
!pos_account_reports
!pos_account_reports/**/*
!pos_blackbox_be
!pos_blackbox_be/**/*
!pos_enterprise
!pos_enterprise/**/*
!pos_hr_mobile
!pos_hr_mobile/**/*
!pos_iot
!pos_iot/**/*
!pos_iot_six
!pos_iot_six/**/*
!pos_l10n_se
!pos_l10n_se/**/*
!pos_online_payment_self_order_preparation_display
!pos_online_payment_self_order_preparation_display/**/*
!pos_order_tracking_display
!pos_order_tracking_display/**/*
!pos_preparation_display
!pos_preparation_display/**/*
!pos_restaurant_appointment
!pos_restaurant_appointment/**/*
!pos_restaurant_preparation_display
!pos_restaurant_preparation_display/**/*
!pos_sale_stock_renting
!pos_sale_stock_renting/**/*
!pos_self_order_preparation_display
!pos_self_order_preparation_display/**/*
!pos_settle_due
!pos_settle_due/**/*
!whatsapp_pos
!whatsapp_pos/**/*
# Whitelist misc enterprise modules
!sign
!sign/**
!sign_itsme
!sign_itsme/**

View file

@ -2,47 +2,66 @@
"extends": ["eslint:recommended", "plugin:prettier/recommended"],
"parserOptions": {
"sourceType": "module",
"ecmaVersion": 2019
"ecmaVersion": 2022
},
"env": {
"browser": true,
"es2017": true,
"es2022": true,
"qunit": true
},
"rules": {
"prettier/prettier": "error",
"prettier/prettier": ["error", {
"tabWidth": 4,
"semi": true,
"singleQuote": false,
"printWidth": 100,
"endOfLine": "auto"
}],
"no-undef": "error",
"no-restricted-globals": ["error", "event", "self"],
"no-const-assign": ["error"],
"no-debugger": ["error"],
"no-dupe-class-members": ["error"],
"no-dupe-keys": ["error"],
"no-dupe-args": ["error"],
"no-dupe-else-if": ["error"],
"no-unsafe-negation": ["error"],
"no-duplicate-imports": ["error"],
"valid-typeof": ["error"],
"no-unused-vars": ["error", { "vars": "all", "args": "none", "ignoreRestSiblings": false, "caughtErrors": "all", "caughtErrorsIgnorePattern": "^_" }],
"no-unused-vars": ["error", { "vars": "all", "args": "none", "ignoreRestSiblings": false, "caughtErrors": "all" }],
"curly": ["error", "all"],
"no-restricted-syntax": ["error", "PrivateIdentifier"],
"prefer-const": ["error", {
"destructuring": "all",
"ignoreReadBeforeAssign": true
}]
},
"globals": {
"owl": "readonly",
"odoo": "readonly",
"$": "readonly",
"jQuery": "readonly",
"_": "readonly",
"Chart": "readonly",
"fuzzy": "readonly",
"QWeb2": "readonly",
"Popover": "readonly",
"StackTrace": "readonly",
"QUnit": "readonly",
"luxon": "readonly",
"moment": "readonly",
"py": "readonly",
"FullCalendar": "readonly",
"ClipboardJS": "readonly",
"globalThis": "readonly"
"globalThis": "readonly",
"ScrollSpy": "readonly",
"module": "readonly",
"chai": "readonly",
"describe": "readonly",
"it": "readonly",
"mocha": "readonly",
"DOMPurify": "readonly",
"Alert": "readonly",
"Collapse": "readonly",
"Dropdown": "readonly",
"Modal": "readonly",
"Offcanvas": "readonly",
"Popover": "readonly",
"Tooltip": "readonly"
}
}

View file

@ -0,0 +1,101 @@
{
"compilerOptions": {
"moduleResolution": "node",
"baseUrl": ".",
"target": "ES2022",
"noEmit": true,
"disableSizeLimit": true,
"typeRoots": [
"addons/mail/static/src/js/tooling/types",
"addons/web/tooling/types"
],
"paths": {
"@web/*": ["addons/web/static/src/*"],
"@web_enterprise/*": ["web_enterprise/static/src/*"],
"@web_unsplash/*": ["addons/web_unsplash/static/src/*"],
"@web_editor/*": ["addons/web_editor/static/src/*"],
"@web_tour/*": ["addons/web_tour/static/src/*"],
"@web_gantt/*": ["web_gantt/static/src/*"],
"@web_cohort/*": ["web_cohort/static/src/*"],
"@web_map/*": ["web_map/static/src/*"],
"@web_mobile/*": ["web_mobile/static/src/*"],
"@web_grid/*": ["web_grid/static/src/*"],
"@web_studio/*": ["web_studio/static/src/*"],
"@bus/*": ["addons/bus/static/src/*"],
"@mail/*": ["addons/mail/static/src/*"],
"@im_livechat/*": ["addons/im_livechat/static/src/*"],
"@whatsapp/*": ["addons/whatsapp/static/src/*"],
"@point_of_sale/*": ["addons/point_of_sale/static/src/*"],
"@hw_posbox_homepage/*": ["addons/hw_posbox_homepage/static/src/*"],
"@l10n_ar_pos/*": ["addons/l10n_ar_pos/static/src/*"],
"@l10n_co_pos/*": ["addons/l10n_co_pos/static/src/*"],
"@l10n_es_pos/*": ["addons/l10n_es_pos/static/src/*"],
"@l10n_fr_pos_cert/*": ["addons/l10n_fr_pos_cert/static/src/*"],
"@l10n_gcc_pos/*": ["addons/l10n_gcc_pos/static/src/*"],
"@l10n_in_pos/*": ["addons/l10n_in_pos/static/src/*"],
"@l10n_sa_pos/*": ["addons/l10n_sa_pos/static/src/*"],
"@pos_adyen/*": ["addons/pos_adyen/static/src/*"],
"@pos_discount/*": ["addons/pos_discount/static/src/*"],
"@pos_epson_printer/*": ["addons/pos_epson_printer/static/src/*"],
"@pos_hr/*": ["addons/pos_hr/static/src/*"],
"@pos_hr_restaurant/*": ["addons/pos_hr_restaurant/static/src/*"],
"@pos_loyalty/*": ["addons/pos_loyalty/static/src/*"],
"@pos_mercury/*": ["addons/pos_mercury/static/src/*"],
"@pos_mrp/*": ["addons/pos_mrp/static/src/*"],
"@pos_online_payment/*": ["addons/pos_online_payment/static/src/*"],
"@pos_online_payment_self_order/*": ["addons/pos_online_payment_self_order/static/src/*"],
"@pos_paytm/*": ["addons/pos_paytm/static/src/*"],
"@pos_restaurant/*": ["addons/pos_restaurant/static/src/*"],
"@pos_restaurant_adyen/*": ["addons/pos_restaurant_adyen/static/src/*"],
"@pos_restaurant_stripe/*": ["addons/pos_restaurant_stripe/static/src/*"],
"@pos_sale/*": ["addons/pos_sale/static/src/*"],
"@pos_sale_loyalty/*": ["addons/pos_sale_loyalty/static/src/*"],
"@pos_sale_margin/*": ["addons/pos_sale_margin/static/src/*"],
"@pos_sale_product_configurator/*": ["addons/pos_sale_product_configurator/static/src/*"],
"@pos_self_order/*": ["addons/pos_self_order/static/src/*"],
"@pos_self_order_adyen/*": ["addons/pos_self_order_adyen/static/src/*"],
"@pos_self_order_epson_printer/*": ["addons/pos_self_order_epson_printer/static/src/*"],
"@pos_self_order_sale/*": ["addons/pos_self_order_sale/static/src/*"],
"@pos_self_order_stripe/*": ["addons/pos_self_order_stripe/static/src/*"],
"@pos_six/*": ["addons/pos_six/static/src/*"],
"@pos_stripe/*": ["addons/pos_stripe/static/src/*"],
"@spreadsheet_dashboard_pos_hr/*": ["addons/spreadsheet_dashboard_pos_hr/static/src/*"],
"@l10n_cl_edi_pos/*": ["l10n_cl_edi_pos/static/src/*"],
"@l10n_de_pos_cert/*": ["l10n_de_pos_cert/static/src/*"],
"@l10n_de_pos_res_cert/*": ["l10n_de_pos_res_cert/static/src/*"],
"@l10n_in_reports_gstr_pos/*": ["l10n_in_reports_gstr_pos/static/src/*"],
"@l10n_mx_edi_pos/*": ["l10n_mx_edi_pos/static/src/*"],
"@l10n_pl_reports_pos_jpk/*": ["l10n_pl_reports_pos_jpk/static/src/*"],
"@pos_account_reports/*": ["pos_account_reports/static/src/*"],
"@pos_blackbox_be/*": ["pos_blackbox_be/static/src/*"],
"@pos_enterprise/*": ["pos_enterprise/static/src/*"],
"@pos_hr_mobile/*": ["pos_hr_mobile/static/src/*"],
"@pos_iot/*": ["pos_iot/static/src/*"],
"@pos_iot_six/*": ["pos_iot_six/static/src/*"],
"@pos_l10n_se/*": ["pos_l10n_se/static/src/*"],
"@pos_online_payment_self_order_preparation_display/*": ["pos_online_payment_self_order_preparation_display/static/src/*"],
"@pos_order_tracking_display/*": ["pos_order_tracking_display/static/src/*"],
"@pos_preparation_display/*": ["pos_preparation_display/static/src/*"],
"@pos_restaurant_appointment/*": ["pos_restaurant_appointment/static/src/*"],
"@pos_restaurant_preparation_display/*": ["pos_restaurant_preparation_display/static/src/*"],
"@pos_sale_stock_renting/*": ["pos_sale_stock_renting/static/src/*"],
"@pos_self_order_iot/*": ["pos_self_order_iot/static/src/*"],
"@pos_self_order_preparation_display/*": ["pos_self_order_preparation_display/static/src/*"],
"@pos_settle_due/*": ["pos_settle_due/static/src/*"],
"@whatsapp_pos/*": ["whatsapp_pos/static/src/*"],
"@test_mail/*": ["addons/test_mail/static/src/*"]
}
},
"include": ["**/*.js", "**/*.ts"],
"exclude": [
"node_modules",
"setup",
"doc",
"**/lib",
"**/l10n*",
"addons/spreadsheet/static/src/o_spreadsheet/o_spreadsheet.js"
]
}

View file

@ -1,25 +1,34 @@
{
"name": "odoo-js-config",
"version": "0.0.1",
"version": "1.0.0",
"description": "JS Config for better DX in javascript",
"scripts": {
"format-web": "prettier-eslint --write 'addons/web/static/src/**/*.js' 'addons/web/static/tests/**/*.js' 'addons/web/doc/**/*.md'",
"format-all": "eslint --fix '**/*.js'",
"lint-all": "eslint '**/*.js'",
"lint-web": "eslint '**/web/**/*.js'",
"format-staged": "lint-staged",
"lint-web": "prettier-eslint --list-different 'addons/web/static/src/**/*.js' 'addons/web/static/tests/**/*.js' 'addons/web/doc/**/*.md'",
"format-all": "prettier-eslint --write '**/*.js' '**/*.md'"
"lint-diff": "echo '{\"extends\": [\"plugin:diff/diff\"]}' | eslint --resolve-plugins-relative-to . -c /dev/stdin '**/*.js'",
"format-diff": "echo '{\"extends\": [\"plugin:diff/diff\"]}' | eslint --fix --resolve-plugins-relative-to . -c /dev/stdin '**/*.js'"
},
"devDependencies": {
"eslint": "^7.25.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.0",
"lint-staged": "^10.5.4",
"prettier": "2.2.1",
"prettier-eslint-cli": "^5.0.1"
"eslint": "^8.27.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-diff": "^2.0.1",
"eslint-plugin-prettier": "^4.2.1",
"lint-staged": "^13.0.3",
"prettier": "^2.7.1",
"@types/jquery": "^3.5.14",
"@types/luxon": "^3.1.0",
"@types/qunit": "^2.19.3",
"@odoo/o-spreadsheet": "alpha",
"@odoo/owl": "^2.0.1"
},
"lint-staged": {
"*.{js,md}": [
"prettier-eslint --write",
"eslint"
"*.js": [
"eslint --fix"
]
},
"engines": {
"node": ">= 16.11.0"
}
}

View file

@ -1,153 +0,0 @@
# Ignore everything
*
# Whitelist web and board
!addons
addons/*
!addons/web
!addons/web/**/*
!addons/board
!addons/board/**/*
# Whitelist web_enterprise
!web_enterprise
!web_enterprise/**/*
# Whitelist web_studio
!web_studio
!web_studio/**/*
# BlackList libs
addons/web/static/lib
# Ignore everything in web legacy but the top level (adapters)
addons/web/static/src/legacy/**/*
!addons/web/static/src/legacy
!addons/web/static/src/legacy/*.js
# Ignore everything in web_enterprise legacy but the top level (adapters)
web_enterprise/static/src/legacy/**/*
!web_enterprise/static/src/legacy
!web_enterprise/static/src/legacy/*.js
# Ignore everything in web_studio legacy but the top level (adapters)
web_studio/static/src/legacy/**/*
!web_studio/static/src/legacy
!web_studio/static/src/legacy/*.js
# Ignore all legacy related tests
addons/web/static/tests/**/legacy/*
web_enterprise/static/tests/**/legacy/*
web_studio/static/tests/**/legacy/*
# base_import
# whitelist new code
!addons/base_import
!addons/base_import/**/*
# blacklist legacy
addons/base_import/static/src/legacy/**/*
# Whitelist web_kanban_gauge
!addons/web_kanban_gauge
!addons/web_kanban_gauge/**/*
# web_dashboard
# whitelist new code
!web_dashboard
!web_dashboard/**/*
# blacklist legacy
web_dashboard/static/src/legacy/**/*
web_dashboard/static/tests/legacy/**/*
# web_cohort
# whitelist new code
!web_cohort
!web_cohort/**/*
# blacklist legacy
web_cohort/static/src/legacy/**/*
web_cohort/static/tests/legacy/**/*
# web_map
# whitelist new code
!web_map
!web_map/**/*
# blacklist legacy
web_map/static/src/legacy/**/*
web_map/static/tests/legacy/**/*
# whitelist base_setup
!addons/base_setup
!addons/base_setup/**/*
# whitelist purchase
!addons/purchase
!addons/purchase/**/*
# Whitelist documents_spreadsheet
!documents_spreadsheet
!documents_spreadsheet/**/*
# Whitelist spreadsheet
!addons/spreadsheet
!addons/spreadsheet/**/*
# blacklist o-spreadsheet lib
addons/spreadsheet/static/src/o_spreadsheet/o_spreadsheet.js
# Whitelist spreadsheet_edition
!spreadsheet_edition
!spreadsheet_edition/**/*
# Whitelist spreadsheet_edition
!spreadsheet_edition
!spreadsheet_edition/**/*
# Whitelist spreadsheet_account
!addons/spreadsheet_account
!addons/spreadsheet_account/**/*
# Whitelist spreadsheet_dashboard
!addons/spreadsheet_dashboard
!addons/spreadsheet_dashboard/**/*
# Whitelist spreadsheet_dashboard_account
!addons/spreadsheet_dashboard_account
!addons/spreadsheet_dashboard_account/**/*
# Whitelist spreadsheet_dashboard_hr_expense
!addons/spreadsheet_dashboard_hr_expense
!addons/spreadsheet_dashboard_hr_expense/**/*
# Whitelist spreadsheet_dashboard_pos_hr
!addons/spreadsheet_dashboard_pos_hr
!addons/spreadsheet_dashboard_pos_hr/**/*
# Whitelist spreadsheet_dashboard_sale
!addons/spreadsheet_dashboard_sale
!addons/spreadsheet_dashboard_sale/**/*
# Whitelist spreadsheet_dashboard_event_sale
!addons/spreadsheet_dashboard_event_sale
!addons/spreadsheet_dashboard_event_sale/**/*
# Whitelist spreadsheet_dashboard_hr_contract
!spreadsheet_dashboard_hr_contract
!spreadsheet_dashboard_hr_contract/**/*
# Whitelist spreadsheet_dashboard_crm
!spreadsheet_dashboard_crm
!spreadsheet_dashboard_crm/**/*
# Whitelist spreadsheet_dashboard_edition
!spreadsheet_dashboard_edition
!spreadsheet_dashboard_edition/**/*
# Whitelist spreadsheet_dashboard_documents
!spreadsheet_dashboard_documents
!spreadsheet_dashboard_documents/**/*
!addons/auth_password_policy
!addons/auth_password_policy/**/*

View file

@ -1,8 +0,0 @@
{
"tabWidth": 4,
"semi": true,
"singleQuote": false,
"printWidth": 100,
"endOfLine": "auto"
}

View file

@ -2,15 +2,19 @@
community=$(cd -- "$(dirname "$0")" &> /dev/null && cd ../../.. && pwd)
disableInDir () {
cd "$1"
cd "$1" || exit
git config --unset core.hooksPath
rm .eslintignore
rm .prettierignore
rm .eslintrc.json
rm .prettierrc.json
rm jsconfig.json
rm package.json
rm package-lock.json
rm -r node_modules
# to support old versions
rm -f .prettierignore
rm -r .prettierrc.json
cd - &> /dev/null
}
@ -19,7 +23,7 @@ if [[ $willingToDeleteToolingInEnterprise != "n" ]]
then
read -p "What is the relative path from community to enterprise ? (../enterprise)" pathToEnterprise
pathToEnterprise=${pathToEnterprise:-../enterprise}
pathToEnterprise=$(realpath $community/$pathToEnterprise)
pathToEnterprise=$(realpath "$community/$pathToEnterprise")
fi
disableInDir "$community"

View file

@ -8,13 +8,12 @@ if [[ $testRealPath == "" ]]; then
fi
enableInDir () {
cd $1
cd "$1" || exit
hooksPath="$(realpath --relative-to=. "$tooling/hooks")"
git config core.hooksPath "$hooksPath"
cp "$tooling/_eslintignore" .eslintignore
cp "$tooling/_prettierignore" .prettierignore
cp "$tooling/_eslintrc.json" .eslintrc.json
cp "$tooling/_prettierrc.json" .prettierrc.json
cp "$tooling/_jsconfig.json" jsconfig.json
cp "$tooling/_package.json" package.json
if [[ $2 == "copy" ]]; then
# -i is not supported on mac
@ -34,7 +33,7 @@ if [[ $willingToInstallToolingInEnterprise != "n" ]]
then
read -p "What is the relative path from community to enterprise ? (../enterprise)" pathToEnterprise
pathToEnterprise=${pathToEnterprise:-../enterprise}
pathToEnterprise=$(realpath $community/$pathToEnterprise)
pathToEnterprise=$(realpath "$community/$pathToEnterprise")
pathFromEnterpriseToCommunity=$(realpath --relative-to="$pathToEnterprise" "$community")
fi
@ -47,6 +46,6 @@ fi
echo ""
echo "JS tooling have been added to the roots"
echo "Make sure to refresh the eslint service and configure your IDE so it uses the config files"
echo "Make sure to refresh the eslint and typescript service and configure your IDE so it uses the config files"
echo 'For VSCode, look inside your .vscode/settings.json file ("editor.defaultFormatter": "dbaeumer.vscode-eslint")'
echo ""

View file

@ -1,15 +1,12 @@
#!/bin/bash
# run tooling only on branches that start with master to avoid linting noise in stable
if [[ $(git branch --show-current) == master* || $(git branch --show-current) == 16.0* ]]; then
if [[ $(git branch --show-current) == master* || $(git branch --show-current) == 16.0* || $(git branch --show-current) == 17.0* ]]; then
tooling_dir=$(cd -- "$(dirname "$0")" &> /dev/null && cd .. && pwd)
if ! cmp -s -- "$tooling_dir/_package.json" package.json; then
echo "Your package.json is out of date, reloading the tooling using the reload script"
"$tooling_dir/reload.sh"
elif
! cmp -s -- "$tooling_dir/_eslintignore" .eslintignore ||
! cmp -s -- "$tooling_dir/_prettierignore" .prettierignore ||
! cmp -s -- "$tooling_dir/_eslintrc.json" .eslintrc.json ||
! cmp -s -- "$tooling_dir/_prettierrc.json" .prettierrc.json
! cmp -s -- "$tooling_dir/_eslintrc.json" .eslintrc.json
then
echo "Some of your eslint/prettier config files are out of date, refreshing them using the refresh script"
"$tooling_dir/refresh.sh"

View file

@ -8,11 +8,10 @@ if [[ $testRealPath == "" ]]; then
fi
refreshInDir () {
cd $1
cd "$1" || exit
cp "$tooling/_eslintignore" .eslintignore
cp "$tooling/_prettierignore" .prettierignore
cp "$tooling/_eslintrc.json" .eslintrc.json
cp "$tooling/_prettierrc.json" .prettierrc.json
cp "$tooling/_jsconfig.json" jsconfig.json
cp "$tooling/_package.json" package.json
cd - &> /dev/null
}
@ -21,7 +20,7 @@ read -p "Refresh tooling in enterprise ? [y, n]" doEnterprise
if [[ $doEnterprise != "n" ]]; then
read -p "What is the relative path from community to enterprise ? (../enterprise)" pathToEnterprise
pathToEnterprise=${pathToEnterprise:-../enterprise}
pathToEnterprise=$(realpath $community/$pathToEnterprise)
pathToEnterprise=$(realpath "$community/$pathToEnterprise")
fi
refreshInDir "$community"
@ -33,7 +32,7 @@ fi
echo ""
echo "The JS tooling config files have been refreshed"
echo "Make sure to refresh the eslint service and configure your IDE so it uses the config files"
echo "Make sure to refresh the eslint and typescript service and configure your IDE so it uses the config files"
echo 'For VSCode, look inside your .vscode/settings.json file ("editor.defaultFormatter": "dbaeumer.vscode-eslint")'
echo "If you still have issues, try doing a full reload instead which will reinstall the node modules"
echo ""

View file

@ -1,3 +1,15 @@
declare const owl: typeof import("../../static/lib/owl/owl.js");
declare const luxon: typeof import("../../static/lib/luxon/luxon.js");
// We do not define owl as the jsconfig paths handles that. The goto definitions then show the js code in owl.js
// If we were using the d.ts system, we would have a goto defintion to the d.ts file and not the source code.
declare const luxon: typeof import("luxon");
declare module "@odoo/owl" {
export * from "@odoo/owl/dist/types/owl"
}
// declare const Qunit: typeof import("qunit"); => Because we add methods to QUnit, we define our own..
// @ts-ignore
declare const QUnit: QUnit;
// @ts-ignore
declare const $: typeof import("jquery");

View file

@ -1,6 +1,6 @@
// Type definitions for QUnit v2.9.2
const { Component } = owl;
import { Component } from "@odoo/owl";
// Project: http://qunitjs.com/
// Definitions by: James Bracy <https://github.com/waratuman>

View file

@ -0,0 +1,45 @@
declare module "services" {
import { actionService } from "@web/webclient/actions/action_service";
import { commandService } from "@web/core/commands/command_service";
import { companyService } from "@web/webclient/company_service";
import { datetimePickerService } from "@web/core/datetime/datetimepicker_service";
import { dialogService } from "@web/core/dialog/dialog_service";
import { effectService } from "@web/core/effects/effect_service";
import { fieldService } from "@web/core/field_service";
import { hotkeyService } from "@web/core/hotkeys/hotkey_service";
import { httpService } from "@web/core/network/http_service";
import { menuService } from "@web/webclient/menus/menu_service";
import { nameService } from "@web/core/name_service";
import { notificationService } from "@web/core/notifications/notification_service";
import { ormService } from "@web/core/orm_service";
import { popoverService } from "@web/core/popover/popover_service";
import { routerService } from "@web/core/browser/router_service";
import { rpcService } from "@web/core/network/rpc_service";
import { titleService } from "@web/core/browser/title_service";
import { uiService } from "@web/core/ui/ui_service";
import { userService } from "@web/core/user_service";
import { viewService } from "@web/views/view_service";
export interface Services {
action: ReturnType<typeof actionService.start>;
command: ReturnType<typeof commandService.start>;
company: ReturnType<typeof companyService.start>;
datetime_picker: ReturnType<typeof datetimePickerService.start>;
dialog: ReturnType<typeof dialogService.start>;
effect: ReturnType<typeof effectService.start>;
field: ReturnType<typeof fieldService.start>;
hotkey: ReturnType<typeof hotkeyService.start>;
http: ReturnType<typeof httpService.start>;
menu: Awaited<ReturnType<typeof menuService.start>>;
name: ReturnType<typeof nameService.start>;
notification: ReturnType<typeof notificationService.start>;
orm: ReturnType<typeof ormService.start>;
popover: ReturnType<typeof popoverService.start>;
router: ReturnType<typeof routerService.start>;
rpc: ReturnType<typeof rpcService.start>;
title: ReturnType<typeof titleService.start>;
ui: ReturnType<typeof uiService.start>;
user: ReturnType<typeof userService.start>;
view: ReturnType<typeof viewService.start>;
}
}