{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":432767611,"defaultBranch":"master","name":"Valinor","ownerLogin":"CuyZ","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-11-28T16:40:17.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/32244822?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1712249131.0","currentOid":""},"activityList":{"items":[{"before":"69e0e3a5f1de6a5eedcfa4125d8639be91f0c303","after":"ba22b5233e80f0ffbbe9591a5099b9dd62715eb8","ref":"refs/heads/master","pushedAt":"2024-07-22T20:31:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"fix: properly format empty object with JSON normalizer\n\nObjects that yield no value or have no property will now properly be\nformatted into `{}` instead of `[]`.","shortMessageHtmlLink":"fix: properly format empty object with JSON normalizer"}},{"before":"b1017ce55729f0698c7629d57a3d3a30c0f9bff3","after":"69e0e3a5f1de6a5eedcfa4125d8639be91f0c303","ref":"refs/heads/master","pushedAt":"2024-07-19T14:56:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"fix: allow docblock for transformer callable type","shortMessageHtmlLink":"fix: allow docblock for transformer callable type"}},{"before":"2ff1d021bb006d8f8db1b3f1e703ee55bcee2187","after":"b1017ce55729f0698c7629d57a3d3a30c0f9bff3","ref":"refs/heads/master","pushedAt":"2024-07-19T14:52:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"feat: add support for `value-of` type\n\nThis type can be used as follows:\r\n\r\n```php\r\nenum Suit: string\r\n{\r\n case Hearts = 'H';\r\n case Diamonds = 'D';\r\n case Clubs = 'C';\r\n case Spades = 'S';\r\n}\r\n\r\n$suit = (new \\CuyZ\\Valinor\\MapperBuilder())\r\n ->mapper()\r\n ->map(Suit::class, 'D');\r\n\r\n// $suit === Suit::Diamonds\r\n```","shortMessageHtmlLink":"feat: add support for value-of<BackedEnum> type"}},{"before":"02bd2e5e0f0e7d4daf234852464085bcdd1a0eb2","after":"2ff1d021bb006d8f8db1b3f1e703ee55bcee2187","ref":"refs/heads/master","pushedAt":"2024-06-06T17:17:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"doc: fix some typos","shortMessageHtmlLink":"doc: fix some typos"}},{"before":"c481b0720fc361a4b8caad76ccdcc856fe7177cc","after":"02bd2e5e0f0e7d4daf234852464085bcdd1a0eb2","ref":"refs/heads/master","pushedAt":"2024-06-06T17:15:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"feat: add microseconds support to timestamp format\n\nPrior to this patch, this would require a custom constructor in the form\nof:\n\n```php\nstatic fn(float | int $timestamp): DateTimeImmutable => new\nDateTimeImmutable(sprintf(\"@%d\", $timestamp)),\n```\n\nThis bypasses the datetime format support of Valinor entirely. This is\nrequired because the library does not support floats as valid\nDateTimeInterface input values.\n\nThis commit adds support for floats and registers timestamp.microseconds\n(U.u) as a valid default format.","shortMessageHtmlLink":"feat: add microseconds support to timestamp format"}},{"before":"40e6fa340819961068b8be178e312a99c06cede2","after":"c481b0720fc361a4b8caad76ccdcc856fe7177cc","ref":"refs/heads/master","pushedAt":"2024-06-06T17:07:10.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"test: add tests for `Ds\\Collection` normalization","shortMessageHtmlLink":"test: add tests for Ds\\Collection normalization"}},{"before":"c5860f0e5b3f59f49900bfbb20ca4493916eca7a","after":"40e6fa340819961068b8be178e312a99c06cede2","ref":"refs/heads/master","pushedAt":"2024-04-24T12:14:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"fix: handle interface generics","shortMessageHtmlLink":"fix: handle interface generics"}},{"before":"1803d094f08b256c64535f4f86e32ab35a07bbf1","after":"c5860f0e5b3f59f49900bfbb20ca4493916eca7a","ref":"refs/heads/master","pushedAt":"2024-04-24T12:08:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"fix: do not override invalid variadic parameter type","shortMessageHtmlLink":"fix: do not override invalid variadic parameter type"}},{"before":"6fad94a46785dfb853c11c241e3f60bcf6a85ede","after":"1803d094f08b256c64535f4f86e32ab35a07bbf1","ref":"refs/heads/master","pushedAt":"2024-04-13T11:51:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"misc: exclude unneeded attributes in class/function definitions\n\nThis change aims to reduce the memory usage, as well as the compiled\ncache size for classes that heavily rely on attributes that are not used\nby this library, for instance `OpenAPI` attributes.","shortMessageHtmlLink":"misc: exclude unneeded attributes in class/function definitions"}},{"before":"1278392757a4e9dc9eee2ab642c5700e83ccf982","after":"6fad94a46785dfb853c11c241e3f60bcf6a85ede","ref":"refs/heads/master","pushedAt":"2024-04-12T12:49:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"misc: improve mapping performance for nullable union type\n\nThis adds a check within the loop for union type mapping, which will\r\nskip `NullType` as it was already handled in `CasterProxyNodeBuilder`.\r\n\r\nThis greatly improves performance as it removes a useless call to the\r\nwhole node building process.","shortMessageHtmlLink":"misc: improve mapping performance for nullable union type"}},{"before":"6942755865f91c80af8ea97fde2faa390478a6b8","after":"1278392757a4e9dc9eee2ab642c5700e83ccf982","ref":"refs/heads/master","pushedAt":"2024-04-07T20:44:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"fix: properly handle nested local type aliases\n\nThe following annotation now works properly:\n\n```php\n/**\n * @phpstan-type Address = array{street?: string, city: string}\n * @phpstan-type User = array{name: non-empty-string, address: Address}\n */\nfinal class SomeClass\n{\n public function __construct(\n /** @var User */\n public $value,\n ) {}\n}\n\n(new \\CuyZ\\Valinor\\MapperBuilder())\n ->mapper()\n ->map(SomeClass::class, [\n 'name' => 'John Doe',\n 'address' => [\n 'street' => 'Bron-Yr-Aur',\n 'city' => 'SY20 8QA, Machynlleth',\n ],\n ]);\n ```","shortMessageHtmlLink":"fix: properly handle nested local type aliases"}},{"before":"86fb7b6303b15b54da6ac02ca8a7008b23c8bcff","after":"6942755865f91c80af8ea97fde2faa390478a6b8","ref":"refs/heads/master","pushedAt":"2024-04-07T15:26:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"fix: allow any constant in class constant type\n\nThe following annotation is now allowed:\n\n ```php\n final class SomeClass\n {\n public const FOO = 'foo';\n public const BAR = 42;\n }\n\n (new \\CuyZ\\Valinor\\MapperBuilder())\n ->mapper()\n ->map('SomeClass::*', 'foo'); // ✅\n```","shortMessageHtmlLink":"fix: allow any constant in class constant type"}},{"before":"d6616201e74e594f8e60ac7c5e070922584b3cad","after":"86fb7b6303b15b54da6ac02ca8a7008b23c8bcff","ref":"refs/heads/master","pushedAt":"2024-04-07T12:59:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"misc: reorganize type resolver services\n\nThis is a major refactor of the classes used to resolve types from all\nplaces: `@var`, `@param`, `@return`, `@extends`, `@template`,\n`@phpstan-type`, `@phpstan-import-type`.\n\nThe goal was to remove remaining usages of regex to resolve the types,\nand to move all parsing logic in dedicated classes instead of god\nclasses like the (now deleted) `ReflectionTypeResolver` and `DocParser`\nservices.","shortMessageHtmlLink":"misc: reorganize type resolver services"}},{"before":"3bc40798a5ff64aee8a28509b73f7f84d5c66ac9","after":"d6616201e74e594f8e60ac7c5e070922584b3cad","ref":"refs/heads/master","pushedAt":"2024-04-05T08:12:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"test: add JSON decoding check for normalizer","shortMessageHtmlLink":"test: add JSON decoding check for normalizer"}},{"before":"cd5df97d45b2687b4a79bf01e4b03d7deee28dfa","after":"3bc40798a5ff64aee8a28509b73f7f84d5c66ac9","ref":"refs/heads/master","pushedAt":"2024-04-04T16:42:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"release: version 1.12.0","shortMessageHtmlLink":"release: version 1.12.0"}},{"before":"4e04201f2b52f0054ac18bce6ea50b5440645351","after":"cd5df97d45b2687b4a79bf01e4b03d7deee28dfa","ref":"refs/heads/master","pushedAt":"2024-04-04T16:31:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"feat: allow JSON normalizer to set JSON formatting options\n\nBy default, the JSON normalizer will only use `JSON_THROW_ON_ERROR` to\r\nencode non-boolean scalar values. There might be use-cases where\r\nprojects will need flags like `JSON_JSON_PRESERVE_ZERO_FRACTION`.\r\n\r\nThis can be achieved by passing these flags to the new\r\n`JsonNormalizer::withOptions()` method:\r\n\r\n```php\r\nnamespace My\\App;\r\n\r\n$normalizer = (new \\CuyZ\\Valinor\\MapperBuilder())\r\n ->normalizer(\\CuyZ\\Valinor\\Normalizer\\Format::json())\r\n ->withOptions(\\JSON_PRESERVE_ZERO_FRACTION);\r\n\r\n$lowerManhattanAsJson = $normalizer->normalize(\r\n new \\My\\App\\Coordinates(\r\n longitude: 40.7128,\r\n latitude: -74.0000\r\n )\r\n);\r\n\r\n// `$lowerManhattanAsJson` is a valid JSON string representing the data:\r\n// {\"longitude\":40.7128,\"latitude\":-74.0000}\r\n```\r\n\r\nThe method accepts an int-mask of the following `JSON_*` constant\r\nrepresentations:\r\n\r\n- `JSON_HEX_QUOT`\r\n- `JSON_HEX_TAG`\r\n- `JSON_HEX_AMP`\r\n- `JSON_HEX_APOS`\r\n- `JSON_INVALID_UTF8_IGNORE`\r\n- `JSON_INVALID_UTF8_SUBSTITUTE`\r\n- `JSON_NUMERIC_CHECK`\r\n- `JSON_PRESERVE_ZERO_FRACTION`\r\n- `JSON_UNESCAPED_LINE_TERMINATORS`\r\n- `JSON_UNESCAPED_SLASHES`\r\n- `JSON_UNESCAPED_UNICODE`\r\n\r\n`JSON_THROW_ON_ERROR` is always enforced and thus is not accepted.\r\n\r\nSee official doc for more information:\r\nhttps://www.php.net/manual/en/json.constants.php","shortMessageHtmlLink":"feat: allow JSON normalizer to set JSON formatting options"}},{"before":"c4be75844bc71912fdbf34fac2523ca184d3c15f","after":"4e04201f2b52f0054ac18bce6ea50b5440645351","ref":"refs/heads/master","pushedAt":"2024-04-04T16:25:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"qa: replace PHPStan ignore annotation by `phpstan-assert-if-true`","shortMessageHtmlLink":"qa: replace PHPStan ignore annotation by phpstan-assert-if-true"}},{"before":"c8174bfe46b23442f47f9954a04272eaf5757ea3","after":"c4be75844bc71912fdbf34fac2523ca184d3c15f","ref":"refs/heads/master","pushedAt":"2024-04-02T16:42:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"fix: handle class tokens only when needed during lexing\n\nMajor refactor of how the lexer handles class/interface/enums, which\naims to avoid potentially expensive operations (like `class_exists`\nwhich can call the autoloader).\n\nThis results in a minor performance bump, and also fixes some issues\nconcerning shaped array keys matching class names.","shortMessageHtmlLink":"fix: handle class tokens only when needed during lexing"}},{"before":"4c62d87a68a7de4e60d070cb7298a19fd7ebad5a","after":"c8174bfe46b23442f47f9954a04272eaf5757ea3","ref":"refs/heads/master","pushedAt":"2024-04-02T16:12:20.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"qa: add documentation comment on PHPStan extension","shortMessageHtmlLink":"qa: add documentation comment on PHPStan extension"}},{"before":"c8e204a4a3cdfc681e99f80e0c1632e663a32161","after":"4c62d87a68a7de4e60d070cb7298a19fd7ebad5a","ref":"refs/heads/master","pushedAt":"2024-04-01T13:56:33.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"misc: rename internal class","shortMessageHtmlLink":"misc: rename internal class"}},{"before":"b5c460c3cdfe01f911c52e9e7a457742a0b11aa9","after":"c8e204a4a3cdfc681e99f80e0c1632e663a32161","ref":"refs/heads/master","pushedAt":"2024-03-30T17:52:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"fix: load needed information only during interface inferring\n\nThis commit changes the way interface inferring is done.\n\nPreviously, the whole set of information for all interfaces was loaded\neverytime the library was used, which could lead to performance issue\nfor no reason.\n\nNow, when an interface must be inferred, only information about this\ninterface will be loaded.","shortMessageHtmlLink":"fix: load needed information only during interface inferring"}},{"before":"3af22d16f6a4034611859a5998e6d0317d61dc4f","after":"b5c460c3cdfe01f911c52e9e7a457742a0b11aa9","ref":"refs/heads/master","pushedAt":"2024-03-27T22:11:06.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"test: add missing test for class declaring invalid type alias","shortMessageHtmlLink":"test: add missing test for class declaring invalid type alias"}},{"before":"5020d62e00e00fdb74ac26e83dd36b313e0a5ee1","after":"3af22d16f6a4034611859a5998e6d0317d61dc4f","ref":"refs/heads/master","pushedAt":"2024-03-27T20:35:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"feat: handle type importation from interface\n\nAllows usage of `@phpstan-import-type` and `@psalm-import-type` from\ninterfaces:\n\n```php\n/**\n * @phpstan-type SomeAlias = array{foo: string, bar: int}\n */\ninterface InterfaceWithPhpStanLocalAlias { }\n\n/**\n * @phpstan-import-type SomeAlias from InterfaceWithPhpStanLocalAlias\n */\nfinal class SomeClass\n{\n /** @var SomeAlias */\n public $value;\n}\n\n(new \\CuyZ\\Valinor\\MapperBuilder())\n ->mapper()\n ->map(SomeClass::class, [\n 'foo' => 'bar',\n 'bar' => 42,\n ]);\n```","shortMessageHtmlLink":"feat: handle type importation from interface"}},{"before":"3f1d86f1bcb7f48f802e02cb50f449b589a68990","after":"5020d62e00e00fdb74ac26e83dd36b313e0a5ee1","ref":"refs/heads/master","pushedAt":"2024-03-27T20:12:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"feat: allow mapping to `array-key` type","shortMessageHtmlLink":"feat: allow mapping to array-key type"}},{"before":"c9dc975357319ae77d352e17979888b08690ddbc","after":"3f1d86f1bcb7f48f802e02cb50f449b589a68990","ref":"refs/heads/master","pushedAt":"2024-03-27T13:22:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"release: version 1.11.0","shortMessageHtmlLink":"release: version 1.11.0"}},{"before":"19470614fa99b97341975a44fdf034ff6e9a6f6d","after":"c9dc975357319ae77d352e17979888b08690ddbc","ref":"refs/heads/master","pushedAt":"2024-03-27T13:00:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"fix: strengthen type tokens extraction\n\nThis commit refactors the way tokens are extracted from a raw type\nstring, by using a better approach that consists in splitting first into\ntokens, and then detecting texts (aka string values).\n\nThis aims to fix edge cases like the following example, where the `$bar`\nannotation would previously have confused the lexer, leading to the type\nof `$foo` being used for `$bar` as well.\n\n```php\nfinal class SomeClass\n{\n /**\n * @param non-empty-string $foo Some description containing $bar\n * which is the next parameter name\n */\n public function __construct(\n public string $foo,\n public int $bar,\n ) {}\n}\n```","shortMessageHtmlLink":"fix: strengthen type tokens extraction"}},{"before":"0f5e96e6a7567465c623914d038342ba56875595","after":"19470614fa99b97341975a44fdf034ff6e9a6f6d","ref":"refs/heads/master","pushedAt":"2024-03-27T12:51:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"fix: properly handle nested unresolvable type during mapping\n\nThis change brings two enhancements:\n\n- When mapping to a structure that contains a nested unresolvable type,\n for instance a doc-block type that does not match the native type, the\n mapper will detect it and throw a proper exception (it used to just\n crash on a badly designed assertion).\n- Unresolvable types that are not used during mapping, for instance\n parameters of methods that are not used by the mapper will no longer\n throw an exception even if not needed by the library. Instead, an\n unresolvable type is assigned to these invalid properties/parameters/\n return types.","shortMessageHtmlLink":"fix: properly handle nested unresolvable type during mapping"}},{"before":"37993b64a6eb04dc0aee79e03f2ddb4f86ff9c3a","after":"0f5e96e6a7567465c623914d038342ba56875595","ref":"refs/heads/master","pushedAt":"2024-03-24T18:43:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"fix: properly handle class type with matching name and namespace","shortMessageHtmlLink":"fix: properly handle class type with matching name and namespace"}},{"before":"0f0e35e71925bfb31ecd916766aca5492f12863d","after":"37993b64a6eb04dc0aee79e03f2ddb4f86ff9c3a","ref":"refs/heads/master","pushedAt":"2024-03-17T21:53:29.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"misc: separate native type and docblock type for property and parameter","shortMessageHtmlLink":"misc: separate native type and docblock type for property and parameter"}},{"before":"4f555d9bc9de996b5c577396076b674e17fbb429","after":"0f0e35e71925bfb31ecd916766aca5492f12863d","ref":"refs/heads/master","pushedAt":"2024-03-17T21:49:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"romm","name":"Romain Canon","path":"/romm","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6342901?s=80&v=4"},"commit":{"message":"misc: reduce number of calls to class autoloader during type parsing\n\nThis change aims to reduce the number of calls made to the global class\nautoloader, by limiting the class existence checks during type parsing.","shortMessageHtmlLink":"misc: reduce number of calls to class autoloader during type parsing"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEhi3-cgA","startCursor":null,"endCursor":null}},"title":"Activity · CuyZ/Valinor"}