{"action":"created","comment":{"url":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/comments/31797923","id":31797923,"diff_hunk":"@@ -0,0 +1,831 @@\n+package org.scalajs.dom.raw\n+\n+import scalajs.js\n+import scala.scalajs.js.typedarray.{Uint8Array, ArrayBuffer, ArrayBufferView}\n+\n+private[dom] object CryptoTypes {\n+  type BigInteger = Uint8Array\n+\n+  sealed trait BufferSource extends js.Any\n+\n+  implicit def arrayBuffer2BufferSource(b: ArrayBuffer): BufferSource =\n+    b.asInstanceOf[BufferSource]\n+\n+  implicit def arrayBufferView2BufferSource(b: ArrayBufferView): BufferSource =\n+    b.asInstanceOf[BufferSource]\n+}\n+\n+trait GlobalCrypto extends js.Any {\n+  val crypto: Crypto = js.native\n+}\n+\n+/**\n+ * The Crypto interface represents basic cryptography features available in the\n+ * current context. It allows access to a cryptographically strong random\n+ * number generator and to cryptographic primitives.\n+ *\n+ * MDN\n+ */\n+trait Crypto extends js.Any {\n+  /**\n+   * Returns a SubtleCrypto object providing access to common cryptographic\n+   * primitives, like hashing, signing, encryption or decryption.\n+   *\n+   * MDN\n+   */\n+  val subtle: SubtleCrypto = js.native\n+\n+  /**\n+   * Fills the passed TypedArray with cryptographically sound random values.\n+   *\n+   * MDN\n+   */\n+  def getRandomValues(array: ArrayBufferView): ArrayBufferView = js.native\n+}\n+\n+trait Algorithm extends js.Any {\n+  var name: String = js.native\n+}\n+\n+trait KeyAlgorithm extends Algorithm\n+\n+trait CryptoKey extends js.Any {\n+  val `type`: String = js.native\n+\n+  val extractable: Boolean = js.native\n+\n+  val algorithm: js.Object = js.native\n+\n+  val usages: js.Object = js.native\n+}\n+\n+trait RsaOtherPrimesInfo extends js.Any {\n+  var r: String = js.native\n+\n+  var d: String = js.native\n+\n+  var t: String = js.native\n+}\n+\n+trait JsonWebKey extends js.Any {\n+  var kty: String = js.native\n+\n+  var use: String = js.native\n+\n+  var key_ops: js.Array[String] = js.native\n+\n+  var alg: js.Array[String] = js.native\n+\n+  var ext: Boolean = js.native\n+\n+  var crv: String = js.native\n+\n+  var x: String = js.native\n+\n+  var y: String = js.native\n+\n+  var d: String = js.native\n+\n+  var n: String = js.native\n+\n+  var e: String = js.native\n+\n+  var p: String = js.native\n+\n+  var q: String = js.native\n+\n+  var dp: String = js.native\n+\n+  var dq: String = js.native\n+\n+  var qi: String = js.native\n+\n+  var oth: js.Array[String] = js.native\n+\n+  var k: String = js.native\n+}\n+\n+/**\n+ * The SubtleCrypto interface represents a set of cryptographic primitives.\n+ * It is available via the Crypto.subtle properties available in a window\n+ * context (via Window.crypto).\n+ *\n+ * MDN\n+ */\n+trait SubtleCrypto extends js.Any {\n+  import CryptoTypes._\n+  /**\n+   * Returns a Promise of the encrypted data corresponding to the clear text,\n+   * algorithm and key given as parameters.\n+   *\n+   * MDN\n+   */\n+  def encrypt(algorithm: String, key: CryptoKey,\n+    data: BufferSource): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of the encrypted data corresponding to the clear text,\n+   * algorithm and key given as parameters.\n+   *\n+   * MDN\n+   */\n+  def encrypt(algorithm: Algorithm, key: CryptoKey,\n+    data: BufferSource): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of the clear data corresponding to the encrypted text,\n+   * algorithm and key given as parameters.\n+   *\n+   * MDN\n+   */\n+  def decrypt(algorithm: String, key: CryptoKey,\n+    data: BufferSource): Promise[js.Any] = js.native\n+\n+\n+  /**\n+   * Returns a Promise of the clear data corresponding to the encrypted text,\n+   * algorithm and key given as parameters.\n+   *\n+   * MDN\n+   */\n+  def decrypt(algorithm: Algorithm, key: CryptoKey,\n+    data: BufferSource): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of the signature corresponding to the text, algorithm\n+   * and key given as parameters.\n+   *\n+   * MDN\n+   */\n+  def sign(algorithm: String, key: CryptoKey,\n+    data: BufferSource): Promise[js.Any] = js.native\n+\n+\n+  /**\n+   * Returns a Promise of the signature corresponding to the text, algorithm\n+   * and key given as parameters.\n+   *\n+   * MDN\n+   */\n+  def sign(algorithm: Algorithm, key: CryptoKey,\n+    data: BufferSource): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a Boolean value indicating if the signature given as\n+   * parameter matches the text, algorithm and key also given as parameters.\n+   *\n+   * MDN\n+   */\n+  def verify(algorithm: String, key: CryptoKey, signature: BufferSource,\n+    data: BufferSource): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a Boolean value indicating if the signature given as\n+   * parameter matches the text, algorithm and key also given as parameters.\n+   *\n+   * MDN\n+   */\n+  def verify(algorithm: Algorithm, key: CryptoKey, signature: BufferSource,\n+    data: BufferSource): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a digest generated from the algorithm and text given\n+   * as parameters.\n+   *\n+   * MDN\n+   */\n+  def digest(algorithm: String, data: BufferSource): Promise[js.Any] = js.native\n+\n+\n+  /**\n+   * Returns a Promise of a digest generated from the algorithm and text given\n+   * as parameters.\n+   *\n+   * MDN\n+   */\n+  def digest(algorithm: Algorithm,\n+    data: BufferSource): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a newly generated CryptoKey, for symmetrical\n+   * algorithms, or a CryptoKeyPair, containing two newly generated keys, for\n+   * asymmetrical algorithm, that matches the algorithm, the usages and the\n+   * extractability given as parameters.\n+   *\n+   * MDN\n+   */\n+  def generateKey(algorithm: Algorithm, extractable: Boolean,\n+    keyUsages: js.Array[String]): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a newly generated CryptoKey derivated from a master\n+   * key and a specific algorithm given as parameters.\n+   *\n+   * MDN\n+   */\n+  def deriveKey(algorithm: String, baseKey: CryptoKey,\n+    derivedKeyType: String, extractable: Boolean,\n+    keyUsages: js.Array[String]): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a newly generated CryptoKey derivated from a master\n+   * key and a specific algorithm given as parameters.\n+   *\n+   * MDN\n+   */\n+  def deriveKey(algorithm: Algorithm, baseKey: CryptoKey,\n+    derivedKeyType: String, extractable: Boolean,\n+    keyUsages: js.Array[String]): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a newly generated buffer of pseudo-random bits\n+   * derivated from a master key and a specific algorithm given as parameters.\n+   *\n+   * MDN\n+   */\n+  def deriveBits(algorithm: String, baseKey: CryptoKey,\n+    length: Double): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a newly generated buffer of pseudo-random bits\n+   * derivated from a master key and a specific algorithm given as parameters.\n+   *\n+   * MDN\n+   */\n+  def deriveBits(algorithm: Algorithm, baseKey: CryptoKey,\n+    length: Double): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a CryptoKey corresponding to the format, the\n+   * algorithm, the raw key data, the usages and the extractability given\n+   * as parameters.\n+   *\n+   * MDN\n+   */\n+  def importKey(format: String, keyData: BufferSource,\n+    algorithm: String, extractable: Boolean,\n+    keyUsages: js.Array[String]): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a CryptoKey corresponding to the format, the\n+   * algorithm, the raw key data, the usages and the extractability given as\n+   * parameters.\n+   *\n+   * MDN\n+   */\n+  def importKey(format: String, keyData: BufferSource,\n+    algorithm: Algorithm, extractable: Boolean,\n+    keyUsages: js.Array[String]): Promise[js.Any] = js.native\n+  /**\n+   * Returns a Promise of a CryptoKey corresponding to the format, the\n+   * algorithm, the raw key data, the usages and the extractability given as\n+   * parameters.\n+   *\n+   * MDN\n+   */\n+  def importKey(format: String, keyData: JsonWebKey,\n+    algorithm: String, extractable: Boolean,\n+    keyUsages: js.Array[String]): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a CryptoKey corresponding to the format, the\n+   * algorithm, the raw key data, the usages and the extractability given as\n+   * parameters.\n+   *\n+   * MDN\n+   */\n+  def importKey(format: String, keyData: JsonWebKey,\n+    algorithm: Algorithm, extractable: Boolean,\n+    keyUsages: js.Array[String]): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a buffer containing the key in the format requested.\n+   *\n+   * MDN\n+   */\n+  def exportKey(format: String, key: CryptoKey): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a wrapped symmetric key for usage (transfer, storage)\n+   * in unsecure environments. The wrapped buffer returned is in the format\n+   * given in parameters, and contained the key wrapped by the give wrapping\n+   * key with the given algorithm.\n+   *\n+   * MDN\n+   */\n+  def wrapKey(format: String, key: CryptoKey, wrappingKey: CryptoKey,\n+    wrapAlgorithm: String): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a wrapped symmetric key for usage (transfer, storage)\n+   * in unsecure environments. The wrapped buffer returned is in the format\n+   * given in parameters, and contained the key wrapped by the give wrapping\n+   * key with the given algorithm.\n+   *\n+   * MDN\n+   */\n+  def wrapKey(format: String, key: CryptoKey, wrappingKey: CryptoKey,\n+    wrapAlgorithm: Algorithm): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a CryptoKey corresponding to the wrapped key given in\n+   * parameter.\n+   *\n+   * MDN\n+   */\n+  def unwrapKey(format: String, wrappedKey: BufferSource,\n+    unwrappingKey: CryptoKey, unwrapAlgorithm: String,\n+    unwrappedKeyAlgorithm: String, extractable: Boolean,\n+    keyUsages: js.Array[String]): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a CryptoKey corresponding to the wrapped key given in\n+   * parameter.\n+   *\n+   * MDN\n+   */\n+  def unwrapKey(format: String, wrappedKey: BufferSource,\n+    unwrappingKey: CryptoKey, unwrapAlgorithm: Algorithm,\n+    unwrappedKeyAlgorithm: String, extractable: Boolean,\n+    keyUsages: js.Array[String]): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a CryptoKey corresponding to the wrapped key given in\n+   * parameter.\n+   *\n+   * MDN\n+   */\n+  def unwrapKey(format: String, wrappedKey: BufferSource,\n+    unwrappingKey: CryptoKey, unwrapAlgorithm: String,\n+    unwrappedKeyAlgorithm: Algorithm, extractable: Boolean,\n+    keyUsages: js.Array[String]): Promise[js.Any] = js.native\n+\n+  /**\n+   * Returns a Promise of a CryptoKey corresponding to the wrapped key given in\n+   * parameter.\n+   *\n+   * MDN\n+   */\n+  def unwrapKey(format: String, wrappedKey: BufferSource,\n+    unwrappingKey: CryptoKey, unwrapAlgorithm: Algorithm,\n+    unwrappedKeyAlgorithm: Algorithm, extractable: Boolean,\n+    keyUsages: js.Array[String]): Promise[js.Any] = js.native\n+}\n+\n+// RSASSA-PKCS1-v1_5\n+\n+trait RsaKeyGenParams extends Algorithm {\n+  import CryptoTypes._\n+  var modulusLength: Double = js.native\n+\n+  var publicExponent: BigInteger = js.native\n+}\n+\n+object RsaKeyGenParams {\n+  import CryptoTypes._\n+  @inline\n+  def apply(name: String, modulusLength: Long,\n+    publicExponent: BigInteger): RsaKeyGenParams = {\n+    val result = js.Dynamic.literal()\n+    result.name = name\n+    result.modulusLength = modulusLength.toDouble\n+    result.publicExponent = publicExponent\n+    result.asInstanceOf[RsaKeyGenParams]\n+  }\n+}\n+\n+trait RsaHashedKeyGenParams extends RsaKeyGenParams {\n+  var hash: String = js.native\n+}\n+\n+object RsaHashedKeyGenParams {\n+  @inline\n+  def apply(name: String, modulusLength: Long,\n+    publicExponent: Uint8Array, hash: String): RsaHashedKeyGenParams = {\n+    val result = js.Dynamic.literal()\n+    result.name = name\n+    result.modulusLength = modulusLength.toDouble\n+    result.publicExponent = publicExponent\n+    result.hash = hash\n+    result.asInstanceOf[RsaHashedKeyGenParams]\n+  }\n+}\n+\n+trait RsaKeyAlgorithm extends KeyAlgorithm {\n+  import CryptoTypes._\n+  var modulusLength: Double = js.native","path":"src/main/scala/org/scalajs/dom/raw/Crypto.scala","position":416,"original_position":416,"commit_id":"118372b308b07b860b24f4b2fd9a3ecb4ea17fd5","original_commit_id":"118372b308b07b860b24f4b2fd9a3ecb4ea17fd5","user":{"login":"sjrd","id":535934,"avatar_url":"https://avatars.githubusercontent.com/u/535934?v=3","gravatar_id":"","url":"https://api.github.com/users/sjrd","html_url":"https://github.com/sjrd","followers_url":"https://api.github.com/users/sjrd/followers","following_url":"https://api.github.com/users/sjrd/following{/other_user}","gists_url":"https://api.github.com/users/sjrd/gists{/gist_id}","starred_url":"https://api.github.com/users/sjrd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sjrd/subscriptions","organizations_url":"https://api.github.com/users/sjrd/orgs","repos_url":"https://api.github.com/users/sjrd/repos","events_url":"https://api.github.com/users/sjrd/events{/privacy}","received_events_url":"https://api.github.com/users/sjrd/received_events","type":"User","site_admin":false},"body":"Missing blank line.","created_at":"2015-06-05T09:14:28Z","updated_at":"2015-06-05T09:14:28Z","html_url":"https://github.com/scala-js/scala-js-dom/pull/124#discussion_r31797923","pull_request_url":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/124","_links":{"self":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/comments/31797923"},"html":{"href":"https://github.com/scala-js/scala-js-dom/pull/124#discussion_r31797923"},"pull_request":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/124"}}},"pull_request":{"url":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/124","id":37010661,"html_url":"https://github.com/scala-js/scala-js-dom/pull/124","diff_url":"https://github.com/scala-js/scala-js-dom/pull/124.diff","patch_url":"https://github.com/scala-js/scala-js-dom/pull/124.patch","issue_url":"https://api.github.com/repos/scala-js/scala-js-dom/issues/124","number":124,"state":"open","locked":false,"title":"Implement Web Cryptography API","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":"Implements http://www.w3.org/TR/WebCryptoAPI/","created_at":"2015-06-05T08:30:18Z","updated_at":"2015-06-05T09:14:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c0b3bfef8060f92b58852dd9bf14e32f16627042","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/124/commits","review_comments_url":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/124/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/124/comments","statuses_url":"https://api.github.com/repos/scala-js/scala-js-dom/statuses/118372b308b07b860b24f4b2fd9a3ecb4ea17fd5","head":{"label":"mseddon:webcrypto-api","ref":"webcrypto-api","sha":"118372b308b07b860b24f4b2fd9a3ecb4ea17fd5","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},"repo":{"id":35538956,"name":"scala-js-dom","full_name":"mseddon/scala-js-dom","owner":{"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},"private":false,"html_url":"https://github.com/mseddon/scala-js-dom","description":"statically typed dom wrappers for scala-js","fork":true,"url":"https://api.github.com/repos/mseddon/scala-js-dom","forks_url":"https://api.github.com/repos/mseddon/scala-js-dom/forks","keys_url":"https://api.github.com/repos/mseddon/scala-js-dom/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mseddon/scala-js-dom/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mseddon/scala-js-dom/teams","hooks_url":"https://api.github.com/repos/mseddon/scala-js-dom/hooks","issue_events_url":"https://api.github.com/repos/mseddon/scala-js-dom/issues/events{/number}","events_url":"https://api.github.com/repos/mseddon/scala-js-dom/events","assignees_url":"https://api.github.com/repos/mseddon/scala-js-dom/assignees{/user}","branches_url":"https://api.github.com/repos/mseddon/scala-js-dom/branches{/branch}","tags_url":"https://api.github.com/repos/mseddon/scala-js-dom/tags","blobs_url":"https://api.github.com/repos/mseddon/scala-js-dom/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mseddon/scala-js-dom/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mseddon/scala-js-dom/git/refs{/sha}","trees_url":"https://api.github.com/repos/mseddon/scala-js-dom/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mseddon/scala-js-dom/statuses/{sha}","languages_url":"https://api.github.com/repos/mseddon/scala-js-dom/languages","stargazers_url":"https://api.github.com/repos/mseddon/scala-js-dom/stargazers","contributors_url":"https://api.github.com/repos/mseddon/scala-js-dom/contributors","subscribers_url":"https://api.github.com/repos/mseddon/scala-js-dom/subscribers","subscription_url":"https://api.github.com/repos/mseddon/scala-js-dom/subscription","commits_url":"https://api.github.com/repos/mseddon/scala-js-dom/commits{/sha}","git_commits_url":"https://api.github.com/repos/mseddon/scala-js-dom/git/commits{/sha}","comments_url":"https://api.github.com/repos/mseddon/scala-js-dom/comments{/number}","issue_comment_url":"https://api.github.com/repos/mseddon/scala-js-dom/issues/comments{/number}","contents_url":"https://api.github.com/repos/mseddon/scala-js-dom/contents/{+path}","compare_url":"https://api.github.com/repos/mseddon/scala-js-dom/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mseddon/scala-js-dom/merges","archive_url":"https://api.github.com/repos/mseddon/scala-js-dom/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mseddon/scala-js-dom/downloads","issues_url":"https://api.github.com/repos/mseddon/scala-js-dom/issues{/number}","pulls_url":"https://api.github.com/repos/mseddon/scala-js-dom/pulls{/number}","milestones_url":"https://api.github.com/repos/mseddon/scala-js-dom/milestones{/number}","notifications_url":"https://api.github.com/repos/mseddon/scala-js-dom/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mseddon/scala-js-dom/labels{/name}","releases_url":"https://api.github.com/repos/mseddon/scala-js-dom/releases{/id}","created_at":"2015-05-13T09:04:03Z","updated_at":"2015-05-13T09:04:03Z","pushed_at":"2015-06-05T08:54:16Z","git_url":"git://github.com/mseddon/scala-js-dom.git","ssh_url":"git@github.com:mseddon/scala-js-dom.git","clone_url":"https://github.com/mseddon/scala-js-dom.git","svn_url":"https://github.com/mseddon/scala-js-dom","homepage":null,"size":2036,"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":"d4a9e9b503c07d965e6c53b0068b38dd0f4aff53","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-06-02T22:43:22Z","pushed_at":"2015-06-05T08:54:17Z","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":3367,"stargazers_count":87,"watchers_count":87,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":34,"mirror_url":null,"open_issues_count":12,"forks":34,"open_issues":12,"watchers":87,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/124"},"html":{"href":"https://github.com/scala-js/scala-js-dom/pull/124"},"issue":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/issues/124"},"comments":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/issues/124/comments"},"review_comments":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/pulls/124/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/124/commits"},"statuses":{"href":"https://api.github.com/repos/scala-js/scala-js-dom/statuses/118372b308b07b860b24f4b2fd9a3ecb4ea17fd5"}}}}