{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":145043922,"defaultBranch":"master","name":"eslint-plugin-lit","ownerLogin":"43081j","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-08-16T22:11:08.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/5677153?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1715718537.0","currentOid":""},"activityList":{"items":[{"before":"9fb7b6609718aab5e17d8439dda79a6c3b18f936","after":"fb4dcfe3e67bab1eb3f69469cbc69dabaa94b75b","ref":"refs/heads/master","pushedAt":"2024-05-14T20:28:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"1.13.0","shortMessageHtmlLink":"1.13.0"}},{"before":"816d84cafca6337caecf756c12a60aeab6636418","after":null,"ref":"refs/heads/shadowing-whoops","pushedAt":"2024-05-14T18:52:58.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"}},{"before":"ab2fb54e5abeffa3793d698c4a8ecdb776016c3d","after":"9fb7b6609718aab5e17d8439dda79a6c3b18f936","ref":"refs/heads/master","pushedAt":"2024-05-14T18:52:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"fix: allow decorated properties with class fields (#201)\n\nAllows properties decorated with lit property decorators to have class\r\nfields alongside.\r\n\r\nThis loosens the strictness of the rule under the assumption you have\r\nset `useDefineForClassFields: false` in typescript.\r\n\r\nIf you use `declare` or `accessor`, those fields will already be ignored\r\nby this rule.\r\n\r\nExamples:\r\n\r\n```ts\r\n// Error\r\nclass X extends LitElement {\r\n fieldA;\r\n static properties = {fieldA: {type: String}};\r\n}\r\n\r\n// Works now, errored before\r\nclass X extends LitElement {\r\n @property()\r\n fieldA;\r\n}\r\n\r\n// Worked before, works now\r\nclass X extends LitElement {\r\n @property()\r\n declare fieldA;\r\n}\r\n\r\n// Worked before, works now\r\nclass X extends LitElement {\r\n declare fieldA;\r\n static properties = {fieldA: {type: String}};\r\n}\r\n\r\n// Worked before, works now\r\nclass X extends LitElement {\r\n @property()\r\n accessor fieldA;\r\n}\r\n```\r\n\r\nFixes #193.","shortMessageHtmlLink":"fix: allow decorated properties with class fields (#201)"}},{"before":"ecf34694884984b17aaea1a3c17a3f0bfd426e0e","after":"816d84cafca6337caecf756c12a60aeab6636418","ref":"refs/heads/shadowing-whoops","pushedAt":"2024-05-14T18:51:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"fix: allow decorated properties with class fields\n\nAllows properties decorated with lit property decorators to have class\nfields alongside.\n\nThis loosens the strictness of the rule under the assumption you have\nset `useDefineForClassFields: false` in typescript.\n\nIf you use `declare` or `accessor`, those fields will already be ignored\nby this rule.\n\nExamples:\n\n```ts\n// Error\nclass X extends LitElement {\n fieldA;\n static properties = {fieldA: {type: String}};\n}\n\n// Works now, errored before\nclass X extends LitElement {\n @property()\n fieldA;\n}\n\n// Worked before, works now\nclass X extends LitElement {\n @property()\n declare fieldA;\n}\n\n// Worked before, works now\nclass X extends LitElement {\n declare fieldA;\n static properties = {fieldA: {type: String}};\n}\n\n// Worked before, works now\nclass X extends LitElement {\n @property()\n accessor fieldA;\n}\n```\n\nFixes #193.","shortMessageHtmlLink":"fix: allow decorated properties with class fields"}},{"before":null,"after":"ecf34694884984b17aaea1a3c17a3f0bfd426e0e","ref":"refs/heads/shadowing-whoops","pushedAt":"2024-05-14T17:54:51.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"fix: allow decorated properties with class fields\n\nAllows properties decorated with lit property decorators to have class\nfields alongside.\n\nThis loosens the strictness of the rule under the assumption you have\nset `useDefineForClassFields: false` in typescript.\n\nIf you use `declare` or `accessor`, those fields will already be ignored\nby this rule.\n\nExamples:\n\n```ts\n// Error\nclass X extends LitElement {\n fieldA;\n static properties = {fieldA: {type: String}};\n}\n\n// Works now, errored before\nclass X extends LitElement {\n @property()\n fieldA;\n}\n\n// Worked before, works now\nclass X extends LitElement {\n @property()\n declare fieldA;\n}\n\n// Worked before, works now\nclass X extends LitElement {\n declare fieldA;\n static properties = {fieldA: {type: String}};\n}\n\n// Worked before, works now\nclass X extends LitElement {\n @property()\n accessor fieldA;\n}\n```\n\nFixes #193.","shortMessageHtmlLink":"fix: allow decorated properties with class fields"}},{"before":"6631ac14a6bb13b10e3bbd900110b557e638127c","after":"ab2fb54e5abeffa3793d698c4a8ecdb776016c3d","ref":"refs/heads/master","pushedAt":"2024-05-07T20:26:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"1.12.0","shortMessageHtmlLink":"1.12.0"}},{"before":"c17da5b383b2e3a569bce33ddc1947fe8db30c38","after":null,"ref":"refs/heads/publish-flow","pushedAt":"2024-05-07T20:25:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"}},{"before":"4f0a8bd39af61da0f4c17ca9ee7ab968d70b8638","after":"6631ac14a6bb13b10e3bbd900110b557e638127c","ref":"refs/heads/master","pushedAt":"2024-05-07T20:25:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"chore: add publish ci workflow (#200)","shortMessageHtmlLink":"chore: add publish ci workflow (#200)"}},{"before":null,"after":"c17da5b383b2e3a569bce33ddc1947fe8db30c38","ref":"refs/heads/publish-flow","pushedAt":"2024-05-07T20:23:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"chore: add publish ci workflow","shortMessageHtmlLink":"chore: add publish ci workflow"}},{"before":"d55e70a1d3b26918d63b026a2598c6e72058e603","after":null,"ref":"refs/heads/configs-test","pushedAt":"2024-04-08T21:59:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"}},{"before":"31b701dda14e12ede055019aaa848fdf2badd7c8","after":"4f0a8bd39af61da0f4c17ca9ee7ab968d70b8638","ref":"refs/heads/master","pushedAt":"2024-04-08T21:59:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"test: simplify config assertions (#197)\n\nA quick change to dumb the config tests down so they basically assert\r\nagainst the exported structure rather than an integration-like test.\r\n\r\nMay still be worth an integration test in future.\r\n\r\nPreviously, the 2nd test case was actually passing due to an unrelated\r\nerror (parse error, too low of an ecma version), which was satisfying\r\nthe later assertion.","shortMessageHtmlLink":"test: simplify config assertions (#197)"}},{"before":null,"after":"d55e70a1d3b26918d63b026a2598c6e72058e603","ref":"refs/heads/configs-test","pushedAt":"2024-04-08T21:58:40.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"test: simplify config assertions\n\nA quick change to dumb the config tests down so they basically assert\nagainst the exported structure rather than an integration-like test.\n\nMay still be worth an integration test in future.\n\nPreviously, the 2nd test case was actually passing due to an unrelated\nerror (parse error, too low of an ecma version), which was satisfying\nthe later assertion.","shortMessageHtmlLink":"test: simplify config assertions"}},{"before":"010412c4513fbd150921818886e1057b1f99ca52","after":null,"ref":"refs/heads/flats","pushedAt":"2024-03-23T11:35:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"}},{"before":"17a02f56089db912ea771bcc920f97c0e1c77918","after":"31b701dda14e12ede055019aaa848fdf2badd7c8","ref":"refs/heads/master","pushedAt":"2024-03-23T11:35:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"feat: support flat configs (#196)\n\n\r\nThis adds support for eslint's new flat config file feature.\r\n\r\nSupporting both systems in one config object is a rather messy\r\nsituation, so we've opted here for multiple distinct configs instead.\r\n\r\nOld style config files can continue using config objects:\r\n\r\n```json\r\n{\r\n extends: ['plugin:lit/recommended']\r\n}\r\n```\r\n\r\nWhile new style config files can use the `flat/recommended` variety:\r\n\r\n```json\r\n[\r\n {\r\n \"files\": [\"*.js\"],\r\n ...configs['flat/recommended']\r\n }\r\n]\r\n```","shortMessageHtmlLink":"feat: support flat configs (#196)"}},{"before":"ce776bfb157a34d6b5a0e8d03230c44bfdbeb1bc","after":"010412c4513fbd150921818886e1057b1f99ca52","ref":"refs/heads/flats","pushedAt":"2024-03-19T19:24:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"feat: add flat/all config","shortMessageHtmlLink":"feat: add flat/all config"}},{"before":null,"after":"ce776bfb157a34d6b5a0e8d03230c44bfdbeb1bc","ref":"refs/heads/flats","pushedAt":"2024-03-18T22:03:21.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"feat: support flat configs\n\nThis adds support for eslint's new flat config file feature.\n\nSupporting both systems in one config object is a rather messy\nsituation, so we've opted here for multiple distinct configs instead.\n\nOld style config files can continue using config objects:\n\n```json\n{\n extends: ['plugin:lit/recommended']\n}\n```\n\nWhile new style config files can use the `flat/recommended` variety:\n\n```json\n[\n {\n \"files\": [\"*.js\"],\n ...configs['flat/recommended']\n }\n]\n```","shortMessageHtmlLink":"feat: support flat configs"}},{"before":"33b487d20bb005305d6327b66d35f7ad56ea89b8","after":null,"ref":"refs/heads/pub","pushedAt":"2023-12-17T23:14:13.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"}},{"before":"077a22434f3139655dc28e82bd06552e24323ad8","after":"17a02f56089db912ea771bcc920f97c0e1c77918","ref":"refs/heads/master","pushedAt":"2023-12-17T23:14:10.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"Merge pull request #192 from 43081j/pub\n\n1.11.0","shortMessageHtmlLink":"Merge pull request #192 from 43081j/pub"}},{"before":null,"after":"33b487d20bb005305d6327b66d35f7ad56ea89b8","ref":"refs/heads/pub","pushedAt":"2023-12-17T21:47:25.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"1.11.0","shortMessageHtmlLink":"1.11.0"}},{"before":"e73e9522f160bddeaa740e4cba94589a54e9e917","after":null,"ref":"refs/heads/attr-names","pushedAt":"2023-12-04T20:39:12.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"}},{"before":"bd940379b1bb20e339e82e2a964d0a260833f7e1","after":"077a22434f3139655dc28e82bd06552e24323ad8","ref":"refs/heads/master","pushedAt":"2023-12-04T20:39:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"feat: new rule attribute-names (#191)\n\nThis introduces a new rule: `attribute-names`.\r\n\r\nThe rule enforces that all attributes are lowercase if the associated\r\nproperty is not.\r\n\r\nFor example:\r\n\r\n```ts\r\nclass Foo extends LitElement {\r\n @property()\r\n camelCase = 'foo';\r\n}\r\n```\r\n\r\nThis will fail since the default attribute will be `camelCase`, and\r\ntherefore not lowercase.\r\n\r\nThis should instead be:\r\n\r\n```ts\r\n@property({attribute: 'camel-case'})\r\n```\r\n\r\nThough in this rule, for now, the fact it is snake-case is a preference\r\nrather than being enforced by the rule.","shortMessageHtmlLink":"feat: new rule attribute-names (#191)"}},{"before":null,"after":"e73e9522f160bddeaa740e4cba94589a54e9e917","ref":"refs/heads/attr-names","pushedAt":"2023-11-27T21:39:53.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"feat: new rule attribute-names\n\nThis introduces a new rule: `attribute-names`.\n\nThe rule enforces that all attributes are lowercase if the associated\nproperty is not.\n\nFor example:\n\n```ts\nclass Foo extends LitElement {\n @property()\n camelCase = 'foo';\n}\n```\n\nThis will fail since the default attribute will be `camelCase`, and\ntherefore not lowercase.\n\nThis should instead be:\n\n```ts\n@property({attribute: 'camel-case'})\n```\n\nThough in this rule, for now, the fact it is snake-case is a preference\nrather than being enforced by the rule.","shortMessageHtmlLink":"feat: new rule attribute-names"}},{"before":"9531f1578e105d26637c60136bcfbc62d0146904","after":null,"ref":"refs/heads/boop","pushedAt":"2023-11-27T20:49:04.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"}},{"before":"6f33f7dee4f3c6080e1587c38510b6d2ace1ac21","after":"bd940379b1bb20e339e82e2a964d0a260833f7e1","ref":"refs/heads/master","pushedAt":"2023-11-27T20:49:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"chore: bump dev dependencies (#190)","shortMessageHtmlLink":"chore: bump dev dependencies (#190)"}},{"before":null,"after":"9531f1578e105d26637c60136bcfbc62d0146904","ref":"refs/heads/boop","pushedAt":"2023-11-27T20:40:15.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"chore: bump dev dependencies","shortMessageHtmlLink":"chore: bump dev dependencies"}},{"before":"576e927715306e2cefabd11b619e135df00698b7","after":null,"ref":"refs/heads/pub","pushedAt":"2023-10-24T16:11:45.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"}},{"before":"8f307c51b9b6a3c8e09d1ea552c5b61442dd7b66","after":"6f33f7dee4f3c6080e1587c38510b6d2ace1ac21","ref":"refs/heads/master","pushedAt":"2023-10-24T16:11:42.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"Merge pull request #186 from 43081j/pub\n\n1.10.1","shortMessageHtmlLink":"Merge pull request #186 from 43081j/pub"}},{"before":null,"after":"576e927715306e2cefabd11b619e135df00698b7","ref":"refs/heads/pub","pushedAt":"2023-10-24T16:10:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"1.10.1","shortMessageHtmlLink":"1.10.1"}},{"before":"1c544bfa78431c68fcbe734e9d59aa5b84116572","after":null,"ref":"refs/heads/fix-this-assign","pushedAt":"2023-10-24T16:09:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"}},{"before":"2c2a45639b268949873b83a7af385c3a7c015a44","after":"8f307c51b9b6a3c8e09d1ea552c5b61442dd7b66","ref":"refs/heads/master","pushedAt":"2023-10-24T16:09:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"43081j","name":"James Garbutt","path":"/43081j","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5677153?s=80&v=4"},"commit":{"message":"fix(no-this-assign-in-render): explicit left hand side traversal (#185)\n\nThe esquery we were using was too wide in that it would match a `.left`\r\nat _any_ level.\r\n\r\nThis meant the following code would match:\r\n\r\n```ts\r\nrender() {\r\n x = this.foo || 123;\r\n}\r\n```\r\n\r\nAs a `LogicalExpression` has a left just like an `AssignmentExpression`.\r\n\r\nSince esquery doesn't support relative direct child selection (i.e.\r\nusing `:has(> foo)`), we are now selecting the left side node and\r\nreporting on the parent instead.","shortMessageHtmlLink":"fix(no-this-assign-in-render): explicit left hand side traversal (#185)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAESeFK8gA","startCursor":null,"endCursor":null}},"title":"Activity ยท 43081j/eslint-plugin-lit"}