{"action":"created","comment":{"url":"https://api.github.com/repos/ngxs/store/pulls/comments/230580402","pull_request_review_id":171354065,"id":230580402,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzMDU4MDQwMg==","diff_hunk":"@@ -17,44 +17,52 @@ export class StateContextFactory {\n   /**\n    * Create the state context\n    */\n-  createStateContext(metadata: MappedStore): StateContext<any> {\n+  createStateContext<T>(metadata: MappedStore): StateContext<T> {\n     const root = this._internalStateOperations.getRootStateOperations();\n     return {\n-      getState(): any {\n+      getState(): T {\n         const state = root.getState();\n         return getValue(state, metadata.depth);\n       },\n-      patchState(val: any): any {\n-        const isArray = Array.isArray(val);\n-        const isPrimitive = typeof val !== 'object';\n-\n-        if (isArray) {\n-          throw new Error('Patching arrays is not supported.');\n-        } else if (isPrimitive) {\n-          throw new Error('Patching primitives is not supported.');\n-        }\n+      patchState(val: Partial<T> | PatchFunction<T>): T {\n+        const isFunction = typeof val === 'function';\n+        const patchOperation = isFunction ? <PatchFunction<T>>val : simplePatch<T>(<Partial<T>>val);\n \n         const state = root.getState();\n         const local = getValue(state, metadata.depth);\n-        const clone = { ...local };\n-\n-        for (const k in val) {\n-          clone[k] = val[k];\n-        }\n+        const clone = patchOperation(local);\n \n         const newState = setValue(state, metadata.depth, clone);\n         root.setState(newState);\n         return newState;\n       },\n-      setState(val: any): any {\n+      setState(val: T): T {\n         let state = root.getState();\n         state = setValue(state, metadata.depth, val);\n         root.setState(state);\n         return state;\n       },\n-      dispatch(actions: any | any[]): Observable<any> {\n+      dispatch(actions: any | any[]): Observable<void> {\n         return root.dispatch(actions);\n       }\n     };\n   }\n }\n+\n+function simplePatch<T>(val: Partial<T>): PatchFunction<T> {","path":"packages/store/src/internal/state-context-factory.ts","position":63,"original_position":63,"commit_id":"d6deda9773547d6caaea84c5c197792f89d71894","original_commit_id":"d6deda9773547d6caaea84c5c197792f89d71894","user":{"login":"splincode","id":12021443,"node_id":"MDQ6VXNlcjEyMDIxNDQz","avatar_url":"https://avatars3.githubusercontent.com/u/12021443?v=4","gravatar_id":"","url":"https://api.github.com/users/splincode","html_url":"https://github.com/splincode","followers_url":"https://api.github.com/users/splincode/followers","following_url":"https://api.github.com/users/splincode/following{/other_user}","gists_url":"https://api.github.com/users/splincode/gists{/gist_id}","starred_url":"https://api.github.com/users/splincode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/splincode/subscriptions","organizations_url":"https://api.github.com/users/splincode/orgs","repos_url":"https://api.github.com/users/splincode/repos","events_url":"https://api.github.com/users/splincode/events{/privacy}","received_events_url":"https://api.github.com/users/splincode/received_events","type":"User","site_admin":false},"body":"or return \r\n```ts\r\n{ ...existingState, ...val };\r\n```","created_at":"2018-11-04T09:54:31Z","updated_at":"2018-11-04T09:07:37Z","html_url":"https://github.com/ngxs/store/pull/635#discussion_r230580402","pull_request_url":"https://api.github.com/repos/ngxs/store/pulls/635","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/ngxs/store/pulls/comments/230580402"},"html":{"href":"https://github.com/ngxs/store/pull/635#discussion_r230580402"},"pull_request":{"href":"https://api.github.com/repos/ngxs/store/pulls/635"}},"in_reply_to_id":230558487},"pull_request":{"url":"https://api.github.com/repos/ngxs/store/pulls/635","id":228051407,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI4MDUxNDA3","html_url":"https://github.com/ngxs/store/pull/635","diff_url":"https://github.com/ngxs/store/pull/635.diff","patch_url":"https://github.com/ngxs/store/pull/635.patch","issue_url":"https://api.github.com/repos/ngxs/store/issues/635","number":635,"state":"open","locked":false,"title":"Enable patch extensibility","user":{"login":"markwhitfeld","id":1948265,"node_id":"MDQ6VXNlcjE5NDgyNjU=","avatar_url":"https://avatars0.githubusercontent.com/u/1948265?v=4","gravatar_id":"","url":"https://api.github.com/users/markwhitfeld","html_url":"https://github.com/markwhitfeld","followers_url":"https://api.github.com/users/markwhitfeld/followers","following_url":"https://api.github.com/users/markwhitfeld/following{/other_user}","gists_url":"https://api.github.com/users/markwhitfeld/gists{/gist_id}","starred_url":"https://api.github.com/users/markwhitfeld/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/markwhitfeld/subscriptions","organizations_url":"https://api.github.com/users/markwhitfeld/orgs","repos_url":"https://api.github.com/users/markwhitfeld/repos","events_url":"https://api.github.com/users/markwhitfeld/events{/privacy}","received_events_url":"https://api.github.com/users/markwhitfeld/received_events","type":"User","site_admin":false},"body":"## PR Checklist\r\nPlease check if your PR fulfills the following requirements:\r\n\r\n- [X] The commit message follows our guidelines: https://github.com/ngxs/store/blob/master/CONTRIBUTING.md#commit\r\n- [X] Tests for the changes have been added (for bug fixes / features)\r\n- [X] Docs have been added / updated (for bug fixes / features)\r\n\r\n## PR Type\r\nWhat kind of change does this PR introduce?\r\n\r\n<!-- Please check the one that applies to this PR using \"x\". -->\r\n```\r\n[ ] Bugfix\r\n[X] Feature\r\n[ ] Code style update (formatting, local variables)\r\n[ ] Refactoring (no functional changes, no api changes)\r\n[ ] Build related changes\r\n[ ] CI related changes\r\n[X] Documentation content changes\r\n[ ] Other... Please describe:\r\n```\r\n\r\n## What is the current behavior?\r\n<!-- Please describe the current behavior that you are modifying, or link to a relevant issue. -->\r\n\r\nIssue Number: N/A\r\n\r\n## What is the new behavior?\r\n\r\nAdded the ability to call eht `patchState` function with a patching function which will be given the\r\nexisting state and should return the new state. The signature of this function would be:\r\n```(currentState: ReadOnly<T>) => T```\r\nAll immutability concerns need to be honoured by this function. \r\nThis change is a general purpose extensibility point addition to the framework.\r\n\r\nFor example you could use a library like [immer](https://github.com/mweststrate/immer) that can handle these concerns for you and provide a different way of expressing your immutable update through direct mutation of a draft object. Here is the example from above expressed in this way:\r\n```TS\r\nimport produce from 'immer';\r\n\r\n// in class ZooState ...\r\n@Action(FeedZebra)\r\nfeedZebra(ctx: StateContext<ZooStateModel>, action: FeedZebra) {\r\n  ctx.patchState(produce((draft) => {\r\n    draft.zebraFood.push(action.zebraToFeed);\r\n  }));  \r\n}\r\n```\r\nHere the `produce` function from the `immer` library is called with just a single parameter so that it returns its' [curried form](https://github.com/mweststrate/immer#currying) that will take a value and return a new value with all the expressed changes applied.\r\n\r\nThis approach can also allow for the creation of well named helper functions that can be shared between handlers that require the same type of update. \r\nThe above example could be refactored to this:\r\n```TS\r\nimport produce from 'immer';\r\n\r\n// in class ZooState ...\r\n@Action(FeedZebra)\r\nfeedZebra(ctx: StateContext<ZooStateModel>, action: FeedZebra) {\r\n  ctx.patchState(addToZebraFood(action.zebraToFeed));\r\n}\r\n\r\n// defined elsewhere\r\nfunction addToZebraFood(itemToAdd) {\r\n  return produce((draft) => {\r\n    draft.zebraFood.push(itemToAdd);\r\n  });\r\n}\r\n```\r\n\r\n_Note that the use of immer is for demonstration purposes (it has not been added to the framework)._\r\n\r\n## Does this PR introduce a breaking change?\r\n```\r\n[ ] Yes\r\n[X] No\r\n```\r\n\r\n<!-- If this PR contains a breaking change, please describe the impact and migration path for existing applications below. -->\r\n\r\n\r\n## Other information\r\n","created_at":"2018-11-02T20:30:51Z","updated_at":"2018-11-04T09:58:18Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7f022725ce3364609df30fdde95f7e5a95adef14","assignee":null,"assignees":[],"requested_reviewers":[{"login":"deebloo","id":6563621,"node_id":"MDQ6VXNlcjY1NjM2MjE=","avatar_url":"https://avatars0.githubusercontent.com/u/6563621?v=4","gravatar_id":"","url":"https://api.github.com/users/deebloo","html_url":"https://github.com/deebloo","followers_url":"https://api.github.com/users/deebloo/followers","following_url":"https://api.github.com/users/deebloo/following{/other_user}","gists_url":"https://api.github.com/users/deebloo/gists{/gist_id}","starred_url":"https://api.github.com/users/deebloo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/deebloo/subscriptions","organizations_url":"https://api.github.com/users/deebloo/orgs","repos_url":"https://api.github.com/users/deebloo/repos","events_url":"https://api.github.com/users/deebloo/events{/privacy}","received_events_url":"https://api.github.com/users/deebloo/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":863615580,"node_id":"MDU6TGFiZWw4NjM2MTU1ODA=","url":"https://api.github.com/repos/ngxs/store/labels/domain:core","name":"domain:core","color":"1d76db","default":false},{"id":836482588,"node_id":"MDU6TGFiZWw4MzY0ODI1ODg=","url":"https://api.github.com/repos/ngxs/store/labels/type:feature","name":"type:feature","color":"0e8a16","default":false}],"milestone":{"url":"https://api.github.com/repos/ngxs/store/milestones/5","html_url":"https://github.com/ngxs/store/milestone/5","labels_url":"https://api.github.com/repos/ngxs/store/milestones/5/labels","id":3735975,"node_id":"MDk6TWlsZXN0b25lMzczNTk3NQ==","number":5,"title":"3.3.0","description":null,"creator":{"login":"markwhitfeld","id":1948265,"node_id":"MDQ6VXNlcjE5NDgyNjU=","avatar_url":"https://avatars0.githubusercontent.com/u/1948265?v=4","gravatar_id":"","url":"https://api.github.com/users/markwhitfeld","html_url":"https://github.com/markwhitfeld","followers_url":"https://api.github.com/users/markwhitfeld/followers","following_url":"https://api.github.com/users/markwhitfeld/following{/other_user}","gists_url":"https://api.github.com/users/markwhitfeld/gists{/gist_id}","starred_url":"https://api.github.com/users/markwhitfeld/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/markwhitfeld/subscriptions","organizations_url":"https://api.github.com/users/markwhitfeld/orgs","repos_url":"https://api.github.com/users/markwhitfeld/repos","events_url":"https://api.github.com/users/markwhitfeld/events{/privacy}","received_events_url":"https://api.github.com/users/markwhitfeld/received_events","type":"User","site_admin":false},"open_issues":12,"closed_issues":17,"state":"open","created_at":"2018-10-13T07:49:04Z","updated_at":"2018-11-03T14:12:13Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/ngxs/store/pulls/635/commits","review_comments_url":"https://api.github.com/repos/ngxs/store/pulls/635/comments","review_comment_url":"https://api.github.com/repos/ngxs/store/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ngxs/store/issues/635/comments","statuses_url":"https://api.github.com/repos/ngxs/store/statuses/d6deda9773547d6caaea84c5c197792f89d71894","head":{"label":"markwhitfeld:enable-patch-extensibility","ref":"enable-patch-extensibility","sha":"d6deda9773547d6caaea84c5c197792f89d71894","user":{"login":"markwhitfeld","id":1948265,"node_id":"MDQ6VXNlcjE5NDgyNjU=","avatar_url":"https://avatars0.githubusercontent.com/u/1948265?v=4","gravatar_id":"","url":"https://api.github.com/users/markwhitfeld","html_url":"https://github.com/markwhitfeld","followers_url":"https://api.github.com/users/markwhitfeld/followers","following_url":"https://api.github.com/users/markwhitfeld/following{/other_user}","gists_url":"https://api.github.com/users/markwhitfeld/gists{/gist_id}","starred_url":"https://api.github.com/users/markwhitfeld/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/markwhitfeld/subscriptions","organizations_url":"https://api.github.com/users/markwhitfeld/orgs","repos_url":"https://api.github.com/users/markwhitfeld/repos","events_url":"https://api.github.com/users/markwhitfeld/events{/privacy}","received_events_url":"https://api.github.com/users/markwhitfeld/received_events","type":"User","site_admin":false},"repo":{"id":128216932,"node_id":"MDEwOlJlcG9zaXRvcnkxMjgyMTY5MzI=","name":"store","full_name":"markwhitfeld/store","private":false,"owner":{"login":"markwhitfeld","id":1948265,"node_id":"MDQ6VXNlcjE5NDgyNjU=","avatar_url":"https://avatars0.githubusercontent.com/u/1948265?v=4","gravatar_id":"","url":"https://api.github.com/users/markwhitfeld","html_url":"https://github.com/markwhitfeld","followers_url":"https://api.github.com/users/markwhitfeld/followers","following_url":"https://api.github.com/users/markwhitfeld/following{/other_user}","gists_url":"https://api.github.com/users/markwhitfeld/gists{/gist_id}","starred_url":"https://api.github.com/users/markwhitfeld/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/markwhitfeld/subscriptions","organizations_url":"https://api.github.com/users/markwhitfeld/orgs","repos_url":"https://api.github.com/users/markwhitfeld/repos","events_url":"https://api.github.com/users/markwhitfeld/events{/privacy}","received_events_url":"https://api.github.com/users/markwhitfeld/received_events","type":"User","site_admin":false},"html_url":"https://github.com/markwhitfeld/store","description":"🚀 NGXS - State Management for Angular ","fork":true,"url":"https://api.github.com/repos/markwhitfeld/store","forks_url":"https://api.github.com/repos/markwhitfeld/store/forks","keys_url":"https://api.github.com/repos/markwhitfeld/store/keys{/key_id}","collaborators_url":"https://api.github.com/repos/markwhitfeld/store/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/markwhitfeld/store/teams","hooks_url":"https://api.github.com/repos/markwhitfeld/store/hooks","issue_events_url":"https://api.github.com/repos/markwhitfeld/store/issues/events{/number}","events_url":"https://api.github.com/repos/markwhitfeld/store/events","assignees_url":"https://api.github.com/repos/markwhitfeld/store/assignees{/user}","branches_url":"https://api.github.com/repos/markwhitfeld/store/branches{/branch}","tags_url":"https://api.github.com/repos/markwhitfeld/store/tags","blobs_url":"https://api.github.com/repos/markwhitfeld/store/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/markwhitfeld/store/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/markwhitfeld/store/git/refs{/sha}","trees_url":"https://api.github.com/repos/markwhitfeld/store/git/trees{/sha}","statuses_url":"https://api.github.com/repos/markwhitfeld/store/statuses/{sha}","languages_url":"https://api.github.com/repos/markwhitfeld/store/languages","stargazers_url":"https://api.github.com/repos/markwhitfeld/store/stargazers","contributors_url":"https://api.github.com/repos/markwhitfeld/store/contributors","subscribers_url":"https://api.github.com/repos/markwhitfeld/store/subscribers","subscription_url":"https://api.github.com/repos/markwhitfeld/store/subscription","commits_url":"https://api.github.com/repos/markwhitfeld/store/commits{/sha}","git_commits_url":"https://api.github.com/repos/markwhitfeld/store/git/commits{/sha}","comments_url":"https://api.github.com/repos/markwhitfeld/store/comments{/number}","issue_comment_url":"https://api.github.com/repos/markwhitfeld/store/issues/comments{/number}","contents_url":"https://api.github.com/repos/markwhitfeld/store/contents/{+path}","compare_url":"https://api.github.com/repos/markwhitfeld/store/compare/{base}...{head}","merges_url":"https://api.github.com/repos/markwhitfeld/store/merges","archive_url":"https://api.github.com/repos/markwhitfeld/store/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/markwhitfeld/store/downloads","issues_url":"https://api.github.com/repos/markwhitfeld/store/issues{/number}","pulls_url":"https://api.github.com/repos/markwhitfeld/store/pulls{/number}","milestones_url":"https://api.github.com/repos/markwhitfeld/store/milestones{/number}","notifications_url":"https://api.github.com/repos/markwhitfeld/store/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/markwhitfeld/store/labels{/name}","releases_url":"https://api.github.com/repos/markwhitfeld/store/releases{/id}","deployments_url":"https://api.github.com/repos/markwhitfeld/store/deployments","created_at":"2018-04-05T14:19:49Z","updated_at":"2018-11-02T20:05:05Z","pushed_at":"2018-11-02T20:21:39Z","git_url":"git://github.com/markwhitfeld/store.git","ssh_url":"git@github.com:markwhitfeld/store.git","clone_url":"https://github.com/markwhitfeld/store.git","svn_url":"https://github.com/markwhitfeld/store","homepage":"https://ngxs.gitbooks.io/ngxs/","size":3627,"stargazers_count":0,"watchers_count":0,"language":"TypeScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ngxs:master","ref":"master","sha":"e7d5450bc81b563944fffb02d91d2bd1ad43f805","user":{"login":"ngxs","id":37132593,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM3MTMyNTkz","avatar_url":"https://avatars2.githubusercontent.com/u/37132593?v=4","gravatar_id":"","url":"https://api.github.com/users/ngxs","html_url":"https://github.com/ngxs","followers_url":"https://api.github.com/users/ngxs/followers","following_url":"https://api.github.com/users/ngxs/following{/other_user}","gists_url":"https://api.github.com/users/ngxs/gists{/gist_id}","starred_url":"https://api.github.com/users/ngxs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ngxs/subscriptions","organizations_url":"https://api.github.com/users/ngxs/orgs","repos_url":"https://api.github.com/users/ngxs/repos","events_url":"https://api.github.com/users/ngxs/events{/privacy}","received_events_url":"https://api.github.com/users/ngxs/received_events","type":"Organization","site_admin":false},"repo":{"id":121422793,"node_id":"MDEwOlJlcG9zaXRvcnkxMjE0MjI3OTM=","name":"store","full_name":"ngxs/store","private":false,"owner":{"login":"ngxs","id":37132593,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM3MTMyNTkz","avatar_url":"https://avatars2.githubusercontent.com/u/37132593?v=4","gravatar_id":"","url":"https://api.github.com/users/ngxs","html_url":"https://github.com/ngxs","followers_url":"https://api.github.com/users/ngxs/followers","following_url":"https://api.github.com/users/ngxs/following{/other_user}","gists_url":"https://api.github.com/users/ngxs/gists{/gist_id}","starred_url":"https://api.github.com/users/ngxs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ngxs/subscriptions","organizations_url":"https://api.github.com/users/ngxs/orgs","repos_url":"https://api.github.com/users/ngxs/repos","events_url":"https://api.github.com/users/ngxs/events{/privacy}","received_events_url":"https://api.github.com/users/ngxs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/ngxs/store","description":"🚀 NGXS - State Management for Angular ","fork":false,"url":"https://api.github.com/repos/ngxs/store","forks_url":"https://api.github.com/repos/ngxs/store/forks","keys_url":"https://api.github.com/repos/ngxs/store/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ngxs/store/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ngxs/store/teams","hooks_url":"https://api.github.com/repos/ngxs/store/hooks","issue_events_url":"https://api.github.com/repos/ngxs/store/issues/events{/number}","events_url":"https://api.github.com/repos/ngxs/store/events","assignees_url":"https://api.github.com/repos/ngxs/store/assignees{/user}","branches_url":"https://api.github.com/repos/ngxs/store/branches{/branch}","tags_url":"https://api.github.com/repos/ngxs/store/tags","blobs_url":"https://api.github.com/repos/ngxs/store/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ngxs/store/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ngxs/store/git/refs{/sha}","trees_url":"https://api.github.com/repos/ngxs/store/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ngxs/store/statuses/{sha}","languages_url":"https://api.github.com/repos/ngxs/store/languages","stargazers_url":"https://api.github.com/repos/ngxs/store/stargazers","contributors_url":"https://api.github.com/repos/ngxs/store/contributors","subscribers_url":"https://api.github.com/repos/ngxs/store/subscribers","subscription_url":"https://api.github.com/repos/ngxs/store/subscription","commits_url":"https://api.github.com/repos/ngxs/store/commits{/sha}","git_commits_url":"https://api.github.com/repos/ngxs/store/git/commits{/sha}","comments_url":"https://api.github.com/repos/ngxs/store/comments{/number}","issue_comment_url":"https://api.github.com/repos/ngxs/store/issues/comments{/number}","contents_url":"https://api.github.com/repos/ngxs/store/contents/{+path}","compare_url":"https://api.github.com/repos/ngxs/store/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ngxs/store/merges","archive_url":"https://api.github.com/repos/ngxs/store/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ngxs/store/downloads","issues_url":"https://api.github.com/repos/ngxs/store/issues{/number}","pulls_url":"https://api.github.com/repos/ngxs/store/pulls{/number}","milestones_url":"https://api.github.com/repos/ngxs/store/milestones{/number}","notifications_url":"https://api.github.com/repos/ngxs/store/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ngxs/store/labels{/name}","releases_url":"https://api.github.com/repos/ngxs/store/releases{/id}","deployments_url":"https://api.github.com/repos/ngxs/store/deployments","created_at":"2018-02-13T18:55:44Z","updated_at":"2018-11-03T23:26:38Z","pushed_at":"2018-11-03T14:58:49Z","git_url":"git://github.com/ngxs/store.git","ssh_url":"git@github.com:ngxs/store.git","clone_url":"https://github.com/ngxs/store.git","svn_url":"https://github.com/ngxs/store","homepage":"http://ngxs.io","size":3641,"stargazers_count":1593,"watchers_count":1593,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":186,"mirror_url":null,"archived":false,"open_issues_count":90,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":186,"open_issues":90,"watchers":1593,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ngxs/store/pulls/635"},"html":{"href":"https://github.com/ngxs/store/pull/635"},"issue":{"href":"https://api.github.com/repos/ngxs/store/issues/635"},"comments":{"href":"https://api.github.com/repos/ngxs/store/issues/635/comments"},"review_comments":{"href":"https://api.github.com/repos/ngxs/store/pulls/635/comments"},"review_comment":{"href":"https://api.github.com/repos/ngxs/store/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ngxs/store/pulls/635/commits"},"statuses":{"href":"https://api.github.com/repos/ngxs/store/statuses/d6deda9773547d6caaea84c5c197792f89d71894"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"splincode"}}