@codyswann/lisa 4.33.4 → 4.33.5

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 (83) hide show
  1. package/dist/configs/eslint/expo.d.ts.map +1 -1
  2. package/dist/configs/eslint/expo.js +4 -7
  3. package/dist/configs/eslint/expo.js.map +1 -1
  4. package/dist/configs/eslint/view-gate.d.ts +42 -0
  5. package/dist/configs/eslint/view-gate.d.ts.map +1 -0
  6. package/dist/configs/eslint/view-gate.js +110 -0
  7. package/dist/configs/eslint/view-gate.js.map +1 -0
  8. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  9. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  10. package/dist/core/upstream-evidence-manifest.js +18 -7
  11. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  12. package/eslint-plugin-component-structure/README.md +85 -2
  13. package/eslint-plugin-component-structure/__tests__/no-hooks-in-view.test.js +229 -0
  14. package/eslint-plugin-component-structure/__tests__/no-return-in-view.test.js +185 -0
  15. package/eslint-plugin-component-structure/__tests__/plugin-index.test.js +8 -1
  16. package/eslint-plugin-component-structure/index.js +4 -1
  17. package/eslint-plugin-component-structure/lib/view-file-scope.js +62 -0
  18. package/eslint-plugin-component-structure/rules/no-hooks-in-view.js +101 -0
  19. package/eslint-plugin-component-structure/rules/no-return-in-view.js +133 -62
  20. package/expo/copy-overwrite/eslint.expo.ts +88 -1
  21. package/package.json +4 -4
  22. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  24. package/plugins/lisa-agy/plugin.json +1 -1
  25. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  27. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  28. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  34. package/plugins/lisa-expo/.codex-plugin/skills/container-view-pattern/SKILL.md +80 -24
  35. package/plugins/lisa-expo/.codex-plugin/skills/container-view-pattern/scripts/validate_component.py +166 -43
  36. package/plugins/lisa-expo/skills/container-view-pattern/SKILL.md +80 -24
  37. package/plugins/lisa-expo/skills/container-view-pattern/scripts/validate_component.py +166 -43
  38. package/plugins/lisa-expo-agy/plugin.json +1 -1
  39. package/plugins/lisa-expo-agy/skills/container-view-pattern/SKILL.md +80 -24
  40. package/plugins/lisa-expo-agy/skills/container-view-pattern/scripts/validate_component.py +166 -43
  41. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-expo-copilot/skills/container-view-pattern/SKILL.md +80 -24
  43. package/plugins/lisa-expo-copilot/skills/container-view-pattern/scripts/validate_component.py +166 -43
  44. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-expo-cursor/skills/container-view-pattern/SKILL.md +80 -24
  46. package/plugins/lisa-expo-cursor/skills/container-view-pattern/scripts/validate_component.py +166 -43
  47. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  49. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  50. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  54. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  55. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  60. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  65. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  69. package/plugins/lisa-rails-agy/plugin.json +1 -1
  70. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  74. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  75. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  79. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  80. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  82. package/plugins/src/expo/skills/container-view-pattern/SKILL.md +80 -24
  83. package/plugins/src/expo/skills/container-view-pattern/scripts/validate_component.py +166 -43
@@ -1 +1 @@
1
- {"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../../src/configs/eslint/expo.ts"],"names":[],"mappings":"AAwBA,OAAO,EAEL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EAItB,cAAc,EAIf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,CAAC;AAwCF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAe3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,OAAO,QAAQ,EAAE,MAAM,CAAC,SAAS,CAInC;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,EAC5B,eAAe,EACf,cAA+B,EAC/B,UAA8B,EAC9B,UAAe,EACf,SAAc,GACf,EAAE;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,iBAAiB,CAAC;IACtC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B,GAAG,OAAO,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAgRnC"}
1
+ {"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../../src/configs/eslint/expo.ts"],"names":[],"mappings":"AAwBA,OAAO,EAEL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EAItB,cAAc,EAIf,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,CAAC;AAwCF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAe3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,OAAO,QAAQ,EAAE,MAAM,CAAC,SAAS,CAInC;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,EAC5B,eAAe,EACf,cAA+B,EAC/B,UAA8B,EAC9B,UAAe,EACf,SAAc,GACf,EAAE;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,iBAAiB,CAAC;IACtC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B,GAAG,OAAO,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CA4QnC"}
@@ -22,6 +22,7 @@ import path from "path";
22
22
  import { fileURLToPath } from "url";
23
23
  // Import TypeScript config and utilities
24
24
  import { codeOrganization, defaultIgnores, defaultThresholds, getBaseConfigs, getBaseLanguageOptions, getJsFilesOverride, getScriptsFilesOverride, getSharedFilesOverride, getSharedRules, getTestFilesOverride, getTsFilesOverride, getTsTestFilesOverride, } from "./typescript.js";
25
+ import { getViewGateConfigs } from "./view-gate.js";
25
26
  // Re-export for downstream configs
26
27
  export { defaultIgnores, defaultThresholds, getBaseConfigs, getBaseLanguageOptions, getSharedRules, };
27
28
  // Custom plugins — loaded via relative path so they are resolved from the Lisa
@@ -325,13 +326,9 @@ export function getExpoConfig({ tsconfigRootDir, ignorePatterns = defaultIgnores
325
326
  "component-structure/single-component-per-file": "error",
326
327
  },
327
328
  },
328
- // View component rules
329
- {
330
- files: ["**/*View.tsx", "**/*View.jsx"],
331
- rules: {
332
- "component-structure/no-return-in-view": "error",
333
- },
334
- },
329
+ // View gate: no statements, no hooks. See `view-gate.ts` for why it is
330
+ // stated as those two properties and not as "Views are pure functions".
331
+ ...getViewGateConfigs(sourceRoot),
335
332
  // View memo requirement (excluding UI components)
336
333
  {
337
334
  files: ["**/*View.tsx", "**/*View.jsx"],
@@ -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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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The View half of the Container/View pattern: no statements, no hooks.
3
+ *
4
+ * Stated as those two properties rather than as "Views are pure functions",
5
+ * which is a guarantee neither rule delivers — `{Date.now()}` and
6
+ * `{Math.random() > 0.5 ? … : …}` sit happily in an expression body. The skill
7
+ * claiming an enforcement it did not have is what let a hook live in a View for
8
+ * years; the fix must not repeat the shape of the defect.
9
+ *
10
+ * Extracted from `expo.ts` so the factory stays under its own `max-lines`
11
+ * threshold, not because a second stack needs it yet.
12
+ * @module configs/eslint/view-gate
13
+ */
14
+ /**
15
+ * React's hook named exports, banned from a View's import list.
16
+ *
17
+ * An enumeration is correct HERE and nowhere else: React's hook set is fixed and
18
+ * published, and this is the import-line axis. The call-site axis
19
+ * (`component-structure/no-hooks-in-view`) matches by shape precisely because a
20
+ * project-local custom hook can never appear on a list like this one.
21
+ */
22
+ export declare const REACT_HOOK_IMPORT_NAMES: string[];
23
+ /** What a developer is told when a View reaches for a hook. */
24
+ export declare const VIEW_HOOK_IMPORT_MESSAGE = "View components must not use hooks. Move the hook into the corresponding Container and pass its result down as a prop.";
25
+ /**
26
+ * The View-scoped config blocks a stack should append.
27
+ *
28
+ * Two blocks, because they have different scopes: the statement gate applies to
29
+ * every View, while the hook gate skips the directories the Container/View
30
+ * pattern's own applicability table marks as outside it.
31
+ *
32
+ * The hook gate itself is two independent axes. `no-hooks-in-view` matches the
33
+ * CALL by shape (`use` + uppercase), so a project-local custom hook is caught
34
+ * where an enumerated name list would miss it; `no-restricted-imports` catches
35
+ * the IMPORT LINE, before a call site exists. Neither subsumes the other: a
36
+ * hook re-exported through a barrel escapes the import patterns, and an import
37
+ * with no call yet escapes the call matcher.
38
+ * @param sourceRoot - Prefix for source-relative globs, e.g. `"src/"`.
39
+ * @returns Flat-config blocks, in the order they must be appended.
40
+ */
41
+ export declare function getViewGateConfigs(sourceRoot: string): import("eslint").Linter.Config[];
42
+ //# sourceMappingURL=view-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-gate.d.ts","sourceRoot":"","sources":["../../../src/configs/eslint/view-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,UAmBnC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,wBAAwB,2HACqF,CAAC;AAE3H;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GACjB,OAAO,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CA+ClC"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * The View half of the Container/View pattern: no statements, no hooks.
3
+ *
4
+ * Stated as those two properties rather than as "Views are pure functions",
5
+ * which is a guarantee neither rule delivers — `{Date.now()}` and
6
+ * `{Math.random() > 0.5 ? … : …}` sit happily in an expression body. The skill
7
+ * claiming an enforcement it did not have is what let a hook live in a View for
8
+ * years; the fix must not repeat the shape of the defect.
9
+ *
10
+ * Extracted from `expo.ts` so the factory stays under its own `max-lines`
11
+ * threshold, not because a second stack needs it yet.
12
+ * @module configs/eslint/view-gate
13
+ */
14
+ /** The glob pair every View override is keyed on. */
15
+ const VIEW_FILES = ["**/*View.tsx", "**/*View.jsx"];
16
+ /**
17
+ * React's hook named exports, banned from a View's import list.
18
+ *
19
+ * An enumeration is correct HERE and nowhere else: React's hook set is fixed and
20
+ * published, and this is the import-line axis. The call-site axis
21
+ * (`component-structure/no-hooks-in-view`) matches by shape precisely because a
22
+ * project-local custom hook can never appear on a list like this one.
23
+ */
24
+ export const REACT_HOOK_IMPORT_NAMES = [
25
+ "useActionState",
26
+ "useCallback",
27
+ "useContext",
28
+ "useDebugValue",
29
+ "useDeferredValue",
30
+ "useEffect",
31
+ "useEffectEvent",
32
+ "useId",
33
+ "useImperativeHandle",
34
+ "useInsertionEffect",
35
+ "useLayoutEffect",
36
+ "useMemo",
37
+ "useOptimistic",
38
+ "useReducer",
39
+ "useRef",
40
+ "useState",
41
+ "useSyncExternalStore",
42
+ "useTransition",
43
+ ];
44
+ /** What a developer is told when a View reaches for a hook. */
45
+ export const VIEW_HOOK_IMPORT_MESSAGE = "View components must not use hooks. Move the hook into the corresponding Container and pass its result down as a prop.";
46
+ /**
47
+ * The View-scoped config blocks a stack should append.
48
+ *
49
+ * Two blocks, because they have different scopes: the statement gate applies to
50
+ * every View, while the hook gate skips the directories the Container/View
51
+ * pattern's own applicability table marks as outside it.
52
+ *
53
+ * The hook gate itself is two independent axes. `no-hooks-in-view` matches the
54
+ * CALL by shape (`use` + uppercase), so a project-local custom hook is caught
55
+ * where an enumerated name list would miss it; `no-restricted-imports` catches
56
+ * the IMPORT LINE, before a call site exists. Neither subsumes the other: a
57
+ * hook re-exported through a barrel escapes the import patterns, and an import
58
+ * with no call yet escapes the call matcher.
59
+ * @param sourceRoot - Prefix for source-relative globs, e.g. `"src/"`.
60
+ * @returns Flat-config blocks, in the order they must be appended.
61
+ */
62
+ export function getViewGateConfigs(sourceRoot) {
63
+ return [
64
+ {
65
+ files: VIEW_FILES,
66
+ rules: {
67
+ "component-structure/no-return-in-view": "error",
68
+ },
69
+ },
70
+ {
71
+ files: VIEW_FILES,
72
+ ignores: [
73
+ `${sourceRoot}components/ui/**`,
74
+ `${sourceRoot}components/shared/**`,
75
+ `${sourceRoot}components/icons/**`,
76
+ ],
77
+ rules: {
78
+ "component-structure/no-hooks-in-view": "error",
79
+ "no-restricted-imports": [
80
+ "error",
81
+ {
82
+ paths: [
83
+ {
84
+ name: "react",
85
+ importNames: REACT_HOOK_IMPORT_NAMES,
86
+ message: VIEW_HOOK_IMPORT_MESSAGE,
87
+ },
88
+ ],
89
+ patterns: [
90
+ // Objects, not a mix: `no-restricted-imports` accepts an array of
91
+ // strings OR an array of objects, never both, and a mixed array
92
+ // is a schema error that disables the whole override.
93
+ //
94
+ // `@/features/*/*` is the base config's restriction, carried
95
+ // forward because a flat-config override replaces a rule's
96
+ // options wholesale — omitting it would silently delete the
97
+ // shared restriction for every View in the project.
98
+ { group: ["@/features/*/*"] },
99
+ {
100
+ group: ["**/hooks/**", "@/hooks/**", "~/hooks/**"],
101
+ message: VIEW_HOOK_IMPORT_MESSAGE,
102
+ },
103
+ ],
104
+ },
105
+ ],
106
+ },
107
+ },
108
+ ];
109
+ }
110
+ //# sourceMappingURL=view-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-gate.js","sourceRoot":"","sources":["../../../src/configs/eslint/view-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,qDAAqD;AACrD,MAAM,UAAU,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,gBAAgB;IAChB,aAAa;IACb,YAAY;IACZ,eAAe;IACf,kBAAkB;IAClB,WAAW;IACX,gBAAgB;IAChB,OAAO;IACP,qBAAqB;IACrB,oBAAoB;IACpB,iBAAiB;IACjB,SAAS;IACT,eAAe;IACf,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,sBAAsB;IACtB,eAAe;CAChB,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,wBAAwB,GACnC,wHAAwH,CAAC;AAE3H;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAkB;IAElB,OAAO;QACL;YACE,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE;gBACL,uCAAuC,EAAE,OAAO;aACjD;SACF;QACD;YACE,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE;gBACP,GAAG,UAAU,kBAAkB;gBAC/B,GAAG,UAAU,sBAAsB;gBACnC,GAAG,UAAU,qBAAqB;aACnC;YACD,KAAK,EAAE;gBACL,sCAAsC,EAAE,OAAO;gBAC/C,uBAAuB,EAAE;oBACvB,OAAO;oBACP;wBACE,KAAK,EAAE;4BACL;gCACE,IAAI,EAAE,OAAO;gCACb,WAAW,EAAE,uBAAuB;gCACpC,OAAO,EAAE,wBAAwB;6BAClC;yBACF;wBACD,QAAQ,EAAE;4BACR,kEAAkE;4BAClE,gEAAgE;4BAChE,sDAAsD;4BACtD,EAAE;4BACF,6DAA6D;4BAC7D,2DAA2D;4BAC3D,4DAA4D;4BAC5D,oDAAoD;4BACpD,EAAE,KAAK,EAAE,CAAC,gBAAgB,CAAC,EAAE;4BAC7B;gCACE,KAAK,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC;gCAClD,OAAO,EAAE,wBAAwB;6BAClC;yBACF;qBACF;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -20,9 +20,9 @@ export const NIGHTLY_E2E_GUARD_BEHAVIOR_CERTIFICATES = Object.freeze({
20
20
  }),
21
21
  "312e8962e21be2f3c6c6c0235b0c6159b8dc39425508b4965c7df87fb1333380": Object.freeze({
22
22
  contractVersion: "1.9.0",
23
- packageVersions: Object.freeze(["4.33.4"]),
23
+ packageVersions: Object.freeze(["4.33.5"]),
24
24
  provenances: Object.freeze([
25
- "workspace package @codyswann/lisa@4.33.4 (typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs)",
25
+ "workspace package @codyswann/lisa@4.33.5 (typescript/copy-overwrite/scripts/check-nightly-e2e-health.mjs)",
26
26
  ]),
27
27
  }),
28
28
  "898ee0247806c7aa6e98328662d80bcff22ff067999298865462a58daef8bb22": Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAo/EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CA2kQjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
1
+ {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4/EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAklQjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -74,15 +74,19 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
74
74
  "eslint-plugin-code-organization/index.js": "9be5ecb135bc30cf39a3371825e94f8a379d8339653297bd7e48c07624923c83",
75
75
  "eslint-plugin-code-organization/package.json": "98ddbb102c1ab145130b90f8bbc1cf274decf58ff85fa4c0993fdaf2c71bb1eb",
76
76
  "eslint-plugin-code-organization/rules/enforce-statement-order.js": "b3b8365818395430bc40fa839e5c7d8d4510bb88109a1a9f48c35d267425ceb6",
77
- "eslint-plugin-component-structure/README.md": "e81ac58bf90cce80dde07a69cf1418bd1be2130857b83848c9af495da47c5db0",
77
+ "eslint-plugin-component-structure/README.md": "7c4a6bddb07d36816bcecfa6213d5b55fc2df0169dc54b3370115e6d12c45234",
78
78
  "eslint-plugin-component-structure/__tests__/enforce-component-structure.test.js": "f507216be4bf630563e28010a40cb99e6a5756c3b6f5b83647775fd1ab4f33ea",
79
- "eslint-plugin-component-structure/__tests__/plugin-index.test.js": "adb5d5968d96d2fbe048cd64830325cdf52faaa243cc602afe6aeeeb7aa46cc8",
79
+ "eslint-plugin-component-structure/__tests__/no-hooks-in-view.test.js": "f9e955f91821be459c9670037d82abb030009a8fe243d5505a14c5b6d5ccae46",
80
+ "eslint-plugin-component-structure/__tests__/no-return-in-view.test.js": "7776eadc79d2c5b8214f9f6c4e62a215362444ad16f8e9b078ca6dd94c8f0cac",
81
+ "eslint-plugin-component-structure/__tests__/plugin-index.test.js": "26494d453552a49ae1ca720515ff3aa68a1a050c851c190d0052a87f34a41a9a",
80
82
  "eslint-plugin-component-structure/__tests__/require-memo-in-view.test.js": "98ea09d5e018989b1bdc8ebc6e13557f46d407209d1d631aa6ee7c034e227c51",
81
83
  "eslint-plugin-component-structure/__tests__/single-component-per-file.test.js": "8c6ab28190557284d78175d397238c9e896f40c9e1e3f3e02e5b74a81460df6e",
82
- "eslint-plugin-component-structure/index.js": "815496885f3565489b8cf9493aca39c59796011fca96b8939178f22e93d0c808",
84
+ "eslint-plugin-component-structure/index.js": "d7a59cd26c6065584dc85a6e3c25f5e1e36c883abdb64083f4f9c40dd6106e2c",
85
+ "eslint-plugin-component-structure/lib/view-file-scope.js": "d24c4477ebba4a815344a655e932657b695ac06489f3f7f742ba2b6c137b15ec",
83
86
  "eslint-plugin-component-structure/package.json": "99d0173760de800fd83d4f781f0a7817d148a714b8d34aaff7b3c636490adcdd",
84
87
  "eslint-plugin-component-structure/rules/enforce-component-structure.js": "0f2c8118534c5602fda6d8637c3a6e3c2f33cd2a753e84b9d4ac92300997df81",
85
- "eslint-plugin-component-structure/rules/no-return-in-view.js": "1d2b3dd8ea31f9a7e93ce567d330567c1dccfcb0e5307f35eee669103eaad514",
88
+ "eslint-plugin-component-structure/rules/no-hooks-in-view.js": "ccfb45a61873eff6c2fe112634fc5cb010c54665cd89ff6026405be2dbb90e82",
89
+ "eslint-plugin-component-structure/rules/no-return-in-view.js": "8a8328fe7dca562a4408be11029334bbd93a71a978704fd7a26754d32b0e98d7",
86
90
  "eslint-plugin-component-structure/rules/require-memo-in-view.js": "d4e5dff390fbe853c7e24890082bb19008c62959bb3920fc35f728973974a1e6",
87
91
  "eslint-plugin-component-structure/rules/single-component-per-file.js": "74e6049fdadc38032828f6aaf0b740ef6d4a730a858e8a5d9c85c15e533d2d18",
88
92
  "eslint-plugin-phaser/README.md": "0fbb3bbc73bc7bc1a0e832610b4451dbfad9f8884b223e3b55c394fd38afead8",
@@ -99,7 +103,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
99
103
  "eslint-plugin-ui-standards/rules/no-unbound-design-value.js": "838d6a46741d5c47398383a2b0366a62d3b408ffb126b695c110d77041c0e43b",
100
104
  "expo/copy-overwrite/.easignore.extra": "1d30dac09405c41e23f6212553abacea478d7759b69c18edac0c0053f00e0d37",
101
105
  "expo/copy-overwrite/eslint.config.ts": "bb02718e1a809151c282d5fc54a1b570fe1cc86236dc1e5f2bcb570b06a22baa",
102
- "expo/copy-overwrite/eslint.expo.ts": "31ec984b1922dbd8c177588d37a8d6c25bc5e91063186cc8d60197c83f6c707f",
106
+ "expo/copy-overwrite/eslint.expo.ts": "9fa4e74810370bcb89d833774ebbf6193bb5d3e166c5efd9b7273f9506277137",
103
107
  "expo/copy-overwrite/eslint.slow.config.ts": "48d6a35be75450becde07d30d859c970c48a0438e730845272629c8ec677d3eb",
104
108
  "expo/copy-overwrite/jest.config.ts": "b58454a9cf55cf5c1449457fe8eae8390471c57787bdee05b5e34710aa89950a",
105
109
  "expo/copy-overwrite/jest.expo.ts": "e6d7dffc4c83fccc02e0b2d2a52e10de30c8c00a12de44184e960bd6155edcd6",
@@ -776,11 +780,11 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
776
780
  "plugins/src/expo/skills/building-native-ui/references/visual-effects.md": "2c1dfd5438f27e4c15bc09ececc57810a58a13e633dc782caac93f8f52cadadf",
777
781
  "plugins/src/expo/skills/building-native-ui/references/webgpu-three.md": "a92110c79f7c2f44513aa157a92f58345336615db3ff5e91a487ec3f2bb2c3cf",
778
782
  "plugins/src/expo/skills/building-native-ui/references/zoom-transitions.md": "cacc1665e9f3044762765d2cd55fd1ead9627f06478f12dfa2280c6f9ae88ede",
779
- "plugins/src/expo/skills/container-view-pattern/SKILL.md": "5e32ca62658ada94b1db774191c60795b1e5725eeabe7ae1a4a7e7080fe0d962",
783
+ "plugins/src/expo/skills/container-view-pattern/SKILL.md": "859a987f8c4b21106a7de3d35b5cb67837f2f07a84656a153086d6220e4a8ff1",
780
784
  "plugins/src/expo/skills/container-view-pattern/references/examples.md": "c413acf59eafb65fc5aced87c209662407861af6b724b0fb51e3a87cf8ca2a68",
781
785
  "plugins/src/expo/skills/container-view-pattern/references/patterns.md": "fcc25ea059803ac8d5e32ad805c541723ecd4a3c757adb67e4c0949d21a5b6ed",
782
786
  "plugins/src/expo/skills/container-view-pattern/scripts/create_component.py": "8226347d191f0e5e688b7862594c197c7697fa8c70ea50756195d13dde1bcb20",
783
- "plugins/src/expo/skills/container-view-pattern/scripts/validate_component.py": "211911b521c5d363a6486ce12beac5538e5b76f26c146dcffad22edee1997f59",
787
+ "plugins/src/expo/skills/container-view-pattern/scripts/validate_component.py": "90974c9292fa104334e5ec724d24171fc22c36c0ced37c72b2026c1febef0656",
784
788
  "plugins/src/expo/skills/cross-platform-compatibility/SKILL.md": "0cb7dec9036ff2f092e943223b837086ecbb1440a065334b9d645d5f56c491f9",
785
789
  "plugins/src/expo/skills/cross-platform-compatibility/references/common-issues.md": "a9109582351155f3a2415fe77b417cec9e8e12d5d1860e68d87ab80198e01f45",
786
790
  "plugins/src/expo/skills/cross-platform-compatibility/references/file-extensions.md": "cc8e5c4fcdbbb1a501272f29e77248d31d5cc6500b34db025551c9d7840dd5ea",
@@ -1546,12 +1550,16 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
1546
1550
  "eslint-plugin-code-organization/rules/enforce-statement-order.js": true,
1547
1551
  "eslint-plugin-component-structure/README.md": true,
1548
1552
  "eslint-plugin-component-structure/__tests__/enforce-component-structure.test.js": true,
1553
+ "eslint-plugin-component-structure/__tests__/no-hooks-in-view.test.js": true,
1554
+ "eslint-plugin-component-structure/__tests__/no-return-in-view.test.js": true,
1549
1555
  "eslint-plugin-component-structure/__tests__/plugin-index.test.js": true,
1550
1556
  "eslint-plugin-component-structure/__tests__/require-memo-in-view.test.js": true,
1551
1557
  "eslint-plugin-component-structure/__tests__/single-component-per-file.test.js": true,
1552
1558
  "eslint-plugin-component-structure/index.js": true,
1559
+ "eslint-plugin-component-structure/lib/view-file-scope.js": true,
1553
1560
  "eslint-plugin-component-structure/package.json": true,
1554
1561
  "eslint-plugin-component-structure/rules/enforce-component-structure.js": true,
1562
+ "eslint-plugin-component-structure/rules/no-hooks-in-view.js": true,
1555
1563
  "eslint-plugin-component-structure/rules/no-return-in-view.js": true,
1556
1564
  "eslint-plugin-component-structure/rules/require-memo-in-view.js": true,
1557
1565
  "eslint-plugin-component-structure/rules/single-component-per-file.js": true,
@@ -7530,6 +7538,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
7530
7538
  "src/configs/eslint/phaser.ts": true,
7531
7539
  "src/configs/eslint/slow.ts": true,
7532
7540
  "src/configs/eslint/typescript.ts": true,
7541
+ "src/configs/eslint/view-gate.ts": true,
7533
7542
  "src/configs/jest/base.ts": true,
7534
7543
  "src/configs/jest/cdk.ts": true,
7535
7544
  "src/configs/jest/expo.ts": true,
@@ -8311,6 +8320,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8311
8320
  "tests/unit/config/eslint-test-files-override.test.ts": true,
8312
8321
  "tests/unit/config/expo-design-value-arming.test.ts": true,
8313
8322
  "tests/unit/config/expo-eslint-local-config.test.ts": true,
8323
+ "tests/unit/config/expo-view-purity-gate.test.ts": true,
8314
8324
  "tests/unit/config/fast-xml-parser-security-floor.test.ts": true,
8315
8325
  "tests/unit/config/gate-default-tasks-resolve.test.ts": true,
8316
8326
  "tests/unit/config/gate-task-shipped-to-templates.test.ts": true,
@@ -8601,6 +8611,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
8601
8611
  "tests/unit/opencode/session-bootstrap-jira-gate.test.ts": true,
8602
8612
  "tests/unit/opencode/settings-installer.test.ts": true,
8603
8613
  "tests/unit/opencode/skills-installer.test.ts": true,
8614
+ "tests/unit/plugins/container-view-pattern-parity.test.ts": true,
8604
8615
  "tests/unit/scripts/ast-grep-enforcement.test.ts": true,
8605
8616
  "tests/unit/scripts/bdd-adoption.test.ts": true,
8606
8617
  "tests/unit/scripts/bdd-discovery.test.ts": true,