{"action":"created","comment":{"url":"https://api.github.com/repos/aurelia/aurelia/pulls/comments/236091894","pull_request_review_id":178099134,"id":236091894,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNjA5MTg5NA==","diff_hunk":"@@ -0,0 +1,59 @@\n+import { inject } from '@aurelia/kernel';\n+import {\n+  IExpressionParser,\n+  IResourceDescriptions,\n+  ITemplateCompiler,\n+  ITemplateDefinition,\n+  TemplateDefinition\n+} from '@aurelia/runtime';\n+import { IAttributeParser } from './attribute-parser';\n+import { IElementParser } from './element-parser';\n+import {\n+  InstructionBuilder,\n+  ISymbolVisitor,\n+  NodePreprocessor,\n+  ResourceLocator,\n+  SemanticModel,\n+  SymbolPreprocessor,\n+  TemplateFactory\n+} from './semantic-model-2';\n+\n+@inject(IExpressionParser, IElementParser, IAttributeParser)\n+export class TemplateCompiler implements ITemplateCompiler {\n+  public exprParser: IExpressionParser;\n+  public elParser: IElementParser;\n+  public attrParser: IAttributeParser;\n+\n+  public get name(): string {\n+    return 'default';\n+  }\n+\n+  constructor(exprParser: IExpressionParser, elParser: IElementParser, attrParser: IAttributeParser) {\n+    this.exprParser = exprParser;\n+    this.elParser = elParser;\n+    this.attrParser = attrParser;\n+  }\n+\n+  public compile(definition: ITemplateDefinition, resources: IResourceDescriptions): TemplateDefinition {\n+    const model = new SemanticModel(\n+      new ResourceLocator(resources),\n+      this.attrParser,\n+      new TemplateFactory(),\n+      this.exprParser\n+    );\n+\n+    const target = model.createCompilationTarget(definition);\n+\n+    const visitors: ISymbolVisitor[] = [\n+      new SymbolPreprocessor(model),\n+      new NodePreprocessor(model),\n+      new InstructionBuilder(model)\n+    ];\n+\n+    visitors.forEach(visitor => {\n+      target.accept(visitor);\n+    });\n+\n+    return <TemplateDefinition>target.definition;;","path":"packages/jit/src/template-compiler-2.ts","position":57,"original_position":57,"commit_id":"d23f13fb37393b2f54c14409183626643711ab30","original_commit_id":"d23f13fb37393b2f54c14409183626643711ab30","user":{"login":"BBosman","id":5115488,"node_id":"MDQ6VXNlcjUxMTU0ODg=","avatar_url":"https://avatars3.githubusercontent.com/u/5115488?v=4","gravatar_id":"","url":"https://api.github.com/users/BBosman","html_url":"https://github.com/BBosman","followers_url":"https://api.github.com/users/BBosman/followers","following_url":"https://api.github.com/users/BBosman/following{/other_user}","gists_url":"https://api.github.com/users/BBosman/gists{/gist_id}","starred_url":"https://api.github.com/users/BBosman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BBosman/subscriptions","organizations_url":"https://api.github.com/users/BBosman/orgs","repos_url":"https://api.github.com/users/BBosman/repos","events_url":"https://api.github.com/users/BBosman/events{/privacy}","received_events_url":"https://api.github.com/users/BBosman/received_events","type":"User","site_admin":false},"body":"A `;` too many.","created_at":"2018-11-25T21:58:15Z","updated_at":"2018-11-25T21:58:15Z","html_url":"https://github.com/aurelia/aurelia/pull/306#discussion_r236091894","pull_request_url":"https://api.github.com/repos/aurelia/aurelia/pulls/306","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/aurelia/aurelia/pulls/comments/236091894"},"html":{"href":"https://github.com/aurelia/aurelia/pull/306#discussion_r236091894"},"pull_request":{"href":"https://api.github.com/repos/aurelia/aurelia/pulls/306"}}},"pull_request":{"url":"https://api.github.com/repos/aurelia/aurelia/pulls/306","id":232489671,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMyNDg5Njcx","html_url":"https://github.com/aurelia/aurelia/pull/306","diff_url":"https://github.com/aurelia/aurelia/pull/306.diff","patch_url":"https://github.com/aurelia/aurelia/pull/306.patch","issue_url":"https://api.github.com/repos/aurelia/aurelia/issues/306","number":306,"state":"open","locked":false,"title":"WIP test utilities + replaceable template controller","user":{"login":"fkleuver","id":9655331,"node_id":"MDQ6VXNlcjk2NTUzMzE=","avatar_url":"https://avatars1.githubusercontent.com/u/9655331?v=4","gravatar_id":"","url":"https://api.github.com/users/fkleuver","html_url":"https://github.com/fkleuver","followers_url":"https://api.github.com/users/fkleuver/followers","following_url":"https://api.github.com/users/fkleuver/following{/other_user}","gists_url":"https://api.github.com/users/fkleuver/gists{/gist_id}","starred_url":"https://api.github.com/users/fkleuver/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fkleuver/subscriptions","organizations_url":"https://api.github.com/users/fkleuver/orgs","repos_url":"https://api.github.com/users/fkleuver/repos","events_url":"https://api.github.com/users/fkleuver/events{/privacy}","received_events_url":"https://api.github.com/users/fkleuver/received_events","type":"User","site_admin":false},"body":"<!---\r\nThanks for filing a pull request 😄 ! Before you submit, please read the following:\r\n\r\nSearch open/closed issues before submitting since someone might have pushed the same thing before!\r\n-->\r\n\r\n# Pull Request\r\n\r\n## 📖 Description\r\n\r\n### Update 2018-11-25\r\n\r\nThis now includes replacement typings for `lib.dom.d.ts` (that dependency is removed) as well as a full re-write of the template compiler and semantic model, which is hopefully soon done.\r\n\r\nAll this to overcome the limitations I was running into with replaceable.. not necessarily limitations, but things got too hacky and messy :)\r\n\r\n### Runtime integration test utilities\r\n\r\nMain goal of this PR is to further improve test coverage, fixing some small things along the way as they surface, and set up for a final cleanup and completing the test coverage for the runtime.\r\n\r\nI've decided to create a helper `TestBuilder` class that provides a sort of fluent API to build raw instructions. This makes tests (especially complex, deeply nested tests with mutations) easier to read, easier to write, and significantly faster to execute. It also constrains them to the runtime, which is where (by far) the largest portion of remaining tests are targeted at anyway.\r\n\r\nThe existing generated JIT integration tests are close to what I'd consider \"good enough\" for validating the template compiler, semantic model, etc. What's still missing are the not yet properly implemented features (mainly replaceable and surrogate compilation).\r\n\r\nSo I will be focusing mostly on the runtime integration tests going forward, as well as improving this test builder, paired with generated tests where it's feasible and sensible.\r\n\r\n**note**: I'm slightly deviating from the milestone order with this because I feel too many crucial scenarios are actually still missing in the test coverage, and I'd like to just cover a few more important angles before proceeding to add new features. This is also important for the router.\r\n\r\n### Replaceable template controller\r\n\r\nI've implemented the (JIT) compilation and scope traversal aspects of the `replaceable` template controller so that it's now working properly (to the extent that the still limited number of tests verify it)\r\n\r\nThe JIT part is probably as one would roughly expect in vNext. A new template definition is created for `replace-parts` on the fly, and this template definition is stored in the `parts` record of each `HydrateElementInstruction` entering the root definition.\r\n\r\nConsequently, `replace-parts` *could* be placed outside of the current element containing the `part` declaration. We might not want to advertise it (or even advise against it) for one reason or the other, but in principle there's nothing that prevents users from using it that way. It makes them more flexible than slots but at the same time disallows having multiple `replace-parts` with the same name within the same view. Depending on what the rest thinks, a few tweaks to the template compiler might be desirable to enforce this limitation. Should we though?\r\n\r\nScope traversal is quite different from vCurrent. The `IBindSelf` interface is removed and every `$bind` lifecycle now takes the scope from its parent. Custom elements previously just discarded it, but now the parent scope is stoerd on the scope.\r\nWith the `allowParentScopeTraversal` LifecycleFlag, the `replaceable` tells its child bindables that they're allowed to travel up the scope boundary if no properties are found within it. It's only allowed to travel one level up (by removing the flag after)\r\n\r\n<!---\r\nProvide some background and a description of your work.\r\n-->\r\n\r\n### 🎫 Issues\r\n\r\nDirectly related to https://github.com/aurelia/aurelia/issues/197\r\nLoosely related to https://github.com/aurelia/aurelia/issues/89\r\n<!---\r\n* List and link relevant issues here.\r\n-->\r\n\r\n## 👩‍💻 Reviewer Notes\r\n\r\n### Misc\r\n- Enables the `LengthObserver`: https://github.com/aurelia/aurelia/pull/306/files#diff-442b9e1f4993be33ec2440e362e7e364R10\r\n- Adds the attach/detach flags to start/stop task\r\n\r\n### Test related\r\n- Test scenarios are accumulated in [packages/runtime/test/integration/runtime.spec.ts](https://github.com/aurelia/aurelia/compare/test-coverage?expand=1#diff-c3914f9c46f091970560b58bd3bd3107)\r\n- Test scenarios are accumulated in [packages/runtime/test/integration/runtime.spec.ts](https://github.com/aurelia/aurelia/compare/test-coverage?expand=1#diff-c3914f9c46f091970560b58bd3bd3107)\r\n- The test builder is in [packages/runtime/test/integration/test-builder.ts](https://github.com/aurelia/aurelia/compare/test-coverage?expand=1#diff-b2e32df525baf76eefc9cfc57f6ce308)\r\n\r\n### Replaceable\r\n- Compilation: https://github.com/aurelia/aurelia/pull/306/files#diff-6311bbb5fb758683f5e5c11c3a0f20a5R499\r\n- Scope traversal: https://github.com/aurelia/aurelia/pull/306/files#diff-e97e1a37b14825b9c9e2b4a186809c2aR87 (parentScope is passed in via parent bindables, `Aurelia` passes in null)\r\n- 3 new flags: https://github.com/aurelia/aurelia/pull/306/files#diff-f4f7a420bc2504ec2ddb90e3e28afd70R34\r\n- flag is stored on binding so it can pass it through to AST: https://github.com/aurelia/aurelia/pull/306/files#diff-462d7124d7584037488f5af73fa5ab7aR44\r\n\r\n\r\n<!---\r\nProvide some notes for reviewers to help them provide targeted feedback.\r\n-->\r\n\r\n## 📑 Test Plan\r\n\r\nThe PR is the test plan :)\r\n<!---\r\nPlease provide a summary of the tests affected by this work and any unique strategies employed in testing the features/fixes.\r\n-->\r\n\r\n## ⏭ Next Steps\r\n\r\n- (current step): I want to try to cover as many scenarios as possible first, to reveal which kinds of structures the most complex tests might have.\r\n- There will be a follow-up PR to use code generation to expand these scenarios into a large number of different combinations.\r\n- It could be worthwhile to look into ways of turning the test builder (or some end-user-friendly variation thereof) into something usable enough for others that it can live under `packages/testing`.\r\n<!---\r\nIf there is relevant follow-up work to this PR, please list any existing issues or provide brief descriptions of what you would like to do next.\r\n-->\r\n\r\n<!--\r\nLove Aurelia? Please consider supporting our collective:\r\n👉  https://opencollective.com/aurelia\r\n-->\r\n","created_at":"2018-11-20T23:15:27Z","updated_at":"2018-11-25T21:58:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d8cb6b138df5006f097824f24214820ef37722cc","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1129463815,"node_id":"MDU6TGFiZWwxMTI5NDYzODE1","url":"https://api.github.com/repos/aurelia/aurelia/labels/scope:%20big%20changes","name":"scope: big changes","color":"FF0000","default":false},{"id":1129460992,"node_id":"MDU6TGFiZWwxMTI5NDYwOTky","url":"https://api.github.com/repos/aurelia/aurelia/labels/status:%20WIP","name":"status: WIP","color":"FF2222","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/aurelia/aurelia/pulls/306/commits","review_comments_url":"https://api.github.com/repos/aurelia/aurelia/pulls/306/comments","review_comment_url":"https://api.github.com/repos/aurelia/aurelia/pulls/comments{/number}","comments_url":"https://api.github.com/repos/aurelia/aurelia/issues/306/comments","statuses_url":"https://api.github.com/repos/aurelia/aurelia/statuses/d23f13fb37393b2f54c14409183626643711ab30","head":{"label":"aurelia:test-coverage","ref":"test-coverage","sha":"d23f13fb37393b2f54c14409183626643711ab30","user":{"login":"aurelia","id":9808864,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk4MDg4NjQ=","avatar_url":"https://avatars1.githubusercontent.com/u/9808864?v=4","gravatar_id":"","url":"https://api.github.com/users/aurelia","html_url":"https://github.com/aurelia","followers_url":"https://api.github.com/users/aurelia/followers","following_url":"https://api.github.com/users/aurelia/following{/other_user}","gists_url":"https://api.github.com/users/aurelia/gists{/gist_id}","starred_url":"https://api.github.com/users/aurelia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aurelia/subscriptions","organizations_url":"https://api.github.com/users/aurelia/orgs","repos_url":"https://api.github.com/users/aurelia/repos","events_url":"https://api.github.com/users/aurelia/events{/privacy}","received_events_url":"https://api.github.com/users/aurelia/received_events","type":"Organization","site_admin":false},"repo":{"id":121594173,"node_id":"MDEwOlJlcG9zaXRvcnkxMjE1OTQxNzM=","name":"aurelia","full_name":"aurelia/aurelia","private":false,"owner":{"login":"aurelia","id":9808864,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk4MDg4NjQ=","avatar_url":"https://avatars1.githubusercontent.com/u/9808864?v=4","gravatar_id":"","url":"https://api.github.com/users/aurelia","html_url":"https://github.com/aurelia","followers_url":"https://api.github.com/users/aurelia/followers","following_url":"https://api.github.com/users/aurelia/following{/other_user}","gists_url":"https://api.github.com/users/aurelia/gists{/gist_id}","starred_url":"https://api.github.com/users/aurelia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aurelia/subscriptions","organizations_url":"https://api.github.com/users/aurelia/orgs","repos_url":"https://api.github.com/users/aurelia/repos","events_url":"https://api.github.com/users/aurelia/events{/privacy}","received_events_url":"https://api.github.com/users/aurelia/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/aurelia/aurelia","description":"Aurelia vNext","fork":false,"url":"https://api.github.com/repos/aurelia/aurelia","forks_url":"https://api.github.com/repos/aurelia/aurelia/forks","keys_url":"https://api.github.com/repos/aurelia/aurelia/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aurelia/aurelia/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aurelia/aurelia/teams","hooks_url":"https://api.github.com/repos/aurelia/aurelia/hooks","issue_events_url":"https://api.github.com/repos/aurelia/aurelia/issues/events{/number}","events_url":"https://api.github.com/repos/aurelia/aurelia/events","assignees_url":"https://api.github.com/repos/aurelia/aurelia/assignees{/user}","branches_url":"https://api.github.com/repos/aurelia/aurelia/branches{/branch}","tags_url":"https://api.github.com/repos/aurelia/aurelia/tags","blobs_url":"https://api.github.com/repos/aurelia/aurelia/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aurelia/aurelia/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aurelia/aurelia/git/refs{/sha}","trees_url":"https://api.github.com/repos/aurelia/aurelia/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aurelia/aurelia/statuses/{sha}","languages_url":"https://api.github.com/repos/aurelia/aurelia/languages","stargazers_url":"https://api.github.com/repos/aurelia/aurelia/stargazers","contributors_url":"https://api.github.com/repos/aurelia/aurelia/contributors","subscribers_url":"https://api.github.com/repos/aurelia/aurelia/subscribers","subscription_url":"https://api.github.com/repos/aurelia/aurelia/subscription","commits_url":"https://api.github.com/repos/aurelia/aurelia/commits{/sha}","git_commits_url":"https://api.github.com/repos/aurelia/aurelia/git/commits{/sha}","comments_url":"https://api.github.com/repos/aurelia/aurelia/comments{/number}","issue_comment_url":"https://api.github.com/repos/aurelia/aurelia/issues/comments{/number}","contents_url":"https://api.github.com/repos/aurelia/aurelia/contents/{+path}","compare_url":"https://api.github.com/repos/aurelia/aurelia/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aurelia/aurelia/merges","archive_url":"https://api.github.com/repos/aurelia/aurelia/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aurelia/aurelia/downloads","issues_url":"https://api.github.com/repos/aurelia/aurelia/issues{/number}","pulls_url":"https://api.github.com/repos/aurelia/aurelia/pulls{/number}","milestones_url":"https://api.github.com/repos/aurelia/aurelia/milestones{/number}","notifications_url":"https://api.github.com/repos/aurelia/aurelia/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aurelia/aurelia/labels{/name}","releases_url":"https://api.github.com/repos/aurelia/aurelia/releases{/id}","deployments_url":"https://api.github.com/repos/aurelia/aurelia/deployments","created_at":"2018-02-15T05:22:58Z","updated_at":"2018-11-24T20:04:43Z","pushed_at":"2018-11-25T19:57:38Z","git_url":"git://github.com/aurelia/aurelia.git","ssh_url":"git@github.com:aurelia/aurelia.git","clone_url":"https://github.com/aurelia/aurelia.git","svn_url":"https://github.com/aurelia/aurelia","homepage":"","size":12147,"stargazers_count":386,"watchers_count":386,"language":"TypeScript","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":21,"mirror_url":null,"archived":false,"open_issues_count":36,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":21,"open_issues":36,"watchers":386,"default_branch":"master"}},"base":{"label":"aurelia:master","ref":"master","sha":"5c36bcc47a6b0ac5090dfe16d2867e62a497e9ff","user":{"login":"aurelia","id":9808864,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk4MDg4NjQ=","avatar_url":"https://avatars1.githubusercontent.com/u/9808864?v=4","gravatar_id":"","url":"https://api.github.com/users/aurelia","html_url":"https://github.com/aurelia","followers_url":"https://api.github.com/users/aurelia/followers","following_url":"https://api.github.com/users/aurelia/following{/other_user}","gists_url":"https://api.github.com/users/aurelia/gists{/gist_id}","starred_url":"https://api.github.com/users/aurelia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aurelia/subscriptions","organizations_url":"https://api.github.com/users/aurelia/orgs","repos_url":"https://api.github.com/users/aurelia/repos","events_url":"https://api.github.com/users/aurelia/events{/privacy}","received_events_url":"https://api.github.com/users/aurelia/received_events","type":"Organization","site_admin":false},"repo":{"id":121594173,"node_id":"MDEwOlJlcG9zaXRvcnkxMjE1OTQxNzM=","name":"aurelia","full_name":"aurelia/aurelia","private":false,"owner":{"login":"aurelia","id":9808864,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk4MDg4NjQ=","avatar_url":"https://avatars1.githubusercontent.com/u/9808864?v=4","gravatar_id":"","url":"https://api.github.com/users/aurelia","html_url":"https://github.com/aurelia","followers_url":"https://api.github.com/users/aurelia/followers","following_url":"https://api.github.com/users/aurelia/following{/other_user}","gists_url":"https://api.github.com/users/aurelia/gists{/gist_id}","starred_url":"https://api.github.com/users/aurelia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aurelia/subscriptions","organizations_url":"https://api.github.com/users/aurelia/orgs","repos_url":"https://api.github.com/users/aurelia/repos","events_url":"https://api.github.com/users/aurelia/events{/privacy}","received_events_url":"https://api.github.com/users/aurelia/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/aurelia/aurelia","description":"Aurelia vNext","fork":false,"url":"https://api.github.com/repos/aurelia/aurelia","forks_url":"https://api.github.com/repos/aurelia/aurelia/forks","keys_url":"https://api.github.com/repos/aurelia/aurelia/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aurelia/aurelia/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aurelia/aurelia/teams","hooks_url":"https://api.github.com/repos/aurelia/aurelia/hooks","issue_events_url":"https://api.github.com/repos/aurelia/aurelia/issues/events{/number}","events_url":"https://api.github.com/repos/aurelia/aurelia/events","assignees_url":"https://api.github.com/repos/aurelia/aurelia/assignees{/user}","branches_url":"https://api.github.com/repos/aurelia/aurelia/branches{/branch}","tags_url":"https://api.github.com/repos/aurelia/aurelia/tags","blobs_url":"https://api.github.com/repos/aurelia/aurelia/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aurelia/aurelia/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aurelia/aurelia/git/refs{/sha}","trees_url":"https://api.github.com/repos/aurelia/aurelia/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aurelia/aurelia/statuses/{sha}","languages_url":"https://api.github.com/repos/aurelia/aurelia/languages","stargazers_url":"https://api.github.com/repos/aurelia/aurelia/stargazers","contributors_url":"https://api.github.com/repos/aurelia/aurelia/contributors","subscribers_url":"https://api.github.com/repos/aurelia/aurelia/subscribers","subscription_url":"https://api.github.com/repos/aurelia/aurelia/subscription","commits_url":"https://api.github.com/repos/aurelia/aurelia/commits{/sha}","git_commits_url":"https://api.github.com/repos/aurelia/aurelia/git/commits{/sha}","comments_url":"https://api.github.com/repos/aurelia/aurelia/comments{/number}","issue_comment_url":"https://api.github.com/repos/aurelia/aurelia/issues/comments{/number}","contents_url":"https://api.github.com/repos/aurelia/aurelia/contents/{+path}","compare_url":"https://api.github.com/repos/aurelia/aurelia/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aurelia/aurelia/merges","archive_url":"https://api.github.com/repos/aurelia/aurelia/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aurelia/aurelia/downloads","issues_url":"https://api.github.com/repos/aurelia/aurelia/issues{/number}","pulls_url":"https://api.github.com/repos/aurelia/aurelia/pulls{/number}","milestones_url":"https://api.github.com/repos/aurelia/aurelia/milestones{/number}","notifications_url":"https://api.github.com/repos/aurelia/aurelia/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aurelia/aurelia/labels{/name}","releases_url":"https://api.github.com/repos/aurelia/aurelia/releases{/id}","deployments_url":"https://api.github.com/repos/aurelia/aurelia/deployments","created_at":"2018-02-15T05:22:58Z","updated_at":"2018-11-24T20:04:43Z","pushed_at":"2018-11-25T19:57:38Z","git_url":"git://github.com/aurelia/aurelia.git","ssh_url":"git@github.com:aurelia/aurelia.git","clone_url":"https://github.com/aurelia/aurelia.git","svn_url":"https://github.com/aurelia/aurelia","homepage":"","size":12147,"stargazers_count":386,"watchers_count":386,"language":"TypeScript","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":21,"mirror_url":null,"archived":false,"open_issues_count":36,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":21,"open_issues":36,"watchers":386,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/aurelia/aurelia/pulls/306"},"html":{"href":"https://github.com/aurelia/aurelia/pull/306"},"issue":{"href":"https://api.github.com/repos/aurelia/aurelia/issues/306"},"comments":{"href":"https://api.github.com/repos/aurelia/aurelia/issues/306/comments"},"review_comments":{"href":"https://api.github.com/repos/aurelia/aurelia/pulls/306/comments"},"review_comment":{"href":"https://api.github.com/repos/aurelia/aurelia/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/aurelia/aurelia/pulls/306/commits"},"statuses":{"href":"https://api.github.com/repos/aurelia/aurelia/statuses/d23f13fb37393b2f54c14409183626643711ab30"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"BBosman"}}