Skip to content

Commit cd495c8

Browse files
authored
2ac43720 feat(eslint-plugin): add new rule require-super-ondestroy (#4611)
1 parent bfcb84a commit cd495c8

File tree

18 files changed

+25
-15
lines changed

18 files changed

+25
-15
lines changed

commit_message

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4d34dc44 fix(signals): create deep signals for custom class instances (#4614)
1+
2ac43720 feat(eslint-plugin): add new rule require-super-ondestroy (#4611)

generated/docs/api/component-store/ComponentStore.json

+1-1
Large diffs are not rendered by default.

generated/docs/api/store-devtools/DevToolsFeatureOptions.json

+1-1
Large diffs are not rendered by default.

generated/docs/app/search-data.json

+1-1
Large diffs are not rendered by default.

generated/docs/guide/eslint-plugin.json

+1-1
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"id": "guide/eslint-plugin/rules/require-super-ondestroy",
3+
"title": "require-super-ondestroy",
4+
"contents": "\n\n\n <div class=\"github-links\">\n <a href=\"https://github.com/ngrx/platform/edit/main/projects/ngrx.io/content/guide/eslint-plugin/rules/require-super-ondestroy.md?message=docs%3A%20describe%20your%20change...\" aria-label=\"Suggest Edits\" title=\"Suggest Edits\"><i class=\"material-icons\" aria-hidden=\"true\" role=\"img\">mode_edit</i></a>\n </div>\n\n\n<div class=\"content\">\n<h1 id=\"require-super-ondestroy\">require-super-ondestroy<a title=\"Link to this heading\" class=\"header-link\" aria-hidden=\"true\" href=\"guide/eslint-plugin/rules/require-super-ondestroy#require-super-ondestroy\"><i class=\"material-icons\">link</i></a></h1>\n<p>Overriden ngOnDestroy method in component stores require a call to super.ngOnDestroy().</p>\n<ul>\n<li><strong>Type</strong>: problem</li>\n<li><strong>Fixable</strong>: No</li>\n<li><strong>Suggestion</strong>: No</li>\n<li><strong>Requires type checking</strong>: No</li>\n<li><strong>Configurable</strong>: No</li>\n</ul>\n<!-- Everything above this generated, do not edit -->\n<!-- MANUAL-DOC:START -->\n<h2 id=\"rule-details\">Rule Details<a title=\"Link to this heading\" class=\"header-link\" aria-hidden=\"true\" href=\"guide/eslint-plugin/rules/require-super-ondestroy#rule-details\"><i class=\"material-icons\">link</i></a></h2>\n<p>This rule enforces that any class which inherits the <code><a href=\"api/component-store/ComponentStore\" class=\"code-anchor\">ComponentStore</a></code> class and overrides the <code>ngOnDestroy</code> lifecycle hook must include a call to <code>super.ngOnDestroy()</code>. This ensures proper cleanup of resources managed by the <code><a href=\"api/component-store/ComponentStore\" class=\"code-anchor\">ComponentStore</a></code> class.</p>\n<p>Example of <strong>incorrect</strong> code for this rule:</p>\n<code-example language=\"ts\">\n@Injectable()\n<a href=\"api/store-devtools/DevToolsFeatureOptions#export\" class=\"code-anchor\">export</a> class BooksStore extends <a href=\"api/component-store/ComponentStore\" class=\"code-anchor\">ComponentStore</a>&#x3C;BooksState> implements OnDestroy\n{\n // ... other BooksStore class members\n\n override ngOnDestroy(): void {\n this.cleanUp(); // custom cleanup logic\n }\n}\n</code-example>\n<p>Example of <strong>correct</strong> code for this rule:</p>\n<code-example language=\"ts\">\n@Injectable()\n<a href=\"api/store-devtools/DevToolsFeatureOptions#export\" class=\"code-anchor\">export</a> class BooksStore extends <a href=\"api/component-store/ComponentStore\" class=\"code-anchor\">ComponentStore</a>&#x3C;BooksState> implements OnDestroy\n{\n // ... other BooksStore class members\n\n override ngOnDestroy(): void {\n this.cleanUp();\n super.ngOnDestroy();\n }\n}\n</code-example>\n\n</div>\n\n<!-- links to this doc:\n-->\n<!-- links from this doc:\n - api/component-store/ComponentStore\n - api/store-devtools/DevToolsFeatureOptions#export\n - guide/eslint-plugin/rules/require-super-ondestroy#require-super-ondestroy\n - guide/eslint-plugin/rules/require-super-ondestroy#rule-details\n - https://github.com/ngrx/platform/edit/main/projects/ngrx.io/content/guide/eslint-plugin/rules/require-super-ondestroy.md?message=docs%3A%20describe%20your%20change...\n-->"
5+
}

generated/navigation.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -807,12 +807,12 @@
807807
"prerelease": [
808808
"local"
809809
],
810-
"build": "sha.4d34dc44",
810+
"build": "sha.2ac43720",
811811
"version": "19.0.0-local",
812812
"codeName": "snapshot",
813813
"isSnapshot": true,
814-
"full": "19.0.0-local+sha.4d34dc44",
814+
"full": "19.0.0-local+sha.2ac43720",
815815
"branch": "master",
816-
"commitSHA": "4d34dc442994381463bbc85768ba7afde592df41"
816+
"commitSHA": "2ac43720bbb3bd0740aebafb8144671820417225"
817817
}
818818
}

generated/sitemap.xml

+3
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,9 @@
207207
<url>
208208
<loc>https://ngrx.io/guide/eslint-plugin/rules/prefix-selectors-with-select</loc>
209209
</url>
210+
<url>
211+
<loc>https://ngrx.io/guide/eslint-plugin/rules/require-super-ondestroy</loc>
212+
</url>
210213
<url>
211214
<loc>https://ngrx.io/guide/eslint-plugin/rules/select-style</loc>
212215
</url>
Binary file not shown.
Binary file not shown.
0 Bytes
Binary file not shown.
Binary file not shown.
Binary file not shown.

generated/zips/store/store.zip

0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.

ngsw.json

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"configVersion": 1,
3-
"timestamp": 1733831821558,
3+
"timestamp": 1733835997836,
44
"index": "/index.html",
55
"assetGroups": [
66
{
@@ -648,6 +648,7 @@
648648
"/generated/docs/guide/eslint-plugin/rules/prefer-protected-state.json",
649649
"/generated/docs/guide/eslint-plugin/rules/prefer-selector-in-select.json",
650650
"/generated/docs/guide/eslint-plugin/rules/prefix-selectors-with-select.json",
651+
"/generated/docs/guide/eslint-plugin/rules/require-super-ondestroy.json",
651652
"/generated/docs/guide/eslint-plugin/rules/select-style.json",
652653
"/generated/docs/guide/eslint-plugin/rules/signal-state-no-arrays-at-root-level.json",
653654
"/generated/docs/guide/eslint-plugin/rules/signal-store-feature-should-use-generic-type.json",
@@ -798,7 +799,7 @@
798799
"/generated/docs/api.json": "d0666b39f2dd96c2a868e8e117f03001ee1b0a0e",
799800
"/generated/docs/api/api-list.json": "f00a67621d40b468c7e99c242d561d5a061810a7",
800801
"/generated/docs/api/component-store.json": "b063814b416b5f205acebc0f0cfb3d5bf95f3fe6",
801-
"/generated/docs/api/component-store/ComponentStore.json": "42c83ddf1378b30a75cdd27d709c5b5e3d5e94f9",
802+
"/generated/docs/api/component-store/ComponentStore.json": "47d9690d21bd8e5e71c4a406393111f93cb51b86",
802803
"/generated/docs/api/component-store/INITIAL_STATE_TOKEN.json": "cafad4f666661de493c68c596357153df9c0beba",
803804
"/generated/docs/api/component-store/OnStateInit.json": "9a5d7e401c82e11e2da3305c847429fc6173eb3f",
804805
"/generated/docs/api/component-store/OnStoreInit.json": "30f867137376e1bd152a337b08665bd2a9edd1d5",
@@ -1093,7 +1094,7 @@
10931094
"/generated/docs/api/signals/withProps.json": "8b0be30a6d6ba40840d8f0290fb996e1d1fac0c5",
10941095
"/generated/docs/api/signals/withState.json": "442afd6abd1ab872e0f44879eedea538f5dd9b5b",
10951096
"/generated/docs/api/store-devtools.json": "c49e24c2820203eff6bed364a2cf5f35f5daced5",
1096-
"/generated/docs/api/store-devtools/DevToolsFeatureOptions.json": "3172db6b0ef11d1d5da709e5ad3d6470c648faab",
1097+
"/generated/docs/api/store-devtools/DevToolsFeatureOptions.json": "13db96f5d2c9e10a5e3017e889cc20fd99f8e9e8",
10971098
"/generated/docs/api/store-devtools/INITIAL_OPTIONS.json": "fefee7635c36cdc123133033159652c0c4939c9b",
10981099
"/generated/docs/api/store-devtools/LiftedState.json": "add857740319e4ceb8ae9a3913324ead0229b8c1",
10991100
"/generated/docs/api/store-devtools/RECOMPUTE.json": "c62e3c239c9b848a25d5f96fe3719e01b5241483",
@@ -1183,7 +1184,7 @@
11831184
"/generated/docs/api/store/testing/createMockStore.json": "6df49197ee719daf42241580cc0f8d93a4b20856",
11841185
"/generated/docs/api/store/testing/provideMockStore.json": "ee2729311386493b742eccc7af7976c14372c5b4",
11851186
"/generated/docs/api/store/union.json": "f79fd942d2c65a36be58540aaba426155a9f70be",
1186-
"/generated/docs/app/search-data.json": "c979b43823e664076ca63f898ba8aa8895f6e55c",
1187+
"/generated/docs/app/search-data.json": "c66215726b5ed7ae74cb8928fdca5466b544002d",
11871188
"/generated/docs/contributing.json": "4c7957c3c81d4b50e5084c18375edeadc6095cc1",
11881189
"/generated/docs/docs.json": "70f2e96f98c89284c124e2da590cc93fdc1fb4ec",
11891190
"/generated/docs/enterprise-support.json": "90f869e6046ad7448c0ffc2beecf0f181a6c174b",
@@ -1230,7 +1231,7 @@
12301231
"/generated/docs/guide/entity/interfaces.json": "01a467cd7b79d478d0c48d19f0959df3204b5195",
12311232
"/generated/docs/guide/entity/recipes/additional-state-properties.json": "98e93b7e15fd3c13dfe02cc5a5deabd2d4a736cc",
12321233
"/generated/docs/guide/entity/recipes/entity-adapter-with-feature-creator.json": "5edffa121caa403b5ab8dc90baa8c0e8ed000661",
1233-
"/generated/docs/guide/eslint-plugin.json": "eeb1010411637cb43b8fb9433f4434b25ba34b45",
1234+
"/generated/docs/guide/eslint-plugin.json": "0021dd54c9c2fe3f4bbba6b6bac81ff5d5a0972c",
12341235
"/generated/docs/guide/eslint-plugin/install.json": "d9366da18a9949f85d22e8e68834cbc7976cbbd4",
12351236
"/generated/docs/guide/eslint-plugin/rules/avoid-combining-component-store-selectors.json": "9c07ff87ac2f1dbf1cf48b452b2ab0fcf98bcb93",
12361237
"/generated/docs/guide/eslint-plugin/rules/avoid-combining-selectors.json": "ae29861009449f62e959659e858ad3ffdbf85889",
@@ -1258,6 +1259,7 @@
12581259
"/generated/docs/guide/eslint-plugin/rules/prefer-protected-state.json": "6aca84ec4e813778d0e1c419f34ff42ee0798071",
12591260
"/generated/docs/guide/eslint-plugin/rules/prefer-selector-in-select.json": "ec2e6356c5bf6084a77d34492e8a3c82fbaa3ff4",
12601261
"/generated/docs/guide/eslint-plugin/rules/prefix-selectors-with-select.json": "7641ace14723e7f2d2b3bee18dc9b37996ff582e",
1262+
"/generated/docs/guide/eslint-plugin/rules/require-super-ondestroy.json": "14e5403a6cec44507da013076b28cbe4501dfb53",
12611263
"/generated/docs/guide/eslint-plugin/rules/select-style.json": "73ac8008a79429687b2e7d1a345ca627c7e06981",
12621264
"/generated/docs/guide/eslint-plugin/rules/signal-state-no-arrays-at-root-level.json": "adafad08b13ee2b2d977c5e7b68378e3b4df93be",
12631265
"/generated/docs/guide/eslint-plugin/rules/signal-store-feature-should-use-generic-type.json": "5ceda9be1d38cebcc86a86beab426e5260be6b1d",
@@ -1405,7 +1407,7 @@
14051407
"/generated/images/marketing/concept-icons/universal.svg": "69516bc8a226c9df3c564f7a4f0fec1b66e7711f",
14061408
"/generated/images/marketing/features/feature-icon.svg": "2cf6c1c11faee80b101b38c91f02184dada8cbe2",
14071409
"/generated/images/marketing/home/ngrx-conf-badge.svg": "f6c369c9c05b4b4df3373a7fb31dd3f4e82c9a44",
1408-
"/generated/navigation.json": "2f28dcdc411f88a54e3ab8e458806b90e6ca7b65",
1410+
"/generated/navigation.json": "0d565c1027f488483edc01b9f7cea499ba3ce53c",
14091411
"/generated/resources.json": "187bbb4f63bac415553db8bc033d822bb0b5a47e",
14101412
"/index.html": "73dd53940c29a42e824ed49572e37e307dc49f5f",
14111413
"/light-theme.css": "af6e8fca0da10e9eed053318ea52c0434ddc7c53",

stats.json

+1-1
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)