{"action":"created","comment":{"url":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/comments/46094676","id":46094676,"diff_hunk":"@@ -0,0 +1,317 @@\n+package org.scalajs.dom.experimental\n+\n+import org.scalajs.dom.raw.Promise\n+\n+import scala.scalajs.js\n+import scala.scalajs.js.UndefOr\n+\n+// the stream API is defined in https://streams.spec.whatwg.org/\n+\n+@js.native\n+sealed trait WriteableState extends js.Any\n+\n+object WriteableState {\n+\n+  /**\n+   * The stream’s internal queue is full; that is, the stream is exerting\n+   * backpressure. Use .ready to be notified of when the pressure subsides.\n+   */\n+  val waiting = \"waiting\".asInstanceOf[WriteableState]\n+\n+  /**\n+   * The stream’s internal queue is not full; call .write() until\n+   * backpressure is exerted.\n+   */\n+  val writable = \"writable\".asInstanceOf[WriteableState]\n+\n+  /**\n+   * The stream’s .close() method has been called, and a command to close is\n+   * in the queue or being processed by the underlying sink; attempts to\n+   * write will now fail. */\n+  val closing = \"closing\".asInstanceOf[WriteableState]\n+\n+  /** The underlying sink has been closed; writing is no longer possible. */\n+  val closed = \"closed\".asInstanceOf[WriteableState]\n+\n+  /** An error occurred interacting with the underlying sink or the stream\n+   * has been aborted, so the stream is now\n+   * dead. */\n+  val errored = \"errored\".asInstanceOf[WriteableState]\n+}\n+\n+/**\n+ * https://streams.spec.whatwg.org/#ws-class\n+ *\n+ * todo: the constructor\n+ */\n+@js.native\n+trait WriteableStream extends js.Object {\n+\n+  /**\n+   * The closed getter returns a promise that will be fulfilled when the\n+   * stream becomes closed, or rejected if it ever errors.\n+   */\n+  def closed: Promise[WriteableStream] = js.native\n+\n+  /**\n+   * The ready getter returns a promise that will be fulfilled when the\n+   * stream transitions away from the \"waiting\" state to any other state.\n+   * Once the stream transitions back to \"waiting\", the getter will return a\n+   * new promise that stays pending until the next state transition. In\n+   * essence, this promise gives a signal as to when any backpressure has let\n+   * up (or that the stream has been\n+   * closed or errored).\n+   *\n+   */\n+  def ready: Promise[WriteableStream] = js.native\n+\n+  /**\n+   * The state getter returns the state of the stream\n+   */\n+  def state: WriteableState = js.native\n+\n+  /**\n+   * The abort method signals that the producer can no longer successfully\n+   * write to the stream and it should be immediately moved to an \"errored\"\n+   * state, with any queued-up writes discarded. This will also execute any\n+   * abort mechanism of the underlying sink.\n+   * @param reason bblfish: not really sure if it is as large as being of\n+   *               type Any\n+   */\n+  def abort(reason: Any): Unit = js.native\n+\n+  /**\n+   * The close method signals that the producer is done writing chunks to the\n+   * stream and wishes to move the stream to a \"closed\" state. This queues an\n+   * action to close the stream, such that once any currently queued-up\n+   * writes complete, the close mechanism of the underlying sink will\n+   * execute, releasing any held resources. In the meantime, the stream will\n+   * be in a \"closing\" state.\n+   *\n+   * @return a promise of this stream being closed\n+   */\n+  def close(): Promise[WriteableStream] = js.native\n+\n+  /**\n+   * The write method adds a write to the stream’s internal queue,\n+   * instructing the stream to write the given chunk of data to the\n+   * underlying sink once all other pending writes have finished successfully\n+   * . It returns a promise that will be fulfilled or rejected depending on\n+   * the success or failure of writing the chunk to the underlying sink. The\n+   * impact of enqueuing this chunk will be immediately reflected in the\n+   * stream’s state property; in particular, if the internal queue is now\n+   * full according to the stream’s queuing strategy, the stream will exert\n+   * backpressure\n+   * by changing its state to \"waiting\".\n+   * @param chunk\n+   * @return bblfish: not sure what the type of the promise returned is\n+   */\n+  def write(chunk: Array[Byte]): Promise[Any] = js.native\n+}\n+\n+/**\n+ * defined at https://streams.spec.whatwg.org/#readable-stream\n+ */\n+@js.native\n+trait ReadableStream extends js.Object {\n+  /**\n+   * The locked getter returns whether or not the readable stream is locked\n+   * to a reader.\n+   *\n+   * throws scala.scalajs.js.TypeError  if the stream is not readable\n+   */\n+  def locked: Boolean = js.native\n+\n+  /**\n+   * The cancel method cancels the stream, signaling a loss of interest in\n+   * the stream by a consumer. The supplied reason argument will be given to\n+   * the underlying source, which may or may not use it.\n+   *\n+   * @param reason the reason <- actually not what type this is\n+   * @return a Promise, but not quite sure what it can contain\n+   */\n+  def cancel(reason: String): Promise[Any] = js.native\n+\n+  /**\n+   * The getReader method creates a readable stream reader and locks the\n+   * stream to the new reader. While the stream is locked, no other reader\n+   * can be acquired until this one is released. The returned reader provides\n+   * the ability to directly read individual chunks from the stream via the\n+   * reader’s read method. This functionality is especially useful for\n+   * creating abstractions that desire the ability to consume a stream in its\n+   * entirety. By getting a reader for the stream, you can ensure nobodyA\n+   * else can interleave reads with yours or cancel the stream, which would\n+   * interfere with your abstraction.\n+   *\n+   * Note that if a stream becomes closed or errored, any reader it is locked\n+   * to is automatically released.\n+   *\n+   * throws scala.scalajs.js.TypeError if not a readable stream\n+   * @return a new ReadableStreamReader\n+   *\n+   */\n+  def getReader(): ReadableStreamReader = js.native\n+\n+  /**\n+   * The pipeThrough method provides a convenient, chainable way of piping\n+   * this readable stream through a transform stream (or any other {\n+   * writable, readable } pair). It simply pipes the stream into the writable\n+   * side of the supplied pair, and returns the readable side for further use\n+   * . Piping a stream will generally lock it for the duration of the pipe,\n+   * preventing any other consumer fromA acquiring a\n+   * reader.\n+   *\n+   * This method is intentionally generic; it does not require that its this\n+   * value be a ReadableStream object. It also does not require that its\n+   * writable argument be a WritableStream instance, or that its readable\n+   * argument be a ReadableStream instance.\n+   */\n+  def pipeThrough(\n+    pair: (WriteableStream, ReadableStream),\n+    options: Any = js.undefined\n+  ): ReadableStream = js.native\n+\n+  /**\n+   * The pipeTo method pipes this readable stream to a given writable stream.\n+   * The way in which the piping process behaves under various error\n+   * conditions can be customized with a number of passed options. It returns\n+   * a promise that fulfills when the piping process completes successfully,\n+   * or rejects if any errors were encountered. Piping a stream will\n+   * generally lock it for the duration of the pipe, preventing any other\n+   * consumer from acquiring a reader. This method is intentionally generic;\n+   * it does not require that its this value be a ReadableStream object.\n+   * @param dest\n+   */\n+  def pipeTo(dest: WriteableStream, options: Any = js.undefined)\n+\n+\n+  /**\n+   * The pipeTo method pipes this readable stream to a given writable stream.\n+   * The way in which the piping process behaves under various error\n+   * conditions can be customized with a number\n+   * of passed options. It returns a promise that fulfills when the piping\n+   * process completes successfully, or rejects if any errors were\n+   * encountered. Piping a stream will generally lock it for the duration of\n+   * the pipe, preventing any other consumer from acquiring a reader. This\n+   * method is intentionally generic; it does not require that its this\n+   * value be a ReadableStream object.\n+   */\n+  def tee(): Array[ReadableStream] = js.native\n+}\n+\n+/**\n+ * https://streams.spec.whatwg.org/#reader-class\n+ * todo: add the constructor\n+ */\n+@js.native\n+class ReadableStreamReader extends js.Object {\n+\n+  /**\n+   * The closed getter returns a promise that will be fulfilled when the stream\n+   * becomes closed or the reader’s lock is released, or rejected if the\n+   * stream ever errors.\n+   */\n+  def closed: Promise[ReadableStreamReader] = js.native\n+\n+  /**\n+   * If the reader is active, the cancel method behaves the same as that for\n+   * the associated stream. When done, it automatically releases the lock.\n+   * @param reason - not actually sure what type of object this should be\n+   */\n+  def cancel(reason: Any): Promise[Any] = js.native //not actually sure what\n+  // the return type is here\n+\n+  /**\n+   * The read method will return a promise that allows access to the next chunk\n+   * from the stream’s internal queue, if available. If the chunk does become\n+   * available, the promise will be fulfilled with an object of the form {\n+   * value: theChunk, done: false }. If the stream becomes closed, the\n+   * promise will be fulfilled with an object of the form { value: undefined,\n+   * done: true }. If the stream becomes errored, the promise will be\n+   * rejected with the relevant error. If reading a chunk causes the queue to\n+   * become empty, more data will be pulled from the underlying source.\n+   */\n+  def read(): Promise[Chunk] = js.native\n+\n+  /**\n+   * The releaseLock method releases the reader’s lock on the corresponding\n+   * stream. After the lock is released, the reader is no longer active. If the\n+   * associated stream is errored when the lock is released, the reader will\n+   * appear errored in the same way from now on; otherwise, the reader will\n+   * appear closed.\n+   * A reader’s lock cannot be released while it still has a pending read\n+   * request, i.e., if a promise returned by the reader’s read() method has\n+   * not yet been settled. Attempting to do so will throw a TypeError and leave\n+   * the reader locked to the stream.\n+   *\n+   * throws scala.scalajs.js.TypeError\n+   */\n+  def releaseLock(): Unit = js.native\n+}\n+\n+/**\n+ *\n+ * [[https://streams.spec.whatwg.org/#rs-controller-class ¶3.3 Class\n+ * ReadableStreamController]] of whatwg spec\n+ *\n+ * The ReadableStreamController constructor cannot be used directly; it only\n+ * works on a ReadableStream that is in the middle of being constructed.\n+ *\n+ *\n+ * @param stream can be null //todo: not sure what the type is\n+ */\n+@js.native\n+class ReadableStreamController(stream: ReadableStream = null) extends js.Object {\n+\n+  /**\n+   *\n+   * The desiredSize getter returns the desired size to fill the controlled\n+   * stream’s internal queue. It can be negative, if the queue is over-full.\n+   * An underlying source should use this information to determine when and how\n+   * to apply backpressure.\n+   *\n+   * @return the size of the strema - no idea if this actually is an int\n+   */\n+  def desiredSize: Int = js.native\n+","path":"src/main/scala/org/scalajs/dom/experimental/Stream.scala","position":276,"original_position":276,"commit_id":"856e88f8f5bbb3bb595a67ec477ab0f852db846c","original_commit_id":"856e88f8f5bbb3bb595a67ec477ab0f852db846c","user":{"login":"mseddon","id":4021991,"avatar_url":"https://avatars.githubusercontent.com/u/4021991?v=3","gravatar_id":"","url":"https://api.github.com/users/mseddon","html_url":"https://github.com/mseddon","followers_url":"https://api.github.com/users/mseddon/followers","following_url":"https://api.github.com/users/mseddon/following{/other_user}","gists_url":"https://api.github.com/users/mseddon/gists{/gist_id}","starred_url":"https://api.github.com/users/mseddon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mseddon/subscriptions","organizations_url":"https://api.github.com/users/mseddon/orgs","repos_url":"https://api.github.com/users/mseddon/repos","events_url":"https://api.github.com/users/mseddon/events{/privacy}","received_events_url":"https://api.github.com/users/mseddon/received_events","type":"User","site_admin":false},"body":"Double blank line.","created_at":"2015-11-29T16:52:48Z","updated_at":"2015-11-29T16:52:48Z","html_url":"https://github.com/scala-js/scala-js-dom/pull/177#discussion_r46094676","pull_request_url":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/177","_links":{"self":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/comments/46094676"},"html":{"href":"https://github.com/scala-js/scala-js-dom/pull/177#discussion_r46094676"},"pull_request":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/177"}}},"pull_request":{"url":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/177","id":51803755,"html_url":"https://github.com/scala-js/scala-js-dom/pull/177","diff_url":"https://github.com/scala-js/scala-js-dom/pull/177.diff","patch_url":"https://github.com/scala-js/scala-js-dom/pull/177.patch","issue_url":"https://api.github.com/repos/scala-js/scala-js-dom/issues/177","number":177,"state":"open","locked":false,"title":"add Fetch API","user":{"login":"bblfish","id":124506,"avatar_url":"https://avatars.githubusercontent.com/u/124506?v=3","gravatar_id":"","url":"https://api.github.com/users/bblfish","html_url":"https://github.com/bblfish","followers_url":"https://api.github.com/users/bblfish/followers","following_url":"https://api.github.com/users/bblfish/following{/other_user}","gists_url":"https://api.github.com/users/bblfish/gists{/gist_id}","starred_url":"https://api.github.com/users/bblfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bblfish/subscriptions","organizations_url":"https://api.github.com/users/bblfish/orgs","repos_url":"https://api.github.com/users/bblfish/repos","events_url":"https://api.github.com/users/bblfish/events{/privacy}","received_events_url":"https://api.github.com/users/bblfish/received_events","type":"User","site_admin":false},"body":"I have been using the Fetch API for my [rww-scala-js akka branch](https://github.com/read-write-web/rww-scala-js/blob/6a24b5ffdf62b1d07542a178a912882e844c7b7c/src/main/scala/rww/store/WebResourceActor.scala). The code that I have tested and used works. So I thought I'd push this over before someone goes through the same work again.\r\n\r\nProbably still a lot to be improved.\r\n\r\nThis would close https://github.com/scala-js/scala-js-dom/issues/167","created_at":"2015-11-25T14:55:01Z","updated_at":"2015-11-29T16:52:48Z","closed_at":null,"merged_at":null,"merge_commit_sha":"613b6aba775b39e08bff5f60c8d34aa13b940119","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/177/commits","review_comments_url":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/177/comments","review_comment_url":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/comments{/number}","comments_url":"https://api.github.com/repos/scala-js/scala-js-dom/issues/177/comments","statuses_url":"https://api.github.com/repos/scala-js/scala-js-dom/statuses/856e88f8f5bbb3bb595a67ec477ab0f852db846c","head":{"label":"bblfish:FetchAPI","ref":"FetchAPI","sha":"856e88f8f5bbb3bb595a67ec477ab0f852db846c","user":{"login":"bblfish","id":124506,"avatar_url":"https://avatars.githubusercontent.com/u/124506?v=3","gravatar_id":"","url":"https://api.github.com/users/bblfish","html_url":"https://github.com/bblfish","followers_url":"https://api.github.com/users/bblfish/followers","following_url":"https://api.github.com/users/bblfish/following{/other_user}","gists_url":"https://api.github.com/users/bblfish/gists{/gist_id}","starred_url":"https://api.github.com/users/bblfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bblfish/subscriptions","organizations_url":"https://api.github.com/users/bblfish/orgs","repos_url":"https://api.github.com/users/bblfish/repos","events_url":"https://api.github.com/users/bblfish/events{/privacy}","received_events_url":"https://api.github.com/users/bblfish/received_events","type":"User","site_admin":false},"repo":{"id":45736516,"name":"scala-js-dom","full_name":"bblfish/scala-js-dom","owner":{"login":"bblfish","id":124506,"avatar_url":"https://avatars.githubusercontent.com/u/124506?v=3","gravatar_id":"","url":"https://api.github.com/users/bblfish","html_url":"https://github.com/bblfish","followers_url":"https://api.github.com/users/bblfish/followers","following_url":"https://api.github.com/users/bblfish/following{/other_user}","gists_url":"https://api.github.com/users/bblfish/gists{/gist_id}","starred_url":"https://api.github.com/users/bblfish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bblfish/subscriptions","organizations_url":"https://api.github.com/users/bblfish/orgs","repos_url":"https://api.github.com/users/bblfish/repos","events_url":"https://api.github.com/users/bblfish/events{/privacy}","received_events_url":"https://api.github.com/users/bblfish/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/bblfish/scala-js-dom","description":"statically typed dom wrappers for scala-js","fork":true,"url":"https://api.github.com/repos/bblfish/scala-js-dom","forks_url":"https://api.github.com/repos/bblfish/scala-js-dom/forks","keys_url":"https://api.github.com/repos/bblfish/scala-js-dom/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bblfish/scala-js-dom/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bblfish/scala-js-dom/teams","hooks_url":"https://api.github.com/repos/bblfish/scala-js-dom/hooks","issue_events_url":"https://api.github.com/repos/bblfish/scala-js-dom/issues/events{/number}","events_url":"https://api.github.com/repos/bblfish/scala-js-dom/events","assignees_url":"https://api.github.com/repos/bblfish/scala-js-dom/assignees{/user}","branches_url":"https://api.github.com/repos/bblfish/scala-js-dom/branches{/branch}","tags_url":"https://api.github.com/repos/bblfish/scala-js-dom/tags","blobs_url":"https://api.github.com/repos/bblfish/scala-js-dom/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bblfish/scala-js-dom/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bblfish/scala-js-dom/git/refs{/sha}","trees_url":"https://api.github.com/repos/bblfish/scala-js-dom/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bblfish/scala-js-dom/statuses/{sha}","languages_url":"https://api.github.com/repos/bblfish/scala-js-dom/languages","stargazers_url":"https://api.github.com/repos/bblfish/scala-js-dom/stargazers","contributors_url":"https://api.github.com/repos/bblfish/scala-js-dom/contributors","subscribers_url":"https://api.github.com/repos/bblfish/scala-js-dom/subscribers","subscription_url":"https://api.github.com/repos/bblfish/scala-js-dom/subscription","commits_url":"https://api.github.com/repos/bblfish/scala-js-dom/commits{/sha}","git_commits_url":"https://api.github.com/repos/bblfish/scala-js-dom/git/commits{/sha}","comments_url":"https://api.github.com/repos/bblfish/scala-js-dom/comments{/number}","issue_comment_url":"https://api.github.com/repos/bblfish/scala-js-dom/issues/comments{/number}","contents_url":"https://api.github.com/repos/bblfish/scala-js-dom/contents/{+path}","compare_url":"https://api.github.com/repos/bblfish/scala-js-dom/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bblfish/scala-js-dom/merges","archive_url":"https://api.github.com/repos/bblfish/scala-js-dom/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bblfish/scala-js-dom/downloads","issues_url":"https://api.github.com/repos/bblfish/scala-js-dom/issues{/number}","pulls_url":"https://api.github.com/repos/bblfish/scala-js-dom/pulls{/number}","milestones_url":"https://api.github.com/repos/bblfish/scala-js-dom/milestones{/number}","notifications_url":"https://api.github.com/repos/bblfish/scala-js-dom/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bblfish/scala-js-dom/labels{/name}","releases_url":"https://api.github.com/repos/bblfish/scala-js-dom/releases{/id}","created_at":"2015-11-07T12:59:47Z","updated_at":"2015-11-07T12:59:48Z","pushed_at":"2015-11-27T13:44:56Z","git_url":"git://github.com/bblfish/scala-js-dom.git","ssh_url":"git@github.com:bblfish/scala-js-dom.git","clone_url":"https://github.com/bblfish/scala-js-dom.git","svn_url":"https://github.com/bblfish/scala-js-dom","homepage":null,"size":2011,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"scala-js:master","ref":"master","sha":"25ebd8ddf69221f366a2bf15cba1e338723311f6","user":{"login":"scala-js","id":6039724,"avatar_url":"https://avatars.githubusercontent.com/u/6039724?v=3","gravatar_id":"","url":"https://api.github.com/users/scala-js","html_url":"https://github.com/scala-js","followers_url":"https://api.github.com/users/scala-js/followers","following_url":"https://api.github.com/users/scala-js/following{/other_user}","gists_url":"https://api.github.com/users/scala-js/gists{/gist_id}","starred_url":"https://api.github.com/users/scala-js/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scala-js/subscriptions","organizations_url":"https://api.github.com/users/scala-js/orgs","repos_url":"https://api.github.com/users/scala-js/repos","events_url":"https://api.github.com/users/scala-js/events{/privacy}","received_events_url":"https://api.github.com/users/scala-js/received_events","type":"Organization","site_admin":false},"repo":{"id":13578796,"name":"scala-js-dom","full_name":"scala-js/scala-js-dom","owner":{"login":"scala-js","id":6039724,"avatar_url":"https://avatars.githubusercontent.com/u/6039724?v=3","gravatar_id":"","url":"https://api.github.com/users/scala-js","html_url":"https://github.com/scala-js","followers_url":"https://api.github.com/users/scala-js/followers","following_url":"https://api.github.com/users/scala-js/following{/other_user}","gists_url":"https://api.github.com/users/scala-js/gists{/gist_id}","starred_url":"https://api.github.com/users/scala-js/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scala-js/subscriptions","organizations_url":"https://api.github.com/users/scala-js/orgs","repos_url":"https://api.github.com/users/scala-js/repos","events_url":"https://api.github.com/users/scala-js/events{/privacy}","received_events_url":"https://api.github.com/users/scala-js/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/scala-js/scala-js-dom","description":"statically typed dom wrappers for scala-js","fork":false,"url":"https://api.github.com/repos/scala-js/scala-js-dom","forks_url":"https://api.github.com/repos/scala-js/scala-js-dom/forks","keys_url":"https://api.github.com/repos/scala-js/scala-js-dom/keys{/key_id}","collaborators_url":"https://api.github.com/repos/scala-js/scala-js-dom/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/scala-js/scala-js-dom/teams","hooks_url":"https://api.github.com/repos/scala-js/scala-js-dom/hooks","issue_events_url":"https://api.github.com/repos/scala-js/scala-js-dom/issues/events{/number}","events_url":"https://api.github.com/repos/scala-js/scala-js-dom/events","assignees_url":"https://api.github.com/repos/scala-js/scala-js-dom/assignees{/user}","branches_url":"https://api.github.com/repos/scala-js/scala-js-dom/branches{/branch}","tags_url":"https://api.github.com/repos/scala-js/scala-js-dom/tags","blobs_url":"https://api.github.com/repos/scala-js/scala-js-dom/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/scala-js/scala-js-dom/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/scala-js/scala-js-dom/git/refs{/sha}","trees_url":"https://api.github.com/repos/scala-js/scala-js-dom/git/trees{/sha}","statuses_url":"https://api.github.com/repos/scala-js/scala-js-dom/statuses/{sha}","languages_url":"https://api.github.com/repos/scala-js/scala-js-dom/languages","stargazers_url":"https://api.github.com/repos/scala-js/scala-js-dom/stargazers","contributors_url":"https://api.github.com/repos/scala-js/scala-js-dom/contributors","subscribers_url":"https://api.github.com/repos/scala-js/scala-js-dom/subscribers","subscription_url":"https://api.github.com/repos/scala-js/scala-js-dom/subscription","commits_url":"https://api.github.com/repos/scala-js/scala-js-dom/commits{/sha}","git_commits_url":"https://api.github.com/repos/scala-js/scala-js-dom/git/commits{/sha}","comments_url":"https://api.github.com/repos/scala-js/scala-js-dom/comments{/number}","issue_comment_url":"https://api.github.com/repos/scala-js/scala-js-dom/issues/comments{/number}","contents_url":"https://api.github.com/repos/scala-js/scala-js-dom/contents/{+path}","compare_url":"https://api.github.com/repos/scala-js/scala-js-dom/compare/{base}...{head}","merges_url":"https://api.github.com/repos/scala-js/scala-js-dom/merges","archive_url":"https://api.github.com/repos/scala-js/scala-js-dom/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/scala-js/scala-js-dom/downloads","issues_url":"https://api.github.com/repos/scala-js/scala-js-dom/issues{/number}","pulls_url":"https://api.github.com/repos/scala-js/scala-js-dom/pulls{/number}","milestones_url":"https://api.github.com/repos/scala-js/scala-js-dom/milestones{/number}","notifications_url":"https://api.github.com/repos/scala-js/scala-js-dom/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/scala-js/scala-js-dom/labels{/name}","releases_url":"https://api.github.com/repos/scala-js/scala-js-dom/releases{/id}","created_at":"2013-10-15T02:35:07Z","updated_at":"2015-11-27T19:11:30Z","pushed_at":"2015-11-28T22:04:02Z","git_url":"git://github.com/scala-js/scala-js-dom.git","ssh_url":"git@github.com:scala-js/scala-js-dom.git","clone_url":"https://github.com/scala-js/scala-js-dom.git","svn_url":"https://github.com/scala-js/scala-js-dom","homepage":null,"size":2143,"stargazers_count":99,"watchers_count":99,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":44,"mirror_url":null,"open_issues_count":15,"forks":44,"open_issues":15,"watchers":99,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/177"},"html":{"href":"https://github.com/scala-js/scala-js-dom/pull/177"},"issue":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/issues/177"},"comments":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/issues/177/comments"},"review_comments":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/177/comments"},"review_comment":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/177/commits"},"statuses":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/statuses/856e88f8f5bbb3bb595a67ec477ab0f852db846c"}}}}