@codyswann/lisa 1.50.1 → 1.50.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/configs/eslint/expo.d.ts.map +1 -1
  2. package/dist/configs/eslint/expo.js +6 -3
  3. package/dist/configs/eslint/expo.js.map +1 -1
  4. package/dist/configs/eslint/typescript.d.ts.map +1 -1
  5. package/dist/configs/eslint/typescript.js +5 -2
  6. package/dist/configs/eslint/typescript.js.map +1 -1
  7. package/eslint-plugin-code-organization/README.md +149 -0
  8. package/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +473 -0
  9. package/eslint-plugin-code-organization/index.js +28 -0
  10. package/eslint-plugin-code-organization/package.json +10 -0
  11. package/eslint-plugin-code-organization/rules/enforce-statement-order.js +162 -0
  12. package/eslint-plugin-component-structure/README.md +234 -0
  13. package/eslint-plugin-component-structure/__tests__/plugin-index.test.js +89 -0
  14. package/eslint-plugin-component-structure/__tests__/require-memo-in-view.test.js +201 -0
  15. package/eslint-plugin-component-structure/__tests__/single-component-per-file.test.js +294 -0
  16. package/eslint-plugin-component-structure/index.js +37 -0
  17. package/eslint-plugin-component-structure/package.json +10 -0
  18. package/eslint-plugin-component-structure/rules/enforce-component-structure.js +235 -0
  19. package/eslint-plugin-component-structure/rules/no-return-in-view.js +96 -0
  20. package/eslint-plugin-component-structure/rules/require-memo-in-view.js +183 -0
  21. package/eslint-plugin-component-structure/rules/single-component-per-file.js +243 -0
  22. package/eslint-plugin-ui-standards/README.md +192 -0
  23. package/eslint-plugin-ui-standards/index.js +31 -0
  24. package/eslint-plugin-ui-standards/package.json +10 -0
  25. package/eslint-plugin-ui-standards/rules/no-classname-outside-ui.js +56 -0
  26. package/eslint-plugin-ui-standards/rules/no-direct-rn-imports.js +60 -0
  27. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../../src/configs/eslint/expo.ts"],"names":[],"mappings":"AAqBA,OAAO,EAEL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EAGtB,cAAc,EAIf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,CAAC;AAWF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,eAAe,EACf,cAA+B,EAC/B,UAA8B,GAC/B,EAAE;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACvC,GAAG,OAAO,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CA6PnC"}
1
+ {"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../../src/configs/eslint/expo.ts"],"names":[],"mappings":"AAsBA,OAAO,EAEL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EAGtB,cAAc,EAIf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,CAAC;AAwBF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,eAAe,EACf,cAA+B,EAC/B,UAA8B,GAC/B,EAAE;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACvC,GAAG,OAAO,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CA6PnC"}
@@ -17,14 +17,17 @@
17
17
  import react from "eslint-plugin-react";
18
18
  import reactCompiler from "eslint-plugin-react-compiler";
19
19
  import { createRequire } from "module";
20
+ import { fileURLToPath } from "url";
20
21
  // Import TypeScript config and utilities
21
22
  import { codeOrganization, defaultIgnores, defaultThresholds, getBaseConfigs, getBaseLanguageOptions, getJsFilesOverride, getSharedFilesOverride, getSharedRules, getTestFilesOverride, getTsFilesOverride, getTsTestFilesOverride, } from "./typescript.js";
22
23
  // Re-export for downstream configs
23
24
  export { defaultIgnores, defaultThresholds, getBaseConfigs, getBaseLanguageOptions, getSharedRules, };
24
- // Custom plugins (CommonJS - use createRequire for plugins without ESM type declarations)
25
+ // Custom plugins loaded via relative path so they are resolved from the Lisa
26
+ // package itself (eslint-plugin-* dirs are included in the published files array)
27
+ // rather than requiring separate npm packages that bun must resolve from the registry.
25
28
  const require = createRequire(import.meta.url);
26
- const componentStructure = require("@codyswann/eslint-plugin-component-structure");
27
- const uiStandards = require("@codyswann/eslint-plugin-ui-standards");
29
+ const componentStructure = require(fileURLToPath(new URL("../../../eslint-plugin-component-structure/index.js", import.meta.url)));
30
+ const uiStandards = require(fileURLToPath(new URL("../../../eslint-plugin-ui-standards/index.js", import.meta.url)));
28
31
  const expoConfig = require("eslint-config-expo/flat");
29
32
  const reactPerf = require("eslint-plugin-react-perf");
30
33
  const jsxA11y = require("eslint-plugin-jsx-a11y");
@@ -1 +1 @@
1
- {"version":3,"file":"expo.js","sourceRoot":"","sources":["../../../src/configs/eslint/expo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expo.js","sourceRoot":"","sources":["../../../src/configs/eslint/expo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/configs/eslint/typescript.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,CAAC;AAIF,QAAA,MAAM,gBAAgB,KAAwD,CAAC;AAG/E,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,eAAe,EACf,cAA+B,EAC/B,UAA8B,GAC/B,EAAE;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACvC,GAAG,OAAO,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAgEnC"}
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/configs/eslint/typescript.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,CAAC;AAMF,QAAA,MAAM,gBAAgB,KAOrB,CAAC;AAGF,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,eAAe,EACf,cAA+B,EAC/B,UAA8B,GAC/B,EAAE;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACvC,GAAG,OAAO,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAgEnC"}
@@ -8,13 +8,16 @@
8
8
  * @module configs/eslint/typescript
9
9
  */
10
10
  import { createRequire } from "module";
11
+ import { fileURLToPath } from "url";
11
12
  // Import shared base configuration
12
13
  import { defaultIgnores, defaultThresholds, getBaseConfigs, getBaseLanguageOptions, getJsFilesOverride, getSharedFilesOverride, getSharedRules, getTestFilesOverride, getTsFilesOverride, getTsTestFilesOverride, } from "./base.js";
13
14
  // Re-export base utilities for stack-specific configs to use
14
15
  export { defaultIgnores, defaultThresholds, getBaseConfigs, getBaseLanguageOptions, getJsFilesOverride, getSharedFilesOverride, getSharedRules, getTestFilesOverride, getTsFilesOverride, getTsTestFilesOverride, };
15
- // Custom plugins (CommonJS - use createRequire)
16
+ // Custom plugins loaded via relative path so they are resolved from the Lisa
17
+ // package itself (eslint-plugin-* dirs are included in the published files array)
18
+ // rather than requiring separate npm packages that bun must resolve from the registry.
16
19
  const require = createRequire(import.meta.url);
17
- const codeOrganization = require("@codyswann/eslint-plugin-code-organization");
20
+ const codeOrganization = require(fileURLToPath(new URL("../../../eslint-plugin-code-organization/index.js", import.meta.url)));
18
21
  // Re-export plugin for stack-specific configs
19
22
  export { codeOrganization };
20
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/configs/eslint/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,mCAAmC;AACnC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAEnB,6DAA6D;AAC7D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,CAAC;AAEF,gDAAgD;AAChD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,gBAAgB,GAAG,OAAO,CAAC,4CAA4C,CAAC,CAAC;AAE/E,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,eAAe,EACf,cAAc,GAAG,cAAc,EAC/B,UAAU,GAAG,iBAAiB,GAK/B;IACC,OAAO;QACL,iBAAiB;QACjB;YACE,OAAO,EAAE,cAAc;SACxB;QAED,yCAAyC;QACzC,GAAG,cAAc,EAAE;QAEnB,mCAAmC;QACnC;YACE,eAAe,EAAE,sBAAsB,EAAE;YACzC,OAAO,EAAE;gBACP,mBAAmB,EAAE,gBAAgB;aACtC;YACD,KAAK,EAAE;gBACL,yBAAyB;gBACzB,GAAG,cAAc,CAAC,UAAU,CAAC;gBAE7B,oBAAoB;gBACpB,2CAA2C,EAAE,OAAO;gBAEpD,gEAAgE;gBAChE,6EAA6E;gBAC7E,sCAAsC;gBACtC,sBAAsB,EAAE;oBACtB,OAAO;oBACP;wBACE,QAAQ,EACN,8DAA8D;wBAChE,OAAO,EACL,kKAAkK;qBACrK;iBACF;gBAED,sFAAsF;gBACtF,uBAAuB,EAAE,KAAK;aAC/B;SACF;QAED,4BAA4B;QAC5B,kBAAkB,EAAE;QAEpB,8BAA8B;QAC9B,sBAAsB,EAAE;QAExB,4BAA4B;QAC5B,oBAAoB,EAAE;QAEtB,iDAAiD;QACjD,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;QAEhD,qFAAqF;QACrF,sBAAsB,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAExD,4DAA4D;QAC5D;YACE,KAAK,EAAE,CAAC,cAAc,CAAC;YACvB,KAAK,EAAE;gBACL,sBAAsB,EAAE,KAAK;aAC9B;SACF;KAC6C,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/configs/eslint/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,mCAAmC;AACnC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAEnB,6DAA6D;AAC7D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,CAAC;AAEF,+EAA+E;AAC/E,kFAAkF;AAClF,uFAAuF;AACvF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,gBAAgB,GAAG,OAAO,CAC9B,aAAa,CACX,IAAI,GAAG,CACL,mDAAmD,EACnD,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CACF,CACF,CAAC;AAEF,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,eAAe,EACf,cAAc,GAAG,cAAc,EAC/B,UAAU,GAAG,iBAAiB,GAK/B;IACC,OAAO;QACL,iBAAiB;QACjB;YACE,OAAO,EAAE,cAAc;SACxB;QAED,yCAAyC;QACzC,GAAG,cAAc,EAAE;QAEnB,mCAAmC;QACnC;YACE,eAAe,EAAE,sBAAsB,EAAE;YACzC,OAAO,EAAE;gBACP,mBAAmB,EAAE,gBAAgB;aACtC;YACD,KAAK,EAAE;gBACL,yBAAyB;gBACzB,GAAG,cAAc,CAAC,UAAU,CAAC;gBAE7B,oBAAoB;gBACpB,2CAA2C,EAAE,OAAO;gBAEpD,gEAAgE;gBAChE,6EAA6E;gBAC7E,sCAAsC;gBACtC,sBAAsB,EAAE;oBACtB,OAAO;oBACP;wBACE,QAAQ,EACN,8DAA8D;wBAChE,OAAO,EACL,kKAAkK;qBACrK;iBACF;gBAED,sFAAsF;gBACtF,uBAAuB,EAAE,KAAK;aAC/B;SACF;QAED,4BAA4B;QAC5B,kBAAkB,EAAE;QAEpB,8BAA8B;QAC9B,sBAAsB,EAAE;QAExB,4BAA4B;QAC5B,oBAAoB,EAAE;QAEtB,iDAAiD;QACjD,kBAAkB,CAAC,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;QAEhD,qFAAqF;QACrF,sBAAsB,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAExD,4DAA4D;QAC5D;YACE,KAAK,EAAE,CAAC,cAAc,CAAC;YACvB,KAAK,EAAE;gBACL,sBAAsB,EAAE,KAAK;aAC9B;SACF;KAC6C,CAAC;AACnD,CAAC"}
@@ -0,0 +1,149 @@
1
+ # eslint-plugin-code-organization
2
+
3
+ ESLint plugin to enforce code organization standards for the PropSwap frontend application.
4
+
5
+ ## Rules
6
+
7
+ ### `enforce-statement-order`
8
+
9
+ Enforces the standard statement order in all functions:
10
+
11
+ 1. **Definitions** - Variable declarations (`const`, `let`, `var`) and function declarations
12
+ 2. **Side effects** - Expression statements that are function calls
13
+ 3. **Return statement** - Final return
14
+
15
+ This rule applies to all functions: React components, hooks, utilities, and plain JavaScript functions.
16
+
17
+ **Examples:**
18
+
19
+ ❌ Incorrect - side effect before definition:
20
+
21
+ ```javascript
22
+ function process() {
23
+ initialize(); // Side effect
24
+ const config = getConfig(); // Definition after side effect - WRONG
25
+ return config;
26
+ }
27
+ ```
28
+
29
+ ❌ Incorrect - definition after side effect (React):
30
+
31
+ ```typescript
32
+ const useExample = () => {
33
+ useEffect(() => {}, []); // Side effect
34
+
35
+ const data = useMemo(() => [], []); // Definition after side effect - WRONG
36
+
37
+ return data;
38
+ };
39
+ ```
40
+
41
+ ✅ Correct - Proper order:
42
+
43
+ ```javascript
44
+ function process() {
45
+ // 1. Definitions
46
+ const config = getConfig();
47
+ const options = { debug: true };
48
+
49
+ // 2. Side effects
50
+ initialize();
51
+ logger.info("starting");
52
+
53
+ // 3. Return
54
+ return config;
55
+ }
56
+ ```
57
+
58
+ ✅ Correct - React hook with proper order:
59
+
60
+ ```typescript
61
+ const useExample = () => {
62
+ // 1. Definitions
63
+ const [state, setState] = useState(null);
64
+ const data = useMemo(() => [], []);
65
+ const handleClick = useCallback(() => {}, []);
66
+
67
+ // 2. Side effects
68
+ useEffect(() => {}, []);
69
+
70
+ // 3. Return
71
+ return data;
72
+ };
73
+ ```
74
+
75
+ ## Installation
76
+
77
+ This plugin is installed locally as a file dependency:
78
+
79
+ ```json
80
+ {
81
+ "devDependencies": {
82
+ "eslint-plugin-code-organization": "file:./eslint-plugin-code-organization"
83
+ }
84
+ }
85
+ ```
86
+
87
+ ## Usage
88
+
89
+ ### ESLint 9 Flat Config (Recommended)
90
+
91
+ ```javascript
92
+ // eslint.config.mjs
93
+ import codeOrganizationPlugin from './eslint-plugin-code-organization/index.js';
94
+
95
+ export default [
96
+ {
97
+ plugins: {
98
+ 'code-organization': codeOrganizationPlugin,
99
+ },
100
+ rules: {
101
+ 'code-organization/enforce-statement-order': 'error',
102
+ },
103
+ },
104
+ ];
105
+ ```
106
+
107
+ ### Legacy Config (.eslintrc.json)
108
+
109
+ ```json
110
+ {
111
+ "plugins": ["code-organization"],
112
+ "rules": {
113
+ "code-organization/enforce-statement-order": "error"
114
+ }
115
+ }
116
+ ```
117
+
118
+ ## Special Cases
119
+
120
+ ### Guard Clauses
121
+
122
+ If statements (often used for early returns/guard clauses) are intentionally excluded from this rule. They can appear anywhere in the function:
123
+
124
+ ```typescript
125
+ function processUser(userId: string) {
126
+ // Guard clause - allowed anywhere
127
+ if (!userId) {
128
+ return null;
129
+ }
130
+
131
+ const user = getUser(userId);
132
+ validateUser(user);
133
+ return user;
134
+ }
135
+ ```
136
+
137
+ ### React Hooks
138
+
139
+ For React hooks, the definitions category includes:
140
+ - `useState`, `useRef`, `useMemo`, `useCallback` (return values to variables)
141
+ - Any hook that returns a value assigned to a variable
142
+
143
+ Side effects include:
144
+ - `useEffect`, `useLayoutEffect` (no return value used)
145
+ - Any expression statement with function calls
146
+
147
+ ## Version
148
+
149
+ 1.0.0