From ab3e9d9530940bc6512b1fb5f80d6075e1e8393f Mon Sep 17 00:00:00 2001
From: ltxhhz <ltxhhz@qq.com>
Date: Thu, 10 Oct 2024 19:57:31 +0800
Subject: [PATCH] fix: change skia-canvas to github release

closes https://github.com/cnpm/cnpmcore/issues/710

pick from https://github.com/cnpm/cnpmcore/pull/712
---
 config/binaries.ts                            |    7 +-
 .../adapter/binary/GithubBinary.test.ts       |   56 +
 .../adapter/binary/NodePreGypBinary.test.ts   |   57 -
 test/fixtures/skia-canvas-releases.json       | 3482 +++++++++++++++++
 4 files changed, 3540 insertions(+), 62 deletions(-)
 create mode 100644 test/fixtures/skia-canvas-releases.json

diff --git a/config/binaries.ts b/config/binaries.ts
index 8502ef04..afcfcb1e 100644
--- a/config/binaries.ts
+++ b/config/binaries.ts
@@ -134,12 +134,9 @@ const binaries = {
   'skia-canvas': {
     category: 'skia-canvas',
     description: 'A canvas environment for Node',
-    type: BinaryType.NodePreGyp,
+    type: BinaryType.GitHub,
     repo: 'samizdatco/skia-canvas',
-    distUrl: 'https://skia-canvas.s3.us-east-1.amazonaws.com',
-    options: {
-      requiredNapiVersions: true,
-    },
+    distUrl: 'https://github.com/samizdatco/skia-canvas/releases',
   },
   wrtc: {
     category: 'wrtc',
diff --git a/test/common/adapter/binary/GithubBinary.test.ts b/test/common/adapter/binary/GithubBinary.test.ts
index e53c3d5c..125ee3c0 100644
--- a/test/common/adapter/binary/GithubBinary.test.ts
+++ b/test/common/adapter/binary/GithubBinary.test.ts
@@ -8,6 +8,7 @@ describe('test/common/adapter/binary/GithubBinary.test.ts', () => {
   beforeEach(async () => {
     binary = await app.getEggObject(GithubBinary);
   });
+
   describe('fetch()', () => {
     it('should fetch root and subdir work', async () => {
       const response = await TestUtil.readJSONFile(TestUtil.getFixtures('electron-releases.json'));
@@ -34,5 +35,60 @@ describe('test/common/adapter/binary/GithubBinary.test.ts', () => {
       }
       // console.log(result.items);
     });
+
+    it('should fetch skia-canvas', async () => {
+      const response = await TestUtil.readJSONFile(TestUtil.getFixtures('skia-canvas-releases.json'));
+      app.mockHttpclient(/https:\/\/api\.github\.com\/repos\/samizdatco\/skia-canvas\/releases/, 'GET', {
+        data: response,
+        status: 200,
+      });
+      let result = await binary.fetch('/', 'skia-canvas');
+      assert(result);
+      assert(result.items.length > 0);
+      // console.log(JSON.stringify(result.items, null, 2));
+      let matchDir = false;
+      for (const item of result.items) {
+        assert(item.isDir === true);
+        if (item.name === 'v0.9.30/') {
+          matchDir = true;
+        }
+      }
+      assert(matchDir);
+
+      result = await binary.fetch('/v0.9.24/', 'skia-canvas');
+      assert(result?.items.every(item => !/{.*}/.test(item.url)));
+
+      result = await binary.fetch('/v0.9.30/', 'skia-canvas');
+      assert(result);
+      assert(result.items.length > 0);
+      console.log(JSON.stringify(result.items, null, 2));
+      let matchFile1 = false;
+      let matchFile2 = false;
+      let matchFile3 = false;
+      for (const item of result.items) {
+        assert(item.isDir === false);
+        if (item.name === 'skia-canvas-v0.9.30-darwin-arm64.tar.gz') {
+          assert(item.date === '2024-08-26T18:04:13Z');
+          assert(item.size === 7547563);
+          assert.equal(item.url, 'https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-darwin-arm64.tar.gz');
+          matchFile1 = true;
+        }
+        if (item.name === 'skia-canvas-v0.9.30-linux-arm-glibc.tar.gz') {
+          assert(item.date === '2024-08-26T18:04:17Z');
+          assert(item.size === 8836353);
+          assert.equal(item.url, 'https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-arm-glibc.tar.gz');
+          matchFile2 = true;
+        }
+        if (item.name === 'skia-canvas-v0.9.30-win32-x64.tar.gz') {
+          assert(item.date === '2024-08-26T18:04:29Z');
+          assert(item.size === 7497076);
+          assert.equal(item.url, 'https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-win32-x64.tar.gz');
+          matchFile3 = true;
+        }
+      }
+      assert(matchFile1);
+      assert(matchFile2);
+      assert(matchFile3);
+    });
   });
 });
diff --git a/test/common/adapter/binary/NodePreGypBinary.test.ts b/test/common/adapter/binary/NodePreGypBinary.test.ts
index 861f1a7d..bb5ef9b2 100644
--- a/test/common/adapter/binary/NodePreGypBinary.test.ts
+++ b/test/common/adapter/binary/NodePreGypBinary.test.ts
@@ -137,63 +137,6 @@ describe('test/common/adapter/binary/NodePreGypBinary.test.ts', () => {
       assert(matchFile3);
     });
 
-    it('should fetch skia-canvas', async () => {
-      app.mockHttpclient('https://registry.npmjs.com/skia-canvas', 'GET', {
-        data: await TestUtil.readFixturesFile('registry.npmjs.com/skia-canvas.json'),
-      });
-      app.mockHttpclient('https://nodejs.org/dist/index.json', 'GET', {
-        data: await TestUtil.readFixturesFile('nodejs.org/site/index.json'),
-      });
-      let result = await binary.fetch('/', 'skia-canvas');
-      assert(result);
-      assert(result.items.length > 0);
-      // console.log(JSON.stringify(result.items, null, 2));
-      let matchDir = false;
-      for (const item of result.items) {
-        assert(item.isDir === true);
-        if (item.name === 'v0.9.30/') {
-          matchDir = true;
-        }
-      }
-      assert(matchDir);
-
-      result = await binary.fetch('/v0.9.24/', 'skia-canvas');
-      assert(result?.items.every(item => !/{.*}/.test(item.url)));
-
-      result = await binary.fetch('/v0.9.30/', 'skia-canvas');
-      assert(result);
-      assert(result.items.length > 0);
-      // console.log(JSON.stringify(result.items, null, 2));
-      let matchFile1 = false;
-      let matchFile2 = false;
-      let matchFile3 = false;
-      for (const item of result.items) {
-        assert(item.isDir === false);
-        assert.deepEqual(item.ignoreDownloadStatuses, [ 404, 403 ]);
-        if (item.name === 'darwin-arm64-napi-v6-unknown.tar.gz') {
-          assert(item.date === '2022-06-08T01:53:43.908Z');
-          assert(item.size === '-');
-          assert(item.url === 'https://skia-canvas.s3.us-east-1.amazonaws.com/v0.9.30/darwin-arm64-napi-v6-unknown.tar.gz');
-          matchFile1 = true;
-        }
-        if (item.name === 'linux-arm-napi-v6-glibc.tar.gz') {
-          assert(item.date === '2022-06-08T01:53:43.908Z');
-          assert(item.size === '-');
-          assert(item.url === 'https://skia-canvas.s3.us-east-1.amazonaws.com/v0.9.30/linux-arm-napi-v6-glibc.tar.gz');
-          matchFile2 = true;
-        }
-        if (item.name === 'win32-x64-napi-v6-unknown.tar.gz') {
-          assert(item.date === '2022-06-08T01:53:43.908Z');
-          assert(item.size === '-');
-          assert(item.url === 'https://skia-canvas.s3.us-east-1.amazonaws.com/v0.9.30/win32-x64-napi-v6-unknown.tar.gz');
-          matchFile3 = true;
-        }
-      }
-      assert(matchFile1);
-      assert(matchFile2);
-      assert(matchFile3);
-    });
-
     it('should fetch wrtc', async () => {
       app.mockHttpclient('https://registry.npmjs.com/wrtc', 'GET', {
         data: await TestUtil.readFixturesFile('registry.npmjs.com/wrtc.json'),
diff --git a/test/fixtures/skia-canvas-releases.json b/test/fixtures/skia-canvas-releases.json
new file mode 100644
index 00000000..c961eb21
--- /dev/null
+++ b/test/fixtures/skia-canvas-releases.json
@@ -0,0 +1,3482 @@
+[
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/171387921",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/171387921/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/171387921/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v1.0.2",
+    "id": 171387921,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "RE_kwDOEP53Es4KNywR",
+    "tag_name": "v1.0.2",
+    "target_commitish": "main",
+    "name": "v1.0.2",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2024-08-22T02:51:20Z",
+    "published_at": "2024-08-22T04:29:48Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/187552803",
+        "id": 187552803,
+        "node_id": "RA_kwDOEP53Es4LLdQj",
+        "name": "darwin-arm64-unknown.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "github-actions[bot]",
+          "id": 41898282,
+          "node_id": "MDM6Qm90NDE4OTgyODI=",
+          "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+          "html_url": "https://github.com/apps/github-actions",
+          "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+          "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+          "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+          "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+          "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+          "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+          "type": "Bot",
+          "site_admin": false
+        },
+        "content_type": "application/x-gtar",
+        "state": "uploaded",
+        "size": 8454907,
+        "download_count": 2269,
+        "created_at": "2024-08-22T02:52:36Z",
+        "updated_at": "2024-08-22T02:52:37Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.2/darwin-arm64-unknown.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/187553064",
+        "id": 187553064,
+        "node_id": "RA_kwDOEP53Es4LLdUo",
+        "name": "darwin-x64-unknown.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "github-actions[bot]",
+          "id": 41898282,
+          "node_id": "MDM6Qm90NDE4OTgyODI=",
+          "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+          "html_url": "https://github.com/apps/github-actions",
+          "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+          "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+          "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+          "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+          "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+          "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+          "type": "Bot",
+          "site_admin": false
+        },
+        "content_type": "application/x-gtar",
+        "state": "uploaded",
+        "size": 8785354,
+        "download_count": 379,
+        "created_at": "2024-08-22T02:54:09Z",
+        "updated_at": "2024-08-22T02:54:10Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.2/darwin-x64-unknown.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/187556584",
+        "id": 187556584,
+        "node_id": "RA_kwDOEP53Es4LLeLo",
+        "name": "linux-arm64-glibc.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "github-actions[bot]",
+          "id": 41898282,
+          "node_id": "MDM6Qm90NDE4OTgyODI=",
+          "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+          "html_url": "https://github.com/apps/github-actions",
+          "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+          "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+          "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+          "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+          "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+          "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+          "type": "Bot",
+          "site_admin": false
+        },
+        "content_type": "application/x-gtar",
+        "state": "uploaded",
+        "size": 10464846,
+        "download_count": 1294,
+        "created_at": "2024-08-22T03:16:09Z",
+        "updated_at": "2024-08-22T03:16:13Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.2/linux-arm64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/187563584",
+        "id": 187563584,
+        "node_id": "RA_kwDOEP53Es4LLf5A",
+        "name": "linux-arm64-musl.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "github-actions[bot]",
+          "id": 41898282,
+          "node_id": "MDM6Qm90NDE4OTgyODI=",
+          "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+          "html_url": "https://github.com/apps/github-actions",
+          "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+          "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+          "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+          "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+          "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+          "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+          "type": "Bot",
+          "site_admin": false
+        },
+        "content_type": "application/x-gtar",
+        "state": "uploaded",
+        "size": 10556169,
+        "download_count": 427,
+        "created_at": "2024-08-22T04:06:51Z",
+        "updated_at": "2024-08-22T04:06:53Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.2/linux-arm64-musl.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/187554279",
+        "id": 187554279,
+        "node_id": "RA_kwDOEP53Es4LLdnn",
+        "name": "linux-x64-glibc.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "github-actions[bot]",
+          "id": 41898282,
+          "node_id": "MDM6Qm90NDE4OTgyODI=",
+          "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+          "html_url": "https://github.com/apps/github-actions",
+          "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+          "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+          "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+          "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+          "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+          "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+          "type": "Bot",
+          "site_admin": false
+        },
+        "content_type": "application/x-gtar",
+        "state": "uploaded",
+        "size": 10933839,
+        "download_count": 53459,
+        "created_at": "2024-08-22T03:02:46Z",
+        "updated_at": "2024-08-22T03:02:46Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.2/linux-x64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/187555675",
+        "id": 187555675,
+        "node_id": "RA_kwDOEP53Es4LLd9b",
+        "name": "linux-x64-musl.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "github-actions[bot]",
+          "id": 41898282,
+          "node_id": "MDM6Qm90NDE4OTgyODI=",
+          "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+          "html_url": "https://github.com/apps/github-actions",
+          "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+          "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+          "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+          "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+          "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+          "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+          "type": "Bot",
+          "site_admin": false
+        },
+        "content_type": "application/x-gtar",
+        "state": "uploaded",
+        "size": 10835806,
+        "download_count": 8844,
+        "created_at": "2024-08-22T03:11:12Z",
+        "updated_at": "2024-08-22T03:11:13Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.2/linux-x64-musl.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/187553262",
+        "id": 187553262,
+        "node_id": "RA_kwDOEP53Es4LLdXu",
+        "name": "win32-x64-unknown.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "github-actions[bot]",
+          "id": 41898282,
+          "node_id": "MDM6Qm90NDE4OTgyODI=",
+          "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+          "html_url": "https://github.com/apps/github-actions",
+          "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+          "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+          "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+          "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+          "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+          "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+          "type": "Bot",
+          "site_admin": false
+        },
+        "content_type": "application/x-gtar",
+        "state": "uploaded",
+        "size": 9081079,
+        "download_count": 2916,
+        "created_at": "2024-08-22T02:55:26Z",
+        "updated_at": "2024-08-22T02:55:27Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.2/win32-x64-unknown.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v1.0.2",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v1.0.2",
+    "body": "## Maintenance\r\n- After getting a surprise bill from Amazon for the S3 bucket hosting the pre-compiled binaries, I've moved them to GitHub Releases instead. Aside from resolving some security warnings by upgrading dependencies, this version *should* be functionally identical to 1.0.1…\r\n\r\n## Breaking Changes\r\n- The 32-bit ARM-based linux builds are no longer provided pre-compiled; you'll now need to build from source.\r\n"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/79995648",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/79995648/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/79995648/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v1.0.1",
+    "id": 79995648,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "RE_kwDOEP53Es4ExKMA",
+    "tag_name": "v1.0.1",
+    "target_commitish": "main",
+    "name": "v1.0.1",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2022-10-15T18:29:14Z",
+    "published_at": "2022-10-17T22:02:48Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188412993",
+        "id": 188412993,
+        "node_id": "RA_kwDOEP53Es4LOvRB",
+        "name": "skia-canvas-v1.0.1-darwin-arm64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8588925,
+        "download_count": 12,
+        "created_at": "2024-08-26T17:11:35Z",
+        "updated_at": "2024-08-26T17:11:38Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-darwin-arm64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413000",
+        "id": 188413000,
+        "node_id": "RA_kwDOEP53Es4LOvRI",
+        "name": "skia-canvas-v1.0.1-darwin-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8936461,
+        "download_count": 7,
+        "created_at": "2024-08-26T17:11:38Z",
+        "updated_at": "2024-08-26T17:11:40Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413005",
+        "id": 188413005,
+        "node_id": "RA_kwDOEP53Es4LOvRN",
+        "name": "skia-canvas-v1.0.1-linux-arm-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 10928750,
+        "download_count": 2,
+        "created_at": "2024-08-26T17:11:40Z",
+        "updated_at": "2024-08-26T17:11:43Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-linux-arm-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188703211",
+        "id": 188703211,
+        "node_id": "RA_kwDOEP53Es4LP2Hr",
+        "name": "skia-canvas-v1.0.1-linux-arm64-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 10523507,
+        "download_count": 7,
+        "created_at": "2024-08-27T21:40:15Z",
+        "updated_at": "2024-08-27T21:40:19Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-linux-arm64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413010",
+        "id": 188413010,
+        "node_id": "RA_kwDOEP53Es4LOvRS",
+        "name": "skia-canvas-v1.0.1-linux-arm64-musl.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 11106056,
+        "download_count": 7,
+        "created_at": "2024-08-26T17:11:43Z",
+        "updated_at": "2024-08-26T17:11:46Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-linux-arm64-musl.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413019",
+        "id": 188413019,
+        "node_id": "RA_kwDOEP53Es4LOvRb",
+        "name": "skia-canvas-v1.0.1-linux-x64-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 11508598,
+        "download_count": 63,
+        "created_at": "2024-08-26T17:11:46Z",
+        "updated_at": "2024-08-26T17:11:49Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-linux-x64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413028",
+        "id": 188413028,
+        "node_id": "RA_kwDOEP53Es4LOvRk",
+        "name": "skia-canvas-v1.0.1-linux-x64-musl.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 11406062,
+        "download_count": 6,
+        "created_at": "2024-08-26T17:11:49Z",
+        "updated_at": "2024-08-26T17:11:52Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-linux-x64-musl.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413036",
+        "id": 188413036,
+        "node_id": "RA_kwDOEP53Es4LOvRs",
+        "name": "skia-canvas-v1.0.1-win32-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 9169718,
+        "download_count": 11,
+        "created_at": "2024-08-26T17:11:52Z",
+        "updated_at": "2024-08-26T17:11:55Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-win32-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v1.0.1",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v1.0.1",
+    "body": "> ## Deprecation Warning\r\n> This version can no longer be installed via `npm` due to the unsustainable expense of hosting the library on S3. You *can* still install it directly from this GitHub release via the commands below. Find the section for your OS and machine type and copy/paste the corresponding `npm install …` command into your terminal.\r\n>\r\n> <details><summary><b>Installation commands</b></summary>\r\n>\r\n> #### Mac (Apple Silicon)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-darwin-arm64.tar.gz\r\n> ```\r\n>\r\n> #### Mac (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-darwin-x64.tar.gz\r\n> ```\r\n>\r\n> #### Windows (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-win32-x64.tar.gz\r\n> ```\r\n> #### Linux (Intel/AMD; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-linux-x64-glibc.tar.gz\r\n> ```\r\n>\r\n> #### Linux (Intel/AMD; musl C library)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-linux-x64-musl.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-64; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-linux-arm64-glibc.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-64; musl C library)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-linux-arm64-musl.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-32; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.1/skia-canvas-v1.0.1-linux-arm-glibc.tar.gz\r\n> ```\r\n>\r\n></details>\r\n\r\n\r\n## Bugfixes\r\n- If an offscreen buffer can't be allocated using the Vulkan renderer, CPU rendering is used as a fallback\r\n- The `drawCanvas()` routine now works even when the destination canvas is later saved as an SVG (previously, the source canvas would be missing from the output). Caveat: this only works if the destination canvas is using the default `source-over` blend mode, has its `globalAlpha` set to 1, and is not using shadows or the `effect` property. If any of those defaults have been changed, the drawn canvas will not appear in the saved SVG. Bitmap and PDF exports do not have this restriction.\r\n\r\n## Misc. Improvements\r\n- Added a `fullscreen` event to the `Window` class to flag changes into and out of full-screen mode.\r\n",
+    "discussion_url": "https://github.com/samizdatco/skia-canvas/discussions/121"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/73790706",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/73790706/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/73790706/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v1.0.0",
+    "id": 73790706,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "RE_kwDOEP53Es4EZfTy",
+    "tag_name": "v1.0.0",
+    "target_commitish": "main",
+    "name": "v1.0.0",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2022-08-05T21:28:11Z",
+    "published_at": "2022-08-06T14:59:51Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413722",
+        "id": 188413722,
+        "node_id": "RA_kwDOEP53Es4LOvca",
+        "name": "skia-canvas-v1.0.0-darwin-arm64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8624749,
+        "download_count": 4,
+        "created_at": "2024-08-26T17:15:34Z",
+        "updated_at": "2024-08-26T17:15:37Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-darwin-arm64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413726",
+        "id": 188413726,
+        "node_id": "RA_kwDOEP53Es4LOvce",
+        "name": "skia-canvas-v1.0.0-darwin-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8953451,
+        "download_count": 3,
+        "created_at": "2024-08-26T17:15:37Z",
+        "updated_at": "2024-08-26T17:15:40Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413733",
+        "id": 188413733,
+        "node_id": "RA_kwDOEP53Es4LOvcl",
+        "name": "skia-canvas-v1.0.0-linux-arm-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 12038222,
+        "download_count": 2,
+        "created_at": "2024-08-26T17:15:40Z",
+        "updated_at": "2024-08-26T17:15:43Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-linux-arm-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188697924",
+        "id": 188697924,
+        "node_id": "RA_kwDOEP53Es4LP01E",
+        "name": "skia-canvas-v1.0.0-linux-arm64-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 12320896,
+        "download_count": 3,
+        "created_at": "2024-08-27T21:08:02Z",
+        "updated_at": "2024-08-27T21:08:07Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-linux-arm64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413758",
+        "id": 188413758,
+        "node_id": "RA_kwDOEP53Es4LOvc-",
+        "name": "skia-canvas-v1.0.0-linux-arm64-musl.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 12395628,
+        "download_count": 4,
+        "created_at": "2024-08-26T17:15:43Z",
+        "updated_at": "2024-08-26T17:15:46Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-linux-arm64-musl.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413761",
+        "id": 188413761,
+        "node_id": "RA_kwDOEP53Es4LOvdB",
+        "name": "skia-canvas-v1.0.0-linux-x64-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 12756098,
+        "download_count": 3,
+        "created_at": "2024-08-26T17:15:46Z",
+        "updated_at": "2024-08-26T17:15:49Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-linux-x64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413769",
+        "id": 188413769,
+        "node_id": "RA_kwDOEP53Es4LOvdJ",
+        "name": "skia-canvas-v1.0.0-linux-x64-musl.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 12658521,
+        "download_count": 1,
+        "created_at": "2024-08-26T17:15:49Z",
+        "updated_at": "2024-08-26T17:15:52Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-linux-x64-musl.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188413780",
+        "id": 188413780,
+        "node_id": "RA_kwDOEP53Es4LOvdU",
+        "name": "skia-canvas-v1.0.0-win32-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 9239744,
+        "download_count": 85,
+        "created_at": "2024-08-26T17:15:52Z",
+        "updated_at": "2024-08-26T17:15:55Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-win32-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v1.0.0",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v1.0.0",
+    "body": "> ## Deprecation Warning\r\n> This version can no longer be installed via `npm` due to the unsustainable expense of hosting the library on S3. You *can* still install it directly from this GitHub release via the commands below. Find the section for your OS and machine type and copy/paste the corresponding `npm install …` command into your terminal.\r\n>\r\n> <details><summary><b>Installation commands</b></summary>\r\n>\r\n> #### Mac (Apple Silicon)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-darwin-arm64.tar.gz\r\n> ```\r\n>\r\n> #### Mac (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-darwin-x64.tar.gz\r\n> ```\r\n>\r\n> #### Windows (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-win32-x64.tar.gz\r\n> ```\r\n> #### Linux (Intel/AMD; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-linux-x64-glibc.tar.gz\r\n> ```\r\n>\r\n> #### Linux (Intel/AMD; musl C library)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-linux-x64-musl.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-64; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-linux-arm64-glibc.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-64; musl C library)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-linux-arm64-musl.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-32; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v1.0.0/skia-canvas-v1.0.0-linux-arm-glibc.tar.gz\r\n> ```\r\n>\r\n></details>\r\n\r\n## New Features\r\n- The new [Window][window] class can display a **Canvas** on screen, respond to mouse and keyboard input, and fluidly [animate][window_anim] by calling user-defined [event handlers][window_events].\r\n- Bitmap rendering now occurs on the GPU by default and can be configured using the **Canvas**'s [`.gpu`][canvas_gpu] property. If the platform supports hardware-accelerated rendering (using Metal on macOS and Vulkan on Linux & Windows), the property will be `true` by default and can be set to `false` to use the software renderer.\r\n- Added support for recent Chrome features:\r\n  - the [`reset()`][chrome_reset] context method which erases the canvas, resets the transformation state, and clears the current path\r\n  - the [`roundRect()`][chrome_rrect] method on contexts and **Path2D** objects which adds a rounded rectangle using 1–4 corner radii (provided as a single value or an array of numbers and/or **DOMPoint** objects)\r\n\r\n## Bugfixes\r\n- The `FontLibrary.reset()` method didn't actually remove previously installed fonts that had already been drawn with (and thus cached). It now clears those caches, which also means previously used fonts can now be replaced by calling `.use()` again with the same family name.\r\n- The [`.drawCanvas()`][drawCanvas] routine now applies filter effects and shadows consistent with the current resolution and transformation state.\r\n\r\n## Misc. Improvements\r\n- The [`.filter`][filter] property's `\"blur(…)\"` and `\"drop-shadow(…)\"` effects now match browser behavior much more closely and scale appropriately with the `density` export option.\r\n- Antialiasing is smoother, particularly when down-scaling images, thanks to the use of mipmaps rather than Skia's (apparently buggy?) implementation of bicubic interpolation.\r\n- Calling `clearRect()` with dimensions that fully enclose the canvas will now discard all the vector objects that have been drawn so far (rather than simply covering them up).\r\n- Upgraded Skia to milestone 103\r\n\r\n[window]: https://github.com/samizdatco/skia-canvas#window\r\n[window_anim]: https://github.com/samizdatco/skia-canvas#events--animation\r\n[window_events]: https://github.com/samizdatco/skia-canvas#on--off--once\r\n[canvas_gpu]: https://github.com/samizdatco/skia-canvas#gpu\r\n[filter]: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/filter\r\n[chrome_reset]: https://developer.chrome.com/blog/canvas2d/#context-reset\r\n[chrome_rrect]: https://developer.chrome.com/blog/canvas2d/#round-rect\r\n[drawCanvas]: https://github.com/samizdatco/skia-canvas#drawcanvascanvas-x-y-\r\n",
+    "reactions": {
+      "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/73790706/reactions",
+      "total_count": 6,
+      "+1": 0,
+      "-1": 0,
+      "laugh": 0,
+      "hooray": 4,
+      "confused": 0,
+      "heart": 0,
+      "rocket": 2,
+      "eyes": 0
+    }
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/68892867",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/68892867/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/68892867/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.30",
+    "id": 68892867,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "RE_kwDOEP53Es4EGzjD",
+    "tag_name": "v0.9.30",
+    "target_commitish": "main",
+    "name": "v0.9.30",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2022-06-07T22:21:47Z",
+    "published_at": "2022-06-08T01:53:28Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420227",
+        "id": 188420227,
+        "node_id": "RA_kwDOEP53Es4LOxCD",
+        "name": "skia-canvas-v0.9.30-darwin-arm64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7547563,
+        "download_count": 38,
+        "created_at": "2024-08-26T18:04:10Z",
+        "updated_at": "2024-08-26T18:04:13Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-darwin-arm64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420237",
+        "id": 188420237,
+        "node_id": "RA_kwDOEP53Es4LOxCN",
+        "name": "skia-canvas-v0.9.30-darwin-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7796542,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:04:13Z",
+        "updated_at": "2024-08-26T18:04:15Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420240",
+        "id": 188420240,
+        "node_id": "RA_kwDOEP53Es4LOxCQ",
+        "name": "skia-canvas-v0.9.30-linux-arm-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8836353,
+        "download_count": 2,
+        "created_at": "2024-08-26T18:04:15Z",
+        "updated_at": "2024-08-26T18:04:17Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-arm-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420247",
+        "id": 188420247,
+        "node_id": "RA_kwDOEP53Es4LOxCX",
+        "name": "skia-canvas-v0.9.30-linux-arm64-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8983858,
+        "download_count": 3,
+        "created_at": "2024-08-26T18:04:17Z",
+        "updated_at": "2024-08-26T18:04:20Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-arm64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420255",
+        "id": 188420255,
+        "node_id": "RA_kwDOEP53Es4LOxCf",
+        "name": "skia-canvas-v0.9.30-linux-arm64-musl.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 9057861,
+        "download_count": 4,
+        "created_at": "2024-08-26T18:04:20Z",
+        "updated_at": "2024-08-26T18:04:23Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-arm64-musl.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420268",
+        "id": 188420268,
+        "node_id": "RA_kwDOEP53Es4LOxCs",
+        "name": "skia-canvas-v0.9.30-linux-x64-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 9386884,
+        "download_count": 232,
+        "created_at": "2024-08-26T18:04:23Z",
+        "updated_at": "2024-08-26T18:04:25Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-x64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420281",
+        "id": 188420281,
+        "node_id": "RA_kwDOEP53Es4LOxC5",
+        "name": "skia-canvas-v0.9.30-linux-x64-musl.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 9297950,
+        "download_count": 39,
+        "created_at": "2024-08-26T18:04:25Z",
+        "updated_at": "2024-08-26T18:04:27Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-x64-musl.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420284",
+        "id": 188420284,
+        "node_id": "RA_kwDOEP53Es4LOxC8",
+        "name": "skia-canvas-v0.9.30-win32-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7497076,
+        "download_count": 7,
+        "created_at": "2024-08-26T18:04:27Z",
+        "updated_at": "2024-08-26T18:04:29Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-win32-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.30",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.30",
+    "body": "> ## Deprecation Warning\r\n> This version can no longer be installed via `npm` due to the unsustainable expense of hosting the library on S3. You *can* still install it directly from this GitHub release via the commands below. Find the section for your OS and machine type and copy/paste the corresponding `npm install …` command into your terminal.\r\n>\r\n> <details><summary><b>Installation commands</b></summary>\r\n>\r\n> #### Mac (Apple Silicon)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-darwin-arm64.tar.gz\r\n> ```\r\n>\r\n> #### Mac (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-darwin-x64.tar.gz\r\n> ```\r\n>\r\n> #### Windows (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-win32-x64.tar.gz\r\n> ```\r\n> #### Linux (Intel/AMD; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-x64-glibc.tar.gz\r\n> ```\r\n>\r\n> #### Linux (Intel/AMD; musl C library)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-x64-musl.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-64; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-arm64-glibc.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-64; musl C library)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-arm64-musl.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-32; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.30/skia-canvas-v0.9.30-linux-arm-glibc.tar.gz\r\n> ```\r\n>\r\n></details>\r\n\r\n## New Features\r\n- Enhacements to the shared **FontLibrary** object:\r\n  - Added a [`reset()`][FontLibrary.reset] method to FontLibrary which uninstalls any fonts that had been dynamically installed via `FontLibrary.use()`\r\n  - The [`use()`][FontLibrary.use] method now checks for previously installed fonts with the same family name (or alias) and will replace them with the newly added font\r\n- Added pre-compiled binaries for Alpine Linux on arm64\r\n\r\n## Bugfixes\r\n- Calling `clip` with an empty path (or one that does not intersect the current clipping mask) will now prevent drawing altogether\r\n- Transformation (`translate`, `rotate`, etc.) and line-drawing methods (`moveTo`, `lineTo`, `ellipse`, etc.) are now silently ignored if called with `NaN`, `Infinity`, or non-**Number** values in the arguments rather than throwing an error\r\n  - applies to both the Context and Path2D versions of the drawing methods\r\n  - a **TypeError** is thrown only if the number of arguments is too low (mirroring browser behavior)\r\n- [`conicCurveTo()`][conicCurveTo] now correctly reflects the canvas's transform state\r\n- The browser-based version of [`loadImage()`][loadImage] now returns a **Promise** that correctly resolves to an **Image** object\r\n- SVG exports no longer have an invisible, canvas-sized `<rect/>` as their first element\r\n- Fixed an incompatibility on Alpine between the version of libstdc++ present on the `node:alpine` docker images and the version used when building the precompiled binaries\r\n\r\n## Misc. Improvements\r\n- Upgraded Skia to milestone 101\r\n\r\n[conicCurveTo]: https://github.com/samizdatco/skia-canvas#coniccurvetocpx-cpy-x-y-weight\r\n[FontLibrary.reset]: https://github.com/samizdatco/skia-canvas#reset\r\n[FontLibrary.use]: https://github.com/samizdatco/skia-canvas#usefamilyname-fontpaths\r\n[loadImage]: https://github.com/samizdatco/skia-canvas/#loadimage\r\n",
+    "discussion_url": "https://github.com/samizdatco/skia-canvas/discussions/100"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/58944916",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/58944916/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/58944916/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.29",
+    "id": 58944916,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "RE_kwDOEP53Es4Dg22U",
+    "tag_name": "v0.9.29",
+    "target_commitish": "main",
+    "name": "v0.9.29",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2022-02-07T22:25:38Z",
+    "published_at": "2022-02-08T00:17:23Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420390",
+        "id": 188420390,
+        "node_id": "RA_kwDOEP53Es4LOxEm",
+        "name": "skia-canvas-v0.9.29-darwin-arm64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7392756,
+        "download_count": 14,
+        "created_at": "2024-08-26T18:05:13Z",
+        "updated_at": "2024-08-26T18:05:15Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-darwin-arm64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420397",
+        "id": 188420397,
+        "node_id": "RA_kwDOEP53Es4LOxEt",
+        "name": "skia-canvas-v0.9.29-darwin-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7630094,
+        "download_count": 6,
+        "created_at": "2024-08-26T18:05:15Z",
+        "updated_at": "2024-08-26T18:05:18Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420407",
+        "id": 188420407,
+        "node_id": "RA_kwDOEP53Es4LOxE3",
+        "name": "skia-canvas-v0.9.29-linux-arm-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8336578,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:05:18Z",
+        "updated_at": "2024-08-26T18:05:20Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-linux-arm-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420439",
+        "id": 188420439,
+        "node_id": "RA_kwDOEP53Es4LOxFX",
+        "name": "skia-canvas-v0.9.29-linux-arm64-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8428669,
+        "download_count": 3,
+        "created_at": "2024-08-26T18:05:20Z",
+        "updated_at": "2024-08-26T18:05:22Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-linux-arm64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420447",
+        "id": 188420447,
+        "node_id": "RA_kwDOEP53Es4LOxFf",
+        "name": "skia-canvas-v0.9.29-linux-x64-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 9114182,
+        "download_count": 361,
+        "created_at": "2024-08-26T18:05:22Z",
+        "updated_at": "2024-08-26T18:05:24Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-linux-x64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420455",
+        "id": 188420455,
+        "node_id": "RA_kwDOEP53Es4LOxFn",
+        "name": "skia-canvas-v0.9.29-linux-x64-musl.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 9068736,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:05:25Z",
+        "updated_at": "2024-08-26T18:05:27Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-linux-x64-musl.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420457",
+        "id": 188420457,
+        "node_id": "RA_kwDOEP53Es4LOxFp",
+        "name": "skia-canvas-v0.9.29-win32-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7345460,
+        "download_count": 3,
+        "created_at": "2024-08-26T18:05:27Z",
+        "updated_at": "2024-08-26T18:05:29Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-win32-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.29",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.29",
+    "body": "> ## Deprecation Warning\r\n> This version can no longer be installed via `npm` due to the unsustainable expense of hosting the library on S3. You *can* still install it directly from this GitHub release via the commands below. Find the section for your OS and machine type and copy/paste the corresponding `npm install …` command into your terminal.\r\n>\r\n> <details><summary><b>Installation commands</b></summary>\r\n>\r\n> #### Mac (Apple Silicon)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-darwin-arm64.tar.gz\r\n> ```\r\n>\r\n> #### Mac (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-darwin-x64.tar.gz\r\n> ```\r\n>\r\n> #### Windows (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-win32-x64.tar.gz\r\n> ```\r\n> #### Linux (Intel/AMD; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-linux-x64-glibc.tar.gz\r\n> ```\r\n>\r\n> #### Linux (Intel/AMD; musl C library)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-linux-x64-musl.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-64; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-linux-arm64-glibc.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-32; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.29/skia-canvas-v0.9.29-linux-arm-glibc.tar.gz\r\n> ```\r\n>\r\n></details>\r\n\r\n## New Features\r\n- PDF exports now support the optional [`matte`][matte] argument.\r\n\r\n## Breaking Changes\r\n- When the [`drawImage()`][mdn_drawImage] function is passed a **Canvas** object as its image source it will now rasterize the canvas before drawing. The prior behavior (in which it is drawn as a vector graphic) can now be accessed through the new [`drawCanvas()`][drawCanvas] method which supports the same numerical arguments as `drawImage` but requires that its first argument be a **Canvas**.\r\n\r\n## Bugfixes\r\n- Regions erased using [`clearRect()`][mdn_clearRect] are now properly antialiased\r\n- The [`clip()`][mdn_clip] method now interprets the current translate/scale/rotate state correctly when combining clipping masks\r\n\r\n## Misc. Improvements\r\n- Upgraded Skia to milestone 97\r\n\r\n[matte]: https://github.com/samizdatco/skia-canvas#matte\r\n[drawCanvas]: https://github.com/samizdatco/skia-canvas#drawcanvascanvas-x-y-\r\n[mdn_clip]: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/clip\r\n[mdn_clearRect]: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/clearRect\r\n[mdn_drawImage]: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/56953891",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/56953891/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/56953891/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.28",
+    "id": 56953891,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "RE_kwDOEP53Es4DZQwj",
+    "tag_name": "v0.9.28",
+    "target_commitish": "main",
+    "name": "v0.9.28",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2022-01-12T20:34:27Z",
+    "published_at": "2022-01-12T21:20:55Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420642",
+        "id": 188420642,
+        "node_id": "RA_kwDOEP53Es4LOxIi",
+        "name": "skia-canvas-v0.9.28-darwin-arm64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7386791,
+        "download_count": 2,
+        "created_at": "2024-08-26T18:06:04Z",
+        "updated_at": "2024-08-26T18:06:06Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-darwin-arm64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420649",
+        "id": 188420649,
+        "node_id": "RA_kwDOEP53Es4LOxIp",
+        "name": "skia-canvas-v0.9.28-darwin-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7630975,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:06:06Z",
+        "updated_at": "2024-08-26T18:06:08Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420659",
+        "id": 188420659,
+        "node_id": "RA_kwDOEP53Es4LOxIz",
+        "name": "skia-canvas-v0.9.28-linux-arm-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8333621,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:06:08Z",
+        "updated_at": "2024-08-26T18:06:10Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-linux-arm-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420666",
+        "id": 188420666,
+        "node_id": "RA_kwDOEP53Es4LOxI6",
+        "name": "skia-canvas-v0.9.28-linux-arm64-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8422207,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:06:10Z",
+        "updated_at": "2024-08-26T18:06:12Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-linux-arm64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420678",
+        "id": 188420678,
+        "node_id": "RA_kwDOEP53Es4LOxJG",
+        "name": "skia-canvas-v0.9.28-linux-x64-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 9113186,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:06:12Z",
+        "updated_at": "2024-08-26T18:06:15Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-linux-x64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420692",
+        "id": 188420692,
+        "node_id": "RA_kwDOEP53Es4LOxJU",
+        "name": "skia-canvas-v0.9.28-linux-x64-musl.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 9069567,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:06:15Z",
+        "updated_at": "2024-08-26T18:06:17Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-linux-x64-musl.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188420700",
+        "id": 188420700,
+        "node_id": "RA_kwDOEP53Es4LOxJc",
+        "name": "skia-canvas-v0.9.28-win32-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7344321,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:06:17Z",
+        "updated_at": "2024-08-26T18:06:19Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-win32-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.28",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.28",
+    "body": "> ## Deprecation Warning\r\n> This version can no longer be installed via `npm` due to the unsustainable expense of hosting the library on S3. You *can* still install it directly from this GitHub release via the commands below. Find the section for your OS and machine type and copy/paste the corresponding `npm install …` command into your terminal.\r\n>\r\n> <details><summary><b>Installation commands</b></summary>\r\n>\r\n> #### Mac (Apple Silicon)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-darwin-arm64.tar.gz\r\n> ```\r\n>\r\n> #### Mac (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-darwin-x64.tar.gz\r\n> ```\r\n>\r\n> #### Windows (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-win32-x64.tar.gz\r\n> ```\r\n> #### Linux (Intel/AMD; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-linux-x64-glibc.tar.gz\r\n> ```\r\n>\r\n> #### Linux (Intel/AMD; musl C library)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-linux-x64-musl.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-64; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-linux-arm64-glibc.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-32; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.28/skia-canvas-v0.9.28-linux-arm-glibc.tar.gz\r\n> ```\r\n>\r\n></details>\r\n\r\n## New Features\r\n- Added TypeScript definitions for extensions to the DOM spec (contributed by [@cprecioso](https://github.com/cprecioso))\r\n- Added 3D-perspective transformations via the new [createProjection()](https://github.com/samizdatco/skia-canvas#createprojectionquad-basis) context method\r\n- Colors can now use the [hwb()](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/hwb()) model\r\n\r\n## Breaking Changes\r\n- The **Canvas** [`.async`](https://github.com/samizdatco/skia-canvas#async) property has been **deprecated** and will be removed in a future release. \r\n  - The `saveAs`, `toBuffer`, and `toDataURL` methods will now be async-only (likewise the [shorthand properties](https://github.com/samizdatco/skia-canvas#pdf-svg-jpg-and-png)).\r\n  - Use their synchronous counterparts (`saveAsSync`, `toBufferSync`, and `toDataURLSync`) if you want to block execution while exporting images.\r\n- The [ImageData](https://developer.mozilla.org/en-US/docs/Web/API/ImageData/ImageData) constructor now orders its arguments properly: the optional buffer/array argument now comes first\r\n\r\n## Bugfixes\r\n- Fixed a stack overflow that was occurring when images became too deeply nested for the default deallocator to handle (primarily due to many thousands of image exports from the same canvas)\r\n- The `source-in`, `source-out`, `destination-atop`, and `copy` composite operations now work correctly for paths rather than rendering shapes without color (contributed by [@meihuanyu](https://github.com/meihuanyu))\r\n- Shape primitives now behave consistently with browsers when being added to a non-empty path:\r\n  - `rect()` now issues an initial `moveTo` rather than extending the path, then leaves the ‘current’ point in its upper left corner\r\n  - `ellipse()` extends the current path rather than implicitly closing it (contributed by [@meihuanyu](https://github.com/meihuanyu))\r\n  - `arc()` also extends the current path rather than closing it\r\n\r\n## Misc. Improvements\r\n- Upgraded Skia to milestone 96\r\n- Added workflow for creating docker build environments\r\n",
+    "discussion_url": "https://github.com/samizdatco/skia-canvas/discussions/75"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/51920893",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/51920893/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/51920893/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.27",
+    "id": 51920893,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "RE_kwDOEP53Es4DGD_9",
+    "tag_name": "v0.9.27",
+    "target_commitish": "master",
+    "name": "v0.9.27",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2021-10-24T01:08:53Z",
+    "published_at": "2021-10-24T01:56:02Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188428126",
+        "id": 188428126,
+        "node_id": "RA_kwDOEP53Es4LOy9e",
+        "name": "skia-canvas-v0.9.27-darwin-arm64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7372551,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:46:58Z",
+        "updated_at": "2024-08-26T18:47:00Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-darwin-arm64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188428138",
+        "id": 188428138,
+        "node_id": "RA_kwDOEP53Es4LOy9q",
+        "name": "skia-canvas-v0.9.27-darwin-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7644439,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:47:00Z",
+        "updated_at": "2024-08-26T18:47:02Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188428146",
+        "id": 188428146,
+        "node_id": "RA_kwDOEP53Es4LOy9y",
+        "name": "skia-canvas-v0.9.27-linux-arm-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8306415,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:47:02Z",
+        "updated_at": "2024-08-26T18:47:04Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-linux-arm-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188428156",
+        "id": 188428156,
+        "node_id": "RA_kwDOEP53Es4LOy98",
+        "name": "skia-canvas-v0.9.27-linux-arm64-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8384656,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:47:04Z",
+        "updated_at": "2024-08-26T18:47:07Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-linux-arm64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188428181",
+        "id": 188428181,
+        "node_id": "RA_kwDOEP53Es4LOy-V",
+        "name": "skia-canvas-v0.9.27-linux-x64-glibc.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 9073479,
+        "download_count": 23,
+        "created_at": "2024-08-26T18:47:07Z",
+        "updated_at": "2024-08-26T18:47:09Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-linux-x64-glibc.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188428194",
+        "id": 188428194,
+        "node_id": "RA_kwDOEP53Es4LOy-i",
+        "name": "skia-canvas-v0.9.27-linux-x64-musl.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 9058822,
+        "download_count": 1,
+        "created_at": "2024-08-26T18:47:09Z",
+        "updated_at": "2024-08-26T18:47:11Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-linux-x64-musl.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188428207",
+        "id": 188428207,
+        "node_id": "RA_kwDOEP53Es4LOy-v",
+        "name": "skia-canvas-v0.9.27-win32-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7324310,
+        "download_count": 3,
+        "created_at": "2024-08-26T18:47:11Z",
+        "updated_at": "2024-08-26T18:47:13Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-win32-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.27",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.27",
+    "body": "> ## Deprecation Warning\r\n> This version can no longer be installed via `npm` due to the unsustainable expense of hosting the library on S3. You *can* still install it directly from this GitHub release via the commands below. Find the section for your OS and machine type and copy/paste the corresponding `npm install …` command into your terminal.\r\n>\r\n> <details><summary><b>Installation commands</b></summary>\r\n>\r\n> #### Mac (Apple Silicon)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-darwin-arm64.tar.gz\r\n> ```\r\n>\r\n> #### Mac (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-darwin-x64.tar.gz\r\n> ```\r\n>\r\n> #### Windows (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-win32-x64.tar.gz\r\n> ```\r\n> #### Linux (Intel/AMD; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-linux-x64-glibc.tar.gz\r\n> ```\r\n>\r\n> #### Linux (Intel/AMD; musl C library)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-linux-x64-musl.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-64; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-linux-arm64-glibc.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-32; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.27/skia-canvas-v0.9.27-linux-arm-glibc.tar.gz\r\n> ```\r\n>\r\n></details>\r\n\r\n## New Features\r\n- Added pre-compiled binaries for Alpine Linux using the [musl](https://musl.libc.org) C library\r\n"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/51305877",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/51305877/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/51305877/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.26",
+    "id": 51305877,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "RE_kwDOEP53Es4DDt2V",
+    "tag_name": "v0.9.26",
+    "target_commitish": "master",
+    "name": "v0.9.26",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2021-10-13T18:05:24Z",
+    "published_at": "2021-10-18T18:33:37Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188430093",
+        "id": 188430093,
+        "node_id": "RA_kwDOEP53Es4LOzcN",
+        "name": "skia-canvas-v0.9.26-darwin-arm64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7966829,
+        "download_count": 3,
+        "created_at": "2024-08-26T19:00:20Z",
+        "updated_at": "2024-08-26T19:00:23Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.26/skia-canvas-v0.9.26-darwin-arm64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188430107",
+        "id": 188430107,
+        "node_id": "RA_kwDOEP53Es4LOzcb",
+        "name": "skia-canvas-v0.9.26-darwin-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8224862,
+        "download_count": 1,
+        "created_at": "2024-08-26T19:00:23Z",
+        "updated_at": "2024-08-26T19:00:25Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.26/skia-canvas-v0.9.26-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188430985",
+        "id": 188430985,
+        "node_id": "RA_kwDOEP53Es4LOzqJ",
+        "name": "skia-canvas-v0.9.26-linux-arm.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8840223,
+        "download_count": 1,
+        "created_at": "2024-08-26T19:02:40Z",
+        "updated_at": "2024-08-26T19:02:44Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.26/skia-canvas-v0.9.26-linux-arm.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188430118",
+        "id": 188430118,
+        "node_id": "RA_kwDOEP53Es4LOzcm",
+        "name": "skia-canvas-v0.9.26-linux-arm64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 8912035,
+        "download_count": 2,
+        "created_at": "2024-08-26T19:00:25Z",
+        "updated_at": "2024-08-26T19:00:27Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.26/skia-canvas-v0.9.26-linux-arm64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188430132",
+        "id": 188430132,
+        "node_id": "RA_kwDOEP53Es4LOzc0",
+        "name": "skia-canvas-v0.9.26-linux-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 9596403,
+        "download_count": 1,
+        "created_at": "2024-08-26T19:00:27Z",
+        "updated_at": "2024-08-26T19:00:30Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.26/skia-canvas-v0.9.26-linux-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188430153",
+        "id": 188430153,
+        "node_id": "RA_kwDOEP53Es4LOzdJ",
+        "name": "skia-canvas-v0.9.26-win32-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7915229,
+        "download_count": 1,
+        "created_at": "2024-08-26T19:00:30Z",
+        "updated_at": "2024-08-26T19:00:32Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.26/skia-canvas-v0.9.26-win32-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.26",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.26",
+    "body": "> ## Deprecation Warning\r\n> This version can no longer be installed via `npm` due to the unsustainable expense of hosting the library on S3. You *can* still install it directly from this GitHub release via the commands below. Find the section for your OS and machine type and copy/paste the corresponding `npm install …` command into your terminal.\r\n>\r\n> <details><summary><b>Installation commands</b></summary>\r\n>\r\n> #### Mac (Apple Silicon)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.26/skia-canvas-v0.9.26-darwin-arm64.tar.gz\r\n> ```\r\n>\r\n> #### Mac (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.26/skia-canvas-v0.9.26-darwin-x64.tar.gz\r\n> ```\r\n>\r\n> #### Windows (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.26/skia-canvas-v0.9.26-win32-x64.tar.gz\r\n> ```\r\n> #### Linux (Intel/AMD; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.26/skia-canvas-v0.9.26-linux-x64.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-64; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.26/skia-canvas-v0.9.26-linux-arm64.tar.gz\r\n> ```\r\n>\r\n> #### Linux (ARM-32; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.26/skia-canvas-v0.9.26-linux-arm.tar.gz\r\n> ```\r\n>\r\n></details>\r\n\r\n## New Features\r\n- Added pre-compiled binaries for 32-bit and 64-bit ARM on Linux (a.k.a. Raspberry Pi)\r\n\r\n## Bugfixes\r\n- Windows text rendering has been restored after failing due to changes involving the `icudtl.dat` file\r\n- `FontLibrary.use` now reports an error if the specified font file doesn't exist \r\n- Fixed a crash that could result from calling `measureText` with various unicode escapes\r\n\r\n## Misc. Improvements\r\n- Upgraded Skia to milestone 94\r\n- Now embedding a more recent version of the FreeType library on Linux with support for more font formats\r\n"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/48246606",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/48246606/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/48246606/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.25",
+    "id": 48246606,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "MDc6UmVsZWFzZTQ4MjQ2NjA2",
+    "tag_name": "v0.9.25",
+    "target_commitish": "master",
+    "name": "v0.9.25",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2021-08-22T20:05:36Z",
+    "published_at": "2021-08-22T20:23:44Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188431420",
+        "id": 188431420,
+        "node_id": "RA_kwDOEP53Es4LOzw8",
+        "name": "skia-canvas-v0.9.25-darwin-arm64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 12349853,
+        "download_count": 2,
+        "created_at": "2024-08-26T19:04:46Z",
+        "updated_at": "2024-08-26T19:04:51Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.25/skia-canvas-v0.9.25-darwin-arm64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188431428",
+        "id": 188431428,
+        "node_id": "RA_kwDOEP53Es4LOzxE",
+        "name": "skia-canvas-v0.9.25-darwin-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 12580083,
+        "download_count": 2,
+        "created_at": "2024-08-26T19:04:51Z",
+        "updated_at": "2024-08-26T19:04:54Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.25/skia-canvas-v0.9.25-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188431441",
+        "id": 188431441,
+        "node_id": "RA_kwDOEP53Es4LOzxR",
+        "name": "skia-canvas-v0.9.25-linux-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 13611621,
+        "download_count": 22,
+        "created_at": "2024-08-26T19:04:54Z",
+        "updated_at": "2024-08-26T19:04:58Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.25/skia-canvas-v0.9.25-linux-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188431445",
+        "id": 188431445,
+        "node_id": "RA_kwDOEP53Es4LOzxV",
+        "name": "skia-canvas-v0.9.25-win32-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 7787572,
+        "download_count": 30,
+        "created_at": "2024-08-26T19:04:58Z",
+        "updated_at": "2024-08-26T19:05:00Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.25/skia-canvas-v0.9.25-win32-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.25",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.25",
+    "body": "> ## Deprecation Warning\r\n> This version can no longer be installed via `npm` due to the unsustainable expense of hosting the library on S3. You *can* still install it directly from this GitHub release via the commands below. Find the section for your OS and machine type and copy/paste the corresponding `npm install …` command into your terminal.\r\n>\r\n> <details><summary><b>Installation commands</b></summary>\r\n>\r\n> #### Mac (Apple Silicon)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.25/skia-canvas-v0.9.25-darwin-arm64.tar.gz\r\n> ```\r\n>\r\n> #### Mac (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.25/skia-canvas-v0.9.25-darwin-x64.tar.gz\r\n> ```\r\n>\r\n> #### Windows (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.25/skia-canvas-v0.9.25-win32-x64.tar.gz\r\n> ```\r\n> #### Linux (Intel/AMD; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.25/skia-canvas-v0.9.25-linux-x64.tar.gz\r\n> ```\r\n>\r\n></details>\r\n\r\n## Bugfixes\r\n- Improved image scaling when a larger image is being shrunk down to a smaller size via [`drawImage()`](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage)\r\n- modified [`imageSmoothingQuality`](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality) settings to provide a more meaningful range across `low`, `medium`, and `high`\r\n- [`measureText()`](https://github.com/samizdatco/skia-canvas#measuretextstr-width) now returns correct metrics regardless of current `textAlign` setting\r\n- Rolled back `icudtl.dat` changes on Windows (which suppressed the misleading warning message but required running as Administrator)\r\n\r\n## Misc. Improvements\r\n- Now using [Neon](https://github.com/neon-bindings/neon) v0.9 (with enhanced async event scheduling)"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/48071965",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/48071965/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/48071965/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.24",
+    "id": 48071965,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "MDc6UmVsZWFzZTQ4MDcxOTY1",
+    "tag_name": "v0.9.24",
+    "target_commitish": "master",
+    "name": "v0.9.24",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2021-08-18T20:38:24Z",
+    "published_at": "2021-08-18T20:58:09Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188431671",
+        "id": 188431671,
+        "node_id": "RA_kwDOEP53Es4LOz03",
+        "name": "skia-canvas-v0.9.24-darwin-arm64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 12344528,
+        "download_count": 1,
+        "created_at": "2024-08-26T19:05:58Z",
+        "updated_at": "2024-08-26T19:06:02Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.24/skia-canvas-v0.9.24-darwin-arm64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188431677",
+        "id": 188431677,
+        "node_id": "RA_kwDOEP53Es4LOz09",
+        "name": "skia-canvas-v0.9.24-darwin-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 12574874,
+        "download_count": 1,
+        "created_at": "2024-08-26T19:06:02Z",
+        "updated_at": "2024-08-26T19:06:05Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.24/skia-canvas-v0.9.24-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188431686",
+        "id": 188431686,
+        "node_id": "RA_kwDOEP53Es4LOz1G",
+        "name": "skia-canvas-v0.9.24-linux-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 13608563,
+        "download_count": 1,
+        "created_at": "2024-08-26T19:06:05Z",
+        "updated_at": "2024-08-26T19:06:09Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.24/skia-canvas-v0.9.24-linux-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/188431697",
+        "id": 188431697,
+        "node_id": "RA_kwDOEP53Es4LOz1R",
+        "name": "skia-canvas-v0.9.24-win32-x64.tar.gz",
+        "label": null,
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/x-gzip",
+        "state": "uploaded",
+        "size": 12308319,
+        "download_count": 2,
+        "created_at": "2024-08-26T19:06:09Z",
+        "updated_at": "2024-08-26T19:06:12Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.24/skia-canvas-v0.9.24-win32-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.24",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.24",
+    "body": "> ## Deprecation Warning\r\n> This version can no longer be installed via `npm` due to the unsustainable expense of hosting the library on S3. You *can* still install it directly from this GitHub release via the commands below. Find the section for your OS and machine type and copy/paste the corresponding `npm install …` command into your terminal.\r\n>\r\n> <details><summary><b>Installation commands</b></summary>\r\n>\r\n> #### Mac (Apple Silicon)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.24/skia-canvas-v0.9.24-darwin-arm64.tar.gz\r\n> ```\r\n>\r\n> #### Mac (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.24/skia-canvas-v0.9.24-darwin-x64.tar.gz\r\n> ```\r\n>\r\n> #### Windows (Intel)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.24/skia-canvas-v0.9.24-win32-x64.tar.gz\r\n> ```\r\n> #### Linux (Intel/AMD; glibc)\r\n> ```console\r\n> npm install https://github.com/samizdatco/skia-canvas/releases/download/v0.9.24/skia-canvas-v0.9.24-linux-x64.tar.gz\r\n> ```\r\n>\r\n></details>\r\n\r\n## New Features\r\n- **Path2D** objects now have a read/write [`d`](https://github.com/samizdatco/skia-canvas/#d) property with an [SVG representation](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#path_commands) of the path’s contours and an [`unwind()`](https://github.com/samizdatco/skia-canvas/#unwind) method for converting from even-odd to non-zero winding rules\r\n- The [`createTexture()`](https://github.com/samizdatco/skia-canvas#createtexturespacing-path-line-color-angle-offset0) context method returns **CanvasTexture** objects which can be assigned to `fillStyle` or `strokeStyle`\r\n- Textures draw either a parallel-lines pattern or one derived from the provided **Path2D** object and positioning parameters\r\n- The marker used when `setLineDash` is active can now be customized by assigning a **Path2D** to the context’s [`lineDashMarker`](https://github.com/samizdatco/skia-canvas#linedashmarker) property (default dashing can be restored by assigning `null`)\r\n- The marker’s orientation & shape relative to the path being stroked can be controlled by the [`lineDashFit`](https://github.com/samizdatco/skia-canvas#linedashfit) property which defaults to `\"turn\"` but can be set to `\"move\"` (which preserves orientation) or `\"follow\"` (which distorts the marker’s shape to match the contour)\r\n\r\n## Bugfixes\r\n\r\n- Removed use of the `??` operator which is unavailable prior to Node 14\r\n- Prevented a spurious warning on windows incorrectly claiming that the `icudtl.dat` file could not be found\r\n\r\n## Misc. Improvements\r\n\r\n- The **Path2D** [`simplify()`](https://github.com/samizdatco/skia-canvas/#simplifyrulenonzero) method now takes an optional fill-rule argument\r\n- Added support for versions of macOS starting with 10.13 (High Sierra)"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/46069615",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/46069615/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/46069615/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.23",
+    "id": 46069615,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "MDc6UmVsZWFzZTQ2MDY5NjE1",
+    "tag_name": "v0.9.23",
+    "target_commitish": "master",
+    "name": "v0.9.23",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2021-07-12T16:41:10Z",
+    "published_at": "2021-07-12T17:50:53Z",
+    "assets": [],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.23",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.23",
+    "body": "## New Features\r\n\r\n- [Conic béziers][conic_bezier] can now be drawn to the context or a Path2D with the [`conicCurveTo()`][conic_curveto] method\r\n- Text can be converted to a Path2D using the context’s new [`outlineText()`][outline_text] method\r\n- Path2D objects can now report back on their internal geometry with:\r\n    - the [`edges`][edges] property which contains an array of line-drawing commands describing the path’s individual contours\r\n    - the [`contains()`][contains] method which tests whether a given point is on/within the path\r\n    - the [`points()`][points] method which returns an array of `[x, y]` pairs at the requested spacing along the curve’s periphery\r\n- A modified copy of a source Path2D can now be created using:\r\n    - [`offset()`][offset] or [`transform()`][transform] to shift position or apply a DOMMatrix respectively\r\n    - [`jitter()`][jitter] to break the path into smaller sections and apply random noise to the segments’ positions\r\n    - [`round()`][round] to round off every sharp corner in a path to a particular radius\r\n    - [`trim()`][trim] to select a percentage-based subsection of the path\r\n- Two similar paths can be ‘tweened’ into a proportional combination of their coordinates using the [`interpolate()`][interpolate] method\r\n\r\n## Bugfixes\r\n\r\n- Passing a Path2D argument to the `fill()` or `stroke()` method no longer disturbs the context’s ‘current’ path (if one has been created using `beginPath()`)\r\n- The `filter` property will now accept percentage values greater than 999%\r\n\r\n## Misc. Improvements\r\n\r\n- The `newPage()` and `saveAs()` methods now work in the browser, including the ability to save image sequences to a zip archive. The browser’s canvas is still doing all the drawing however, so file export formats will be limited to PNG and JPEG and none of the other Skia-specific extensions will be available.\r\n- The file-export methods now accept a [`matte`][matte] value in their options object which can be used to set the background color for any portions of the canvas that were left semi-transparent \r\n- Canvas dimensions are no longer rounded-off to integer values (at least until a bitmap needs to be generated for export)\r\n- Linux builds will now run on some older systems going back to glibc 2.24\r\n\r\n[conic_bezier]: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/graphics/skiasharp/curves/beziers#the-conic-bézier-curve\r\n[conic_curveto]: https://github.com/samizdatco/skia-canvas#coniccurvetocpx-cpy-x-y-weight\r\n[outline_text]: https://github.com/samizdatco/skia-canvas#outlinetextstr\r\n[matte]: https://github.com/samizdatco/skia-canvas#matte\r\n\r\n[edges]: https://github.com/samizdatco/skia-canvas#edges\r\n[contains]: https://github.com/samizdatco/skia-canvas#containsx-y\r\n[points]: https://github.com/samizdatco/skia-canvas#pointsstep1\r\n[offset]: https://github.com/samizdatco/skia-canvas#offsetdx-dy\r\n[transform]: https://github.com/samizdatco/skia-canvas#transformmatrix-or-transforma-b-c-d-e-f\r\n\r\n[interpolate]: https://github.com/samizdatco/skia-canvas#interpolateotherpath-weight\r\n[jitter]: https://github.com/samizdatco/skia-canvas#jittersegmentlength-amount-seed0\r\n[round]: https://github.com/samizdatco/skia-canvas#roundradius\r\n[simplify]: https://github.com/samizdatco/skia-canvas#simplify\r\n[trim]: https://github.com/samizdatco/skia-canvas#trimstart-end-inverted"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/44382597",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/44382597/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/44382597/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.22",
+    "id": 44382597,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "MDc6UmVsZWFzZTQ0MzgyNTk3",
+    "tag_name": "v0.9.22",
+    "target_commitish": "master",
+    "name": "v0.9.22",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2021-06-10T00:51:31Z",
+    "published_at": "2021-06-10T02:10:09Z",
+    "assets": [],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.22",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.22",
+    "body": "## New Features\r\n\r\n- Rasterization and file i/o are now handled asynchronously in a background thread. See the discussion of Canvas’s new [`async`](https://github.com/samizdatco/skia-canvas#async) property for details.\r\n- Output files can now be generated at pixel-ratios > 1 for High-DPI screens. `SaveAs` and the other canvas output functions all accept an optional [`density`](https://github.com/samizdatco/skia-canvas#density) argument which is an integer ≥1 and will upscale the image accordingly. The density can also be passed using the `filename` argument by ending the name with an ‘@’ suffix like `some-image@2x.png`. \r\n- SVG exports can optionally convert text to paths by setting the [`outline`](https://github.com/samizdatco/skia-canvas#outline) argument to `true`.\r\n\r\n## Breaking Changes\r\n\r\n-   The canvas functions dealing with rasterization (`toBuffer`, `toDataURL`, `png`, `jpg`, `pdf`, and `svg`) and file i/o (`saveAs`) are now asynchronous and return `Promise` objects. The old, synchronous behavior is still available on a canvas-by-canvas basis by setting its `async` property to `false`.\r\n- The optional `quality` argument accepted by the output methods is now a float in the range 0–1 rather than an integer from 0–100. This is consistent with the [encoderOptions](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL) arg in the spec. Quality now defaults to 0.92 (again, as per the spec) rather than lossless.\r\n\r\n## Bugfixes\r\n\r\n- `measureText` was reporting zero when asked to measure a string that was entirely made of whitespace. This is still the case for ‘blank‘ lines when `textWrap` is set to `true` but in the default, single-line mode the metrics will now report the width of the whitespace.\r\n-  Changed the way text rendering was staged so that SVG exports didn’t *entirely omit(!)* text from their output. As a result, `Context2D`s now use an external `Typesetter` struct to manage layout and rendering.\r\n"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/43413695",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/43413695/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/43413695/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.21",
+    "id": 43413695,
+    "author": {
+      "login": "github-actions[bot]",
+      "id": 41898282,
+      "node_id": "MDM6Qm90NDE4OTgyODI=",
+      "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/github-actions%5Bbot%5D",
+      "html_url": "https://github.com/apps/github-actions",
+      "followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
+      "following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
+      "gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
+      "organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
+      "repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
+      "events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
+      "type": "Bot",
+      "site_admin": false
+    },
+    "node_id": "MDc6UmVsZWFzZTQzNDEzNjk1",
+    "tag_name": "v0.9.21",
+    "target_commitish": "master",
+    "name": "v0.9.21",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2021-05-22T17:34:45Z",
+    "published_at": "2021-05-22T17:56:25Z",
+    "assets": [],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.21",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.21",
+    "body": "## New Features\r\n  - Now runs on Windows and Apple Silicon Macs.\r\n  - Precompiled binaries support Node 10, 12, 14+.\r\n  - Image objects can be initialized from PNG, JPEG, GIF, BMP, or ICO data.\r\n  - Path2D objects can now be combined using [boolean operators](https://github.com/samizdatco/skia-canvas/#complement-difference-intersect-union-and-xor) and can measure their own [bounding boxes](https://github.com/samizdatco/skia-canvas/#bounds).\r\n  - Context objects now support [`createConicGradient()`](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/createConicGradient).\r\n  - Image objects now return a promise from their [`decode()`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/decode) method allowing for async loading without the [`loadImage`](https://github.com/samizdatco/skia-canvas/#loadimage) helper.\r\n\r\n## Bugfixes\r\n  - Calling `drawImage` with a `Canvas` object as the argument now uses a Skia `Pict` rather than a  `Drawable` as the interchange format, meaning it can actually respect the canvas's current `globalAlpha` and `globalCompositeOperation` state (fixed #6).\r\n  - Improved some spurious error messages when trying to generate a graphics file from a canvas whose width and/or height was set to zero (fixed #5).\r\n  - `CanvasPattern`s now respect the `imageSmoothingEnabled` setting\r\n  - The `counterclockwise` arg to `ellipse` and `arc` is now correctly treated as optional.\r\n\r\n## Misc. Improvements\r\n  - Made the `console.log` representations of the canvas-related objects friendlier.\r\n  - Added new test suites for `Path2D`, `Image`, and `Canvas`’s format support.\r\n  - Created [workflows](https://github.com/samizdatco/skia-canvas/tree/master/.github/workflows) to automate precompiled binary builds, testing, and npm package updating.\r\n"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/40586866",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/40586866/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/40586866/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.20",
+    "id": 40586866,
+    "author": {
+      "login": "samizdatco",
+      "id": 469523,
+      "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+      "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/samizdatco",
+      "html_url": "https://github.com/samizdatco",
+      "followers_url": "https://api.github.com/users/samizdatco/followers",
+      "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+      "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+      "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+      "repos_url": "https://api.github.com/users/samizdatco/repos",
+      "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+      "type": "User",
+      "site_admin": false
+    },
+    "node_id": "MDc6UmVsZWFzZTQwNTg2ODY2",
+    "tag_name": "v0.9.20",
+    "target_commitish": "master",
+    "name": "v0.9.20",
+    "draft": false,
+    "prerelease": false,
+    "created_at": "2021-03-27T21:48:44Z",
+    "published_at": "2021-03-27T23:32:39Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/34088605",
+        "id": 34088605,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDM0MDg4NjA1",
+        "name": "node-v83-darwin-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 7287768,
+        "download_count": 20,
+        "created_at": "2021-03-27T21:54:22Z",
+        "updated_at": "2021-03-27T21:54:22Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.20/node-v83-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/34088865",
+        "id": 34088865,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDM0MDg4ODY1",
+        "name": "node-v83-linux-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 8299648,
+        "download_count": 24,
+        "created_at": "2021-03-27T22:03:07Z",
+        "updated_at": "2021-03-27T22:03:07Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.20/node-v83-linux-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/34088602",
+        "id": 34088602,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDM0MDg4NjAy",
+        "name": "node-v88-darwin-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 7287733,
+        "download_count": 29,
+        "created_at": "2021-03-27T21:54:12Z",
+        "updated_at": "2021-03-27T21:54:13Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.20/node-v88-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/34088931",
+        "id": 34088931,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDM0MDg4OTMx",
+        "name": "node-v88-linux-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 8299681,
+        "download_count": 21,
+        "created_at": "2021-03-27T22:05:00Z",
+        "updated_at": "2021-03-27T22:05:00Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.20/node-v88-linux-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.20",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.20",
+    "body": "skia-canvas 0.9.20"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/30397271",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/30397271/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/30397271/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.19",
+    "id": 30397271,
+    "author": {
+      "login": "samizdatco",
+      "id": 469523,
+      "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+      "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/samizdatco",
+      "html_url": "https://github.com/samizdatco",
+      "followers_url": "https://api.github.com/users/samizdatco/followers",
+      "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+      "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+      "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+      "repos_url": "https://api.github.com/users/samizdatco/repos",
+      "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+      "type": "User",
+      "site_admin": false
+    },
+    "node_id": "MDc6UmVsZWFzZTMwMzk3Mjcx",
+    "tag_name": "v0.9.19",
+    "target_commitish": "master",
+    "name": "v0.9.19",
+    "draft": false,
+    "prerelease": true,
+    "created_at": "2020-08-30T16:23:35Z",
+    "published_at": "2020-08-30T17:03:01Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/24509569",
+        "id": 24509569,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDI0NTA5NTY5",
+        "name": "node-v72-darwin-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 7240740,
+        "download_count": 152,
+        "created_at": "2020-08-30T16:30:52Z",
+        "updated_at": "2020-08-30T16:30:52Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.19/node-v72-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/24509824",
+        "id": 24509824,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDI0NTA5ODI0",
+        "name": "node-v72-linux-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 8189990,
+        "download_count": 447,
+        "created_at": "2020-08-30T16:40:10Z",
+        "updated_at": "2020-08-30T16:40:10Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.19/node-v72-linux-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/24509549",
+        "id": 24509549,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDI0NTA5NTQ5",
+        "name": "node-v83-darwin-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 7240759,
+        "download_count": 154,
+        "created_at": "2020-08-30T16:30:33Z",
+        "updated_at": "2020-08-30T16:30:33Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.19/node-v83-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/24509795",
+        "id": 24509795,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDI0NTA5Nzk1",
+        "name": "node-v83-linux-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 8190048,
+        "download_count": 1052,
+        "created_at": "2020-08-30T16:39:13Z",
+        "updated_at": "2020-08-30T16:39:14Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.19/node-v83-linux-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.19",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.19",
+    "body": "skia-canvas 0.9.19"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/30239050",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/30239050/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/30239050/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.18",
+    "id": 30239050,
+    "author": {
+      "login": "samizdatco",
+      "id": 469523,
+      "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+      "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/samizdatco",
+      "html_url": "https://github.com/samizdatco",
+      "followers_url": "https://api.github.com/users/samizdatco/followers",
+      "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+      "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+      "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+      "repos_url": "https://api.github.com/users/samizdatco/repos",
+      "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+      "type": "User",
+      "site_admin": false
+    },
+    "node_id": "MDc6UmVsZWFzZTMwMjM5MDUw",
+    "tag_name": "v0.9.18",
+    "target_commitish": "master",
+    "name": "v0.9.18",
+    "draft": false,
+    "prerelease": true,
+    "created_at": "2020-08-27T19:36:16Z",
+    "published_at": "2020-08-27T20:16:19Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/24364206",
+        "id": 24364206,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDI0MzY0MjA2",
+        "name": "node-v72-darwin-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 7240315,
+        "download_count": 14,
+        "created_at": "2020-08-27T19:44:06Z",
+        "updated_at": "2020-08-27T19:44:06Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.18/node-v72-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/24364492",
+        "id": 24364492,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDI0MzY0NDky",
+        "name": "node-v72-linux-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 8189801,
+        "download_count": 20,
+        "created_at": "2020-08-27T19:52:55Z",
+        "updated_at": "2020-08-27T19:52:56Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.18/node-v72-linux-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/24364195",
+        "id": 24364195,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDI0MzY0MTk1",
+        "name": "node-v83-darwin-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 7240222,
+        "download_count": 14,
+        "created_at": "2020-08-27T19:43:54Z",
+        "updated_at": "2020-08-27T19:43:54Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.18/node-v83-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/24364532",
+        "id": 24364532,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDI0MzY0NTMy",
+        "name": "node-v83-linux-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 8189726,
+        "download_count": 15,
+        "created_at": "2020-08-27T19:53:33Z",
+        "updated_at": "2020-08-27T19:53:34Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.18/node-v83-linux-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.18",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.18",
+    "body": "skia-canvas 0.9.18"
+  },
+  {
+    "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/30237613",
+    "assets_url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/30237613/assets",
+    "upload_url": "https://uploads.github.com/repos/samizdatco/skia-canvas/releases/30237613/assets{?name,label}",
+    "html_url": "https://github.com/samizdatco/skia-canvas/releases/tag/v0.9.17",
+    "id": 30237613,
+    "author": {
+      "login": "samizdatco",
+      "id": 469523,
+      "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+      "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/samizdatco",
+      "html_url": "https://github.com/samizdatco",
+      "followers_url": "https://api.github.com/users/samizdatco/followers",
+      "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+      "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+      "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+      "repos_url": "https://api.github.com/users/samizdatco/repos",
+      "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+      "type": "User",
+      "site_admin": false
+    },
+    "node_id": "MDc6UmVsZWFzZTMwMjM3NjEz",
+    "tag_name": "v0.9.17",
+    "target_commitish": "master",
+    "name": "v0.9.17",
+    "draft": false,
+    "prerelease": true,
+    "created_at": "2020-08-27T19:03:06Z",
+    "published_at": "2020-08-27T19:22:16Z",
+    "assets": [
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/24363223",
+        "id": 24363223,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDI0MzYzMjIz",
+        "name": "node-v72-darwin-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 7240294,
+        "download_count": 12,
+        "created_at": "2020-08-27T19:10:41Z",
+        "updated_at": "2020-08-27T19:10:41Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.17/node-v72-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/24363485",
+        "id": 24363485,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDI0MzYzNDg1",
+        "name": "node-v72-linux-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 8189795,
+        "download_count": 13,
+        "created_at": "2020-08-27T19:19:46Z",
+        "updated_at": "2020-08-27T19:19:47Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.17/node-v72-linux-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/24363230",
+        "id": 24363230,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDI0MzYzMjMw",
+        "name": "node-v83-darwin-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 7240247,
+        "download_count": 14,
+        "created_at": "2020-08-27T19:10:49Z",
+        "updated_at": "2020-08-27T19:10:49Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.17/node-v83-darwin-x64.tar.gz"
+      },
+      {
+        "url": "https://api.github.com/repos/samizdatco/skia-canvas/releases/assets/24363481",
+        "id": 24363481,
+        "node_id": "MDEyOlJlbGVhc2VBc3NldDI0MzYzNDgx",
+        "name": "node-v83-linux-x64.tar.gz",
+        "label": "",
+        "uploader": {
+          "login": "samizdatco",
+          "id": 469523,
+          "node_id": "MDQ6VXNlcjQ2OTUyMw==",
+          "avatar_url": "https://avatars.githubusercontent.com/u/469523?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/samizdatco",
+          "html_url": "https://github.com/samizdatco",
+          "followers_url": "https://api.github.com/users/samizdatco/followers",
+          "following_url": "https://api.github.com/users/samizdatco/following{/other_user}",
+          "gists_url": "https://api.github.com/users/samizdatco/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/samizdatco/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/samizdatco/subscriptions",
+          "organizations_url": "https://api.github.com/users/samizdatco/orgs",
+          "repos_url": "https://api.github.com/users/samizdatco/repos",
+          "events_url": "https://api.github.com/users/samizdatco/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/samizdatco/received_events",
+          "type": "User",
+          "site_admin": false
+        },
+        "content_type": "application/gzip",
+        "state": "uploaded",
+        "size": 8189736,
+        "download_count": 12,
+        "created_at": "2020-08-27T19:19:39Z",
+        "updated_at": "2020-08-27T19:19:57Z",
+        "browser_download_url": "https://github.com/samizdatco/skia-canvas/releases/download/v0.9.17/node-v83-linux-x64.tar.gz"
+      }
+    ],
+    "tarball_url": "https://api.github.com/repos/samizdatco/skia-canvas/tarball/v0.9.17",
+    "zipball_url": "https://api.github.com/repos/samizdatco/skia-canvas/zipball/v0.9.17",
+    "body": "skia-canvas 0.9.17"
+  }
+]