{"action":"created","issue":{"url":"https://api.github.com/repos/theintern/intern/issues/732","repository_url":"https://api.github.com/repos/theintern/intern","labels_url":"https://api.github.com/repos/theintern/intern/issues/732/labels{/name}","comments_url":"https://api.github.com/repos/theintern/intern/issues/732/comments","events_url":"https://api.github.com/repos/theintern/intern/issues/732/events","html_url":"https://github.com/theintern/intern/issues/732","id":224596749,"number":732,"title":"Intern 4 pre-beta review","user":{"login":"dylans","id":97291,"avatar_url":"https://avatars2.githubusercontent.com/u/97291?v=3","gravatar_id":"","url":"https://api.github.com/users/dylans","html_url":"https://github.com/dylans","followers_url":"https://api.github.com/users/dylans/followers","following_url":"https://api.github.com/users/dylans/following{/other_user}","gists_url":"https://api.github.com/users/dylans/gists{/gist_id}","starred_url":"https://api.github.com/users/dylans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dylans/subscriptions","organizations_url":"https://api.github.com/users/dylans/orgs","repos_url":"https://api.github.com/users/dylans/repos","events_url":"https://api.github.com/users/dylans/events{/privacy}","received_events_url":"https://api.github.com/users/dylans/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"devpaul","id":331431,"avatar_url":"https://avatars1.githubusercontent.com/u/331431?v=3","gravatar_id":"","url":"https://api.github.com/users/devpaul","html_url":"https://github.com/devpaul","followers_url":"https://api.github.com/users/devpaul/followers","following_url":"https://api.github.com/users/devpaul/following{/other_user}","gists_url":"https://api.github.com/users/devpaul/gists{/gist_id}","starred_url":"https://api.github.com/users/devpaul/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devpaul/subscriptions","organizations_url":"https://api.github.com/users/devpaul/orgs","repos_url":"https://api.github.com/users/devpaul/repos","events_url":"https://api.github.com/users/devpaul/events{/privacy}","received_events_url":"https://api.github.com/users/devpaul/received_events","type":"User","site_admin":false},"assignees":[{"login":"devpaul","id":331431,"avatar_url":"https://avatars1.githubusercontent.com/u/331431?v=3","gravatar_id":"","url":"https://api.github.com/users/devpaul","html_url":"https://github.com/devpaul","followers_url":"https://api.github.com/users/devpaul/followers","following_url":"https://api.github.com/users/devpaul/following{/other_user}","gists_url":"https://api.github.com/users/devpaul/gists{/gist_id}","starred_url":"https://api.github.com/users/devpaul/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devpaul/subscriptions","organizations_url":"https://api.github.com/users/devpaul/orgs","repos_url":"https://api.github.com/users/devpaul/repos","events_url":"https://api.github.com/users/devpaul/events{/privacy}","received_events_url":"https://api.github.com/users/devpaul/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/theintern/intern/milestones/21","html_url":"https://github.com/theintern/intern/milestone/21","labels_url":"https://api.github.com/repos/theintern/intern/milestones/21/labels","id":1029941,"number":21,"title":"Intern 4.0","description":"","creator":{"login":"csnover","id":229244,"avatar_url":"https://avatars3.githubusercontent.com/u/229244?v=3","gravatar_id":"","url":"https://api.github.com/users/csnover","html_url":"https://github.com/csnover","followers_url":"https://api.github.com/users/csnover/followers","following_url":"https://api.github.com/users/csnover/following{/other_user}","gists_url":"https://api.github.com/users/csnover/gists{/gist_id}","starred_url":"https://api.github.com/users/csnover/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/csnover/subscriptions","organizations_url":"https://api.github.com/users/csnover/orgs","repos_url":"https://api.github.com/users/csnover/repos","events_url":"https://api.github.com/users/csnover/events{/privacy}","received_events_url":"https://api.github.com/users/csnover/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":6,"state":"open","created_at":"2015-03-19T20:17:07Z","updated_at":"2017-04-26T20:56:16Z","due_on":"2017-06-30T07:00:00Z","closed_at":null},"comments":7,"created_at":"2017-04-26T20:56:16Z","updated_at":"2017-05-09T18:26:36Z","closed_at":null,"body":"Goal is to make sure Intern 4 feels natural and efficient to use.\r\n\r\nWays to do this:\r\n\r\n* Install Intern 4 per instructions within Intern readme\r\n* Review source and APIs\r\n* Review existing examples and documentation\r\n* Run tests\r\n* Port some tests from Dojo 2 to use Intern 4\r\n\r\nAs you do this, you should look for things that feel suboptimal from a usability or developer ergonomics perspective, in particular:\r\n\r\n* Authoring tests with ES6 and TypeScript\r\n* Does the loaderless Intern approach feel straightforward\r\n* Can we easily test ES6 features without transpilation\r\n* What ES6+ features should be supported but are not yet within tests (e.g. async/await)\r\n* What do we need to do to improve the documentations, tutorials, and examples\r\n* What else?"},"comment":{"url":"https://api.github.com/repos/theintern/intern/issues/comments/300258892","html_url":"https://github.com/theintern/intern/issues/732#issuecomment-300258892","issue_url":"https://api.github.com/repos/theintern/intern/issues/732","id":300258892,"user":{"login":"jason0x43","id":1042866,"avatar_url":"https://avatars3.githubusercontent.com/u/1042866?v=3","gravatar_id":"","url":"https://api.github.com/users/jason0x43","html_url":"https://github.com/jason0x43","followers_url":"https://api.github.com/users/jason0x43/followers","following_url":"https://api.github.com/users/jason0x43/following{/other_user}","gists_url":"https://api.github.com/users/jason0x43/gists{/gist_id}","starred_url":"https://api.github.com/users/jason0x43/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jason0x43/subscriptions","organizations_url":"https://api.github.com/users/jason0x43/orgs","repos_url":"https://api.github.com/users/jason0x43/repos","events_url":"https://api.github.com/users/jason0x43/events{/privacy}","received_events_url":"https://api.github.com/users/jason0x43/received_events","type":"User","site_admin":false},"created_at":"2017-05-09T18:26:36Z","updated_at":"2017-05-09T18:26:36Z","body":"> Can we leverage this same pattern for preload scripts?\r\n\r\nWhich pattern? If we make plugins the standard place to do things, we should probably reduce the scope of what preload scripts are used for.\r\n\r\nThe original intention for preload scripts was simply to let Intern load scripts like `babel-register` very early in the loading process (kind of like mocha's `require` flag). The same mechanism ended up being used for other things, like registering beforeRun handlers, for consistency (there's one way to do things, event handlers, and a standard place to use them, preload scripts).\r\n\r\n> If script is present on the configuration, will it always load using the default loader (i.e. node/script injection)?\r\n\r\nI was thinking it would load using the currently configure loader; otherwise you'd miss out on being able to write local plugins without building/bundling them, or you'd always have to explicitly invoke loader (call `System.import` in a script vs writing plugins as standard modules).\r\n\r\n> How can users run an async preload script or plugin?\r\n\r\nIntern's event handler waits for listeners to resolve when processing an event, so returning a Promise from a handler (like 'beforeRun') is sufficient. If Promises aren't available, the executor provides a `createDeferred` method, and the deferred's promise can be returned.\r\n\r\n> Assuming a user wants to write an ad-hoc plugin that uses their loader, it would look something like:\r\n\r\nCurrently, if a user wants to write something that uses their own loader, they would write a preload script that looked something like this (assuming, for example, their loader was SystemJS) and include it in the `preload` array:\r\n\r\n```ts\r\nintern.on('beforeRun', () => {\r\n    return SystemJS.import('my/module').then(module => {\r\n        // do stuff with module\r\n    });\r\n});\r\n```\r\n\r\nThe only reason we'd need to actually load the script itself with an external loader is if the script imported other modules and wasn't bundled.\r\n\r\n```ts\r\nimport module from 'my/module';\r\nintern.on('beforeRun', () => {\r\n    // do stuff with module\r\n});\r\n```"}}
{"actor":{"display_login":"jason0x43"}}