{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":134032668,"defaultBranch":"master","name":"rfdc","ownerLogin":"davidmarkclements","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-05-19T05:29:36.000Z","ownerAvatar":"https://github.com/avatars/u/1190716?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1719843312.0","currentOid":""},"activityList":{"items":[{"before":"29ea53f8ccc618495b40cfafba475952b62be847","after":"a1ddca43295758cf33bb2ad0ff0e7219be2955d1","ref":"refs/heads/master","pushedAt":"2024-07-01T14:19:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mcollina","name":"Matteo Collina","path":"/mcollina","primaryAvatarUrl":"https://github.com/avatars/u/52195?s=80&v=4"},"commit":{"message":"Add security warning (#46)\n\nSigned-off-by: Matteo Collina ","shortMessageHtmlLink":"Add security warning (#46)"}},{"before":null,"after":"da21f6938b12caabd632d279f450a86340c9edad","ref":"refs/heads/add-security-warning","pushedAt":"2024-07-01T14:15:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mcollina","name":"Matteo Collina","path":"/mcollina","primaryAvatarUrl":"https://github.com/avatars/u/52195?s=80&v=4"},"commit":{"message":"Add security warning\n\nSigned-off-by: Matteo Collina ","shortMessageHtmlLink":"Add security warning"}},{"before":"6330dc0606e3652863444277cf3de39dbe32a55f","after":"29ea53f8ccc618495b40cfafba475952b62be847","ref":"refs/heads/master","pushedAt":"2024-06-12T10:18:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcollina","name":"Matteo Collina","path":"/mcollina","primaryAvatarUrl":"https://github.com/avatars/u/52195?s=80&v=4"},"commit":{"message":"Bumped v1.4.1.\n\nSigned-off-by: Matteo Collina ","shortMessageHtmlLink":"Bumped v1.4.1."}},{"before":"228fc35b43842273bc65d3d04484262d51506c50","after":"6330dc0606e3652863444277cf3de39dbe32a55f","ref":"refs/heads/master","pushedAt":"2024-06-12T10:17:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mcollina","name":"Matteo Collina","path":"/mcollina","primaryAvatarUrl":"https://github.com/avatars/u/52195?s=80&v=4"},"commit":{"message":"🏷️ Add type definitions for `constructorHandlers` option (#43)\n\nAdds TypeScript definitions for https://github.com/davidmarkclements/rfdc/pull/40","shortMessageHtmlLink":"🏷️ Add type definitions for constructorHandlers option (#43)"}},{"before":"8c6bfec5610aa47eee23f624db692c751a56268f","after":"228fc35b43842273bc65d3d04484262d51506c50","ref":"refs/heads/master","pushedAt":"2024-06-12T09:45:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcollina","name":"Matteo Collina","path":"/mcollina","primaryAvatarUrl":"https://github.com/avatars/u/52195?s=80&v=4"},"commit":{"message":"Bumped v1.4.0\n\nSigned-off-by: Matteo Collina ","shortMessageHtmlLink":"Bumped v1.4.0"}},{"before":"578c71ed2683f24ff2762220ad6b7466148aa5e6","after":"8c6bfec5610aa47eee23f624db692c751a56268f","ref":"refs/heads/master","pushedAt":"2024-06-12T09:44:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mcollina","name":"Matteo Collina","path":"/mcollina","primaryAvatarUrl":"https://github.com/avatars/u/52195?s=80&v=4"},"commit":{"message":"✨ Add `constructorHandlers` option (#40)\n\n* ✨ Add `constructorHandlers` option\r\n\r\nThe motivation of this change is to allow passing custom handlers for\r\nparticular classes. For example, [`ObjectId`][1].\r\n\r\nThese can be passed using the new `constructorHandlers` option:\r\n\r\n```js\r\nconst clone = rfdc({\r\n\tconstructorHandlers: [\r\n\t [ObjectId, (o) => new ObjectId(o)],\r\n\t],\r\n})\r\n```\r\n\r\nSimilarly, `RegExp` support can be added manually:\r\n\r\n```js\r\nconst clone = rfdc({\r\n\tconstructorHandlers: [\r\n\t [RegExp, (o) => new RegExp(o)],\r\n\t],\r\n})\r\n```\r\n\r\nInternally, the special handlers for `Date`, `Map`, and `Set` are\r\nmoved to use this mechanism to keep code tidy.\r\n\r\nLimitations\r\n-----------\r\n\r\nNote that - for performance - this is backed under the hood by a `Map`\r\nwith the classes as keys, which gives constant-time lookup (compared to\r\neg iterating over an array of handlers). A limitation that this\r\nintroduces is that subclasses would not be matched, and would need their\r\nown handlers, since we don't look up the prototype chain.\r\n\r\nPerformance\r\n-----------\r\n\r\nBenchmarks before:\r\n\r\n```\r\nbenchRfdc*100: 206.839ms\r\nbenchRfdcProto*100: 206.776ms\r\nbenchRfdcCircles*100: 231.711ms\r\nbenchRfdcCirclesProto*100: 229.874ms\r\n```\r\n\r\nBenchmarks after:\r\n\r\n```\r\nbenchRfdc*100: 221.126ms\r\nbenchRfdcProto*100: 239.467ms\r\nbenchRfdcCircles*100: 241.456ms\r\nbenchRfdcCirclesProto*100: 257.926ms\r\n```\r\n\r\n[1]: https://github.com/davidmarkclements/rfdc/issues/7\r\n\r\n* 📝 Add `constructorHandlers` option to `readme`\r\n\r\n* ⚡️ Add constructor handler fast path\r\n\r\nImproves benchmarks to:\r\n\r\n```\r\nbenchRfdc*100: 212.82ms\r\nbenchRfdcProto*100: 229.3ms\r\nbenchRfdcCircles*100: 255.588ms\r\nbenchRfdcCirclesProto*100: 238.306ms\r\n```\r\n\r\n* ⚡️ Assign handler in `if` statement\r\n\r\nImproves benchmarks to:\r\n\r\n```\r\nbenchRfdc*100: 203.999ms\r\nbenchRfdcProto*100: 215.779ms\r\nbenchRfdcCircles*100: 224.12ms\r\nbenchRfdcCirclesProto*100: 243.172ms\r\n```\r\n\r\n* 🚨 Fix linter warning about `RegExp`\r\n\r\n```\r\nstandard: Use JavaScript Standard Style (https://standardjs.com)\r\n /home/runner/work/rfdc/rfdc/test/index.js:124:25: Use a regular expression literal instead of the 'RegExp' constructor. (prefer-regex-literals)\r\n```\r\n\r\n* ⚡️ Avoid extra array allocation\r\n\r\nUpdated benchmark\r\n\r\n```\r\nbenchRfdc*100: 206.686ms\r\nbenchRfdcProto*100: 218.722ms\r\nbenchRfdcCircles*100: 228.578ms\r\nbenchRfdcCirclesProto*100: 239.244ms\r\n```","shortMessageHtmlLink":"✨ Add constructorHandlers option (#40)"}},{"before":"47f38dbd02692ce00a81ffdb73ed705e2a10d5fd","after":null,"ref":"refs/heads/fix-ci","pushedAt":"2024-06-12T09:05:34.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mcollina","name":"Matteo Collina","path":"/mcollina","primaryAvatarUrl":"https://github.com/avatars/u/52195?s=80&v=4"}},{"before":"eb9cfdc7de92a86227453b41bbd71c5a102fc5f1","after":"578c71ed2683f24ff2762220ad6b7466148aa5e6","ref":"refs/heads/master","pushedAt":"2024-06-12T09:05:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mcollina","name":"Matteo Collina","path":"/mcollina","primaryAvatarUrl":"https://github.com/avatars/u/52195?s=80&v=4"},"commit":{"message":"Run CI on Linux only, fix linting (#42)\n\nSigned-off-by: Matteo Collina ","shortMessageHtmlLink":"Run CI on Linux only, fix linting (#42)"}},{"before":null,"after":"47f38dbd02692ce00a81ffdb73ed705e2a10d5fd","ref":"refs/heads/fix-ci","pushedAt":"2024-06-12T09:01:00.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mcollina","name":"Matteo Collina","path":"/mcollina","primaryAvatarUrl":"https://github.com/avatars/u/52195?s=80&v=4"},"commit":{"message":"Run CI on Linux only, fix linting\n\nSigned-off-by: Matteo Collina ","shortMessageHtmlLink":"Run CI on Linux only, fix linting"}},{"before":"60d59a22b0b0c81eb36283cebeaaebea69097f32","after":"eb9cfdc7de92a86227453b41bbd71c5a102fc5f1","ref":"refs/heads/master","pushedAt":"2024-03-19T17:45:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcollina","name":"Matteo Collina","path":"/mcollina","primaryAvatarUrl":"https://github.com/avatars/u/52195?s=80&v=4"},"commit":{"message":"updated benchmarks\n\nSigned-off-by: Matteo Collina ","shortMessageHtmlLink":"updated benchmarks"}},{"before":"60507bfc0af798f033f645cebdf4aabb97a3ab77","after":"60d59a22b0b0c81eb36283cebeaaebea69097f32","ref":"refs/heads/master","pushedAt":"2024-03-18T10:43:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mcollina","name":"Matteo Collina","path":"/mcollina","primaryAvatarUrl":"https://github.com/avatars/u/52195?s=80&v=4"},"commit":{"message":"fix type in benchmark (#38)","shortMessageHtmlLink":"fix type in benchmark (#38)"}},{"before":"590831d40aecbe9459362d25696bd3a7edbf88c9","after":"60507bfc0af798f033f645cebdf4aabb97a3ab77","ref":"refs/heads/master","pushedAt":"2024-03-08T09:23:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcollina","name":"Matteo Collina","path":"/mcollina","primaryAvatarUrl":"https://github.com/avatars/u/52195?s=80&v=4"},"commit":{"message":"added structuredclone\n\nSigned-off-by: Matteo Collina ","shortMessageHtmlLink":"added structuredclone"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEc9pVZQA","startCursor":null,"endCursor":null}},"title":"Activity · davidmarkclements/rfdc"}