{"action":"created","comment":{"url":"https://api.github.com/repos/learningequality/kolibri/pulls/comments/79251006","id":79251006,"diff_hunk":"@@ -122,26 +122,60 @@ Kolibri provides a set of shared \"core\" functionality – including components,\n JS Libraries\n ~~~~~~~~~~~~\n \n-The following libraries are available globally, in all plugin code:\n+The following libraries are available globally, in all module code:\n \n - ``vue`` - the Vue.js object\n-- ``loglevel`` - the `loglevel logging module <https://github.com/pimterry/loglevel>`_\n+- ``vuex`` - the Vuex object\n+- ``logging`` - our wrapper around the `loglevel logging module <https://github.com/pimterry/loglevel>`_\n - ``core-base`` - a shared base Vue.js component (*core-base.vue*)\n \n-These can be used in code with a standard CommonJS-style require statement - e.g.:\n+And many others. The complete specification for commonly shared modules can be found in `kolibri/core/assets/src/core-app/apiSpec.js` - this object defines which modules are imported into the core object. If the module in question has the 'requireName' attribute set on the core specification, then it can be used in code with a standard CommonJS-style require statement - e.g.:\n \n .. code-block:: javascript\n \n-  const vue = require('vue');\n-  const coreBase = require('core-base');\n+  const vue = require('kolibri/lib/vue');\n+  const coreBase = require('kolibri/coreVue/components/coreBase');\n \n .. note::\n \n-  Due to the mechanics of the `plugin and webpack build system <asset_loading>`_, adding additional globally-available objects is somewhat complicated.\n+  Due to the mechanics of the `plugin and webpack build system <asset_loading>`_, adding additional globally-available objects is relatively straightforward.","path":"docs/dev/frontend.rst","position":26,"original_position":26,"commit_id":"fee3417f07d4c60c54e46a62992ed375818e4b4e","original_commit_id":"fee3417f07d4c60c54e46a62992ed375818e4b4e","user":{"login":"indirectlylit","id":2367265,"avatar_url":"https://avatars.githubusercontent.com/u/2367265?v=3","gravatar_id":"","url":"https://api.github.com/users/indirectlylit","html_url":"https://github.com/indirectlylit","followers_url":"https://api.github.com/users/indirectlylit/followers","following_url":"https://api.github.com/users/indirectlylit/following{/other_user}","gists_url":"https://api.github.com/users/indirectlylit/gists{/gist_id}","starred_url":"https://api.github.com/users/indirectlylit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/indirectlylit/subscriptions","organizations_url":"https://api.github.com/users/indirectlylit/orgs","repos_url":"https://api.github.com/users/indirectlylit/repos","events_url":"https://api.github.com/users/indirectlylit/events{/privacy}","received_events_url":"https://api.github.com/users/indirectlylit/received_events","type":"User","site_admin":false},"body":":)","created_at":"2016-09-16T21:05:16Z","updated_at":"2016-09-16T21:05:16Z","html_url":"https://github.com/learningequality/kolibri/pull/513#discussion_r79251006","pull_request_url":"https://api.github.com/repos/learningequality/kolibri/pulls/513","_links":{"self":{"href":"https://api.github.com/repos/learningequality/kolibri/pulls/comments/79251006"},"html":{"href":"https://github.com/learningequality/kolibri/pull/513#discussion_r79251006"},"pull_request":{"href":"https://api.github.com/repos/learningequality/kolibri/pulls/513"}}},"pull_request":{"url":"https://api.github.com/repos/learningequality/kolibri/pulls/513","id":84398017,"html_url":"https://github.com/learningequality/kolibri/pull/513","diff_url":"https://github.com/learningequality/kolibri/pull/513.diff","patch_url":"https://github.com/learningequality/kolibri/pull/513.patch","issue_url":"https://api.github.com/repos/learningequality/kolibri/issues/513","number":513,"state":"open","locked":false,"title":"Core api refactor","user":{"login":"rtibbles","id":1680573,"avatar_url":"https://avatars.githubusercontent.com/u/1680573?v=3","gravatar_id":"","url":"https://api.github.com/users/rtibbles","html_url":"https://github.com/rtibbles","followers_url":"https://api.github.com/users/rtibbles/followers","following_url":"https://api.github.com/users/rtibbles/following{/other_user}","gists_url":"https://api.github.com/users/rtibbles/gists{/gist_id}","starred_url":"https://api.github.com/users/rtibbles/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtibbles/subscriptions","organizations_url":"https://api.github.com/users/rtibbles/orgs","repos_url":"https://api.github.com/users/rtibbles/repos","events_url":"https://api.github.com/users/rtibbles/events{/privacy}","received_events_url":"https://api.github.com/users/rtibbles/received_events","type":"User","site_admin":false},"body":"## Summary\r\n\r\nRefactors the Core Kolibri Javascript API to be specified almost completely in a single file.\r\n\r\nThis is to address issues raised here: https://trello.com/c/RFDyaKsk/357-clean-up-process-for-importing-core-client-assets\r\n\r\nEssentially, now `kolibri/core/assets/src/core-app/apiSpec.js` is now the canonical place to specify modules that are bundled into the core app.\r\n\r\nThis specification is used both by the core app constructor, and also by the webpack build process in order to specify externals and aliases to allow modules to be reused across plugins, but without having to specify this in multiple places in the code base.\r\n\r\n## TODO\r\n\r\n- [x] Have tests been written for the new code?\r\n- [x] Has documentation been written/updated?\r\n- [X] New dependencies (if any) added to requirements file\r\n- [x] Add yourself it AUTHORS.rst if you don't appear there\r\n- [x] Add path driven require aliasing, so we would require things by e.g.: `require('kolibri/styles/nav-bar-item')`\r\n\r\n## Reviewer guidance\r\n\r\nThe API is now mapped out in `apiSpec.js`.\r\n\r\nThis is imported into the core app with `constructorExport.js`.\r\n\r\nThe API spec is converted for use in the build process by functions in `apiSpecExportTools.js`.\r\n\r\nWhile I have specified a particular API structure here, that is completely up for grabs. The tooling that allows us to specify *any* structure we want is the most important thing here. Happy to make iterative improvements to the layout of the spec.\r\n\r\n## Documentation\r\n\r\nUpdated comments after review, added to docs here: https://github.com/rtibbles/kolibri/blob/801b4f4a705a0a566b04a2f6704c38ac4396ffae/docs/dev/frontend.rst","created_at":"2016-09-08T00:49:55Z","updated_at":"2016-09-16T21:05:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f321089679146da622d75addc0b429f655dac178","assignee":{"login":"aronasorman","id":191955,"avatar_url":"https://avatars.githubusercontent.com/u/191955?v=3","gravatar_id":"","url":"https://api.github.com/users/aronasorman","html_url":"https://github.com/aronasorman","followers_url":"https://api.github.com/users/aronasorman/followers","following_url":"https://api.github.com/users/aronasorman/following{/other_user}","gists_url":"https://api.github.com/users/aronasorman/gists{/gist_id}","starred_url":"https://api.github.com/users/aronasorman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aronasorman/subscriptions","organizations_url":"https://api.github.com/users/aronasorman/orgs","repos_url":"https://api.github.com/users/aronasorman/repos","events_url":"https://api.github.com/users/aronasorman/events{/privacy}","received_events_url":"https://api.github.com/users/aronasorman/received_events","type":"User","site_admin":false},"assignees":[{"login":"aronasorman","id":191955,"avatar_url":"https://avatars.githubusercontent.com/u/191955?v=3","gravatar_id":"","url":"https://api.github.com/users/aronasorman","html_url":"https://github.com/aronasorman","followers_url":"https://api.github.com/users/aronasorman/followers","following_url":"https://api.github.com/users/aronasorman/following{/other_user}","gists_url":"https://api.github.com/users/aronasorman/gists{/gist_id}","starred_url":"https://api.github.com/users/aronasorman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aronasorman/subscriptions","organizations_url":"https://api.github.com/users/aronasorman/orgs","repos_url":"https://api.github.com/users/aronasorman/repos","events_url":"https://api.github.com/users/aronasorman/events{/privacy}","received_events_url":"https://api.github.com/users/aronasorman/received_events","type":"User","site_admin":false},{"login":"jamalex","id":618416,"avatar_url":"https://avatars.githubusercontent.com/u/618416?v=3","gravatar_id":"","url":"https://api.github.com/users/jamalex","html_url":"https://github.com/jamalex","followers_url":"https://api.github.com/users/jamalex/followers","following_url":"https://api.github.com/users/jamalex/following{/other_user}","gists_url":"https://api.github.com/users/jamalex/gists{/gist_id}","starred_url":"https://api.github.com/users/jamalex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamalex/subscriptions","organizations_url":"https://api.github.com/users/jamalex/orgs","repos_url":"https://api.github.com/users/jamalex/repos","events_url":"https://api.github.com/users/jamalex/events{/privacy}","received_events_url":"https://api.github.com/users/jamalex/received_events","type":"User","site_admin":false},{"login":"indirectlylit","id":2367265,"avatar_url":"https://avatars.githubusercontent.com/u/2367265?v=3","gravatar_id":"","url":"https://api.github.com/users/indirectlylit","html_url":"https://github.com/indirectlylit","followers_url":"https://api.github.com/users/indirectlylit/followers","following_url":"https://api.github.com/users/indirectlylit/following{/other_user}","gists_url":"https://api.github.com/users/indirectlylit/gists{/gist_id}","starred_url":"https://api.github.com/users/indirectlylit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/indirectlylit/subscriptions","organizations_url":"https://api.github.com/users/indirectlylit/orgs","repos_url":"https://api.github.com/users/indirectlylit/repos","events_url":"https://api.github.com/users/indirectlylit/events{/privacy}","received_events_url":"https://api.github.com/users/indirectlylit/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/learningequality/kolibri/pulls/513/commits","review_comments_url":"https://api.github.com/repos/learningequality/kolibri/pulls/513/comments","review_comment_url":"https://api.github.com/repos/learningequality/kolibri/pulls/comments{/number}","comments_url":"https://api.github.com/repos/learningequality/kolibri/issues/513/comments","statuses_url":"https://api.github.com/repos/learningequality/kolibri/statuses/fee3417f07d4c60c54e46a62992ed375818e4b4e","head":{"label":"rtibbles:core_api_refactor","ref":"core_api_refactor","sha":"fee3417f07d4c60c54e46a62992ed375818e4b4e","user":{"login":"rtibbles","id":1680573,"avatar_url":"https://avatars.githubusercontent.com/u/1680573?v=3","gravatar_id":"","url":"https://api.github.com/users/rtibbles","html_url":"https://github.com/rtibbles","followers_url":"https://api.github.com/users/rtibbles/followers","following_url":"https://api.github.com/users/rtibbles/following{/other_user}","gists_url":"https://api.github.com/users/rtibbles/gists{/gist_id}","starred_url":"https://api.github.com/users/rtibbles/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtibbles/subscriptions","organizations_url":"https://api.github.com/users/rtibbles/orgs","repos_url":"https://api.github.com/users/rtibbles/repos","events_url":"https://api.github.com/users/rtibbles/events{/privacy}","received_events_url":"https://api.github.com/users/rtibbles/received_events","type":"User","site_admin":false},"repo":{"id":50074818,"name":"kolibri","full_name":"rtibbles/kolibri","owner":{"login":"rtibbles","id":1680573,"avatar_url":"https://avatars.githubusercontent.com/u/1680573?v=3","gravatar_id":"","url":"https://api.github.com/users/rtibbles","html_url":"https://github.com/rtibbles","followers_url":"https://api.github.com/users/rtibbles/followers","following_url":"https://api.github.com/users/rtibbles/following{/other_user}","gists_url":"https://api.github.com/users/rtibbles/gists{/gist_id}","starred_url":"https://api.github.com/users/rtibbles/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtibbles/subscriptions","organizations_url":"https://api.github.com/users/rtibbles/orgs","repos_url":"https://api.github.com/users/rtibbles/repos","events_url":"https://api.github.com/users/rtibbles/events{/privacy}","received_events_url":"https://api.github.com/users/rtibbles/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rtibbles/kolibri","description":"This is where Kolibri shall be born, watch and participate!","fork":true,"url":"https://api.github.com/repos/rtibbles/kolibri","forks_url":"https://api.github.com/repos/rtibbles/kolibri/forks","keys_url":"https://api.github.com/repos/rtibbles/kolibri/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rtibbles/kolibri/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rtibbles/kolibri/teams","hooks_url":"https://api.github.com/repos/rtibbles/kolibri/hooks","issue_events_url":"https://api.github.com/repos/rtibbles/kolibri/issues/events{/number}","events_url":"https://api.github.com/repos/rtibbles/kolibri/events","assignees_url":"https://api.github.com/repos/rtibbles/kolibri/assignees{/user}","branches_url":"https://api.github.com/repos/rtibbles/kolibri/branches{/branch}","tags_url":"https://api.github.com/repos/rtibbles/kolibri/tags","blobs_url":"https://api.github.com/repos/rtibbles/kolibri/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rtibbles/kolibri/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rtibbles/kolibri/git/refs{/sha}","trees_url":"https://api.github.com/repos/rtibbles/kolibri/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rtibbles/kolibri/statuses/{sha}","languages_url":"https://api.github.com/repos/rtibbles/kolibri/languages","stargazers_url":"https://api.github.com/repos/rtibbles/kolibri/stargazers","contributors_url":"https://api.github.com/repos/rtibbles/kolibri/contributors","subscribers_url":"https://api.github.com/repos/rtibbles/kolibri/subscribers","subscription_url":"https://api.github.com/repos/rtibbles/kolibri/subscription","commits_url":"https://api.github.com/repos/rtibbles/kolibri/commits{/sha}","git_commits_url":"https://api.github.com/repos/rtibbles/kolibri/git/commits{/sha}","comments_url":"https://api.github.com/repos/rtibbles/kolibri/comments{/number}","issue_comment_url":"https://api.github.com/repos/rtibbles/kolibri/issues/comments{/number}","contents_url":"https://api.github.com/repos/rtibbles/kolibri/contents/{+path}","compare_url":"https://api.github.com/repos/rtibbles/kolibri/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rtibbles/kolibri/merges","archive_url":"https://api.github.com/repos/rtibbles/kolibri/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rtibbles/kolibri/downloads","issues_url":"https://api.github.com/repos/rtibbles/kolibri/issues{/number}","pulls_url":"https://api.github.com/repos/rtibbles/kolibri/pulls{/number}","milestones_url":"https://api.github.com/repos/rtibbles/kolibri/milestones{/number}","notifications_url":"https://api.github.com/repos/rtibbles/kolibri/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rtibbles/kolibri/labels{/name}","releases_url":"https://api.github.com/repos/rtibbles/kolibri/releases{/id}","deployments_url":"https://api.github.com/repos/rtibbles/kolibri/deployments","created_at":"2016-01-21T02:03:42Z","updated_at":"2016-01-31T03:57:29Z","pushed_at":"2016-09-16T20:53:50Z","git_url":"git://github.com/rtibbles/kolibri.git","ssh_url":"git@github.com:rtibbles/kolibri.git","clone_url":"https://github.com/rtibbles/kolibri.git","svn_url":"https://github.com/rtibbles/kolibri","homepage":"http://learningequality.org/kolibri/","size":8307,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"learningequality:master","ref":"master","sha":"49afff58f4fd5a9ff49bcf69292090c3bc3b16d1","user":{"login":"learningequality","id":3926525,"avatar_url":"https://avatars.githubusercontent.com/u/3926525?v=3","gravatar_id":"","url":"https://api.github.com/users/learningequality","html_url":"https://github.com/learningequality","followers_url":"https://api.github.com/users/learningequality/followers","following_url":"https://api.github.com/users/learningequality/following{/other_user}","gists_url":"https://api.github.com/users/learningequality/gists{/gist_id}","starred_url":"https://api.github.com/users/learningequality/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/learningequality/subscriptions","organizations_url":"https://api.github.com/users/learningequality/orgs","repos_url":"https://api.github.com/users/learningequality/repos","events_url":"https://api.github.com/users/learningequality/events{/privacy}","received_events_url":"https://api.github.com/users/learningequality/received_events","type":"Organization","site_admin":false},"repo":{"id":49976939,"name":"kolibri","full_name":"learningequality/kolibri","owner":{"login":"learningequality","id":3926525,"avatar_url":"https://avatars.githubusercontent.com/u/3926525?v=3","gravatar_id":"","url":"https://api.github.com/users/learningequality","html_url":"https://github.com/learningequality","followers_url":"https://api.github.com/users/learningequality/followers","following_url":"https://api.github.com/users/learningequality/following{/other_user}","gists_url":"https://api.github.com/users/learningequality/gists{/gist_id}","starred_url":"https://api.github.com/users/learningequality/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/learningequality/subscriptions","organizations_url":"https://api.github.com/users/learningequality/orgs","repos_url":"https://api.github.com/users/learningequality/repos","events_url":"https://api.github.com/users/learningequality/events{/privacy}","received_events_url":"https://api.github.com/users/learningequality/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/learningequality/kolibri","description":"This is where Kolibri shall be born, watch and participate!","fork":false,"url":"https://api.github.com/repos/learningequality/kolibri","forks_url":"https://api.github.com/repos/learningequality/kolibri/forks","keys_url":"https://api.github.com/repos/learningequality/kolibri/keys{/key_id}","collaborators_url":"https://api.github.com/repos/learningequality/kolibri/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/learningequality/kolibri/teams","hooks_url":"https://api.github.com/repos/learningequality/kolibri/hooks","issue_events_url":"https://api.github.com/repos/learningequality/kolibri/issues/events{/number}","events_url":"https://api.github.com/repos/learningequality/kolibri/events","assignees_url":"https://api.github.com/repos/learningequality/kolibri/assignees{/user}","branches_url":"https://api.github.com/repos/learningequality/kolibri/branches{/branch}","tags_url":"https://api.github.com/repos/learningequality/kolibri/tags","blobs_url":"https://api.github.com/repos/learningequality/kolibri/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/learningequality/kolibri/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/learningequality/kolibri/git/refs{/sha}","trees_url":"https://api.github.com/repos/learningequality/kolibri/git/trees{/sha}","statuses_url":"https://api.github.com/repos/learningequality/kolibri/statuses/{sha}","languages_url":"https://api.github.com/repos/learningequality/kolibri/languages","stargazers_url":"https://api.github.com/repos/learningequality/kolibri/stargazers","contributors_url":"https://api.github.com/repos/learningequality/kolibri/contributors","subscribers_url":"https://api.github.com/repos/learningequality/kolibri/subscribers","subscription_url":"https://api.github.com/repos/learningequality/kolibri/subscription","commits_url":"https://api.github.com/repos/learningequality/kolibri/commits{/sha}","git_commits_url":"https://api.github.com/repos/learningequality/kolibri/git/commits{/sha}","comments_url":"https://api.github.com/repos/learningequality/kolibri/comments{/number}","issue_comment_url":"https://api.github.com/repos/learningequality/kolibri/issues/comments{/number}","contents_url":"https://api.github.com/repos/learningequality/kolibri/contents/{+path}","compare_url":"https://api.github.com/repos/learningequality/kolibri/compare/{base}...{head}","merges_url":"https://api.github.com/repos/learningequality/kolibri/merges","archive_url":"https://api.github.com/repos/learningequality/kolibri/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/learningequality/kolibri/downloads","issues_url":"https://api.github.com/repos/learningequality/kolibri/issues{/number}","pulls_url":"https://api.github.com/repos/learningequality/kolibri/pulls{/number}","milestones_url":"https://api.github.com/repos/learningequality/kolibri/milestones{/number}","notifications_url":"https://api.github.com/repos/learningequality/kolibri/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/learningequality/kolibri/labels{/name}","releases_url":"https://api.github.com/repos/learningequality/kolibri/releases{/id}","deployments_url":"https://api.github.com/repos/learningequality/kolibri/deployments","created_at":"2016-01-19T19:22:07Z","updated_at":"2016-09-16T03:13:23Z","pushed_at":"2016-09-16T20:53:51Z","git_url":"git://github.com/learningequality/kolibri.git","ssh_url":"git@github.com:learningequality/kolibri.git","clone_url":"https://github.com/learningequality/kolibri.git","svn_url":"https://github.com/learningequality/kolibri","homepage":"http://learningequality.org/kolibri/","size":8878,"stargazers_count":30,"watchers_count":30,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":34,"mirror_url":null,"open_issues_count":42,"forks":34,"open_issues":42,"watchers":30,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/learningequality/kolibri/pulls/513"},"html":{"href":"https://github.com/learningequality/kolibri/pull/513"},"issue":{"href":"https://api.github.com/repos/learningequality/kolibri/issues/513"},"comments":{"href":"https://api.github.com/repos/learningequality/kolibri/issues/513/comments"},"review_comments":{"href":"https://api.github.com/repos/learningequality/kolibri/pulls/513/comments"},"review_comment":{"href":"https://api.github.com/repos/learningequality/kolibri/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/learningequality/kolibri/pulls/513/commits"},"statuses":{"href":"https://api.github.com/repos/learningequality/kolibri/statuses/fee3417f07d4c60c54e46a62992ed375818e4b4e"}}}}
{"actor":{"display_login":"indirectlylit"}}