# GitLab #9: Auto inj safety rules Original: `nessar/computerCraft`; GitLab Issue ID 46. Target: [#9](https://gitea.nessar.fr/nessar/computerCraft/issues/9). Author: admin-backup (GitLab user 3). Created: 2022-12-25T11:33:29.000Z. Last source update: 2022-12-25T15:59:01.000Z. Source state: closed; discussion locked: False. This linked record preserves source attribution, timestamps, discussion grouping, review positions and historical diffs. Current Gitea activity is separate from the original source dates. Old CI jobs and their reports are omitted by owner decision. Source assignments: admin-backup (GitLab user 3). ## Discussions and activity ### Discussion 83a41ef80c59471faa689bd67a326ae6a94532d0 #### Source note 222 — admin-backup (GitLab user 3) — 2022-12-25T11:33:29Z system activity. ````text assigned to `@THoguet` ```` ## State event records - {"close_after_error_tracking_resolve": false, "close_auto_resolve_prometheus_alert": false, "created_at": "2022-12-25T15:59:01+00:00", "epic_id": null, "id": 132, "imported_from": 4, "issue_id": 46, "merge_request_id": null, "namespace_id": 26, "source_commit": null, "source_merge_request_id": null, "state": 2, "user_id": 3} ## Historical diff versions ### Diff version 46 — 2026-05-03T15:54:27.919072Z Base `bf71d38ec16407053bec7bd5d60dba667fe83486`; start `bf71d38ec16407053bec7bd5d60dba667fe83486`; head `6eb9663c9d63bd9e56eb594e37ec32a5a14cddf2`. Files: 2; stored commits: 1. #### `package-lock.json` → `None` Modes 100644 → 100644; new=False, deleted=False, renamed=False, binary=False, too_large=False. ````diff @@ -8,18 +8,18 @@ "name": "random-lol", "version": "0.0.0", "dependencies": { - "@angular/animations": "^20.3.0", - "@angular/cdk": "^20.2.12", - "@angular/common": "^20.3.0", - "@angular/compiler": "^20.3.0", - "@angular/core": "^20.3.0", - "@angular/forms": "^20.3.0", - "@angular/material": "^20.2.12", - "@angular/platform-browser": "^20.3.0", - "@angular/platform-server": "^20.3.0", - "@angular/router": "^20.3.0", - "@angular/service-worker": "^20.3.10", - "@angular/ssr": "^20.3.7", + "@angular/animations": "^21.0.0", + "@angular/cdk": "^21.0.0", + "@angular/common": "^21.0.0", + "@angular/compiler": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/forms": "^21.0.0", + "@angular/material": "^21.0.0", + "@angular/platform-browser": "^21.0.0", + "@angular/platform-server": "^21.0.0", + "@angular/router": "^21.0.0", + "@angular/service-worker": "^21.0.0", + "@angular/ssr": "^21.0.0", "@fortawesome/angular-fontawesome": "^3.0.0", "@fortawesome/free-brands-svg-icons": "^7.0.0", "@fortawesome/free-regular-svg-icons": "^7.0.0", @@ -338,9 +338,9 @@ } }, "node_modules/@angular/animations": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.3.10.tgz", - "integrity": "sha512-WSKHyF82URlAQkYGWZjozZgSYj2ClH40GDunayz6kuRewup639iH91HE8sbFfVqKgqELKIAy2E0LhmtDKnMwZA==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.0.0.tgz", + "integrity": "sha512-9AX4HFJmSP8SFNiweKNxasBzn3zbL3xRtwaUxw1I+x/WAzubm4ZziLnXqb+tai7C4UmwV+9XDlRVPfw5WxJ9zg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -349,7 +349,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "20.3.10" + "@angular/core": "21.0.0" } }, "node_modules/@angular/build": { @@ -452,17 +452,17 @@ } }, "node_modules/@angular/cdk": { - "version": "20.2.12", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-20.2.12.tgz", - "integrity": "sha512-hz8GtiMy3N9/e8407ZfrByHD5GEC4SkWtxyUknWuTM9P88AOie0jDZ6CfQg9gQ0OJX+6BAbJV3RpYZA1uzNUqA==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-21.0.0.tgz", + "integrity": "sha512-wCr5D3mEC+p69IMDC7vf8bWx18mfUNNRdsiK3XD0m1PqfeNfnCJb+Bnkks37MC/SU01uCNrAokRaTbWL6pk1Wg==", "license": "MIT", "dependencies": { "parse5": "^8.0.0", "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^20.0.0 || ^21.0.0", - "@angular/core": "^20.0.0 || ^21.0.0", + "@angular/common": "^21.0.0 || ^22.0.0", + "@angular/core": "^21.0.0 || ^22.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -502,9 +502,9 @@ } }, "node_modules/@angular/common": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.10.tgz", - "integrity": "sha512-12fEzvKbEqjqy1fSk9DMYlJz6dF1MJVXuC5BB+oWWJpd+2lfh4xJ62pkvvLGAICI89hfM5n9Cy5kWnXwnqPZsA==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.0.0.tgz", + "integrity": "sha512-uFvQDYU5X5nEnI9C4Bkdxcu4aIzNesGLJzmFlnwChVxB4BxIRF0uHL0oRhdkInGTIzPDJPH4nF6B/22c5gDVqA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -513,14 +513,14 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "20.3.10", + "@angular/core": "21.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.10.tgz", - "integrity": "sha512-cW939Lr8GZjPSYfbQKIDNrUaHWmn2M+zBbERThfq5skLuY+xM60bJFv4NqBekfX6YqKLCY62ilUZlnImYIXaqA==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.0.0.tgz", + "integrity": "sha512-6jCH3UYga5iokj5F40SR4dlwo9ZRMkT8YzHCTijwZuDX9zvugp9jPof092RvIeNsTvCMVfGWuM9yZ1DRUsU/yg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -563,9 +563,9 @@ } }, "node_modules/@angular/core": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.10.tgz", - "integrity": "sha512-g99Qe+NOVo72OLxowVF9NjCckswWYHmvO7MgeiZTDJbTjF9tXH96dMx7AWq76/GUinV10sNzDysVW16NoAbCRQ==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.0.0.tgz", + "integrity": "sha512-bqi8fT4csyITeX8vdN5FJDBWx5wuWzdCg4mKSjHd+onVzZLyZ8bcnuAKz4mklgvjvwuXoRYukmclUurLwfq3Rg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -574,7 +574,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "20.3.10", + "@angular/compiler": "21.0.0", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.15.0" }, @@ -588,9 +588,9 @@ } }, "node_modules/@angular/forms": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.10.tgz", - "integrity": "sha512-9yWr51EUauTEINB745AaHwZNTHLpXIm4uxuykxzOg+g2QskEgVfH26uS8G2ogdNuwYpB8wnsXWr34qhM3qgOWw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.0.0.tgz", + "integrity": "sha512-kcudwbZs/ddKqaELz4eEW9kOGCsX61qsf9jkQsGTARBEOUcU2K+rM6mX5sTf9azHvQ9wlX4N36h0eYzBA4Y4Qg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -599,33 +599,34 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.3.10", - "@angular/core": "20.3.10", - "@angular/platform-browser": "20.3.10", + "@angular/common": "21.0.0", + "@angular/core": "21.0.0", + "@angular/platform-browser": "21.0.0", + "@standard-schema/spec": "^1.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/material": { - "version": "20.2.12", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-20.2.12.tgz", - "integrity": "sha512-DVenIZmV87qhDBlI2Xv3Z+b+IFI1s4wcZsFrzDi1FBMxKLsltJwMHf4SAmuqY0Mm/2Vw7HEZlfE130TuqjG8Ig==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-21.0.0.tgz", + "integrity": "sha512-s3+fhN7F5T1TAltZXYXOgY1wuVbICCrBJpV2TN8nJXDT0wroTYAljgBmsr6ZjDwYJewwP0OPvcj2NlOGDpa6oA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "20.2.12", - "@angular/common": "^20.0.0 || ^21.0.0", - "@angular/core": "^20.0.0 || ^21.0.0", - "@angular/forms": "^20.0.0 || ^21.0.0", - "@angular/platform-browser": "^20.0.0 || ^21.0.0", + "@angular/cdk": "21.0.0", + "@angular/common": "^21.0.0 || ^22.0.0", + "@angular/core": "^21.0.0 || ^22.0.0", + "@angular/forms": "^21.0.0 || ^22.0.0", + "@angular/platform-browser": "^21.0.0 || ^22.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.10.tgz", - "integrity": "sha512-UV8CGoB5P3FmJciI3/I/n3L7C3NVgGh7bIlZ1BaB/qJDtv0Wq0rRAGwmT/Z3gwmrRtfHZWme7/CeQ2CYJmMyUQ==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.0.0.tgz", + "integrity": "sha512-KQrANla4RBLhcGkwlndqsKzBwVFOWQr1640CfBVjj2oz4M3dW5hyMtXivBACvuwyUhYU/qJbqlDMBXl/OUSudQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -634,9 +635,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/animations": "20.3.10", - "@angular/common": "20.3.10", - "@angular/core": "20.3.10" + "@angular/animations": "21.0.0", + "@angular/common": "21.0.0", + "@angular/core": "21.0.0" }, "peerDependenciesMeta": { "@angular/animations": { @@ -645,9 +646,9 @@ } }, "node_modules/@angular/platform-server": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-20.3.10.tgz", - "integrity": "sha512-ehix12qOl3onXp7eokk5uj94+/DGbwjAcB/+YkSCbnTXww6+aueX6/Zx+ezGgM+g63MkTMjoHsVUjpXzaQQm7w==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-21.0.0.tgz", + "integrity": "sha512-5IcmoftT2hLAbLfSoqGoCg0B1FLSk08xDoUdIyEUo1SmxNJMEEgU6WxhkPf6R7aoOlLAwYBoqGGP1Us1Z7rO7g==", "license": "MIT", "dependencies": { "tslib": "^2.3.0", @@ -657,17 +658,17 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.3.10", - "@angular/compiler": "20.3.10", - "@angular/core": "20.3.10", - "@angular/platform-browser": "20.3.10", + "@angular/common": "21.0.0", + "@angular/compiler": "21.0.0", + "@angular/core": "21.0.0", + "@angular/platform-browser": "21.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/router": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-20.3.10.tgz", - "integrity": "sha512-Z03cfH1jgQ7XMDJj4R8qAGqivcvhdG3wYBwaiN1K1ODBgPhbFKNeD4stKqYp7xBNtswmM2O2jMxrL/Djwju4Gg==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.0.0.tgz", + "integrity": "sha512-ARx1R2CmTgAezlMkUpV40V4T/IbXhL7dm4SuMVKbuEOsCKZC0TLOSSTsGYY7HKem45JHlJaByv819cJnabFgBg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -676,16 +677,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.3.10", - "@angular/core": "20.3.10", - "@angular/platform-browser": "20.3.10", + "@angular/common": "21.0.0", + "@angular/core": "21.0.0", + "@angular/platform-browser": "21.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/service-worker": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-20.3.10.tgz", - "integrity": "sha512-glBrAsmYjY9Kl6NCdfKxU4rXAfMuVfoUVwhk8DRGdhgUU/J7OScQWxrpqUwWx9xaLhjg1X7TP1Czz+1CMXxtAg==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-21.0.0.tgz", + "integrity": "sha512-ZsJyVBvMQ6c9Xbci3cbPPQUPf+ZptvPshvf4eM5I4r3tJc7xDudpKKUqFBgAzZIN/GY5EvzMwGplgIy7HpKh1w==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -697,23 +698,23 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "20.3.10", + "@angular/core": "21.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/ssr": { - "version": "20.3.9", - "resolved": "https://registry.npmjs.org/@angular/ssr/-/ssr-20.3.9.tgz", - "integrity": "sha512-X6m+CRbqwOP0oHkAGNHdySfZUUC0pm+QZ91B742k2pLc07wLlpZzt1hgaaAQHMOd3Ruso67ChuTi8UfvjJC3Pg==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/ssr/-/ssr-21.0.0.tgz", + "integrity": "sha512-lzMzMdsAGy5OB7JsOfKK+SZQdxeOAWDg8sC/XcTUzY/BJu31Lz9kO2nuKmqcgr/aPOrD7Sc0F31u/NxGjeCdTw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^20.0.0", - "@angular/core": "^20.0.0", - "@angular/platform-server": "^20.0.0", - "@angular/router": "^20.0.0" + "@angular/common": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/platform-server": "^21.0.0", + "@angular/router": "^21.0.0" }, "peerDependenciesMeta": { "@angular/platform-server": { @@ -3930,6 +3931,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT", + "peer": true + }, "node_modules/@tufjs/canonical-json": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", ```` #### `package.json` → `None` Modes 100644 → 100644; new=False, deleted=False, renamed=False, binary=False, too_large=False. ````diff @@ -23,18 +23,18 @@ }, "private": true, "dependencies": { - "@angular/animations": "^20.3.0", - "@angular/cdk": "^20.2.12", - "@angular/common": "^20.3.0", - "@angular/compiler": "^20.3.0", - "@angular/core": "^20.3.0", - "@angular/forms": "^20.3.0", - "@angular/material": "^20.2.12", - "@angular/platform-browser": "^20.3.0", - "@angular/platform-server": "^20.3.0", - "@angular/router": "^20.3.0", - "@angular/service-worker": "^20.3.10", - "@angular/ssr": "^20.3.7", + "@angular/animations": "^21.0.0", + "@angular/cdk": "^21.0.0", + "@angular/common": "^21.0.0", + "@angular/compiler": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/forms": "^21.0.0", + "@angular/material": "^21.0.0", + "@angular/platform-browser": "^21.0.0", + "@angular/platform-server": "^21.0.0", + "@angular/router": "^21.0.0", + "@angular/service-worker": "^21.0.0", + "@angular/ssr": "^21.0.0", "@fortawesome/angular-fontawesome": "^3.0.0", "@fortawesome/free-brands-svg-icons": "^7.0.0", "@fortawesome/free-regular-svg-icons": "^7.0.0", ````